From 0d5741c8d79bb854051128ff32559824a462f955 Mon Sep 17 00:00:00 2001 From: yxh Date: Fri, 20 Jan 2023 10:58:15 +0800 Subject: [PATCH] gfast-v3.2.1 --- .env | 8 + .env.development | 5 + .env.production | 8 + .eslintignore | 18 + .eslintrc.js | 63 + .gitignore | 23 + .prettierrc.js | 39 + CHANGELOG.md | 367 + LICENSE | 21 + README.md | 145 + index.html | 22 + package-lock.json | 2472 ++ package.json | 88 + plugins.d.ts | 4 + public/favicon.ico | Bin 0 -> 2462 bytes public/js/ueditor/dialogs/anchor/anchor.html | 40 + .../ueditor/dialogs/attachment/attachment.css | 681 + .../dialogs/attachment/attachment.html | 60 + .../ueditor/dialogs/attachment/attachment.js | 760 + .../attachment/fileTypeImages/icon_chm.gif | Bin 0 -> 923 bytes .../fileTypeImages/icon_default.png | Bin 0 -> 841 bytes .../attachment/fileTypeImages/icon_doc.gif | Bin 0 -> 1012 bytes .../attachment/fileTypeImages/icon_exe.gif | Bin 0 -> 949 bytes .../attachment/fileTypeImages/icon_jpg.gif | Bin 0 -> 950 bytes .../attachment/fileTypeImages/icon_mp3.gif | Bin 0 -> 986 bytes .../attachment/fileTypeImages/icon_mv.gif | Bin 0 -> 1001 bytes .../attachment/fileTypeImages/icon_pdf.gif | Bin 0 -> 996 bytes .../attachment/fileTypeImages/icon_ppt.gif | Bin 0 -> 1001 bytes .../attachment/fileTypeImages/icon_psd.gif | Bin 0 -> 1009 bytes .../attachment/fileTypeImages/icon_rar.gif | Bin 0 -> 1007 bytes .../attachment/fileTypeImages/icon_txt.gif | Bin 0 -> 970 bytes .../attachment/fileTypeImages/icon_xls.gif | Bin 0 -> 1005 bytes .../dialogs/attachment/images/alignicon.gif | Bin 0 -> 1051 bytes .../dialogs/attachment/images/alignicon.png | Bin 0 -> 3714 bytes .../ueditor/dialogs/attachment/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/attachment/images/file-icons.gif | Bin 0 -> 20097 bytes .../dialogs/attachment/images/file-icons.png | Bin 0 -> 44070 bytes .../dialogs/attachment/images/icons.gif | Bin 0 -> 453 bytes .../dialogs/attachment/images/icons.png | Bin 0 -> 2678 bytes .../dialogs/attachment/images/image.png | Bin 0 -> 1672 bytes .../dialogs/attachment/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/attachment/images/success.gif | Bin 0 -> 445 bytes .../dialogs/attachment/images/success.png | Bin 0 -> 1621 bytes .../ueditor/dialogs/background/background.css | 94 + .../dialogs/background/background.html | 52 + .../ueditor/dialogs/background/background.js | 368 + .../ueditor/dialogs/background/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/background/images/success.png | Bin 0 -> 1621 bytes public/js/ueditor/dialogs/emotion/emotion.css | 43 + .../js/ueditor/dialogs/emotion/emotion.html | 54 + public/js/ueditor/dialogs/emotion/emotion.js | 186 + .../js/ueditor/dialogs/emotion/images/0.gif | Bin 0 -> 43 bytes .../ueditor/dialogs/emotion/images/bface.gif | Bin 0 -> 27167 bytes .../ueditor/dialogs/emotion/images/cface.gif | Bin 0 -> 8603 bytes .../ueditor/dialogs/emotion/images/fface.gif | Bin 0 -> 18479 bytes .../dialogs/emotion/images/jxface2.gif | Bin 0 -> 40706 bytes .../emotion/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../ueditor/dialogs/emotion/images/tface.gif | Bin 0 -> 19805 bytes .../ueditor/dialogs/emotion/images/wface.gif | Bin 0 -> 49850 bytes .../ueditor/dialogs/emotion/images/yface.gif | Bin 0 -> 28409 bytes .../js/ueditor/dialogs/formula/formula.html | 86 + public/js/ueditor/dialogs/formula/formula.js | 71 + public/js/ueditor/dialogs/help/help.css | 7 + public/js/ueditor/dialogs/help/help.html | 82 + public/js/ueditor/dialogs/help/help.js | 56 + public/js/ueditor/dialogs/image/image.css | 718 + public/js/ueditor/dialogs/image/image.html | 119 + public/js/ueditor/dialogs/image/image.js | 1021 + .../dialogs/image/images/alignicon.jpg | Bin 0 -> 16101 bytes public/js/ueditor/dialogs/image/images/bg.png | Bin 0 -> 2810 bytes .../js/ueditor/dialogs/image/images/icons.gif | Bin 0 -> 453 bytes .../js/ueditor/dialogs/image/images/icons.png | Bin 0 -> 2678 bytes .../js/ueditor/dialogs/image/images/image.png | Bin 0 -> 1672 bytes .../ueditor/dialogs/image/images/progress.png | Bin 0 -> 1269 bytes .../ueditor/dialogs/image/images/success.gif | Bin 0 -> 445 bytes .../ueditor/dialogs/image/images/success.png | Bin 0 -> 1621 bytes .../dialogs/insertframe/insertframe.html | 99 + public/js/ueditor/dialogs/internal.js | 81 + public/js/ueditor/dialogs/link/link.html | 134 + .../js/ueditor/dialogs/preview/preview.html | 40 + .../ueditor/dialogs/scrawl/images/addimg.png | Bin 0 -> 628 bytes .../ueditor/dialogs/scrawl/images/brush.png | Bin 0 -> 608 bytes .../ueditor/dialogs/scrawl/images/delimg.png | Bin 0 -> 516 bytes .../ueditor/dialogs/scrawl/images/delimgH.png | Bin 0 -> 578 bytes .../ueditor/dialogs/scrawl/images/empty.png | Bin 0 -> 519 bytes .../ueditor/dialogs/scrawl/images/emptyH.png | Bin 0 -> 657 bytes .../ueditor/dialogs/scrawl/images/eraser.png | Bin 0 -> 43271 bytes .../js/ueditor/dialogs/scrawl/images/redo.png | Bin 0 -> 454 bytes .../ueditor/dialogs/scrawl/images/redoH.png | Bin 0 -> 536 bytes .../ueditor/dialogs/scrawl/images/scale.png | Bin 0 -> 435 bytes .../ueditor/dialogs/scrawl/images/scaleH.png | Bin 0 -> 330 bytes .../js/ueditor/dialogs/scrawl/images/size.png | Bin 0 -> 775 bytes .../js/ueditor/dialogs/scrawl/images/undo.png | Bin 0 -> 444 bytes .../ueditor/dialogs/scrawl/images/undoH.png | Bin 0 -> 511 bytes public/js/ueditor/dialogs/scrawl/scrawl.css | 72 + public/js/ueditor/dialogs/scrawl/scrawl.html | 95 + public/js/ueditor/dialogs/scrawl/scrawl.js | 670 + .../dialogs/searchreplace/searchreplace.html | 117 + .../dialogs/searchreplace/searchreplace.js | 170 + .../js/ueditor/dialogs/spechars/spechars.html | 21 + .../js/ueditor/dialogs/spechars/spechars.js | 57 + public/js/ueditor/dialogs/table/dragicon.png | Bin 0 -> 304 bytes public/js/ueditor/dialogs/table/edittable.css | 84 + .../js/ueditor/dialogs/table/edittable.html | 64 + public/js/ueditor/dialogs/table/edittable.js | 237 + public/js/ueditor/dialogs/table/edittd.html | 61 + public/js/ueditor/dialogs/table/edittip.html | 33 + public/js/ueditor/dialogs/template/config.js | 42 + .../js/ueditor/dialogs/template/images/bg.gif | Bin 0 -> 84 bytes .../ueditor/dialogs/template/images/pre0.png | Bin 0 -> 250 bytes .../ueditor/dialogs/template/images/pre1.png | Bin 0 -> 291 bytes .../ueditor/dialogs/template/images/pre2.png | Bin 0 -> 394 bytes .../ueditor/dialogs/template/images/pre3.png | Bin 0 -> 485 bytes .../ueditor/dialogs/template/images/pre4.png | Bin 0 -> 393 bytes .../js/ueditor/dialogs/template/template.css | 18 + .../js/ueditor/dialogs/template/template.html | 26 + .../js/ueditor/dialogs/template/template.js | 53 + public/js/ueditor/dialogs/video/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/video/images/center_focus.jpg | Bin 0 -> 11795 bytes .../dialogs/video/images/file-icons.gif | Bin 0 -> 20097 bytes .../dialogs/video/images/file-icons.png | Bin 0 -> 44070 bytes .../js/ueditor/dialogs/video/images/icons.gif | Bin 0 -> 453 bytes .../js/ueditor/dialogs/video/images/icons.png | Bin 0 -> 2678 bytes .../js/ueditor/dialogs/video/images/image.png | Bin 0 -> 1672 bytes .../dialogs/video/images/left_focus.jpg | Bin 0 -> 11423 bytes .../dialogs/video/images/none_focus.jpg | Bin 0 -> 11546 bytes .../ueditor/dialogs/video/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/video/images/right_focus.jpg | Bin 0 -> 11334 bytes .../ueditor/dialogs/video/images/success.gif | Bin 0 -> 445 bytes .../ueditor/dialogs/video/images/success.png | Bin 0 -> 1621 bytes public/js/ueditor/dialogs/video/video.css | 650 + public/js/ueditor/dialogs/video/video.html | 89 + public/js/ueditor/dialogs/video/video.js | 823 + .../ueditor/dialogs/wordimage/wordimage.html | 216 + .../js/ueditor/dialogs/wordimage/wordimage.js | 90 + public/js/ueditor/index.html | 130 + public/js/ueditor/lang/en/en.js | 609 + public/js/ueditor/lang/en/images/addimage.png | Bin 0 -> 3373 bytes .../lang/en/images/alldeletebtnhoverskin.png | Bin 0 -> 743 bytes .../lang/en/images/alldeletebtnupskin.png | Bin 0 -> 743 bytes .../js/ueditor/lang/en/images/background.png | Bin 0 -> 3854 bytes public/js/ueditor/lang/en/images/button.png | Bin 0 -> 4929 bytes public/js/ueditor/lang/en/images/copy.png | Bin 0 -> 1222 bytes .../ueditor/lang/en/images/deletedisable.png | Bin 0 -> 649 bytes .../ueditor/lang/en/images/deleteenable.png | Bin 0 -> 664 bytes .../ueditor/lang/en/images/listbackground.png | Bin 0 -> 3750 bytes .../js/ueditor/lang/en/images/localimage.png | Bin 0 -> 4446 bytes public/js/ueditor/lang/en/images/music.png | Bin 0 -> 91561 bytes .../lang/en/images/rotateleftdisable.png | Bin 0 -> 719 bytes .../lang/en/images/rotateleftenable.png | Bin 0 -> 952 bytes .../lang/en/images/rotaterightdisable.png | Bin 0 -> 754 bytes .../lang/en/images/rotaterightenable.png | Bin 0 -> 1007 bytes public/js/ueditor/lang/en/images/upload.png | Bin 0 -> 3941 bytes public/js/ueditor/lang/zh-cn/images/copy.png | Bin 0 -> 4319 bytes .../ueditor/lang/zh-cn/images/localimage.png | Bin 0 -> 4570 bytes public/js/ueditor/lang/zh-cn/images/music.png | Bin 0 -> 23106 bytes .../js/ueditor/lang/zh-cn/images/upload.png | Bin 0 -> 6608 bytes public/js/ueditor/lang/zh-cn/zh-cn.js | 593 + public/js/ueditor/plugins/demo/demo.js | 3 + .../js/ueditor/themes/default/css/ueditor.css | 1983 + .../js/ueditor/themes/default/dialogbase.css | 101 + .../ueditor/themes/default/font/iconfont.ttf | Bin 0 -> 25388 bytes .../ueditor/themes/default/font/iconfont.woff | Bin 0 -> 13976 bytes .../themes/default/font/iconfont.woff2 | Bin 0 -> 11756 bytes .../ueditor/themes/default/images/anchor.gif | Bin 0 -> 184 bytes .../ueditor/themes/default/images/arrow.png | Bin 0 -> 1173 bytes .../themes/default/images/arrow_down.png | Bin 0 -> 1610 bytes .../themes/default/images/arrow_up.png | Bin 0 -> 1649 bytes .../themes/default/images/button-bg.gif | Bin 0 -> 1114 bytes .../themes/default/images/cancelbutton.gif | Bin 0 -> 1227 bytes .../ueditor/themes/default/images/charts.png | Bin 0 -> 518 bytes .../themes/default/images/cursor_h.gif | Bin 0 -> 253 bytes .../themes/default/images/cursor_h.png | Bin 0 -> 175 bytes .../themes/default/images/cursor_v.gif | Bin 0 -> 370 bytes .../themes/default/images/cursor_v.png | Bin 0 -> 177 bytes .../themes/default/images/dialog-title-bg.png | Bin 0 -> 938 bytes .../themes/default/images/filescan.png | Bin 0 -> 4282 bytes .../themes/default/images/highlighted.gif | Bin 0 -> 111 bytes .../themes/default/images/icons-all.gif | Bin 0 -> 3750 bytes .../ueditor/themes/default/images/icons.gif | Bin 0 -> 20947 bytes .../ueditor/themes/default/images/icons.png | Bin 0 -> 19694 bytes .../themes/default/images/img-cracked.png | Bin 0 -> 1497 bytes .../themes/default/images/loaderror.png | Bin 0 -> 3209 bytes .../ueditor/themes/default/images/loading.gif | Bin 0 -> 734 bytes .../js/ueditor/themes/default/images/lock.gif | Bin 0 -> 1062 bytes .../default/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../themes/default/images/pagebreak.gif | Bin 0 -> 54 bytes .../ueditor/themes/default/images/scale.png | Bin 0 -> 167 bytes .../themes/default/images/sortable.png | Bin 0 -> 2851 bytes .../ueditor/themes/default/images/spacer.gif | Bin 0 -> 43 bytes .../themes/default/images/sparator_v.png | Bin 0 -> 122 bytes .../default/images/table-cell-align.png | Bin 0 -> 1847 bytes .../default/images/tangram-colorpicker.png | Bin 0 -> 17355 bytes .../themes/default/images/toolbar_bg.png | Bin 0 -> 170 bytes .../themes/default/images/unhighlighted.gif | Bin 0 -> 111 bytes .../ueditor/themes/default/images/upload.png | Bin 0 -> 6608 bytes .../themes/default/images/videologo.gif | Bin 0 -> 1604 bytes .../js/ueditor/themes/default/images/word.gif | Bin 0 -> 1019 bytes .../themes/default/images/wordpaste.png | Bin 0 -> 6467 bytes public/js/ueditor/themes/iframe.css | 56 + .../third-party/SyntaxHighlighter/shCore.js | 3655 ++ .../SyntaxHighlighter/shCoreDefault.css | 1 + .../third-party/clipboard/clipboard.js | 753 + .../third-party/codemirror/codemirror.css | 104 + .../third-party/codemirror/codemirror.js | 3581 ++ .../js/ueditor/third-party/jquery-1.10.2.js | 6 + .../third-party/webuploader/webuploader.css | 28 + .../webuploader/webuploader.custom.js | 5670 +++ .../webuploader/webuploader.flashonly.js | 4176 ++ .../webuploader/webuploader.html5only.js | 5559 +++ .../third-party/webuploader/webuploader.js | 6733 ++++ .../webuploader/webuploader.withoutimage.js | 4593 +++ .../zeroclipboard/ZeroClipboard.js | 1256 + public/js/ueditor/ueditor.all.js | 32409 ++++++++++++++++ public/js/ueditor/ueditor.config.js | 605 + public/js/ueditor/ueditor.parse.js | 900 + shim.d.ts | 13 + source.d.ts | 6 + src/App.vue | 98 + src/api/items.ts | 53 + src/api/login/index.ts | 33 + src/api/menu/index.ts | 26 + src/api/system/bigFile/index.ts | 49 + src/api/system/config/index.ts | 42 + src/api/system/dept/index.ts | 36 + src/api/system/dict/data.ts | 70 + src/api/system/dict/type.ts | 52 + src/api/system/menu/index.ts | 57 + src/api/system/monitor/loginLog/index.ts | 28 + src/api/system/monitor/operLog/index.ts | 37 + src/api/system/monitor/server/index.ts | 9 + src/api/system/monitor/userOnline/index.ts | 18 + src/api/system/personal/index.ts | 28 + src/api/system/post/index.ts | 35 + src/api/system/role/index.ts | 70 + src/api/system/tools/gen/index.ts | 74 + src/api/system/tools/job/sysJob.ts | 99 + src/api/system/user/index.ts | 75 + src/assets/401.png | Bin 0 -> 39645 bytes src/assets/404.png | Bin 0 -> 37002 bytes src/assets/bg.jpg | Bin 0 -> 133895 bytes src/assets/login-icon-two.svg | 9 + src/assets/logo-mini.svg | 9 + src/components/auth/auth.vue | 30 + src/components/auth/authAll.vue | 31 + src/components/auth/auths.vue | 36 + src/components/bigUploader/index.vue | 369 + src/components/cropper/index.vue | 149 + src/components/editor/index.vue | 115 + src/components/editor/toolbar.ts | 60 + src/components/iconSelector/index.vue | 252 + src/components/myCodeMirror/index.vue | 56 + src/components/noticeBar/index.vue | 195 + src/components/pagination/index.vue | 100 + src/components/svgIcon/index.vue | 73 + src/components/ueditor/index.vue | 77 + src/components/ueditor/model/index.ts | 95 + src/components/uploadFile/index.vue | 147 + src/components/uploadImg/index.vue | 191 + src/i18n/index.ts | 68 + src/i18n/lang/en.ts | 180 + src/i18n/lang/zh-cn.ts | 180 + src/i18n/lang/zh-tw.ts | 180 + src/i18n/pages/formI18n/en.ts | 13 + src/i18n/pages/formI18n/zh-cn.ts | 13 + src/i18n/pages/formI18n/zh-tw.ts | 13 + src/i18n/pages/login/en.ts | 29 + src/i18n/pages/login/zh-cn.ts | 28 + src/i18n/pages/login/zh-tw.ts | 28 + src/layout/component/aside.vue | 163 + src/layout/component/columnsAside.vue | 292 + src/layout/component/header.vue | 34 + src/layout/component/main.vue | 101 + src/layout/footer/index.vue | 47 + src/layout/index.vue | 54 + src/layout/lockScreen/index.vue | 372 + src/layout/logo/index.vue | 84 + src/layout/main/classic.vue | 35 + src/layout/main/columns.vue | 41 + src/layout/main/defaults.vue | 47 + src/layout/main/transverse.vue | 17 + src/layout/navBars/breadcrumb/breadcrumb.vue | 163 + src/layout/navBars/breadcrumb/closeFull.vue | 61 + src/layout/navBars/breadcrumb/index.vue | 119 + src/layout/navBars/breadcrumb/search.vue | 138 + src/layout/navBars/breadcrumb/setings.vue | 816 + src/layout/navBars/breadcrumb/user.vue | 303 + src/layout/navBars/breadcrumb/userNews.vue | 115 + src/layout/navBars/index.vue | 40 + src/layout/navBars/tagsView/contextmenu.vue | 138 + src/layout/navBars/tagsView/tagsView.vue | 734 + src/layout/navMenu/horizontal.vue | 157 + src/layout/navMenu/subItem.vue | 48 + src/layout/navMenu/vertical.vue | 101 + src/layout/routerView/iframes.vue | 66 + src/layout/routerView/link.vue | 61 + src/layout/routerView/parent.vue | 88 + src/main.ts | 64 + src/router/backEnd.ts | 170 + src/router/frontEnd.ts | 148 + src/router/index.ts | 131 + src/router/route.ts | 1166 + src/stores/bigUpload.ts | 13 + src/stores/index.ts | 8 + src/stores/interface/index.ts | 97 + src/stores/keepAliveNames.ts | 37 + src/stores/requestOldRoutes.ts | 17 + src/stores/routesList.ts | 27 + src/stores/tagsViewRoutes.ts | 24 + src/stores/themeConfig.ts | 146 + src/stores/userInfo.ts | 69 + src/theme/app.scss | 287 + src/theme/common/transition.scss | 94 + src/theme/dark.scss | 245 + src/theme/element.scss | 293 + src/theme/iconSelector.scss | 70 + src/theme/index.scss | 8 + src/theme/loading.scss | 51 + src/theme/media/chart.scss | 94 + src/theme/media/cityLinkage.scss | 10 + src/theme/media/date.scss | 25 + src/theme/media/dialog.scss | 12 + src/theme/media/error.scss | 45 + src/theme/media/form.scss | 18 + src/theme/media/home.scss | 23 + src/theme/media/index.scss | 15 + src/theme/media/layout.scss | 55 + src/theme/media/login.scss | 63 + src/theme/media/media.scss | 13 + src/theme/media/pagination.scss | 15 + src/theme/media/personal.scss | 16 + src/theme/media/scrollbar.scss | 56 + src/theme/media/tagsView.scss | 11 + src/theme/mixins/index.scss | 56 + src/theme/other.scss | 36 + src/theme/waves.scss | 101 + src/utils/arrayOperation.ts | 66 + src/utils/authDirective.ts | 42 + src/utils/authFunction.ts | 38 + src/utils/commonFunction.ts | 65 + src/utils/customDirective.ts | 178 + src/utils/directive.ts | 18 + src/utils/formatTime.ts | 137 + src/utils/getStyleSheets.ts | 101 + src/utils/gfast.ts | 108 + src/utils/loading.ts | 42 + src/utils/other.ts | 200 + src/utils/request.ts | 62 + src/utils/setIconfont.ts | 48 + src/utils/storage.ts | 59 + src/utils/theme.ts | 59 + src/utils/toolsValidate.ts | 370 + src/utils/wartermark.ts | 47 + .../bigUpload/component/editBigUpload.vue | 93 + src/views/bigUpload/index.vue | 209 + src/views/bigUpload/tableData.ts | 48 + src/views/chart/chart.scss | 434 + src/views/chart/chart.ts | 59 + src/views/chart/head.vue | 107 + src/views/chart/index.vue | 492 + src/views/demo/map2.ts | 16 + src/views/error/401.vue | 118 + src/views/error/404.vue | 115 + src/views/fun/clipboard/index.vue | 38 + src/views/fun/codemirror/index.vue | 58 + src/views/fun/countup/index.vue | 159 + src/views/fun/cropper/index.vue | 63 + src/views/fun/echartsMap/index.vue | 141 + src/views/fun/echartsMap/mock.ts | 387 + src/views/fun/gridLayout/index.vue | 62 + src/views/fun/printJs/index.vue | 44 + src/views/fun/qrcode/index.vue | 79 + src/views/fun/splitpanes/index.vue | 54 + src/views/fun/tagsView/index.vue | 118 + src/views/fun/ueditor/index.vue | 43 + src/views/home/index.vue | 643 + src/views/login/component/account.vue | 258 + src/views/login/component/mobile.vue | 84 + src/views/login/component/scan.vue | 59 + src/views/login/index.vue | 201 + src/views/make/noticeBar/index.vue | 164 + src/views/make/selector/index.vue | 126 + src/views/make/svgDemo/index.vue | 59 + src/views/menu/menu1/menu11/index.vue | 21 + src/views/menu/menu1/menu12/menu121/index.vue | 21 + src/views/menu/menu1/menu12/menu122/index.vue | 21 + src/views/menu/menu1/menu13/index.vue | 27 + src/views/menu/menu2/index.vue | 21 + src/views/pages/awesome/index.vue | 87 + src/views/pages/drag/index.vue | 66 + src/views/pages/dynamicForm/index.vue | 204 + src/views/pages/dynamicForm/mock.ts | 119 + src/views/pages/element/index.vue | 89 + src/views/pages/filtering/details.vue | 39 + src/views/pages/filtering/details1.vue | 39 + src/views/pages/filtering/index.vue | 355 + src/views/pages/filtering/mock.ts | 201 + src/views/pages/formAdapt/index.vue | 114 + src/views/pages/formI18n/index.vue | 59 + .../formRules/component/formRulesOne.vue | 68 + .../formRules/component/formRulesThree.vue | 50 + .../formRules/component/formRulesTwo.vue | 52 + src/views/pages/formRules/index.vue | 80 + src/views/pages/iocnfont/index.vue | 87 + src/views/pages/lazyImg/index.vue | 194 + src/views/pages/lazyImg/mock.ts | 313 + src/views/pages/listAdapt/index.vue | 209 + src/views/pages/listAdapt/mock.ts | 93 + src/views/pages/preview/index.vue | 28 + src/views/pages/steps/index.vue | 51 + src/views/pages/tableRules/index.vue | 129 + src/views/pages/tree/index.vue | 258 + src/views/pages/waterfall/index.vue | 174 + src/views/pages/waves/index.vue | 134 + .../workflow/component/contextmenu/index.vue | 107 + .../pages/workflow/component/drawer/index.vue | 73 + .../pages/workflow/component/drawer/line.vue | 62 + .../pages/workflow/component/drawer/node.vue | 272 + .../pages/workflow/component/tool/help.vue | 39 + .../pages/workflow/component/tool/index.vue | 79 + src/views/pages/workflow/index.vue | 693 + src/views/pages/workflow/js/config.ts | 99 + src/views/pages/workflow/js/mock.ts | 262 + src/views/params/common/details.vue | 52 + src/views/params/common/index.vue | 100 + src/views/params/dynamic/details.vue | 52 + src/views/params/dynamic/index.vue | 102 + src/views/personal/index.vue | 387 + src/views/personal/mock.ts | 66 + .../system/config/component/editConfig.vue | 152 + src/views/system/config/index.vue | 243 + src/views/system/dept/component/editDept.vue | 185 + src/views/system/dept/index.vue | 153 + src/views/system/dict/component/editDic.vue | 134 + .../system/dict/component/editDicData.vue | 166 + src/views/system/dict/dataList.vue | 231 + src/views/system/dict/index.vue | 245 + src/views/system/menu/component/editMenu.vue | 334 + src/views/system/menu/index.vue | 157 + src/views/system/monitor/loginLog/index.vue | 262 + .../monitor/operLog/component/detail.vue | 194 + .../system/monitor/operLog/component/model.ts | 68 + src/views/system/monitor/operLog/index.vue | 361 + src/views/system/monitor/server/index.vue | 508 + src/views/system/monitor/userOnline/index.vue | 179 + src/views/system/personal/index.vue | 508 + src/views/system/personal/mock.ts | 66 + src/views/system/post/component/editPost.vue | 183 + src/views/system/post/index.vue | 200 + src/views/system/role/component/dataScope.vue | 208 + src/views/system/role/component/editRole.vue | 263 + src/views/system/role/index.vue | 193 + .../system/sysJob/list/component/detail.vue | 286 + .../system/sysJob/list/component/edit.vue | 251 + .../system/sysJob/list/component/model.ts | 71 + src/views/system/sysJob/list/index.vue | 342 + .../system/tools/gen/component/basicInfo.vue | 128 + src/views/system/tools/gen/component/edit.vue | 161 + .../tools/gen/component/genInfoForm.vue | 204 + .../tools/gen/component/importTable.vue | 134 + src/views/system/tools/gen/component/model.ts | 116 + .../system/tools/gen/component/preview.vue | 85 + .../tools/gen/component/tableColumns.vue | 275 + src/views/system/tools/gen/index.vue | 268 + src/views/system/user/component/editUser.vue | 285 + src/views/system/user/index.vue | 362 + src/views/tools/index.vue | 499 + src/views/visualizing/demo1.vue | 1288 + src/views/visualizing/demo2.vue | 1344 + src/views/visualizing/images/bathymetry.jpg | Bin 0 -> 621596 bytes src/views/visualizing/images/world.jpg | Bin 0 -> 801762 bytes src/views/visualizing/mock/demo1.ts | 51 + src/views/visualizing/mock/demo2.ts | 131 + tsconfig.json | 72 + vite.config.ts | 64 + 475 files changed, 120954 insertions(+) create mode 100644 .env create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .prettierrc.js create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 plugins.d.ts create mode 100644 public/favicon.ico create mode 100644 public/js/ueditor/dialogs/anchor/anchor.html create mode 100644 public/js/ueditor/dialogs/attachment/attachment.css create mode 100644 public/js/ueditor/dialogs/attachment/attachment.html create mode 100644 public/js/ueditor/dialogs/attachment/attachment.js create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_default.png create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_exe.gif create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_jpg.gif create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_mp3.gif create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_pdf.gif create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gif create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_txt.gif create mode 100644 public/js/ueditor/dialogs/attachment/fileTypeImages/icon_xls.gif create mode 100644 public/js/ueditor/dialogs/attachment/images/alignicon.gif create mode 100644 public/js/ueditor/dialogs/attachment/images/alignicon.png create mode 100644 public/js/ueditor/dialogs/attachment/images/bg.png create mode 100644 public/js/ueditor/dialogs/attachment/images/file-icons.gif create mode 100644 public/js/ueditor/dialogs/attachment/images/file-icons.png create mode 100644 public/js/ueditor/dialogs/attachment/images/icons.gif create mode 100644 public/js/ueditor/dialogs/attachment/images/icons.png create mode 100644 public/js/ueditor/dialogs/attachment/images/image.png create mode 100644 public/js/ueditor/dialogs/attachment/images/progress.png create mode 100644 public/js/ueditor/dialogs/attachment/images/success.gif create mode 100644 public/js/ueditor/dialogs/attachment/images/success.png create mode 100644 public/js/ueditor/dialogs/background/background.css create mode 100644 public/js/ueditor/dialogs/background/background.html create mode 100644 public/js/ueditor/dialogs/background/background.js create mode 100644 public/js/ueditor/dialogs/background/images/bg.png create mode 100644 public/js/ueditor/dialogs/background/images/success.png create mode 100644 public/js/ueditor/dialogs/emotion/emotion.css create mode 100644 public/js/ueditor/dialogs/emotion/emotion.html create mode 100644 public/js/ueditor/dialogs/emotion/emotion.js create mode 100644 public/js/ueditor/dialogs/emotion/images/0.gif create mode 100644 public/js/ueditor/dialogs/emotion/images/bface.gif create mode 100644 public/js/ueditor/dialogs/emotion/images/cface.gif create mode 100644 public/js/ueditor/dialogs/emotion/images/fface.gif create mode 100644 public/js/ueditor/dialogs/emotion/images/jxface2.gif create mode 100644 public/js/ueditor/dialogs/emotion/images/neweditor-tab-bg.png create mode 100644 public/js/ueditor/dialogs/emotion/images/tface.gif create mode 100644 public/js/ueditor/dialogs/emotion/images/wface.gif create mode 100644 public/js/ueditor/dialogs/emotion/images/yface.gif create mode 100644 public/js/ueditor/dialogs/formula/formula.html create mode 100644 public/js/ueditor/dialogs/formula/formula.js create mode 100644 public/js/ueditor/dialogs/help/help.css create mode 100644 public/js/ueditor/dialogs/help/help.html create mode 100644 public/js/ueditor/dialogs/help/help.js create mode 100644 public/js/ueditor/dialogs/image/image.css create mode 100644 public/js/ueditor/dialogs/image/image.html create mode 100644 public/js/ueditor/dialogs/image/image.js create mode 100644 public/js/ueditor/dialogs/image/images/alignicon.jpg create mode 100644 public/js/ueditor/dialogs/image/images/bg.png create mode 100644 public/js/ueditor/dialogs/image/images/icons.gif create mode 100644 public/js/ueditor/dialogs/image/images/icons.png create mode 100644 public/js/ueditor/dialogs/image/images/image.png create mode 100644 public/js/ueditor/dialogs/image/images/progress.png create mode 100644 public/js/ueditor/dialogs/image/images/success.gif create mode 100644 public/js/ueditor/dialogs/image/images/success.png create mode 100644 public/js/ueditor/dialogs/insertframe/insertframe.html create mode 100644 public/js/ueditor/dialogs/internal.js create mode 100644 public/js/ueditor/dialogs/link/link.html create mode 100644 public/js/ueditor/dialogs/preview/preview.html create mode 100644 public/js/ueditor/dialogs/scrawl/images/addimg.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/brush.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/delimg.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/delimgH.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/empty.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/emptyH.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/eraser.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/redo.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/redoH.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/scale.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/scaleH.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/size.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/undo.png create mode 100644 public/js/ueditor/dialogs/scrawl/images/undoH.png create mode 100644 public/js/ueditor/dialogs/scrawl/scrawl.css create mode 100644 public/js/ueditor/dialogs/scrawl/scrawl.html create mode 100644 public/js/ueditor/dialogs/scrawl/scrawl.js create mode 100644 public/js/ueditor/dialogs/searchreplace/searchreplace.html create mode 100644 public/js/ueditor/dialogs/searchreplace/searchreplace.js create mode 100644 public/js/ueditor/dialogs/spechars/spechars.html create mode 100644 public/js/ueditor/dialogs/spechars/spechars.js create mode 100644 public/js/ueditor/dialogs/table/dragicon.png create mode 100644 public/js/ueditor/dialogs/table/edittable.css create mode 100644 public/js/ueditor/dialogs/table/edittable.html create mode 100644 public/js/ueditor/dialogs/table/edittable.js create mode 100644 public/js/ueditor/dialogs/table/edittd.html create mode 100644 public/js/ueditor/dialogs/table/edittip.html create mode 100644 public/js/ueditor/dialogs/template/config.js create mode 100644 public/js/ueditor/dialogs/template/images/bg.gif create mode 100644 public/js/ueditor/dialogs/template/images/pre0.png create mode 100644 public/js/ueditor/dialogs/template/images/pre1.png create mode 100644 public/js/ueditor/dialogs/template/images/pre2.png create mode 100644 public/js/ueditor/dialogs/template/images/pre3.png create mode 100644 public/js/ueditor/dialogs/template/images/pre4.png create mode 100644 public/js/ueditor/dialogs/template/template.css create mode 100644 public/js/ueditor/dialogs/template/template.html create mode 100644 public/js/ueditor/dialogs/template/template.js create mode 100644 public/js/ueditor/dialogs/video/images/bg.png create mode 100644 public/js/ueditor/dialogs/video/images/center_focus.jpg create mode 100644 public/js/ueditor/dialogs/video/images/file-icons.gif create mode 100644 public/js/ueditor/dialogs/video/images/file-icons.png create mode 100644 public/js/ueditor/dialogs/video/images/icons.gif create mode 100644 public/js/ueditor/dialogs/video/images/icons.png create mode 100644 public/js/ueditor/dialogs/video/images/image.png create mode 100644 public/js/ueditor/dialogs/video/images/left_focus.jpg create mode 100644 public/js/ueditor/dialogs/video/images/none_focus.jpg create mode 100644 public/js/ueditor/dialogs/video/images/progress.png create mode 100644 public/js/ueditor/dialogs/video/images/right_focus.jpg create mode 100644 public/js/ueditor/dialogs/video/images/success.gif create mode 100644 public/js/ueditor/dialogs/video/images/success.png create mode 100644 public/js/ueditor/dialogs/video/video.css create mode 100644 public/js/ueditor/dialogs/video/video.html create mode 100644 public/js/ueditor/dialogs/video/video.js create mode 100644 public/js/ueditor/dialogs/wordimage/wordimage.html create mode 100644 public/js/ueditor/dialogs/wordimage/wordimage.js create mode 100644 public/js/ueditor/index.html create mode 100644 public/js/ueditor/lang/en/en.js create mode 100644 public/js/ueditor/lang/en/images/addimage.png create mode 100644 public/js/ueditor/lang/en/images/alldeletebtnhoverskin.png create mode 100644 public/js/ueditor/lang/en/images/alldeletebtnupskin.png create mode 100644 public/js/ueditor/lang/en/images/background.png create mode 100644 public/js/ueditor/lang/en/images/button.png create mode 100644 public/js/ueditor/lang/en/images/copy.png create mode 100644 public/js/ueditor/lang/en/images/deletedisable.png create mode 100644 public/js/ueditor/lang/en/images/deleteenable.png create mode 100644 public/js/ueditor/lang/en/images/listbackground.png create mode 100644 public/js/ueditor/lang/en/images/localimage.png create mode 100644 public/js/ueditor/lang/en/images/music.png create mode 100644 public/js/ueditor/lang/en/images/rotateleftdisable.png create mode 100644 public/js/ueditor/lang/en/images/rotateleftenable.png create mode 100644 public/js/ueditor/lang/en/images/rotaterightdisable.png create mode 100644 public/js/ueditor/lang/en/images/rotaterightenable.png create mode 100644 public/js/ueditor/lang/en/images/upload.png create mode 100644 public/js/ueditor/lang/zh-cn/images/copy.png create mode 100644 public/js/ueditor/lang/zh-cn/images/localimage.png create mode 100644 public/js/ueditor/lang/zh-cn/images/music.png create mode 100644 public/js/ueditor/lang/zh-cn/images/upload.png create mode 100644 public/js/ueditor/lang/zh-cn/zh-cn.js create mode 100644 public/js/ueditor/plugins/demo/demo.js create mode 100644 public/js/ueditor/themes/default/css/ueditor.css create mode 100644 public/js/ueditor/themes/default/dialogbase.css create mode 100644 public/js/ueditor/themes/default/font/iconfont.ttf create mode 100644 public/js/ueditor/themes/default/font/iconfont.woff create mode 100644 public/js/ueditor/themes/default/font/iconfont.woff2 create mode 100644 public/js/ueditor/themes/default/images/anchor.gif create mode 100644 public/js/ueditor/themes/default/images/arrow.png create mode 100644 public/js/ueditor/themes/default/images/arrow_down.png create mode 100644 public/js/ueditor/themes/default/images/arrow_up.png create mode 100644 public/js/ueditor/themes/default/images/button-bg.gif create mode 100644 public/js/ueditor/themes/default/images/cancelbutton.gif create mode 100644 public/js/ueditor/themes/default/images/charts.png create mode 100644 public/js/ueditor/themes/default/images/cursor_h.gif create mode 100644 public/js/ueditor/themes/default/images/cursor_h.png create mode 100644 public/js/ueditor/themes/default/images/cursor_v.gif create mode 100644 public/js/ueditor/themes/default/images/cursor_v.png create mode 100644 public/js/ueditor/themes/default/images/dialog-title-bg.png create mode 100644 public/js/ueditor/themes/default/images/filescan.png create mode 100644 public/js/ueditor/themes/default/images/highlighted.gif create mode 100644 public/js/ueditor/themes/default/images/icons-all.gif create mode 100644 public/js/ueditor/themes/default/images/icons.gif create mode 100644 public/js/ueditor/themes/default/images/icons.png create mode 100644 public/js/ueditor/themes/default/images/img-cracked.png create mode 100644 public/js/ueditor/themes/default/images/loaderror.png create mode 100644 public/js/ueditor/themes/default/images/loading.gif create mode 100644 public/js/ueditor/themes/default/images/lock.gif create mode 100644 public/js/ueditor/themes/default/images/neweditor-tab-bg.png create mode 100644 public/js/ueditor/themes/default/images/pagebreak.gif create mode 100644 public/js/ueditor/themes/default/images/scale.png create mode 100644 public/js/ueditor/themes/default/images/sortable.png create mode 100644 public/js/ueditor/themes/default/images/spacer.gif create mode 100644 public/js/ueditor/themes/default/images/sparator_v.png create mode 100644 public/js/ueditor/themes/default/images/table-cell-align.png create mode 100644 public/js/ueditor/themes/default/images/tangram-colorpicker.png create mode 100644 public/js/ueditor/themes/default/images/toolbar_bg.png create mode 100644 public/js/ueditor/themes/default/images/unhighlighted.gif create mode 100644 public/js/ueditor/themes/default/images/upload.png create mode 100644 public/js/ueditor/themes/default/images/videologo.gif create mode 100644 public/js/ueditor/themes/default/images/word.gif create mode 100644 public/js/ueditor/themes/default/images/wordpaste.png create mode 100644 public/js/ueditor/themes/iframe.css create mode 100644 public/js/ueditor/third-party/SyntaxHighlighter/shCore.js create mode 100644 public/js/ueditor/third-party/SyntaxHighlighter/shCoreDefault.css create mode 100644 public/js/ueditor/third-party/clipboard/clipboard.js create mode 100644 public/js/ueditor/third-party/codemirror/codemirror.css create mode 100644 public/js/ueditor/third-party/codemirror/codemirror.js create mode 100644 public/js/ueditor/third-party/jquery-1.10.2.js create mode 100644 public/js/ueditor/third-party/webuploader/webuploader.css create mode 100644 public/js/ueditor/third-party/webuploader/webuploader.custom.js create mode 100644 public/js/ueditor/third-party/webuploader/webuploader.flashonly.js create mode 100644 public/js/ueditor/third-party/webuploader/webuploader.html5only.js create mode 100644 public/js/ueditor/third-party/webuploader/webuploader.js create mode 100644 public/js/ueditor/third-party/webuploader/webuploader.withoutimage.js create mode 100644 public/js/ueditor/third-party/zeroclipboard/ZeroClipboard.js create mode 100644 public/js/ueditor/ueditor.all.js create mode 100644 public/js/ueditor/ueditor.config.js create mode 100644 public/js/ueditor/ueditor.parse.js create mode 100644 shim.d.ts create mode 100644 source.d.ts create mode 100644 src/App.vue create mode 100644 src/api/items.ts create mode 100644 src/api/login/index.ts create mode 100644 src/api/menu/index.ts create mode 100644 src/api/system/bigFile/index.ts create mode 100644 src/api/system/config/index.ts create mode 100644 src/api/system/dept/index.ts create mode 100644 src/api/system/dict/data.ts create mode 100644 src/api/system/dict/type.ts create mode 100644 src/api/system/menu/index.ts create mode 100644 src/api/system/monitor/loginLog/index.ts create mode 100644 src/api/system/monitor/operLog/index.ts create mode 100644 src/api/system/monitor/server/index.ts create mode 100644 src/api/system/monitor/userOnline/index.ts create mode 100644 src/api/system/personal/index.ts create mode 100644 src/api/system/post/index.ts create mode 100644 src/api/system/role/index.ts create mode 100644 src/api/system/tools/gen/index.ts create mode 100644 src/api/system/tools/job/sysJob.ts create mode 100644 src/api/system/user/index.ts create mode 100644 src/assets/401.png create mode 100644 src/assets/404.png create mode 100644 src/assets/bg.jpg create mode 100644 src/assets/login-icon-two.svg create mode 100644 src/assets/logo-mini.svg create mode 100644 src/components/auth/auth.vue create mode 100644 src/components/auth/authAll.vue create mode 100644 src/components/auth/auths.vue create mode 100644 src/components/bigUploader/index.vue create mode 100644 src/components/cropper/index.vue create mode 100644 src/components/editor/index.vue create mode 100644 src/components/editor/toolbar.ts create mode 100644 src/components/iconSelector/index.vue create mode 100644 src/components/myCodeMirror/index.vue create mode 100644 src/components/noticeBar/index.vue create mode 100644 src/components/pagination/index.vue create mode 100644 src/components/svgIcon/index.vue create mode 100644 src/components/ueditor/index.vue create mode 100644 src/components/ueditor/model/index.ts create mode 100644 src/components/uploadFile/index.vue create mode 100644 src/components/uploadImg/index.vue create mode 100644 src/i18n/index.ts create mode 100644 src/i18n/lang/en.ts create mode 100644 src/i18n/lang/zh-cn.ts create mode 100644 src/i18n/lang/zh-tw.ts create mode 100644 src/i18n/pages/formI18n/en.ts create mode 100644 src/i18n/pages/formI18n/zh-cn.ts create mode 100644 src/i18n/pages/formI18n/zh-tw.ts create mode 100644 src/i18n/pages/login/en.ts create mode 100644 src/i18n/pages/login/zh-cn.ts create mode 100644 src/i18n/pages/login/zh-tw.ts create mode 100644 src/layout/component/aside.vue create mode 100644 src/layout/component/columnsAside.vue create mode 100644 src/layout/component/header.vue create mode 100644 src/layout/component/main.vue create mode 100644 src/layout/footer/index.vue create mode 100644 src/layout/index.vue create mode 100644 src/layout/lockScreen/index.vue create mode 100644 src/layout/logo/index.vue create mode 100644 src/layout/main/classic.vue create mode 100644 src/layout/main/columns.vue create mode 100644 src/layout/main/defaults.vue create mode 100644 src/layout/main/transverse.vue create mode 100644 src/layout/navBars/breadcrumb/breadcrumb.vue create mode 100644 src/layout/navBars/breadcrumb/closeFull.vue create mode 100644 src/layout/navBars/breadcrumb/index.vue create mode 100644 src/layout/navBars/breadcrumb/search.vue create mode 100644 src/layout/navBars/breadcrumb/setings.vue create mode 100644 src/layout/navBars/breadcrumb/user.vue create mode 100644 src/layout/navBars/breadcrumb/userNews.vue create mode 100644 src/layout/navBars/index.vue create mode 100644 src/layout/navBars/tagsView/contextmenu.vue create mode 100644 src/layout/navBars/tagsView/tagsView.vue create mode 100644 src/layout/navMenu/horizontal.vue create mode 100644 src/layout/navMenu/subItem.vue create mode 100644 src/layout/navMenu/vertical.vue create mode 100644 src/layout/routerView/iframes.vue create mode 100644 src/layout/routerView/link.vue create mode 100644 src/layout/routerView/parent.vue create mode 100644 src/main.ts create mode 100644 src/router/backEnd.ts create mode 100644 src/router/frontEnd.ts create mode 100644 src/router/index.ts create mode 100644 src/router/route.ts create mode 100644 src/stores/bigUpload.ts create mode 100644 src/stores/index.ts create mode 100644 src/stores/interface/index.ts create mode 100644 src/stores/keepAliveNames.ts create mode 100644 src/stores/requestOldRoutes.ts create mode 100644 src/stores/routesList.ts create mode 100644 src/stores/tagsViewRoutes.ts create mode 100644 src/stores/themeConfig.ts create mode 100644 src/stores/userInfo.ts create mode 100644 src/theme/app.scss create mode 100644 src/theme/common/transition.scss create mode 100644 src/theme/dark.scss create mode 100644 src/theme/element.scss create mode 100644 src/theme/iconSelector.scss create mode 100644 src/theme/index.scss create mode 100644 src/theme/loading.scss create mode 100644 src/theme/media/chart.scss create mode 100644 src/theme/media/cityLinkage.scss create mode 100644 src/theme/media/date.scss create mode 100644 src/theme/media/dialog.scss create mode 100644 src/theme/media/error.scss create mode 100644 src/theme/media/form.scss create mode 100644 src/theme/media/home.scss create mode 100644 src/theme/media/index.scss create mode 100644 src/theme/media/layout.scss create mode 100644 src/theme/media/login.scss create mode 100644 src/theme/media/media.scss create mode 100644 src/theme/media/pagination.scss create mode 100644 src/theme/media/personal.scss create mode 100644 src/theme/media/scrollbar.scss create mode 100644 src/theme/media/tagsView.scss create mode 100644 src/theme/mixins/index.scss create mode 100644 src/theme/other.scss create mode 100644 src/theme/waves.scss create mode 100644 src/utils/arrayOperation.ts create mode 100644 src/utils/authDirective.ts create mode 100644 src/utils/authFunction.ts create mode 100644 src/utils/commonFunction.ts create mode 100644 src/utils/customDirective.ts create mode 100644 src/utils/directive.ts create mode 100644 src/utils/formatTime.ts create mode 100644 src/utils/getStyleSheets.ts create mode 100644 src/utils/gfast.ts create mode 100644 src/utils/loading.ts create mode 100644 src/utils/other.ts create mode 100644 src/utils/request.ts create mode 100644 src/utils/setIconfont.ts create mode 100644 src/utils/storage.ts create mode 100644 src/utils/theme.ts create mode 100644 src/utils/toolsValidate.ts create mode 100644 src/utils/wartermark.ts create mode 100644 src/views/bigUpload/component/editBigUpload.vue create mode 100644 src/views/bigUpload/index.vue create mode 100644 src/views/bigUpload/tableData.ts create mode 100644 src/views/chart/chart.scss create mode 100644 src/views/chart/chart.ts create mode 100644 src/views/chart/head.vue create mode 100644 src/views/chart/index.vue create mode 100644 src/views/demo/map2.ts create mode 100644 src/views/error/401.vue create mode 100644 src/views/error/404.vue create mode 100644 src/views/fun/clipboard/index.vue create mode 100644 src/views/fun/codemirror/index.vue create mode 100644 src/views/fun/countup/index.vue create mode 100644 src/views/fun/cropper/index.vue create mode 100644 src/views/fun/echartsMap/index.vue create mode 100644 src/views/fun/echartsMap/mock.ts create mode 100644 src/views/fun/gridLayout/index.vue create mode 100644 src/views/fun/printJs/index.vue create mode 100644 src/views/fun/qrcode/index.vue create mode 100644 src/views/fun/splitpanes/index.vue create mode 100644 src/views/fun/tagsView/index.vue create mode 100644 src/views/fun/ueditor/index.vue create mode 100644 src/views/home/index.vue create mode 100644 src/views/login/component/account.vue create mode 100644 src/views/login/component/mobile.vue create mode 100644 src/views/login/component/scan.vue create mode 100644 src/views/login/index.vue create mode 100644 src/views/make/noticeBar/index.vue create mode 100644 src/views/make/selector/index.vue create mode 100644 src/views/make/svgDemo/index.vue create mode 100644 src/views/menu/menu1/menu11/index.vue create mode 100644 src/views/menu/menu1/menu12/menu121/index.vue create mode 100644 src/views/menu/menu1/menu12/menu122/index.vue create mode 100644 src/views/menu/menu1/menu13/index.vue create mode 100644 src/views/menu/menu2/index.vue create mode 100644 src/views/pages/awesome/index.vue create mode 100644 src/views/pages/drag/index.vue create mode 100644 src/views/pages/dynamicForm/index.vue create mode 100644 src/views/pages/dynamicForm/mock.ts create mode 100644 src/views/pages/element/index.vue create mode 100644 src/views/pages/filtering/details.vue create mode 100644 src/views/pages/filtering/details1.vue create mode 100644 src/views/pages/filtering/index.vue create mode 100644 src/views/pages/filtering/mock.ts create mode 100644 src/views/pages/formAdapt/index.vue create mode 100644 src/views/pages/formI18n/index.vue create mode 100644 src/views/pages/formRules/component/formRulesOne.vue create mode 100644 src/views/pages/formRules/component/formRulesThree.vue create mode 100644 src/views/pages/formRules/component/formRulesTwo.vue create mode 100644 src/views/pages/formRules/index.vue create mode 100644 src/views/pages/iocnfont/index.vue create mode 100644 src/views/pages/lazyImg/index.vue create mode 100644 src/views/pages/lazyImg/mock.ts create mode 100644 src/views/pages/listAdapt/index.vue create mode 100644 src/views/pages/listAdapt/mock.ts create mode 100644 src/views/pages/preview/index.vue create mode 100644 src/views/pages/steps/index.vue create mode 100644 src/views/pages/tableRules/index.vue create mode 100644 src/views/pages/tree/index.vue create mode 100644 src/views/pages/waterfall/index.vue create mode 100644 src/views/pages/waves/index.vue create mode 100644 src/views/pages/workflow/component/contextmenu/index.vue create mode 100644 src/views/pages/workflow/component/drawer/index.vue create mode 100644 src/views/pages/workflow/component/drawer/line.vue create mode 100644 src/views/pages/workflow/component/drawer/node.vue create mode 100644 src/views/pages/workflow/component/tool/help.vue create mode 100644 src/views/pages/workflow/component/tool/index.vue create mode 100644 src/views/pages/workflow/index.vue create mode 100644 src/views/pages/workflow/js/config.ts create mode 100644 src/views/pages/workflow/js/mock.ts create mode 100644 src/views/params/common/details.vue create mode 100644 src/views/params/common/index.vue create mode 100644 src/views/params/dynamic/details.vue create mode 100644 src/views/params/dynamic/index.vue create mode 100644 src/views/personal/index.vue create mode 100644 src/views/personal/mock.ts create mode 100644 src/views/system/config/component/editConfig.vue create mode 100644 src/views/system/config/index.vue create mode 100644 src/views/system/dept/component/editDept.vue create mode 100644 src/views/system/dept/index.vue create mode 100644 src/views/system/dict/component/editDic.vue create mode 100644 src/views/system/dict/component/editDicData.vue create mode 100644 src/views/system/dict/dataList.vue create mode 100644 src/views/system/dict/index.vue create mode 100644 src/views/system/menu/component/editMenu.vue create mode 100644 src/views/system/menu/index.vue create mode 100644 src/views/system/monitor/loginLog/index.vue create mode 100644 src/views/system/monitor/operLog/component/detail.vue create mode 100644 src/views/system/monitor/operLog/component/model.ts create mode 100644 src/views/system/monitor/operLog/index.vue create mode 100644 src/views/system/monitor/server/index.vue create mode 100644 src/views/system/monitor/userOnline/index.vue create mode 100644 src/views/system/personal/index.vue create mode 100644 src/views/system/personal/mock.ts create mode 100644 src/views/system/post/component/editPost.vue create mode 100644 src/views/system/post/index.vue create mode 100644 src/views/system/role/component/dataScope.vue create mode 100644 src/views/system/role/component/editRole.vue create mode 100644 src/views/system/role/index.vue create mode 100644 src/views/system/sysJob/list/component/detail.vue create mode 100644 src/views/system/sysJob/list/component/edit.vue create mode 100644 src/views/system/sysJob/list/component/model.ts create mode 100644 src/views/system/sysJob/list/index.vue create mode 100644 src/views/system/tools/gen/component/basicInfo.vue create mode 100644 src/views/system/tools/gen/component/edit.vue create mode 100644 src/views/system/tools/gen/component/genInfoForm.vue create mode 100644 src/views/system/tools/gen/component/importTable.vue create mode 100644 src/views/system/tools/gen/component/model.ts create mode 100644 src/views/system/tools/gen/component/preview.vue create mode 100644 src/views/system/tools/gen/component/tableColumns.vue create mode 100644 src/views/system/tools/gen/index.vue create mode 100644 src/views/system/user/component/editUser.vue create mode 100644 src/views/system/user/index.vue create mode 100644 src/views/tools/index.vue create mode 100644 src/views/visualizing/demo1.vue create mode 100644 src/views/visualizing/demo2.vue create mode 100644 src/views/visualizing/images/bathymetry.jpg create mode 100644 src/views/visualizing/images/world.jpg create mode 100644 src/views/visualizing/mock/demo1.ts create mode 100644 src/views/visualizing/mock/demo2.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.env b/.env new file mode 100644 index 0000000..dacb1a5 --- /dev/null +++ b/.env @@ -0,0 +1,8 @@ +# port 端口号 +VITE_PORT = 8888 + +# open 运行 npm run dev 时自动打开浏览器 +VITE_OPEN = false + +# public path 配置线上环境路径(打包)、本地通过 http-server 访问时,请置空即可 +VITE_PUBLIC_PATH = /vue-next-admin-preview/ \ No newline at end of file diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..98e13a0 --- /dev/null +++ b/.env.development @@ -0,0 +1,5 @@ +# 本地环境 +ENV = 'development' + +# 本地环境接口地址 +VITE_API_URL = 'http://localhost:8808/' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..358caaa --- /dev/null +++ b/.env.production @@ -0,0 +1,8 @@ +# 线上环境 +ENV = 'production' + +# public path 配置线上环境路径(打包)、本地通过 http-server 访问时,请置空即可 +VITE_PUBLIC_PATH = '/sys/' + +# 线上环境接口地址 +VITE_API_URL = '/' diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..cfc877d --- /dev/null +++ b/.eslintignore @@ -0,0 +1,18 @@ + +*.sh +node_modules +lib +*.md +*.scss +*.woff +*.ttf +.vscode +.idea +dist +mock +public +bin +build +config +index.html +src/assets \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..732bfbe --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,63 @@ +module.exports = { + root: true, + env: { + browser: true, + es2021: true, + node: true, + }, + parser: 'vue-eslint-parser', + parserOptions: { + ecmaVersion: 12, + parser: '@typescript-eslint/parser', + sourceType: 'module', + }, + extends: ['plugin:vue/vue3-essential', 'plugin:vue/essential', 'eslint:recommended'], + plugins: ['vue', '@typescript-eslint'], + rules: { + // http://eslint.cn/docs/rules/ + // https://eslint.vuejs.org/rules/ + '@typescript-eslint/ban-ts-ignore': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + 'vue/custom-event-name-casing': 'off', + 'vue/attributes-order': 'off', + 'vue/one-component-per-file': 'off', + 'vue/html-closing-bracket-newline': 'off', + 'vue/max-attributes-per-line': 'off', + 'vue/multiline-html-element-content-newline': 'off', + 'vue/singleline-html-element-content-newline': 'off', + 'vue/attribute-hyphenation': 'off', + 'vue/html-self-closing': 'off', + 'vue/no-multiple-template-root': 'off', + 'vue/require-default-prop': 'off', + 'vue/no-v-model-argument': 'off', + 'vue/no-arrow-functions-in-watch': 'off', + 'vue/no-template-key': 'off', + 'vue/no-v-html': 'off', + 'vue/comment-directive': 'off', + 'vue/no-parsing-error': 'off', + 'vue/no-deprecated-v-on-native-modifier': 'off', + 'vue/multi-word-component-names': 'off', + 'no-useless-escape': 'off', + 'no-sparse-arrays': 'off', + 'no-prototype-builtins': 'off', + 'no-constant-condition': 'off', + 'no-use-before-define': 'off', + 'no-restricted-globals': 'off', + 'no-restricted-syntax': 'off', + 'generator-star-spacing': 'off', + 'no-unreachable': 'off', + 'no-multiple-template-root': 'off', + 'no-unused-vars': 'error', + 'no-v-model-argument': 'off', + 'no-case-declarations': 'off', + 'no-console': 'error', + }, +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..403adbc --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +/dist + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..cff490a --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,39 @@ +module.exports = { + // 一行最多多少个字符 + printWidth: 150, + // 指定每个缩进级别的空格数 + tabWidth: 2, + // 使用制表符而不是空格缩进行 + useTabs: true, + // 在语句末尾打印分号 + semi: true, + // 使用单引号而不是双引号 + singleQuote: true, + // 更改引用对象属性的时间 可选值"" + quoteProps: 'as-needed', + // 在JSX中使用单引号而不是双引号 + jsxSingleQuote: false, + // 多行时尽可能打印尾随逗号。(例如,单行数组永远不会出现逗号结尾。) 可选值"",默认none + trailingComma: 'es5', + // 在对象文字中的括号之间打印空格 + bracketSpacing: true, + // jsx 标签的反尖括号需要换行 + jsxBracketSameLine: false, + // 在单独的箭头函数参数周围包括括号 always:(x) => x \ avoid:x => x + arrowParens: 'always', + // 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码 + rangeStart: 0, + rangeEnd: Infinity, + // 指定要使用的解析器,不需要写文件开头的 @prettier + requirePragma: false, + // 不需要自动在文件开头插入 @prettier + insertPragma: false, + // 使用默认的折行标准 always\never\preserve + proseWrap: 'preserve', + // 指定HTML文件的全局空格敏感度 css\strict\ignore + htmlWhitespaceSensitivity: 'css', + // Vue文件脚本和样式标签缩进 + vueIndentScriptAndStyle: false, + // 换行符使用 lf 结尾是 可选值"" + endOfLine: 'lf', +}; diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..0c212b2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,367 @@ +# vue-next-admin 更新日志 + +🎉🎉🔥 `vue-next-admin` 基于 vue3.x 、Typescript、vite、Element plus 等,适配手机、平板、pc 的后台开源免费模板库(vue2.x 请切换 vue-prev-admin 分支) + +## 2.2.0 + +`2022.07.10` + +⚡⚡⚡ [/sec/stores/userInfo.ts](https://gitee.com/lyt-top/vue-next-admin/blob/master/src/stores/userInfo.ts) 下添加了 `getApiUserInfo` 接口模拟数据 `setTimeout` 为 3 秒 + +- 🌟 更新 依赖更新最新版本 +- 🐞 修复 [主界面重新授权按钮点击卡死不跳转登录界面#I5C3JS](https://gitee.com/lyt-top/vue-next-admin/issues/I5C3JS),感谢[@Hero-Typ](https://gitee.com/tian_yu_peng) +- 🐞 修复 编译警告[#I5CVSB](https://gitee.com/lyt-top/vue-next-admin/issues/I5CVSB),全局替换成 `:deep(attr)`,感谢[@Linvas](https://gitee.com/linvas)。参考文档:[vue3 sfc-style](https://v3.cn.vuejs.org/api/sfc-style.html#style-scoped)。`node_modules\print-js\dist\print.js` 需 `print-js` 作者适配或去除 `package.json` 中的 `"print-js": "^1.6.0"` +- 🐞 修复 [vue-next-admin-template-js 版本前端控制路由:userInfo.js 请求用户信息接口报错,加载不到路由 可以写个定时器模拟一下接口 一样的报错#I5F1HP](https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP),感谢[@白开水](https://gitee.com/libin951223) + +## 2.1.1 + +`2022.05.27` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 深色模式下,`` 时,`:active` 样式 +- 🎯 优化 [页面缓存在刷新之后失效 #I58U75](https://gitee.com/lyt-top/vue-next-admin/issues/I58U75)),感谢[@ls0428](https://gitee.com/ls0428) +- 🎯 优化 [SvgIcon 对下载的 Svg 图像设置颜色无效 #I59ND0](https://gitee.com/lyt-top/vue-next-admin/issues/I59ND0)),感谢[@elus_z](https://gitee.com/elus_z) +- 🎯 优化 `/src/utils/toolsValidate.ts` 工具类 +- 🐞 修复 [布局切换,TagsView 显示的 tab 会多一个出来 #I58WGM](https://gitee.com/lyt-top/vue-next-admin/issues/I58WGM),感谢[@lg_boy](https://gitee.com/lg_boy) +- 🐞 修复 [如果设置顶部面包屑导航开启图标 isBreadcrumbIcon=true 后,样式有点问题 如果不开启就是正常的 #I58VB8](https://gitee.com/lyt-top/vue-next-admin/issues/I58VB8) +- 🐞 修复 地址栏路由地址输入错误时,返回首页后,再次输入路由地址错误时,不跳转 404 问题 +- 🐞 修复 [2.1.0 版本的图标选择组件多次点击后功能失效 #I590TH](https://gitee.com/lyt-top/vue-next-admin/issues/I590TH),感谢[@quber](https://gitee.com/quber) + +## 2.1.0 + +`2022.04.18` + +⚡⚡⚡ 此版本为破环性更新,优化内容如下:(谨慎更新!谨慎更新!!谨慎更新!!!)。因为 `vuex` 替换成 `pinia` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 部分界面图片不显示问题(更换 gitee 在线图片地址源) +- 🎯 优化 各界面方法引入与逻辑之间添加一行空行,方便区分内容 +- 🎯 优化 图标选择器 [#I4YAHB](https://gitee.com/lyt-top/vue-next-admin/issues/I4YAHB),感谢[@真有你的](https://gitee.com/sunliusen) +- 🎯 优化 图标选择器 icon type 类型为 all 时,类型 ali、ele、awe 回显问题 +- 🎯 优化 去掉开发环境 i18n 控制台警告,页面代码:[i18n/index.ts](https://gitee.com/lyt-top/vue-next-admin/blob/master/src/i18n/index.ts) +- 🎯 优化 `NextLoading.start()` 方法,防止第一次进入界面时出现短暂空白 +- 🎯 优化 地址栏有参数退出登录,再次登录不跳之前界面问题 `src/layout/navBars/breadcrumb/user.vue` +- 🎯 优化 `SvgIcon` 组件,防止 `开启 Tagsview 图标` 时,`tagsView 右键菜单关闭` 报错问题,工作流不可连线、全屏时关闭按钮消失问题 +- 🎯 优化 [如果 url 中有中文等特殊字符,第一次切换该 tab 时 keep-alive 失效#I55JS7](https://gitee.com/lyt-top/vue-next-admin/issues/I55JS7),感谢[yuyong1566](https://gitee.com/yuyong1566) +- 🎯 优化 [wangEditor](https://www.wangeditor.com/) 更新到 v5,[vue3 版本线上示例中 wangeditor 富文本编辑器 demo 实例,无法换行#I5565B](https://gitee.com/lyt-top/vue-next-admin/issues/I5565B),感谢@[jenchih](https://gitee.com/jenchih) +- 🎯 优化 [在关闭 tagview 时,高度刷新时会会变化,出现滚动条](https://gitee.com/lyt-top/vue-next-admin/issues/I55FHM),感谢[张松](https://gitee.com/zs310071113) +- 🎯 优化 [路由参数](https://lyt-top.gitee.io/vue-next-admin-preview/#/params/common)演示 +- 🎉 新增 [vuex](https://vuex.vuejs.org/) 替换成 [pinia](https://pinia.vuejs.org/getting-started.html) +- 🎉 新增 tagsView 支持自定义 tagsView 名称(文章详情时有用),前往体验:[路由参数/普通路由](https://lyt-top.gitee.io/vue-next-admin-preview/#/params/common)。新增 tagsView 支持自定义名称国际化,感谢[@q7but](https://gitee.com/q7but)、[!22 add 添加自定义 tagVIewName 拓展,支持国际化](https://gitee.com/lyt-top/vue-next-admin/pulls/22/files)、感谢[@tony_tong_xin](https://gitee.com/tony_tong_xin) +- 🐞 修复 适配 `"element-plus": "^2.1.9",2.2.0` 版本 +- 🐞 修复 [导航栏横向布局后,一级菜单显示问题#I4Z3M3](https://gitee.com/lyt-top/vue-next-admin/issues/I4Z3M3) +- 🐞 修复 横向布局三级及以上导航菜单高亮、导航高度不统一问题 +- 🐞 修复 分栏模式下,选中的菜单是 primary 样式,鼠标移入字也变成 primary 色了,感谢群友@孤夜-流殇 +- 🐞 修复 [vuex 里面改了颜色 但是不生效 #I4WFMA](https://gitee.com/lyt-top/vue-next-admin/issues/I4WFMA) +- 🐞 修复 全局主题 primary 清空颜色后报错,[#I4X0LG](https://gitee.com/lyt-top/vue-next-admin/issues/I4X0LG),感谢[面向 BUG 编程](https://gitee.com/fhtfy) +- 🐞 修复 [.eslintrc.js 文件 rules 标签名错误 #I53IPK](https://gitee.com/lyt-top/vue-next-admin/issues/I53IPK),感谢[yuyong1566](https://gitee.com/yuyong1566) +- 🐞 修复 `开启 Tagsview 图标` 时,`tagsView 右键菜单关闭` 报错问题 +- 🐞 修复 `router.push` 路径找不到时报错问题,`404、401 界面` 已移入到 `main` 主布局里(之前全屏) +- 🐞 修复 [全局修改组件大小失效了](https://gitee.com/lyt-top/vue-next-admin/issues/I551RP),感谢[lg_boy](https://gitee.com/lg_boy) +- 🐞 修复 [修改一下配置时,需要每次都清理 `window.localStorage` 浏览器永久缓存,配置才会生效,问题解决#I567R1](https://gitee.com/lyt-top/vue-next-admin/issues/I567R1),感谢[@lanbao123](https://gitee.com/lanbao123) +- 🐞 修复 [标记为需要缓存的 tab 页后,再次从左侧菜单打开,还是显示被缓存的页面内容#I4UY3G](https://gitee.com/lyt-top/vue-next-admin/issues/I4UY3G),感谢@axcc1234、特别感谢群友@华仔 +- 🌈 重构 路由(`/src/router/index.ts`)解决 No match found for location with path "xxx"(前端控制,后端控制未解决) 问题 + +## 2.0.2 + +`2022.03.04` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 Alert 提示添加边框 +- 🎯 优化 功能 / 数字滚动 演示界面 +- 🐞 修复 全局主题按钮颜色 :active 问题 +- 🐞 修复 Dropdown 下拉菜单样式问题 +- 🐞 修复 SvgIcon 图标组件动态切换时报警告问题,[SvgIcon 改变 name 时可能导致图像不显示](https://gitee.com/lyt-top/vue-next-admin/issues/I4VGE0),感谢@axcc1234 + +## 2.0.1 + +`2022.02.25` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 svgIcon 图标组件 +- 🎯 优化 vite.config.ts 打包,感谢群友@YourObjec +- 🐞 修复 tagViews 开启图标不显示问题(风格 5),感谢群友@坏人 +- 🐞 修复 [Element Plus 1.2.0-beta.6 以后的版本 el-table 在移动端无法左右滑动](https://gitee.com/lyt-top/vue-next-admin/issues/I4UPTP),感谢@YGDada + +## 2.0.0 + +`2022.02.21` + +⚡⚡⚡ 此版本为破环性更新,优化内容如下:(谨慎更新!谨慎更新!!谨慎更新!!!)。演示界面建议直接覆盖文件。如需使用之前版本,请前往[gitee 发行版](https://gitee.com/lyt-top/vue-next-admin/releases) 进行对应版本下载。基础版会基于 `master` 分支进行修改 + +- 🌟 更新 依赖更新最新版本 +- 🌟 更新 登录页、首页 +- 💔 移除 vue-web-screen-shot +- 💔 移除 城市多级联动,完整 json 数据请去 [vue-next-admin-images/menu](https://gitee.com/lyt-top/vue-next-admin-images/tree/master/menu) 仓库查看 +- 💔 移除 功能/echartsTree 树图 +- 💔 移除 其它设置/Tagsview 风格 2、Tagsview 风格 3 +- 💔 移除 功能/验证器 +- 🚧 调整 src/api 编写方式 +- 🚧 调整 自定义封装公用组件演示,更好的维护 +- 🎉 新增 Volar 支持,vs code 配置参考 [Vue Language Features (Volar)](https://lyt-top.gitee.io/vue-next-admin-doc-preview/home/vscode/) +- 🎉 新增 `SvgIcon` 支持本地 svg 图标使用 +- 🎉 新增 表单表格验证演示 +- 🎯 优化 全局主题(移除 success、info、warning、danger) +- 🎯 优化 工作流(开源) +- 🎯 优化 element plus svg 图标,`elementXXX` 改成 `ele-XXX` +- 🌈 重构 深色模式 +- 🌹 合并 [处理 parent 的 h100 由于外层有 min-height 导致失效的问题](https://gitee.com/lyt-top/vue-next-admin/pulls/20),感谢@MaxNull、@21030442-mao +- 🐞 修复 element plus 升级 `^1.3.0-beta.5` 后 组件 size 大小问题(大改:涉及布局、演示界面) +- 🐞 修复 vs code 使用 Vue Language Features (Volar) 插件 代码报红问题(可以把公用的 ts 类型定义封装起来公用) + +## 1.2.2 + +`2021.12.21` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 iframes 滚动条问题 +- 🎯 优化 部署后每次都要强制刷新清浏览器缓存问题 +- 🎉 新增 工具类百分比验证演示 +- 🐞 修复 [tag-view 标签右键会超出浏览器 #I4KN78](https://gitee.com/lyt-top/vue-next-admin/issues/I4KN78) + +## 1.2.1 + +`2021.12.12` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 cropper 裁剪时卡顿问题 [#I4M2VQ](https://gitee.com/lyt-top/vue-next-admin/issues/I4M2VQ) +- 🎯 优化 Wangeditor 富文本编辑器的问题 [#I4LPC1](https://gitee.com/lyt-top/vue-next-admin/issues/I4LPC1)、[#I4LM7I](https://gitee.com/lyt-top/vue-next-admin/issues/I4LM7I) +- 🐞 修复 浏览器标题问题 +- 🐞 修复 element plus svg 图标引入 +- 🐞 修复 工作流不可以拖线连接问题 + +## 1.2.0 + +`2021.11.28` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 深色模式 +- 🎯 优化 `/@/utils` 文件夹,合并删除单一内容 +- 🎯 优化 系统设置:菜单管理(新增、修改)、角色管理(新增菜单权限)、用户管理、部门管理、字典管理 +- 🎯 优化 登录界面逻辑、权限管理逻辑 +- 🎯 优化 同步 [vue-next-admin-images](https://gitee.com/lyt-top/vue-next-admin-images/tree/master/menu) 后端控制菜单模拟数据 +- 🎉 新增 适配 Font Icon 向 SVG Icon 迁移(改动大,"element-plus": "^1.2.0-beta.4" 谨慎更新) +- 🐞 修复 热更新问题,感谢@甜蜜蜜 +- 🐞 修复 页面/element 字体图标演示 +- 🐞 修复 功能/图标选择器演示,新增高级功能 [issues #I4GJXQ](https://gitee.com/lyt-top/vue-next-admin/issues/I4GJXQ) + +## 1.1.2 + +`2021.10.17` + +- 🌟 更新 依赖更新最新版本 +- 🐞 修复 开启全屏时,刷新界面被还原成未全屏的状态 +- 🎯 优化 tagsView 右键菜单关闭逻辑 +- 🎯 优化 wangeditor 富文本编辑器(增加双向绑定) +- 🎉 新增 工作流(暂不开源) +- 🎉 新增 基础版 ts(不带国际化),切换 `vue-next-admin-template` 分支 + +## 1.1.1 + +`2021.09.25` + +- 🌟 更新 依赖更新最新版本(`"element-plus": "^1.1.0-beta.13"` 版本运行错误,`^1.1.0-beta.16`修复横向菜单卡死问题) +- 🐞 修复 Dialog 弹窗位置错误、Drawer 抽屉内边距、el-menu 菜单收起时背景色问题 +- 🎯 优化 锁屏界面自动锁屏(s/秒)必须设置至少 1 秒 +- 🎉 新增 分栏布局,鼠标移入当前项时,显示当前项菜单内容 +- 🎉 新增 工作流(未完成) + +## 1.1.0 + +`2021.09.10` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 小屏模式下登录页二维码遮挡标题问题 +- 🎉 新增 图片验证器 +- 🎉 新增 动态复杂表单 +- 🎉 新增 工作流(未完成) +- 🎉 新增 深色主题(伪深色,样式变动大,谨慎更新) + +## 1.0.18 + +`2021.08.29` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 权限组件去掉顶级 div(`/src/components/auth`) +- 🎉 新增 布局配置添加恢复默认按钮 +- 🐞 修复 升级 element plus 1.1.0-beta.7后项目无法启动、el-menu 菜单 +- 🐞 修复 表格固定列时的层级、设置了相对定位时,遮挡左侧导航菜单问题 + +## 1.0.17 + +`2021.08.22` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 去除设置布局切换,重置主题样式(initSetLayoutChange),切换布局需手动设置样式,设置的样式自动同步各布局 +- 🎯 优化 Dropdown 下拉菜单用户账号靠边时换行问题 +- 🎯 优化 左侧导航菜单,共用菜单树,防止 `布局配置` 设置 `菜单 / 顶栏` 时,样式丢失等问题 +- 🐞 修复 固定 header 后没有回到顶部的 bug,拉取项目后运行不起来的 bug。!14,感谢@wjs0509 +- 🐞 修复 tagView 右键全屏后,浏览器窗口大小发生任何变化都会导致左边菜单显示出来,并且可点击打开对应页面。I46E6T +- 🐞 修复 默认设置 `菜单 / 顶栏` 样式不生效问题(/@/src/store/modules/themeConfig.ts) + +## 1.0.16 + +`2021.08.14` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 菜单高亮(详情且详情设置了 meta.isHide 时,顶级菜单高亮),感谢群友@YourObject +- 🎯 优化 详情路径写法:如父级(/pages/filtering),那么详情为(/pages/filtering/details?id=1)。这样写可实现(详情时,父级菜单高亮),否则写成(/pages/filteringDetails?id=1)顶级菜单将不会高亮。可参考:`页面/过滤筛选组件`,点击当前图片进行测试 +- 🎯 优化 tagsView 右键菜单全屏时,打开的界面高度问题 +- 🎯 优化 图表批量 resize 问题 +- 🐞 修复 菜单收起时(设置全局主题:primary 且有二级菜单时),文字高亮颜色不对 +- 🐞 修复 国际化 #I43NPE。可参考:`页面/过滤筛选组件`,点击顶部语言切换,进行底部分页国际化查看 + +## 1.0.15 + +`2021.08.06` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 tagsView 右键菜单点击时的字段名(id 已修改成 contextMenuClickId)与路由中返回的 id 名冲突问题,感谢群友@伯牙已遇钟子期 +- 🎉 新增 多个 form 表单验证界面演示 + +## 1.0.14 + +`2021.07.29` + +- 🌟 更新 依赖更新最新版本(vue、vuex、vue-router),出现问题,请手动降级。版本查看:vnpm +- 🎯 优化 数据可视化图表演示加载卡顿问题、优化有图表的演示界面 +- 🎯 优化 路由参数演示界面 +- 🎯 优化 tagsView 操作演示界面,由于存在相同路由多标签,必须要传全部参数值(query 或者 params) +- 🎉 新增 开启 TagsView 共用,开启时:(多个路由菜单共用一个详情组件(参数为后点击的覆盖前面点击的),tagsView 中只会出现一个(不支持同时出现多个 tagsView 标签))。关闭时:(多个路由菜单共用一个详情组件,参数不同,会同时出现多个 tagsView 标签) +- 🐞 修复 tagsView 共用(单标签)时,右键菜单功能点击,参数不对的问题(第 2n+个参数未覆盖第一个参数值) +- 🐞 修复 多 tagsView 标签(参数不同)、单个 tagsView 标签公用(参数不同)所带来的刷新功能、横向自动滚动等问题 +- 🐞 修复 处理全屏若干问题,pr!12,感谢群友@另一个前端 + +## 1.0.13 + +`2021.07.25` + +- 🌟 更新 依赖更新最新版本 +- 🎉 新增 数据可视化演示界面(/visualizingDemo1、/visualizingDemo2) +- 🎉 新增 登录页扫码登录 + +## 1.0.12 + +`2021.07.16` + +- 🌟 更新 依赖更新最新版本 +- 🎉 新增 数据可视化演示空界面(待完善) +- 🎯 优化 tagsView 动态路由(xxx/:id/:name)时的右键菜单刷新、关闭其它时参数丢失问题(2021.07.15 优化) +- 🐞 修复 路由带参数时,复制路径到登录页,跳转后参数消失的问题 +- 🐞 修复 设置多个外链,点击后,页面内容停留在上一个内容(内容未改变)、国际化处理、打开新窗口 sessionStorage 共享等 + +## 1.0.11 + +`2021.07.14` + +- 🌟 更新 依赖更新最新版本 +- 🎉 新增 路由参数、图片懒加载界面演示 +- ⚠️ 警告 Form 表单 `binding value must be a string or number`,解决:加上 `label-position="top"` 不报警告(等待官方修复) +- 🎯 优化 锁屏界面动画效果、首页图表显示 +- 🎯 优化 tagsView 右键菜单 `关闭` 功能逻辑 +- 🐞 修复 开启 TagsView 拖拽报错及小于 `1000px` 时自动设置禁止拖拽(#I3ZRRI) +- 🐞 修复 `iframe 内嵌、外链` 高度问题,使用 computed 进行计算 +- 🐞 修复 默认布局开启 `侧边栏 Logo` 与关闭 `菜单水平折叠`,切换到横向布局时,菜单看不见的问题 +- 🐞 修复 切换不同布局时,再去开启 `经典布局分割菜单` 功能不生效问题 +- 🐞 修复 浏览器窗口标题中/英文切换不实时生效的问题 +- 🐞 修复 切换布局时,某些功能不可以使用。部分界面不需要取消事件监听(proxy.mittBus.off('xxx')) +- 🐞 修复 动态路由带参数,router-link 跳转问题(#I3YX6G) +- 🐞 修复 横向菜单有二级菜单时,点击子级菜单不高亮问题 +- 🐞 修复 功能 tagsView 操作演示不生效 + +## 1.0.10 + +`2021.07.07` + +- 🌟 更新 依赖更新最新版本(字体图标无问题) +- 🎯 优化 内嵌 iframe、外链,解决 tagsView 刷新问题 + +## 1.0.9 + +`2021.07.02` + +- 🌟 更新 依赖更新最新版本 +- 🎯 优化 图标选择器设置宽度、v-model 等问题 +- 🎯 优化 滚动通知栏在手机上的体验 +- 🎯 优化 系统管理/新增菜单(编辑菜单),使用 `图标选择器` 进行模拟 +- 🎯 优化 字体图标(自动载入) 逻辑 +- 🐞 修复 screenfull 全屏时,按键盘 esc 键图标不改变问题,感谢群友@伯牙已遇钟子期 + +## 1.0.8 + +`2021.06.29` + +- 🌟 更新 依赖更新最新版本 +- 🎉 新增 表单中英文切换演示 +- 🎯 优化 登录页查看密码 icon 图标 +- 🎯 优化 图标选择器 +- 🎯 优化 拖动指令 +- 🐞 修复 form 表单在页面小于 576px 时的排版问题 + +## 1.0.7 + +`2021.06.24` + +- 🌟 更新 依赖更新最新版本 +- 🎉 新增 拖动指令及其演示界面 +- 🎯 优化 锁屏界面,解锁提示 +- 🎯 优化 登录页在手机上显示的效果 + +## 1.0.6 + +`2021.06.23` + +- 🎯 优化 去掉内嵌 iframe 内边距(padding) +- 🎯 优化 城市多级联动组件 +- 🎯 优化 Tree 树形控件改成表格组件 +- 🐞 修复 Cascader 级联选择器高度问题 + +## 1.0.5 + +`2021.06.22` + +- 🌟 更新 vite 降级为@vite2.3.7,降级方法 `cnpm install vite@2.3.7`,防止 element plus 字体图标消失 +- 🐞 修复 开启后端控制路由(isRequestRoutes = true)时,内嵌 iframe、外链不可使用的问题 + +## 1.0.4 + +`2021.06.19` + +- 🌟 更新 依赖更新最新版本("vite": "^2.3.7")热更新无问题 +- 🎉 新增 深克隆工具,方便开发,感谢@kangert(#6) +- 🎯 优化 vuex 模块自动导入。感谢@kangert(#4),感谢群友@web 小学生-第五君 +- 🎯 优化 类型定义提高编码体验,修复不能将类型“string | undefined”分配给类型“string”的问题。感谢@kangert(#5) +- 🎯 优化 `layout` 文件夹移动到与 `views` 文件夹同级(改动较大,`/@/views/layout` 变成 `/@/layout`) +- 🎯 优化 页面有 `console.log` 时 `eslint` 不生效问题 +- 🎯 优化 页面、ts 中 `any` 类型问题(改动较大) +- 🎯 优化 登录页在手机上显示的效果 +- 🎯 优化 多行注释信息,鼠标放到方法名即可查看,更加直观的知道方法参数等。引入方法时需去掉以 `.ts` 结尾的后缀(改动较大) +- 🎯 优化 移除 `utils/storage.ts` 下的旧写法(改动较大) +- 🎯 优化 拆分 `router` 下内容,路由、前端、后端控制分开写,方便理解 +- 🐞 修复 鼠标移入顶部用户信息栏 `开/关全屏` 文字反向问题 +- 🐞 修复 热更新时,NextLoading(界面 loading) 不消失问题 `window.nextLoading === undefined` +- 🐞 修复 vuex 中不可以使用 `/@/api/xxx` 下的接口调用问题 + +## 1.0.3 + +`2021.06.02` + +- ❄️ 删除 G6 思维导图界面 +- 🌟 更新 手动更新 vue、vue-router、vuex 到最近最多人使用的版本,出现不可预测的问题请降低版本。版本查看:vue 版本查看 +- 🐞 修复 开启后端控制路由 `isRequestRoutes` 在非首页刷新页面后,回到首页的问题,感谢群友@伯牙已遇钟子期 + +## 1.0.2 + +`2021.06.01` + +- 🌟 更新 依赖更新最新版本 +- 🐞 修复 菜单搜索中文不可以搜索的问题,感谢群友@逍遥天意 + +## 1.0.1 + +`2021.05.31` + +- 🎉 新增 更新日志文件 `CHANGELOG.md`,以后每次更新都会在这里显示对应内容 +- 🌟 更新 依赖更新最新版本 +- 🐞 修复 分栏、经典布局路由设置 `meta.isHide` 为 `true` 时报错问题,感谢群友@29、@芭芭拉 +- 🐞 修复 经典布局点击 `tagsView` 左侧菜单数据不变问题 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6f6a7ea --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 lyt-Top + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..656ed9a --- /dev/null +++ b/README.md @@ -0,0 +1,145 @@ +
+ +

+ + vue + + + element plus + + + typescript + + + vite + + + license + +

+

 

+
+ +#### 🌈 介绍 + +基于 vue3.x + CompositionAPI + typescript + vite + element plus + vue-router-next + next.vuex,适配手机、平板、pc 的后台开源免费模板,希望减少工作量,帮助大家实现快速开发。 + +#### ⛱️ 线上预览 + +- vue3.x 版本预览(vue-next-admin)https://lyt-top.gitee.io/vue-next-admin-preview/#/login +- vue2.x 版本预览(vue-prev-admin)https://lyt-top.gitee.io/vue-prev-admin-preview/#/login + +#### 💒 代码仓库 + +- vue3.x 版本 https://gitee.com/lyt-top/vue-next-admin +- vue2.x 版本 https://gitee.com/lyt-top/vue-next-admin/tree/vue-prev-admin + +#### 🚧 安装 cnpm、yarn + +- 复制代码(桌面 cmd 运行) `npm install -g cnpm --registry=https://registry.npm.taobao.org` +- 复制代码(桌面 cmd 运行) `npm install -g yarn` + +#### 🏭 环境支持 + +| Edge | Firefox | Chrome | Safari | +| --------- | ------------ | ----------- | ----------- | +| Edge ≥ 79 | Firefox ≥ 78 | Chrome ≥ 64 | Safari ≥ 12 | + +> 由于 Vue3 不再支持 IE11,故而 ElementPlus 也不支持 IE11 及之前版本。 + +#### ⚡ 使用说明 + +建议使用 cnpm,因为 yarn 有时会报错。node 版本 > 12xx.xx.x + +```bash +# 克隆项目 +git clone https://gitee.com/lyt-top/vue-next-admin.git + +# 进入项目 +cd vue-next-admin + +# 安装依赖 +cnpm install + +# 运行项目 +cnpm run dev + +# 打包发布 +cnpm run build +``` + +#### 💯 学习交流加 QQ 群 + +- 若加群了没同意(一般秒过),那就是群满了(500 人群),请换一个群试试。群会定期清理半年(6 个月)未发言的群友,资源有限,请谅解。建议勿加多群,可能会误伤! +- 查看开发文档:vue-next-admin-doc +- 群号码: + 1 群:665452019 + 2 群:766356862 + 3 群:795345435 + 4 群:736626228 + + + vue-next-admin 讨论群1 + + + vue-next-admin 讨论群2 + + + vue-next-admin 讨论群3 + + + vue-next-admin 讨论群4 + + +#### 💒 集成后端 + +- @熊猫 PandaGoAdmin +- @甜蜜蜜 GoPro 平台 +- @甜蜜蜜 NiuPi 平台 +- @游子 GFast-V3 +- @diygw.com gw-ui-php +- @zsvg vboot-net +- @zsvg vboot-java +- @青红造了个白 buildadmin +- @Goodwell iotfast(一个开源的物联网平台) + +#### ❤️ 鸣谢列表 + +- vue +- vue-next +- element-ui +- element-plus +- vue-router-next +- vuex +- echarts +- axios +- clipboard +- countUp +- mitt +- nprogress +- screenfull +- sortablejs +- sass +- typescript +- vite +- wangeditor +- cropperjs +- qrcodejs +- print-js +- vue-grid-layout +- splitpanes +- jsplumb + +#### 💕 特别感谢 + +特别感谢老哥们的建议、指导与帮忙。谢谢! + +- @省长 +- @唐参 +- @川歌 +- @华仔 + +#### 💌 支持作者 + +如果觉得框架不错,或者已经在使用了,希望你可以去 Github 或者 +Gitee 帮我点个 ⭐ Star,这将是对我极大的鼓励与支持。 diff --git a/index.html b/index.html new file mode 100644 index 0000000..60f47c4 --- /dev/null +++ b/index.html @@ -0,0 +1,22 @@ + + + + + + + + + + gfast3.2后台管理系统 + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..37265a1 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2472 @@ +{ + "name": "vue-next-admin", + "version": "2.2.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/parser": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", + "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==" + }, + "@babel/runtime": { + "version": "7.20.1", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "requires": { + "regenerator-runtime": "^0.13.10" + } + }, + "@codemirror/autocomplete": { + "version": "6.3.2", + "resolved": "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.3.2.tgz", + "integrity": "sha512-+VzxrHWkuvSSt0fw4I57SULo/NMrLnNgm6JHrkbIYfDw9jZJNTruCwkv32TCqSeC8xIXhYWMuxawwr/xOoHr8w==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.5.0", + "@lezer/common": "^1.0.0" + } + }, + "@codemirror/commands": { + "version": "6.1.2", + "resolved": "https://registry.npmmirror.com/@codemirror/commands/-/commands-6.1.2.tgz", + "integrity": "sha512-sO3jdX1s0pam6lIdeSJLMN3DQ6mPEbM4yLvyKkdqtmd/UDwhXA5+AwFJ89rRXm6vTeOXBsE5cAmlos/t7MJdgg==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "@codemirror/lang-javascript": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-javascript/-/lang-javascript-6.1.1.tgz", + "integrity": "sha512-F4+kiuC5d5dUSJmff96tJQwpEXs/tX/4bapMRnZWW6bHKK1Fx6MunTzopkCUWRa9bF87GPmb9m7Qtg7Yv8f3uQ==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "@codemirror/language": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/@codemirror/language/-/language-6.3.1.tgz", + "integrity": "sha512-MK+G1QKaGfSEUg9YEFaBkMBI6j1ge4VMBPZv9fDYotw7w695c42x5Ba1mmwBkesYnzYFBfte6Hh9TDcKa6xORQ==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "@codemirror/lint": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@codemirror/lint/-/lint-6.1.0.tgz", + "integrity": "sha512-mdvDQrjRmYPvQ3WrzF6Ewaao+NWERYtpthJvoQ3tK3t/44Ynhk8ZGjTSL9jMEv8CgSMogmt75X8ceOZRDSXHtQ==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/search": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/@codemirror/search/-/search-6.2.3.tgz", + "integrity": "sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/state": { + "version": "6.1.3", + "resolved": "https://registry.npmmirror.com/@codemirror/state/-/state-6.1.3.tgz", + "integrity": "sha512-0Rn7vadZ6EgHaKdIOwyhBWLdPDh1JM5USYqXjxwrvpmTKWu4wQ77twgAYEg1MU282XcrnV4ZqFf+00bu6UPCyg==" + }, + "@codemirror/theme-one-dark": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.0.tgz", + "integrity": "sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "@codemirror/view": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/@codemirror/view/-/view-6.5.0.tgz", + "integrity": "sha512-dapE7AywjyYoHBHn4n+wCRKFqMEmYZHHlfyoSO+e1P6MK4az1wg9t7mfwbdI9mXuBzmPBX7NmU3Xmq+qmxDOLw==", + "requires": { + "@codemirror/state": "^6.0.0", + "style-mod": "^4.0.0", + "w3c-keyname": "^2.2.4" + } + }, + "@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" + }, + "@element-plus/icons-vue": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.0.6.tgz", + "integrity": "sha512-lPpG8hYkjL/Z97DH5Ei6w6o22Z4YdNglWCNYOPcB33JCF2A4wye6HFgSI7hEt9zdLyxlSpiqtgf9XcYU+m5mew==" + }, + "@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@floating-ui/core": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz", + "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==" + }, + "@floating-ui/dom": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz", + "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==", + "requires": { + "@floating-ui/core": "^0.7.3" + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@interactjs/actions": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/actions/-/actions-1.10.17.tgz", + "integrity": "sha512-wyB1ZqpaZy5gmz6VDqK9KWh98xKnFgL7VyLvxHODFi9V0IYX4HJAAOBlhtfze0D1R1f1cY+gqPDK+dLaHMlE+w==", + "requires": { + "@interactjs/interact": "1.10.17" + } + }, + "@interactjs/auto-scroll": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/auto-scroll/-/auto-scroll-1.10.17.tgz", + "integrity": "sha512-IQcW7N3xOaoL8RnAGOGMk0Y2gue7L4S3BT6Id4VBBu8so163DtLiZVW6jXu9rKVntzbluaAeqNZlfAVyu3kIWg==", + "requires": { + "@interactjs/interact": "1.10.17" + } + }, + "@interactjs/auto-start": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/auto-start/-/auto-start-1.10.17.tgz", + "integrity": "sha512-qYVxhAbYnwxjD/NLEegUoAST7WASJ4VmWNjsyWRx/js5Op+I4E2zteARIeZGgrutcGIXMCcQzhCMgE3PjOpbpw==", + "requires": { + "@interactjs/interact": "1.10.17" + } + }, + "@interactjs/core": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/core/-/core-1.10.17.tgz", + "integrity": "sha512-rL9w+83HDRuXub8Ezqs+97CYLl/ne7bLT/sAeduUWaxYhsW9iOqBoob9JnkkCZOaOsYizWI1EWy0+fNc5ibtLQ==" + }, + "@interactjs/dev-tools": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/dev-tools/-/dev-tools-1.10.17.tgz", + "integrity": "sha512-Oi9nEw3FfSwkNmW+V0WwdHqvzEkVHc24mH1v5EjRn60sqgrGLK9nTQ+NSuqcnUY8GxC3TkyuxnsOodxiadIRmA==", + "requires": { + "@interactjs/interact": "1.10.17" + } + }, + "@interactjs/inertia": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/inertia/-/inertia-1.10.17.tgz", + "integrity": "sha512-41vbYUjZIDCKt2/yhmjPrEW5+0uoL/hldFsll9pkvnLhmm12Xk0VXOlmR2zXKAmsTK3fJlKMyBYUX92qHLkyVQ==", + "requires": { + "@interactjs/interact": "1.10.17", + "@interactjs/offset": "1.10.17" + } + }, + "@interactjs/interact": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/interact/-/interact-1.10.17.tgz", + "integrity": "sha512-NyKsf8EFudvdahBjPz1Gt5QnynVwa/2LUfBc2/w8QOnOBiyzUm0HLloJSaB8a50QbQkSWN243/Lgpd8GTMQvuQ==", + "requires": { + "@interactjs/core": "1.10.17", + "@interactjs/types": "1.10.17", + "@interactjs/utils": "1.10.17" + } + }, + "@interactjs/interactjs": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/interactjs/-/interactjs-1.10.17.tgz", + "integrity": "sha512-hHmiukARbZhiM12zNKx0yQlFVl4C+NMeYNAYh6Mf9U3ZziQ47C+JEW8Gr7Zr/MxfNZyPu5nLKCpVQjh/JvBO9g==", + "requires": { + "@interactjs/actions": "1.10.17", + "@interactjs/auto-scroll": "1.10.17", + "@interactjs/auto-start": "1.10.17", + "@interactjs/core": "1.10.17", + "@interactjs/dev-tools": "1.10.17", + "@interactjs/inertia": "1.10.17", + "@interactjs/interact": "1.10.17", + "@interactjs/modifiers": "1.10.17", + "@interactjs/offset": "1.10.17", + "@interactjs/pointer-events": "1.10.17", + "@interactjs/reflow": "1.10.17", + "@interactjs/utils": "1.10.17" + } + }, + "@interactjs/modifiers": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/modifiers/-/modifiers-1.10.17.tgz", + "integrity": "sha512-Dxw8kv9VBIxnhNvQncR6CKAGMzKXczLvuAUIdSPFYtyerX/XiDulJUqhR+jVKNp/WjF1DvdBxWo0kGGLbM84LQ==", + "requires": { + "@interactjs/interact": "1.10.17", + "@interactjs/snappers": "1.10.17" + } + }, + "@interactjs/offset": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/offset/-/offset-1.10.17.tgz", + "integrity": "sha512-wWBnIQWgLrmJNTBbd/FdxHxAJjiXl/5ND8Jbw2DuP9gIGDxhFSdEt62Fgqimn9ICb8v8ycvSLObEmcvJF/8hQQ==", + "requires": { + "@interactjs/interact": "1.10.17" + } + }, + "@interactjs/pointer-events": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/pointer-events/-/pointer-events-1.10.17.tgz", + "integrity": "sha512-VsfluouEKb8QRGyH6jQATCW+QdAd/3dkENS7rj2m+EcVUhz2Ob5mpMRopjALi4pwltMowqTfuJ4LtwMSX2G29A==", + "requires": { + "@interactjs/interact": "1.10.17" + } + }, + "@interactjs/reflow": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/reflow/-/reflow-1.10.17.tgz", + "integrity": "sha512-ncpWP5k93FRQptEhjzPZsbuRRajd4rkW17lDavCrEjrDi/LHnYekWGqZTaFzfJ80n1x8xUm9ujDjxCTylNqEIA==", + "requires": { + "@interactjs/interact": "1.10.17" + } + }, + "@interactjs/snappers": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/snappers/-/snappers-1.10.17.tgz", + "integrity": "sha512-m753DGsNOts797e3zDT6wqELoc+BlpIC1w+TyMyISRxU6n1RlS8Q6LHBGgwAgV79LHLaahv/a5haFF9H1VG0FQ==", + "requires": { + "@interactjs/interact": "1.10.17" + } + }, + "@interactjs/types": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/types/-/types-1.10.17.tgz", + "integrity": "sha512-X2JpoM7xUw0p9Me0tMaI0HNfcF/Hd07ZZlzpnpEMpGerUZOLoyeThrV9P+CrBHxZrluWJrigJbcdqXliFd0YMA==" + }, + "@interactjs/utils": { + "version": "1.10.17", + "resolved": "https://registry.npmjs.org/@interactjs/utils/-/utils-1.10.17.tgz", + "integrity": "sha512-sZAW08CkqgvqRjUIaLRjScjObcCzN9D75yekLA21EClYAZIhi4A+GEt2z/WqOCOksTaEPLYmQyhkpXcboc0LhQ==" + }, + "@intlify/core-base": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz", + "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==", + "requires": { + "@intlify/devtools-if": "9.2.2", + "@intlify/message-compiler": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2" + } + }, + "@intlify/devtools-if": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz", + "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==", + "requires": { + "@intlify/shared": "9.2.2" + } + }, + "@intlify/message-compiler": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz", + "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==", + "requires": { + "@intlify/shared": "9.2.2", + "source-map": "0.6.1" + } + }, + "@intlify/shared": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz", + "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==" + }, + "@intlify/vue-devtools": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz", + "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==", + "requires": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2" + } + }, + "@lezer/common": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@lezer/common/-/common-1.0.1.tgz", + "integrity": "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==" + }, + "@lezer/highlight": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.1.2.tgz", + "integrity": "sha512-CAun1WR1glxG9ZdOokTZwXbcwB7PXkIEyZRUMFBVwSrhTcogWq634/ByNImrkUnQhjju6xsIaOBIxvcRJtplXQ==", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/javascript": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@lezer/javascript/-/javascript-1.0.2.tgz", + "integrity": "sha512-IjOVeIRhM8IuafWNnk+UzRz7p4/JSOKBNINLYLsdSGuJS9Ju7vFdc82AlTt0jgtV5D8eBZf4g0vK4d3ttBNz7A==", + "requires": { + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/lr": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@lezer/lr/-/lr-1.2.4.tgz", + "integrity": "sha512-L/52/oMJBFXXx8qBYF4UgktLP2geQ/qn5Fd8+5L/mqlLLCB9+qdKktFAtejd9FdFMaFx6lrP5rmLz4sN3Kplcg==", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/lodash": { + "version": "4.14.182", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", + "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==" + }, + "@types/lodash-es": { + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.6.tgz", + "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "requires": { + "@types/lodash": "*" + } + }, + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + }, + "@types/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@types/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==", + "dev": true + }, + "@types/sortablejs": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.13.0.tgz", + "integrity": "sha512-C3064MH72iEfeGCYEGCt7FCxXoAXaMPG0QPnstcxvPmbl54erpISu06d++FY37Smja64iWy5L8wOyHHBghWbJQ==", + "dev": true + }, + "@types/web-bluetooth": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.14.tgz", + "integrity": "sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.7.tgz", + "integrity": "sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.30.7", + "@typescript-eslint/type-utils": "5.30.7", + "@typescript-eslint/utils": "5.30.7", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.7.tgz", + "integrity": "sha512-Rg5xwznHWWSy7v2o0cdho6n+xLhK2gntImp0rJroVVFkcYFYQ8C8UJTSuTw/3CnExBmPjycjmUJkxVmjXsld6A==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.30.7", + "@typescript-eslint/types": "5.30.7", + "@typescript-eslint/typescript-estree": "5.30.7", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.7.tgz", + "integrity": "sha512-7BM1bwvdF1UUvt+b9smhqdc/eniOnCKxQT/kj3oXtj3LqnTWCAM0qHRHfyzCzhEfWX0zrW7KqXXeE4DlchZBKw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.30.7", + "@typescript-eslint/visitor-keys": "5.30.7" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.7.tgz", + "integrity": "sha512-nD5qAE2aJX/YLyKMvOU5jvJyku4QN5XBVsoTynFrjQZaDgDV6i7QHFiYCx10wvn7hFvfuqIRNBtsgaLe0DbWhw==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.30.7", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.7.tgz", + "integrity": "sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.7.tgz", + "integrity": "sha512-tNslqXI1ZdmXXrHER83TJ8OTYl4epUzJC0aj2i4DMDT4iU+UqLT3EJeGQvJ17BMbm31x5scSwo3hPM0nqQ1AEA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.30.7", + "@typescript-eslint/visitor-keys": "5.30.7", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.7.tgz", + "integrity": "sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.30.7", + "@typescript-eslint/types": "5.30.7", + "@typescript-eslint/typescript-estree": "5.30.7", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.7.tgz", + "integrity": "sha512-KrRXf8nnjvcpxDFOKej4xkD7657+PClJs5cJVSG7NNoCNnjEdc46juNAQt7AyuWctuCgs6mVRc1xGctEqrjxWw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.30.7", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@vitejs/plugin-vue": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz", + "integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==", + "dev": true + }, + "@vue/compiler-core": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz", + "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz", + "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==", + "requires": { + "@vue/compiler-core": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz", + "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.37", + "@vue/compiler-dom": "3.2.37", + "@vue/compiler-ssr": "3.2.37", + "@vue/reactivity-transform": "3.2.37", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-ssr": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz", + "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==", + "requires": { + "@vue/compiler-dom": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/devtools-api": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.2.1.tgz", + "integrity": "sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==" + }, + "@vue/reactivity": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz", + "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==", + "requires": { + "@vue/shared": "3.2.37" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz", + "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.37", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "@vue/runtime-core": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz", + "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==", + "requires": { + "@vue/reactivity": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/runtime-dom": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz", + "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==", + "requires": { + "@vue/runtime-core": "3.2.37", + "@vue/shared": "3.2.37", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.37.tgz", + "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==", + "requires": { + "@vue/compiler-ssr": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/shared": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz", + "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==" + }, + "@vueuse/core": { + "version": "8.9.4", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-8.9.4.tgz", + "integrity": "sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==", + "requires": { + "@types/web-bluetooth": "^0.0.14", + "@vueuse/metadata": "8.9.4", + "@vueuse/shared": "8.9.4", + "vue-demi": "*" + }, + "dependencies": { + "@vueuse/shared": { + "version": "8.9.4", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-8.9.4.tgz", + "integrity": "sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==", + "requires": { + "vue-demi": "*" + } + }, + "vue-demi": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.5.tgz", + "integrity": "sha512-tO3K2bML3AwiHmVHeKCq6HLef2st4zBXIV5aEkoJl6HZ+gJWxWv2O8wLH8qrA3SX3lDoTDHNghLX1xZg83MXvw==" + } + } + }, + "@vueuse/metadata": { + "version": "8.9.4", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-8.9.4.tgz", + "integrity": "sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==" + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "claygl": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/claygl/-/claygl-1.3.0.tgz", + "integrity": "sha512-+gGtJjT6SSHD2l2yC3MCubW/sCV40tZuSs5opdtn79vFSGUgp/lH139RNEQ6Jy078/L0aV8odCw8RSrUcMfLaQ==" + }, + "clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "countup.js": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.3.2.tgz", + "integrity": "sha512-dQ7F/CmKGjaO6cDfhtEXwsKVlXIpJ89dFs8PvkaZH9jBVJ2Z8GU4iwG/qP7MgY8qwr+1skbwR6qecWWQLUzB8Q==" + }, + "crelt": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/crelt/-/crelt-1.0.5.tgz", + "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==" + }, + "cropperjs": { + "version": "1.5.12", + "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.12.tgz", + "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" + }, + "dayjs": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.4.tgz", + "integrity": "sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dotenv": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", + "dev": true + }, + "echarts": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.3.tgz", + "integrity": "sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==", + "requires": { + "tslib": "2.3.0", + "zrender": "5.3.2" + } + }, + "echarts-gl": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/echarts-gl/-/echarts-gl-2.0.9.tgz", + "integrity": "sha512-oKeMdkkkpJGWOzjgZUsF41DOh6cMsyrGGXimbjK2l6Xeq/dBQu4ShG2w2Dzrs/1bD27b2pLTGSaUzouY191gzA==", + "requires": { + "claygl": "^1.2.1", + "zrender": "^5.1.1" + } + }, + "echarts-wordcloud": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/echarts-wordcloud/-/echarts-wordcloud-2.0.0.tgz", + "integrity": "sha512-K7l6pTklqdW7ZWzT/1CS0KhBSINr/cd7c5N1fVMzZMwLQHEwT7x+nivK7g5hkVh7WNcAv4Dn6/ZS5zMKRozC1g==" + }, + "element-plus": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.2.9.tgz", + "integrity": "sha512-jYbL0JkCdv95rkT6trZJjCAizLPySa0qcd2cgq+57SKQnCZAcNDDq4GbTuFRnNavdoeCJnuM3HIficTIUpsMOQ==", + "requires": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.0.6", + "@floating-ui/dom": "^0.5.4", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^8.7.5", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.1.2" + }, + "dependencies": { + "@popperjs/core": { + "version": "npm:@sxzz/popperjs-es@2.11.7", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" + } + } + }, + "element-resize-detector": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz", + "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", + "requires": { + "batch-processor": "1.0.0" + } + }, + "esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "requires": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "dev": true, + "optional": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", + "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "eslint-plugin-vue": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.2.0.tgz", + "integrity": "sha512-W2hc+NUXoce8sZtWgZ45miQTy6jNyuSdub5aZ1IBune4JDeAyzucYX0TzkrQ1jMO52sNUDYlCIHDoaNePe0p5g==", + "dev": true, + "requires": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "xml-name-validator": "^4.0.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "requires": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.16.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", + "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "requires": { + "delegate": "^3.1.2" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", + "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "jsplumb": { + "version": "2.15.6", + "resolved": "https://registry.npmjs.org/jsplumb/-/jsplumb-2.15.6.tgz", + "integrity": "sha512-sIpbpz5eMVM+vV+MQzFCidlaa1RsknrQs6LOTKYDjYUDdTAi2AN2bFi94TxB33TifcIsRNV1jebcaxg0tCoPzg==" + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash-unified": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.2.tgz", + "integrity": "sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pinia": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.16.tgz", + "integrity": "sha512-9/LMVO+/epny1NBfC77vnps4g3JRezxhhoF1xLUk8mZkUIxVnwfEAIRiAX8mYBTD/KCwZqnDMqXc8w3eU0FQGg==", + "requires": { + "@vue/devtools-api": "^6.1.4", + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.5.tgz", + "integrity": "sha512-tO3K2bML3AwiHmVHeKCq6HLef2st4zBXIV5aEkoJl6HZ+gJWxWv2O8wLH8qrA3SX3lDoTDHNghLX1xZg83MXvw==" + } + } + }, + "postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true + }, + "print-js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/print-js/-/print-js-1.6.0.tgz", + "integrity": "sha512-BfnOIzSKbqGRtO4o0rnj/K3681BSd2QUrsIZy/+WdCIugjIswjmx3lDEZpXB2ruGf9d4b3YNINri81+J0FsBWg==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qrcodejs2-fixes": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/qrcodejs2-fixes/-/qrcodejs2-fixes-0.0.2.tgz", + "integrity": "sha512-wMUXYMOixAEJlLnjk5MbLiFaz0gQObWYm/TIFWB5+j7sTY5gPyr09Cx1EpcLYbsgfFdN3wHjrKAhZofTuCBGhg==" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerator-runtime": { + "version": "0.13.10", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.0.tgz", + "integrity": "sha512-x4KsrCgwQ7ZJPcFA/SUu6QVcYlO7uRLfLAy0DSA4NS2eG8japdbpM50ToH7z4iObodRYOJ0soneF0iaQRJ6zhA==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "sass": { + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", + "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "screenfull": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-6.0.2.tgz", + "integrity": "sha512-AQdy8s4WhNvUZ6P8F6PB21tSPIYKniic+Ogx0AacBMjKP1GUHN2E9URxQHtCusiwxudnCKkdy4GrHXPPJSkCCw==" + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "simple-uploader.js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/simple-uploader.js/-/simple-uploader.js-0.6.0.tgz", + "integrity": "sha512-EXN+o+LD6PVnfzTq/usP8k8yYrI6wKrAx8e+fPcPLVzzttonkyn1KT+Ycx5JnPBSnp6lpiVhNG4JhDJucdPnhA==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "sortablejs": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", + "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "splitpanes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/splitpanes/-/splitpanes-3.1.1.tgz", + "integrity": "sha512-VUkxDJfIGSvTM/fm/+OSrx8ha9URwE/9B8FPvfzoBuAxVELIHBWpsfnJXIXv77zVwuex//QQL4kTU9SDBPeHjA==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "style-mod": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/style-mod/-/style-mod-4.0.0.tgz", + "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "vite": { + "version": "2.9.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.14.tgz", + "integrity": "sha512-P/UCjSpSMcE54r4mPak55hWAZPlyfS369svib/gpmz8/01L822lMPOJ/RYW6tLCe1RPvMvOsJ17erf55bKp4Hw==", + "dev": true, + "requires": { + "esbuild": "^0.14.27", + "fsevents": "~2.3.2", + "postcss": "^8.4.13", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + } + }, + "vue": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz", + "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==", + "requires": { + "@vue/compiler-dom": "3.2.37", + "@vue/compiler-sfc": "3.2.37", + "@vue/runtime-dom": "3.2.37", + "@vue/server-renderer": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "vue-clipboard3": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vue-clipboard3/-/vue-clipboard3-2.0.0.tgz", + "integrity": "sha512-Q9S7dzWGax7LN5iiSPcu/K1GGm2gcBBlYwmMsUc5/16N6w90cbKow3FnPmPs95sungns4yvd9/+JhbAznECS2A==", + "requires": { + "clipboard": "^2.0.6" + } + }, + "vue-codemirror": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/vue-codemirror/-/vue-codemirror-6.1.1.tgz", + "integrity": "sha512-rTAYo44owd282yVxKtJtnOi7ERAcXTeviwoPXjIc6K/IQYUsoDkzPvw/JDFtSP6T7Cz/2g3EHaEyeyaQCKoDMg==", + "requires": { + "@codemirror/commands": "6.x", + "@codemirror/language": "6.x", + "@codemirror/state": "6.x", + "@codemirror/view": "6.x" + } + }, + "vue-eslint-parser": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.0.3.tgz", + "integrity": "sha512-yL+ZDb+9T0ELG4VIFo/2anAOz8SvBdlqEnQnvJ3M7Scq56DvtjY0VY88bByRZB0D4J0u8olBcfrXTVONXsh4og==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "vue-grid-layout": { + "version": "3.0.0-beta1", + "resolved": "https://registry.npmjs.org/vue-grid-layout/-/vue-grid-layout-3.0.0-beta1.tgz", + "integrity": "sha512-MsW0yfYNtnAO/uDhfZvkP6effxSJxvhAFbIL37x6Rn3vW9xf0WHVefKaSbQMLpSq3mXnR6ut0pg2Cd5lqIIZzg==", + "requires": { + "@interactjs/actions": "^1.10.2", + "@interactjs/auto-start": "^1.10.2", + "@interactjs/dev-tools": "^1.10.2", + "@interactjs/interactjs": "^1.10.2", + "@interactjs/modifiers": "^1.10.2", + "element-resize-detector": "^1.2.1", + "mitt": "^2.1.0" + }, + "dependencies": { + "mitt": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-2.1.0.tgz", + "integrity": "sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==" + } + } + }, + "vue-i18n": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz", + "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==", + "requires": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2", + "@vue/devtools-api": "^6.2.1" + } + }, + "vue-router": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.2.tgz", + "integrity": "sha512-5BP1qXFncVRwgV/XnqzsKApdMjQPqWIpoUBdL1ynz8HyLxIX/UDAx7Ql2BjmA5CXT/p61JfZvkpiFWFpaqcfag==", + "requires": { + "@vue/devtools-api": "^6.1.4" + } + }, + "vue-simple-uploader": { + "version": "1.0.0-beta.5", + "resolved": "https://registry.npmjs.org/vue-simple-uploader/-/vue-simple-uploader-1.0.0-beta.5.tgz", + "integrity": "sha512-VJFQvYTqx8vd4OOAopafcHdRp25iBqUywbBDohpS+nLerUbotAfkH4WsCzaTWFFSF2PRLdbPX1yxijADxv+sGg==", + "requires": { + "simple-uploader.js": "^0.6.0" + } + }, + "vue-ueditor-wrap": { + "version": "3.0.8", + "resolved": "https://registry.npmmirror.com/vue-ueditor-wrap/-/vue-ueditor-wrap-3.0.8.tgz", + "integrity": "sha512-U1s30pKcz8rr6v2F2ivnomOf1vF1N+n+aNClas4jXfiEf4E5FEtNwkFJBugcyf2VTRFK0UVpx5WspX5nwmImYw==", + "requires": { + "@babel/runtime": "7.x" + } + }, + "w3c-keyname": { + "version": "2.2.6", + "resolved": "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz", + "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "zrender": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.2.tgz", + "integrity": "sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==", + "requires": { + "tslib": "2.3.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..d6fcd8d --- /dev/null +++ b/package.json @@ -0,0 +1,88 @@ +{ + "name": "vue-next-admin", + "version": "2.2.0", + "description": "vue3 vite next admin template", + "author": "lyt_20201208", + "license": "MIT", + "scripts": { + "dev": "vite --force", + "build": "vite build", + "lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/" + }, + "dependencies": { + "@codemirror/lang-javascript": "^6.1.1", + "@codemirror/theme-one-dark": "^6.1.0", + "@element-plus/icons-vue": "^2.0.6", + "axios": "^0.27.2", + "codemirror": "^6.0.1", + "countup.js": "^2.3.2", + "cropperjs": "^1.5.12", + "echarts": "^5.3.3", + "echarts-gl": "^2.0.9", + "echarts-wordcloud": "^2.0.0", + "element-plus": "^2.2.9", + "js-cookie": "^3.0.1", + "jsplumb": "^2.15.6", + "lodash": "^4.17.21", + "mitt": "^3.0.0", + "nprogress": "^0.2.0", + "pinia": "^2.0.16", + "print-js": "^1.6.0", + "qrcodejs2-fixes": "^0.0.2", + "screenfull": "^6.0.2", + "sortablejs": "^1.15.0", + "spark-md5": "^3.0.2", + "splitpanes": "^3.1.1", + "vue": "^3.2.37", + "vue-clipboard3": "^2.0.0", + "vue-codemirror": "^6.1.1", + "vue-grid-layout": "^3.0.0-beta1", + "vue-i18n": "^9.2.2", + "vue-router": "^4.1.2", + "vue-simple-uploader": "^1.0.0-beta.5", + "vue-ueditor-wrap": "^3.0.8" + }, + "devDependencies": { + "@types/node": "^18.0.6", + "@types/nprogress": "^0.2.0", + "@types/sortablejs": "^1.13.0", + "@typescript-eslint/eslint-plugin": "^5.30.7", + "@typescript-eslint/parser": "^5.30.7", + "@vitejs/plugin-vue": "^2.3.3", + "@vue/compiler-sfc": "^3.2.37", + "dotenv": "^16.0.1", + "eslint": "^8.20.0", + "eslint-plugin-vue": "^9.2.0", + "prettier": "^2.7.1", + "sass": "^1.53.0", + "sass-loader": "^13.0.2", + "typescript": "^4.7.4", + "vite": "^2.9.14", + "vue-eslint-parser": "^9.0.3" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ], + "bugs": { + "url": "https://gitee.com/lyt-top/vue-next-admin/issues" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">= 6.0.0" + }, + "keywords": [ + "vue", + "vue3", + "vuejs/vue-next", + "element-ui", + "element-plus", + "vue-next-admin", + "next-admin" + ], + "repository": { + "type": "git", + "url": "https://gitee.com/lyt-top/vue-next-admin.git" + } +} diff --git a/plugins.d.ts b/plugins.d.ts new file mode 100644 index 0000000..be0457a --- /dev/null +++ b/plugins.d.ts @@ -0,0 +1,4 @@ +declare module 'vue-grid-layout'; +declare module 'qrcodejs2-fixes'; +declare module 'splitpanes'; +declare module 'js-cookie'; diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..84d37604e35b1956d1c815a3653fbda31901c459 GIT binary patch literal 2462 zcmeH_OGuPa6vxk`QAX)NWwwYSW1NRG&co3nvV|1VMraWPZCckNf?8EtNj~zKuk2wd zmX^ju4|`5Jrf83mtZ3DusA%D)pu+EY`rprqGzYcGW#91g%AGsEbN}ajL?(PvQV4(7 zP)Pz&G7(t;w#W^{zVYC@SRd)6pC%HkC))3%icFHqBZxZUf2?!$NL9jZcx~_s=FBgj z@{v>te^usu;|m}I zBLl-7kV^dt67G*R<}t`kZj$Rzqt3e>efoh6j10p69qxR?A7hV{vmTO98<>$JhzyJj zD*Ot1#Be{r-4n(AW67X&*~k4&p51bzS3w3whA#A|Bhn)o-d(ZuNV%9n%6Ye71#&z^ z4wmb^qo|RM`+LA=yhkF#AZjc(GL+124(cTrDb2#~!Rp?poOA1P6a0hFiYCryy2KeT?+@7Nd_ z2KbtDS^jH^!*4DCo(0`Fvjj}4!H+G(1C|61rCmXvRAl&y3_FH`DdL + + + + + + + +
+ +
+ + + + diff --git a/public/js/ueditor/dialogs/attachment/attachment.css b/public/js/ueditor/dialogs/attachment/attachment.css new file mode 100644 index 0000000..9c61716 --- /dev/null +++ b/public/js/ueditor/dialogs/attachment/attachment.css @@ -0,0 +1,681 @@ +@charset "utf-8"; +/* dialog样式 */ +.wrapper { + zoom: 1; + width: 630px; + *width: 626px; + height: 380px; + margin: 0 auto; + padding: 10px; + position: relative; + font-family: sans-serif; +} + +/*tab样式框大小*/ +.tabhead { + float:left; +} +.tabbody { + width: 100%; + height: 346px; + position: relative; + clear: both; +} + +.tabbody .panel { + position: absolute; + width: 0; + height: 0; + background: #fff; + overflow: hidden; + display: none; +} + +.tabbody .panel.focus { + width: 100%; + height: 346px; + display: block; +} + +/* 上传附件 */ +.tabbody #upload.panel { + width: 0; + height: 0; + overflow: hidden; + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); + background: #fff; + display: block; +} + +.tabbody #upload.panel.focus { + width: 100%; + height: 346px; + display: block; + clip: auto; +} + +#upload .queueList { + margin: 0; + width: 100%; + height: 100%; + position: absolute; + overflow: hidden; +} + +#upload p { + margin: 0; +} + +.element-invisible { + width: 0 !important; + height: 0 !important; + border: 0; + padding: 0; + margin: 0; + overflow: hidden; + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); +} + +#upload .placeholder { + margin: 10px; + border: 2px dashed #e6e6e6; + *border: 0px dashed #e6e6e6; + height: 172px; + padding-top: 150px; + text-align: center; + background: url(./images/image.png) center 70px no-repeat; + color: #cccccc; + font-size: 18px; + position: relative; + top:0; + *top: 10px; +} + +#upload .placeholder .webuploader-pick { + font-size: 18px; + background: #00b7ee; + border-radius: 3px; + line-height: 44px; + padding: 0 30px; + *width: 120px; + color: #fff; + display: inline-block; + margin: 0 auto 20px auto; + cursor: pointer; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} + +#upload .placeholder .webuploader-pick-hover { + background: #00a2d4; +} + + +#filePickerContainer { + text-align: center; +} + +#upload .placeholder .flashTip { + color: #666666; + font-size: 12px; + position: absolute; + width: 100%; + text-align: center; + bottom: 20px; +} + +#upload .placeholder .flashTip a { + color: #0785d1; + text-decoration: none; +} + +#upload .placeholder .flashTip a:hover { + text-decoration: underline; +} + +#upload .placeholder.webuploader-dnd-over { + border-color: #999999; +} + +#upload .filelist { + list-style: none; + margin: 0; + padding: 0; + overflow-x: hidden; + overflow-y: auto; + position: relative; + height: 300px; +} + +#upload .filelist:after { + content: ''; + display: block; + width: 0; + height: 0; + overflow: hidden; + clear: both; +} + +#upload .filelist li { + width: 113px; + height: 113px; + background: url(./images/bg.png); + text-align: center; + margin: 9px 0 0 9px; + *margin: 6px 0 0 6px; + position: relative; + display: block; + float: left; + overflow: hidden; + font-size: 12px; +} + +#upload .filelist li p.log { + position: relative; + top: -45px; +} + +#upload .filelist li p.title { + position: absolute; + top: 0; + left: 0; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + top: 5px; + text-indent: 5px; + text-align: left; +} + +#upload .filelist li p.progress { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + height: 8px; + overflow: hidden; + z-index: 50; + margin: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: 0 0 0; +} + +#upload .filelist li p.progress span { + display: none; + overflow: hidden; + width: 0; + height: 100%; + background: #1483d8 url(./images/progress.png) repeat-x; + + -webit-transition: width 200ms linear; + -moz-transition: width 200ms linear; + -o-transition: width 200ms linear; + -ms-transition: width 200ms linear; + transition: width 200ms linear; + + -webkit-animation: progressmove 2s linear infinite; + -moz-animation: progressmove 2s linear infinite; + -o-animation: progressmove 2s linear infinite; + -ms-animation: progressmove 2s linear infinite; + animation: progressmove 2s linear infinite; + + -webkit-transform: translateZ(0); +} + +@-webkit-keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +@-moz-keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +@keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +#upload .filelist li p.imgWrap { + position: relative; + z-index: 2; + line-height: 113px; + vertical-align: middle; + overflow: hidden; + width: 113px; + height: 113px; + + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; + + -webit-transition: 200ms ease-out; + -moz-transition: 200ms ease-out; + -o-transition: 200ms ease-out; + -ms-transition: 200ms ease-out; + transition: 200ms ease-out; +} +#upload .filelist li p.imgWrap.notimage { + margin-top: 0; + width: 111px; + height: 111px; + border: 1px #eeeeee solid; +} +#upload .filelist li p.imgWrap.notimage i.file-preview { + margin-top: 15px; +} + +#upload .filelist li img { + width: 100%; +} + +#upload .filelist li p.error { + background: #f43838; + color: #fff; + position: absolute; + bottom: 0; + left: 0; + height: 28px; + line-height: 28px; + width: 100%; + z-index: 100; + display:none; +} + +#upload .filelist li .success { + display: block; + position: absolute; + left: 0; + bottom: 0; + height: 40px; + width: 100%; + z-index: 200; + background: url(./images/success.png) no-repeat right bottom; + background-image: url(./images/success.gif) \9; +} + +#upload .filelist li.filePickerBlock { + width: 113px; + height: 113px; + background: url(./images/image.png) no-repeat center 12px; + border: 1px solid #eeeeee; + border-radius: 0; +} +#upload .filelist li.filePickerBlock div.webuploader-pick { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + opacity: 0; + background: none; + font-size: 0; +} + +#upload .filelist div.file-panel { + position: absolute; + height: 0; + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#80000000', endColorstr='#80000000') \0; + background: rgba(0, 0, 0, 0.5); + width: 100%; + top: 0; + left: 0; + overflow: hidden; + z-index: 300; +} + +#upload .filelist div.file-panel span { + width: 24px; + height: 24px; + display: inline; + float: right; + text-indent: -9999px; + overflow: hidden; + background: url(./images/icons.png) no-repeat; + background: url(./images/icons.gif) no-repeat \9; + margin: 5px 1px 1px; + cursor: pointer; + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +#upload .filelist div.file-panel span.rotateLeft { + display:none; + background-position: 0 -24px; +} + +#upload .filelist div.file-panel span.rotateLeft:hover { + background-position: 0 0; +} + +#upload .filelist div.file-panel span.rotateRight { + display:none; + background-position: -24px -24px; +} + +#upload .filelist div.file-panel span.rotateRight:hover { + background-position: -24px 0; +} + +#upload .filelist div.file-panel span.cancel { + background-position: -48px -24px; +} + +#upload .filelist div.file-panel span.cancel:hover { + background-position: -48px 0; +} + +#upload .statusBar { + height: 45px; + border-bottom: 1px solid #dadada; + margin: 0 10px; + padding: 0; + line-height: 45px; + vertical-align: middle; + position: relative; +} + +#upload .statusBar .progress { + border: 1px solid #1483d8; + width: 198px; + background: #fff; + height: 18px; + position: absolute; + top: 12px; + display: none; + text-align: center; + line-height: 18px; + color: #6dbfff; + margin: 0 10px 0 0; +} +#upload .statusBar .progress span.percentage { + width: 0; + height: 100%; + left: 0; + top: 0; + background: #1483d8; + position: absolute; +} +#upload .statusBar .progress span.text { + position: relative; + z-index: 10; +} + +#upload .statusBar .info { + display: inline-block; + font-size: 14px; + color: #666666; +} + +#upload .statusBar .btns { + position: absolute; + top: 7px; + right: 0; + line-height: 30px; +} + +#filePickerBtn { + display: inline-block; + float: left; +} +#upload .statusBar .btns .webuploader-pick, +#upload .statusBar .btns .uploadBtn, +#upload .statusBar .btns .uploadBtn.state-uploading, +#upload .statusBar .btns .uploadBtn.state-paused { + background: #ffffff; + border: 1px solid #cfcfcf; + color: #565656; + padding: 0 18px; + display: inline-block; + border-radius: 3px; + margin-left: 10px; + cursor: pointer; + font-size: 14px; + float: left; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +#upload .statusBar .btns .webuploader-pick-hover, +#upload .statusBar .btns .uploadBtn:hover, +#upload .statusBar .btns .uploadBtn.state-uploading:hover, +#upload .statusBar .btns .uploadBtn.state-paused:hover { + background: #f0f0f0; +} + +#upload .statusBar .btns .uploadBtn, +#upload .statusBar .btns .uploadBtn.state-paused{ + background: #00b7ee; + color: #fff; + border-color: transparent; +} +#upload .statusBar .btns .uploadBtn:hover, +#upload .statusBar .btns .uploadBtn.state-paused:hover{ + background: #00a2d4; +} + +#upload .statusBar .btns .uploadBtn.disabled { + pointer-events: none; + filter:alpha(opacity=60); + -moz-opacity:0.6; + -khtml-opacity: 0.6; + opacity: 0.6; +} + + + +/* 图片管理样式 */ +#online { + width: 100%; + height: 336px; + padding: 10px 0 0 0; +} +#online #fileList{ + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: relative; +} +#online ul { + display: block; + list-style: none; + margin: 0; + padding: 0; +} +#online li { + float: left; + display: block; + list-style: none; + padding: 0; + width: 113px; + height: 113px; + margin: 0 0 9px 9px; + *margin: 0 0 6px 6px; + background-color: #eee; + overflow: hidden; + cursor: pointer; + position: relative; +} +#online li.clearFloat { + float: none; + clear: both; + display: block; + width:0; + height:0; + margin: 0; + padding: 0; +} +#online li img { + cursor: pointer; +} +#online li div.file-wrapper { + cursor: pointer; + position: absolute; + display: block; + width: 111px; + height: 111px; + border: 1px solid #eee; + background: url("./images/bg.png") repeat; +} +#online li div span.file-title{ + display: block; + padding: 0 3px; + margin: 3px 0 0 0; + font-size: 12px; + height: 15px; + color: #555555; + text-align: center; + width: 107px; + white-space: nowrap; + word-break: break-all; + overflow: hidden; + text-overflow: ellipsis; +} +#online li .icon { + cursor: pointer; + width: 113px; + height: 113px; + position: absolute; + top: 0; + left: 0; + z-index: 2; + border: 0; + background-repeat: no-repeat; +} +#online li .icon:hover { + width: 107px; + height: 107px; + border: 3px solid #1094fa; +} +#online li.selected .icon { + background-image: url(images/success.png); + background-image: url(images/success.gif) \9; + background-position: 75px 75px; +} +#online li.selected .icon:hover { + width: 107px; + height: 107px; + border: 3px solid #1094fa; + background-position: 72px 72px; +} + + +/* 在线文件的文件预览图标 */ +i.file-preview { + display: block; + margin: 10px auto; + width: 70px; + height: 70px; + background-image: url("./images/file-icons.png"); + background-image: url("./images/file-icons.gif") \9; + background-position: -140px center; + background-repeat: no-repeat; +} +i.file-preview.file-type-dir{ + background-position: 0 center; +} +i.file-preview.file-type-file{ + background-position: -140px center; +} +i.file-preview.file-type-filelist{ + background-position: -210px center; +} +i.file-preview.file-type-zip, +i.file-preview.file-type-rar, +i.file-preview.file-type-7z, +i.file-preview.file-type-tar, +i.file-preview.file-type-gz, +i.file-preview.file-type-bz2{ + background-position: -280px center; +} +i.file-preview.file-type-xls, +i.file-preview.file-type-xlsx{ + background-position: -350px center; +} +i.file-preview.file-type-doc, +i.file-preview.file-type-docx{ + background-position: -420px center; +} +i.file-preview.file-type-ppt, +i.file-preview.file-type-pptx{ + background-position: -490px center; +} +i.file-preview.file-type-vsd{ + background-position: -560px center; +} +i.file-preview.file-type-pdf{ + background-position: -630px center; +} +i.file-preview.file-type-txt, +i.file-preview.file-type-md, +i.file-preview.file-type-json, +i.file-preview.file-type-htm, +i.file-preview.file-type-xml, +i.file-preview.file-type-html, +i.file-preview.file-type-js, +i.file-preview.file-type-css, +i.file-preview.file-type-php, +i.file-preview.file-type-jsp, +i.file-preview.file-type-asp{ + background-position: -700px center; +} +i.file-preview.file-type-apk{ + background-position: -770px center; +} +i.file-preview.file-type-exe{ + background-position: -840px center; +} +i.file-preview.file-type-ipa{ + background-position: -910px center; +} +i.file-preview.file-type-mp4, +i.file-preview.file-type-swf, +i.file-preview.file-type-mkv, +i.file-preview.file-type-avi, +i.file-preview.file-type-flv, +i.file-preview.file-type-mov, +i.file-preview.file-type-mpg, +i.file-preview.file-type-mpeg, +i.file-preview.file-type-ogv, +i.file-preview.file-type-webm, +i.file-preview.file-type-rm, +i.file-preview.file-type-rmvb{ + background-position: -980px center; +} +i.file-preview.file-type-ogg, +i.file-preview.file-type-wav, +i.file-preview.file-type-wmv, +i.file-preview.file-type-mid, +i.file-preview.file-type-mp3{ + background-position: -1050px center; +} +i.file-preview.file-type-jpg, +i.file-preview.file-type-jpeg, +i.file-preview.file-type-gif, +i.file-preview.file-type-bmp, +i.file-preview.file-type-png, +i.file-preview.file-type-psd{ + background-position: -140px center; +} diff --git a/public/js/ueditor/dialogs/attachment/attachment.html b/public/js/ueditor/dialogs/attachment/attachment.html new file mode 100644 index 0000000..071fe71 --- /dev/null +++ b/public/js/ueditor/dialogs/attachment/attachment.html @@ -0,0 +1,60 @@ + + + + + ueditor图片对话框 + + + + + + + + + + + + + + +
+
+ + +
+
+ +
+
+
+
+ 0% + +
+
+
+
+
+
+
+
+
+
+
+
    +
  • +
+
+
+ + +
+
+
+ +
+
+ + + + diff --git a/public/js/ueditor/dialogs/attachment/attachment.js b/public/js/ueditor/dialogs/attachment/attachment.js new file mode 100644 index 0000000..5e73d5e --- /dev/null +++ b/public/js/ueditor/dialogs/attachment/attachment.js @@ -0,0 +1,760 @@ +/** + * User: Jinqn + * Date: 14-04-08 + * Time: 下午16:34 + * 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片 + */ + +(function () { + + var uploadFile, + onlineFile; + + window.onload = function () { + initTabs(); + initButtons(); + }; + + /* 初始化tab标签 */ + function initTabs() { + var tabs = $G('tabhead').children; + for (var i = 0; i < tabs.length; i++) { + domUtils.on(tabs[i], "click", function (e) { + var target = e.target || e.srcElement; + setTabFocus(target.getAttribute('data-content-id')); + }); + } + + setTabFocus('upload'); + } + + /* 初始化tabbody */ + function setTabFocus(id) { + if(!id) return; + var i, bodyId, tabs = $G('tabhead').children; + for (i = 0; i < tabs.length; i++) { + bodyId = tabs[i].getAttribute('data-content-id') + if (bodyId == id) { + domUtils.addClass(tabs[i], 'focus'); + domUtils.addClass($G(bodyId), 'focus'); + } else { + domUtils.removeClasses(tabs[i], 'focus'); + domUtils.removeClasses($G(bodyId), 'focus'); + } + } + switch (id) { + case 'upload': + uploadFile = uploadFile || new UploadFile('queueList'); + break; + case 'online': + onlineFile = onlineFile || new OnlineFile('fileList'); + break; + } + } + + /* 初始化onok事件 */ + function initButtons() { + + dialog.onok = function () { + var list = [], id, tabs = $G('tabhead').children; + for (var i = 0; i < tabs.length; i++) { + if (domUtils.hasClass(tabs[i], 'focus')) { + id = tabs[i].getAttribute('data-content-id'); + break; + } + } + + switch (id) { + case 'upload': + list = uploadFile.getInsertList(); + var count = uploadFile.getQueueCount(); + if (count) { + $('.info', '#queueList').html('' + '还有2个未上传文件'.replace(/[\d]/, count) + ''); + return false; + } + break; + case 'online': + list = onlineFile.getInsertList(); + break; + } + + editor.execCommand('insertfile', list); + }; + } + + + /* 上传附件 */ + function UploadFile(target) { + this.$wrap = target.constructor == String ? $('#' + target) : $(target); + this.init(); + } + UploadFile.prototype = { + init: function () { + this.fileList = []; + this.initContainer(); + this.initUploader(); + }, + initContainer: function () { + this.$queue = this.$wrap.find('.filelist'); + }, + /* 初始化容器 */ + initUploader: function () { + var _this = this, + $ = jQuery, // just in case. Make sure it's not an other libaray. + $wrap = _this.$wrap, + // 图片容器 + $queue = $wrap.find('.filelist'), + // 状态栏,包括进度和控制按钮 + $statusBar = $wrap.find('.statusBar'), + // 文件总体选择信息。 + $info = $statusBar.find('.info'), + // 上传按钮 + $upload = $wrap.find('.uploadBtn'), + // 上传按钮 + $filePickerBtn = $wrap.find('.filePickerBtn'), + // 上传按钮 + $filePickerBlock = $wrap.find('.filePickerBlock'), + // 没选择文件之前的内容。 + $placeHolder = $wrap.find('.placeholder'), + // 总体进度条 + $progress = $statusBar.find('.progress').hide(), + // 添加的文件数量 + fileCount = 0, + // 添加的文件总大小 + fileSize = 0, + // 优化retina, 在retina下这个值是2 + ratio = window.devicePixelRatio || 1, + // 缩略图大小 + thumbnailWidth = 113 * ratio, + thumbnailHeight = 113 * ratio, + // 可能有pedding, ready, uploading, confirm, done. + state = '', + // 所有文件的进度信息,key为file id + percentages = {}, + supportTransition = (function () { + var s = document.createElement('p').style, + r = 'transition' in s || + 'WebkitTransition' in s || + 'MozTransition' in s || + 'msTransition' in s || + 'OTransition' in s; + s = null; + return r; + })(), + // WebUploader实例 + uploader, + actionUrl = editor.getActionUrl(editor.getOpt('fileActionName')), + fileMaxSize = editor.getOpt('fileMaxSize'), + acceptExtensions = (editor.getOpt('fileAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, '');; + + if (!WebUploader.Uploader.support()) { + $('#filePickerReady').after($('
').html(lang.errorNotSupport)).hide(); + return; + } else if (!editor.getOpt('fileActionName')) { + $('#filePickerReady').after($('
').html(lang.errorLoadConfig)).hide(); + return; + } + + uploader = _this.uploader = WebUploader.create({ + pick: { + id: '#filePickerReady', + label: lang.uploadSelectFile + }, + swf: '../../third-party/webuploader/Uploader.swf', + server: actionUrl, + fileVal: editor.getOpt('fileFieldName'), + duplicate: true, + fileSingleSizeLimit: fileMaxSize, + compress: false + }); + uploader.addButton({ + id: '#filePickerBlock' + }); + uploader.addButton({ + id: '#filePickerBtn', + label: lang.uploadAddFile + }); + + setState('pedding'); + + // 当有文件添加进来时执行,负责view的创建 + function addFile(file) { + var $li = $('
  • ' + + '

    ' + file.name + '

    ' + + '

    ' + + '

    ' + + '
  • '), + + $btns = $('
    ' + + '' + lang.uploadDelete + '' + + '' + lang.uploadTurnRight + '' + + '' + lang.uploadTurnLeft + '
    ').appendTo($li), + $prgress = $li.find('p.progress span'), + $wrap = $li.find('p.imgWrap'), + $info = $('

    ').hide().appendTo($li), + + showError = function (code) { + switch (code) { + case 'exceed_size': + text = lang.errorExceedSize; + break; + case 'interrupt': + text = lang.errorInterrupt; + break; + case 'http': + text = lang.errorHttp; + break; + case 'not_allow_type': + text = lang.errorFileType; + break; + default: + text = lang.errorUploadRetry; + break; + } + $info.text(text).show(); + }; + + if (file.getStatus() === 'invalid') { + showError(file.statusText); + } else { + $wrap.text(lang.uploadPreview); + if ('|png|jpg|jpeg|bmp|gif|'.indexOf('|'+file.ext.toLowerCase()+'|') == -1) { + $wrap.empty().addClass('notimage').append('' + + '' + file.name + ''); + } else { + if (browser.ie && browser.version <= 7) { + $wrap.text(lang.uploadNoPreview); + } else { + uploader.makeThumb(file, function (error, src) { + if (error || !src) { + $wrap.text(lang.uploadNoPreview); + } else { + var $img = $(''); + $wrap.empty().append($img); + $img.on('error', function () { + $wrap.text(lang.uploadNoPreview); + }); + } + }, thumbnailWidth, thumbnailHeight); + } + } + percentages[ file.id ] = [ file.size, 0 ]; + file.rotation = 0; + + /* 检查文件格式 */ + if (!file.ext || acceptExtensions.indexOf(file.ext.toLowerCase()) == -1) { + showError('not_allow_type'); + uploader.removeFile(file); + } + } + + file.on('statuschange', function (cur, prev) { + if (prev === 'progress') { + $prgress.hide().width(0); + } else if (prev === 'queued') { + $li.off('mouseenter mouseleave'); + $btns.remove(); + } + // 成功 + if (cur === 'error' || cur === 'invalid') { + showError(file.statusText); + percentages[ file.id ][ 1 ] = 1; + } else if (cur === 'interrupt') { + showError('interrupt'); + } else if (cur === 'queued') { + percentages[ file.id ][ 1 ] = 0; + } else if (cur === 'progress') { + $info.hide(); + $prgress.css('display', 'block'); + } else if (cur === 'complete') { + } + + $li.removeClass('state-' + prev).addClass('state-' + cur); + }); + + $li.on('mouseenter', function () { + $btns.stop().animate({height: 30}); + }); + $li.on('mouseleave', function () { + $btns.stop().animate({height: 0}); + }); + + $btns.on('click', 'span', function () { + var index = $(this).index(), + deg; + + switch (index) { + case 0: + uploader.removeFile(file); + return; + case 1: + file.rotation += 90; + break; + case 2: + file.rotation -= 90; + break; + } + + if (supportTransition) { + deg = 'rotate(' + file.rotation + 'deg)'; + $wrap.css({ + '-webkit-transform': deg, + '-mos-transform': deg, + '-o-transform': deg, + 'transform': deg + }); + } else { + $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')'); + } + + }); + + $li.insertBefore($filePickerBlock); + } + + // 负责view的销毁 + function removeFile(file) { + var $li = $('#' + file.id); + delete percentages[ file.id ]; + updateTotalProgress(); + $li.off().find('.file-panel').off().end().remove(); + } + + function updateTotalProgress() { + var loaded = 0, + total = 0, + spans = $progress.children(), + percent; + + $.each(percentages, function (k, v) { + total += v[ 0 ]; + loaded += v[ 0 ] * v[ 1 ]; + }); + + percent = total ? loaded / total : 0; + + spans.eq(0).text(Math.round(percent * 100) + '%'); + spans.eq(1).css('width', Math.round(percent * 100) + '%'); + updateStatus(); + } + + function setState(val, files) { + + if (val != state) { + + var stats = uploader.getStats(); + + $upload.removeClass('state-' + state); + $upload.addClass('state-' + val); + + switch (val) { + + /* 未选择文件 */ + case 'pedding': + $queue.addClass('element-invisible'); + $statusBar.addClass('element-invisible'); + $placeHolder.removeClass('element-invisible'); + $progress.hide(); $info.hide(); + uploader.refresh(); + break; + + /* 可以开始上传 */ + case 'ready': + $placeHolder.addClass('element-invisible'); + $queue.removeClass('element-invisible'); + $statusBar.removeClass('element-invisible'); + $progress.hide(); $info.show(); + $upload.text(lang.uploadStart); + uploader.refresh(); + break; + + /* 上传中 */ + case 'uploading': + $progress.show(); $info.hide(); + $upload.text(lang.uploadPause); + break; + + /* 暂停上传 */ + case 'paused': + $progress.show(); $info.hide(); + $upload.text(lang.uploadContinue); + break; + + case 'confirm': + $progress.show(); $info.hide(); + $upload.text(lang.uploadStart); + + stats = uploader.getStats(); + if (stats.successNum && !stats.uploadFailNum) { + setState('finish'); + return; + } + break; + + case 'finish': + $progress.hide(); $info.show(); + if (stats.uploadFailNum) { + $upload.text(lang.uploadRetry); + } else { + $upload.text(lang.uploadStart); + } + break; + } + + state = val; + updateStatus(); + + } + + if (!_this.getQueueCount()) { + $upload.addClass('disabled') + } else { + $upload.removeClass('disabled') + } + + } + + function updateStatus() { + var text = '', stats; + + if (state === 'ready') { + text = lang.updateStatusReady.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize)); + } else if (state === 'confirm') { + stats = uploader.getStats(); + if (stats.uploadFailNum) { + text = lang.updateStatusConfirm.replace('_', stats.successNum).replace('_', stats.successNum); + } + } else { + stats = uploader.getStats(); + text = lang.updateStatusFinish.replace('_', fileCount). + replace('_KB', WebUploader.formatSize(fileSize)). + replace('_', stats.successNum); + + if (stats.uploadFailNum) { + text += lang.updateStatusError.replace('_', stats.uploadFailNum); + } + } + + $info.html(text); + } + + uploader.on('fileQueued', function (file) { + if (file.ext && acceptExtensions.indexOf(file.ext.toLowerCase()) != -1 && file.size <= fileMaxSize) { + fileCount++; + fileSize += file.size; + } + + if (fileCount === 1) { + $placeHolder.addClass('element-invisible'); + $statusBar.show(); + } + + addFile(file); + }); + + uploader.on('fileDequeued', function (file) { + if (file.ext && acceptExtensions.indexOf(file.ext.toLowerCase()) != -1 && file.size <= fileMaxSize) { + fileCount--; + fileSize -= file.size; + } + + removeFile(file); + updateTotalProgress(); + }); + + uploader.on('filesQueued', function (file) { + if (!uploader.isInProgress() && (state == 'pedding' || state == 'finish' || state == 'confirm' || state == 'ready')) { + setState('ready'); + } + updateTotalProgress(); + }); + + uploader.on('all', function (type, files) { + switch (type) { + case 'uploadFinished': + setState('confirm', files); + break; + case 'startUpload': + /* 添加额外的GET参数 */ + var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + 'encode=utf-8&' + params); + uploader.option('server', url); + setState('uploading', files); + break; + case 'stopUpload': + setState('paused', files); + break; + } + }); + + uploader.on('uploadBeforeSend', function (file, data, header) { + //这里可以通过data对象添加POST参数 + if (actionUrl.toLowerCase().indexOf('jsp') != -1) { + header['X_Requested_With'] = 'XMLHttpRequest'; + } + }); + + uploader.on('uploadProgress', function (file, percentage) { + var $li = $('#' + file.id), + $percent = $li.find('.progress span'); + + $percent.css('width', percentage * 100 + '%'); + percentages[ file.id ][ 1 ] = percentage; + updateTotalProgress(); + }); + + uploader.on('uploadSuccess', function (file, ret) { + var $file = $('#' + file.id); + try { + var responseText = (ret._raw || ret), + json = utils.str2json(responseText); + if (json.state == 'SUCCESS') { + _this.fileList.push(json); + $file.append(''); + } else { + $file.find('.error').text(json.state).show(); + } + } catch (e) { + $file.find('.error').text(lang.errorServerUpload).show(); + } + }); + + uploader.on('uploadError', function (file, code) { + }); + uploader.on('error', function (code, file) { + if (code == 'Q_TYPE_DENIED' || code == 'F_EXCEED_SIZE') { + addFile(file); + } + }); + uploader.on('uploadComplete', function (file, ret) { + }); + + $upload.on('click', function () { + if ($(this).hasClass('disabled')) { + return false; + } + + if (state === 'ready') { + uploader.upload(); + } else if (state === 'paused') { + uploader.upload(); + } else if (state === 'uploading') { + uploader.stop(); + } + }); + + $upload.addClass('state-' + state); + updateTotalProgress(); + }, + getQueueCount: function () { + var file, i, status, readyFile = 0, files = this.uploader.getFiles(); + for (i = 0; file = files[i++]; ) { + status = file.getStatus(); + if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++; + } + return readyFile; + }, + getInsertList: function () { + var i, link, data, list = [], + prefix = editor.getOpt('fileUrlPrefix'); + for (i = 0; i < this.fileList.length; i++) { + data = this.fileList[i]; + link = data.url; + list.push({ + title: data.original || link.substr(link.lastIndexOf('/') + 1), + url: prefix + link + }); + } + return list; + } + }; + + + /* 在线附件 */ + function OnlineFile(target) { + this.container = utils.isString(target) ? document.getElementById(target) : target; + this.init(); + } + OnlineFile.prototype = { + init: function () { + this.initContainer(); + this.initEvents(); + this.initData(); + }, + /* 初始化容器 */ + initContainer: function () { + this.container.innerHTML = ''; + this.list = document.createElement('ul'); + this.clearFloat = document.createElement('li'); + + domUtils.addClass(this.list, 'list'); + domUtils.addClass(this.clearFloat, 'clearFloat'); + + this.list.appendChild(this.clearFloat); + this.container.appendChild(this.list); + }, + /* 初始化滚动事件,滚动到地步自动拉取数据 */ + initEvents: function () { + var _this = this; + + /* 滚动拉取图片 */ + domUtils.on($G('fileList'), 'scroll', function(e){ + var panel = this; + if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) { + _this.getFileData(); + } + }); + /* 选中图片 */ + domUtils.on(this.list, 'click', function (e) { + var target = e.target || e.srcElement, + li = target.parentNode; + + if (li.tagName.toLowerCase() == 'li') { + if (domUtils.hasClass(li, 'selected')) { + domUtils.removeClasses(li, 'selected'); + } else { + domUtils.addClass(li, 'selected'); + } + } + }); + }, + /* 初始化第一次的数据 */ + initData: function () { + + /* 拉取数据需要使用的值 */ + this.state = 0; + this.listSize = editor.getOpt('fileManagerListSize'); + this.listIndex = 0; + this.listEnd = false; + + /* 第一次拉取数据 */ + this.getFileData(); + }, + /* 向后台拉取图片列表数据 */ + getFileData: function () { + var _this = this; + + if(!_this.listEnd && !this.isLoadingData) { + this.isLoadingData = true; + ajax.request(editor.getActionUrl(editor.getOpt('fileManagerActionName')), { + timeout: 100000, + data: utils.extend({ + start: this.listIndex, + size: this.listSize + }, editor.queryCommandValue('serverparam')), + method: 'get', + onsuccess: function (r) { + try { + var json = eval('(' + r.responseText + ')'); + if (json.state == 'SUCCESS') { + _this.pushData(json.list); + _this.listIndex = parseInt(json.start) + parseInt(json.list.length); + if(_this.listIndex >= json.total) { + _this.listEnd = true; + } + _this.isLoadingData = false; + } + } catch (e) { + if(r.responseText.indexOf('ue_separate_ue') != -1) { + var list = r.responseText.split(r.responseText); + _this.pushData(list); + _this.listIndex = parseInt(list.length); + _this.listEnd = true; + _this.isLoadingData = false; + } + } + }, + onerror: function () { + _this.isLoadingData = false; + } + }); + } + }, + /* 添加图片到列表界面上 */ + pushData: function (list) { + var i, item, img, filetype, preview, icon, _this = this, + urlPrefix = editor.getOpt('fileManagerUrlPrefix'); + for (i = 0; i < list.length; i++) { + if(list[i] && list[i].url) { + item = document.createElement('li'); + icon = document.createElement('span'); + filetype = list[i].url.substr(list[i].url.lastIndexOf('.') + 1); + + if ( "png|jpg|jpeg|gif|bmp".indexOf(filetype) != -1 ) { + preview = document.createElement('img'); + domUtils.on(preview, 'load', (function(image){ + return function(){ + _this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight); + }; + })(preview)); + preview.width = 113; + preview.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) ); + } else { + var ic = document.createElement('i'), + textSpan = document.createElement('span'); + textSpan.innerHTML = list[i].url.substr(list[i].url.lastIndexOf('/') + 1); + preview = document.createElement('div'); + preview.appendChild(ic); + preview.appendChild(textSpan); + domUtils.addClass(preview, 'file-wrapper'); + domUtils.addClass(textSpan, 'file-title'); + domUtils.addClass(ic, 'file-type-' + filetype); + domUtils.addClass(ic, 'file-preview'); + } + domUtils.addClass(icon, 'icon'); + item.setAttribute('data-url', urlPrefix + list[i].url); + if (list[i].original) { + item.setAttribute('data-title', list[i].original); + } + + item.appendChild(preview); + item.appendChild(icon); + this.list.insertBefore(item, this.clearFloat); + } + } + }, + /* 改变图片大小 */ + scale: function (img, w, h, type) { + var ow = img.width, + oh = img.height; + + if (type == 'justify') { + if (ow >= oh) { + img.width = w; + img.height = h * oh / ow; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w * ow / oh; + img.height = h; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + } else { + if (ow >= oh) { + img.width = w * ow / oh; + img.height = h; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w; + img.height = h * oh / ow; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + } + }, + getInsertList: function () { + var i, lis = this.list.children, list = []; + for (i = 0; i < lis.length; i++) { + if (domUtils.hasClass(lis[i], 'selected')) { + var url = lis[i].getAttribute('data-url'); + var title = lis[i].getAttribute('data-title') || url.substr(url.lastIndexOf('/') + 1); + list.push({ + title: title, + url: url + }); + } + } + return list; + } + }; + + +})(); diff --git a/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif b/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ca4fb6a23c7ed528374426575c3e7f67730cfb7 GIT binary patch literal 923 zcmcJOy=xR;49270U`4Q~ICz36hzbru@Ut$0C6w

    O|E|nVb+VhLPxFEtyI^j`FqLyNd0EWpleq^){o+_2ylTHaqGF zO<^H5(sh%@qktPU&w(pp9-3Gs((CnPZEbBZ81Rip*?#=*AAA0G)`@(VL$#^?6S8qi z-Vg0MaQMyXC!K9~zh3K)&rGar-!b{?e)rh3&E1`oQ)AtaFLu8>vh-!*#^>7|90SDQAhmyv(gsfKv~ literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_default.png b/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_default.png new file mode 100644 index 0000000000000000000000000000000000000000..50ac1cb1654c147225f6c99f98fa820d8b1d47d3 GIT binary patch literal 841 zcmV-P1GfB$P)co5FHFQKPb3$yKB3yz3uJ2{(i*w{Y&32Y&5pHX#fNS%^lB?7Jx7e!!R@$ zW0V*MWri^ri!cCJuK&9D^Ig~)02-}VrVlRsat{^*C5gDx3qnV6$+=~+!PF21FkmZ@ z8b~H%=~Nv3aQ@;fylx>sluRWqyg8GMN5*##@7VOdNHQ%N3Cf&vJG&}(BO_ z0GI~5dh^d~zu)gPH#)1!5T+sR()iww-#)pz`cI)Sn%1`>N($3(G-m*$wuS~`$(U{O z3G;I( z%j~rr>P1P%W??GsP=NTpKmX&MwYt}DZ~eRS;O_04GsmW;j~~@ibUGeLsHM{BJj|YC8%N`o7<+Z@C+_!oGc#1Cx`LO0hUGI$B7llhKIN?RNhM@52iI TG@H!B00000NkvXXu0mjfSaX$T literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif b/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif new file mode 100644 index 0000000000000000000000000000000000000000..206fede4ee7495c3d4fa8dbbb76425e23566e9cc GIT binary patch literal 1012 zcmW+#T};hk7=Mn8YGYk-BW7+*XP!uF(_J6BXv?Neo2k~53o+@FE|ATt^)Y4hQe0@P zSYMk?afGon-bF^G(&-43w{{O_}gnhA@5fnj7M8-aCj50=y zVPnWvS{tp57Ngl{vQ4FpQbvhUY!um9(MFUJF~Ua3uCg|)42xklOh7WE4Jkunhz+3t zHlTrpWlWRhu}^6&TC>(YQGFd~m#uKGjDYE`Ri%LWZD&tI*hU=i4-s$()c}KNsKh9AfEd_-1{T@mY#TKmi;xWx{y>Y0S(uP3>_P>aLM((F zku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf>M0Of&)Odu8AxQWGEh;Aa zaoAj)d)uaSLL0Ml6+7z$ZBuu$v#U-V_6Uwci{yy5H*s`WUt=M+p zn)~SevRiXicW3`B{d+b3x9iEs+fRYf&nr{kgLA)De=Y{eT~yySb+dP(rDxFpb)})X z_j>E&!pg?wKmecq_T{xM7^R)ifIlLFD0GNA!!9O99O)|$T@5?_qRt;vFf&kn_)FW? z_`GnRYjoh$4o~IE$IRoKH*V=YJ>#wBrOt`{dF~IT+>(|Pf8s;e(6dXaz8IS9e|j*t z=3Q*=kAlHxo(+-b@~2-GW_ZFWttoKza)`U8q34AEw<{?<%ICf3>%N_l-tOzE_U8}Q z7oYS!sEM2(ic1;U<#{}~=FT^Xy5lXG?+$z3UwdQvQQ7pP6mQ9-w=|Y>&o0$8Wu0G{ isn`^mx;yvvmFWdDjr#c zLa{?BIQR=Hso)@-gFi5$h(?e?1}9O3!1?a`KX}6zj=OvJ-n-BDNC6L6Km!tBLTo}4 zi^J?j?#VEBbr*N!T4rW$>LzYT7A&f{s;jsnNwHVVMP0-N6NB+4N|K{}~ZKoJoX!9fm} zBM(~o#KEm(O)!!sOVVPE zi-}EWVsRKLD07CIi5XHK*D_Nz6;q^KvS3lvL`*>SB*k8X8pJ?(^n)}xO*^QcB&d+A z2}aUn$yV~Ua!;X@Eadx`Qv~8*!H*R z1Jb}XTM)URaq3M_BZ+<>;dB>fia`oDqncq{}&s`b$QtO-@+w}C? z;Nq!~gPU6~Dz(9{-TvCj!(Htg`{x(uCg+CR6V+R1T7A<43$vfP-MtrguipE)w!F3Z LqusxL9gh72jO~@^ literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_mp3.gif b/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_mp3.gif new file mode 100644 index 0000000000000000000000000000000000000000..b351a1f2a294cd0f8e145e20c2c455a38cad2001 GIT binary patch literal 986 zcmW+#OGuPa6h7I6wK1usMoI`3X2DsMWI-EEY2_v@7Zr3CQ7Q#xDA5CHkz|Fbmn^6$ zdu+7Vn5dzZIN3$9%xdyg;HxyPQD@YdxqbJ)yTdu>d!7H!$V}gndN`J1DL`cG)5a)c z#27Y)Y^Al)%4ji~jV9Yv+9+j|7{x}BofU0F84)9FgzPG7!^*H2X2S#|L)wrsB!<`! z3Sa{oSXjn1Sswe8)}l3QO_mmwQd)^ttQA=mXo}JzT38ENQJ7_=Sv0d|f<~-rQkp~) zYXU1&0}P^}60*<(F|Yv*EG&~XWNSQ8ij^Yk545O6l&})AcA)}I7R9WX;2xqdt4I{F zBG^M7kcn-?0sjyIhfobLh=xjxLI;R}4QODIP0qGaFXe8ekBOO~`@{5Ca>~WKU$L(MF9&xEO+jKhUCL zvLA=d)w#EAIw!O-J6Ex@PS7@WCp)|9#9@!%IJ8KPXnPY!hXr<^@j2j12oIh>6$*ux zmKHCUe`={p) zzwLH7IG43C5ubkIf@>L!QZh8)kBB8&*+5TM#qX_8Xe$_MO>#wd-P&_}=vih>^_H5o zg)25>S3JtEd6gfXvF(myC5ih_CjpcNI+~ z1pOIXrw&{QB)mA-kn*SH)JW$*yOgGMLYik+JFZE literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif b/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif new file mode 100644 index 0000000000000000000000000000000000000000..26019b099d96b382a549fa383bd81315cd6d295c GIT binary patch literal 1001 zcmW+#TS!$=5S_p%q=$ihRGNrTSo%=|Wl4e&+5@B?2{ojLOjtg`N-j#~hfj#Gq+|;c z1QiB~BHGowB$g7jg(4^`Me}B48Di?a>h-!?`^?{*nOU>entf7Fq$C_VA4Xy1Co(p) zG0GS*hK(VcX>GJJT8w6+$rhD1N*N_au~B4uMH^8@#0VQ9JIdOyGAxGKFagPsHlz%R zAvS~r*nkEWhS5!Sj}4`@Xw6!aU5iX9twbx?{nprb}BStkT zO`?f4VJlbz45Yylv{1uhU;`Rh7$z&o<_J-Wl_IMTYmtd4VI^ecf(42!idiv1JxHNf zktkwCkOx0N6VtE*`auE;!5Uy74VGvH4=e^Ypn*l!Ia@}KU=gxLLLb&5V-_a(3b|l` zq7VzgM>q`wzzgj#8fsxB`~Xc%!wztQU?>D@fPpk7K?^*v7}$U&dm`J7GI9jrVlWc= zuofAUeH_+T=iavHoY30rT*dY}MqAe%@9d~!hdqL$&>}gc?M)mW7TAHtbHJ5g9yDRq z>S{0;TyY}M*Vot6)8lr#T`pI4`I8-K72A??<5Dl2EUe#KI(V?&yF0V`db_uxXX^Rz z{QI%#(Z9>f%S*wPz|x|BVSa9Ic6KEYSoHh-KA&&Fe)u^#IX*TvFficpcse>dT3TA_ z>guYhs_^uqmqOM+D8+#T{)jN5^@G%z>rH7pmwaOa4-`fm zE=u|sx$)W6D9^QNYQOk2Ei$$y(D*5)bJOYc8&k)--#thlPjXH4*Z#?Ajc?BX_V%)O z-Hhrk`u?>s=KkG>N6UP#n-Uv}+Y;`Tt<9{xw0UQ5$-=Lp($B3;TPuST`-(SY?4K+P X4d%*-doJfz=*#Bpp_0z7a!ULUk{Ai+ literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_pdf.gif b/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_pdf.gif new file mode 100644 index 0000000000000000000000000000000000000000..bbb65c837dea9a6c28d6209ca1b1140a37988423 GIT binary patch literal 996 zcmW+#OGuPa6h47kZE6CejXiWDMGNUrrnSm4q(vaKDU@n)7n&%QMHv`Ts}dJNaY1Jm z1%)xttY%cue2lg@;j0pL1`5YVHoj^e%{0#KyZ>4JhjY$%zVAEtzgSgyy6lFFT$Cg- zHpCchj53CeA)AR9(MFUJHbSmT8mbqSu|M|C@L*ViDFS?Nuiguuo7lr0!NGr zX(1)VLf8t{00U{T1TECC7}$UY7KX_RvN=L&&03SyhqcI*(u%brD;F$KWTlxk6V!tg zdNnCctO@eq2WVm%c0fN!Kp|KI45Yylt>A&hzy>t1$U0}s$Pug*StFqjYmqT4Cin`u zV1c3{Rs;3ry4U%$;nF- zrBbn2EEn{ief)z6-Jp;EBfd`ky_8jVeTK&hz2O8aFtv^S73*9B2zWtF;HMPE?f}2k=uA(oM PSLc_Xzst?bp)>yhr3M#0 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif b/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif new file mode 100644 index 0000000000000000000000000000000000000000..ccb26fbebdff5521eab7418d22e99fbae6c1d08c GIT binary patch literal 1001 zcmW+#TS$~q5FViig{X~sv5e>~C`M52PqY*C`39biRR&OdL%%zX2G-<*@4v2#=EF&o(^Or%XH zt)_scWI{;6Qjn1g7AUfi%#sP} zK?=Q+gd~;(dGG@?F%3JQA0(gc0k$hWT1#y8Q>U^EiJ(_cNaAO=Ed9XQ}e*ob1A$rqR0<`46gx0%!XIm#cEx9b24x9#1v-6J4L2;{%(Yx0E;vP_|dsDD=Bqr6K zlHm7+$8t;U2TSW-{OnCS>CRfYv7yHk`q$jys&5*5AI!X%Ro!^Ls4C>TvM3?g5=?S; dtLf~)4_`YgyED9bxo14v@(;Dvr3@ER+J8}<4t)Rs literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif b/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e8743a2705b98b9c546c28c97fe724dd4668b16 GIT binary patch literal 1009 zcmW+#T}V|y5FX8kBEk#Si<*%J5ovK9!7{1n!IT1pEV7cg5JRb%rl^$FgQNr{MG-7& zA`xU1A_`tmEGaW%)l9|mH^r2+ydDOkN^7H)(PA_kO}44DQOYPWij5*WE82)MB1YH<*;Uqtm0>Z=h6zZ9v>|0k46z{; zzy>t1u#9Q4JoYKAMQhfYEG;Ufv=XgYE3zuk6s1M9uokkSFw07_XlBg>jab#BG>InG z1Xid97(_!QWT6LQU;`RhSSD-8)_9^6D@E2HXiU9wr2Ei%NyMkpF_J&`0YLK7n!ypd%%@ko>=}l@3A-fW=Hs`+liI4{u!_R zJ@o-MCR`=o!|wiwC~n{V@aK+;)v;~|ifp4t6BC)6X zNY-$)^uNy?@fJ-lrA;-xIvblk5|a^9wr8sK+EnAE)Y`6)xT`ZQ_lBpVDtf99_0~L{ z=}wQmmDtrA(ebGEQ;{!hVQw(_Nqo)eoe7sa%4^;g4K8%`{k=aLSLzy1U$>H7*_tKo z?hDH)jF-g$H!2(mEu+l^ml1h9)R3{_R zN+{4&BvL7dheA~CWs)UwOqF5B!RW`y}SP8Q*0ZGURX(1)VLMVU@ zXkcL((`0$<)5a)c*ch_3sI)d(8O=tMRe`3`Mk%A%D6*n3%i6Fq%!UaXv1&*gQij+N zSfLtV5Dk@(g&v534QOCtnXDmO<0-9KYqI`8i%Kc2SSzx2p#n`-nprc!Jw#zvlhVYR zU=MjfCbkg={6hpBLN&l38Y(dg9Uulapn*j;Ion2!$4Ze668=DoidiusSJ;ILG!?NT z`cdZNvdhFbs!K4KRqtCS*Yeh=C1gvL~|BXrsm>Tns_NA81iA z*^k5K>fGBlofF!aovYYcCup0xlbv04;;=_>99kqtw7rR=!vZ_d_#AL0ga=QcT3T8< z<=R-i>3I9ihKoM2lSwUuoqZ$2BQrmK#>X8XzYq$FpIcabGw!|J+&@0~jgD6Rn*IHD zYU*J_gIA>EUC-4U*8(b%5;IQ(N3L1D-lx5b+S*z!r;vBaQ?%dj<&*o3m6bEy-Cgzd z%gf7Nuh;E%eU|NsNa*$rtBcF| zyk*2Qx4ovf+`S`nruXcsh=cR3xoPb?(_#u%q!dP%WtCUfMD^y5?XF6Her}@Ud*@JN zR#JAj$JM;zL)wdit+9jteY2rawR5d!2K?9E8$Mq`ciulptVrE=A*%YMZ*gr`TuJ|{ z(z2$eFL}wMSGG+Dq$lSUuPlpR9NA3ywWC9IrH}KT<}duqn4ccJzBi_D;`Bu5K&ybF0xCVru0xy zLa>Ldm34nuFN?9hw?M?7)Rv5bKzH}sb=_Uxp7)#Ed^7XR^E~r@SFc?;bGE0MnyE}= zT^MWCTCtX`C6^gvjanntur=h0YOJbNvC3A-^@_2gR>TThAvem#vRW3)Y?**$$yicL zVu>vw0XCq4g<*7)+v7rw5o6dGa%+*P8Wp2#lpG5bMU99NHbRaRdRYyNVKz+Qh*3jo zNDQ$dYz1q8fizfx7HU`wY(N7G!{h|H93iT#N=_fvA`?+z6>@UH0!0>ORwk$iDfB9d z5-UL-`~Xc%!w%>N2`B_>fPpkvq7^)_7}$UY7CGl!899PQ$QcQJSc{BVnBXhqf(42~ zECe6nGz zR(E#l^?I#Vt4>c($K&x>EH*eeSSXZoxnJ}13)SlO_I9OSt5&wk<&sy(Z+eA7F`uuY zP^nb5w(z-JDwRCXD;765Hda?wve|4VlS!x3sZ=VNOePYEXf!%8F%gMG!r^c*7{t>* zQrW!=Lg@rJ;E!k~Y8)rqpWD-SyM1VBq23t_FUFtz{Mx?sD0C|jZ2C9Sbm)4^Oz+y? z)NEU5?fiq>-2Lw#Pj*iB{YZA*d>J~N?LXc*G#V&$2YN3)-Dis(c-P&AvG|vcl}Pm7 ha8EkcUOioGJ2wXc!R{Rj722e<$L literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_xls.gif b/public/js/ueditor/dialogs/attachment/fileTypeImages/icon_xls.gif new file mode 100644 index 0000000000000000000000000000000000000000..e86c1c6631b34ecd605b655baf3d7b1ae643d014 GIT binary patch literal 1005 zcmW+#Sx8n<5S~OS9}KaFd{U%W$zY07N%BQgM2kWK39;Zvw5XMcSs{ptw3ukd!DvAW zOUSa^MRP$(k0NGD>TjW9qHS6!zy3LW=bpD=X1;Cijg5;r5T52w{na(1=w-+K@8DhQJEd z0E1|#ge>$x3~WFH3(I5;*&0u2&03T72U=80X~kNRwF?z!veL|&3GN{ZvznA9)&zUV z12VCVIN%>5;1H?-2GLN7QRo0MumKG$vdP&tYCKkoY>@B=T2#!63Aw^9RG_Jd6(L6? zjR2qv;|LmV5he0~Ol%_#Xo6ulgld36G&Ug%IzS9;K$AU@okklq9^qmL68=DoiphQ) zHdp7~w&|SE#_U|h&N@Nc)Sc|?suPDjg5%I4Iil@N932+efyU>6D&6#&)VjN>|V zv-8~R>nCf{GTvkb-3s1$HZb}{bVgT3@w?(fB~dl5>apdK*}q@9UF`{1qs)Bgsw~gR z=r5V~h#Q}Nh}(M$j8Z5x;E(Vp+SX66eUHZ;aWxlg`{dh`oKe|bG})HBk$k7J>&nXF znW?~}na0bDp}hrOKKbvIaHygA>osR74c^g{8LV9&?8bPWVl?=6FUHC(Dw~C1%a`M-0X^ zUTDZ(=qbF}x@WkhBY(X3Lqp?a*Tv5PRVfK4D#P2o2A&MKE9$~CZ}>dh(HH(8{nF#G b^xlfyQ$tzRM+;I8wp1>Sze?TeO_BcrMy(F| literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/images/alignicon.gif b/public/js/ueditor/dialogs/attachment/images/alignicon.gif new file mode 100644 index 0000000000000000000000000000000000000000..005a5ac65a3ddc9cdac037abdb5fe92267155a0d GIT binary patch literal 1051 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/images/file-icons.png b/public/js/ueditor/dialogs/attachment/images/file-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff82c8c488f53a7aff67fbe39742e3321183eca GIT binary patch literal 44070 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

    *vGSxI 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/images/icons.gif b/public/js/ueditor/dialogs/attachment/images/icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..78459dea7b12ccbeec81d19ecdab22b1658e93b4 GIT binary patch literal 453 zcmZ?wbhEHbbY#$A*vtR||Ns9FJNP^N(4UCIf1{56|NHmvpFe+o|NadW2g{=nia%Kx z85lSjbU>mYGZarn*x(aH@fLZq!wgUiaA+%BrQuMGlI(3v}$4ket=c%G-JG_a6@d zUMtW1Dv_dMk(#;&JDULU);6IIt*+RD80Beh(v#{r8-@JE7rOMyrKZ@`PM+5- zK4PEn@UifH&1a7opNKNDvAy~H((Lt@PiCLrh`sqL^yyzFM}*_N9gV+*y1bvCcd{tw zP+atQ`ojjtR_?nOH&4iCw(0v^v}@~SfpwBi-JHA%0-p_?kEd#ga=ENn_|&M5?L?$c z!i1+jT>6R+ul!uQ+^$n$Hm~o7%Nb0wJ#GK7NE~>4aE?#6+>{R=oUZeJnouMg`B^J) rUi3;Xl^IQMkE|4#X6EZ{`gBG$ultcLuMHMNRKNMR>qv$%6N5DXx{1lO literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/images/icons.png b/public/js/ueditor/dialogs/attachment/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..12e4700163ac87fa38ae3d92a2c39d0fb4690fed GIT binary patch literal 2678 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/images/progress.png b/public/js/ueditor/dialogs/attachment/images/progress.png new file mode 100644 index 0000000000000000000000000000000000000000..717c4865c90a959c6a0e9ad1af9c777d900a2e9c GIT binary patch literal 1269 zcmeAS@N?(olHy`uVBq!ia0vp^f8U}fi7AzZCsS=07??9MLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}t-3#_`hBq$Z(46Le)Ln;eW^@CE2 z^Gl18f$@>14ATq@JNy=b6armi>cVAJd5X6R;MWawh(V&G(G=xXffXz1o@ zX=ZL{;B08&Z0-!x>zP+vl9-pA3bQv8XfIT+GhV$`&PAz-CHX}m`T04p6cCV+Uy@&( zkzb(T9Bihb;hUJ8nFkWk1Vs?Uzb>gonPsUdZbkXI3g8g7%EaOV0~10%hv-cqC)D(T zj?o7t52WM*69T3|5EGvGfgE`DNzDW1nId53*cQ_-&cMK^?CIhdQgN$ga=rIq1A(^5 zYKwg&`wo`WvF`u>{iFU|`!+wz>b#B?t8F4hxRm$~lz-tTH#6E8xZnKlv%`YRwvA{oKseqmK8(Gfx|> z#)dT+Zy!CGH{+89Q&m{rC!PyyIjq?Y9m+ziHPqr6qxfF`+2Qt=-KQ=fE8_j%1#Y2} z>NffN)P;AQIhrE)QQzeqbFS^A8(M1XGuQqTO<=fcH+M~2lzlL$Ao6teb6Mw<&;$U? C61Fb@ literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/images/success.gif b/public/js/ueditor/dialogs/attachment/images/success.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d4f3112b9d1df2147ed3b67d9736163dedd11e1 GIT binary patch literal 445 zcmZ?wbhEHb)L_tHxXJ(m|NsC0{`>#WKmY&!`~ULm|4%>v3rzVXIOUh{)L$ageu+>2 zB{Acd%*pZwE#>TlQSztb-KopJH+%!_|l-~7Ag*59?a z{_c7B@6_{ur(gU#_wwKE_y6vG`1j=VzZYNsfBgCX$DjXizW@L859r4KV8@~pia%Kx z85k@WbU+dyKQXY~a+p)#p(E9QVoA}-BeJtDJbfs+R&065YSGzOop#2q7tzUUTK@E- z1Qpqe*fm*b*T-Fam_8!ZPiJg?eRTb9ku+5;xVnw>Wr$>Ce}(b zvq{bgY~#~oR8Cparp&0%zbdUw!o*Z6ds70hP&$teqekA&7*16-748@%Mnl0vSqU6+ zOpICr!NSHY@7SLk+rBLP3&#jWP!Xxbb jiN%_{Rv%uKKTTNF#>acL^G5)OtDBg<-IWs>91PX~W`xy? literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/attachment/images/success.png b/public/js/ueditor/dialogs/attachment/images/success.png new file mode 100644 index 0000000000000000000000000000000000000000..94f968dc8fd3c7ca8f6cb599d006ef3f23b62c7d GIT binary patch literal 1621 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#?>2=9ZF3nBND}m`vLFhHXsTY(OatnYqyQCInmZhe+73JqDfIV%MiQ6rPIL(9V zO~LIJBb<8mfsWA!MJ-ZP!-Rn82gHOYTp$OY^i%VI>AeV;u(vXbonl~MI_~M>7*cWT z%njcRVMh`65C6~Q2yI{K`NBQQh9heAinXE1(JfB=Ul%M;Ke#x6g%L8^f5l4Te zj&BcK1znDIyZS2~eC7F3K+}tVTa$=u*HTU0W4>0#`+Qf%|GkyBERBs#$Y}P@k7@U2 zd#*XsYr~WGeCA1uSK>2HTD)g9mP}Xrpg$+`K&8dx2JS~bjCx(hj5}1;-8qn2_>|?> zp{d+2q{I0hbQS!U-jOut`kSEi+IhQJGmBl4O%se*W?OGKZ0Mp?XmGnRgezL^8vCJ4 z#-ek9(R&%4!h+;oXA~Mtbyie=u#0PDiI#!iX`%2?^@kRL8ma*r6?+*}W4e|_8~J&& z+-+*Ub3{dDcAIF|!MTDz0#78qKYeaeVU$wDOOs3cR=e5FZ*O2e-6xc{Uu=$;!s>*M z>nZ|V>zUp8-oE6^wXjV+_UOvuE&SORr`;3hnBKu~e3rzlY@NRjD|5Ui2t>^@Ve7jy z)2vT>u1vesjJgG`f;l_n`FmbR~b^~{VzXB}7CdU_pt>lO9l=E;X#4<2bZu32r~J^e^%TSISQ_Qm$= z7d{rOo2%^RUGseJkpn9(MWszUQdl(i&RN5PBgZ0d#S7ZipShU3W`>Nsy6C#pCD*KW zyxHW%b?m|pr;dF;L$saa#oaeO`u=>jkXTjl9*cLEvOD!Jdr4ooKJW9gY7?D{e?uM^ z`_}E4`0yR0boA=9>3>WXzUH{&pDfpZ;_2xb=j*pKsk#WyD%J#5t{1#azeB z4SJq8H2*dJVX$xugZHVh{7U`u4@oM|quz5j-hRJi{qwh1k5uNqu`W>3HJG&Y^R}6R z$Gq-HPue$sd${oT*XKO8zN>Oe_%K^bZNm3^-vf7@5X# + + + + + + + +

    +
    + +
    +
    +
    +
    + +
    +
    + + +
    +
    +
    + : +
    +
    +
    +
    +
    + +
    +
    + : +
    +
    + :x:px  y:px +
    +
    +
    + +
    +
    +
    + + + diff --git a/public/js/ueditor/dialogs/background/background.js b/public/js/ueditor/dialogs/background/background.js new file mode 100644 index 0000000..09c4d9a --- /dev/null +++ b/public/js/ueditor/dialogs/background/background.js @@ -0,0 +1,368 @@ +(function () { + + var onlineImage, + backupStyle = editor.queryCommandValue('background'); + + window.onload = function () { + initTabs(); + initColorSelector(); + }; + + /* 初始化tab标签 */ + function initTabs(){ + var tabs = $G('tabHeads').children; + for (var i = 0; i < tabs.length; i++) { + domUtils.on(tabs[i], "click", function (e) { + var target = e.target || e.srcElement; + for (var j = 0; j < tabs.length; j++) { + if(tabs[j] == target){ + tabs[j].className = "focus"; + var contentId = tabs[j].getAttribute('data-content-id'); + $G(contentId).style.display = "block"; + }else { + tabs[j].className = ""; + $G(tabs[j].getAttribute('data-content-id')).style.display = "none"; + } + } + }); + } + } + + /* 初始化颜色设置 */ + function initColorSelector () { + var obj = editor.queryCommandValue('background'); + if (obj) { + var color = obj['background-color'], + repeat = obj['background-repeat'] || 'repeat', + image = obj['background-image'] || '', + position = obj['background-position'] || 'center center', + pos = position.split(' '), + x = parseInt(pos[0]) || 0, + y = parseInt(pos[1]) || 0; + + if(repeat == 'no-repeat' && (x || y)) repeat = 'self'; + + image = image.match(/url[\s]*\(([^\)]*)\)/); + image = image ? image[1]:''; + updateFormState('colored', color, image, repeat, x, y); + } else { + updateFormState(); + } + + var updateHandler = function () { + updateFormState(); + updateBackground(); + } + domUtils.on($G('nocolorRadio'), 'click', updateBackground); + domUtils.on($G('coloredRadio'), 'click', updateHandler); + domUtils.on($G('url'), 'keyup', function(){ + if($G('url').value && $G('alignment').style.display == "none") { + utils.each($G('repeatType').children, function(item){ + item.selected = ('repeat' == item.getAttribute('value') ? 'selected':false); + }); + } + updateHandler(); + }); + domUtils.on($G('repeatType'), 'change', updateHandler); + domUtils.on($G('x'), 'keyup', updateBackground); + domUtils.on($G('y'), 'keyup', updateBackground); + + initColorPicker(); + } + + /* 初始化颜色选择器 */ + function initColorPicker() { + var me = editor, + cp = $G("colorPicker"); + + /* 生成颜色选择器ui对象 */ + var popup = new UE.ui.Popup({ + content: new UE.ui.ColorPicker({ + noColorText: me.getLang("clearColor"), + editor: me, + onpickcolor: function (t, color) { + updateFormState('colored', color); + updateBackground(); + UE.ui.Popup.postHide(); + }, + onpicknocolor: function (t, color) { + updateFormState('colored', 'transparent'); + updateBackground(); + UE.ui.Popup.postHide(); + } + }), + editor: me, + onhide: function () { + } + }); + + /* 设置颜色选择器 */ + domUtils.on(cp, "click", function () { + popup.showAnchor(this); + }); + domUtils.on(document, 'mousedown', function (evt) { + var el = evt.target || evt.srcElement; + UE.ui.Popup.postHide(el); + }); + domUtils.on(window, 'scroll', function () { + UE.ui.Popup.postHide(); + }); + } + + /* 更新背景色设置面板 */ + function updateFormState (radio, color, url, align, x, y) { + var nocolorRadio = $G('nocolorRadio'), + coloredRadio = $G('coloredRadio'); + + if(radio) { + nocolorRadio.checked = (radio == 'colored' ? false:'checked'); + coloredRadio.checked = (radio == 'colored' ? 'checked':false); + } + if(color) { + domUtils.setStyle($G("colorPicker"), "background-color", color); + } + + if(url && /^\//.test(url)) { + var a = document.createElement('a'); + a.href = url; + browser.ie && (a.href = a.href); + url = browser.ie ? a.href:(a.protocol + '//' + a.host + a.pathname + a.search + a.hash); + } + + if(url || url === '') { + $G('url').value = url; + } + if(align) { + utils.each($G('repeatType').children, function(item){ + item.selected = (align == item.getAttribute('value') ? 'selected':false); + }); + } + if(x || y) { + $G('x').value = parseInt(x) || 0; + $G('y').value = parseInt(y) || 0; + } + + $G('alignment').style.display = coloredRadio.checked && $G('url').value ? '':'none'; + $G('custom').style.display = coloredRadio.checked && $G('url').value && $G('repeatType').value == 'self' ? '':'none'; + } + + /* 更新背景颜色 */ + function updateBackground () { + if ($G('coloredRadio').checked) { + var color = domUtils.getStyle($G("colorPicker"), "background-color"), + bgimg = $G("url").value, + align = $G("repeatType").value, + backgroundObj = { + "background-repeat": "no-repeat", + "background-position": "center center" + }; + + if (color) backgroundObj["background-color"] = color; + if (bgimg) backgroundObj["background-image"] = 'url(' + bgimg + ')'; + if (align == 'self') { + backgroundObj["background-position"] = $G("x").value + "px " + $G("y").value + "px"; + } else if (align == 'repeat-x' || align == 'repeat-y' || align == 'repeat') { + backgroundObj["background-repeat"] = align; + } + + editor.execCommand('background', backgroundObj); + } else { + editor.execCommand('background', null); + } + } + + + /* 在线图片 */ + function OnlineImage(target) { + this.container = utils.isString(target) ? document.getElementById(target) : target; + this.init(); + } + OnlineImage.prototype = { + init: function () { + this.reset(); + this.initEvents(); + }, + /* 初始化容器 */ + initContainer: function () { + this.container.innerHTML = ''; + this.list = document.createElement('ul'); + this.clearFloat = document.createElement('li'); + + domUtils.addClass(this.list, 'list'); + domUtils.addClass(this.clearFloat, 'clearFloat'); + + this.list.id = 'imageListUl'; + this.list.appendChild(this.clearFloat); + this.container.appendChild(this.list); + }, + /* 初始化滚动事件,滚动到地步自动拉取数据 */ + initEvents: function () { + var _this = this; + + /* 滚动拉取图片 */ + domUtils.on($G('imageList'), 'scroll', function(e){ + var panel = this; + if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) { + _this.getImageData(); + } + }); + /* 选中图片 */ + domUtils.on(this.container, 'click', function (e) { + var target = e.target || e.srcElement, + li = target.parentNode, + nodes = $G('imageListUl').childNodes; + + if (li.tagName.toLowerCase() == 'li') { + updateFormState('nocolor', null, ''); + for (var i = 0, node; node = nodes[i++];) { + if (node == li && !domUtils.hasClass(node, 'selected')) { + domUtils.addClass(node, 'selected'); + updateFormState('colored', null, li.firstChild.getAttribute("_src"), 'repeat'); + } else { + domUtils.removeClasses(node, 'selected'); + } + } + updateBackground(); + } + }); + }, + /* 初始化第一次的数据 */ + initData: function () { + + /* 拉取数据需要使用的值 */ + this.state = 0; + this.listSize = editor.getOpt('imageManagerListSize'); + this.listIndex = 0; + this.listEnd = false; + + /* 第一次拉取数据 */ + this.getImageData(); + }, + /* 重置界面 */ + reset: function() { + this.initContainer(); + this.initData(); + }, + /* 向后台拉取图片列表数据 */ + getImageData: function () { + var _this = this; + + if(!_this.listEnd && !this.isLoadingData) { + this.isLoadingData = true; + var url = editor.getActionUrl(editor.getOpt('imageManagerActionName')), + isJsonp = utils.isCrossDomainUrl(url); + ajax.request(url, { + 'timeout': 100000, + 'dataType': isJsonp ? 'jsonp':'', + 'data': utils.extend({ + start: this.listIndex, + size: this.listSize + }, editor.queryCommandValue('serverparam')), + 'method': 'get', + 'onsuccess': function (r) { + try { + var json = isJsonp ? r:eval('(' + r.responseText + ')'); + if (json.state == 'SUCCESS') { + _this.pushData(json.list); + _this.listIndex = parseInt(json.start) + parseInt(json.list.length); + if(_this.listIndex >= json.total) { + _this.listEnd = true; + } + _this.isLoadingData = false; + } + } catch (e) { + if(r.responseText.indexOf('ue_separate_ue') != -1) { + var list = r.responseText.split(r.responseText); + _this.pushData(list); + _this.listIndex = parseInt(list.length); + _this.listEnd = true; + _this.isLoadingData = false; + } + } + }, + 'onerror': function () { + _this.isLoadingData = false; + } + }); + } + }, + /* 添加图片到列表界面上 */ + pushData: function (list) { + var i, item, img, icon, _this = this, + urlPrefix = editor.getOpt('imageManagerUrlPrefix'); + for (i = 0; i < list.length; i++) { + if(list[i] && list[i].url) { + item = document.createElement('li'); + img = document.createElement('img'); + icon = document.createElement('span'); + + domUtils.on(img, 'load', (function(image){ + return function(){ + _this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight); + } + })(img)); + img.width = 113; + img.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) ); + img.setAttribute('_src', urlPrefix + list[i].url); + domUtils.addClass(icon, 'icon'); + + item.appendChild(img); + item.appendChild(icon); + this.list.insertBefore(item, this.clearFloat); + } + } + }, + /* 改变图片大小 */ + scale: function (img, w, h, type) { + var ow = img.width, + oh = img.height; + + if (type == 'justify') { + if (ow >= oh) { + img.width = w; + img.height = h * oh / ow; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w * ow / oh; + img.height = h; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + } else { + if (ow >= oh) { + img.width = w * ow / oh; + img.height = h; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w; + img.height = h * oh / ow; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + } + }, + getInsertList: function () { + var i, lis = this.list.children, list = [], align = getAlign(); + for (i = 0; i < lis.length; i++) { + if (domUtils.hasClass(lis[i], 'selected')) { + var img = lis[i].firstChild, + src = img.getAttribute('_src'); + list.push({ + src: src, + _src: src, + floatStyle: align + }); + } + + } + return list; + } + }; + + dialog.onok = function () { + updateBackground(); + editor.fireEvent('saveScene'); + }; + dialog.oncancel = function () { + editor.execCommand('background', backupStyle); + }; + +})(); diff --git a/public/js/ueditor/dialogs/background/images/bg.png b/public/js/ueditor/dialogs/background/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..580be0a01dff4c70c72f78a3f40186660ee8eee0 GIT binary patch literal 2810 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 + + + + + + + + + +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + diff --git a/public/js/ueditor/dialogs/emotion/emotion.js b/public/js/ueditor/dialogs/emotion/emotion.js new file mode 100644 index 0000000..6e158a9 --- /dev/null +++ b/public/js/ueditor/dialogs/emotion/emotion.js @@ -0,0 +1,186 @@ +window.onload = function () { + editor.setOpt({ + emotionLocalization:false + }); + + emotion.SmileyPath = editor.options.emotionLocalization === true ? 'images/' : "http://img.baidu.com/hi/"; + emotion.SmileyBox = createTabList( emotion.tabNum ); + emotion.tabExist = createArr( emotion.tabNum ); + + initImgName(); + initEvtHandler( "tabHeads" ); +}; + +function initImgName() { + for ( var pro in emotion.SmilmgName ) { + var tempName = emotion.SmilmgName[pro], + tempBox = emotion.SmileyBox[pro], + tempStr = ""; + + if ( tempBox.length ) return; + for ( var i = 1; i <= tempName[1]; i++ ) { + tempStr = tempName[0]; + if ( i < 10 ) tempStr = tempStr + '0'; + tempStr = tempStr + i + '.gif'; + tempBox.push( tempStr ); + } + } +} + +function initEvtHandler( conId ) { + var tabHeads = $G( conId ); + for ( var i = 0, j = 0; i < tabHeads.childNodes.length; i++ ) { + var tabObj = tabHeads.childNodes[i]; + if ( tabObj.nodeType == 1 ) { + domUtils.on( tabObj, "click", (function ( index ) { + return function () { + switchTab( index ); + }; + })( j ) ); + j++; + } + } + switchTab( 0 ); + $G( "tabIconReview" ).style.display = 'none'; +} + +function InsertSmiley( url, evt ) { + var obj = { + src:editor.options.emotionLocalization ? editor.options.UEDITOR_HOME_URL + "dialogs/emotion/" + url : url + }; + obj._src = obj.src; + editor.execCommand( 'insertimage', obj ); + if ( !evt.ctrlKey ) { + dialog.popup.hide(); + } +} + +function switchTab( index ) { + + autoHeight( index ); + if ( emotion.tabExist[index] == 0 ) { + emotion.tabExist[index] = 1; + createTab( 'tab' + index ); + } + //获取呈现元素句柄数组 + var tabHeads = $G( "tabHeads" ).getElementsByTagName( "span" ), + tabBodys = $G( "tabBodys" ).getElementsByTagName( "div" ), + i = 0, L = tabHeads.length; + //隐藏所有呈现元素 + for ( ; i < L; i++ ) { + tabHeads[i].className = ""; + tabBodys[i].style.display = "none"; + } + //显示对应呈现元素 + tabHeads[index].className = "focus"; + tabBodys[index].style.display = "block"; +} + +function autoHeight( index ) { + var iframe = dialog.getDom( "iframe" ), + parent = iframe.parentNode.parentNode; + switch ( index ) { + case 0: + iframe.style.height = "380px"; + parent.style.height = "392px"; + break; + case 1: + iframe.style.height = "220px"; + parent.style.height = "232px"; + break; + case 2: + iframe.style.height = "260px"; + parent.style.height = "272px"; + break; + case 3: + iframe.style.height = "300px"; + parent.style.height = "312px"; + break; + case 4: + iframe.style.height = "140px"; + parent.style.height = "152px"; + break; + case 5: + iframe.style.height = "260px"; + parent.style.height = "272px"; + break; + case 6: + iframe.style.height = "230px"; + parent.style.height = "242px"; + break; + default: + + } +} + + +function createTab( tabName ) { + var faceVersion = "?v=1.1", //版本号 + tab = $G( tabName ), //获取将要生成的Div句柄 + imagePath = emotion.SmileyPath + emotion.imageFolders[tabName], //获取显示表情和预览表情的路径 + positionLine = 11 / 2, //中间数 + iWidth = iHeight = 35, //图片长宽 + iColWidth = 3, //表格剩余空间的显示比例 + tableCss = emotion.imageCss[tabName], + cssOffset = emotion.imageCssOffset[tabName], + textHTML = [''], + i = 0, imgNum = emotion.SmileyBox[tabName].length, imgColNum = 11, faceImage, + sUrl, realUrl, posflag, offset, infor; + + for ( ; i < imgNum; ) { + textHTML.push( '' ); + for ( var j = 0; j < imgColNum; j++, i++ ) { + faceImage = emotion.SmileyBox[tabName][i]; + if ( faceImage ) { + sUrl = imagePath + faceImage + faceVersion; + realUrl = imagePath + faceImage; + posflag = j < positionLine ? 0 : 1; + offset = cssOffset * i * (-1) - 1; + infor = emotion.SmileyInfor[tabName][i]; + + textHTML.push( '' ); + } + textHTML.push( '' ); + } + textHTML.push( '
    ' ); + textHTML.push( '' ); + textHTML.push( '' ); + textHTML.push( '' ); + } else { + textHTML.push( '' ); + } + textHTML.push( '
    ' ); + textHTML = textHTML.join( "" ); + tab.innerHTML = textHTML; +} + +function over( td, srcPath, posFlag ) { + td.style.backgroundColor = "#ACCD3C"; + $G( 'faceReview' ).style.backgroundImage = "url(" + srcPath + ")"; + if ( posFlag == 1 ) $G( "tabIconReview" ).className = "show"; + $G( "tabIconReview" ).style.display = 'block'; +} + +function out( td ) { + td.style.backgroundColor = "transparent"; + var tabIconRevew = $G( "tabIconReview" ); + tabIconRevew.className = ""; + tabIconRevew.style.display = 'none'; +} + +function createTabList( tabNum ) { + var obj = {}; + for ( var i = 0; i < tabNum; i++ ) { + obj["tab" + i] = []; + } + return obj; +} + +function createArr( tabNum ) { + var arr = []; + for ( var i = 0; i < tabNum; i++ ) { + arr[i] = 0; + } + return arr; +} + diff --git a/public/js/ueditor/dialogs/emotion/images/0.gif b/public/js/ueditor/dialogs/emotion/images/0.gif new file mode 100644 index 0000000000000000000000000000000000000000..6964168b947afc2cf76780a85f43d4f77c257b77 GIT binary patch literal 43 qcmZ?wbhEHbWMp7uXkcLY4+e@qSs2-Y0y+#p0Fq%~V)9{Rum%7ZDGCMv literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/emotion/images/bface.gif b/public/js/ueditor/dialogs/emotion/images/bface.gif new file mode 100644 index 0000000000000000000000000000000000000000..14fe618ab58a9d46fee90074386b5581d47b92c9 GIT binary patch literal 27167 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/emotion/images/cface.gif b/public/js/ueditor/dialogs/emotion/images/cface.gif new file mode 100644 index 0000000000000000000000000000000000000000..bff947f5216a49d8cd7fdd8d4e825808b3d14f6e GIT binary patch literal 8603 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/emotion/images/fface.gif b/public/js/ueditor/dialogs/emotion/images/fface.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d8a6afeb1cb2cc40c5d76f90630d8a9c1323ffe GIT binary patch literal 18479 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 Z1*(9jYzjdPQwkU=rV+{lAZZd106V&Waa;fZ literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/emotion/images/jxface2.gif b/public/js/ueditor/dialogs/emotion/images/jxface2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a959c90f7eb17adc455982b040244fd583eed888 GIT binary patch literal 40706 zcmW)ncRUr2_y6y{mwR!!cE-K-cFk<}+T+T#ciE#TBFV^Iwz5M>W=7Gq%Bt?QvWg@m z6;jcgB9!L+eZIf*IDeh?QIMUgJc1z$R8ZQ|Kfb_r_e{Z9w5lq*XQcc z9jVL6+Z7d@0e-Xx^soxJ!g&+_IKmeR_|x)cG)v5|>2%*>(b9OMU6b@q|En{{Mc>Fd zmAqBv=v4OHAng6n6B89pNx4*7QZPUF^6&SRMFNih3@mB5qAAnw?U?%>hx72^!5P}kmX;QMmWJ{1@n2Fw;g#Vtu4MMN(f#!H zXB|_tz)fkBO&l>)6C=DtUUmnTxRQsRw8{4rwUKskKS!E-V3Yyezf=Q#gm%1l#kzM{%aVio9lmP6|zV{ z1>aIGIoEb=%4a$p@b5!lSs=M}SM$_elk9Q7Pd`3|-f`NRs_Yo;XG}(LcK#b)n`mro zc=hFtX1?5;H*e0de0q9%6fTQ6HAO7|U>CR{?Y22qj_J`i2Al)bFf* z%b&fIpP%>d!Fx0s&A40oHE-%GXT_*Sd2V;IxFfr8y!=A<*=c$|4u|{jZRFn({oDOu z#lT}ad9r9O{_DX;*uC7&U-eFzj_4dp{K1_Vu`H_*4oEL+fHy*QC6WZWL|i`n(4p{rUnS@N2ks{X2mo*ZYX7H%|I-8j!2$f`lCWd0 zvV0`lMg5P?;n>>$E)UW-3x-P+LCQwaoA`QjV=E)8jn#r|i*#|G^Zs^wa2wvPaGw1i zRzZ`c|2z}bx~8PnFkb`9*h_IWC$h}5OD{c%@NR2JY+qGNn#aMVyArt$KLv>b&D^dC z3vE&?F;Kv^JG`a$R>JLKw!=nNx#hDQ&gj%jE?s+kXuubtR5(7Hy|`URc$!jY>Ab7MVNQ;8V&Gr&(FwV2RfwG{=fYoxhVN(QR05?( z?8A)q?$mD3!vWocD)5;OTjRS1;l}^2=+6ob{5j;a?pn!wg?HWzd!kWI6kJFR=CQJ( z{M;$N8pRux08KXfxhmodidzj3OFXzwrZ)?@JECT}KAut+&;2y(tZudegrgVgZV{Zf z>lQU~)i->v!UBS5Tn=TxsmuT7wM#6e&>kK{CsS%|;A`~*`b95+4NH_YZ^MTZc18)e zi9Pdro)uzofLn3h7ZOJCL2Q_!gH?ik#C7Du_n&U1{A-yr&sJ#NtjpJ5Zmx}-yY|VO zE)|MxkVJGi`dT%VTusmDbgzcbBp5oP(r64{F|QVWef%Q&>E}*h6I=nXsecH5%kzg^-JTi#qgd&_tt%giqOt#R5{gEGDy*K*`I}~d zM3FT!<=1Zsy}t_GF*E2?@%s>y_W>hfmu9U3bj|ijqU777R4(R{-Em*3NbUz?QvAA( zMg|#Nd0SfvtCkKPDmPDzdtFCc-kyn$O;+#1i`^qC+)ikOZ%qeB!v_#+2Jqj{Pn%ki z=_mbA1535K7FvKRPn03}*DM`VJ{XhqW2eVaT|8s*G|2)zfL41(l!yj+mr5gW>0`>^ z@!a#~_4siakxLdv-$&cytqZ}!2r#q}%2w<>O9)sBM4>DwJo-3!X~A)b@)4@)ZtN-G zA0Xh5Vh>Lu@GOXb2=-TT81LSSnpwg=;#?=Nd6b-dxwT)wT&@*izufVJ6a|U≶_= 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/emotion/images/neweditor-tab-bg.png b/public/js/ueditor/dialogs/emotion/images/neweditor-tab-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..8f398b0958cdc5136a23b9745becc23a833aa325 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^96&72!3HGF`uUCmDVAa<&kznEsNqQI0P;BtJR*x3 z7^L@rFypT63w8qqANLt@XPdKI8X22WQ%mvv4FO#q2N BK}7%n literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/emotion/images/tface.gif b/public/js/ueditor/dialogs/emotion/images/tface.gif new file mode 100644 index 0000000000000000000000000000000000000000..1354f54b961211fb0253ccbd27a81da5dab5a639 GIT binary patch literal 19805 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
    Q#B)e zGCmu$E)2)e+cfzVqYP|D%dDl74NC`0_++EqV;4;LX4_tHA~Y48Cgi5auMdur*MB%&`6mi2!w!ATa-wn+$_Yi|Hp-M4ovZ;P9Pj#Y zM?u`)gYjF&`vBFZDLO)(2UtDK0ku7aptcAf?m(Hh(;1q66~ioNeThs1t>4hmiy6Yu zniY!G3SYNjBSPeDM98OOJb?Cejq4&GR_Ev)z;6~D`C9;#-NEJnLs}koVCgQ|^o=0< z{j7kXaezb6)N+i#h1#ti*3m>JD#IhK_xG0usC7(P_V67!CA+^ zxpU1q#Ri%Eeb+pV;}68uXkTFG#Z#-*^LD2~uEWk+Gq!&#S?5s>VQb@)XcRrQLg9rX0-54>jHe4L zP$TyjPj*}Byk*t;pk~Xghs|}mP*5a;C(_+@(vLqH_~YTy9;|HuUPKic(tlgPXe< z218tbdoTV4F^zBN(J$9|qT+Kqa){;?QT4zi#vEU2mfAJxzMBi;f;hyt*b+-O3rIp& z0De`wc~CEb!H~Q{71;NAO^|jkYlRT1zg=&QGH&uVkeDm9y)BJ zL=5QxgUQ)ujp87?@E0fJ+BvwNzwrxAA3@ZNb+vk|O1QV)mbg;YRpX&#godZVv^$c~ zn2`WnrlKnzawvr(1eeKeHH_LRM5z-$ZZ#U*rx1w@6zk|k9DX|t>;Y7$8ON-uiWJ# zVrzbs4Z1%ZEnl>)F0X+TpjAIwGWX)F>8s}<39R_yte-iBn|qmV&1xdx;Fj+i3JG4o zMlAeMrU16Hml(V_jSTPlyuh9J9JrKBVRu2-%+W=taXVl~ya(DMUqO6vP$PV}52w9? zjT+)zwdm?OwP%$e!3XNvae^Q;7BSdRpecg|4kN4kp0?K!{ zdD^FqhPg8cKj-8OICr@pIbA(~8jl`TJ4at~o1xW?3gXK3No0r8%8g?(Z4AsMoYq^{l* z?bAh?WNf?m?b21}hljd@v$I^?xJO1F)Cd;4Q7b}o@si#yzFX14=}?_i14)?#e3!3)5B%B;XJyg2~(b&4S%DR$>yDpT4VUbg@3cX zOmpippQG-oIvr5m#ndp=+VuXul?EGP6QLF!ucWW@|C}VOpUKj;k`|*iMueu@0IlHo zzG+=HBqC9l*rpI(R`HP96}+=nvJiVM4hBX)_~qx@)sIKibci2MT0#fSMojO~duV?t;C|~(oA9|41*bRQ<@OE4@Bv|X`33H~zQmbt~#+OGddZmA2 zW7Dx4I>*_VXZ2>_z+tAv{LOR=f17x|u5r)KS?JDEq1Ge5O*Qo0OpmcIKfJ&9^QPX2 zYM@QpYuQo<6h;-62G~>s4(V(vvG;tC$bro8?T1kwK^+qN&{Vz`2z}Xjzn}=v%4bok z8I(rI-;pBX9PUvyUyG{lagylooL$aN6lf*(8g&QQH1e*72HN{ZV_UCjr}gE_?`t7` zW*GUpiM{rOUQ#1uCKNQSAU)D3(bWhsYah@*F<_6X+-(f))L~defaWsBi#C6)bYWIX z0K1|t(>U1!Y}VE31?ClMXW)(KmQ#9wM<9}tJ4wkbCInrx90AOIrUC;2R1a=XAW|z{ z;Of;!PE`D;jM7RGCRh8*=jqt$UUiUwI3Y2tp0b}C)%ZT8(b8=D1F(NsuX8Jm^$(0N zJ#{d4&?y3-c=b6s_G-j4bOMp`c5RdMpl|#FX*GX$dLL2IZ1cU@J*xM|D>1UB*LWAy zeS7&QzIx0;^wg=*jHcCV_c~fy&9>bIt?dR0vR+>TgE}L21DT%KnDn=OC;VJ=3 z7TyAJ7SaDEq!`3A-0=)r%u@|%FZL_%Ca%%g;%T6Y0VDNzi~^Jye=4`dvKnxT2dvP4 zj@}$ySUh0da>w^#FKJ#ulE{L`o}n)a=%Ly*gZ{c^@S`(TE)_k-k>#$WzkGwVYqs6N zuYcr2DOqAw-_{L;h6#u(Ey*~nH0SY+ji4rc${wA4#|3mwe{lJ%s_41n{=r3_2@q9YzP7ba-;iv zmmMB|>#z4{xlTkcF}-&s`2jH^TB|!i&sci-5!6g2wClBgJF|!LJ&Hn_xa{^2Q*nD` zVz3|is#9Ws-r(}fY`R_>fA0Isl@Ssvw>BFRv@ojQRwY~?QOSv?^6(`d-2vMs%dwB{ z+beH#M(|nP!SzfbaRz6G5{r{Uk^@U1RKD>%Z`agxp)bASwOW#u9zYp{COpR4iuRE4 z8C$!q+H-@b77zD6EGM%1P#jbp9=SZC*TRD7{a3itqjbZZS5Ds;Gu>PrXLwk2ojFySY8jIi1-f1wUi14iX@=S zC0#+m49QTqJrkt$TmkI+JhJ=t0+&gEAq{FMf@)9m`_km^?ioeNB~7x z>-8r4$XB{SiK`;f{+gm9^u_kDBiZpN{)J}yTS-Svl{^BgpM!?pJTcBt_GwMm;HdqK z?@umMA-CzeoL3OMDvp5?=~O7jx_TLnx{Ea8Hu@aLgX=CUA%8B5RDP;i{fch)C_Db= z5`k#Y$7lVZy8Z3w?sbfAI-^42RzcTP!tlO)#Itbw2!%EZ zX65TJ`jBTZLT89|t-90#Yy<>3eLOq@V%83^W%1$F>+K-PX0+w6reId-bOT-#szoPe zq7US))=KC3rSNEh0#rWUh|H%k`Lu}ugK3Ed<5>7afOW?$r)NvpB>Y>QJ(FUHzL`H+ z+UrYxADF&i$3Frq3#er~{H@r@XlBWdRein?N=&!nGklQOQC!r!o0EOjNr4Ku`R;S+ zp1F(ExBa)iFQWg05V#P8Gr{1O*G`p&!87(9>XswbiQ36OV90)$ZN=_?rqe4g`$ICS zK8JNINKo0kZ2(RO^Ql+O45N`t6dxWF@T&m*AGeJ1-|MUxv>bP8&Zs&R10wSP+YXgw zJl}&30jt%!^JANJzXM>!q$p?TBHynwhZG0m*Zz^rVO zS=aW1TA7)lSy{J%T4u{@+onH$=Ww3GU%)whpYi>?U!T{<&SMydgghL6%Zxz~w=$ej zFB3!~Y@?8dbkm7sPWAO}oFJY)BSR-(TahwzB&V6s(~F2J%%SZ!U33fCqV4z;$p+y z#gOU02H8>E#Fy@D)6Z85rKEQRC!K^V;aL9~1HZ-iWA~C8tq4G>b>r%*>ieg*!R~c| zZj2XR>p$P_e>z|fIH@`KRw#Tn1$AVa|QYC4SE z)@9o9nE-XqDMzrx_ZOuC?$UK!3EY(dlBySy2whfBgc~x#gFka}0w(jbjK~ZC-r?-f zw7bBVyGS65D>$i#y+MM&i@T_WOJ+ zg#1s*YQ)y`lr>_eQ@fqlbXQ25Yebv4l2`U89&VbrarLF}mJb|!(Hz&2$N1Ka+}5Lo zPX8bb`vQ;tbESHOar3Pe$S5phA+KgL+`oapQ?KNvlH`Eb=dRdz8jbhJAsMooY;v%# z3Z4PdM{c_fDjbr5;nb)?-x5GtLYBp&32O4&+&5SAmn`oWhHZu+VASDbD#uy0UC?|UhW6_Y0q(uF8F-8 z=en$R_umpn4~{+z&HFdTfE(@t70=yP7tDAH?=%eQ1Pzjl{lL5{tQq)>@{_aN zVID;9P?CdHOF#F2wZ6TOOFRKHm7Kgr500?s_Hnw+6N;a4-Nwn`OP(xS(mM>K z{TJh(1-xa$9Sb@0Cn3LjYx_bOkusM!z2j;EA{0cJiZ2q4y3ISf{L;5xjJ*`<{$Tzi z15*iyNSO5q(@H`+fwxho4B9mK9)z=dnn1^<7sH3Kax*^1NCJO==eoVKnG^$tpQTqu z!s(kJ^DHj0heIpeVJ7K{JOQ&F{_2H&xaGlZ(`n2EU~ABeS7}woTeuxWY6JxH?-*xFFqeorOoWkQ+HJZThF{GErORqJVysi1oltf(OFpQ zqsO$GffWs17NTCpVBC{A%O;!3Dw1FxkUF5AQ|OeJ%P^lTL!;6)lNL#4u^iH&*Y@CE zlM>F(09&u7tz14ZS_bBS<87WP2N-+R7i7{!J^Gl&wfr&tz)gEl@@y5NOp)D!>T@%i z8(|N)tBPH!y{%JcX}e|i>*Ab-THKI$+e=8NeuQh2#HF9+Q5)q9LQPok_?c_L6ibjl zGe;rRL~NRHc3Xmn%lVWO@}2bZh8mMM!?y-I+ZM5FX0N*AvpIYGGD`R+c%wFj9zRX? zkW`$}+^nfK`QY>M&Hesrb7^KWV|`p(P(bLwr!(biZyoS>A^i3F*sP`{v~Ggw&=$Gf z$N%dDUofm>_oLRDdbEJ!HinB$`P&A6++7*6az5rFz?FKfiu{Tn%NE^5bzD#eD&fg2 z6Xy^mn2|PjcTU>v-QH^-T;8*3?cD?HGLw^AZcWzQZ{xFn-$lA5HgXmZj_x(y^>;Ai z=&2_suIe6me6wj-U*n$26r5<>nApUK%O<*fyf%O3<%F-}3%<{by?VssOvzn& zF7G`0hi2uLeWn|qmy8~szi3Iwl9-&u*=H-F&rH2L(^zWU+a^e$Vn=wP$`*rU{@1)iG_GRv_FjE4M(H`^Lcz8+;;Myc-2 zYR1&&gO-$QxS?)F`-S=2^XZycW3D29T#Atx#am`S~Y|qI< zyA4|^{Pv1%iB3%`P0EdYBgb&BWQNYW65**(HBj#tiYs+~_Ol4x8C0`L7%^O&wTp zLvqB|u3Qy6dgsaX!;YH33xe_OK@%s+5CxNh7czOABo#GHiKIvF{5*1armz@k6B!8h ztU&!*k*UH*>`}S=E=-zml_|~bX#ePTwL*(ILDTH*vI0}GLH1g^l0!u ziMCrLWTB*@pd{b@d_|Rc`f?6-PwLcOmTAZbG}{pSVzbv| zAK4!|Q88n8;F8Ij*NqF>RJ)l+eqFb+=@R|2vuG^k((`>7H3psuqB0umJLMG?gB%Ip z9@+xyI(QPcyUS>?{EPcz1xvs|;3B*)%=PF+fbHiW(VqYe*~srT)) z_spKZ4=kK4+0Dc6eX`DzOA$rB9sl*=7N%qHutP@AxAOI|nK}+#c)0pr!Pn~_uFmPb zYv0!v#Wn&FA}rfj^!9nppKmIcP#w|uGM6b#0c!w`@mGBdo+iLb=^+XnI>jVLa-ty#(ZilTM|Nf<7RD zBp0GSgpV1Y5oqicx~&e&{$GIT{yRiOu`Dk$?-O2kUzu$(KTsCn*+y9Z=r}`PMsXWx z+wRkETf}KX+5BvqA4Y3|g{4bkXA@}HkHj9M(}3*csoERhLZ2di|GGb#3Om+hPni=b$JUmSIV4TZ)8dZ;$ECsYOZWV<*_y#V0<}u6#b^Wu-$bjkbg5 zV0#>PDv21QaXVJ$%aCd{ZPCSWpgB2;A<+>UJ8j`%tP+ItC~0Njl-*@4+spkW&8EYy zZa{n_Dt2cn)+i;~s!SAworT z>b{Tej$S68yz(W3D~UiVvctcoI>(V_@v_bBv2-UY`JJ(oM))|=u{|X#g{aa<;h%-) zq>cT4>ja2J3sPqh=RKsx^AKC|s!Y*=NA_vhZpq;_|A8C~uCeJs zpj~y_jehhk0CE(wg4S%ffx0(oZf~R@uzQ!l0;d;vAImgbG7_C}A!7%zQ&MAY570iv z0ep{QY*A~M^+{#f##YvW1^pr-0$wucj=*!@sWt^^0k;Xm$0_|%+EI|>8a!AL%`kCE z(!%E@vMM%LvteCQE>V6)_Gg)k@dqp{Em>I-eFDHmQRWA@!^+Kd4^V5c@v}wQ=kI4m zAbyq4-&e%Oz1bFSSuBt$WcE&OFNN0Q*a!39#o^u_W8%bknhi3*kr~Ceyw)hERx4rq zX8Vh6lE5x}6Sv~s8ZTaluDh^!x^-20DtYF*JNvV;WMR4pl{QmSC&#ReDIdR*7B4o# zisV~#FKw7@4eQ3GNc-3nnmt3K2PCW5;u(uacW!Lo1eS~G>;ttpc3`rqgpvTqr3tgE zRy4g}5LyV&l|6_FZpEBfnaTYmU_2r2S$0ATjpxdtJB1yHcgg(jZF% zb;5$#QQ5+#54Y_D+Z&_6imX^$+}f~vHW}Xkdbu{d?zXYb)J8jwey_Xx-{N#vp z!XtZo>)r-eRjDN}-XiaT!u6e`B;1l?qq@;W7CLPA7W}aBYwI!Fq@7PWJ2`vq7x1Nx z99LpfebHnS>lS@rIR(t!LY4>8=25);RUe8mo7+$(YJN$QWsAu<5J6x6jp{d&YW;~{ zobnXPdKl?pO;>l5wZDrqXCdQMeQh(#wkD|mAT3F~$7GE9Z&bY$`CVHUHoU@M#Vo_j zEg5O9Xpu&bbYt~ZU=J)CyZ(jlx%N~*2U&{R#v4cc*Q_}I;qA0on?nAf_3wzgx-N4T zv_3Th^<;gNW<#!KOVo%{zNGiA_T!Jv%}5#GkL-QQQG|KhcQSYXru4IxSl+BOOrpke z64p@m1a2A1-j14UU)c{XTs@tazKcq@{smx73QJ?%Plfwcj&2zc%M7&?_&b%RTo8K@ zbM-&ihCCYs9&0`(SQp`mUP^cpqS~@Yqc2MxLll%ta0;lWuyU}fGzpCfq+^Nd!HUPr zg~U9Hp`p9t=gJcx@i>F`#XuI<@6%%F#>03uDowcz>I`V;F2&VLh#e}UM9r^1OzQ&n zG&+SCJxbf5Lq1_xJ$8%iX+>P;8nOs*k5ThktQ0o}ISw%iQxbDE+ajKAC{zI7CFCIt z+MkJA!^91#jMAm1(|7H1G{j(7g-~r>t+wXs$xO}l&N1TxjgMMt{)B7uf{AvyVQyMul749vtA~hobhIQ9q)l7`Qy(mXwxP^^-2JJqjdTT3Oo0Ved zE^JjbtS$T>oT2m$aLK)5}K0_}jE zAL)vCqv}zU4I*q0|lCsXQKvmDD6kjG7`2YhF zfArdb*V2%nPbQn$zAtlJ?Kb&fIE2Krb1%dbfErw?fN6t@hyYkU(*V#EoX}p_@ z38hj(wZ^aZbM&1$*D`jH?K5!_@>L({H~jdB`#z_jMYrntt007D9pCIepM1`z2jbfp z$9o$usA0#~jQS9a*#ci2~Rk9m$5t#s26NT&2`_(pirpbNOSyKUShRf6&j9ea zoJ~wn8H*3neS}k=@zl0aoDT!hFAP^egak)}t3>LJ|9qMOYVRFFzi?rXJ+5E5z|Y>8 z!bEr?$Zc$5qR=F38vB;n*QwZg3WlIWxCN-fPKi*L^#I3t>kvM2M2Ef&S+$L}Ij0&^ zU{(rcmcM9Ws|l`-Z#a7bu$lr5;3}VX5Ya9q`!Tm6mm+s4Xm1|i6B!h(3iVmy)4{MD zhVVNjncKApL(RHcrQtWo$`ia6W{Y46E$cy?R`nh&qRdRg6Y~CAGRJa;PwY6ldxC`E zFeqPz6p9XR|8j5s9E$x*ByWf(~qsR|CA0z;HDEd>q<+_dv!ukRduC+7zR3)Ac3p4wC->qPxl{nVqp-hLZ?M?$Y{vjda## zMq08Ip_RIp!zjZHgZB3}38RfjC2B~Q)ufVkv&pZ%!Sgj{0S__o(m!oXWKTK;&JNF6 zN<76zIMRvvQqvgBJEYKAmZv zJ{H{}BtNcYBr8#H80;&fI!W)65a!-KVO0o{tX<(#`D9N>+0kO$)r_Bmi3uBY$o2V(ej*YgQJ52!^EThX1Z5K__&(d;?U*y6V*E z(p14lT+uN`pO;_1lUS}YFDNxO0*?lyuFI;j#`gpXG%>T?ndXr~^HvDmAVD_(hFL=7 zG11Do2i1keVUsHJ&c3~`RlbqX+5nY7{C_92!hM^Sh7^$@C&qZ;Tb#AqoCb!4S1NI3 z%vxh1QBTl!7$DLa9Vr@=z{DjPsvd*U*RZf_C|hSFw0_8FhkSqDgY0tvED@l$uT#w) z`MbAt|FX?%4}ftW-xDP&toaYsUiH+6aYbeOZgJyeG^dCyHM034J zbShQKNY~*eREE#s&xd%|dtmfnX;39wjhZ`0Ppx#oa5)SLR*J-Nj4w(M0K5J5piwblzc+IYVWJRd!Zg3Sub@oRtyNN&n1)V}hlK z85Q}k%3N+?g9S((TQ8kmZkjtv%7F;j(c^Xlj>*T>KS2yjWM0X$yu>v}C4&3`tX&wOLPhIM~vJW^s`ZGm?r6^%z8l!?s(%r$}18mN2+A}_<8G{{Sb`V|Q2}>CRcQMsOoGoa; z7wyUctr>}(scVogm{xrZqxxXDRu$0^JaF-~IYn|KPD+7(nEN$SBPG;E&^pK6=rP-> z{MMRbK>sW4*7#K3XTqx)mD@rvofl2t{4`fs_S-QwE^xWCzUyG_w}Znjl*gL9?*i9e z+sa!_xReWw1SzFe1#4yAnRjfEY1JQ!uWn@)Xwt3ss{Yw7q@5BCeR_Cn-kXEw5Vp5# z@IJF(-hM`-(7HoN^x3vcWaXl`VYk`mfx)8QMP-ag2*?HTosciqX%3bHd)D`}ewptq z14CQ5wmEH$_^`-#%yAAuAIdqc*=*-~9#4w}a;MpN0z-fFO{vQuK)#$0`Y(!4aVot#^QL`qR%Xn-Uc zkCIMqEP7M(Y~rt#l!fsVbDN*NvRcj4P!fw?EpC3j=g%91u4i@4s9AyXH5tT8iry{> z`|rxisoIvY1uL;~@a4ni*GvAq3Hmc$3nvsxUyvb60pnHPpSKRr$Cm*vo#2EC`=vU$aRQ@x^iL1{v zlCLj+e_Lb&nAm)-`2%EiP1`*G_VTGk2kUE!5iBx=N43#mvK(iSkJDHHKNs0 z?RHw$dE}0^FmG1{AmfsQ?xpx_3kt%Yd33L3d*TT}c1}j|Jz7EI>Ir#kar1B@K9jra zSoe$A#P~}?XH^K=)iX0$>A%y9jl-<&4UdiYxMnW5@;6c^DD6%tGZl>NHwG?dVLbnV zq!(hCaRhVAnbH*z_3mLI$DLC^W0#axlktS89`N9TCvCa4+{|;TbvO@C$APU&D(=nW zTRyq4*r#T9!_(sl=lT>R!4>=03FqRLz;9LNU)kVRQ3_~!{H7j99G3%8A@+xDOWI8B zYiDw6wMhYEgOcWU8A6-8Z+iwxqc@gbFxTt7jQ(NRZ`UQv`vXL+YAt-P`N{Q1| zDPU+OQkI(YF4rzl_&!JU@E;Z2M3e zFeiSQN)lPR<&K+c(hHf%hvb$8q#$KCX|Cy$Ew8K!o{8`ckGXcV$k>jy1!krM*(77@ zGw&VE6%*oH4w5xJa+6*4aitEUSp}RU%^S=YdNsUI93ls=?1?&*Bn-l~ox1w?ww28+I$fGt z;V{)X#6dVE_$(?k8dbT#i^USif0B^Xb>`I9t||woPWY5t5<_vL(t|-^n`1|Ayk|7< zL8(J=^}QXzZ@3I1e3Y+@L%x{-vX4wQiElE}m4nB~Buw?fPKz&NmBFXE6gHwi^KEx~ zh98u3D$H*>I?}T`RZfL`n0MTc#R5Dp$z{`8Keolw*MW8@)RzdyYAAZxe+Av+WqW_fxY~3DCSC)pg#uLP%WfKNt`_vAR30(N8Kh` zZiu1>7S_Y;P6JnYPj}k<*^Cqwu9o}cWKD%@PtO*Te!MENX@<|Qc0RbJzoXIT218Xm zU~s3;y}j0;CMK2Z4FBbG%j5Eo<-b+3tm!(Y)A?8&WcgQ(0 z2GRoswbavkT&L;UBCpE_;8>97!d_KW3y?lU9OV}A{Caa|^s_lk=A*!Mb&5&DoUI!epKd>d@u?f*U7f$tL zI0yq_~sbLmM) zOx5yzTqE7>bJ?@D2kk2&=$($W$Vrin$;ooAN2WyK$bcE&;l()lz!8KFXBP(?FT z;mP#k55i)6K9t2aCF}{N_k*UUxUFJa6R&eT`wqnpWtWj*vF0Z2Mhhl1VTtvLIfcu#KCY9)2#k^?3>EUHqF?Z&lDav$I1cR- zVaD>Spw$a$Q4|=fnFVjp0t^=%>J4lW%4u@t{EdoQN0zNW3)kotS-p;byHt^9|bHI>(CP1_M460E7IbEOmW8j+=|k=$r| z4)Pb3y~nSXXy4)OYXp;2!E{w~)#KgYYgtl6!eJwe^6Q3MK2&YDC}RqkU0anLMn^Os)+_A~mX zgU&Kz*14u7N~vwA_yYkw8p5#@nKbUT-h5Ar23}~4&dx-H*p8;u^I9=K_G{kX(2zpb z9UK(k7aO(Ll2%oZn?GbB_HK*2x9n0NIYR)N4+$%lLN55aX~Tv-VF^3A3!kU_czF4V zRcqT)VYki8d^V)x{E)WzgUzV9a4I%NYX;c0@yw?r6KutDQgJ%$^7?yc<~H&HR10+3 zBL(;B_l4*C{%vwgM{Qi}o`ROLIM$Pd)m1Dev5)tUSJN5ypunt6ZR<2{CZokm!97+% z$IGct&H%$#Qu@GV4Pgj)Q+j*U*mv4{ZnSrK<%uq%^UHc{XJ65{~2tGr2$ z_CLm@{K#vLG@PSfCZ$TxvYN!n{?-N$4mfXpwCYJNKjz?0_u4O99|deHUDcX<`e(%M zwa;qob+};XNbd&4x4(7D|E`ZZ(XFx_@k)AR|$vtiSsC_i5|wwgi2b0-Pr{q@-;{+7NpqBlMwOuLfd& zP9vpi%m!9*z4JVNO8NKN*^0e0Y?Zb`K8i)gJ5OPn)UsGp-=O}PBDl*6zXOw zwSf;00kQv#Y=1wp11=`MXY5!+r?NnphXS2MA?BI5OpR=>&B1BPy-u-6;{cKhLyk(2 zsnf6@bnHVw@q1*47+y1|WBK00F)7$RY(fT@b&68jz#_d0-|2wk)Y9+|S=D+A8&grc zgHBzf)!WdB4GQ!w3YMxRk)yIGW-dLE2Jb1X3>}`Tw$giGuYQI#C?ct>s!^@ad$3ML znN>Vgm$}>R7@CIlNdUcr(DDni>>i0Y4YMo@9#R7a;y|J<>#hmRMh$EQcG>6>q!GT+ zpI|nu`XQF$ls0SQBVb5L7*f`46&KXx6Dev;1_hRJboZ`L0mb2j257f|woygFUlHc* z+hcfLjJ?Ru6R3&Lbj0RqWSNQoDm8w)7Q07>J@I-oe;oHrhx%7(a7>Lq&Oojb`fpc~ z_bACnDP%KUUJS)w@hxwinz%5M-Ec%~ZD2JN#E!9OMt z?lX+99YL()!w*s5?jKOwyoqRl_!+|81Bd~9;%`69pfcLx3{t6^ZMrUm2dI℞!!p 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 Yl`jGz%R9~u(Lcw{+`;~ZL;$@14{R%g2><{9 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/formula/formula.html b/public/js/ueditor/dialogs/formula/formula.html new file mode 100644 index 0000000..735fd2b --- /dev/null +++ b/public/js/ueditor/dialogs/formula/formula.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + diff --git a/public/js/ueditor/dialogs/formula/formula.js b/public/js/ueditor/dialogs/formula/formula.js new file mode 100644 index 0000000..33809c3 --- /dev/null +++ b/public/js/ueditor/dialogs/formula/formula.js @@ -0,0 +1,71 @@ +function preg_quote(str, delimiter) { + // Quote regular expression characters plus an optional character + // + // version: 1107.2516 + // discuss at: http://phpjs.org/functions/preg_quote + // + original by: booeyOH + // + improved by: Ates Goral (http://magnetiq.com) + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + bugfixed by: Onno Marsman + // + improved by: Brett Zamir (http://brett-zamir.me) + // * example 1: preg_quote("$40"); + // * returns 1: '\$40' + // * example 2: preg_quote("*RRRING* Hello?"); + // * returns 2: '\*RRRING\* Hello\?' + // * example 3: preg_quote("\\.+*?[^]$(){}=!<>|:"); + // * returns 3: '\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:' + return (str + '').replace(new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\' + (delimiter || '') + '-]', 'g'), '\\$&'); +} + +var Formula = { + init: function () { + // console.log('Formula.init') + Formula.initValue(); + Formula.initEvent(); + Formula.initSubmit(); + }, + render: function () { + var content = $.trim($('#editor').val()); + if (!content) { + $('#preview').hide(); + return; + } + content = encodeURIComponent(content); + var formulaConfig = editor.getOpt('formulaConfig'); + var src = formulaConfig.imageUrlTemplate.replace(/\{\}/, content); + $('#previewImage').attr('src', src); + $('#preview').show(); + }, + initValue: function () { + var img = editor.selection.getRange().getClosedNode(); + if (img && img.getAttribute('data-formula-image') !== null) { + var value = img.getAttribute('data-formula-image'); + if (value) { + $('#editor').val(decodeURIComponent(value)); + Formula.render(); + } + } + }, + initEvent: function () { + var changeTimer = null; + // console.log('Formula.initEvent'); + $('#editor').on('change keypress', function () { + changeTimer && clearTimeout(changeTimer); + changeTimer = setTimeout(function () { + Formula.render(); + }, 1000); + }); + $('#inputDemo').on('click', function () { + $('#editor').val('f(a) = \\frac{1}{2\\pi i} \\oint\\frac{f(z)}{z-a}dz'); + Formula.render(); + }); + }, + initSubmit: function () { + dialog.onok = function () { + editor.execCommand('formula', $.trim($('#editor').val())); + editor.fireEvent('saveScene'); + }; + dialog.oncancel = function () { + }; + } +}; diff --git a/public/js/ueditor/dialogs/help/help.css b/public/js/ueditor/dialogs/help/help.css new file mode 100644 index 0000000..4478475 --- /dev/null +++ b/public/js/ueditor/dialogs/help/help.css @@ -0,0 +1,7 @@ +.wrapper{width: 370px;margin: 10px auto;zoom: 1;} +.tabbody{height: 360px;} +.tabbody .panel{width:100%;height: 360px;position: absolute;background: #fff;} +.tabbody .panel h1{font-size:26px;margin: 5px 0 0 5px;} +.tabbody .panel p{font-size:12px;margin: 5px 0 0 5px;} +.tabbody table{width:90%;line-height: 20px;margin: 5px 0 0 5px;;} +.tabbody table thead{font-weight: bold;line-height: 25px;} \ No newline at end of file diff --git a/public/js/ueditor/dialogs/help/help.html b/public/js/ueditor/dialogs/help/help.html new file mode 100644 index 0000000..2fffafd --- /dev/null +++ b/public/js/ueditor/dialogs/help/help.html @@ -0,0 +1,82 @@ + + + + 帮助 + + + + + +
    +
    + + +
    +
    +
    +

    UEditor Plus

    +

    +

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ctrl+b
    ctrl+c
    ctrl+x
    ctrl+v
    ctrl+y
    ctrl+z
    ctrl+i
    ctrl+u
    ctrl+a
    shift+enter
    alt+z
    +
    +
    +
    + + + diff --git a/public/js/ueditor/dialogs/help/help.js b/public/js/ueditor/dialogs/help/help.js new file mode 100644 index 0000000..9a2272e --- /dev/null +++ b/public/js/ueditor/dialogs/help/help.js @@ -0,0 +1,56 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-9-26 + * Time: 下午1:06 + * To change this template use File | Settings | File Templates. + */ +/** + * tab点击处理事件 + * @param tabHeads + * @param tabBodys + * @param obj + */ +function clickHandler( tabHeads,tabBodys,obj ) { + //head样式更改 + for ( var k = 0, len = tabHeads.length; k < len; k++ ) { + tabHeads[k].className = ""; + } + obj.className = "focus"; + //body显隐 + var tabSrc = obj.getAttribute( "tabSrc" ); + for ( var j = 0, length = tabBodys.length; j < length; j++ ) { + var body = tabBodys[j], + id = body.getAttribute( "id" ); + body.onclick = function(){ + this.style.zoom = 1; + }; + if ( id != tabSrc ) { + body.style.zIndex = 1; + } else { + body.style.zIndex = 200; + } + } + +} + +/** + * TAB切换 + * @param tabParentId tab的父节点ID或者对象本身 + */ +function switchTab( tabParentId ) { + var tabElements = $G( tabParentId ).children, + tabHeads = tabElements[0].children, + tabBodys = tabElements[1].children; + + for ( var i = 0, length = tabHeads.length; i < length; i++ ) { + var head = tabHeads[i]; + if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head ); + head.onclick = function () { + clickHandler(tabHeads,tabBodys,this); + } + } +} +switchTab("helptab"); + +document.getElementById('version').innerHTML = parent.UE.version; \ No newline at end of file diff --git a/public/js/ueditor/dialogs/image/image.css b/public/js/ueditor/dialogs/image/image.css new file mode 100644 index 0000000..d494fec --- /dev/null +++ b/public/js/ueditor/dialogs/image/image.css @@ -0,0 +1,718 @@ +@charset "utf-8"; +/* dialog样式 */ +.wrapper { + zoom: 1; + width: 630px; + *width: 626px; + height: 380px; + margin: 0 auto; + padding: 10px; + position: relative; + font-family: sans-serif; +} + +/*tab样式框大小*/ +.tabhead { + float:left; +} +.tabbody { + width: 100%; + height: 346px; + position: relative; + clear: both; +} + +.tabbody .panel { + position: absolute; + width: 0; + height: 0; + background: #fff; + overflow: hidden; + display: none; +} + +.tabbody .panel.focus { + width: 100%; + height: 346px; + display: block; +} + +/* 图片对齐方式 */ +.alignBar{ + float:right; + margin-top: 5px; + position: relative; +} + +.alignBar .algnLabel{ + float:left; + height: 20px; + line-height: 20px; +} + +.alignBar #alignIcon{ + zoom:1; + _display: inline; + display: inline-block; + position: relative; +} +.alignBar #alignIcon span{ + float: left; + cursor: pointer; + display: block; + width: 19px; + height: 17px; + margin-right: 3px; + margin-left: 3px; + background-image: url(./images/alignicon.jpg); +} +.alignBar #alignIcon .none-align{ + background-position: 0 -18px; +} +.alignBar #alignIcon .left-align{ + background-position: -20px -18px; +} +.alignBar #alignIcon .right-align{ + background-position: -40px -18px; +} +.alignBar #alignIcon .center-align{ + background-position: -60px -18px; +} +.alignBar #alignIcon .none-align.focus{ + background-position: 0 0; +} +.alignBar #alignIcon .left-align.focus{ + background-position: -20px 0; +} +.alignBar #alignIcon .right-align.focus{ + background-position: -40px 0; +} +.alignBar #alignIcon .center-align.focus{ + background-position: -60px 0; +} + + + + +/* 远程图片样式 */ +#remote { + z-index: 200; +} + +#remote .top{ + width: 100%; + margin-top: 25px; +} +#remote .left{ + display: block; + float: left; + width: 300px; + height:10px; +} +#remote .right{ + display: block; + float: right; + width: 300px; + height:10px; +} +#remote .row{ + margin-left: 20px; + clear: both; + height: 40px; +} + +#remote .row label{ + text-align: center; + width: 50px; + zoom:1; + _display: inline; + display:inline-block; + vertical-align: middle; +} +#remote .row label.algnLabel{ + float: left; + +} + +#remote input.text{ + width: 150px; + padding: 3px 6px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +#remote input.text:focus { + outline: 0; +} +#remote #url{ + width: 400px; + margin-bottom: 2px; +} +#remote #imageSelect{ + width: 100px; + display: inline-block; + background: #FFF; + border: 1px solid #EEE; + line-height: 26px; + text-align: center; + color: #333; + text-decoration: none; + border-radius: 3px; + vertical-align: top; +} +#remote #width, +#remote #height{ + width: 30px; + margin-left: 2px; + margin-right: 2px; + text-align:center; +} +#remote #border, +#remote #vhSpace, +#remote #title{ + width: 180px; + margin-right: 5px; +} +#remote #lock{ + display:inline-block; + vertical-align: middle; +} +#remote #lockicon{ + zoom: 1; + _display:inline; + display: inline-block; + width: 20px; + height: 20px; + background: url("../../themes/default/images/lock.gif") -13px -13px no-repeat; + vertical-align: middle; +} +#remote #preview{ + clear: both; + width: 260px; + height: 240px; + z-index: 9999; + margin-top: 10px; + background-color: #eee; + overflow: hidden; +} + +/* 上传图片 */ +.tabbody #upload.panel { + width: 0; + height: 0; + overflow: hidden; + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); + background: #fff; + display: block; +} + +.tabbody #upload.panel.focus { + width: 100%; + height: 346px; + display: block; + clip: auto; +} + +#upload .queueList { + margin: 0; + width: 100%; + height: 100%; + position: absolute; + overflow: hidden; +} + +#upload p { + margin: 0; +} + +.element-invisible { + width: 0 !important; + height: 0 !important; + border: 0; + padding: 0; + margin: 0; + overflow: hidden; + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); +} + +#upload .placeholder { + margin: 10px; + border: 2px dashed #e6e6e6; + *border: 0px dashed #e6e6e6; + height: 172px; + padding-top: 150px; + text-align: center; + background: url(./images/image.png) center 70px no-repeat; + color: #cccccc; + font-size: 18px; + position: relative; + top:0; + *top: 10px; +} + +#upload .placeholder .webuploader-pick { + font-size: 18px; + background: #00b7ee; + border-radius: 3px; + line-height: 44px; + padding: 0 30px; + *width: 120px; + color: #fff; + display: inline-block; + margin: 0 auto 20px auto; + cursor: pointer; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} + +#upload .placeholder .webuploader-pick-hover { + background: #00a2d4; +} + + +#filePickerContainer { + text-align: center; +} + +#upload .placeholder .flashTip { + color: #666666; + font-size: 12px; + position: absolute; + width: 100%; + text-align: center; + bottom: 20px; +} + +#upload .placeholder .flashTip a { + color: #0785d1; + text-decoration: none; +} + +#upload .placeholder .flashTip a:hover { + text-decoration: underline; +} + +#upload .placeholder.webuploader-dnd-over { + border-color: #999999; +} + +#upload .filelist { + list-style: none; + margin: 0; + padding: 0; + overflow-x: hidden; + overflow-y: auto; + position: relative; + height: 300px; +} + +#upload .filelist:after { + content: ''; + display: block; + width: 0; + height: 0; + overflow: hidden; + clear: both; + position: relative; +} + +#upload .filelist li { + width: 113px; + height: 113px; + background: url(./images/bg.png); + text-align: center; + margin: 9px 0 0 9px; + *margin: 6px 0 0 6px; + position: relative; + display: block; + float: left; + overflow: hidden; + font-size: 12px; +} + +#upload .filelist li p.log { + position: relative; + top: -45px; +} + +#upload .filelist li p.title { + position: absolute; + top: 0; + left: 0; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + top: 5px; + text-indent: 5px; + text-align: left; +} + +#upload .filelist li p.progress { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + height: 8px; + overflow: hidden; + z-index: 50; + margin: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: 0 0 0; +} + +#upload .filelist li p.progress span { + display: none; + overflow: hidden; + width: 0; + height: 100%; + background: #1483d8 url(./images/progress.png) repeat-x; + + -webit-transition: width 200ms linear; + -moz-transition: width 200ms linear; + -o-transition: width 200ms linear; + -ms-transition: width 200ms linear; + transition: width 200ms linear; + + -webkit-animation: progressmove 2s linear infinite; + -moz-animation: progressmove 2s linear infinite; + -o-animation: progressmove 2s linear infinite; + -ms-animation: progressmove 2s linear infinite; + animation: progressmove 2s linear infinite; + + -webkit-transform: translateZ(0); +} + +@-webkit-keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +@-moz-keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +@keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +#upload .filelist li p.imgWrap { + position: relative; + z-index: 2; + line-height: 113px; + vertical-align: middle; + overflow: hidden; + width: 113px; + height: 113px; + + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; + + -webit-transition: 200ms ease-out; + -moz-transition: 200ms ease-out; + -o-transition: 200ms ease-out; + -ms-transition: 200ms ease-out; + transition: 200ms ease-out; +} + +#upload .filelist li img { + width: 100%; +} + +#upload .filelist li p.error { + background: #f43838; + color: #fff; + position: absolute; + bottom: 0; + left: 0; + height: 28px; + line-height: 28px; + width: 100%; + z-index: 100; + display:none; +} + +#upload .filelist li .success { + display: block; + position: absolute; + left: 0; + bottom: 0; + height: 40px; + width: 100%; + z-index: 200; + background: url(./images/success.png) no-repeat right bottom; + background: url(./images/success.gif) no-repeat right bottom \9; +} + +#upload .filelist li.filePickerBlock { + width: 113px; + height: 113px; + background: url(./images/image.png) no-repeat center 12px; + border: 1px solid #eeeeee; + border-radius: 0; +} +#upload .filelist li.filePickerBlock div.webuploader-pick { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + opacity: 0; + background: none; + font-size: 0; +} + +#upload .filelist div.file-panel { + position: absolute; + height: 0; + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#80000000', endColorstr='#80000000') \0; + background: rgba(0, 0, 0, 0.5); + width: 100%; + top: 0; + left: 0; + overflow: hidden; + z-index: 300; +} + +#upload .filelist div.file-panel span { + width: 24px; + height: 24px; + display: inline; + float: right; + text-indent: -9999px; + overflow: hidden; + background: url(./images/icons.png) no-repeat; + background: url(./images/icons.gif) no-repeat \9; + margin: 5px 1px 1px; + cursor: pointer; + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +#upload .filelist div.file-panel span.rotateLeft { + display:none; + background-position: 0 -24px; +} + +#upload .filelist div.file-panel span.rotateLeft:hover { + background-position: 0 0; +} + +#upload .filelist div.file-panel span.rotateRight { + display:none; + background-position: -24px -24px; +} + +#upload .filelist div.file-panel span.rotateRight:hover { + background-position: -24px 0; +} + +#upload .filelist div.file-panel span.cancel { + background-position: -48px -24px; +} + +#upload .filelist div.file-panel span.cancel:hover { + background-position: -48px 0; +} + +#upload .statusBar { + height: 45px; + border-bottom: 1px solid #dadada; + margin: 0 10px; + padding: 0; + line-height: 45px; + vertical-align: middle; + position: relative; +} + +#upload .statusBar .progress { + border: 1px solid #1483d8; + width: 198px; + background: #fff; + height: 18px; + position: absolute; + top: 12px; + display: none; + text-align: center; + line-height: 18px; + color: #6dbfff; + margin: 0 10px 0 0; +} +#upload .statusBar .progress span.percentage { + width: 0; + height: 100%; + left: 0; + top: 0; + background: #1483d8; + position: absolute; +} +#upload .statusBar .progress span.text { + position: relative; + z-index: 10; +} + +#upload .statusBar .info { + display: inline-block; + font-size: 14px; + color: #666666; +} + +#upload .statusBar .btns { + position: absolute; + top: 7px; + right: 0; + line-height: 30px; +} + +#filePickerBtn { + display: inline-block; + float: left; +} +#upload .statusBar .btns .webuploader-pick, +#upload .statusBar .btns .uploadBtn, +#upload .statusBar .btns .uploadBtn.state-uploading, +#upload .statusBar .btns .uploadBtn.state-paused { + background: #ffffff; + border: 1px solid #cfcfcf; + color: #565656; + padding: 0 18px; + display: inline-block; + border-radius: 3px; + margin-left: 10px; + cursor: pointer; + font-size: 14px; + float: left; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +#upload .statusBar .btns .webuploader-pick-hover, +#upload .statusBar .btns .uploadBtn:hover, +#upload .statusBar .btns .uploadBtn.state-uploading:hover, +#upload .statusBar .btns .uploadBtn.state-paused:hover { + background: #f0f0f0; +} + +#upload .statusBar .btns .uploadBtn, +#upload .statusBar .btns .uploadBtn.state-paused{ + background: #00b7ee; + color: #fff; + border-color: transparent; +} +#upload .statusBar .btns .uploadBtn:hover, +#upload .statusBar .btns .uploadBtn.state-paused:hover{ + background: #00a2d4; +} + +#upload .statusBar .btns .uploadBtn.disabled { + pointer-events: none; + filter:alpha(opacity=60); + -moz-opacity:0.6; + -khtml-opacity: 0.6; + opacity: 0.6; +} + + + +/* 图片管理样式 */ +#online { + width: 100%; + height: 336px; + padding: 10px 0 0 0; +} +#online #imageList{ + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: relative; +} +#online ul { + display: block; + list-style: none; + margin: 0; + padding: 0; +} +#online li { + float: left; + display: block; + list-style: none; + padding: 0; + width: 113px; + height: 113px; + margin: 0 0 9px 9px; + *margin: 0 0 6px 6px; + background-color: #eee; + overflow: hidden; + cursor: pointer; + position: relative; +} +#online li.clearFloat { + float: none; + clear: both; + display: block; + width:0; + height:0; + margin: 0; + padding: 0; +} +#online li img { + cursor: pointer; +} +#online li .icon { + cursor: pointer; + width: 113px; + height: 113px; + position: absolute; + top: 0; + left: 0; + z-index: 2; + border: 0; + background-repeat: no-repeat; +} +#online li .icon:hover { + width: 107px; + height: 107px; + border: 3px solid #1094fa; +} +#online li.selected .icon { + background-image: url(images/success.png); + background-image: url(images/success.gif)\9; + background-position: 75px 75px; +} +#online li.selected .icon:hover { + width: 107px; + height: 107px; + border: 3px solid #1094fa; + background-position: 72px 72px; +} diff --git a/public/js/ueditor/dialogs/image/image.html b/public/js/ueditor/dialogs/image/image.html new file mode 100644 index 0000000..7a66c39 --- /dev/null +++ b/public/js/ueditor/dialogs/image/image.html @@ -0,0 +1,119 @@ + + + + + ueditor图片对话框 + + + + + + + + + + + + + + +
    +
    + + + +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    + + + +
    +
    +
    +
    + +   px +   px + +
    +
    + + px +
    +
    + + px +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + 0% + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
      +
    • +
    +
    +
    + + +
    +
    +
    + + + + +
    +
    + + + diff --git a/public/js/ueditor/dialogs/image/image.js b/public/js/ueditor/dialogs/image/image.js new file mode 100644 index 0000000..d7d1c62 --- /dev/null +++ b/public/js/ueditor/dialogs/image/image.js @@ -0,0 +1,1021 @@ +/** + * User: Jinqn + * Date: 14-04-08 + * Time: 下午16:34 + * 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片 + */ +(function () { + + var remoteImage, + uploadImage, + onlineImage; + var editorOpt = {}; + + window.onload = function () { + editorOpt = editor.getOpt('imageConfig'); + initTabs(); + initAlign(); + initButtons(); + }; + + /* 初始化tab标签 */ + function initTabs() { + var tabs = $G('tabhead').children; + for (var i = 0; i < tabs.length; i++) { + domUtils.on(tabs[i], "click", function (e) { + var target = e.target || e.srcElement; + setTabFocus(target.getAttribute('data-content-id')); + }); + } + if(!editorOpt.disableUpload){ + $G('tabhead').querySelector('[data-content-id="upload"]').style.display = 'inline-block'; + } + if(!editorOpt.disableOnline){ + $G('tabhead').querySelector('[data-content-id="online"]').style.display = 'inline-block'; + } + if(!!editorOpt.selectCallback){ + $G('imageSelect').style.display = 'inline-block'; + domUtils.on($G('imageSelect'), "click", function (e) { + editorOpt.selectCallback(editor,function(info){ + if(info){ + $G('url').value = info.path; + $G('title').value = info.name; + var img = new Image(); + img.onload = function(){ + $G('width').value = img.width; + $G('height').value = img.height; + remoteImage.setPreview(); + }; + img.onerror = function(){ + remoteImage.setPreview(); + }; + img.src = info.path; + } + }); + }); + } + var img = editor.selection.getRange().getClosedNode(); + if (img && img.tagName && img.tagName.toLowerCase() == 'img') { + setTabFocus('remote'); + } else { + setTabFocus('remote'); + } + } + + /* 初始化tabbody */ + function setTabFocus(id) { + if(!id) return; + var i, bodyId, tabs = $G('tabhead').children; + for (i = 0; i < tabs.length; i++) { + bodyId = tabs[i].getAttribute('data-content-id'); + if (bodyId == id) { + domUtils.addClass(tabs[i], 'focus'); + domUtils.addClass($G(bodyId), 'focus'); + } else { + domUtils.removeClasses(tabs[i], 'focus'); + domUtils.removeClasses($G(bodyId), 'focus'); + } + } + switch (id) { + case 'remote': + remoteImage = remoteImage || new RemoteImage(); + break; + case 'upload': + setAlign(editor.getOpt('imageInsertAlign')); + uploadImage = uploadImage || new UploadImage('queueList'); + break; + case 'online': + setAlign(editor.getOpt('imageManagerInsertAlign')); + onlineImage = onlineImage || new OnlineImage('imageList'); + onlineImage.reset(); + break; + } + } + + /* 初始化onok事件 */ + function initButtons() { + + dialog.onok = function () { + var remote = false, list = [], id, tabs = $G('tabhead').children; + for (var i = 0; i < tabs.length; i++) { + if (domUtils.hasClass(tabs[i], 'focus')) { + id = tabs[i].getAttribute('data-content-id'); + break; + } + } + + switch (id) { + case 'remote': + list = remoteImage.getInsertList(); + break; + case 'upload': + list = uploadImage.getInsertList(); + var count = uploadImage.getQueueCount(); + if (count) { + $('.info', '#queueList').html('' + '还有2个未上传文件'.replace(/[\d]/, count) + ''); + return false; + } + break; + case 'online': + list = onlineImage.getInsertList(); + break; + } + + if(list) { + editor.execCommand('insertimage', list); + remote && editor.fireEvent("catchRemoteImage"); + } + }; + } + + + /* 初始化对其方式的点击事件 */ + function initAlign(){ + /* 点击align图标 */ + domUtils.on($G("alignIcon"), 'click', function(e){ + var target = e.target || e.srcElement; + if(target.className && target.className.indexOf('-align') != -1) { + setAlign(target.getAttribute('data-align')); + } + }); + } + + /* 设置对齐方式 */ + function setAlign(align){ + align = align || 'none'; + var aligns = $G("alignIcon").children; + for(i = 0; i < aligns.length; i++){ + if(aligns[i].getAttribute('data-align') == align) { + domUtils.addClass(aligns[i], 'focus'); + $G("align").value = aligns[i].getAttribute('data-align'); + } else { + domUtils.removeClasses(aligns[i], 'focus'); + } + } + } + /* 获取对齐方式 */ + function getAlign(){ + var align = $G("align").value || 'none'; + return align == 'none' ? '':align; + } + + + /* 在线图片 */ + function RemoteImage(target) { + this.container = utils.isString(target) ? document.getElementById(target) : target; + this.init(); + } + RemoteImage.prototype = { + init: function () { + this.initContainer(); + this.initEvents(); + }, + initContainer: function () { + this.dom = { + 'url': $G('url'), + 'width': $G('width'), + 'height': $G('height'), + 'border': $G('border'), + 'vhSpace': $G('vhSpace'), + 'title': $G('title'), + 'align': $G('align') + }; + var img = editor.selection.getRange().getClosedNode(); + if (img) { + this.setImage(img); + } + }, + initEvents: function () { + var _this = this, + locker = $G('lock'); + + /* 改变url */ + domUtils.on($G("url"), 'keyup', updatePreview); + domUtils.on($G("border"), 'keyup', updatePreview); + domUtils.on($G("title"), 'keyup', updatePreview); + + domUtils.on($G("width"), 'keyup', function(){ + if(locker.checked) { + var proportion =locker.getAttribute('data-proportion'); + $G('height').value = Math.round(this.value / proportion); + } else { + _this.updateLocker(); + } + updatePreview(); + }); + domUtils.on($G("height"), 'keyup', function(){ + if(locker.checked) { + var proportion =locker.getAttribute('data-proportion'); + $G('width').value = Math.round(this.value * proportion); + } else { + _this.updateLocker(); + } + updatePreview(); + }); + domUtils.on($G("lock"), 'change', function(){ + var proportion = parseInt($G("width").value) /parseInt($G("height").value); + locker.setAttribute('data-proportion', proportion); + }); + + function updatePreview(){ + _this.setPreview(); + } + }, + updateLocker: function(){ + var width = $G('width').value, + height = $G('height').value, + locker = $G('lock'); + if(width && height && width == parseInt(width) && height == parseInt(height)) { + locker.disabled = false; + locker.title = ''; + } else { + locker.checked = false; + locker.disabled = 'disabled'; + locker.title = lang.remoteLockError; + } + }, + setImage: function(img){ + /* 不是正常的图片 */ + if (!img.tagName || img.tagName.toLowerCase() != 'img' && !img.getAttribute("src") || !img.src) return; + + var wordImgFlag = img.getAttribute("data-word-image"), + src = wordImgFlag ? wordImgFlag.replace("&", "&") : (img.getAttribute('_src') || img.getAttribute("src", 2).replace("&", "&")), + align = editor.queryCommandValue("imageFloat"); + + /* 防止onchange事件循环调用 */ + if (src !== $G("url").value) $G("url").value = src; + if(src) { + /* 设置表单内容 */ + $G("width").value = img.width || ''; + $G("height").value = img.height || ''; + $G("border").value = img.getAttribute("border") || '0'; + $G("vhSpace").value = img.getAttribute("vspace") || '0'; + $G("title").value = img.title || img.alt || ''; + setAlign(align); + this.setPreview(); + this.updateLocker(); + } + }, + getData: function(){ + var data = {}; + for(var k in this.dom){ + data[k] = this.dom[k].value; + } + return data; + }, + setPreview: function(){ + var url = $G('url').value, + ow = $G('width').value, + oh = $G('height').value, + border = $G('border').value, + title = $G('title').value, + preview = $G('preview'), + width, + height; + + width = ((!ow || !oh) ? preview.offsetWidth:Math.min(ow, preview.offsetWidth)); + width = width+(border*2) > preview.offsetWidth ? width:(preview.offsetWidth - (border*2)); + height = (!ow || !oh) ? '':width*oh/ow; + + if(url) { + preview.innerHTML = ''; + } + }, + getInsertList: function () { + var data = this.getData(); + if(data['url']) { + var img = { + src: data['url'], + _src: data['url'], + } + img._propertyDelete = [] + img.style = [] + if(data['width']){ + img.width = data['width']; + img.style.push('width:'+data['width']+'px'); + }else{ + img._propertyDelete.push('width'); + } + if(data['height']){ + img.height = data['height']; + img.style.push('height:'+data['height']+'px'); + }else{ + img._propertyDelete.push('height'); + } + if(data['border']){ + img.border = data['border']; + }else{ + img._propertyDelete.push('border'); + } + if(data['align']){ + img.floatStyle = data['align']; + }else{ + img._propertyDelete.push('floatStyle'); + } + if(data['vhSpace']){ + img.vspace = data['vhSpace']; + }else{ + img._propertyDelete.push('vspace'); + } + if(data['title']){ + img.alt = data['title']; + }else{ + img._propertyDelete.push('alt'); + } + if(img.style.length> 0){ + img.style = img.style.join(';'); + }else{ + img._propertyDelete.push('style'); + } + return [img]; + } else { + return []; + } + } + }; + + + + /* 上传图片 */ + function UploadImage(target) { + this.$wrap = target.constructor == String ? $('#' + target) : $(target); + this.init(); + } + UploadImage.prototype = { + init: function () { + this.imageList = []; + this.initContainer(); + this.initUploader(); + }, + initContainer: function () { + this.$queue = this.$wrap.find('.filelist'); + }, + /* 初始化容器 */ + initUploader: function () { + var _this = this, + $ = jQuery, // just in case. Make sure it's not an other libaray. + $wrap = _this.$wrap, + // 图片容器 + $queue = $wrap.find('.filelist'), + // 状态栏,包括进度和控制按钮 + $statusBar = $wrap.find('.statusBar'), + // 文件总体选择信息。 + $info = $statusBar.find('.info'), + // 上传按钮 + $upload = $wrap.find('.uploadBtn'), + // 上传按钮 + $filePickerBtn = $wrap.find('.filePickerBtn'), + // 上传按钮 + $filePickerBlock = $wrap.find('.filePickerBlock'), + // 没选择文件之前的内容。 + $placeHolder = $wrap.find('.placeholder'), + // 总体进度条 + $progress = $statusBar.find('.progress').hide(), + // 添加的文件数量 + fileCount = 0, + // 添加的文件总大小 + fileSize = 0, + // 优化retina, 在retina下这个值是2 + ratio = window.devicePixelRatio || 1, + // 缩略图大小 + thumbnailWidth = 113 * ratio, + thumbnailHeight = 113 * ratio, + // 可能有pedding, ready, uploading, confirm, done. + state = '', + // 所有文件的进度信息,key为file id + percentages = {}, + supportTransition = (function () { + var s = document.createElement('p').style, + r = 'transition' in s || + 'WebkitTransition' in s || + 'MozTransition' in s || + 'msTransition' in s || + 'OTransition' in s; + s = null; + return r; + })(), + // WebUploader实例 + uploader, + actionUrl = editor.getActionUrl(editor.getOpt('imageActionName')), + acceptExtensions = (editor.getOpt('imageAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, ''), + imageMaxSize = editor.getOpt('imageMaxSize'), + imageCompressBorder = editor.getOpt('imageCompressBorder'); + + if (!WebUploader.Uploader.support()) { + $('#filePickerReady').after($('
    ').html(lang.errorNotSupport)).hide(); + return; + } else if (!editor.getOpt('imageActionName')) { + $('#filePickerReady').after($('
    ').html(lang.errorLoadConfig)).hide(); + return; + } + + uploader = _this.uploader = WebUploader.create({ + pick: { + id: '#filePickerReady', + label: lang.uploadSelectFile + }, + accept: { + title: 'Images', + extensions: acceptExtensions, + mimeTypes: 'image/*' + }, + swf: '../../third-party/webuploader/Uploader.swf', + server: actionUrl, + fileVal: editor.getOpt('imageFieldName'), + duplicate: true, + fileSingleSizeLimit: imageMaxSize, // 默认 2 M + threads: 1, + compress: editor.getOpt('imageCompressEnable') ? { + width: imageCompressBorder, + height: imageCompressBorder, + // 图片质量,只有type为`image/jpeg`的时候才有效。 + quality: 90, + // 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false. + allowMagnify: false, + // 是否允许裁剪。 + crop: false, + // 是否保留头部meta信息。 + preserveHeaders: true + }:false + }); + uploader.addButton({ + id: '#filePickerBlock' + }); + uploader.addButton({ + id: '#filePickerBtn', + label: lang.uploadAddFile + }); + + setState('pedding'); + + // 当有文件添加进来时执行,负责view的创建 + function addFile(file) { + var $li = $('
  • ' + + '

    ' + file.name + '

    ' + + '

    ' + + '

    ' + + '
  • '), + + $btns = $('
    ' + + '' + lang.uploadDelete + '' + + '' + lang.uploadTurnRight + '' + + '' + lang.uploadTurnLeft + '
    ').appendTo($li), + $prgress = $li.find('p.progress span'), + $wrap = $li.find('p.imgWrap'), + $info = $('

    ').hide().appendTo($li), + + showError = function (code) { + switch (code) { + case 'exceed_size': + text = lang.errorExceedSize; + break; + case 'interrupt': + text = lang.errorInterrupt; + break; + case 'http': + text = lang.errorHttp; + break; + case 'not_allow_type': + text = lang.errorFileType; + break; + default: + text = lang.errorUploadRetry; + break; + } + $info.text(text).show(); + }; + + if (file.getStatus() === 'invalid') { + showError(file.statusText); + } else { + $wrap.text(lang.uploadPreview); + if (browser.ie && browser.version <= 7) { + $wrap.text(lang.uploadNoPreview); + } else { + uploader.makeThumb(file, function (error, src) { + if (error || !src) { + $wrap.text(lang.uploadNoPreview); + } else { + var $img = $(''); + $wrap.empty().append($img); + $img.on('error', function () { + $wrap.text(lang.uploadNoPreview); + }); + } + }, thumbnailWidth, thumbnailHeight); + } + percentages[ file.id ] = [ file.size, 0 ]; + file.rotation = 0; + + /* 检查文件格式 */ + if (!file.ext || acceptExtensions.indexOf(file.ext.toLowerCase()) == -1) { + showError('not_allow_type'); + uploader.removeFile(file); + } + } + + file.on('statuschange', function (cur, prev) { + if (prev === 'progress') { + $prgress.hide().width(0); + } else if (prev === 'queued') { + $li.off('mouseenter mouseleave'); + $btns.remove(); + } + // 成功 + if (cur === 'error' || cur === 'invalid') { + showError(file.statusText); + percentages[ file.id ][ 1 ] = 1; + } else if (cur === 'interrupt') { + showError('interrupt'); + } else if (cur === 'queued') { + percentages[ file.id ][ 1 ] = 0; + } else if (cur === 'progress') { + $info.hide(); + $prgress.css('display', 'block'); + } else if (cur === 'complete') { + } + + $li.removeClass('state-' + prev).addClass('state-' + cur); + }); + + $li.on('mouseenter', function () { + $btns.stop().animate({height: 30}); + }); + $li.on('mouseleave', function () { + $btns.stop().animate({height: 0}); + }); + + $btns.on('click', 'span', function () { + var index = $(this).index(), + deg; + + switch (index) { + case 0: + uploader.removeFile(file); + return; + case 1: + file.rotation += 90; + break; + case 2: + file.rotation -= 90; + break; + } + + if (supportTransition) { + deg = 'rotate(' + file.rotation + 'deg)'; + $wrap.css({ + '-webkit-transform': deg, + '-mos-transform': deg, + '-o-transform': deg, + 'transform': deg + }); + } else { + $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')'); + } + + }); + + $li.insertBefore($filePickerBlock); + } + + // 负责view的销毁 + function removeFile(file) { + var $li = $('#' + file.id); + delete percentages[ file.id ]; + updateTotalProgress(); + $li.off().find('.file-panel').off().end().remove(); + } + + function updateTotalProgress() { + var loaded = 0, + total = 0, + spans = $progress.children(), + percent; + + $.each(percentages, function (k, v) { + total += v[ 0 ]; + loaded += v[ 0 ] * v[ 1 ]; + }); + + percent = total ? loaded / total : 0; + + spans.eq(0).text(Math.round(percent * 100) + '%'); + spans.eq(1).css('width', Math.round(percent * 100) + '%'); + updateStatus(); + } + + function setState(val, files) { + + if (val != state) { + + var stats = uploader.getStats(); + + $upload.removeClass('state-' + state); + $upload.addClass('state-' + val); + + switch (val) { + + /* 未选择文件 */ + case 'pedding': + $queue.addClass('element-invisible'); + $statusBar.addClass('element-invisible'); + $placeHolder.removeClass('element-invisible'); + $progress.hide(); $info.hide(); + uploader.refresh(); + break; + + /* 可以开始上传 */ + case 'ready': + $placeHolder.addClass('element-invisible'); + $queue.removeClass('element-invisible'); + $statusBar.removeClass('element-invisible'); + $progress.hide(); $info.show(); + $upload.text(lang.uploadStart); + uploader.refresh(); + break; + + /* 上传中 */ + case 'uploading': + $progress.show(); $info.hide(); + $upload.text(lang.uploadPause); + break; + + /* 暂停上传 */ + case 'paused': + $progress.show(); $info.hide(); + $upload.text(lang.uploadContinue); + break; + + case 'confirm': + $progress.show(); $info.hide(); + $upload.text(lang.uploadStart); + + stats = uploader.getStats(); + if (stats.successNum && !stats.uploadFailNum) { + setState('finish'); + return; + } + break; + + case 'finish': + $progress.hide(); $info.show(); + if (stats.uploadFailNum) { + $upload.text(lang.uploadRetry); + } else { + $upload.text(lang.uploadStart); + } + break; + } + + state = val; + updateStatus(); + + } + + if (!_this.getQueueCount()) { + $upload.addClass('disabled') + } else { + $upload.removeClass('disabled') + } + + } + + function updateStatus() { + var text = '', stats; + + if (state === 'ready') { + text = lang.updateStatusReady.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize)); + } else if (state === 'confirm') { + stats = uploader.getStats(); + if (stats.uploadFailNum) { + text = lang.updateStatusConfirm.replace('_', stats.successNum).replace('_', stats.successNum); + } + } else { + stats = uploader.getStats(); + text = lang.updateStatusFinish.replace('_', fileCount). + replace('_KB', WebUploader.formatSize(fileSize)). + replace('_', stats.successNum); + + if (stats.uploadFailNum) { + text += lang.updateStatusError.replace('_', stats.uploadFailNum); + } + } + + $info.html(text); + } + + uploader.on('fileQueued', function (file) { + fileCount++; + fileSize += file.size; + + if (fileCount === 1) { + $placeHolder.addClass('element-invisible'); + $statusBar.show(); + } + + addFile(file); + }); + + uploader.on('fileDequeued', function (file) { + if (file.ext && acceptExtensions.indexOf(file.ext.toLowerCase()) != -1 && file.size <= imageMaxSize) { + fileCount--; + fileSize -= file.size; + } + + removeFile(file); + updateTotalProgress(); + }); + + uploader.on('filesQueued', function (file) { + if (!uploader.isInProgress() && (state == 'pedding' || state == 'finish' || state == 'confirm' || state == 'ready')) { + setState('ready'); + } + updateTotalProgress(); + }); + + uploader.on('all', function (type, files) { + switch (type) { + case 'uploadFinished': + setState('confirm', files); + break; + case 'startUpload': + /* 添加额外的GET参数 */ + var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + 'encode=utf-8&' + params); + uploader.option('server', url); + setState('uploading', files); + break; + case 'stopUpload': + setState('paused', files); + break; + } + }); + + uploader.on('uploadBeforeSend', function (file, data, header) { + //这里可以通过data对象添加POST参数 + if (actionUrl.toLowerCase().indexOf('jsp') != -1) { + header['X-Requested-With'] = 'XMLHttpRequest'; + } + }); + + uploader.on('uploadProgress', function (file, percentage) { + var $li = $('#' + file.id), + $percent = $li.find('.progress span'); + + $percent.css('width', percentage * 100 + '%'); + percentages[ file.id ][ 1 ] = percentage; + updateTotalProgress(); + }); + + uploader.on('uploadSuccess', function (file, ret) { + var $file = $('#' + file.id); + try { + var responseText = (ret._raw || ret), + json = utils.str2json(responseText); + if (json.state == 'SUCCESS') { + _this.imageList.push(json); + $file.append(''); + } else { + $file.find('.error').text(json.state).show(); + } + } catch (e) { + $file.find('.error').text(lang.errorServerUpload).show(); + } + }); + + uploader.on('uploadError', function (file, code) { + }); + uploader.on('error', function (code, file) { + if (code == 'Q_TYPE_DENIED' || code == 'F_EXCEED_SIZE') { + addFile(file); + } + }); + uploader.on('uploadComplete', function (file, ret) { + }); + + $upload.on('click', function () { + if ($(this).hasClass('disabled')) { + return false; + } + + if (state === 'ready') { + uploader.upload(); + } else if (state === 'paused') { + uploader.upload(); + } else if (state === 'uploading') { + uploader.stop(); + } + }); + + $upload.addClass('state-' + state); + updateTotalProgress(); + }, + getQueueCount: function () { + var file, i, status, readyFile = 0, files = this.uploader.getFiles(); + for (i = 0; file = files[i++]; ) { + status = file.getStatus(); + if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++; + } + return readyFile; + }, + destroy: function () { + this.$wrap.remove(); + }, + getInsertList: function () { + var i, data, list = [], + align = getAlign(), + prefix = editor.getOpt('imageUrlPrefix'); + for (i = 0; i < this.imageList.length; i++) { + data = this.imageList[i]; + list.push({ + src: prefix + data.url, + _src: prefix + data.url, + alt: data.original, + floatStyle: align + }); + } + return list; + } + }; + + + /* 在线图片 */ + function OnlineImage(target) { + this.container = utils.isString(target) ? document.getElementById(target) : target; + this.init(); + } + OnlineImage.prototype = { + init: function () { + this.reset(); + this.initEvents(); + }, + /* 初始化容器 */ + initContainer: function () { + this.container.innerHTML = ''; + this.list = document.createElement('ul'); + this.clearFloat = document.createElement('li'); + + domUtils.addClass(this.list, 'list'); + domUtils.addClass(this.clearFloat, 'clearFloat'); + + this.list.appendChild(this.clearFloat); + this.container.appendChild(this.list); + }, + /* 初始化滚动事件,滚动到地步自动拉取数据 */ + initEvents: function () { + var _this = this; + + /* 滚动拉取图片 */ + domUtils.on($G('imageList'), 'scroll', function(e){ + var panel = this; + if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) { + _this.getImageData(); + } + }); + /* 选中图片 */ + domUtils.on(this.container, 'click', function (e) { + var target = e.target || e.srcElement, + li = target.parentNode; + + if (li.tagName.toLowerCase() == 'li') { + if (domUtils.hasClass(li, 'selected')) { + domUtils.removeClasses(li, 'selected'); + } else { + domUtils.addClass(li, 'selected'); + } + } + }); + }, + /* 初始化第一次的数据 */ + initData: function () { + + /* 拉取数据需要使用的值 */ + this.state = 0; + this.listSize = editor.getOpt('imageManagerListSize'); + this.listIndex = 0; + this.listEnd = false; + + /* 第一次拉取数据 */ + this.getImageData(); + }, + /* 重置界面 */ + reset: function() { + this.initContainer(); + this.initData(); + }, + /* 向后台拉取图片列表数据 */ + getImageData: function () { + var _this = this; + + if(!_this.listEnd && !this.isLoadingData) { + this.isLoadingData = true; + var url = editor.getActionUrl(editor.getOpt('imageManagerActionName')), + isJsonp = utils.isCrossDomainUrl(url); + ajax.request(url, { + 'timeout': 100000, + 'dataType': isJsonp ? 'jsonp':'', + 'data': utils.extend({ + start: this.listIndex, + size: this.listSize + }, editor.queryCommandValue('serverparam')), + 'method': 'get', + 'onsuccess': function (r) { + try { + var json = isJsonp ? r:eval('(' + r.responseText + ')'); + if (json.state == 'SUCCESS') { + _this.pushData(json.list); + _this.listIndex = parseInt(json.start) + parseInt(json.list.length); + if(_this.listIndex >= json.total) { + _this.listEnd = true; + } + _this.isLoadingData = false; + } + } catch (e) { + if(r.responseText.indexOf('ue_separate_ue') != -1) { + var list = r.responseText.split(r.responseText); + _this.pushData(list); + _this.listIndex = parseInt(list.length); + _this.listEnd = true; + _this.isLoadingData = false; + } + } + }, + 'onerror': function () { + _this.isLoadingData = false; + } + }); + } + }, + /* 添加图片到列表界面上 */ + pushData: function (list) { + var i, item, img, icon, _this = this, + urlPrefix = editor.getOpt('imageManagerUrlPrefix'); + for (i = 0; i < list.length; i++) { + if(list[i] && list[i].url) { + item = document.createElement('li'); + img = document.createElement('img'); + icon = document.createElement('span'); + + domUtils.on(img, 'load', (function(image){ + return function(){ + _this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight); + } + })(img)); + img.width = 113; + img.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) ); + img.setAttribute('_src', urlPrefix + list[i].url); + domUtils.addClass(icon, 'icon'); + + item.appendChild(img); + item.appendChild(icon); + this.list.insertBefore(item, this.clearFloat); + } + } + }, + /* 改变图片大小 */ + scale: function (img, w, h, type) { + var ow = img.width, + oh = img.height; + + if (type == 'justify') { + if (ow >= oh) { + img.width = w; + img.height = h * oh / ow; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w * ow / oh; + img.height = h; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + } else { + if (ow >= oh) { + img.width = w * ow / oh; + img.height = h; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w; + img.height = h * oh / ow; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + } + }, + getInsertList: function () { + var i, lis = this.list.children, list = [], align = getAlign(); + for (i = 0; i < lis.length; i++) { + if (domUtils.hasClass(lis[i], 'selected')) { + var img = lis[i].firstChild, + src = img.getAttribute('_src'); + list.push({ + src: src, + _src: src, + alt: src.substr(src.lastIndexOf('/') + 1), + floatStyle: align + }); + } + + } + return list; + } + }; + +})(); diff --git a/public/js/ueditor/dialogs/image/images/alignicon.jpg b/public/js/ueditor/dialogs/image/images/alignicon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..754755b1b6e2b37d6090f68b80e91867fdcf1042 GIT binary patch literal 16101 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/image/images/bg.png b/public/js/ueditor/dialogs/image/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..580be0a01dff4c70c72f78a3f40186660ee8eee0 GIT binary patch literal 2810 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/image/images/icons.png b/public/js/ueditor/dialogs/image/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..12e4700163ac87fa38ae3d92a2c39d0fb4690fed GIT binary patch literal 2678 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/image/images/progress.png b/public/js/ueditor/dialogs/image/images/progress.png new file mode 100644 index 0000000000000000000000000000000000000000..717c4865c90a959c6a0e9ad1af9c777d900a2e9c GIT binary patch literal 1269 zcmeAS@N?(olHy`uVBq!ia0vp^f8U}fi7AzZCsS=07??9MLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}t-3#_`hBq$Z(46Le)Ln;eW^@CE2 z^Gl18f$@>14ATq@JNy=b6armi>cVAJd5X6R;MWawh(V&G(G=xXffXz1o@ zX=ZL{;B08&Z0-!x>zP+vl9-pA3bQv8XfIT+GhV$`&PAz-CHX}m`T04p6cCV+Uy@&( zkzb(T9Bihb;hUJ8nFkWk1Vs?Uzb>gonPsUdZbkXI3g8g7%EaOV0~10%hv-cqC)D(T zj?o7t52WM*69T3|5EGvGfgE`DNzDW1nId53*cQ_-&cMK^?CIhdQgN$ga=rIq1A(^5 zYKwg&`wo`WvF`u>{iFU|`!+wz>b#B?t8F4hxRm$~lz-tTH#6E8xZnKlv%`YRwvA{oKseqmK8(Gfx|> z#)dT+Zy!CGH{+89Q&m{rC!PyyIjq?Y9m+ziHPqr6qxfF`+2Qt=-KQ=fE8_j%1#Y2} z>NffN)P;AQIhrE)QQzeqbFS^A8(M1XGuQqTO<=fcH+M~2lzlL$Ao6teb6Mw<&;$U? C61Fb@ literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/image/images/success.gif b/public/js/ueditor/dialogs/image/images/success.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d4f3112b9d1df2147ed3b67d9736163dedd11e1 GIT binary patch literal 445 zcmZ?wbhEHb)L_tHxXJ(m|NsC0{`>#WKmY&!`~ULm|4%>v3rzVXIOUh{)L$ageu+>2 zB{Acd%*pZwE#>TlQSztb-KopJH+%!_|l-~7Ag*59?a z{_c7B@6_{ur(gU#_wwKE_y6vG`1j=VzZYNsfBgCX$DjXizW@L859r4KV8@~pia%Kx z85k@WbU+dyKQXY~a+p)#p(E9QVoA}-BeJtDJbfs+R&065YSGzOop#2q7tzUUTK@E- z1Qpqe*fm*b*T-Fam_8!ZPiJg?eRTb9ku+5;xVnw>Wr$>Ce}(b zvq{bgY~#~oR8Cparp&0%zbdUw!o*Z6ds70hP&$teqekA&7*16-748@%Mnl0vSqU6+ zOpICr!NSHY@7SLk+rBLP3&#jWP!Xxbb jiN%_{Rv%uKKTTNF#>acL^G5)OtDBg<-IWs>91PX~W`xy? literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/image/images/success.png b/public/js/ueditor/dialogs/image/images/success.png new file mode 100644 index 0000000000000000000000000000000000000000..94f968dc8fd3c7ca8f6cb599d006ef3f23b62c7d GIT binary patch literal 1621 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#?>2=9ZF3nBND}m`vLFhHXsTY(OatnYqyQCInmZhe+73JqDfIV%MiQ6rPIL(9V zO~LIJBb<8mfsWA!MJ-ZP!-Rn82gHOYTp$OY^i%VI>AeV;u(vXbonl~MI_~M>7*cWT z%njcRVMh`65C6~Q2yI{K`NBQQh9heAinXE1(JfB=Ul%M;Ke#x6g%L8^f5l4Te zj&BcK1znDIyZS2~eC7F3K+}tVTa$=u*HTU0W4>0#`+Qf%|GkyBERBs#$Y}P@k7@U2 zd#*XsYr~WGeCA1uSK>2HTD)g9mP}Xrpg$+`K&8dx2JS~bjCx(hj5}1;-8qn2_>|?> zp{d+2q{I0hbQS!U-jOut`kSEi+IhQJGmBl4O%se*W?OGKZ0Mp?XmGnRgezL^8vCJ4 z#-ek9(R&%4!h+;oXA~Mtbyie=u#0PDiI#!iX`%2?^@kRL8ma*r6?+*}W4e|_8~J&& z+-+*Ub3{dDcAIF|!MTDz0#78qKYeaeVU$wDOOs3cR=e5FZ*O2e-6xc{Uu=$;!s>*M z>nZ|V>zUp8-oE6^wXjV+_UOvuE&SORr`;3hnBKu~e3rzlY@NRjD|5Ui2t>^@Ve7jy z)2vT>u1vesjJgG`f;l_n`FmbR~b^~{VzXB}7CdU_pt>lO9l=E;X#4<2bZu32r~J^e^%TSISQ_Qm$= z7d{rOo2%^RUGseJkpn9(MWszUQdl(i&RN5PBgZ0d#S7ZipShU3W`>Nsy6C#pCD*KW zyxHW%b?m|pr;dF;L$saa#oaeO`u=>jkXTjl9*cLEvOD!Jdr4ooKJW9gY7?D{e?uM^ z`_}E4`0yR0boA=9>3>WXzUH{&pDfpZ;_2xb=j*pKsk#WyD%J#5t{1#azeB z4SJq8H2*dJVX$xugZHVh{7U`u4@oM|quz5j-hRJi{qwh1k5uNqu`W>3HJG&Y^R}6R z$Gq-HPue$sd${oT*XKO8zN>Oe_%K^bZNm3^-vf7@5X# + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + + +
    px
    px
    + +
    +
    + + + diff --git a/public/js/ueditor/dialogs/internal.js b/public/js/ueditor/dialogs/internal.js new file mode 100644 index 0000000..44dc17f --- /dev/null +++ b/public/js/ueditor/dialogs/internal.js @@ -0,0 +1,81 @@ +(function () { + var parent = window.parent; + //dialog对象 + dialog = parent.$EDITORUI[window.frameElement.id.replace( /_iframe$/, '' )]; + //当前打开dialog的编辑器实例 + editor = dialog.editor; + + UE = parent.UE; + + domUtils = UE.dom.domUtils; + + utils = UE.utils; + + browser = UE.browser; + + ajax = UE.ajax; + + $G = function ( id ) { + return document.getElementById( id ) + }; + //focus元素 + $focus = function ( node ) { + setTimeout( function () { + if ( browser.ie ) { + var r = node.createTextRange(); + r.collapse( false ); + r.select(); + } else { + node.focus() + } + }, 0 ) + }; + utils.loadFile(document,{ + href:editor.options.themePath + editor.options.theme + "/dialogbase.css?cache="+Math.random(), + tag:"link", + type:"text/css", + rel:"stylesheet" + }); + lang = editor.getLang(dialog.className.split( "-" )[2]); + if(lang){ + domUtils.on(window,'load',function () { + + var langImgPath = editor.options.langPath + editor.options.lang + "/images/"; + //针对静态资源 + for ( var i in lang["static"] ) { + var dom = $G( i ); + if(!dom) continue; + var tagName = dom.tagName, + content = lang["static"][i]; + if(content.src){ + //clone + content = utils.extend({},content,false); + content.src = langImgPath + content.src; + } + if(content.style){ + content = utils.extend({},content,false); + content.style = content.style.replace(/url\s*\(/g,"url(" + langImgPath) + } + switch ( tagName.toLowerCase() ) { + case "var": + dom.parentNode.replaceChild( document.createTextNode( content ), dom ); + break; + case "select": + var ops = dom.options; + for ( var j = 0, oj; oj = ops[j]; ) { + oj.innerHTML = content.options[j++]; + } + for ( var p in content ) { + p != "options" && dom.setAttribute( p, content[p] ); + } + break; + default : + domUtils.setAttributes( dom, content); + } + } + } ); + } + + +})(); + diff --git a/public/js/ueditor/dialogs/link/link.html b/public/js/ueditor/dialogs/link/link.html new file mode 100644 index 0000000..9c0a3d6 --- /dev/null +++ b/public/js/ueditor/dialogs/link/link.html @@ -0,0 +1,134 @@ + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + + +
    +
    + + + diff --git a/public/js/ueditor/dialogs/preview/preview.html b/public/js/ueditor/dialogs/preview/preview.html new file mode 100644 index 0000000..69d9a32 --- /dev/null +++ b/public/js/ueditor/dialogs/preview/preview.html @@ -0,0 +1,40 @@ + + + + + + + + + + +
    + +
    + + + diff --git a/public/js/ueditor/dialogs/scrawl/images/addimg.png b/public/js/ueditor/dialogs/scrawl/images/addimg.png new file mode 100644 index 0000000000000000000000000000000000000000..03a87135bab65fa2633156789ed0f4a906d6c48b GIT binary patch literal 628 zcmV-)0*n2LP)LlfO?CQ4q&JZ};uuDR(Ob))OTXC`@eBz!@zF z+HgV%Hu^952Y4l=g(2n$i9ae63lhXcqYyM9#DWA|@b(rsk9+f;1wl+yj4;&{^Z8EZ zJ2T2T$4NrJSzdPEvg}xJM?R0MBtb zF(d!&V7bvXOyyt%V+_VxCMVl|G4K0L2`GSu4nDMoTw7VvC?4}634OnCk@;@JLnc3FEH3Q_>)m5edixGKIt7FkHcF4 O0000LlRapYQ51%sn|z5A!;eU>8r+{HJr7$}yPjp=Xw4K1Ua#f7iuXvM4a5!@5mnb6Jy5;4f zq^GClVK^)=CMV^$zAd#p)X9w(bjvTJaV6W6Y< zHElN4Fd9h58CQpMwnbCF0&&|nt--a91jfSjz&XY;RG1F=2?rH8AKl0($O&qx#;_=`eAIGPkrEiZ*t@m5rL2F^2%$?h~iba07-RvG6!+$Z#-hF)* z*wUa-u1NavBOIv|-+OxK963tx@)g|sy&J-7BIJt|`BL~qAQEA|QlZmXAv_UdV92*A z3}9Ln#}*y)LEQe`d0jImLzJL!8vd uXg6z^rfGozG)+U(G#m~GPN$P@*OZ@vE+GjWfY&Ji0000Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzf=NU{R5(w?lReA9Q5c8MckvC3CRr4rWH3k}lHF)Du^B`%h=dG6 zguL4*gWaS^NGOSZ`kg^f{XGLc^_;r8yYF+Z`@GZ<;@`(&vA|?9`3kyXJRalQL01fi zLp&Z2WV6|iphH*mdOh6lcNB}ox0FgHl*{E8%(<2hUD0m0al73R4u_FWr%|m|U({+f zG#U+byIr{(BXid2&=t*Q6W8k%I-L%By=@ zm&*kzl?rOL8d|Lu!C(;4XcW0z4*h-~yWI|l!$HRBbc(@XARW4*QmNo{I>BPGNUT;X zoK7cPE*HFBFG8UZX0sXA>ow-{IbyLG;_u=hIe}(G|5Z=0000LlRs}0K@i1%ySKhz{O1fJ$i!Hn&_fERK@ibd zbP=ieOf+<);v-NHQBXy)C?X|I5W=L1LJA~<17{zJ<9KG5!k{1wk%*@njpn`4doyD~ z2uu@pDm37>c6P$IEISwYQmKSH==W(ZE}o0v_2wonsNzFl`^D^kf$u!}LQutt_h<;j zar~DygE3(2IEO&+5CUiji1#=ZK||o}yDIhi33JuKDcl%rWQp=QqMSoVf(}M_9S>Cz zoT{SUv$l2tmn+e19`WG*;h4Z$Tz-aRexA6TaMJJ5+ucP5L)3dz6(_2Uyk~!Jk0eQW z^|DCs>qV~3L9K47-Y79!zJ;+$TrLymKV!r*@*Yt=mC$IUKuQ!vbUH=4-H3MEa`k$j zhnMqIZzgp1JzK3F1=nNY_D=~Sf_Tr$%FJ)(9slx>D9Y%(@ACbV<1iJj6ctqv?-3E) zNCY1O8yiQHJFtexf@?2R{@BJ?i!}ygEd8hVIIh)jS(Xvyay))=@XwvUSz2QG?!rX< zd8>shILEWq)iaM~SSaveeSM-{Y&0;#;gB>(^b literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/scrawl/images/empty.png b/public/js/ueditor/dialogs/scrawl/images/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..0375196257ac3c859373b3ebebbabe6f16105587 GIT binary patch literal 519 zcmV+i0{H!jP)Ll09-0Q4oZ`x4R&OpbGFo(29U6rOK6a3v&a7 z_DM+WM6pqhRKi!#4G@N6DKtGpus^URVFFJ&)8BN@dnqD#NM-jmudlA&{11>?2dmYJ zq9_;)28>1{cDr5ttSY|V-7%R=l6xQ-X2x_n?EuB!wC#2qd7hIOIeC_oWf>_YHk(bz zMaX$Q9;cHIE-o(@kBWl9lL2S1&UiW;@}sKQ@Am+B1TJ9`@6XQ{M-IY$At_veyCZkh z2#A0HNw}-$pgZDtT-F2Ob2F>OW^-Ac+hlWdQI_N05jzL&!X;$ZZFh;o!GLIH95bB; zNW$DPvl`UcHyv6%9(DgT!0PRm7pMi8VTV70h}zld2%+{!9YE@DjHv&@KO#8t7UG=) zNe~cC4#|6f?iJh}mm_H@6X8y{FD13$rOa5b*F8Xr2vSNfffuvc>}^?=9}+-HBod@% zcfjrE+jln~Z$1J0i1=~@0GiDNLcJQPqF|2002ov JPDHLkV1nZ!(%Jw3 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/scrawl/images/emptyH.png b/public/js/ueditor/dialogs/scrawl/images/emptyH.png new file mode 100644 index 0000000000000000000000000000000000000000..838ca723119499465f29e881a745f4d8a051e22c GIT binary patch literal 657 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cMyUXw5Z8P6?!9~W&Mteod+EB17cYi1ZuhR-c=YJe)QJao zoqKZj)+^_N)hDk%kM7vxU%SOIZ)HU5u5H`4rB6P*;n@A6IVa_d+Vkc6Z`Cb3f9%S$swHPL zrX0?laV)ZJmtD^C)Jcaf-hX@G%JYPteGa)RpT7ON{^-5+yDx<|?_9t8V%D^yUKQ)t z9lf{e;O)TrtuBRYf*Q8PcI>guUcUO!os-vJoWJvW)22-q?!7sF_4&EmuM_+BN4D;= z&slDtz2el37q(f;)*ZQN z=N^Z=m4&lU_*8HD|Np=0=2?Njpo}XC@(TuXX$KfKp3qYR+O*iy#WAGfR#Jy6Gf%)R z4qpdHXJJo=hVYQC!~KV2MYI-VrJh`QUQ;LM&1;6x#M9b~#Ma7WK4-jqNPV%W#5&yr zqHMw)6OH>XB&SZ@(#H8io2zq2%cn~1gDgj6o15p{xKW{#z;wrkO(^fonRSm08Z|^C z74@VuOY>$h1UKwir)j@Gk;A27;=wb==bbzq+_Gcd9- Y9E)+P-Fqc+HPE>Xp00i_>zopr0P;w4-2eap literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/scrawl/images/eraser.png b/public/js/ueditor/dialogs/scrawl/images/eraser.png new file mode 100644 index 0000000000000000000000000000000000000000..63e87cecb90ed3ac0e4acbc257c6dddae5311e09 GIT binary patch literal 43271 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/scrawl/images/redoH.png b/public/js/ueditor/dialogs/scrawl/images/redoH.png new file mode 100644 index 0000000000000000000000000000000000000000..d9f33d38a3d11ce10447830ce409a0890ecad264 GIT binary patch literal 536 zcmV+z0_XjSP)LlRro!K@`S+vst67f)FhPH9;i)IZy=QifsP%Q^7=yx~FIm{DVqJh#8yN2on55 zK6niC-hAJD?=d5!lvD$)D)w6iOxq2aw)?eGO}w=Q({?4W2uyj7_3$nS0b08|CV^$s zcEc4Nn6?`Q=790%;vf4s`J3kd?(rXB%yX=pvVdv3pMkYfEM|mb9T>VsU5&ud zHR{zG?2nRrWd3EgfMHFMKLD%wc#k35+Fxy@XQ-Rrp?E*AqO06&F51~7BhBb9F%{CA zdmJPWQouxT{!<~+LW6%qD0@z^RN@x6tuTZA%{2bb;RZ0`Io4$$5UD%$(J!*|z&Fpa za?fuyZTGrH*P6~!{%Io9+`*3VLY0+{d|s}SVM0@>uRpF)fd0F8hF zgjKx=6b8R6tZy&P{3zz{+r)RSrIc5o-hmLJL6K@zgnPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzF-b&0R5(wyQ*Ba%Fc9qxdXyf4gZLw&GE-Zj!G1tU_|R6xf-Mzw ztkqtHqs45L76*QWA2RbM@MiON_wCZ@{O7ZK+oR9deF10dJg3G9@~FqDz{krMf6sUA zM9%t%Ge#w-z&79UR#oU%de6AjwTpqy2_YI|tk+7Q3^s=6YMHYnLz^_O1&3i+?2mwN&7$-;U#S!Q9m{<3SMoh?w@E00BVyxZ+RCwFLF4JWG!G zOmY$;RtOYQz#3aQ*W5#AiVywHJM`%L@4v^Nzsx*vCin1#lEeQmy!?Oq z<)3F?{!hO2^5n}ed515YeEH$t2cY2pvoHVmpTDyB(*MfC{~Hedzw_aD z|6#-Q0^JY(AHHp1XAM(|igs|-_4sV4KK0;p@m*h1S8U_x=m<-jvZ+JR;{IBr4+&>f zSEaF?oUyAYF85cQWPSYh#i0ycQ4jWf_nW(8?Ylo51`N|SiTvgEn+*yn22WQ%mvv4F FO#t{IsF?r& literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/scrawl/images/size.png b/public/js/ueditor/dialogs/scrawl/images/size.png new file mode 100644 index 0000000000000000000000000000000000000000..8366845059c94089aef92aa3aeeee79e242732eb GIT binary patch literal 775 zcmeAS@N?(olHy`uVBq!ia0vp^Iv_R&Gmw0`s%8O@k}PqJC<)F_D=AMbN@Z|N$xljE z@XSq2PYp^@^W{ zcO82EKXB&y{MKgq%sz{fI)==3d^r;&6MFPw(_IV71M|xGvv%v3_j2X!dGPP#L^Pja~hhtj9%m4qMKL2y%^Z&`q z=WTfUnlHCkByWLuLg&Z-{~5B^aHX`VrcW0wpCeN?gQ0YF|Ek^0Wm|o-iywUa@%aCL z)%2NBbM`Q#t<@@?!;!p&H+$mBlaI^_YB&B#>#{8s<9mu2JY zGd5l4N$XHbnR5BlcfNx4cmMupDBR$-Y>#a9e1@#m@BaT>^X!XNW-&wBx||KyZ~Xty zRkTzmtwcMm#U?#ZF@LgB=2WKq4bg@9JjHY3ON;;i|F13o-WwPzN)S72Y1Qc%6 zcJYYNXcAOgEAc9NiWcu<*Ig$*&7M7NgR1o_Dx<9^s3W?&d{SwZWC%AQ=Vq^CQZBv#02ZVBfRNMNWq`8qHxO6)(-0}P(7 KelF{r5}E+VpO-NJ literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/scrawl/images/undo.png b/public/js/ueditor/dialogs/scrawl/images/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..084c7cc73f4058c8084e5ea3ab4e51fd105b7991 GIT binary patch literal 444 zcmV;t0YmPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzI!Q!9R5(v#U>KAjGc&U&EiH|oEXQSKWlhM*$@yPcSjb6|0imIx zY(ULRYin!&1L^-HX$ETG0XlnEb#?Xs>C>nGudAyA8-k93YSsZ=r-))WP>}=>pQ);< z`afyXB(MQ<=FIuOaN)xL%ayrnkSp|9?S2!GDaj0*gvQ(FlretOfvW z6$E0%n3$MFK-vn3oq^aBh<%|nh;Lrlg%pxVI0RlGdnYDm%@o%7K^0FfxN6OiJOCi zi#RxuqoSN#Tot)WQew-+VO#$I2f6IQORU!0vXfFu4udr_4m%hxc|CaQ+tc&%`}Y0* zp6?@=rpaH1_@`<>2#kh5+8+kyfa~8Vm_`&Qf&1?$uoEc2lIZmeVHg0~PYAMri0Se6 zisfa<1zrI21FQgkJAn`w4d(-ql&7Fh^q1h21YD9xhMb<=^2_=%c1k>YpaK0r=t;rC zt=CtVDk}a`Zc&w=rjAAzFb_055%guKXWR05;yaef&C8{>rA7h90VLo8XqA)a5z{mR zl$UZFi*u7y-#5(Rpt#aUb$tcVwXHUL6R&`FK~-0c!y{7ZV&N?eU3VYvo=oj*?jtLb z0%Y5tQ3JY+q#F9ffd-5m?iOx)5tafl#kIoD<11{3}kbno$;nIA;p5?+| zPj_N{G3Qm3Edm$dw4eYE%Yq5$7Rj9jP5AfU_y|@8ao4ld0UH1S002ovPDHLkV1l6! B+-3j( literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/scrawl/scrawl.css b/public/js/ueditor/dialogs/scrawl/scrawl.css new file mode 100644 index 0000000..b18430d --- /dev/null +++ b/public/js/ueditor/dialogs/scrawl/scrawl.css @@ -0,0 +1,72 @@ +/*common +*/ +body{margin: 0;} +table{width:100%;} +table td{padding:2px 4px;vertical-align: middle;} +a{text-decoration: none;} +em{font-style: normal;} +.border_style1{border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;} +/*module +*/ +.main{margin: 8px;overflow: hidden;} + +.hot{float:left;height:335px;} +.drawBoard{position: relative; cursor: crosshair;} +.brushBorad{position: absolute;left:0;top:0;z-index: 998;} +.picBoard{border: none;text-align: center;line-height: 300px;cursor: default;} +.operateBar{margin-top:10px;font-size:12px;text-align: center;} +.operateBar span{margin-left: 10px;} + +.drawToolbar{float:right;width:110px;height:300px;overflow: hidden;} +.colorBar{margin-top:10px;font-size: 12px;text-align: center;} +.colorBar a{display:block;width: 10px;height: 10px;border:1px solid #1006F1;border-radius: 3px; box-shadow:2px 2px 5px #d3d6da;opacity: 0.3} +.sectionBar{margin-top:15px;font-size: 12px;text-align: center;} +.sectionBar a{display:inline-block;width:10px;height:12px;color: #888;text-indent: -999px;opacity: 0.3} +.size1{background: url('images/size.png') 1px center no-repeat ;} +.size2{background: url('images/size.png') -10px center no-repeat;} +.size3{background: url('images/size.png') -22px center no-repeat;} +.size4{background: url('images/size.png') -35px center no-repeat;} + +.addImgH{position: relative;} +.addImgH_form{position: absolute;left: 18px;top: -1px;width: 75px;height: 21px;opacity: 0;cursor: pointer;} +.addImgH_form input{width: 100%;} +/*scrawl遮罩层 +*/ +.maskLayerNull{display: none;} +.maskLayer{position: absolute;top:0;left:0;width: 100%; height: 100%;opacity: 0.7; + background-color: #fff;text-align:center;font-weight:bold;line-height:300px;z-index: 1000;} +/*btn state +*/ +.previousStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undoH.png');cursor: pointer;} +.previousStepH .text{color:#888;cursor:pointer;} +.previousStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undo.png');cursor:default;} +.previousStep .text{color:#ccc;cursor:default;} + +.nextStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redoH.png');cursor: pointer;} +.nextStepH .text{color:#888;cursor:pointer;} +.nextStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redo.png');cursor:default;} +.nextStep .text{color:#ccc;cursor:default;} + +.clearBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/emptyH.png');cursor: pointer;} +.clearBoardH .text{color:#888;cursor:pointer;} +.clearBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/empty.png');cursor:default;} +.clearBoard .text{color:#ccc;cursor:default;} + +.scaleBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scaleH.png');cursor: pointer;} +.scaleBoardH .text{color:#888;cursor:pointer;} +.scaleBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scale.png');cursor:default;} +.scaleBoard .text{color:#ccc;cursor:default;} + +.removeImgH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimgH.png');cursor: pointer;} +.removeImgH .text{color:#888;cursor:pointer;} +.removeImg .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimg.png');cursor:default;} +.removeImg .text{color:#ccc;cursor:default;} + +.addImgH .icon{vertical-align:top;display: inline-block;width:16px;height:16px;background-image: url('images/addimg.png')} +.addImgH .text{color:#888;cursor:pointer;} +/*icon +*/ +.brushIcon{display: inline-block;width:16px;height:16px;background-image: url('images/brush.png')} +.eraserIcon{display: inline-block;width:16px;height:16px;background-image: url('images/eraser.png')} + + diff --git a/public/js/ueditor/dialogs/scrawl/scrawl.html b/public/js/ueditor/dialogs/scrawl/scrawl.html new file mode 100644 index 0000000..4f2551a --- /dev/null +++ b/public/js/ueditor/dialogs/scrawl/scrawl.html @@ -0,0 +1,95 @@ + + + + + + + + + + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + + 1 + 3 + 5 + 7 +
    +
    + + 1 + 3 + 5 + 7 +
    +
    +
    + + +
    + +
    + +
    +
    +
    + + + + +
    +
    +
    +
    + + + + + diff --git a/public/js/ueditor/dialogs/scrawl/scrawl.js b/public/js/ueditor/dialogs/scrawl/scrawl.js new file mode 100644 index 0000000..d0b451b --- /dev/null +++ b/public/js/ueditor/dialogs/scrawl/scrawl.js @@ -0,0 +1,670 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-5-22 + * Time: 上午11:38 + * To change this template use File | Settings | File Templates. + */ +var scrawl = function (options) { + options && this.initOptions(options); +}; +(function () { + var canvas = $G("J_brushBoard"), + context = canvas.getContext('2d'), + drawStep = [], //undo redo存储 + drawStepIndex = 0; //undo redo指针 + + scrawl.prototype = { + isScrawl:false, //是否涂鸦 + brushWidth:-1, //画笔粗细 + brushColor:"", //画笔颜色 + + initOptions:function (options) { + var me = this; + me.originalState(options);//初始页面状态 + me._buildToolbarColor(options.colorList);//动态生成颜色选择集合 + + me._addBoardListener(options.saveNum);//添加画板处理 + me._addOPerateListener(options.saveNum);//添加undo redo clearBoard处理 + me._addColorBarListener();//添加颜色选择处理 + me._addBrushBarListener();//添加画笔大小处理 + me._addEraserBarListener();//添加橡皮大小处理 + me._addAddImgListener();//添加增添背景图片处理 + me._addRemoveImgListenter();//删除背景图片处理 + me._addScalePicListenter();//添加缩放处理 + me._addClearSelectionListenter();//添加清楚选中状态处理 + + me._originalColorSelect(options.drawBrushColor);//初始化颜色选中 + me._originalBrushSelect(options.drawBrushSize);//初始化画笔选中 + me._clearSelection();//清楚选中状态 + }, + + originalState:function (options) { + var me = this; + + me.brushWidth = options.drawBrushSize;//同步画笔粗细 + me.brushColor = options.drawBrushColor;//同步画笔颜色 + + context.lineWidth = me.brushWidth;//初始画笔大小 + context.strokeStyle = me.brushColor;//初始画笔颜色 + context.fillStyle = "transparent";//初始画布背景颜色 + context.lineCap = "round";//去除锯齿 + context.fill(); + }, + _buildToolbarColor:function (colorList) { + var tmp = null, arr = []; + arr.push(""); + for (var i = 0, color; color = colorList[i++];) { + if ((i - 1) % 5 == 0) { + if (i != 1) { + arr.push(""); + } + arr.push(""); + } + tmp = '#' + color; + arr.push(""); + } + arr.push("
    "); + $G("J_colorBar").innerHTML = arr.join(""); + }, + + _addBoardListener:function (saveNum) { + var me = this, + margin = 0, + startX = -1, + startY = -1, + isMouseDown = false, + isMouseMove = false, + isMouseUp = false, + buttonPress = 0, button, flag = ''; + + margin = parseInt(domUtils.getComputedStyle($G("J_wrap"), "margin-left")); + drawStep.push(context.getImageData(0, 0, context.canvas.width, context.canvas.height)); + drawStepIndex += 1; + + domUtils.on(canvas, ["mousedown", "mousemove", "mouseup", "mouseout"], function (e) { + button = browser.webkit ? e.which : buttonPress; + switch (e.type) { + case 'mousedown': + buttonPress = 1; + flag = 1; + isMouseDown = true; + isMouseUp = false; + isMouseMove = false; + me.isScrawl = true; + startX = e.clientX - margin;//10为外边距总和 + startY = e.clientY - margin; + context.beginPath(); + break; + case 'mousemove' : + if (!flag && button == 0) { + return; + } + if (!flag && button) { + startX = e.clientX - margin;//10为外边距总和 + startY = e.clientY - margin; + context.beginPath(); + flag = 1; + } + if (isMouseUp || !isMouseDown) { + return; + } + var endX = e.clientX - margin, + endY = e.clientY - margin; + + context.moveTo(startX, startY); + context.lineTo(endX, endY); + context.stroke(); + startX = endX; + startY = endY; + isMouseMove = true; + break; + case 'mouseup': + buttonPress = 0; + if (!isMouseDown)return; + if (!isMouseMove) { + context.arc(startX, startY, context.lineWidth, 0, Math.PI * 2, false); + context.fillStyle = context.strokeStyle; + context.fill(); + } + context.closePath(); + me._saveOPerate(saveNum); + isMouseDown = false; + isMouseMove = false; + isMouseUp = true; + startX = -1; + startY = -1; + break; + case 'mouseout': + flag = ''; + buttonPress = 0; + if (button == 1) return; + context.closePath(); + break; + } + }); + }, + _addOPerateListener:function (saveNum) { + var me = this; + domUtils.on($G("J_previousStep"), "click", function () { + if (drawStepIndex > 1) { + drawStepIndex -= 1; + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + context.putImageData(drawStep[drawStepIndex - 1], 0, 0); + me.btn2Highlight("J_nextStep"); + drawStepIndex == 1 && me.btn2disable("J_previousStep"); + } + }); + domUtils.on($G("J_nextStep"), "click", function () { + if (drawStepIndex > 0 && drawStepIndex < drawStep.length) { + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + context.putImageData(drawStep[drawStepIndex], 0, 0); + drawStepIndex += 1; + me.btn2Highlight("J_previousStep"); + drawStepIndex == drawStep.length && me.btn2disable("J_nextStep"); + } + }); + domUtils.on($G("J_clearBoard"), "click", function () { + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + drawStep = []; + me._saveOPerate(saveNum); + drawStepIndex = 1; + me.isScrawl = false; + me.btn2disable("J_previousStep"); + me.btn2disable("J_nextStep"); + me.btn2disable("J_clearBoard"); + }); + }, + _addColorBarListener:function () { + var me = this; + domUtils.on($G("J_colorBar"), "click", function (e) { + var target = me.getTarget(e), + color = target.title; + if (!!color) { + me._addColorSelect(target); + + me.brushColor = color; + context.globalCompositeOperation = "source-over"; + context.lineWidth = me.brushWidth; + context.strokeStyle = color; + } + }); + }, + _addBrushBarListener:function () { + var me = this; + domUtils.on($G("J_brushBar"), "click", function (e) { + var target = me.getTarget(e), + size = browser.ie ? target.innerText : target.text; + if (!!size) { + me._addBESelect(target); + + context.globalCompositeOperation = "source-over"; + context.lineWidth = parseInt(size); + context.strokeStyle = me.brushColor; + me.brushWidth = context.lineWidth; + } + }); + }, + _addEraserBarListener:function () { + var me = this; + domUtils.on($G("J_eraserBar"), "click", function (e) { + var target = me.getTarget(e), + size = browser.ie ? target.innerText : target.text; + if (!!size) { + me._addBESelect(target); + + context.lineWidth = parseInt(size); + context.globalCompositeOperation = "destination-out"; + context.strokeStyle = "#FFF"; + } + }); + }, + _addAddImgListener:function () { + var file = $G("J_imgTxt"); + if (!window.FileReader) { + $G("J_addImg").style.display = 'none'; + $G("J_removeImg").style.display = 'none'; + $G("J_sacleBoard").style.display = 'none'; + } + domUtils.on(file, "change", function (e) { + var frm = file.parentNode; + addMaskLayer(lang.backgroundUploading); + + var target = e.target || e.srcElement, + reader = new FileReader(); + reader.onload = function(evt){ + var target = evt.target || evt.srcElement; + ue_callback(target.result, 'SUCCESS'); + }; + reader.readAsDataURL(target.files[0]); + frm.reset(); + }); + }, + _addRemoveImgListenter:function () { + var me = this; + domUtils.on($G("J_removeImg"), "click", function () { + $G("J_picBoard").innerHTML = ""; + me.btn2disable("J_removeImg"); + me.btn2disable("J_sacleBoard"); + }); + }, + _addScalePicListenter:function () { + domUtils.on($G("J_sacleBoard"), "click", function () { + var picBoard = $G("J_picBoard"), + scaleCon = $G("J_scaleCon"), + img = picBoard.children[0]; + + if (img) { + if (!scaleCon) { + picBoard.style.cssText = "position:relative;z-index:999;"+picBoard.style.cssText; + img.style.cssText = "position: absolute;top:" + (canvas.height - img.height) / 2 + "px;left:" + (canvas.width - img.width) / 2 + "px;"; + var scale = new ScaleBoy(); + picBoard.appendChild(scale.init()); + scale.startScale(img); + } else { + if (scaleCon.style.visibility == "visible") { + scaleCon.style.visibility = "hidden"; + picBoard.style.position = ""; + picBoard.style.zIndex = ""; + } else { + scaleCon.style.visibility = "visible"; + picBoard.style.cssText += "position:relative;z-index:999"; + } + } + } + }); + }, + _addClearSelectionListenter:function () { + var doc = document; + domUtils.on(doc, 'mousemove', function (e) { + if (browser.ie && browser.version < 11) + doc.selection.clear(); + else + window.getSelection().removeAllRanges(); + }); + }, + _clearSelection:function () { + var list = ["J_operateBar", "J_colorBar", "J_brushBar", "J_eraserBar", "J_picBoard"]; + for (var i = 0, group; group = list[i++];) { + domUtils.unSelectable($G(group)); + } + }, + + _saveOPerate:function (saveNum) { + var me = this; + if (drawStep.length <= saveNum) { + if(drawStepIndex"); + } + scale.innerHTML = arr.join(""); + return scale; + } + + var rect = [ + //[left, top, width, height] + [1, 1, -1, -1], + [0, 1, 0, -1], + [0, 1, 1, -1], + [1, 0, -1, 0], + [0, 0, 1, 0], + [1, 0, -1, 1], + [0, 0, 0, 1], + [0, 0, 1, 1] + ]; + ScaleBoy.prototype = { + init:function () { + _appendStyle(); + var me = this, + scale = me.dom = _getDom(); + + me.scaleMousemove.fp = me; + domUtils.on(scale, 'mousedown', function (e) { + var target = e.target || e.srcElement; + me.start = {x:e.clientX, y:e.clientY}; + if (target.className.indexOf('hand') != -1) { + me.dir = target.className.replace('hand', ''); + } + domUtils.on(document.body, 'mousemove', me.scaleMousemove); + e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true; + }); + domUtils.on(document.body, 'mouseup', function (e) { + if (me.start) { + domUtils.un(document.body, 'mousemove', me.scaleMousemove); + if (me.moved) { + me.updateScaledElement({position:{x:scale.style.left, y:scale.style.top}, size:{w:scale.style.width, h:scale.style.height}}); + } + delete me.start; + delete me.moved; + delete me.dir; + } + }); + return scale; + }, + startScale:function (objElement) { + var me = this, Idom = me.dom; + + Idom.style.cssText = 'visibility:visible;top:' + objElement.style.top + ';left:' + objElement.style.left + ';width:' + objElement.offsetWidth + 'px;height:' + objElement.offsetHeight + 'px;'; + me.scalingElement = objElement; + }, + updateScaledElement:function (objStyle) { + var cur = this.scalingElement, + pos = objStyle.position, + size = objStyle.size; + if (pos) { + typeof pos.x != 'undefined' && (cur.style.left = pos.x); + typeof pos.y != 'undefined' && (cur.style.top = pos.y); + } + if (size) { + size.w && (cur.style.width = size.w); + size.h && (cur.style.height = size.h); + } + }, + updateStyleByDir:function (dir, offset) { + var me = this, + dom = me.dom, tmp; + + rect['def'] = [1, 1, 0, 0]; + if (rect[dir][0] != 0) { + tmp = parseInt(dom.style.left) + offset.x; + dom.style.left = me._validScaledProp('left', tmp) + 'px'; + } + if (rect[dir][1] != 0) { + tmp = parseInt(dom.style.top) + offset.y; + dom.style.top = me._validScaledProp('top', tmp) + 'px'; + } + if (rect[dir][2] != 0) { + tmp = dom.clientWidth + rect[dir][2] * offset.x; + dom.style.width = me._validScaledProp('width', tmp) + 'px'; + } + if (rect[dir][3] != 0) { + tmp = dom.clientHeight + rect[dir][3] * offset.y; + dom.style.height = me._validScaledProp('height', tmp) + 'px'; + } + if (dir === 'def') { + me.updateScaledElement({position:{x:dom.style.left, y:dom.style.top}}); + } + }, + scaleMousemove:function (e) { + var me = arguments.callee.fp, + start = me.start, + dir = me.dir || 'def', + offset = {x:e.clientX - start.x, y:e.clientY - start.y}; + + me.updateStyleByDir(dir, offset); + arguments.callee.fp.start = {x:e.clientX, y:e.clientY}; + arguments.callee.fp.moved = 1; + }, + _validScaledProp:function (prop, value) { + var ele = this.dom, + wrap = $G("J_picBoard"); + + value = isNaN(value) ? 0 : value; + switch (prop) { + case 'left': + return value < 0 ? 0 : (value + ele.clientWidth) > wrap.clientWidth ? wrap.clientWidth - ele.clientWidth : value; + case 'top': + return value < 0 ? 0 : (value + ele.clientHeight) > wrap.clientHeight ? wrap.clientHeight - ele.clientHeight : value; + case 'width': + return value <= 0 ? 1 : (value + ele.offsetLeft) > wrap.clientWidth ? wrap.clientWidth - ele.offsetLeft : value; + case 'height': + return value <= 0 ? 1 : (value + ele.offsetTop) > wrap.clientHeight ? wrap.clientHeight - ele.offsetTop : value; + } + } + }; +})(); + +//后台回调 +function ue_callback(url, state) { + var doc = document, + picBorard = $G("J_picBoard"), + img = doc.createElement("img"); + + //图片缩放 + function scale(img, max, oWidth, oHeight) { + var width = 0, height = 0, percent, ow = img.width || oWidth, oh = img.height || oHeight; + if (ow > max || oh > max) { + if (ow >= oh) { + if (width = ow - max) { + percent = (width / ow).toFixed(2); + img.height = oh - oh * percent; + img.width = max; + } + } else { + if (height = oh - max) { + percent = (height / oh).toFixed(2); + img.width = ow - ow * percent; + img.height = max; + } + } + } + } + + //移除遮罩层 + removeMaskLayer(); + //状态响应 + if (state == "SUCCESS") { + picBorard.innerHTML = ""; + img.onload = function () { + scale(this, 300); + picBorard.appendChild(img); + + var obj = new scrawl(); + obj.btn2Highlight("J_removeImg"); + //trace 2457 + obj.btn2Highlight("J_sacleBoard"); + }; + img.src = url; + } else { + alert(state); + } +} +//去掉遮罩层 +function removeMaskLayer() { + var maskLayer = $G("J_maskLayer"); + maskLayer.className = "maskLayerNull"; + maskLayer.innerHTML = ""; + dialog.buttons[0].setDisabled(false); +} +//添加遮罩层 +function addMaskLayer(html) { + var maskLayer = $G("J_maskLayer"); + dialog.buttons[0].setDisabled(true); + maskLayer.className = "maskLayer"; + maskLayer.innerHTML = html; +} +//执行确认按钮方法 +function exec(scrawlObj) { + if (scrawlObj.isScrawl) { + addMaskLayer(lang.scrawlUpLoading); + var base64 = scrawlObj.getCanvasData(); + if (!!base64) { + var options = { + timeout:100000, + onsuccess:function (xhr) { + if (!scrawlObj.isCancelScrawl) { + var responseObj; + responseObj = eval("(" + xhr.responseText + ")"); + if (responseObj.state == "SUCCESS") { + var imgObj = {}, + url = editor.options.scrawlUrlPrefix + responseObj.url; + imgObj.src = url; + imgObj._src = url; + imgObj.alt = responseObj.original || ''; + editor.execCommand("insertImage", imgObj); + dialog.close(); + } else { + alert(responseObj.state); + } + + } + }, + onerror:function () { + alert(lang.imageError); + dialog.close(); + } + }; + options[editor.getOpt('scrawlFieldName')] = base64; + + var actionUrl = editor.getActionUrl(editor.getOpt('scrawlActionName')), + params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + params); + ajax.request(url, options); + } + } else { + addMaskLayer(lang.noScarwl + "   "); + } +} + diff --git a/public/js/ueditor/dialogs/searchreplace/searchreplace.html b/public/js/ueditor/dialogs/searchreplace/searchreplace.html new file mode 100644 index 0000000..8efae07 --- /dev/null +++ b/public/js/ueditor/dialogs/searchreplace/searchreplace.html @@ -0,0 +1,117 @@ + + + + + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    :
    + +
    + + +
    +   +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    + +
    + + + + +
    +   +
    + +
    +
    +
    +
    + + + diff --git a/public/js/ueditor/dialogs/searchreplace/searchreplace.js b/public/js/ueditor/dialogs/searchreplace/searchreplace.js new file mode 100644 index 0000000..02fa46c --- /dev/null +++ b/public/js/ueditor/dialogs/searchreplace/searchreplace.js @@ -0,0 +1,170 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-9-26 + * Time: 下午12:29 + * To change this template use File | Settings | File Templates. + */ + +//清空上次查选的痕迹 +editor.firstForSR = 0; +editor.currentRangeForSR = null; +//给tab注册切换事件 +/** + * tab点击处理事件 + * @param tabHeads + * @param tabBodys + * @param obj + */ +function clickHandler( tabHeads,tabBodys,obj ) { + //head样式更改 + for ( var k = 0, len = tabHeads.length; k < len; k++ ) { + tabHeads[k].className = ""; + } + obj.className = "focus"; + //body显隐 + var tabSrc = obj.getAttribute( "tabSrc" ); + for ( var j = 0, length = tabBodys.length; j < length; j++ ) { + var body = tabBodys[j], + id = body.getAttribute( "id" ); + if ( id != tabSrc ) { + body.style.zIndex = 1; + } else { + body.style.zIndex = 200; + } + } + +} + +/** + * TAB切换 + * @param tabParentId tab的父节点ID或者对象本身 + */ +function switchTab( tabParentId ) { + var tabElements = $G( tabParentId ).children, + tabHeads = tabElements[0].children, + tabBodys = tabElements[1].children; + + for ( var i = 0, length = tabHeads.length; i < length; i++ ) { + var head = tabHeads[i]; + if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head ); + head.onclick = function () { + clickHandler(tabHeads,tabBodys,this); + } + } +} +$G('searchtab').onmousedown = function(){ + $G('search-msg').innerHTML = ''; + $G('replace-msg').innerHTML = '' +} +//是否区分大小写 +function getMatchCase(id) { + return $G(id).checked ? true : false; +} +//查找 +$G("nextFindBtn").onclick = function (txt, dir, mcase) { + var findtxt = $G("findtxt").value, obj; + if (!findtxt) { + return false; + } + obj = { + searchStr:findtxt, + dir:1, + casesensitive:getMatchCase("matchCase") + }; + if (!frCommond(obj)) { + var bk = editor.selection.getRange().createBookmark(); + $G('search-msg').innerHTML = lang.getEnd; + editor.selection.getRange().moveToBookmark(bk).select(); + + + } +}; +$G("nextReplaceBtn").onclick = function (txt, dir, mcase) { + var findtxt = $G("findtxt1").value, obj; + if (!findtxt) { + return false; + } + obj = { + searchStr:findtxt, + dir:1, + casesensitive:getMatchCase("matchCase1") + }; + frCommond(obj); +}; +$G("preFindBtn").onclick = function (txt, dir, mcase) { + var findtxt = $G("findtxt").value, obj; + if (!findtxt) { + return false; + } + obj = { + searchStr:findtxt, + dir:-1, + casesensitive:getMatchCase("matchCase") + }; + if (!frCommond(obj)) { + $G('search-msg').innerHTML = lang.getStart; + } +}; +$G("preReplaceBtn").onclick = function (txt, dir, mcase) { + var findtxt = $G("findtxt1").value, obj; + if (!findtxt) { + return false; + } + obj = { + searchStr:findtxt, + dir:-1, + casesensitive:getMatchCase("matchCase1") + }; + frCommond(obj); +}; +//替换 +$G("repalceBtn").onclick = function () { + editor.trigger('clearLastSearchResult'); + var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj, + replacetxt = $G("replacetxt").value.replace(/^\s|\s$/g, ""); + if (!findtxt) { + return false; + } + if (findtxt == replacetxt || (!getMatchCase("matchCase1") && findtxt.toLowerCase() == replacetxt.toLowerCase())) { + return false; + } + obj = { + searchStr:findtxt, + dir:1, + casesensitive:getMatchCase("matchCase1"), + replaceStr:replacetxt + }; + frCommond(obj); +}; +//全部替换 +$G("repalceAllBtn").onclick = function () { + var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj, + replacetxt = $G("replacetxt").value.replace(/^\s|\s$/g, ""); + if (!findtxt) { + return false; + } + if (findtxt == replacetxt || (!getMatchCase("matchCase1") && findtxt.toLowerCase() == replacetxt.toLowerCase())) { + return false; + } + obj = { + searchStr:findtxt, + casesensitive:getMatchCase("matchCase1"), + replaceStr:replacetxt, + all:true + }; + var num = frCommond(obj); + if (num) { + $G('replace-msg').innerHTML = lang.countMsg.replace("{#count}", num); + } +}; +//执行 +var frCommond = function (obj) { + return editor.execCommand("searchreplace", obj); +}; +switchTab("searchtab"); + + +dialog.onclose = function(){ + editor.trigger('clearLastSearchResult') +}; \ No newline at end of file diff --git a/public/js/ueditor/dialogs/spechars/spechars.html b/public/js/ueditor/dialogs/spechars/spechars.html new file mode 100644 index 0000000..9eb952d --- /dev/null +++ b/public/js/ueditor/dialogs/spechars/spechars.html @@ -0,0 +1,21 @@ + + + + + + + + + +
    +
    +
    + + + diff --git a/public/js/ueditor/dialogs/spechars/spechars.js b/public/js/ueditor/dialogs/spechars/spechars.js new file mode 100644 index 0000000..f4c155e --- /dev/null +++ b/public/js/ueditor/dialogs/spechars/spechars.js @@ -0,0 +1,57 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-9-26 + * Time: 下午1:09 + * To change this template use File | Settings | File Templates. + */ +var charsContent = [ + { name:"tsfh", title:lang.tsfh, content:toArray("、,。,·,ˉ,ˇ,¨,〃,々,—,~,‖,…,‘,’,“,”,〔,〕,〈,〉,《,》,「,」,『,』,〖,〗,【,】,±,×,÷,∶,∧,∨,∑,∏,∪,∩,∈,∷,√,⊥,∥,∠,⌒,⊙,∫,∮,≡,≌,≈,∽,∝,≠,≮,≯,≤,≥,∞,∵,∴,♂,♀,°,′,″,℃,$,¤,¢,£,‰,§,№,☆,★,○,●,◎,◇,◆,□,■,△,▲,※,→,←,↑,↓,〓,〡,〢,〣,〤,〥,〦,〧,〨,〩,㊣,㎎,㎏,㎜,㎝,㎞,㎡,㏄,㏎,㏑,㏒,㏕,︰,¬,¦,℡,ˊ,ˋ,˙,–,―,‥,‵,℅,℉,↖,↗,↘,↙,∕,∟,∣,≒,≦,≧,⊿,═,║,╒,╓,╔,╕,╖,╗,╘,╙,╚,╛,╜,╝,╞,╟,╠,╡,╢,╣,╤,╥,╦,╧,╨,╩,╪,╫,╬,╭,╮,╯,╰,╱,╲,╳,▁,▂,▃,▄,▅,▆,▇,�,█,▉,▊,▋,▌,▍,▎,▏,▓,▔,▕,▼,▽,◢,◣,◤,◥,☉,⊕,〒,〝,〞")}, + { name:"lmsz", title:lang.lmsz, content:toArray("ⅰ,ⅱ,ⅲ,ⅳ,ⅴ,ⅵ,ⅶ,ⅷ,ⅸ,ⅹ,Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ,Ⅶ,Ⅷ,Ⅸ,Ⅹ,Ⅺ,Ⅻ")}, + { name:"szfh", title:lang.szfh, content:toArray("⒈,⒉,⒊,⒋,⒌,⒍,⒎,⒏,⒐,⒑,⒒,⒓,⒔,⒕,⒖,⒗,⒘,⒙,⒚,⒛,⑴,⑵,⑶,⑷,⑸,⑹,⑺,⑻,⑼,⑽,⑾,⑿,⒀,⒁,⒂,⒃,⒄,⒅,⒆,⒇,①,②,③,④,⑤,⑥,⑦,⑧,⑨,⑩,㈠,㈡,㈢,㈣,㈤,㈥,㈦,㈧,㈨,㈩")}, + { name:"rwfh", title:lang.rwfh, content:toArray("ぁ,あ,ぃ,い,ぅ,う,ぇ,え,ぉ,お,か,が,き,ぎ,く,ぐ,け,げ,こ,ご,さ,ざ,し,じ,す,ず,せ,ぜ,そ,ぞ,た,だ,ち,ぢ,っ,つ,づ,て,で,と,ど,な,に,ぬ,ね,の,は,ば,ぱ,ひ,び,ぴ,ふ,ぶ,ぷ,へ,べ,ぺ,ほ,ぼ,ぽ,ま,み,む,め,も,ゃ,や,ゅ,ゆ,ょ,よ,ら,り,る,れ,ろ,ゎ,わ,ゐ,ゑ,を,ん,ァ,ア,ィ,イ,ゥ,ウ,ェ,エ,ォ,オ,カ,ガ,キ,ギ,ク,グ,ケ,ゲ,コ,ゴ,サ,ザ,シ,ジ,ス,ズ,セ,ゼ,ソ,ゾ,タ,ダ,チ,ヂ,ッ,ツ,ヅ,テ,デ,ト,ド,ナ,ニ,ヌ,ネ,ノ,ハ,バ,パ,ヒ,ビ,ピ,フ,ブ,プ,ヘ,ベ,ペ,ホ,ボ,ポ,マ,ミ,ム,メ,モ,ャ,ヤ,ュ,ユ,ョ,ヨ,ラ,リ,ル,レ,ロ,ヮ,ワ,ヰ,ヱ,ヲ,ン,ヴ,ヵ,ヶ")}, + { name:"xlzm", title:lang.xlzm, content:toArray("Α,Β,Γ,Δ,Ε,Ζ,Η,Θ,Ι,Κ,Λ,Μ,Ν,Ξ,Ο,Π,Ρ,Σ,Τ,Υ,Φ,Χ,Ψ,Ω,α,β,γ,δ,ε,ζ,η,θ,ι,κ,λ,μ,ν,ξ,ο,π,ρ,σ,τ,υ,φ,χ,ψ,ω")}, + { name:"ewzm", title:lang.ewzm, content:toArray("А,Б,В,Г,Д,Е,Ё,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я,а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я")}, + { name:"pyzm", title:lang.pyzm, content:toArray("ā,á,ǎ,à,ē,é,ě,è,ī,í,ǐ,ì,ō,ó,ǒ,ò,ū,ú,ǔ,ù,ǖ,ǘ,ǚ,ǜ,ü")}, + { name:"yyyb", title:lang.yyyb, content:toArray("i:,i,e,æ,ʌ,ə:,ə,u:,u,ɔ:,ɔ,a:,ei,ai,ɔi,əu,au,iə,εə,uə,p,t,k,b,d,g,f,s,ʃ,θ,h,v,z,ʒ,ð,tʃ,tr,ts,dʒ,dr,dz,m,n,ŋ,l,r,w,j,")}, + { name:"zyzf", title:lang.zyzf, content:toArray("ㄅ,ㄆ,ㄇ,ㄈ,ㄉ,ㄊ,ㄋ,ㄌ,ㄍ,ㄎ,ㄏ,ㄐ,ㄑ,ㄒ,ㄓ,ㄔ,ㄕ,ㄖ,ㄗ,ㄘ,ㄙ,ㄚ,ㄛ,ㄜ,ㄝ,ㄞ,ㄟ,ㄠ,ㄡ,ㄢ,ㄣ,ㄤ,ㄥ,ㄦ,ㄧ,ㄨ")} +]; +(function createTab(content) { + for (var i = 0, ci; ci = content[i++];) { + var span = document.createElement("span"); + span.setAttribute("tabSrc", ci.name); + span.innerHTML = ci.title; + if (i == 1)span.className = "focus"; + domUtils.on(span, "click", function () { + var tmps = $G("tabHeads").children; + for (var k = 0, sk; sk = tmps[k++];) { + sk.className = ""; + } + tmps = $G("tabBodys").children; + for (var k = 0, sk; sk = tmps[k++];) { + sk.style.display = "none"; + } + this.className = "focus"; + $G(this.getAttribute("tabSrc")).style.display = ""; + }); + $G("tabHeads").appendChild(span); + domUtils.insertAfter(span, document.createTextNode("\n")); + var div = document.createElement("div"); + div.id = ci.name; + div.style.display = (i == 1) ? "" : "none"; + var cons = ci.content; + for (var j = 0, con; con = cons[j++];) { + var charSpan = document.createElement("span"); + charSpan.innerHTML = con; + domUtils.on(charSpan, "click", function () { + editor.execCommand("insertHTML", this.innerHTML); + dialog.close(); + }); + div.appendChild(charSpan); + } + $G("tabBodys").appendChild(div); + } +})(charsContent); +function toArray(str) { + return str.split(","); +} diff --git a/public/js/ueditor/dialogs/table/dragicon.png b/public/js/ueditor/dialogs/table/dragicon.png new file mode 100644 index 0000000000000000000000000000000000000000..f26203bf3f0026891fc8374f109724a69eb38b22 GIT binary patch literal 304 zcmV-00nh%4P)p00001b5ch_0Itp) z=>Px#=t)FDR47x8lCciKP#A@KY2U+Oz-BN?3|$yZoaJ-YrY6>w+wB>;0|AN6r2r z_B6y2bQp%1X$_7DP`QFiq0z;_c3wk<3Lh&$^V;p?#e$PywxH71VT^XlHZ=jml#@|NVkRMLVaC0F_%) zcB=vWe$h}nSjAV$|0D + + + + + + + +
    +
    +
    +

    +
      +
    • + +
    • +
    • + +
    • +
    +
      +
    • + +
    • +
    • + +
    • +
    +
    +
    +
    +

    +
      +
    • + +
    • +
    • + +
    • +
    +
    +
    +
    +

    +
      +
    • + + +
    • +
    +
    +
    +
    +
    +
    +

    +
    +
    +
    +
    +
    + + + diff --git a/public/js/ueditor/dialogs/table/edittable.js b/public/js/ueditor/dialogs/table/edittable.js new file mode 100644 index 0000000..11dbee7 --- /dev/null +++ b/public/js/ueditor/dialogs/table/edittable.js @@ -0,0 +1,237 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-12-19 + * Time: 下午4:55 + * To change this template use File | Settings | File Templates. + */ +(function () { + var title = $G("J_title"), + titleCol = $G("J_titleCol"), + caption = $G("J_caption"), + sorttable = $G("J_sorttable"), + autoSizeContent = $G("J_autoSizeContent"), + autoSizePage = $G("J_autoSizePage"), + tone = $G("J_tone"), + me, + preview = $G("J_preview"); + + var editTable = function () { + me = this; + me.init(); + }; + editTable.prototype = { + init:function () { + var colorPiker = new UE.ui.ColorPicker({ + editor:editor + }), + colorPop = new UE.ui.Popup({ + editor:editor, + content:colorPiker + }); + + title.checked = editor.queryCommandState("inserttitle") == -1; + titleCol.checked = editor.queryCommandState("inserttitlecol") == -1; + caption.checked = editor.queryCommandState("insertcaption") == -1; + sorttable.checked = editor.queryCommandState("enablesort") == 1; + + var enablesortState = editor.queryCommandState("enablesort"), + disablesortState = editor.queryCommandState("disablesort"); + + sorttable.checked = !!(enablesortState < 0 && disablesortState >=0); + sorttable.disabled = !!(enablesortState < 0 && disablesortState < 0); + sorttable.title = enablesortState < 0 && disablesortState < 0 ? lang.errorMsg:''; + + me.createTable(title.checked, titleCol.checked, caption.checked); + me.setAutoSize(); + me.setColor(me.getColor()); + + domUtils.on(title, "click", me.titleHanler); + domUtils.on(titleCol, "click", me.titleColHanler); + domUtils.on(caption, "click", me.captionHanler); + domUtils.on(sorttable, "click", me.sorttableHanler); + domUtils.on(autoSizeContent, "click", me.autoSizeContentHanler); + domUtils.on(autoSizePage, "click", me.autoSizePageHanler); + + domUtils.on(tone, "click", function () { + colorPop.showAnchor(tone); + }); + domUtils.on(document, 'mousedown', function () { + colorPop.hide(); + }); + colorPiker.addListener("pickcolor", function () { + me.setColor(arguments[1]); + colorPop.hide(); + }); + colorPiker.addListener("picknocolor", function () { + me.setColor(""); + colorPop.hide(); + }); + }, + + createTable:function (hasTitle, hasTitleCol, hasCaption) { + var arr = [], + sortSpan = '^'; + arr.push(""); + if (hasCaption) { + arr.push("") + } + if (hasTitle) { + arr.push(""); + if(hasTitleCol) { arr.push(""); } + for (var j = 0; j < 5; j++) { + arr.push(""); + } + arr.push(""); + } + for (var i = 0; i < 6; i++) { + arr.push(""); + if(hasTitleCol) { arr.push("") } + for (var k = 0; k < 5; k++) { + arr.push("") + } + arr.push(""); + } + arr.push("
    " + lang.captionName + "
    " + lang.titleName + "" + lang.titleName + "
    " + lang.titleName + "" + lang.cellsName + "
    "); + preview.innerHTML = arr.join(""); + this.updateSortSpan(); + }, + titleHanler:function () { + var example = $G("J_example"), + frg=document.createDocumentFragment(), + color = domUtils.getComputedStyle(domUtils.getElementsByTagName(example, "td")[0], "border-color"), + colCount = example.rows[0].children.length; + + if (title.checked) { + example.insertRow(0); + for (var i = 0, node; i < colCount; i++) { + node = document.createElement("th"); + node.innerHTML = lang.titleName; + frg.appendChild(node); + } + example.rows[0].appendChild(frg); + + } else { + domUtils.remove(example.rows[0]); + } + me.setColor(color); + me.updateSortSpan(); + }, + titleColHanler:function () { + var example = $G("J_example"), + color = domUtils.getComputedStyle(domUtils.getElementsByTagName(example, "td")[0], "border-color"), + colArr = example.rows, + colCount = colArr.length; + + if (titleCol.checked) { + for (var i = 0, node; i < colCount; i++) { + node = document.createElement("th"); + node.innerHTML = lang.titleName; + colArr[i].insertBefore(node, colArr[i].children[0]); + } + } else { + for (var i = 0; i < colCount; i++) { + domUtils.remove(colArr[i].children[0]); + } + } + me.setColor(color); + me.updateSortSpan(); + }, + captionHanler:function () { + var example = $G("J_example"); + if (caption.checked) { + var row = document.createElement('caption'); + row.innerHTML = lang.captionName; + example.insertBefore(row, example.firstChild); + } else { + domUtils.remove(domUtils.getElementsByTagName(example, 'caption')[0]); + } + }, + sorttableHanler:function(){ + me.updateSortSpan(); + }, + autoSizeContentHanler:function () { + var example = $G("J_example"); + example.removeAttribute("width"); + }, + autoSizePageHanler:function () { + var example = $G("J_example"); + var tds = example.getElementsByTagName(example, "td"); + utils.each(tds, function (td) { + td.removeAttribute("width"); + }); + example.setAttribute('width', '100%'); + }, + updateSortSpan: function(){ + var example = $G("J_example"), + row = example.rows[0]; + + var spans = domUtils.getElementsByTagName(example,"span"); + utils.each(spans,function(span){ + span.parentNode.removeChild(span); + }); + if (sorttable.checked) { + utils.each(row.cells, function(cell, i){ + var span = document.createElement("span"); + span.innerHTML = "^"; + cell.appendChild(span); + }); + } + }, + getColor:function () { + var start = editor.selection.getStart(), color, + cell = domUtils.findParentByTagName(start, ["td", "th", "caption"], true); + color = cell && domUtils.getComputedStyle(cell, "border-color"); + if (!color) color = "#DDDDDD"; + return color; + }, + setColor:function (color) { + var example = $G("J_example"), + arr = domUtils.getElementsByTagName(example, "td").concat( + domUtils.getElementsByTagName(example, "th"), + domUtils.getElementsByTagName(example, "caption") + ); + + tone.value = color; + utils.each(arr, function (node) { + node.style.borderColor = color; + }); + + }, + setAutoSize:function () { + var me = this; + autoSizePage.checked = true; + me.autoSizePageHanler(); + } + }; + + new editTable; + + dialog.onok = function () { + editor.__hasEnterExecCommand = true; + + var checks = { + title:"inserttitle deletetitle", + titleCol:"inserttitlecol deletetitlecol", + caption:"insertcaption deletecaption", + sorttable:"enablesort disablesort" + }; + editor.fireEvent('saveScene'); + for(var i in checks){ + var cmds = checks[i].split(" "), + input = $G("J_" + i); + if(input["checked"]){ + editor.queryCommandState(cmds[0])!=-1 &&editor.execCommand(cmds[0]); + }else{ + editor.queryCommandState(cmds[1])!=-1 &&editor.execCommand(cmds[1]); + } + } + + editor.execCommand("edittable", tone.value); + autoSizeContent.checked ?editor.execCommand('adaptbytext') : ""; + autoSizePage.checked ? editor.execCommand("adaptbywindow") : ""; + editor.fireEvent('saveScene'); + + editor.__hasEnterExecCommand = false; + }; +})(); \ No newline at end of file diff --git a/public/js/ueditor/dialogs/table/edittd.html b/public/js/ueditor/dialogs/table/edittd.html new file mode 100644 index 0000000..70a3807 --- /dev/null +++ b/public/js/ueditor/dialogs/table/edittd.html @@ -0,0 +1,61 @@ + + + + + + + + +
    + + +
    + + + diff --git a/public/js/ueditor/dialogs/table/edittip.html b/public/js/ueditor/dialogs/table/edittip.html new file mode 100644 index 0000000..f9080bd --- /dev/null +++ b/public/js/ueditor/dialogs/table/edittip.html @@ -0,0 +1,33 @@ + + + + 表格删除提示 + + + + +
    +
    + +
    +
    + +
    +
    + + + diff --git a/public/js/ueditor/dialogs/template/config.js b/public/js/ueditor/dialogs/template/config.js new file mode 100644 index 0000000..417b8f7 --- /dev/null +++ b/public/js/ueditor/dialogs/template/config.js @@ -0,0 +1,42 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-8-8 + * Time: 下午2:00 + * To change this template use File | Settings | File Templates. + */ +var templates = [ + { + "pre":"pre0.png", + 'title':lang.blank, + 'preHtml':'

     欢迎使用UEditor!

    ', + "html":'

    欢迎使用UEditor!

    ' + + }, + { + "pre":"pre1.png", + 'title':lang.blog, + 'preHtml':'

    深入理解Range

    UEditor二次开发

    什么是Range

    对于“插入”选项卡上的库,在设计时都充分考虑了其中的项与文档整体外观的协调性。


    Range能干什么

    在“开始”选项卡上,通过从快速样式库中为所选文本选择一种外观,您可以方便地更改文档中所选文本的格式。

    ', + "html":'

    [键入文档标题]

    [键入文档副标题]

    [标题 1]

    对于“插入”选项卡上的库,在设计时都充分考虑了其中的项与文档整体外观的协调性。 您可以使用这些库来插入表格、页眉、页脚、列表、封面以及其他文档构建基块。 您创建的图片、图表或关系图也将与当前的文档外观协调一致。

    [标题 2]

    在“开始”选项卡上,通过从快速样式库中为所选文本选择一种外观,您可以方便地更改文档中所选文本的格式。 您还可以使用“开始”选项卡上的其他控件来直接设置文本格式。大多数控件都允许您选择是使用当前主题外观,还是使用某种直接指定的格式。

    [标题 3]

    对于“插入”选项卡上的库,在设计时都充分考虑了其中的项与文档整体外观的协调性。 您可以使用这些库来插入表格、页眉、页脚、列表、封面以及其他文档构建基块。 您创建的图片、图表或关系图也将与当前的文档外观协调一致。


    ' + + }, + { + "pre":"pre2.png", + 'title':lang.resume, + 'preHtml':'

    WEB前端开发简历


    联系电话:[键入您的电话]

    电子邮件:[键入您的电子邮件地址]

    家庭住址:[键入您的地址]

    目标职位

    WEB前端研发工程师

    学历

    1. [起止时间] [学校名称] [所学专业] [所获学位]

    工作经验


    ', + "html":'

    [此处键入简历标题]


    【此处插入照片】


    联系电话:[键入您的电话]


    电子邮件:[键入您的电子邮件地址]


    家庭住址:[键入您的地址]


    目标职位

    [此处键入您的期望职位]

    学历

    1. [键入起止时间] [键入学校名称] [键入所学专业] [键入所获学位]

    2. [键入起止时间] [键入学校名称] [键入所学专业] [键入所获学位]

    工作经验

    1. [键入起止时间] [键入公司名称] [键入职位名称]

      1. [键入负责项目] [键入项目简介]

      2. [键入负责项目] [键入项目简介]

    2. [键入起止时间] [键入公司名称] [键入职位名称]

      1. [键入负责项目] [键入项目简介]

    掌握技能

     [这里可以键入您所掌握的技能]

    ' + + }, + { + "pre":"pre3.png", + 'title':lang.richText, + 'preHtml':'

    [此处键入文章标题]

    图文混排方法

    图片居左,文字围绕图片排版

    方法:在文字前面插入图片,设置居左对齐,然后即可在右边输入多行文


    还有没有什么其他的环绕方式呢?这里是居右环绕


    欢迎大家多多尝试,为UEditor提供更多高质量模板!

    ', + "html":'


    [此处键入文章标题]

    图文混排方法

    1. 图片居左,文字围绕图片排版

    方法:在文字前面插入图片,设置居左对齐,然后即可在右边输入多行文本


    2. 图片居右,文字围绕图片排版

    方法:在文字前面插入图片,设置居右对齐,然后即可在左边输入多行文本


    3. 图片居中环绕排版

    方法:亲,这个真心没有办法。。。



    还有没有什么其他的环绕方式呢?这里是居右环绕


    欢迎大家多多尝试,为UEditor提供更多高质量模板!


    占位


    占位


    占位


    占位


    占位



    ' + }, + { + "pre":"pre4.png", + 'title':lang.sciPapers, + 'preHtml':'

    [键入文章标题]

    摘要:这里可以输入很长很长很长很长很长很长很长很长很差的摘要

    标题 1

    这里可以输入很多内容,可以图文混排,可以有列表等。

    标题 2

    1. 列表 1

    2. 列表 2

      1. 多级列表 1

      2. 多级列表 2

    3. 列表 3

    标题 3

    来个文字图文混排的


    ', + 'html':'

    [键入文章标题]

    摘要:这里可以输入很长很长很长很长很长很长很长很长很差的摘要

    标题 1

    这里可以输入很多内容,可以图文混排,可以有列表等。

    标题 2

    来个列表瞅瞅:

    1. 列表 1

    2. 列表 2

      1. 多级列表 1

      2. 多级列表 2

    3. 列表 3

    标题 3

    来个文字图文混排的

    这里可以多行

    右边是图片

    绝对没有问题的,不信你也可以试试看


    ' + } +]; \ No newline at end of file diff --git a/public/js/ueditor/dialogs/template/images/bg.gif b/public/js/ueditor/dialogs/template/images/bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c1d10ad1933e02086e8a1b3c807c7d1e57d51db GIT binary patch literal 84 zcmZ?wbhEHb6kw2GXkcLY|NsA)GiMZkvM_*v4u}BBFfeKN|6H_V+Po~-c70vN1t=1+A%PQ29uxwx4>qZSNmg$Vo0WSSm;`Hl{Ww|6H_V+Po~-c6&>|-aSW-r_2!NtU#o%$i-Y0&su(f8j@G?~f`NtGer^@M zrYdIdrP)2_bk~ELr2i)^H(PkDy?QdpIbuVC@BX&$s!L5iRYqm|O_N&n@I;(N<+i7f+;9Z? Phk?P<)z4*}Q$iB}^elK+ literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/template/images/pre2.png b/public/js/ueditor/dialogs/template/images/pre2.png new file mode 100644 index 0000000000000000000000000000000000000000..5a55672c1f9c4d41d5b5cf52d76bb2b7e7c6b186 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^DM0MT!2~3?K3Qf5q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1Ffi(Px;TbZ+h>KHoj_IVWAxIr&Fiabo)3x94Up%M35SEe^0#X9dS;F-9{&3Ljos=IM}2LB&w>e?K^KZ|9tHA z)W~h}eTfo>R&7s^?LYqdE7+t-Dv4L4H{``lKYf(JYIB0^>jrz9Khf>{)o!mlw-~mt za!)h6<9vO9zW09 gTfg@IqFVdQ&MBb@0QJAA?EnA( literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/template/images/pre3.png b/public/js/ueditor/dialogs/template/images/pre3.png new file mode 100644 index 0000000000000000000000000000000000000000..d852d29f13bcf743e15df824901ab568123a5aae GIT binary patch literal 485 zcmVTEH>0M4JV5-1QxJ>b$K`ZPMW6ena#ScoGi+aGE}QBI9b2~7O)VofCVgI z0Sj2@r|V8tRYg%8l35(bVHm0eOOPtd@{r7;D7wSi^O|UT7k&b(?|avE4}m2@pKY0^ zX8{XXz`D@ra0V&khG!6NNY4Tm0v50s9T*)L9q3sISir&!aYH5D@CmFqjy=yiBr_3O zu`P1E)qr;HnlAuCCeD2n8T2!dey#!;npC;SpUiv|xYU?E`rwKTr@$H|hS bPXPu1`Qm#ITgjGb00000NkvXXu0mjf8+_C8 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/template/images/pre4.png b/public/js/ueditor/dialogs/template/images/pre4.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7bc72ab99fe2c0ed9de1d89fd1c3e82ac3fd43 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^DM0MT!2~3?K3Qf5q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfeL+x;TbZ+5xOQzYV@t-I~V=Oc$U@%9?>h?uf)>*!tD zz9*sh?!vZ&M%HQV5wX`#zTA@g`shVPPoZs!AO#y_jv5_v2~@eKa{lwdV71lh?Z-1u+JRxq;OXk;vd$@?2>^GKp!om* literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/template/template.css b/public/js/ueditor/dialogs/template/template.css new file mode 100644 index 0000000..6c1608d --- /dev/null +++ b/public/js/ueditor/dialogs/template/template.css @@ -0,0 +1,18 @@ +.wrap{ padding: 5px;font-size: 14px;} +.left{width:425px;float: left;} +.right{width:160px;border: 1px solid #ccc;float: right;padding: 5px;margin-right: 5px;} +.right .pre{height: 332px;overflow-y: auto;} +.right .preitem{border: white 1px solid;margin: 5px 0;padding: 2px 0;} +.right .preitem:hover{background-color: lemonChiffon;cursor: pointer;border: #ccc 1px solid;} +.right .preitem img{display: block;margin: 0 auto;width:100px;} +.clear{clear: both;} +.top{height:26px;line-height: 26px;padding: 5px;} +.bottom{height:320px;width:100%;margin: 0 auto;} +.transparent{ background: url("images/bg.gif") repeat;} +.bottom table tr td{border:1px dashed #ccc;} +#colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;} +.border_style1{padding:2px;border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;} +p{margin: 5px 0} +table{clear:both;margin-bottom:10px;border-collapse:collapse;word-break:break-all;} +li{clear:both} +ol{padding-left:40px; } \ No newline at end of file diff --git a/public/js/ueditor/dialogs/template/template.html b/public/js/ueditor/dialogs/template/template.html new file mode 100644 index 0000000..9684419 --- /dev/null +++ b/public/js/ueditor/dialogs/template/template.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/public/js/ueditor/dialogs/template/template.js b/public/js/ueditor/dialogs/template/template.js new file mode 100644 index 0000000..80a334b --- /dev/null +++ b/public/js/ueditor/dialogs/template/template.js @@ -0,0 +1,53 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-8-8 + * Time: 下午2:09 + * To change this template use File | Settings | File Templates. + */ +(function () { + var me = editor, + preview = $G( "preview" ), + preitem = $G( "preitem" ), + tmps = templates, + currentTmp; + var initPre = function () { + var str = ""; + for ( var i = 0, tmp; tmp = tmps[i++]; ) { + str += '
    '; + } + preitem.innerHTML = str; + }; + var pre = function ( n ) { + var tmp = tmps[n - 1]; + currentTmp = tmp; + clearItem(); + domUtils.setStyles( preitem.childNodes[n - 1], { + "background-color":"lemonChiffon", + "border":"#ccc 1px solid" + } ); + preview.innerHTML = tmp.preHtml ? tmp.preHtml : ""; + }; + var clearItem = function () { + var items = preitem.children; + for ( var i = 0, item; item = items[i++]; ) { + domUtils.setStyles( item, { + "background-color":"", + "border":"white 1px solid" + } ); + } + }; + dialog.onok = function () { + if ( !$G( "issave" ).checked ){ + me.execCommand( "cleardoc" ); + } + var obj = { + html:currentTmp && currentTmp.html + }; + me.execCommand( "template", obj ); + }; + initPre(); + window.pre = pre; + pre(2) + +})(); \ No newline at end of file diff --git a/public/js/ueditor/dialogs/video/images/bg.png b/public/js/ueditor/dialogs/video/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..580be0a01dff4c70c72f78a3f40186660ee8eee0 GIT binary patch literal 2810 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 Bm*4;Z literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/video/images/file-icons.gif b/public/js/ueditor/dialogs/video/images/file-icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8c02c27e242f0584fc6b214f35b4f6d8caec332 GIT binary patch literal 20097 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/video/images/file-icons.png b/public/js/ueditor/dialogs/video/images/file-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff82c8c488f53a7aff67fbe39742e3321183eca GIT binary patch literal 44070 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

    *vGSxI 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/video/images/icons.gif b/public/js/ueditor/dialogs/video/images/icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..78459dea7b12ccbeec81d19ecdab22b1658e93b4 GIT binary patch literal 453 zcmZ?wbhEHbbY#$A*vtR||Ns9FJNP^N(4UCIf1{56|NHmvpFe+o|NadW2g{=nia%Kx z85lSjbU>mYGZarn*x(aH@fLZq!wgUiaA+%BrQuMGlI(3v}$4ket=c%G-JG_a6@d zUMtW1Dv_dMk(#;&JDULU);6IIt*+RD80Beh(v#{r8-@JE7rOMyrKZ@`PM+5- zK4PEn@UifH&1a7opNKNDvAy~H((Lt@PiCLrh`sqL^yyzFM}*_N9gV+*y1bvCcd{tw zP+atQ`ojjtR_?nOH&4iCw(0v^v}@~SfpwBi-JHA%0-p_?kEd#ga=ENn_|&M5?L?$c z!i1+jT>6R+ul!uQ+^$n$Hm~o7%Nb0wJ#GK7NE~>4aE?#6+>{R=oUZeJnouMg`B^J) rUi3;Xl^IQMkE|4#X6EZ{`gBG$ultcLuMHMNRKNMR>qv$%6N5DXx{1lO literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/video/images/icons.png b/public/js/ueditor/dialogs/video/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..12e4700163ac87fa38ae3d92a2c39d0fb4690fed GIT binary patch literal 2678 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/video/images/left_focus.jpg b/public/js/ueditor/dialogs/video/images/left_focus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7886d276dda2e0aecdae22393eac534ed507babf GIT binary patch literal 11423 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 T+mF>-Zi@@LHB9%bmHhD^k7NPf literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/video/images/none_focus.jpg b/public/js/ueditor/dialogs/video/images/none_focus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c768dcb47aaa289135afd2bd0e8eb0b6ecb7536 GIT binary patch literal 11546 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 C61Fb@ literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/video/images/right_focus.jpg b/public/js/ueditor/dialogs/video/images/right_focus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..173e10d2d91026c7283566993afb2f3a0267ea40 GIT binary patch literal 11334 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/video/images/success.gif b/public/js/ueditor/dialogs/video/images/success.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d4f3112b9d1df2147ed3b67d9736163dedd11e1 GIT binary patch literal 445 zcmZ?wbhEHb)L_tHxXJ(m|NsC0{`>#WKmY&!`~ULm|4%>v3rzVXIOUh{)L$ageu+>2 zB{Acd%*pZwE#>TlQSztb-KopJH+%!_|l-~7Ag*59?a z{_c7B@6_{ur(gU#_wwKE_y6vG`1j=VzZYNsfBgCX$DjXizW@L859r4KV8@~pia%Kx z85k@WbU+dyKQXY~a+p)#p(E9QVoA}-BeJtDJbfs+R&065YSGzOop#2q7tzUUTK@E- z1Qpqe*fm*b*T-Fam_8!ZPiJg?eRTb9ku+5;xVnw>Wr$>Ce}(b zvq{bgY~#~oR8Cparp&0%zbdUw!o*Z6ds70hP&$teqekA&7*16-748@%Mnl0vSqU6+ zOpICr!NSHY@7SLk+rBLP3&#jWP!Xxbb jiN%_{Rv%uKKTTNF#>acL^G5)OtDBg<-IWs>91PX~W`xy? literal 0 HcmV?d00001 diff --git a/public/js/ueditor/dialogs/video/images/success.png b/public/js/ueditor/dialogs/video/images/success.png new file mode 100644 index 0000000000000000000000000000000000000000..94f968dc8fd3c7ca8f6cb599d006ef3f23b62c7d GIT binary patch literal 1621 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#?>2=9ZF3nBND}m`vLFhHXsTY(OatnYqyQCInmZhe+73JqDfIV%MiQ6rPIL(9V zO~LIJBb<8mfsWA!MJ-ZP!-Rn82gHOYTp$OY^i%VI>AeV;u(vXbonl~MI_~M>7*cWT z%njcRVMh`65C6~Q2yI{K`NBQQh9heAinXE1(JfB=Ul%M;Ke#x6g%L8^f5l4Te zj&BcK1znDIyZS2~eC7F3K+}tVTa$=u*HTU0W4>0#`+Qf%|GkyBERBs#$Y}P@k7@U2 zd#*XsYr~WGeCA1uSK>2HTD)g9mP}Xrpg$+`K&8dx2JS~bjCx(hj5}1;-8qn2_>|?> zp{d+2q{I0hbQS!U-jOut`kSEi+IhQJGmBl4O%se*W?OGKZ0Mp?XmGnRgezL^8vCJ4 z#-ek9(R&%4!h+;oXA~Mtbyie=u#0PDiI#!iX`%2?^@kRL8ma*r6?+*}W4e|_8~J&& z+-+*Ub3{dDcAIF|!MTDz0#78qKYeaeVU$wDOOs3cR=e5FZ*O2e-6xc{Uu=$;!s>*M z>nZ|V>zUp8-oE6^wXjV+_UOvuE&SORr`;3hnBKu~e3rzlY@NRjD|5Ui2t>^@Ve7jy z)2vT>u1vesjJgG`f;l_n`FmbR~b^~{VzXB}7CdU_pt>lO9l=E;X#4<2bZu32r~J^e^%TSISQ_Qm$= z7d{rOo2%^RUGseJkpn9(MWszUQdl(i&RN5PBgZ0d#S7ZipShU3W`>Nsy6C#pCD*KW zyxHW%b?m|pr;dF;L$saa#oaeO`u=>jkXTjl9*cLEvOD!Jdr4ooKJW9gY7?D{e?uM^ z`_}E4`0yR0boA=9>3>WXzUH{&pDfpZ;_2xb=j*pKsk#WyD%J#5t{1#azeB z4SJq8H2*dJVX$xugZHVh{7U`u4@oM|quz5j-hRJi{qwh1k5uNqu`W>3HJG&Y^R}6R z$Gq-HPue$sd${oT*XKO8zN>Oe_%K^bZNm3^-vf7@5X# + + + + + + + + +

    + + + + + + + + + + + + diff --git a/public/js/ueditor/dialogs/video/video.js b/public/js/ueditor/dialogs/video/video.js new file mode 100644 index 0000000..de833a2 --- /dev/null +++ b/public/js/ueditor/dialogs/video/video.js @@ -0,0 +1,823 @@ +/** + * Created by JetBrains PhpStorm. + * User: taoqili + * Date: 12-2-20 + * Time: 上午11:19 + * To change this template use File | Settings | File Templates. + */ + +(function(){ + + var video = {}, + uploadVideoList = [], + isModifyUploadVideo = false, + uploadFile; + var editorOpt = {}; + + window.onload = function(){ + editorOpt = editor.getOpt('videoConfig'); + $focus($G("videoUrl")); + initTabs(); + initVideo(); + initUpload(); + }; + + /* 初始化tab标签 */ + function initTabs(){ + var tabs = $G('tabHeads').children; + for (var i = 0; i < tabs.length; i++) { + domUtils.on(tabs[i], "click", function (e) { + var j, bodyId, target = e.target || e.srcElement; + for (j = 0; j < tabs.length; j++) { + bodyId = tabs[j].getAttribute('data-content-id'); + if(tabs[j] == target){ + domUtils.addClass(tabs[j], 'focus'); + domUtils.addClass($G(bodyId), 'focus'); + }else { + domUtils.removeClasses(tabs[j], 'focus'); + domUtils.removeClasses($G(bodyId), 'focus'); + } + } + }); + } + if(!editorOpt.disableUpload){ + $G('tabHeads').querySelector('[data-content-id="upload"]').style.display = 'inline-block'; + } + if(!!editorOpt.selectCallback){ + $G('videoSelect').style.display = 'inline-block'; + domUtils.on($G('videoSelect'), "click", function (e) { + editorOpt.selectCallback(editor,function(info){ + if(info){ + $G('videoUrl').value = info.path; + createPreviewVideo(info.path); + } + }); + }); + } + } + + function initVideo(){ + createAlignButton( ["videoFloat", "upload_alignment"] ); + addUrlChangeListener($G("videoUrl")); + addOkListener(); + + //编辑视频时初始化相关信息 + (function(){ + var img = editor.selection.getRange().getClosedNode(),url; + if(img && img.className){ + var hasFakedClass = (img.className == "edui-faked-video"), + hasUploadClass = img.className.indexOf("edui-upload-video")!=-1; + if(hasFakedClass || hasUploadClass) { + $G("videoUrl").value = url = img.getAttribute("_url"); + $G("videoWidth").value = img.width; + $G("videoHeight").value = img.height; + var align = domUtils.getComputedStyle(img,"float"), + parentAlign = domUtils.getComputedStyle(img.parentNode,"text-align"); + updateAlignButton(parentAlign==="center"?"center":align); + } + if(hasUploadClass) { + isModifyUploadVideo = true; + } + } + createPreviewVideo(url); + })(); + } + + /** + * 监听确认和取消两个按钮事件,用户执行插入或者清空正在播放的视频实例操作 + */ + function addOkListener(){ + dialog.onok = function(){ + $G("preview").innerHTML = ""; + var currentTab = findFocus("tabHeads","tabSrc"); + switch(currentTab){ + case "video": + return insertSingle(); + break; + case "videoSearch": + return insertSearch("searchList"); + break; + case "upload": + return insertUpload(); + break; + } + }; + dialog.oncancel = function(){ + $G("preview").innerHTML = ""; + }; + } + + /** + * 依据传入的align值更新按钮信息 + * @param align + */ + function updateAlignButton( align ) { + var aligns = $G( "videoFloat" ).children; + for ( var i = 0, ci; ci = aligns[i++]; ) { + if ( ci.getAttribute( "name" ) == align ) { + if ( ci.className !="focus" ) { + ci.className = "focus"; + } + } else { + if ( ci.className =="focus" ) { + ci.className = ""; + } + } + } + } + + /** + * 将单个视频信息插入编辑器中 + */ + function insertSingle(){ + var width = $G("videoWidth"), + height = $G("videoHeight"), + url=$G('videoUrl').value, + align = findFocus("videoFloat","name"); + if(!url) return false; + if ( !checkNum( [width, height] ) ) return false; + editor.execCommand('insertvideo', { + url: convert_url(url), + width: width.value, + height: height.value, + align: align + }, isModifyUploadVideo ? 'upload':null); + } + + /** + * 将元素id下的所有代表视频的图片插入编辑器中 + * @param id + */ + function insertSearch(id){ + var imgs = domUtils.getElementsByTagName($G(id),"img"), + videoObjs=[]; + for(var i=0,img; img=imgs[i++];){ + if(img.getAttribute("selected")){ + videoObjs.push({ + url:img.getAttribute("ue_video_url"), + width:420, + height:280, + align:"none" + }); + } + } + editor.execCommand('insertvideo',videoObjs); + } + + /** + * 找到id下具有focus类的节点并返回该节点下的某个属性 + * @param id + * @param returnProperty + */ + function findFocus( id, returnProperty ) { + var tabs = $G( id ).children, + property; + for ( var i = 0, ci; ci = tabs[i++]; ) { + if ( ci.className=="focus" ) { + property = ci.getAttribute( returnProperty ); + break; + } + } + return property; + } + function convert_url(url){ + if (!url) return ''; + url = utils.trim(url) + .replace(/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, 'player.youku.com/embed/$1') + // .replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, "www.youtube.com/v/$2") + // .replace(/youtu.be\/(\w+)$/i, "www.youtube.com/v/$1") + //.replace(/www\.iqiyi\.com\/v_(\w+)\.html/i, "www.youtube.com/v/$1") + // .replace(/v\.ku6\.com\/.+\/([\w\.]+)\.html.*$/i, "player.ku6.com/refer/$1/v.swf") + // .replace(/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i, "player.56.com/v_$1.swf") + // .replace(/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i, "player.56.com/v_$1.swf") + // .replace(/v\.pps\.tv\/play_([\w]+)\.html.*$/i, "player.pps.tv/player/sid/$1/v.swf") + // .replace(/www\.letv\.com\/ptv\/vplay\/([\d]+)\.html.*$/i, "i7.imgs.letv.com/player/swfPlayer.swf?id=$1&autoplay=0") + // .replace(/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i, "www.tudou.com/v/$1") + // https://v.qq.com/x/cover/wagzbx91asjomnu/w05337nxfof.html + // https://v.qq.com/iframe/player.html?vid=w05337nxfof&tiny=0&auto=0 + .replace(/v\.qq\.com\/x\/cover\/[\w]+\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&tiny=0&auto=0") + .replace(/v\.qq\.com\/x\/page\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&tiny=0&auto=0") + .replace(/www\.bilibili\.com\/video\/([a-zA-Z0-9]+)\/?.*$/i, "player.bilibili.com/player.html?bvid=$1") + // .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\/([\w]+)\.html/i, "static.video.qq.com/TPout.swf?vid=$1") + // .replace(/v\.qq\.com\/.+[\?\&]vid=([^&]+).*$/i, "static.video.qq.com/TPout.swf?vid=$1") + // .replace(/my\.tv\.sohu\.com\/[\w]+\/[\d]+\/([\d]+)\.shtml.*$/i, "share.vrs.sohu.com/my/v.swf&id=$1") + ; + return url; + } + + /** + * 检测传入的所有input框中输入的长宽是否是正数 + * @param nodes input框集合, + */ + function checkNum( nodes ) { + for ( var i = 0, ci; ci = nodes[i++]; ) { + var value = ci.value; + if ( !isNumber( value ) && value) { + alert( lang.numError ); + ci.value = ""; + ci.focus(); + return false; + } + } + return true; + } + + /** + * 数字判断 + * @param value + */ + function isNumber( value ) { + return /(0|^[1-9]\d*$)/.test( value ); + } + + /** + * 创建图片浮动选择按钮 + * @param ids + */ + function createAlignButton( ids ) { + for ( var i = 0, ci; ci = ids[i++]; ) { + var floatContainer = $G( ci ), + nameMaps = {"none":lang['default'], "left":lang.floatLeft, "right":lang.floatRight, "center":lang.block}; + for ( var j in nameMaps ) { + var div = document.createElement( "div" ); + div.setAttribute( "name", j ); + if ( j == "none" ) div.className="focus"; + div.style.cssText = "background:url(images/" + j + "_focus.jpg);"; + div.setAttribute( "title", nameMaps[j] ); + floatContainer.appendChild( div ); + } + switchSelect( ci ); + } + } + + /** + * 选择切换 + * @param selectParentId + */ + function switchSelect( selectParentId ) { + var selects = $G( selectParentId ).children; + for ( var i = 0, ci; ci = selects[i++]; ) { + domUtils.on( ci, "click", function () { + for ( var j = 0, cj; cj = selects[j++]; ) { + cj.className = ""; + cj.removeAttribute && cj.removeAttribute( "class" ); + } + this.className = "focus"; + } ) + } + } + + /** + * 监听url改变事件 + * @param url + */ + function addUrlChangeListener(url){ + if (browser.ie) { + url.onpropertychange = function () { + createPreviewVideo( this.value ); + } + } else { + url.addEventListener( "input", function () { + createPreviewVideo( this.value ); + }, false ); + } + } + + /** + * 根据url生成视频预览 + * @param url + */ + function createPreviewVideo(url){ + if (!url)return; + + var conUrl = convert_url(url); + + conUrl = utils.unhtml(conUrl); + + // $G("preview").innerHTML = '
    '+lang.urlError+'
    '+ + // '' + + // ''; + + $G("preview").innerHTML = '
    ' + lang.urlError + '
    ' + + ''; + } + + + /* 插入上传视频 */ + function insertUpload(){ + var videoObjs=[], + uploadDir = editor.getOpt('videoUrlPrefix'), + width = $G('upload_width').value || 420, + height = $G('upload_height').value || 280, + align = findFocus("upload_alignment","name") || 'none'; + for(var key in uploadVideoList) { + var file = uploadVideoList[key]; + videoObjs.push({ + url: uploadDir + file.url, + width:width, + height:height, + align:align + }); + } + + var count = uploadFile.getQueueCount(); + if (count) { + $('.info', '#queueList').html('' + '还有2个未上传文件'.replace(/[\d]/, count) + ''); + return false; + } else { + editor.execCommand('insertvideo', videoObjs, 'upload'); + } + } + + /*初始化上传标签*/ + function initUpload(){ + uploadFile = new UploadFile('queueList'); + } + + + /* 上传附件 */ + function UploadFile(target) { + this.$wrap = target.constructor == String ? $('#' + target) : $(target); + this.init(); + } + UploadFile.prototype = { + init: function () { + this.fileList = []; + this.initContainer(); + this.initUploader(); + }, + initContainer: function () { + this.$queue = this.$wrap.find('.filelist'); + }, + /* 初始化容器 */ + initUploader: function () { + var _this = this, + $ = jQuery, // just in case. Make sure it's not an other libaray. + $wrap = _this.$wrap, + // 图片容器 + $queue = $wrap.find('.filelist'), + // 状态栏,包括进度和控制按钮 + $statusBar = $wrap.find('.statusBar'), + // 文件总体选择信息。 + $info = $statusBar.find('.info'), + // 上传按钮 + $upload = $wrap.find('.uploadBtn'), + // 上传按钮 + $filePickerBtn = $wrap.find('.filePickerBtn'), + // 上传按钮 + $filePickerBlock = $wrap.find('.filePickerBlock'), + // 没选择文件之前的内容。 + $placeHolder = $wrap.find('.placeholder'), + // 总体进度条 + $progress = $statusBar.find('.progress').hide(), + // 添加的文件数量 + fileCount = 0, + // 添加的文件总大小 + fileSize = 0, + // 优化retina, 在retina下这个值是2 + ratio = window.devicePixelRatio || 1, + // 缩略图大小 + thumbnailWidth = 113 * ratio, + thumbnailHeight = 113 * ratio, + // 可能有pedding, ready, uploading, confirm, done. + state = '', + // 所有文件的进度信息,key为file id + percentages = {}, + supportTransition = (function () { + var s = document.createElement('p').style, + r = 'transition' in s || + 'WebkitTransition' in s || + 'MozTransition' in s || + 'msTransition' in s || + 'OTransition' in s; + s = null; + return r; + })(), + // WebUploader实例 + uploader, + actionUrl = editor.getActionUrl(editor.getOpt('videoActionName')), + fileMaxSize = editor.getOpt('videoMaxSize'), + acceptExtensions = (editor.getOpt('videoAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, '');; + + if (!WebUploader.Uploader.support()) { + $('#filePickerReady').after($('
    ').html(lang.errorNotSupport)).hide(); + return; + } else if (!editor.getOpt('videoActionName')) { + $('#filePickerReady').after($('
    ').html(lang.errorLoadConfig)).hide(); + return; + } + + uploader = _this.uploader = WebUploader.create({ + pick: { + id: '#filePickerReady', + label: lang.uploadSelectFile + }, + swf: '../../third-party/webuploader/Uploader.swf', + server: actionUrl, + fileVal: editor.getOpt('videoFieldName'), + duplicate: true, + fileSingleSizeLimit: fileMaxSize, + compress: false + }); + uploader.addButton({ + id: '#filePickerBlock' + }); + uploader.addButton({ + id: '#filePickerBtn', + label: lang.uploadAddFile + }); + + setState('pedding'); + + // 当有文件添加进来时执行,负责view的创建 + function addFile(file) { + var $li = $('
  • ' + + '

    ' + file.name + '

    ' + + '

    ' + + '

    ' + + '
  • '), + + $btns = $('
    ' + + '' + lang.uploadDelete + '' + + '' + lang.uploadTurnRight + '' + + '' + lang.uploadTurnLeft + '
    ').appendTo($li), + $prgress = $li.find('p.progress span'), + $wrap = $li.find('p.imgWrap'), + $info = $('

    ').hide().appendTo($li), + + showError = function (code) { + switch (code) { + case 'exceed_size': + text = lang.errorExceedSize; + break; + case 'interrupt': + text = lang.errorInterrupt; + break; + case 'http': + text = lang.errorHttp; + break; + case 'not_allow_type': + text = lang.errorFileType; + break; + default: + text = lang.errorUploadRetry; + break; + } + $info.text(text).show(); + }; + + if (file.getStatus() === 'invalid') { + showError(file.statusText); + } else { + $wrap.text(lang.uploadPreview); + if ('|png|jpg|jpeg|bmp|gif|'.indexOf('|'+file.ext.toLowerCase()+'|') == -1) { + $wrap.empty().addClass('notimage').append('' + + '' + file.name + ''); + } else { + if (browser.ie && browser.version <= 7) { + $wrap.text(lang.uploadNoPreview); + } else { + uploader.makeThumb(file, function (error, src) { + if (error || !src || (/^data:/.test(src) && browser.ie && browser.version <= 7)) { + $wrap.text(lang.uploadNoPreview); + } else { + var $img = $(''); + $wrap.empty().append($img); + $img.on('error', function () { + $wrap.text(lang.uploadNoPreview); + }); + } + }, thumbnailWidth, thumbnailHeight); + } + } + percentages[ file.id ] = [ file.size, 0 ]; + file.rotation = 0; + + /* 检查文件格式 */ + if (!file.ext || acceptExtensions.indexOf(file.ext.toLowerCase()) == -1) { + showError('not_allow_type'); + uploader.removeFile(file); + } + } + + file.on('statuschange', function (cur, prev) { + if (prev === 'progress') { + $prgress.hide().width(0); + } else if (prev === 'queued') { + $li.off('mouseenter mouseleave'); + $btns.remove(); + } + // 成功 + if (cur === 'error' || cur === 'invalid') { + showError(file.statusText); + percentages[ file.id ][ 1 ] = 1; + } else if (cur === 'interrupt') { + showError('interrupt'); + } else if (cur === 'queued') { + percentages[ file.id ][ 1 ] = 0; + } else if (cur === 'progress') { + $info.hide(); + $prgress.css('display', 'block'); + } else if (cur === 'complete') { + } + + $li.removeClass('state-' + prev).addClass('state-' + cur); + }); + + $li.on('mouseenter', function () { + $btns.stop().animate({height: 30}); + }); + $li.on('mouseleave', function () { + $btns.stop().animate({height: 0}); + }); + + $btns.on('click', 'span', function () { + var index = $(this).index(), + deg; + + switch (index) { + case 0: + uploader.removeFile(file); + return; + case 1: + file.rotation += 90; + break; + case 2: + file.rotation -= 90; + break; + } + + if (supportTransition) { + deg = 'rotate(' + file.rotation + 'deg)'; + $wrap.css({ + '-webkit-transform': deg, + '-mos-transform': deg, + '-o-transform': deg, + 'transform': deg + }); + } else { + $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')'); + } + + }); + + $li.insertBefore($filePickerBlock); + } + + // 负责view的销毁 + function removeFile(file) { + var $li = $('#' + file.id); + delete percentages[ file.id ]; + updateTotalProgress(); + $li.off().find('.file-panel').off().end().remove(); + } + + function updateTotalProgress() { + var loaded = 0, + total = 0, + spans = $progress.children(), + percent; + + $.each(percentages, function (k, v) { + total += v[ 0 ]; + loaded += v[ 0 ] * v[ 1 ]; + }); + + percent = total ? loaded / total : 0; + + spans.eq(0).text(Math.round(percent * 100) + '%'); + spans.eq(1).css('width', Math.round(percent * 100) + '%'); + updateStatus(); + } + + function setState(val, files) { + + if (val != state) { + + var stats = uploader.getStats(); + + $upload.removeClass('state-' + state); + $upload.addClass('state-' + val); + + switch (val) { + + /* 未选择文件 */ + case 'pedding': + $queue.addClass('element-invisible'); + $statusBar.addClass('element-invisible'); + $placeHolder.removeClass('element-invisible'); + $progress.hide(); $info.hide(); + uploader.refresh(); + break; + + /* 可以开始上传 */ + case 'ready': + $placeHolder.addClass('element-invisible'); + $queue.removeClass('element-invisible'); + $statusBar.removeClass('element-invisible'); + $progress.hide(); $info.show(); + $upload.text(lang.uploadStart); + uploader.refresh(); + break; + + /* 上传中 */ + case 'uploading': + $progress.show(); $info.hide(); + $upload.text(lang.uploadPause); + break; + + /* 暂停上传 */ + case 'paused': + $progress.show(); $info.hide(); + $upload.text(lang.uploadContinue); + break; + + case 'confirm': + $progress.show(); $info.hide(); + $upload.text(lang.uploadStart); + + stats = uploader.getStats(); + if (stats.successNum && !stats.uploadFailNum) { + setState('finish'); + return; + } + break; + + case 'finish': + $progress.hide(); $info.show(); + if (stats.uploadFailNum) { + $upload.text(lang.uploadRetry); + } else { + $upload.text(lang.uploadStart); + } + break; + } + + state = val; + updateStatus(); + + } + + if (!_this.getQueueCount()) { + $upload.addClass('disabled') + } else { + $upload.removeClass('disabled') + } + + } + + function updateStatus() { + var text = '', stats; + + if (state === 'ready') { + text = lang.updateStatusReady.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize)); + } else if (state === 'confirm') { + stats = uploader.getStats(); + if (stats.uploadFailNum) { + text = lang.updateStatusConfirm.replace('_', stats.successNum).replace('_', stats.successNum); + } + } else { + stats = uploader.getStats(); + text = lang.updateStatusFinish.replace('_', fileCount). + replace('_KB', WebUploader.formatSize(fileSize)). + replace('_', stats.successNum); + + if (stats.uploadFailNum) { + text += lang.updateStatusError.replace('_', stats.uploadFailNum); + } + } + + $info.html(text); + } + + uploader.on('fileQueued', function (file) { + fileCount++; + fileSize += file.size; + + if (fileCount === 1) { + $placeHolder.addClass('element-invisible'); + $statusBar.show(); + } + + addFile(file); + }); + + uploader.on('fileDequeued', function (file) { + fileCount--; + fileSize -= file.size; + + removeFile(file); + updateTotalProgress(); + }); + + uploader.on('filesQueued', function (file) { + if (!uploader.isInProgress() && (state == 'pedding' || state == 'finish' || state == 'confirm' || state == 'ready')) { + setState('ready'); + } + updateTotalProgress(); + }); + + uploader.on('all', function (type, files) { + switch (type) { + case 'uploadFinished': + setState('confirm', files); + break; + case 'startUpload': + /* 添加额外的GET参数 */ + var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + 'encode=utf-8&' + params); + uploader.option('server', url); + setState('uploading', files); + break; + case 'stopUpload': + setState('paused', files); + break; + } + }); + + uploader.on('uploadBeforeSend', function (file, data, header) { + //这里可以通过data对象添加POST参数 + if (actionUrl.toLowerCase().indexOf('jsp') != -1) { + header['X_Requested_With'] = 'XMLHttpRequest'; + } + }); + + uploader.on('uploadProgress', function (file, percentage) { + var $li = $('#' + file.id), + $percent = $li.find('.progress span'); + + $percent.css('width', percentage * 100 + '%'); + percentages[ file.id ][ 1 ] = percentage; + updateTotalProgress(); + }); + + uploader.on('uploadSuccess', function (file, ret) { + var $file = $('#' + file.id); + try { + var responseText = (ret._raw || ret), + json = utils.str2json(responseText); + if (json.state == 'SUCCESS') { + uploadVideoList.push({ + 'url': json.url, + 'type': json.type, + 'original':json.original + }); + $file.append(''); + } else { + $file.find('.error').text(json.state).show(); + } + } catch (e) { + $file.find('.error').text(lang.errorServerUpload).show(); + } + }); + + uploader.on('uploadError', function (file, code) { + }); + uploader.on('error', function (code, file) { + if (code == 'Q_TYPE_DENIED' || code == 'F_EXCEED_SIZE') { + addFile(file); + } + }); + uploader.on('uploadComplete', function (file, ret) { + }); + + $upload.on('click', function () { + if ($(this).hasClass('disabled')) { + return false; + } + + if (state === 'ready') { + uploader.upload(); + } else if (state === 'paused') { + uploader.upload(); + } else if (state === 'uploading') { + uploader.stop(); + } + }); + + $upload.addClass('state-' + state); + updateTotalProgress(); + }, + getQueueCount: function () { + var file, i, status, readyFile = 0, files = this.uploader.getFiles(); + for (i = 0; file = files[i++]; ) { + status = file.getStatus(); + if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++; + } + return readyFile; + }, + refresh: function(){ + this.uploader.refresh(); + } + }; + +})(); diff --git a/public/js/ueditor/dialogs/wordimage/wordimage.html b/public/js/ueditor/dialogs/wordimage/wordimage.html new file mode 100644 index 0000000..ffebecd --- /dev/null +++ b/public/js/ueditor/dialogs/wordimage/wordimage.html @@ -0,0 +1,216 @@ + + + + + + + + + +
    +
    +
    + +
    +
    +
    复制路径
    +
    +
    +
    +
    本地选择保存
    + +
    +
    +
    +
    +
    +
    + Windows使用教程 +
    +
    +

    1、点击复制地址按钮

    +

    2、点击本地选择文件,粘贴剪切板的路径到文件选择路径

    +

    3、点击确定

    +
    +
    + Mac使用教程 +
    +
    +

    1、点击复制地址按钮

    +

    2、点击本地选择文件,按快捷 Command+Shift+G ,粘贴剪切板的路径到文件选择路径

    +

    3、点击确定

    +
    +
    +
    + + + + + + + + diff --git a/public/js/ueditor/dialogs/wordimage/wordimage.js b/public/js/ueditor/dialogs/wordimage/wordimage.js new file mode 100644 index 0000000..f438cc8 --- /dev/null +++ b/public/js/ueditor/dialogs/wordimage/wordimage.js @@ -0,0 +1,90 @@ +/** + * Created by JetBrains PhpStorm. + * User: taoqili + * Date: 12-1-30 + * Time: 下午12:50 + * To change this template use File | Settings | File Templates. + */ +var wordImage = {}; +var g = $G, flashObj, flashContainer; + +wordImage.init = function (opt, callbacks) { + showLocalPath("fileUrl"); + createCopyButton("copyButton", "fileUrl"); + addUploadButtonListener(); + addOkListener(); +}; + +function addUploadButtonListener() { + g('saveFile').addEventListener('change', function () { + if (this.files.length !== 1) { + alert('请选择1个文件') + return; + } + $('.image-tip').html('正在转存,请稍后...'); + var file = this.files[0]; + uploader.addFile(file); + uploader.upload(); + }); +} + + +function addOkListener() { + dialog.onok = function () { + //console.log('imageUrls',imageUrls); + if (!imageUrls.length) return; + var urlPrefix = editor.getOpt('imageUrlPrefix'), + images = domUtils.getElementsByTagName(editor.document, "img"); + editor.fireEvent('saveScene'); + // console.log('images',images,imageUrls); + for (var i = 0, img; img = images[i++];) { + var src = img.getAttribute("data-word-image"); + if (!src) continue; + for (var j = 0, url; url = imageUrls[j++];) { + // console.log('url',src, url); + if (src.indexOf(url.name.replace(" ", "")) != -1) { + img.src = urlPrefix + url.url; + img.setAttribute("_src", urlPrefix + url.url); //同时修改"_src"属性 + img.setAttribute("title", url.title); + domUtils.removeAttributes(img, ["data-word-image", "style", "width", "height"]); + editor.fireEvent("selectionchange"); + break; + } + } + } + editor.fireEvent('saveScene'); + // hideFlash(); + }; + dialog.oncancel = function () { + //hideFlash(); + }; +} + +function showLocalPath(id) { + //单张编辑 + var img = editor.selection.getRange().getClosedNode(); + var images = editor.execCommand('wordimage'); + if (images.length == 1 || img && img.tagName == 'IMG') { + g(id).value = images[0]; + return; + } + var path = images[0]; + var leftSlashIndex = path.lastIndexOf("/") || 0, //不同版本的doc和浏览器都可能影响到这个符号,故直接判断两种 + rightSlashIndex = path.lastIndexOf("\\") || 0, + separater = leftSlashIndex > rightSlashIndex ? "/" : "\\"; + + path = path.substring(0, path.lastIndexOf(separater) + 1); + g(id).value = path; +} + +function createCopyButton(id, dataFrom) { + var url = g(dataFrom).value; + if (url.startsWith("file:////")) { + url = url.substring(8); + } + g(id).setAttribute("data-clipboard-text", url); + var clipboard = new Clipboard('[data-clipboard-text]') + clipboard.on('success', function (e) { + g('copyButton').innerHTML = '复制成功'; + }); +} diff --git a/public/js/ueditor/index.html b/public/js/ueditor/index.html new file mode 100644 index 0000000..e0cffe0 --- /dev/null +++ b/public/js/ueditor/index.html @@ -0,0 +1,130 @@ + + + + UEditorPlus 完整演示 + + + + + + + + + + + + +
    +

    完整示例

    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    + + diff --git a/public/js/ueditor/lang/en/en.js b/public/js/ueditor/lang/en/en.js new file mode 100644 index 0000000..095d025 --- /dev/null +++ b/public/js/ueditor/lang/en/en.js @@ -0,0 +1,609 @@ +/** + * Created with JetBrains PhpStorm. + * User: taoqili + * Date: 12-6-12 + * Time: 下午6:57 + * To change this template use File | Settings | File Templates. + */ +UE.I18N['en'] = { + 'labelMap':{ + 'anchor':'Anchor', 'undo':'Undo', 'redo':'Redo', 'bold':'Bold', 'indent':'Indent', + 'italic':'Italic', 'underline':'Underline', 'strikethrough':'Strikethrough', 'subscript':'SubScript','fontborder':'text border', + 'superscript':'SuperScript', 'formatmatch':'Format Match', 'source':'Source', 'blockquote':'BlockQuote', + 'pasteplain':'PastePlain', 'selectall':'SelectAll', 'print':'Print', 'preview':'Preview', + 'horizontal':'Horizontal', 'removeformat':'RemoveFormat', 'time':'Time', 'date':'Date', + 'unlink':'Unlink', 'insertrow':'InsertRow', 'insertcol':'InsertCol', 'mergeright':'MergeRight', 'mergedown':'MergeDown', + 'deleterow':'DeleteRow', 'deletecol':'DeleteCol', 'splittorows':'SplitToRows','insertcode':'insert code', + 'splittocols':'SplitToCols', 'splittocells':'SplitToCells','deletecaption':'DeleteCaption','inserttitle':'InsertTitle', + 'mergecells':'MergeCells', 'deletetable':'DeleteTable', 'cleardoc':'Clear', 'insertparagraphbeforetable':"InsertParagraphBeforeTable", + 'fontfamily':'FontFamily', 'fontsize':'FontSize', 'paragraph':'Paragraph','simpleupload':'Single Image','insertimage':'Multi Image','edittable':'Edit Table', 'edittd':'Edit Td','link':'Link', + 'emotion':'Emotion', 'spechars':'Spechars', 'searchreplace':'SearchReplace', + 'insertvideo':'Video', 'help':'Help', 'justifyleft':'JustifyLeft', 'justifyright':'JustifyRight', 'justifycenter':'JustifyCenter', + 'justifyjustify':'Justify', 'forecolor':'FontColor', 'backcolor':'BackColor', 'insertorderedlist':'OL', + 'insertunorderedlist':'UL', 'fullscreen':'FullScreen', 'directionalityltr':'EnterFromLeft', 'directionalityrtl':'EnterFromRight', + 'rowspacingtop':'RowSpacingTop', 'rowspacingbottom':'RowSpacingBottom', 'pagebreak':'PageBreak', 'insertframe':'Iframe', 'imagenone':'Default', + 'imageleft':'ImageLeft', 'imageright':'ImageRight', 'attachment':'Attachment', 'imagecenter':'ImageCenter', 'wordimage':'WordImage', 'formula':'Formula', + 'lineheight':'LineHeight','edittip':'EditTip','customstyle':'CustomStyle', 'scrawl':'Scrawl', 'autotypeset':'AutoTypeset', + 'touppercase':'UpperCase', 'tolowercase':'LowerCase','template':'Template','background':'Background','inserttable':'InsertTable', + }, + 'insertorderedlist':{ + 'num':'1,2,3...', + 'num1':'1),2),3)...', + 'num2':'(1),(2),(3)...', + 'cn':'一,二,三....', + 'cn1':'一),二),三)....', + 'cn2':'(一),(二),(三)....', + 'decimal':'1,2,3...', + 'lower-alpha':'a,b,c...', + 'lower-roman':'i,ii,iii...', + 'upper-alpha':'A,B,C...', + 'upper-roman':'I,II,III...' + }, + 'insertunorderedlist':{ + 'circle':'○ Circle', + 'disc':'● Circle dot', + 'square':'■ Rectangle ', + 'dash' :'- Dash', + 'dot' : '。dot' + }, + 'paragraph':{'p':'Paragraph', 'h1':'Title 1', 'h2':'Title 2', 'h3':'Title 3', 'h4':'Title 4', 'h5':'Title 5', 'h6':'Title 6'}, + 'fontfamily':{ + 'songti':'Sim Sun', + 'kaiti':'Sim Kai', + 'heiti':'Sim Hei', + 'lishu':'Sim Li', + 'yahei': 'Microsoft YaHei', + 'andaleMono':'Andale Mono', + 'arial': 'Arial', + 'arialBlack':'Arial Black', + 'comicSansMs':'Comic Sans MS', + 'impact':'Impact', + 'timesNewRoman':'Times New Roman' + }, + 'customstyle':{ + 'tc':'Title center', + 'tl':'Title left', + 'im':'Important', + 'hi':'Highlight' + }, + 'autoupload': { + 'exceedSizeError': 'File Size Exceed', + 'exceedTypeError': 'File Type Not Allow', + 'jsonEncodeError': 'Server Return Format Error', + 'loading':"loading...", + 'loadError':"load error", + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + }, + 'simpleupload':{ + 'exceedSizeError': 'File Size Exceed', + 'exceedTypeError': 'File Type Not Allow', + 'jsonEncodeError': 'Server Return Format Error', + 'loading':"loading...", + 'loadError':"load error", + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + }, + 'elementPathTip':"Path", + 'wordCountTip':"Word Count", + 'wordCountMsg':'{#count} characters entered,{#leave} left. ', + 'wordOverFlowMsg':'The number of characters has exceeded allowable maximum values, the server may refuse to save!', + 'ok':"OK", + 'cancel':"Cancel", + 'closeDialog':"closeDialog", + 'tableDrag':"You must import the file uiUtils.js before drag! ", + 'autofloatMsg':"The plugin AutoFloat depends on EditorUI!", + 'loadconfigError': 'Get server config error.', + 'loadconfigFormatError': 'Server config format error.', + 'loadconfigHttpError': 'Get server config http error.', + 'insertcode':{ + 'as3':'ActionScript 3', + 'bash':'Bash/Shell', + 'cpp':'C/C++', + 'css':'CSS', + 'cf':'ColdFusion', + 'c#':'C#', + 'delphi':'Delphi', + 'diff':'Diff', + 'erlang':'Erlang', + 'groovy':'Groovy', + 'html':'HTML', + 'java':'Java', + 'jfx':'JavaFX', + 'js':'JavaScript', + 'pl':'Perl', + 'php':'PHP', + 'plain':'Plain Text', + 'ps':'PowerShell', + 'python':'Python', + 'ruby':'Ruby', + 'scala':'Scala', + 'sql':'SQL', + 'vb':'Visual Basic', + 'xml':'XML' + }, + 'confirmClear':"Do you confirm to clear the Document?", + 'contextMenu':{ + 'delete':"Delete", + 'selectall':"Select all", + 'deletecode':"Delete Code", + 'cleardoc':"Clear Document", + 'confirmclear':"Do you confirm to clear the Document?", + 'unlink':"Unlink", + 'paragraph':"Paragraph", + 'edittable':"Table property", + 'aligncell':'Align cell', + 'aligntable':'Table alignment', + 'tableleft':'Left float', + 'tablecenter':'Center', + 'tableright':'Right float', + 'aligntd':'Cell alignment', + 'edittd':"Cell property", + 'setbordervisible':'set table edge visible', + 'table':"Table", + 'justifyleft':'Justify Left', + 'justifyright':'Justify Right', + 'justifycenter':'Justify Center', + 'justifyjustify':'Default', + 'deletetable':"Delete table", + 'insertparagraphbefore':"InsertedBeforeLine", + 'insertparagraphafter':'InsertedAfterLine', + 'inserttable':'Insert table', + 'insertcaption':'Insert caption', + 'deletecaption':'Delete Caption', + 'inserttitle':'Insert Title', + 'deletetitle':'Delete Title', + 'inserttitlecol':'Insert Title Col', + 'deletetitlecol':'Delete Title Col', + 'averageDiseRow':'AverageDise Row', + 'averageDisCol':'AverageDis Col', + 'deleterow':"Delete row", + 'deletecol':"Delete col", + 'insertrow':"Insert row", + 'insertcol':"Insert col", + 'insertrownext':'Insert Row Next', + 'insertcolnext':'Insert Col Next', + 'mergeright':"Merge right", + 'mergeleft':"Merge left", + 'mergedown':"Merge down", + 'mergecells':"Merge cells", + 'splittocells':"Split to cells", + 'splittocols':"Split to Cols", + 'splittorows':"Split to Rows", + 'tablesort':'Table sorting', + 'enablesort':'Sorting Enable', + 'disablesort':'Sorting Disable', + 'reversecurrent':'Reverse current', + 'orderbyasc':'Order By ASCII', + 'reversebyasc':'Reverse By ASCII', + 'orderbynum':'Order By Num', + 'reversebynum':'Reverse By Num', + 'borderbk':'Border shading', + 'setcolor':'interlaced color', + 'unsetcolor':'Cancel interlacedcolor', + 'setbackground':'Background interlaced', + 'unsetbackground':'Cancel Bk interlaced', + 'redandblue':'Blue and red', + 'threecolorgradient':'Three-color gradient', + 'copy':"Copy(Ctrl + c)", + 'copymsg':"Browser does not support. Please use 'Ctrl + c' instead!", + 'paste':"Paste(Ctrl + v)", + 'pastemsg':"Browser does not support. Please use 'Ctrl + v' instead!" + }, + 'copymsg': "Browser does not support. Please use 'Ctrl + c' instead!", + 'pastemsg': "Browser does not support. Please use 'Ctrl + v' instead!", + 'anchorMsg':"Link", + 'clearColor':'Clear', + 'standardColor':'Standard color', + 'themeColor':'Theme color', + 'property':'Property', + 'default':'Default', + 'modify':'Modify', + 'save':'Save', + 'formulaedit':'FormulaEdit', + 'justifyleft':'Justify Left', + 'justifyright':'Justify Right', + 'justifycenter':'Justify Center', + 'justify':'Default', + 'clear':'Clear', + 'delete':'Delete', + 'clickToUpload':"Click to upload", + 'unset':'Language hasn\'t been set!', + 't_row':'row', + 't_col':'col', + 'pasteOpt':'Paste Option', + 'pasteSourceFormat':"Keep Source Formatting", + 'tagFormat':'Keep tag', + 'pasteTextFormat':'Keep Text only', + 'more':'More', + 'autoTypeSet':{ + 'mergeLine':"Merge empty line", + 'delLine':"Del empty line", + 'removeFormat':"Remove format", + 'indent':"Indent", + 'alignment':"Alignment", + 'imageFloat':"Image float", + 'removeFontsize':"Remove font size", + 'removeFontFamily':"Remove fontFamily", + 'removeHtml':"Remove redundant HTML code", + 'pasteFilter':"Paste filter", + 'run':"Done", + 'symbol':'Symbol Conversion', + 'bdc2sb':'Full-width to Half-width', + 'tobdc':'Half-width to Full-width' + }, + + 'background':{ + 'static':{ + 'lang_background_normal':'Normal', + 'lang_background_local':'Online', + 'lang_background_set':'Background Set', + 'lang_background_none':'No Background', + 'lang_background_colored':'Colored Background', + 'lang_background_color':'Color Set', + 'lang_background_netimg':'Net-Image', + 'lang_background_align':'Align Type', + 'lang_background_position':'Position', + 'repeatType':{'options':["Center", "Repeat-x", "Repeat-y", "Tile","Custom"]} + }, + 'noUploadImage':"No pictures has been uploaded!", + 'toggleSelect':'Change the active state by click!\n Image Size: ' + }, + //===============dialog i18N======================= + 'insertimage':{ + 'static':{ + 'lang_tab_remote':"Insert", + 'lang_tab_upload':"Local", + 'lang_tab_online':"Manager", + 'lang_tab_search':"Search", + 'lang_input_url':"Address:", + 'lang_input_size':"Size:", + 'lang_input_width':"Width", + 'lang_input_height':"Height", + 'lang_input_border':"Border:", + 'lang_input_vhspace':"Margins:", + 'lang_input_title':"Title:", + 'lang_input_align':'Image Float Style:', + 'lang_imgLoading':"Loading...", + 'lang_start_upload':"Start Upload", + 'lock':{'title':"Lock rate"}, + 'searchType':{'title':"ImageType", 'options':["News", "Wallpaper", "emotions", "photo"]}, + 'searchTxt':{'value':"Enter the search keyword!"}, + 'searchBtn':{'value':"Search"}, + 'searchReset':{'value':"Clear"}, + 'noneAlign':{'title':'None Float'}, + 'leftAlign':{'title':'Left Float'}, + 'rightAlign':{'title':'Right Float'}, + 'centerAlign':{'title':'Center In A Line'} + }, + 'uploadSelectFile':'Select File', + 'uploadAddFile':'Add File', + 'uploadStart':'Start Upload', + 'uploadPause':'Pause Upload', + 'uploadContinue':'Continue Upload', + 'uploadRetry':'Retry Upload', + 'uploadDelete':'Delete', + 'uploadTurnLeft':'Turn Left', + 'uploadTurnRight':'Turn Right', + 'uploadPreview':'Doing Preview', + 'uploadNoPreview':'Can Not Preview', + 'updateStatusReady': 'Selected _ pictures, total _KB.', + 'updateStatusConfirm': '_ uploaded successfully and _ upload failed', + 'updateStatusFinish': 'Total _ pictures (_KB), _ uploaded successfully', + 'updateStatusError': ' and _ upload failed', + 'errorNotSupport': 'WebUploader does not support the browser you are using. Please upgrade your browser or flash player', + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + 'errorExceedSize':'File Size Exceed', + 'errorFileType':'File Type Not Allow', + 'errorInterrupt':'File Upload Interrupted', + 'errorUploadRetry':'Upload Error, Please Retry.', + 'errorHttp':'Http Error', + 'errorServerUpload':'Server Result Error.', + 'remoteLockError':"Cannot Lock the Proportion between width and height", + 'numError':"Please enter the correct Num. e.g 123,400", + 'imageUrlError':"The image format may be wrong!", + 'imageLoadError':"Error,please check the network or URL!", + 'searchRemind':"Enter the search keyword!", + 'searchLoading':"Image is loading,please wait...", + 'searchRetry':" Sorry,can't find the image,please try again!" + }, + 'attachment':{ + 'static':{ + 'lang_tab_upload': 'Upload', + 'lang_tab_online': 'Online', + 'lang_start_upload':"Start upload", + 'lang_drop_remind':"You can drop files here, a single maximum of 300 files" + }, + 'uploadSelectFile':'Select File', + 'uploadAddFile':'Add File', + 'uploadStart':'Start Upload', + 'uploadPause':'Pause Upload', + 'uploadContinue':'Continue Upload', + 'uploadRetry':'Retry Upload', + 'uploadDelete':'Delete', + 'uploadTurnLeft':'Turn Left', + 'uploadTurnRight':'Turn Right', + 'uploadPreview':'Doing Preview', + 'updateStatusReady': 'Selected _ files, total _KB.', + 'updateStatusConfirm': '_ uploaded successfully and _ upload failed', + 'updateStatusFinish': 'Total _ files (_KB), _ uploaded successfully', + 'updateStatusError': ' and _ upload failed', + 'errorNotSupport': 'WebUploader does not support the browser you are using. Please upgrade your browser or flash player', + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + 'errorExceedSize':'File Size Exceed', + 'errorFileType':'File Type Not Allow', + 'errorInterrupt':'File Upload Interrupted', + 'errorUploadRetry':'Upload Error, Please Retry.', + 'errorHttp':'Http Error', + 'errorServerUpload':'Server Result Error.' + }, + + 'insertvideo':{ + 'static':{ + 'lang_tab_insertV':"Video", + 'lang_tab_searchV':"Search", + 'lang_tab_uploadV':"Upload", + 'lang_video_url':" URL ", + 'lang_video_size':"Video Size", + 'lang_videoW':"Width", + 'lang_videoH':"Height", + 'lang_alignment':"Alignment", + 'videoSearchTxt':{'value':"Enter the search keyword!"}, + 'videoType':{'options':["All", "Hot", "Entertainment", "Funny", "Sports", "Science", "variety"]}, + 'videoSearchBtn':{'value':"Search in Baidu"}, + 'videoSearchReset':{'value':"Clear result"}, + + 'lang_input_fileStatus':' No file uploaded!', + 'startUpload':{'style':"background:url(upload.png) no-repeat;"}, + + 'lang_upload_size':"Video Size", + 'lang_upload_width':"Width", + 'lang_upload_height':"Height", + 'lang_upload_alignment':"Alignment", + 'lang_format_advice':"Recommends mp4 format." + }, + 'numError':"Please enter the correct Num. e.g 123,400", + 'floatLeft':"Float left", + 'floatRight':"Float right", + 'default':"Default", + 'block':"Display in block", + 'urlError':"The video url format may be wrong!", + 'loading':"  The video is loading, please wait…", + 'clickToSelect':"Click to select", + 'goToSource':'Visit source video ', + 'noVideo':"    Sorry,can't find the video,please try again!", + + 'browseFiles':'Open files', + 'uploadSuccess':'Upload Successful!', + 'delSuccessFile':'Remove from the success of the queue', + 'delFailSaveFile':'Remove the save failed file', + 'statusPrompt':' file(s) uploaded! ', + 'flashVersionError':'The current Flash version is too low, please update FlashPlayer,then try again!', + 'flashLoadingError':'The Flash failed loading! Please check the path or network state', + 'fileUploadReady':'Wait for uploading...', + 'delUploadQueue':'Remove from the uploading queue ', + 'limitPrompt1':'Can not choose more than single', + 'limitPrompt2':'file(s)!Please choose again!', + 'delFailFile':'Remove failure file', + 'fileSizeLimit':'File size exceeds the limit!', + 'emptyFile':'Can not upload an empty file!', + 'fileTypeError':'File type error!', + 'unknownError':'Unknown error!', + 'fileUploading':'Uploading,please wait...', + 'cancelUpload':'Cancel upload', + 'netError':'Network error', + 'failUpload':'Upload failed', + 'serverIOError':'Server IO error!', + 'noAuthority':'No Permission!', + 'fileNumLimit':'Upload limit to the number', + 'failCheck':'Authentication fails, the upload is skipped!', + 'fileCanceling':'Cancel, please wait...', + 'stopUploading':'Upload has stopped...', + + 'uploadSelectFile':'Select File', + 'uploadAddFile':'Add File', + 'uploadStart':'Start Upload', + 'uploadPause':'Pause Upload', + 'uploadContinue':'Continue Upload', + 'uploadRetry':'Retry Upload', + 'uploadDelete':'Delete', + 'uploadTurnLeft':'Turn Left', + 'uploadTurnRight':'Turn Right', + 'uploadPreview':'Doing Preview', + 'updateStatusReady': 'Selected _ files, total _KB.', + 'updateStatusConfirm': '_ uploaded successfully and _ upload failed', + 'updateStatusFinish': 'Total _ files (_KB), _ uploaded successfully', + 'updateStatusError': ' and _ upload failed', + 'errorNotSupport': 'WebUploader does not support the browser you are using. Please upgrade your browser or flash player', + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + 'errorExceedSize':'File Size Exceed', + 'errorFileType':'File Type Not Allow', + 'errorInterrupt':'File Upload Interrupted', + 'errorUploadRetry':'Upload Error, Please Retry.', + 'errorHttp':'Http Error', + 'errorServerUpload':'Server Result Error.' + }, + 'template':{ + 'static':{ + 'lang_template_bkcolor':'Background Color', + 'lang_template_clear' : 'Keep Content', + 'lang_template_select':'Select Template' + }, + 'blank':"Blank", + 'blog':"Blog", + 'resume':"Resume", + 'richText':"Rich Text", + 'scrPapers':"Scientific Papers" + }, + scrawl:{ + 'static':{ + 'lang_input_previousStep':"Previous", + 'lang_input_nextsStep':"Next", + 'lang_input_clear':'Clear', + 'lang_input_addPic':'AddImage', + 'lang_input_ScalePic':'ScaleImage', + 'lang_input_removePic':'RemoveImage', + 'J_imgTxt':{title:'Add background image'} + }, + 'noScarwl':"No paint, a white paper...", + 'scrawlUpLoading':"Image is uploading, please wait...", + 'continueBtn':"Try again", + 'imageError':"Image failed to load!", + 'backgroundUploading':'Image is uploading,please wait...' + }, + anchor:{ + 'static':{ + 'lang_input_anchorName':'Anchor Name:' + } + }, + emotion:{ + 'static':{ + 'lang_input_choice':'Choice', + 'lang_input_Tuzki':'Tuzki', + 'lang_input_lvdouwa':'LvDouWa', + 'lang_input_BOBO':'BOBO', + 'lang_input_babyCat':'BabyCat', + 'lang_input_bubble':'Bubble', + 'lang_input_youa':'YouA' + } + }, + help:{ + 'static':{ + 'lang_input_about':'About UEditor Plus', + 'lang_input_shortcuts':'Shortcuts', + 'lang_input_introduction':"UEditor Plus is based on UEditor.", + 'lang_Txt_shortcuts':'Shortcuts', + 'lang_Txt_func':'Function', + 'lang_Txt_bold':'Bold', + 'lang_Txt_copy':'Copy', + 'lang_Txt_cut':'Cut', + 'lang_Txt_Paste':'Paste', + 'lang_Txt_undo':'Undo', + 'lang_Txt_redo':'Redo', + 'lang_Txt_italic':'Italic', + 'lang_Txt_underline':'Underline', + 'lang_Txt_selectAll':'Select All', + 'lang_Txt_visualEnter':'Submit', + 'lang_Txt_fullscreen':'Fullscreen' + } + }, + insertframe:{ + 'static':{ + 'lang_input_address':'Address:', + 'lang_input_width':'Width:', + 'lang_input_height':'height:', + 'lang_input_isScroll':'Enable scrollbars:', + 'lang_input_frameborder':'Show frame border:', + 'lang_input_alignMode':'Alignment:', + 'align':{title:"Alignment", options:["Default", "Left", "Right", "Center"]} + }, + 'enterAddress':'Please enter an address!' + }, + link:{ + 'static':{ + 'lang_input_text':'Text:', + 'lang_input_url':'URL:', + 'lang_input_title':'Title:', + 'lang_input_target':'open in new window:' + }, + 'validLink':'Supports only effective when a link is selected', + 'httpPrompt':'The hyperlink you enter should start with "http|https|ftp://"!' + }, + searchreplace:{ + 'static':{ + lang_tab_search:"Search", + lang_tab_replace:"Replace", + lang_search1:"Search", + lang_search2:"Search", + lang_replace:"Replace", + lang_searchReg:'Support regular expression ,which starts and ends with a slash ,for example "/expression/"', + lang_searchReg1:'Support regular expression ,which starts and ends with a slash ,for example "/expression/"', + lang_case_sensitive1:"Case sense", + lang_case_sensitive2:"Case sense", + nextFindBtn:{value:"Next"}, + preFindBtn:{value:"Preview"}, + nextReplaceBtn:{value:"Next"}, + preReplaceBtn:{value:"Preview"}, + repalceBtn:{value:"Replace"}, + repalceAllBtn:{value:"Replace all"} + }, + getEnd:"Has the search to the bottom!", + getStart:"Has the search to the top!", + countMsg:"Altogether replaced {#count} character(s)!" + }, + spechars:{ + 'static':{}, + tsfh:"Special", + lmsz:"Roman", + szfh:"Numeral", + rwfh:"Japanese", + xlzm:"The Greek", + ewzm:"Russian", + pyzm:"Phonetic", + yyyb:"English", + zyzf:"Others" + }, + 'edittable':{ + 'static':{ + 'lang_tableStyle':'Table style', + 'lang_insertCaption':'Add table header row', + 'lang_insertTitle':'Add table title row', + 'lang_insertTitleCol':'Add table title col', + 'lang_tableSize':'Automatically adjust table size', + 'lang_autoSizeContent':'Adaptive by form text', + 'lang_orderbycontent':"Table of contents sortable", + 'lang_autoSizePage':'Page width adaptive', + 'lang_example':'Example', + 'lang_borderStyle':'Table Border', + 'lang_color':'Color:' + }, + captionName:'Caption', + titleName:'Title', + cellsName:'text', + errorMsg:'There are merged cells, can not sort.' + }, + 'edittip':{ + 'static':{ + lang_delRow:'Delete entire row', + lang_delCol:'Delete entire col' + } + }, + 'edittd':{ + 'static':{ + lang_tdBkColor:'Background Color:' + } + }, + 'formula':{ + 'static':{ + } + }, + wordimage:{ + 'static':{ + lang_resave:"The re-save step", + uploadBtn:{src:"upload.png", alt:"Upload"}, + clipboard:{style:"background: url(copy.png) -153px -1px no-repeat;"}, + lang_step:" 1. Click top button to copy the url and then open the dialog to paste it. 2. Open after choose photos uploaded process." + }, + fileType:"Image", + flashError:"Flash initialization failed!", + netError:"Network error! Please try again!", + copySuccess:"URL has been copied!", + + 'flashI18n':{ + lang:encodeURI( '{"UploadingState":"totalNum: ${a},uploadComplete: ${b}", "BeforeUpload":"waitingNum: ${a}", "ExceedSize":"Size exceed${a}", "ErrorInPreview":"Preview failed", "DefaultDescription":"Description", "LoadingImage":"Loading..."}' ), + uploadingTF:encodeURI( '{"font":"Arial", "size":12, "color":"0x000", "bold":"true", "italic":"false", "underline":"false"}' ), + imageTF:encodeURI( '{"font":"Arial", "size":11, "color":"red", "bold":"false", "italic":"false", "underline":"false"}' ), + textEncoding:"utf-8", + addImageSkinURL:"addImage.png", + allDeleteBtnUpSkinURL:"allDeleteBtnUpSkin.png", + allDeleteBtnHoverSkinURL:"allDeleteBtnHoverSkin.png", + rotateLeftBtnEnableSkinURL:"rotateLeftEnable.png", + rotateLeftBtnDisableSkinURL:"rotateLeftDisable.png", + rotateRightBtnEnableSkinURL:"rotateRightEnable.png", + rotateRightBtnDisableSkinURL:"rotateRightDisable.png", + deleteBtnEnableSkinURL:"deleteEnable.png", + deleteBtnDisableSkinURL:"deleteDisable.png", + backgroundURL:'', + listBackgroundURL:'', + buttonURL:'button.png' + } + }, +}; diff --git a/public/js/ueditor/lang/en/images/addimage.png b/public/js/ueditor/lang/en/images/addimage.png new file mode 100644 index 0000000000000000000000000000000000000000..3a2fd17121b9e0d435b2ca082d696c33b9f27b79 GIT binary patch literal 3373 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 ZzyK$sgmq7P@T33$002ovPDHLkV1jUEUt0hG literal 0 HcmV?d00001 diff --git a/public/js/ueditor/lang/en/images/alldeletebtnupskin.png b/public/js/ueditor/lang/en/images/alldeletebtnupskin.png new file mode 100644 index 0000000000000000000000000000000000000000..61658ce6f10164478ce293c05f1f0485a8fa1fc4 GIT binary patch literal 743 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 P9go0R-$Jhf?tK5Bgo^WU literal 0 HcmV?d00001 diff --git a/public/js/ueditor/lang/en/images/button.png b/public/js/ueditor/lang/en/images/button.png new file mode 100644 index 0000000000000000000000000000000000000000..098874cb1fa85852d77ba9acbb5850c91c341fb7 GIT binary patch literal 4929 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/lang/en/images/deletedisable.png b/public/js/ueditor/lang/en/images/deletedisable.png new file mode 100644 index 0000000000000000000000000000000000000000..c8ee75094f59f0c1262806fd294d361f30f64f58 GIT binary patch literal 649 zcmV;40(Sk0P)!u-Pc3GOd!YPO+bG=gGoA_gW7h+<&i6W@>CzIUsorkT}tXKy|I-GoR_nf%RY$+yzqrWn_y0c| zycG_I116IRG@DK0sZ-E55u|Ou1fok>7zp9LsHJgReXhe;7C4$VS;)mE^wOWxM5!>w+j7B4b z!(p<+cswRyO2rY#*XuP527_xko|w>=_a0qmu_(~#bP__L5ZG)saJ${)TYOfjR7kAi zYvg9L`EQ38LQ-=rdwc{0EpJ`Z=~U9|_2kw4eh&tN0eJ55 jcWg?)n1^9d$t00000NkvXXu0mjfULPWN literal 0 HcmV?d00001 diff --git a/public/js/ueditor/lang/en/images/deleteenable.png b/public/js/ueditor/lang/en/images/deleteenable.png new file mode 100644 index 0000000000000000000000000000000000000000..26acc883567c5d7fde8de3ba052d7754a5b1c539 GIT binary patch literal 664 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 F`FAsl-Jbve literal 0 HcmV?d00001 diff --git a/public/js/ueditor/lang/en/images/localimage.png b/public/js/ueditor/lang/en/images/localimage.png new file mode 100644 index 0000000000000000000000000000000000000000..dcecad477b3e75d0adec4f5edd6f97645ca0f4d2 GIT binary patch literal 4446 zcmcIo2~-o;8V+p%1yTj9`x1kSRzi}=0!c}IN`fE;Fa`_=%4B9jB1tABVN;6>?qI1{ zu!74IRAf`cDq0ty6&197QVK4m@(M*nKtT^~MSOP%MB3x_USD%gGIwUa`!C`Ikq8f^&ia(%5yuAtG?)>l#A(!813ykc?UTy~YvM7TO6h|bBL&pighGl; z96<5J^%#Zg%Ag?(2AAT-b46h}jL79K6o>&a=?pfV$)+(Fd=`(-W>fk1x(kRZeih+d^L zs&FlZkO<51Xrq7%Of~tS(V4|+4gEX;#^`adj?Q#t5I*$*QN)bXMeEgl%29-lsWAwl}(v0h7pyPU|km+n zawu$s-wH+%z5>^4V8EA314m$Voi>6>F-L*#iK}rvPzSP+w`Kv*=03qrtVvD|3x5K|6<0lT@mGaxn# zViQ&KQnM6`GtP(OF}eZx@{u-nDiiYp4GJuSX?>B8B7WLA|zB=K<2vPq6DnjHg28=O1 zR=py2@5EC7{#YdjguWr8O==9d!WawdvDpzI&hJn&gztpwfa5=zk85Kv{U8T)upY2( z1OXCI6?$AlG3PhMh*Myl4nzPZT&Krq(f;OUW|I0^Jq9@D%_K3o?rbI#a;I_SY#xz_ zZZx@q3)5gOivi2IOgV!I4UjyTBy%k@`5fjzE&p#M^;3f=VQmBkCKvrLxC6<-XhK0r zK}-}>2FiA)!7ztGgE(AwH#x$E(6_iVxHbLl?jUc?g0}>o$PII%yq-1`)2jyM!Qfmo zn?UKyy8n;9w`biuwN(@Uugto?D@=Wj%G7q~f9^=8d!dO-FQP{KW-tF$z2{x?5Da5J zm=fl>@n3cLe*O4gofPH{J?Mlr(6qs^jaZrwjNrz6!vTI?b<w(tJMw}>Do?CJf6M;e3mY4xOGeSS#-3hNVjJ3 zltz2#y02BFr9dF)UVb(^+o^ZBXHLzHh6ZQZ$ue5aHj5i$dkrE02n!9Brd-{2V6uoN>sq;L)nQaV}-$8`yEDyt22o zw?6)T>@OEDUi`S?+JZ*wg1|Es6@0s+8`=AZ{6bQ(WR_z z^qLf*P>U|wA1~GvIV=_4cgb4E@=B@Nv5QmwV^7j7Tc_9~Hyb_H72#bn%tkCFhTpm9=5Q_hxJDY#`SBEjxFLqjLO4M;(=o zO*`l4axTT^%QK^9+xRb8e}C^2_F?kLpn1PKC5RTv#_hQ<*EgvqVOo`XN@}49KVkF9 z0b$+tSl)fLoMAKVQOj9mH#4HR<90`0%I295goV%BEr&@el~rq2hV(i-saZMn?1U)f znahi-q0K8Qhh-g1tQb|Zw<4rt-?$e)UI^!e`Ihcr%j)i%I{oX~JJI+}GoZ*c1D0j< ZS{}V=EorM?(?I+K;v@1C9-b4v_CLKzr`iAj literal 0 HcmV?d00001 diff --git a/public/js/ueditor/lang/en/images/music.png b/public/js/ueditor/lang/en/images/music.png new file mode 100644 index 0000000000000000000000000000000000000000..2f495fe92ffecdce42b74fd57dca2687414711fb GIT binary patch literal 91561 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 LNkvXXu0mjf3l)h% literal 0 HcmV?d00001 diff --git a/public/js/ueditor/lang/en/images/rotateleftdisable.png b/public/js/ueditor/lang/en/images/rotateleftdisable.png new file mode 100644 index 0000000000000000000000000000000000000000..741526e0d5e6eb5c30eb0a62c9b1d6d558ed9cdf GIT binary patch literal 719 zcmV;=0xVLm}k=YQ<2%m+GNILKMZ4Wj)Eo{6dA(i=1OgO`#k70DYI-BmRjYes)SkU2cI0GZBR;y4N3I~Hh!d`9*7LUg-fQ!ZA17DgvC%W<{o)0F! zU*`EmuKGZYN~Kcs0v3uoolcs~W&&`zTnccgjDVT|^mshtI#kAIIINifC7$1T{?yd~ z`f398$nzJ^&xXUj%I~;@1tb~>YHqh%0jWR{cz-&b2!6()Y&M(t%#{JqZzlB@o&~uo zRdFYN7<*g3d>y0SFTSsu}||KmrzxrzXV}0f4+Nl`U`wo^<=3%s|h|0ur}Z0m~6a z)9IA5+3a~Uyo=N{O{`Z26ni!(U6x=a31615Uq6I}2cZ-|0a2}1X+EF7+lbqaCbL*9 zVjpaCBO8zeF31Bljb43c1B|5gdMy+K1i&JZ2&owiAH&aRFjxU~zu$k$sq`Wh)qB?* z7JdW}ya?6MP#9CN2390Mab0C5lljw}edEbwzR6l%S5ujn*P2rK!bg5RKf!pHvr45x zq@5Lg56Rlp|dF?<); zZnrB`Ycv`HPI*-K+S{`L4RzyPXZYcl&002ovPDHLkV1lL= BGwT2V literal 0 HcmV?d00001 diff --git a/public/js/ueditor/lang/en/images/rotateleftenable.png b/public/js/ueditor/lang/en/images/rotateleftenable.png new file mode 100644 index 0000000000000000000000000000000000000000..e164ddbd62a232f3a89826158c9795f6c082cc89 GIT binary patch literal 952 zcmV;p14sOcP)B{+A~4pJXZ}t_3ogEQ=EtDt@NW=ovC^1YY3D0f#y*iY)MG5<8F z!|f{@kKz7^5#8k3NZf?c9K_t5iFB?APcn|7{XXn#Ybhtak0o(qW)4fuAr!0vET4{< zSc+h47GQ*Qo%FCG#zDtxKn;d}ii3LDciA+S|Xdhl! zB4Tth6pKaVi#F1YAvCEHTFJM^bUHnP0sSYFPoVrcDQm)w^;g8!)bGBFx|JW?%CGA- z&{PEjJ5@v`9|31h11Z`(8l4W74acX!rYt{M#7D#XGmFrJ8p1{(Q)@sv8@F2OUzvR1 zx9$d0kvWXM{tBEwN0$R4YNDW*#-^%Df&-Q6zoW#Uu@ZDmhS%$@-$mxZRD^B@1aSM_ zhL@++3|_o?ixNDPXhWAA>})fj>w5hzGPAR@B4aE>&p+Mbf*>$imMuk5EW2c0000?hzPCHlRk++nh`E3!rKF3htnTQ@ z$gI|MU8lEVHuFTg-PR|Q2`!gP+H5wYX&N~k4)SU74-bY78_Ii7=yw!+~9z)9EC?-%tI1pNtpOgTWwx zYc~hmYPIxUug9z{77N<%_sk-|f_a_y+;xqv4+oe^KHq!n0!Sli2@LjQ?eJI-PQw!5kz2kP;{i1#vW)J3m7@ilvOQx*+0gD21yWM29TG_#>*)V5x3eEte0rs!7XTfq- zNpDVBe^HqJA^?xgte(JHEEaB201ADoR;^a);o$)-i`fNGNCD$l*jUkV&ZOJ#g6-=H z48;P#aDbi7X5{nvH~?d$9K9Fo01LT5x392A!Cv-)3}9cydREAx^dDF>`_*d2002m8 z7y1N?u~>`?4DAa45ev4jw7ek*Sw2XA4L&zdS z9A4&}t`&psbm3W({))<)8k1Mzq-LMgHh4P0I-QOV5C8-H!ohO6T&8$D&Va$Z(UY0s zOeS;lL%|{kl3A%;S#MlC&Amg&cpiN1r-rvC| zuQ1Fer=aUPn>g6re+%A~4HxgfoyFs_jfT}hvT2|~buTAFG7cgsM5)fELnz*RfYsA+ z%+JjZfW5eCXjGl)8+s)4P|lCQu*F>n-SXLP{rpv`@{BNE{IcsI8B@_npSvh)X*hNpW_TLgr2`Ju@0bJqvCruO={o6E(Z3`5{jw@Hv`M-m z=H><1m4WE;;`c%mkz)x|ObZEnAD_J*B%s8ej2PcmwhgRZado>%)jtid7zm=SE zQ*F%`{_{RP6wdfheSj59}E|h^E{{P*E_)R6H^3NW^13gC8C>dV0CgKv@POF4dxfvY6kSFwxaNHki&!>3-Y^~4kn%F>oC=IgN4BfYTUZZWo z4NgH0Fff*Y6!1`OQEtkV%qBhmGZEnCEqwT{hG--_gp%$=?(C?C;zb^jm66PHQ4|^R zkb*cmi1NcmKm&YfVi#crNDyF;_V&?5G literal 0 HcmV?d00001 diff --git a/public/js/ueditor/lang/en/images/upload.png b/public/js/ueditor/lang/en/images/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb15b3d6d6799504cf7093a1600bd7ece0d9ef5 GIT binary patch literal 3941 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/lang/zh-cn/images/copy.png b/public/js/ueditor/lang/zh-cn/images/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..b2536aac72e763b9a872b507462458ecb96990f0 GIT binary patch literal 4319 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 N002ovPDHLkV1nv#UQ7T0 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/lang/zh-cn/images/localimage.png b/public/js/ueditor/lang/zh-cn/images/localimage.png new file mode 100644 index 0000000000000000000000000000000000000000..ba5f07af36d1b04d1aeb308d900b5e351d451dcc GIT binary patch literal 4570 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 qnuBf&KE~_shu^OVC=J73n;n?8DD^5 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/lang/zh-cn/images/music.png b/public/js/ueditor/lang/zh-cn/images/music.png new file mode 100644 index 0000000000000000000000000000000000000000..354edebc341b43e56a5e809686e17c279125b026 GIT binary patch literal 23106 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 O0000字数超出最大允许值,服务器可能拒绝保存!', + 'ok':"确认", + 'cancel':"取消", + 'closeDialog':"关闭对话框", + 'tableDrag':"表格拖动必须引入uiUtils.js文件!", + 'autofloatMsg':"工具栏浮动依赖编辑器UI,您首先需要引入UI文件!", + 'loadconfigError': '获取后台配置项请求出错,上传功能将不能正常使用!', + 'loadconfigFormatError': '后台配置项返回格式出错,上传功能将不能正常使用!', + 'loadconfigHttpError': '请求后台配置项http错误,上传功能将不能正常使用!', + 'insertcode':{ + 'as3':'ActionScript 3', + 'bash':'Bash/Shell', + 'cpp':'C/C++', + 'css':'CSS', + 'cf':'ColdFusion', + 'c#':'C#', + 'delphi':'Delphi', + 'diff':'Diff', + 'erlang':'Erlang', + 'groovy':'Groovy', + 'html':'HTML', + 'java':'Java', + 'jfx':'JavaFX', + 'js':'JavaScript', + 'pl':'Perl', + 'php':'PHP', + 'plain':'Plain Text', + 'ps':'PowerShell', + 'python':'Python', + 'ruby':'Ruby', + 'scala':'Scala', + 'sql':'SQL', + 'vb':'Visual Basic', + 'xml':'XML' + }, + 'confirmClear':"确定清空当前文档么?", + 'contextMenu':{ + 'delete':"删除", + 'selectall':"全选", + 'deletecode':"删除代码", + 'cleardoc':"清空文档", + 'confirmclear':"确定清空当前文档么?", + 'unlink':"删除超链接", + 'paragraph':"段落格式", + 'edittable':"表格属性", + 'aligntd':"单元格对齐方式", + 'aligntable':'表格对齐方式', + 'tableleft':'左浮动', + 'tablecenter':'居中显示', + 'tableright':'右浮动', + 'edittd':"单元格属性", + 'setbordervisible':'设置表格边线可见', + 'justifyleft':'左对齐', + 'justifyright':'右对齐', + 'justifycenter':'居中对齐', + 'justifyjustify':'两端对齐', + 'table':"表格", + 'inserttable':'插入表格', + 'deletetable':"删除表格", + 'insertparagraphbefore':"前插入段落", + 'insertparagraphafter':'后插入段落', + 'deleterow':"删除当前行", + 'deletecol':"删除当前列", + 'insertrow':"前插入行", + 'insertcol':"左插入列", + 'insertrownext':'后插入行', + 'insertcolnext':'右插入列', + 'insertcaption':'插入表格名称', + 'deletecaption':'删除表格名称', + 'inserttitle':'插入表格标题行', + 'deletetitle':'删除表格标题行', + 'inserttitlecol':'插入表格标题列', + 'deletetitlecol':'删除表格标题列', + 'averageDiseRow':'平均分布各行', + 'averageDisCol':'平均分布各列', + 'mergeright':"向右合并", + 'mergeleft':"向左合并", + 'mergedown':"向下合并", + 'mergecells':"合并单元格", + 'splittocells':"完全拆分单元格", + 'splittocols':"拆分成列", + 'splittorows':"拆分成行", + 'tablesort':'表格排序', + 'enablesort':'设置表格可排序', + 'disablesort':'取消表格可排序', + 'reversecurrent':'逆序当前', + 'orderbyasc':'按ASCII字符升序', + 'reversebyasc':'按ASCII字符降序', + 'orderbynum':'按数值大小升序', + 'reversebynum':'按数值大小降序', + 'borderbk':'边框底纹', + 'setcolor':'表格隔行变色', + 'unsetcolor':'取消表格隔行变色', + 'setbackground':'选区背景隔行', + 'unsetbackground':'取消选区背景', + 'redandblue':'红蓝相间', + 'threecolorgradient':'三色渐变', + 'copy':"复制(Ctrl + c)", + 'copymsg': "浏览器不支持,请使用 'Ctrl + c'", + 'paste':"粘贴(Ctrl + v)", + 'pastemsg': "浏览器不支持,请使用 'Ctrl + v'" + }, + 'copymsg': "浏览器不支持,请使用 'Ctrl + c'", + 'pastemsg': "浏览器不支持,请使用 'Ctrl + v'", + 'anchorMsg':"链接", + 'clearColor':'清空颜色', + 'standardColor':'标准颜色', + 'themeColor':'主题颜色', + 'property':'属性', + 'default':'默认', + 'modify':'修改', + 'save':'保存', + 'formulaedit':'公式修改', + 'justifyleft':'左对齐', + 'justifyright':'右对齐', + 'justifycenter':'居中', + 'justify':'默认', + 'clear':'清除', + 'delete':'删除', + 'clickToUpload':"点击上传", + 'unset':'尚未设置语言文件', + 't_row':'行', + 't_col':'列', + 'more':'更多', + 'pasteOpt':'粘贴选项', + 'pasteSourceFormat':"保留源格式", + 'tagFormat':'只保留标签', + 'pasteTextFormat':'只保留文本', + 'autoTypeSet':{ + 'mergeLine':"合并空行", + 'delLine':"清除空行", + 'removeFormat':"清除格式", + 'indent':"首行缩进", + 'alignment':"对齐方式", + 'imageFloat':"图片浮动", + 'removeFontsize':"清除字号", + 'removeFontFamily':"清除字体", + 'removeHtml':"清除冗余HTML代码", + 'pasteFilter':"粘贴过滤", + 'run':"执行", + 'symbol':'符号转换', + 'bdc2sb':'全角转半角', + 'tobdc':'半角转全角' + }, + + 'background':{ + 'static':{ + 'lang_background_normal':'背景设置', + 'lang_background_local':'在线图片', + 'lang_background_set':'选项', + 'lang_background_none':'无背景色', + 'lang_background_colored':'有背景色', + 'lang_background_color':'颜色设置', + 'lang_background_netimg':'网络图片', + 'lang_background_align':'对齐方式', + 'lang_background_position':'精确定位', + 'repeatType':{'options':["居中", "横向重复", "纵向重复", "平铺","自定义"]} + + }, + 'noUploadImage':"当前未上传过任何图片!", + 'toggleSelect':"单击可切换选中状态\n原图尺寸: " + }, + //===============dialog i18N======================= + 'insertimage':{ + 'static':{ + 'lang_tab_remote':"插入图片", //节点 + 'lang_tab_upload':"本地上传", + 'lang_tab_online':"在线管理", + 'lang_input_url':"地 址:", + 'lang_input_size':"大 小:", + 'lang_input_width':"宽度", + 'lang_input_height':"高度", + 'lang_input_border':"边 框:", + 'lang_input_vhspace':"边 距:", + 'lang_input_title':"描 述:", + 'lang_input_align':'图片浮动方式:', + 'lang_imgLoading':" 图片加载中……", + 'lang_start_upload':"开始上传", + 'lock':{'title':"锁定宽高比例"}, //属性 + 'searchType':{'title':"图片类型", 'options':["新闻", "壁纸", "表情", "头像"]}, //select的option + 'searchTxt':{'value':"请输入搜索关键词"}, + 'searchBtn':{'value':"百度一下"}, + 'searchReset':{'value':"清空搜索"}, + 'noneAlign':{'title':'无浮动'}, + 'leftAlign':{'title':'左浮动'}, + 'rightAlign':{'title':'右浮动'}, + 'centerAlign':{'title':'居中独占一行'} + }, + 'uploadSelectFile':'点击选择图片', + 'uploadAddFile':'继续添加', + 'uploadStart':'开始上传', + 'uploadPause':'暂停上传', + 'uploadContinue':'继续上传', + 'uploadRetry':'重试上传', + 'uploadDelete':'删除', + 'uploadTurnLeft':'向左旋转', + 'uploadTurnRight':'向右旋转', + 'uploadPreview':'预览中', + 'uploadNoPreview':'不能预览', + 'updateStatusReady': '选中_张图片,共_KB。', + 'updateStatusConfirm': '已成功上传_张照片,_张照片上传失败', + 'updateStatusFinish': '共_张(_KB),_张上传成功', + 'updateStatusError': ',_张上传失败。', + 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', + 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', + 'errorExceedSize':'文件大小超出', + 'errorFileType':'文件格式不允许', + 'errorInterrupt':'文件传输中断', + 'errorUploadRetry':'上传失败,请重试', + 'errorHttp':'http请求错误', + 'errorServerUpload':'服务器返回出错', + 'remoteLockError':"宽高不正确,不能所定比例", + 'numError':"请输入正确的长度或者宽度值!例如:123,400", + 'imageUrlError':"不允许的图片格式或者图片域!", + 'imageLoadError':"图片加载失败!请检查链接地址或网络状态!", + 'searchRemind':"请输入搜索关键词", + 'searchLoading':"图片加载中,请稍后……", + 'searchRetry':" :( ,抱歉,没有找到图片!请重试一次!" + }, + 'attachment':{ + 'static':{ + 'lang_tab_upload': '上传附件', + 'lang_tab_online': '在线附件', + 'lang_start_upload':"开始上传", + 'lang_drop_remind':"可以将文件拖到这里,单次最多可选100个文件" + }, + 'uploadSelectFile':'点击选择文件', + 'uploadAddFile':'继续添加', + 'uploadStart':'开始上传', + 'uploadPause':'暂停上传', + 'uploadContinue':'继续上传', + 'uploadRetry':'重试上传', + 'uploadDelete':'删除', + 'uploadTurnLeft':'向左旋转', + 'uploadTurnRight':'向右旋转', + 'uploadPreview':'预览中', + 'updateStatusReady': '选中_个文件,共_KB。', + 'updateStatusConfirm': '已成功上传_个文件,_个文件上传失败', + 'updateStatusFinish': '共_个(_KB),_个上传成功', + 'updateStatusError': ',_张上传失败。', + 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', + 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', + 'errorExceedSize':'文件大小超出', + 'errorFileType':'文件格式不允许', + 'errorInterrupt':'文件传输中断', + 'errorUploadRetry':'上传失败,请重试', + 'errorHttp':'http请求错误', + 'errorServerUpload':'服务器返回出错' + }, + 'insertvideo':{ + 'static':{ + 'lang_tab_insertV':"插入视频", + 'lang_tab_searchV':"搜索视频", + 'lang_tab_uploadV':"上传视频", + 'lang_video_url':"视频网址", + 'lang_video_size':"视频尺寸", + 'lang_videoW':"宽度", + 'lang_videoH':"高度", + 'lang_alignment':"对齐方式", + 'videoSearchTxt':{'value':"请输入搜索关键字!"}, + 'videoType':{'options':["全部", "热门", "娱乐", "搞笑", "体育", "科技", "综艺"]}, + 'videoSearchBtn':{'value':"百度一下"}, + 'videoSearchReset':{'value':"清空结果"}, + + 'lang_input_fileStatus':' 当前未上传文件', + 'startUpload':{'style':"background:url(upload.png) no-repeat;"}, + + 'lang_upload_size':"视频尺寸", + 'lang_upload_width':"宽度", + 'lang_upload_height':"高度", + 'lang_upload_alignment':"对齐方式", + 'lang_format_advice':"建议使用mp4格式." + + }, + 'numError':"请输入正确的数值,如123,400", + 'floatLeft':"左浮动", + 'floatRight':"右浮动", + '"default"':"默认", + 'block':"独占一行", + 'urlError':"输入的视频地址有误,请检查后再试!", + 'loading':"  视频加载中,请等待……", + 'clickToSelect':"点击选中", + 'goToSource':'访问源视频', + 'noVideo':"    抱歉,找不到对应的视频,请重试!", + + 'browseFiles':'浏览文件', + 'uploadSuccess':'上传成功!', + 'delSuccessFile':'从成功队列中移除', + 'delFailSaveFile':'移除保存失败文件', + 'statusPrompt':' 个文件已上传! ', + 'flashVersionError':'当前Flash版本过低,请更新FlashPlayer后重试!', + 'flashLoadingError':'Flash加载失败!请检查路径或网络状态', + 'fileUploadReady':'等待上传……', + 'delUploadQueue':'从上传队列中移除', + 'limitPrompt1':'单次不能选择超过', + 'limitPrompt2':'个文件!请重新选择!', + 'delFailFile':'移除失败文件', + 'fileSizeLimit':'文件大小超出限制!', + 'emptyFile':'空文件无法上传!', + 'fileTypeError':'文件类型不允许!', + 'unknownError':'未知错误!', + 'fileUploading':'上传中,请等待……', + 'cancelUpload':'取消上传', + 'netError':'网络错误', + 'failUpload':'上传失败!', + 'serverIOError':'服务器IO错误!', + 'noAuthority':'无权限!', + 'fileNumLimit':'上传个数限制', + 'failCheck':'验证失败,本次上传被跳过!', + 'fileCanceling':'取消中,请等待……', + 'stopUploading':'上传已停止……', + + 'uploadSelectFile':'点击选择文件', + 'uploadAddFile':'继续添加', + 'uploadStart':'开始上传', + 'uploadPause':'暂停上传', + 'uploadContinue':'继续上传', + 'uploadRetry':'重试上传', + 'uploadDelete':'删除', + 'uploadTurnLeft':'向左旋转', + 'uploadTurnRight':'向右旋转', + 'uploadPreview':'预览中', + 'updateStatusReady': '选中_个文件,共_KB。', + 'updateStatusConfirm': '成功上传_个,_个失败', + 'updateStatusFinish': '共_个(_KB),_个成功上传', + 'updateStatusError': ',_张上传失败。', + 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', + 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', + 'errorExceedSize':'文件大小超出', + 'errorFileType':'文件格式不允许', + 'errorInterrupt':'文件传输中断', + 'errorUploadRetry':'上传失败,请重试', + 'errorHttp':'http请求错误', + 'errorServerUpload':'服务器返回出错' + }, + 'template':{ + 'static':{ + 'lang_template_bkcolor':'背景颜色', + 'lang_template_clear' : '保留原有内容', + 'lang_template_select' : '选择模板' + }, + 'blank':"空白文档", + 'blog':"博客文章", + 'resume':"个人简历", + 'richText':"图文混排", + 'sciPapers':"科技论文" + + + }, + 'scrawl':{ + 'static':{ + 'lang_input_previousStep':"上一步", + 'lang_input_nextsStep':"下一步", + 'lang_input_clear':'清空', + 'lang_input_addPic':'添加背景', + 'lang_input_ScalePic':'缩放背景', + 'lang_input_removePic':'删除背景', + 'J_imgTxt':{title:'添加背景图片'} + }, + 'noScarwl':"尚未作画,白纸一张~", + 'scrawlUpLoading':"涂鸦上传中,别急哦~", + 'continueBtn':"继续", + 'imageError':"糟糕,图片读取失败了!", + 'backgroundUploading':'背景图片上传中,别急哦~' + }, + 'anchor':{ + 'static':{ + 'lang_input_anchorName':'锚点名字:' + } + }, + 'emotion':{ + 'static':{ + 'lang_input_choice':'精选', + 'lang_input_Tuzki':'兔斯基', + 'lang_input_BOBO':'BOBO', + 'lang_input_lvdouwa':'绿豆蛙', + 'lang_input_babyCat':'baby猫', + 'lang_input_bubble':'泡泡', + 'lang_input_youa':'有啊' + } + }, + 'help':{ + 'static':{ + 'lang_input_about':'关于 UEditor Plus', + 'lang_input_shortcuts':'快捷键', + 'lang_input_introduction':'UEditor Plus 是基于百度UEditor二次开发的所见即所得富文本web编辑器,主要丰富也界面样式,注重用户体验等特点。基于Apache 2.0协议开源,允许自由使用和修改代码。', + 'lang_Txt_shortcuts':'快捷键', + 'lang_Txt_func':'功能', + 'lang_Txt_bold':'给选中字设置为加粗', + 'lang_Txt_copy':'复制选中内容', + 'lang_Txt_cut':'剪切选中内容', + 'lang_Txt_Paste':'粘贴', + 'lang_Txt_undo':'重新执行上次操作', + 'lang_Txt_redo':'撤销上一次操作', + 'lang_Txt_italic':'给选中字设置为斜体', + 'lang_Txt_underline':'给选中字加下划线', + 'lang_Txt_selectAll':'全部选中', + 'lang_Txt_visualEnter':'软回车', + 'lang_Txt_fullscreen':'全屏' + } + }, + 'insertframe':{ + 'static':{ + 'lang_input_address':'地址:', + 'lang_input_width':'宽度:', + 'lang_input_height':'高度:', + 'lang_input_isScroll':'允许滚动条:', + 'lang_input_frameborder':'显示框架边框:', + 'lang_input_alignMode':'对齐方式:', + 'align':{title:"对齐方式", options:["默认", "左对齐", "右对齐", "居中"]} + }, + 'enterAddress':'请输入地址!' + }, + 'link':{ + 'static':{ + 'lang_input_text':'文本内容:', + 'lang_input_url':'链接地址:', + 'lang_input_title':'标题:', + 'lang_input_target':'是否在新窗口打开:' + }, + 'validLink':'只支持选中一个链接时生效', + 'httpPrompt':'您输入的超链接中不包含http等协议名称,默认将为您添加http://前缀' + }, + 'searchreplace':{ + 'static':{ + lang_tab_search:"查找", + lang_tab_replace:"替换", + lang_search1:"查找", + lang_search2:"查找", + lang_replace:"替换", + lang_searchReg:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”', + lang_searchReg1:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”', + lang_case_sensitive1:"区分大小写", + lang_case_sensitive2:"区分大小写", + nextFindBtn:{value:"下一个"}, + preFindBtn:{value:"上一个"}, + nextReplaceBtn:{value:"下一个"}, + preReplaceBtn:{value:"上一个"}, + repalceBtn:{value:"替换"}, + repalceAllBtn:{value:"全部替换"} + }, + getEnd:"已经搜索到文章末尾!", + getStart:"已经搜索到文章头部", + countMsg:"总共替换了{#count}处!" + }, + 'spechars':{ + 'static':{}, + tsfh:"特殊字符", + lmsz:"罗马字符", + szfh:"数学字符", + rwfh:"日文字符", + xlzm:"希腊字母", + ewzm:"俄文字符", + pyzm:"拼音字母", + yyyb:"英语音标", + zyzf:"其他" + }, + 'edittable':{ + 'static':{ + 'lang_tableStyle':'表格样式', + 'lang_insertCaption':'添加表格名称行', + 'lang_insertTitle':'添加表格标题行', + 'lang_insertTitleCol':'添加表格标题列', + 'lang_orderbycontent':"使表格内容可排序", + 'lang_tableSize':'自动调整表格尺寸', + 'lang_autoSizeContent':'按表格文字自适应', + 'lang_autoSizePage':'按页面宽度自适应', + 'lang_example':'示例', + 'lang_borderStyle':'表格边框', + 'lang_color':'颜色:' + }, + captionName:'表格名称', + titleName:'标题', + cellsName:'内容', + errorMsg:'有合并单元格,不可排序' + }, + 'edittip':{ + 'static':{ + lang_delRow:'删除整行', + lang_delCol:'删除整列' + } + }, + 'edittd':{ + 'static':{ + lang_tdBkColor:'背景颜色:' + } + }, + 'formula':{ + 'static':{ + } + }, + 'wordimage':{ + 'static':{ + lang_resave:"转存步骤", + uploadBtn:{src:"upload.png",alt:"上传"}, + clipboard:{style:"background: url(copy.png) -153px -1px no-repeat;"}, + lang_step:"1、点击顶部复制按钮,将地址复制到剪贴板;2、点击添加照片按钮,在弹出的对话框中使用Ctrl+V粘贴地址;3、点击打开后选择图片上传流程。" + }, + 'fileType':"图片", + 'flashError':"FLASH初始化失败,请检查FLASH插件是否正确安装!", + 'netError':"网络连接错误,请重试!", + 'copySuccess':"图片地址已经复制!", + 'flashI18n':{} //留空默认中文 + }, +}; diff --git a/public/js/ueditor/plugins/demo/demo.js b/public/js/ueditor/plugins/demo/demo.js new file mode 100644 index 0000000..addd6e0 --- /dev/null +++ b/public/js/ueditor/plugins/demo/demo.js @@ -0,0 +1,3 @@ +(function () { + +})(); diff --git a/public/js/ueditor/themes/default/css/ueditor.css b/public/js/ueditor/themes/default/css/ueditor.css new file mode 100644 index 0000000..b948978 --- /dev/null +++ b/public/js/ueditor/themes/default/css/ueditor.css @@ -0,0 +1,1983 @@ +/*基础UI构建 +*/ + +:root{ + --edui-color-active-bg: rgba(200,200,200,0.3); +} + +@font-face { + font-family: "edui-iconfont"; /* Project id 2897874 */ + src: url('./../font/iconfont.woff2?t=1651572942270') format('woff2'), + url('./../font/iconfont.woff?t=1651572942270') format('woff'), + url('./../font/iconfont.ttf?t=1651572942270') format('truetype'); +} + +.edui-default { + accent-color: #333; +} + +/* common layer */ +.edui-default .edui-box { + border: none; + padding: 0; + margin: 0; + overflow: hidden; + line-height:30px; +} + +.edui-default a.edui-box { + display: block; + text-decoration: none; + color: black; +} + +.edui-default a.edui-box:hover { + text-decoration: none; +} + +.edui-default a.edui-box:active { + text-decoration: none; +} + +.edui-default table.edui-box { + border-collapse: collapse; +} + +.edui-default ul.edui-box { + list-style-type: none; +} + +div.edui-box { + position: relative; + display: -moz-inline-box !important; + display: inline-block !important; + vertical-align: middle; +} + +.edui-default .edui-clearfix { + zoom: 1 +} + +.edui-default .edui-clearfix:after { + content: '\20'; + display: block; + clear: both; +} + + * html div.edui-box { + display: inline !important; +} + +*:first-child+html div.edui-box { + display: inline !important; +} + +/* control layout */ +.edui-default .edui-button-body, .edui-splitbutton-body, .edui-menubutton-body, .edui-combox-body { + position: relative; +} + +.edui-default .edui-popup { + position: absolute; + -webkit-user-select: none; + -moz-user-select: none; +} + +.edui-default .edui-popup .edui-shadow { + position: absolute; + z-index: -1; +} + +.edui-default .edui-popup .edui-bordereraser { + position: absolute; + overflow: hidden; +} + +.edui-default .edui-tablepicker .edui-canvas { + position: relative; +} + +.edui-default .edui-tablepicker .edui-canvas .edui-overlay { + position: absolute; +} + +.edui-default .edui-dialog-modalmask, .edui-dialog-dragmask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.edui-default .edui-toolbar { + position: relative; +} + +/* + * default theme + */ +.edui-default .edui-label { + cursor: pointer; +} + +.edui-default span.edui-clickable { + color: #666; + cursor: pointer; + text-decoration: none; +} +.edui-default span.edui-clickable:hover{ + color: #333; +} + +.edui-default span.edui-unclickable { + color: gray; + cursor: default; +} + +.edui-default span.edui-popup-action-item { + margin-right: 5px; +} +.edui-default span.edui-popup-action-item:last-child { + margin-right: 0; +} + +/* 工具栏 */ +.edui-default .edui-toolbar { + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + padding: 1px; + overflow: hidden; /*全屏下单独一行不占位*/ + zoom: 1; + width:auto; + height:auto; +} + +.edui-default .edui-toolbar .edui-button, +.edui-default .edui-toolbar .edui-splitbutton, +.edui-default .edui-toolbar .edui-menubutton, +.edui-default .edui-toolbar .edui-combox { + margin: 1px; +} +/*UI工具栏、编辑区域、底部*/ +.edui-default .edui-editor { + border: 1px solid #d4d4d4; + background-color: white; + position: relative; + overflow: visible; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.edui-editor div{ + width:auto; + height:auto; +} +.edui-default .edui-editor-toolbarbox { + position: relative; + zoom: 1; + /*-webkit-box-shadow:0 1px 4px rgba(204, 204, 204, 0.6);*/ + /*-moz-box-shadow:0 1px 4px rgba(204, 204, 204, 0.6);*/ + /*box-shadow:0 1px 4px rgba(204, 204, 204, 0.6);*/ + border-top-left-radius:2px; + border-top-right-radius:2px; +} + +.edui-default .edui-editor-toolbarboxouter { + border-bottom: 1px solid #d4d4d4; + background-color: #fafafa; + /*background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);*/ + /*background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));*/ + /*background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);*/ + /*background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);*/ + /*background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);*/ + /*background-repeat: repeat-x;*/ + /*border: 1px solid #d4d4d4;*/ + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; + /*filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);*/ + /**zoom: 1;*/ + /*-webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);*/ + /*-moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);*/ + /*box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);*/ +} + +.edui-default .edui-editor-toolbarboxinner { + padding: 2px; +} + +.edui-default .edui-editor-iframeholder { + position: relative; + /*for fix ie6 toolbarmsg under iframe bug. relative -> static */ + /*_position: static !important;* +} + +.edui-default .edui-editor-iframeholder textarea { + font-family: consolas, "Courier New", "lucida console", monospace; + font-size: 12px; + line-height: 18px; +} + +.edui-default .edui-editor-bottombar { + /*border-top: 1px solid #ccc;*/ + /*height: 20px;*/ + /*width: 40%;*/ + /*float: left;*/ + /*overflow: hidden;*/ +} + +.edui-default .edui-editor-bottomContainer { + overflow: hidden; +} + +.edui-default .edui-editor-bottomContainer table { + width: 100%; + height: 0; + overflow: hidden; + border-spacing: 0; +} + +.edui-default .edui-editor-bottomContainer td { + white-space: nowrap; + border-top: 1px solid #ccc; + line-height: 20px; + font-size: 12px; + font-family: Arial, Helvetica, Tahoma, Verdana, Sans-Serif; +} + +.edui-default .edui-editor-wordcount { + text-align: right; + margin-right: 5px; + color: #aaa; +} +.edui-default .edui-editor-scale { + width: 12px; +} +.edui-default .edui-editor-scale .edui-editor-icon { + float: right; + width: 100%; + height: 12px; + margin-top: 10px; + background: url(../images/scale.png) no-repeat; + cursor: se-resize; +} +.edui-default .edui-editor-breadcrumb { + margin: 2px 0 0 3px; + color: #666; +} + +.edui-default .edui-editor-breadcrumb span { + cursor: pointer; + color: #666; + line-height: 16px; + display: inline-block; +} + +.edui-default .edui-toolbar .edui-for-fullscreen { + float: right; +} + +.edui-default .edui-bubble .edui-popup-content { + font-size: 13px; + box-shadow: 0 0 10px #0000001f; + transition: .25s; + color: #666; + background-color: #FFF; + padding: 10px; + border-radius: 5px; +} + +.edui-default .edui-bubble .edui-shadow { + /*box-shadow: 1px 1px 3px #818181;*/ + /*-webkit-box-shadow: 2px 2px 3px #818181;*/ + /*-moz-box-shadow: 2px 2px 3px #818181;*/ + /*filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius = '2', MakeShadow = 'true', ShadowOpacity = '0.5');*/ +} + +.edui-default .edui-editor-toolbarmsg { + background-color: #FFF6D9; + border-bottom: 1px solid #ccc; + position: absolute; + bottom: -25px; + left: 0; + z-index: 1009; + width: 99.9%; +} + +.edui-default .edui-editor-toolbarmsg-upload { + font-size: 14px; + color: blue; + width: 100px; + height: 16px; + line-height: 16px; + cursor: pointer; + position: absolute; + top: 5px; + left: 350px; +} + +.edui-default .edui-editor-toolbarmsg-label { + font-size: 12px; + line-height: 16px; + padding: 4px; +} + +.edui-default .edui-editor-toolbarmsg-close { + float: right; + width: 20px; + height: 16px; + line-height: 16px; + cursor: pointer; + color: red; +} + +/*可选中菜单按钮*/ +.edui-default .edui-list .edui-bordereraser { + display: none; +} + +.edui-default .edui-listitem { + padding: 1px; + white-space: nowrap; + cursor: pointer; +} + +.edui-default .edui-list .edui-state-hover { + position: relative; + background-color: #EEE; + border: 1px solid #EEE; + padding: 0; + border-radius: 3px; +} + +.edui-default .edui-for-fontfamily .edui-listitem-label { + min-width: 130px; + _width: 120px; + font-size: 12px; + height: 22px; + line-height: 22px; + padding-left: 5px; +} +.edui-default .edui-for-insertcode .edui-listitem-label { + min-width: 120px; + _width: 120px; + font-size: 12px; + height: 22px; + line-height: 22px; + padding-left: 5px; +} +.edui-default .edui-for-underline .edui-listitem-label { + min-width: 120px; + _width: 120px; + padding: 3px 5px; + font-size: 12px; +} + +.edui-default .edui-for-fontsize .edui-listitem-label { + min-width: 120px; + _width: 120px; + padding: 3px 5px; + cursor: pointer; +} + +.edui-default .edui-for-paragraph .edui-listitem-label { + min-width: 200px; + _width: 200px; + padding: 2px 5px; +} + +.edui-default .edui-for-rowspacingtop .edui-listitem-label, +.edui-default .edui-for-rowspacingbottom .edui-listitem-label { + min-width: 53px; + _width: 53px; + padding: 2px 5px; +} + +.edui-default .edui-for-lineheight .edui-listitem-label { + min-width: 53px; + _width: 53px; + padding: 2px 5px; +} + +.edui-default .edui-for-customstyle .edui-listitem-label { + min-width: 200px; + _width: 200px; + width: 200px !important; + padding: 2px 5px; +} + +/* 可选中按钮弹出菜单*/ +.edui-default .edui-menu { + z-index: 3000; +} + +.edui-default .edui-menu .edui-popup-content { + padding: 3px; +} + +.edui-default .edui-menu-body { + _width: 150px; + min-width: 170px; + background: url("../images/sparator_v.png") repeat-y 25px; +} + +.edui-default .edui-menuitem-body { +} + +.edui-default .edui-menuitem { + height: 24px; + line-height: 22px; + cursor: default; + vertical-align: top; +} + +.edui-default .edui-menuitem .edui-icon { + width: 20px !important; + height: 20px !important; + /*background: url(../images/icons.png) 0 -4000px;*/ + /*background: url(../images/icons.gif) 0 -4000px\9;*/ + font-family: 'edui-iconfont'; + font-size: 12px; + line-height: 20px; + text-align: center; +} + +.edui-default .edui-menuitem .edui-menuitem-body .edui-icon:before{ + display:none; +} + +.edui-default .edui-contextmenu .edui-popup-content .edui-menuitem-body .edui-icon:before{ + display: inline-block; +} + +.edui-default .edui-menuitem .edui-label { + font-size: 12px; + line-height: 20px; + height: 20px; + padding-left: 10px; +} + +.edui-default .edui-state-checked .edui-menuitem-body .edui-icon{ + line-height:20px; + text-align:center; +} +.edui-default .edui-state-checked .edui-menuitem-body .edui-icon:before{ + content: "\e7fc"; + font-size: 10px; + display:inline-block; +} + +.edui-default .edui-state-disabled .edui-menuitem-label { + color: gray; +} + + +/*不可选中菜单按钮 */ +.edui-default .edui-toolbar .edui-combox-body .edui-button-body { + width: 60px; + font-size: 12px; + height: 30px; + line-height: 30px; + padding-left: 5px; + white-space: nowrap; + margin: 0 3px 0 0; + cursor: pointer; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + height: 30px; + width: 13px; + cursor: pointer; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-arrow:before{ + content: "\e9f0"; + font-family: "edui-iconfont"; + font-size: 8px; +} + +.edui-default .edui-toolbar .edui-combox .edui-combox-body { + border: 1px solid #CCC; + background-color: white; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} + +.edui-default .edui-toolbar .edui-combox .edui-combox-body > div { + vertical-align: top; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-splitborder { + display: none; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + border-left: 1px solid #CCC; +} + +.edui-default .edui-toolbar .edui-state-hover .edui-combox-body { + /*background-color: #fff5d4;*/ + /*border: 1px solid #dcac6c;*/ +} + +.edui-default .edui-toolbar .edui-state-hover .edui-combox-body .edui-arrow { + /*border-left: 1px solid #dcac6c;*/ +} + +.edui-default .edui-toolbar .edui-state-checked .edui-combox-body { + background-color: #FFE69F; + border: 1px solid #DCAC6C; +} + +.edui-toolbar .edui-state-checked .edui-combox-body .edui-arrow { + border-left: 1px solid #DCAC6C; +} + +.edui-toolbar .edui-state-disabled .edui-combox-body { + background-color: #F0F0EE; + opacity: 0.3; +} + +.edui-toolbar .edui-state-opened .edui-combox-body { + background-color: white; + border: 1px solid gray; +} + +/*普通按钮样式及状态*/ +.edui-default .edui-toolbar .edui-button .edui-icon, +.edui-default .edui-toolbar .edui-menubutton .edui-icon, +.edui-default .edui-toolbar .edui-splitbutton .edui-icon { + height: 30px !important; + width: 30px !important; + /*background-image: url(../images/icons.png);*/ + /*background-image: url(../images/icons.gif) \9;*/ + background-position: center; + background-repeat: no-repeat; + font-family: "edui-iconfont"; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; + text-align: center; + cursor: pointer; +} + +.edui-default .edui-toolbar .edui-button .edui-button-wrap { + padding: 1px; + position: relative; + border-radius: 3px; +} + +.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap { + background-color: #EEE; + border: 1px solid #EEE; + padding: 0; +} + +.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap { + background-color: #F0F0EE; + padding: 0; + border: 1px solid #EEE; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} + +.edui-default .edui-toolbar .edui-button .edui-state-active .edui-button-wrap { + background-color: #ffffff; + padding: 0; + border: 1px solid gray; +} +.edui-default .edui-toolbar .edui-state-disabled .edui-label { + color: #ccc; +} +.edui-default .edui-toolbar .edui-state-disabled .edui-icon { + opacity: 0.3; + filter: alpha(opacity = 30); +} + +.edui-default .edui-toolbar-button-custom{ + display: inline-block !important; + line-height: 30px; + vertical-align: middle; + padding: 0 10px; + border-radius: 3px; + margin: 0 5px; +} + +.edui-default .edui-toolbar-button-custom:hover{ + background: #EEE; +} + +/* toolbar icons */ +.edui-default .edui-for-undo .edui-icon:before { + content: "\e60f"; +} + +.edui-default .edui-for-redo .edui-icon:before { + content: "\e60c"; +} + +.edui-default .edui-for-bold .edui-icon:before { + content: "\e628"; +} + +.edui-default .edui-for-italic .edui-icon:before { + content: "\e62a"; +} + +.edui-default .edui-for-fontborder .edui-icon:before { + content: '\e62d'; +} +.edui-default .edui-for-underline .edui-icon:before { + content: "\e63e"; +} + +.edui-default .edui-for-strikethrough .edui-icon:before { + content: "\e64a"; +} + +.edui-default .edui-for-subscript .edui-icon:before { + content: "\ece9"; +} + +.edui-default .edui-for-superscript .edui-icon:before { + content: "\e83e"; +} + +.edui-default .edui-for-blockquote .edui-icon:before { + content: "\e6d8"; +} + +.edui-default .edui-for-forecolor .edui-icon:before { + content: "\e7f8"; +} + +.edui-default .edui-for-backcolor .edui-icon:before { + content: "\e71a"; +} + +.edui-default .edui-for-inserttable .edui-icon:before { + content: "\e60d"; +} + +.edui-default .edui-for-autotypeset .edui-icon:before { + content: "\e662"; +} + +.edui-default .edui-for-justifyleft .edui-icon:before { + content: "\e7f7"; +} + +.edui-default .edui-for-justifycenter .edui-icon:before { + content: "\e7f6"; +} + +.edui-default .edui-for-justifyright .edui-icon:before { + content: "\e7f5"; +} + +.edui-default .edui-for-justifyjustify .edui-icon:before { + content: "\e87c"; +} + +.edui-default .edui-for-insertorderedlist .edui-icon:before { + content: "\e737"; +} + +.edui-default .edui-for-insertunorderedlist .edui-icon:before { + content: "\e7f4"; +} + +.edui-default .edui-for-lineheight .edui-icon:before { + content: "\e638"; +} + +.edui-default .edui-for-rowspacingbottom .edui-icon:before { + content: '\eb09'; +} + +.edui-default .edui-for-rowspacingtop .edui-icon:before { + content: '\eb0a'; +} + +.edui-default .edui-for-horizontal .edui-icon:before { + content: "\e617"; +} + +.edui-default .edui-for-link .edui-icon:before { + content: "\e648"; +} + +.edui-default .edui-for-code .edui-icon:before { + background-position: -440px -40px; +} + +.edui-default .edui-for-insertimage .edui-icon:before { + content: "\e605"; +} + +.edui-default .edui-for-insertframe .edui-icon:before { + content: "\e6c0"; +} + +.edui-default .edui-for-emoticon .edui-icon:before { + content: "\e60e"; +} + +.edui-default .edui-for-spechars .edui-icon:before { + content: "\e891"; +} + +.edui-default .edui-for-help .edui-icon:before { + content: "\e752"; +} + +.edui-default .edui-for-print .edui-icon:before { + content: "\e67a"; +} + +.edui-default .edui-for-preview .edui-icon:before { + content: "\e644"; +} + +.edui-default .edui-for-selectall .edui-icon:before { + content: '\e62f'; +} + +.edui-default .edui-for-searchreplace .edui-icon:before { + content: "\eb6c"; +} + +.edui-default .edui-for-map .edui-icon:before { + content: "\e649"; +} + +.edui-default .edui-for-insertvideo .edui-icon:before { + content: "\e636"; +} + +.edui-default .edui-for-time .edui-icon:before { + content: "\e680"; +} + +.edui-default .edui-for-date .edui-icon:before { + content: "\e697"; +} + +.edui-default .edui-for-cut .edui-icon:before { + background-position: -680px 0; +} + +.edui-default .edui-for-copy .edui-icon:before { + background-position: -700px 0; +} + +.edui-default .edui-for-paste .edui-icon:before { + background-position: -560px 0; +} + +.edui-default .edui-for-formatmatch .edui-icon:before { + content: "\e637"; +} + +.edui-default .edui-for-pasteplain .edui-icon:before { + content: '\edfb'; +} + +.edui-default .edui-for-directionalityltr .edui-icon:before { + content: "\e623"; +} + +.edui-default .edui-for-directionalityrtl .edui-icon:before { + content: "\e7bc"; +} + +.edui-default .edui-for-source .edui-icon:before { + content: "\e608"; +} + +.edui-default .edui-for-removeformat .edui-icon:before { + content: "\e782"; +} + +.edui-default .edui-for-unlink .edui-icon:before { + content: "\e92b"; +} + +.edui-default .edui-for-touppercase .edui-icon:before { + content: "\e619"; +} + +.edui-default .edui-for-tolowercase .edui-icon:before { + content: "\e61a"; +} + +.edui-default .edui-for-insertrow .edui-icon:before { + content: "\e603"; +} + +.edui-default .edui-for-insertrownext .edui-icon:before { + content: "\e602"; +} + +.edui-default .edui-for-insertcol .edui-icon:before { + content: "\e601"; +} + +.edui-default .edui-for-insertcolnext .edui-icon:before { + content: "\e600"; +} + +.edui-default .edui-for-mergeright .edui-icon:before { + content: "\e615"; +} + +.edui-default .edui-for-mergedown .edui-icon:before { + content: "\e613"; +} + +.edui-default .edui-for-splittorows .edui-icon:before { + content: "\e610"; +} + +.edui-default .edui-for-splittocols .edui-icon:before { + content: "\e611"; +} + +.edui-default .edui-for-insertparagraphbeforetable .edui-icon:before { + content: '\e901'; +} + +.edui-default .edui-for-deleterow .edui-icon:before { + content: "\e609"; +} + +.edui-default .edui-for-deletecol .edui-icon:before { + content: "\e604"; +} + +.edui-default .edui-for-splittocells .edui-icon:before { + content: "\e612"; +} + +.edui-default .edui-for-mergecells .edui-icon:before { + content: "\e606"; +} + +.edui-default .edui-for-deletetable .edui-icon:before { + content: "\e60a"; +} + +.edui-default .edui-for-cleardoc .edui-icon:before { + content: "\e61e"; +} + +.edui-default .edui-for-fullscreen .edui-icon:before { + content: "\e675"; +} + +.edui-default .edui-for-anchor .edui-icon:before { + content: "\e61b"; +} + +.edui-default .edui-for-pagebreak .edui-icon:before { + content: "\e61d"; +} + +.edui-default .edui-for-imagenone .edui-icon:before { + content: "\e61f"; +} + +.edui-default .edui-for-imageleft .edui-icon:before { + content: "\e621"; +} + +.edui-default .edui-for-wordimage .edui-icon:before { + content: "\e618"; +} + +.edui-default .edui-for-imageright .edui-icon:before { + content: "\e622"; +} + +.edui-default .edui-for-imagecenter .edui-icon:before { + content: "\e620"; +} + +.edui-default .edui-for-indent .edui-icon:before { + content: "\e7f3"; +} + +.edui-default .edui-for-outdent .edui-icon:before { + background-position: -540px 0; +} + +.edui-default .edui-for-table .edui-icon:before { + background-position: -580px -20px; +} + +.edui-default .edui-for-edittable .edui-icon:before { + background-position: -420px -40px; +} + +.edui-default .edui-for-template .edui-icon:before { + content: "\e6ad"; +} + +.edui-default .edui-for-delete .edui-icon:before { + background-position: -360px -40px; +} + +.edui-default .edui-for-attachment .edui-icon:before { + content: "\e704"; +} + +.edui-default .edui-for-edittd .edui-icon:before { + background-position: -700px -40px; +} + +.edui-default .edui-for-scrawl .edui-icon:before { + content: "\e70b"; +} + +.edui-default .edui-for-background .edui-icon:before { + content: "\e624"; +} + +.edui-default .edui-for-formula .edui-icon:before { + content: "\e616"; +} + +.edui-default .edui-for-aligntd .edui-icon:before { + background-position: -236px -76px; +} + +.edui-default .edui-for-insertparagraphtrue .edui-icon:before { + background-position: -625px -76px; +} + +.edui-default .edui-for-insertparagraph .edui-icon:before { + background-position: -602px -76px; +} + +.edui-default .edui-for-insertcaption .edui-icon:before { + background-position: -336px -76px; +} + +.edui-default .edui-for-deletecaption .edui-icon:before { + background-position: -362px -76px; +} + +.edui-default .edui-for-inserttitle .edui-icon:before { + background-position: -286px -76px; +} + +.edui-default .edui-for-deletetitle .edui-icon:before { + background-position: -311px -76px; +} + +.edui-default .edui-for-aligntable .edui-icon:before { + background-position: -440px 0; +} + +.edui-default .edui-for-tablealignment-left .edui-icon:before { + background-position: -460px 0; +} + +.edui-default .edui-for-tablealignment-center .edui-icon:before { + background-position: -420px 0; +} + +.edui-default .edui-for-tablealignment-right .edui-icon:before { + background-position: -480px 0; +} + +.edui-default .edui-for-inserttitlecol .edui-icon:before { + background-position: -673px -76px; +} + +.edui-default .edui-for-deletetitlecol .edui-icon:before { + background-position: -698px -76px; +} + +.edui-default .edui-for-simpleupload .edui-icon:before { + content: "\edfc"; +} + +/*splitbutton*/ +.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow, +.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow { + height: 30px; + width: 13px; + cursor: pointer; +} +.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow:before, +.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow:before { + content: "\e9f0"; + font-family: "edui-iconfont"; + font-size: 8px; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body { + padding: 1px; + border-radius: 3px; +} + +.edui-default .edui-toolbar .edui-splitborder { + width: 1px; + height: 30px; +} + +.edui-default .edui-toolbar .edui-state-hover .edui-splitborder { + width: 1px; + border-left: 0px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-state-active .edui-splitborder { + width: 0; + border-left: 1px solid #EEE; +} + +.edui-default .edui-toolbar .edui-state-opened .edui-splitborder { + width: 1px; + border: 0; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body { + background-color: #EEE; + border: 1px solid #EEE; + padding: 0; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-checked .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-checked .edui-menubutton-body { + background-color: #ffffff; + border: 1px solid #EEE; + padding: 0; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-active .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-active .edui-menubutton-body { + background-color: #ffffff; + border: 1px solid #EEE; + padding: 0; +} + +.edui-default .edui-state-disabled .edui-arrow { + opacity: 0.3; + _filter: alpha(opacity = 30); +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body { + background-color: white; + border: 1px solid #EEE; + padding: 0; +} + +.edui-default .edui-for-insertorderedlist .edui-bordereraser, +.edui-default .edui-for-lineheight .edui-bordereraser, +.edui-default .edui-for-rowspacingtop .edui-bordereraser, +.edui-default .edui-for-rowspacingbottom .edui-bordereraser, +.edui-default .edui-for-insertunorderedlist .edui-bordereraser { + background-color: white; +} + +/* 解决嵌套导致的图标问题 */ +.edui-default .edui-for-insertorderedlist .edui-popup-body .edui-icon, +.edui-default .edui-for-lineheight .edui-popup-body .edui-icon, +.edui-default .edui-for-rowspacingtop .edui-popup-body .edui-icon, +.edui-default .edui-for-rowspacingbottom .edui-popup-body .edui-icon, +.edui-default .edui-for-insertunorderedlist .edui-popup-body .edui-icon { + /*background-position: 0 -40px;*/ + background-image: none ; +} + +/* 弹出菜单 */ +.edui-default .edui-popup { + z-index: 3000; + background-color: #ffffff; + width:auto; + height:auto; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + margin-top:1px; +} + +.edui-default .edui-popup .edui-shadow { + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.edui-default .edui-popup-content { + font-size: 13px; + box-shadow: 0 0 10px rgba(0,0,0,0.2); + transition: .25s; + color: #333; + background-color: #FFF; + padding: 10px; + border-radius: 5px; +} + +.edui-default .edui-popup .edui-bordereraser { + background-color: transparent; + height: 3px; +} + +.edui-default .edui-menu .edui-bordereraser { + height: 3px; +} + +.edui-default .edui-anchor-topleft .edui-bordereraser { + left: 1px; + top: -2px; +} + +.edui-default .edui-anchor-topright .edui-bordereraser { + right: 1px; + top: -2px; +} + +.edui-default .edui-anchor-bottomleft .edui-bordereraser { + left: 0; + bottom: -6px; + height: 7px; + border-left: 1px solid gray; + border-right: 1px solid gray; +} + +.edui-default .edui-anchor-bottomright .edui-bordereraser { + right: 0; + bottom: -6px; + height: 7px; + border-left: 1px solid gray; + border-right: 1px solid gray; +} + +.edui-popup div{ + width:auto; + height:auto; +} + +.edui-default .edui-editor-messageholder { + display: block; + width: 150px; + height: auto; + border: 0; + margin: 0; + padding: 0; + position: absolute; + top: 28px; + right: 3px; +} + +.edui-default .edui-message{ + min-height: 10px; + text-shadow: 0 1px 0 rgba(255,255,255,0.5); + padding: 0; + margin-bottom: 3px; + position: relative; +} +.edui-default .edui-message-body{ + border-radius: 3px; + padding: 8px 15px 8px 8px; + color: #c09853; + background-color: #fcf8e3; + border: 1px solid #fbeed5; +} +.edui-default .edui-message-type-info{ + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1 +} +.edui-default .edui-message-type-success{ + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6 +} +.edui-default .edui-message-type-danger, +.edui-default .edui-message-type-error{ + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7 +} +.edui-default .edui-message .edui-message-closer { + display: block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 0; + right: 0; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + float: right; + font-size: 20px; + font-weight: bold; + color: #999; + text-shadow: 0 1px 0 #fff; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; +} +.edui-default .edui-message .edui-message-content { + font-size: 10pt; + word-wrap: break-word; + word-break: normal; +} +/* 弹出对话框按钮和对话框大小 */ +.edui-default .edui-dialog { + z-index: 2000; + position: absolute; + +} + +.edui-dialog div{ + width:auto; +} + +.edui-default .edui-dialog-wrap { + margin-right: 6px; + margin-bottom: 6px; +} + +.edui-default .edui-dialog-fullscreen-flag { + margin-right: 0; + margin-bottom: 0; +} + +.edui-default .edui-dialog-body { + position: relative; + /*padding:2px 0 0 2px;*/ + /*_zoom: 1;*/ +} + +.edui-default .edui-dialog-fullscreen-flag .edui-dialog-body { + padding: 0; +} + +.edui-default .edui-dialog-shadow { + position: absolute; + z-index: -1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: #ffffff; + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 3px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.edui-default .edui-dialog-foot { + background-color: white; + border-radius: 0 0 5px 5px; + height: 40px; +} + +.edui-default .edui-dialog-titlebar { + height: 30px; + background: #FFF; + position: relative; + cursor: move; + border-radius:5px 5px 0 0; +} +.edui-default .edui-dialog-caption { + font-weight: bold; + font-size: 14px; + line-height: 30px; + padding-left: 5px; +} + +.edui-default .edui-dialog-draghandle { + height: 30px; +} + +.edui-default .edui-dialog-closebutton { + position: absolute !important; + right: 5px; + top: 3px; +} + +.edui-default .edui-dialog-closebutton .edui-button-body { + height: 20px; + width: 20px; + cursor: pointer; +} + +.edui-default .edui-dialog-closebutton .edui-button-body .edui-icon{ + width: 20px; + height: 20px; + font-family: 'edui-iconfont'; + line-height: 20px; + font-size: 20px; + text-align: center; + color:#999; + vertical-align: top; +} +.edui-default .edui-dialog-closebutton .edui-button-body .edui-icon:before{ + content: "\e6a7"; +} + +.edui-default .edui-dialog-closebutton .edui-state-hover .edui-button-body .edui-icon{ + color:#333; +} + +.edui-default .edui-dialog-buttons { + position: absolute; + right: 0; +} + +.edui-default .edui-dialog-buttons .edui-button { + margin-right: 10px; +} + +.edui-default .edui-dialog-buttons .edui-button .edui-button-body .edui-icon{ + display: none !important; +} + +.edui-default .edui-dialog-buttons .edui-button .edui-button-body { + height: 30px; + font-size: 12px; + line-height: 28px; + cursor: pointer; + border-radius: 4px; + text-align: center; + background-color: #F8F8F8; + border: 1px solid #EEE; + padding:0 15px; +} + +.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body { + +} + +.edui-default .edui-dialog iframe { + border: 0; + padding: 0; + margin: 0; + vertical-align: top; +} + +.edui-default .edui-dialog-modalmask { + opacity: 0.3; + filter: alpha(opacity = 30); + background-color: #ccc; + position: absolute; + /*z-index: 1999;*/ +} + +.edui-default .edui-dialog-dragmask { + position: absolute; + /*z-index: 2001;*/ + background-color: transparent; + cursor: move; +} + +.edui-default .edui-dialog-content { + position: relative; +} + +.edui-default .dialogcontmask { + cursor: move; + visibility: hidden; + display: block; + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + filter: alpha(opacity = 0); +} + +/*link-dialog*/ +.edui-default .edui-for-link .edui-dialog-content { + width: 420px; + height: 200px; + overflow: hidden; +} +/*background-dialog*/ +.edui-default .edui-for-background .edui-dialog-content { + width: 440px; + height: 280px; + overflow: hidden; +} + +/*template-dialog*/ +.edui-default .edui-for-template .edui-dialog-content { + width: 630px; + height: 390px; + overflow: hidden; +} + +/*scrawl-dialog*/ +.edui-default .edui-for-scrawl .edui-dialog-content { + width: 515px; + *width: 506px; + height: 360px; +} + +/*spechars-dialog*/ +.edui-default .edui-for-spechars .edui-dialog-content { + width: 620px; + height: 500px; + *width: 630px; + *height: 570px; +} + +/*image-dialog*/ +.edui-default .edui-for-insertimage .edui-dialog-content { + width: 650px; + height: 400px; + overflow: hidden; +} + +/*image-insertframe*/ +.edui-default .edui-for-insertframe .edui-dialog-content { + width: 350px; + height: 230px; + overflow: hidden; +} + +/*wordImage-dialog*/ +.edui-default .edui-for-wordimage .edui-dialog-content { + width: 620px; + height: 380px; + overflow: hidden; +} + +/*formula-dialog*/ +.edui-default .edui-for-formula .edui-dialog-content { + width: 620px; + height: 300px; + overflow: hidden; +} + +/*attachment-dialog*/ +.edui-default .edui-for-attachment .edui-dialog-content { + width: 650px; + height: 400px; + overflow: hidden; +} + + +/*map-dialog*/ +.edui-default .edui-for-map .edui-dialog-content { + width: 550px; + height: 400px; +} + +/*video-dialog*/ +.edui-default .edui-for-insertvideo .edui-dialog-content { + width: 590px; + height: 420px; +} + +/*anchor-dialog*/ +.edui-default .edui-for-anchor .edui-dialog-content { + width: 320px; + height: 60px; + overflow: hidden; +} + +/*searchreplace-dialog*/ +.edui-default .edui-for-searchreplace .edui-dialog-content { + width: 400px; + height: 220px; +} + +/*help-dialog*/ +.edui-default .edui-for-help .edui-dialog-content { + width: 400px; + height: 420px; +} + +/*edittable-dialog*/ +.edui-default .edui-for-edittable .edui-dialog-content { + width: 540px; + _width:590px; + height: 335px; +} + +/*edittip-dialog*/ +.edui-default .edui-for-edittip .edui-dialog-content { + width: 225px; + height: 60px; +} + +/*edittd-dialog*/ +.edui-default .edui-for-edittd .edui-dialog-content { + width: 240px; + height: 50px; +} + +/*段落弹出菜单*/ +.edui-default .edui-for-paragraph .edui-listitem-label { + font-family: Tahoma, Verdana, Arial, Helvetica; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-p { + font-size: 22px; + line-height: 27px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h1 { + font-weight: bolder; + font-size: 32px; + line-height: 36px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h2 { + font-weight: bolder; + font-size: 27px; + line-height: 29px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h3 { + font-weight: bolder; + font-size: 19px; + line-height: 23px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h4 { + font-weight: bolder; + font-size: 16px; + line-height: 19px +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h5 { + font-weight: bolder; + font-size: 13px; + line-height: 16px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h6 { + font-weight: bolder; + font-size: 12px; + line-height: 14px; +} +/* 表格弹出菜单 */ +.edui-default .edui-for-inserttable .edui-splitborder { + display: none +} +.edui-default .edui-for-inserttable .edui-splitbutton-body .edui-arrow { + width: 0 +} +.edui-default .edui-toolbar .edui-for-inserttable .edui-state-active .edui-splitborder{ + border-left: 1px solid transparent; +} +.edui-default .edui-tablepicker .edui-infoarea { + height: 14px; + line-height: 14px; + font-size: 12px; + width: 220px; + margin-bottom: 3px; + clear: both; +} + +.edui-default .edui-tablepicker .edui-infoarea .edui-label { + float: left; +} + +.edui-default .edui-dialog-buttons .edui-label { + line-height: 30px; +} + +.edui-default .edui-tablepicker .edui-infoarea .edui-clickable { + float: right; +} + +.edui-default .edui-tablepicker .edui-pickarea { + background: url("../images/unhighlighted.gif") repeat; + height: 220px; + width: 220px; +} + +.edui-default .edui-tablepicker .edui-pickarea .edui-overlay { + background: url("../images/highlighted.gif") repeat; +} + +/* 颜色弹出菜单 */ +.edui-default .edui-colorpicker-topbar { + height: 27px; + width: 200px; + /*border-bottom: 1px gray dashed;*/ +} + +.edui-default .edui-colorpicker-preview { + height: 20px; + border: 1px inset black; + margin-left: 1px; + width: 128px; + float: left; + border-radius:3px; +} + +.edui-default .edui-colorpicker-nocolor { + float: right; + margin-right: 1px; + font-size: 12px; + line-height: 20px; + height: 20px; + border: 1px solid #333; + padding: 0 5px; + cursor: pointer; + border-radius: 3px; +} + +.edui-default .edui-colorpicker-tablefirstrow { + height: 30px; +} + +.edui-default .edui-colorpicker-colorcell { + width: 14px; + height: 14px; + display: block; + margin: 0; + cursor: pointer; + border-radius:2px; +} + +.edui-default .edui-colorpicker-colorcell:hover { + width: 14px; + height: 14px; + margin: 0; +} +.edui-default .edui-colorpicker-advbtn{ + display: block; + text-align: center; + cursor: pointer; + height:20px; +} +.arrow_down{ + background: white url('../images/arrow_down.png') no-repeat center; +} +.arrow_up{ + background: white url('../images/arrow_up.png') no-repeat center; +} +/*高级的样式*/ +.edui-colorpicker-adv{ + position: relative; + overflow: hidden; + height: 180px; + display: none; +} +.edui-colorpicker-plant, .edui-colorpicker-hue { + border: solid 1px #666; +} +.edui-colorpicker-pad { + width: 150px; + height: 150px; + left: 14px; + top: 13px; + position: absolute; + background: red; + overflow: hidden; + cursor: crosshair; +} +.edui-colorpicker-cover{ + position: absolute; + top: 0; + left: 0; + width: 150px; + height: 150px; + background: url("../images/tangram-colorpicker.png") -160px -200px; +} +.edui-colorpicker-padDot{ + position: absolute; + top: 0; + left: 0; + width: 11px; + height: 11px; + overflow: hidden; + background: url(../images/tangram-colorpicker.png) 0px -200px repeat-x; + z-index: 1000; + +} +.edui-colorpicker-sliderMain { + position: absolute; + left: 171px; + top: 13px; + width: 19px; + height: 152px; + background: url(../images/tangram-colorpicker.png) -179px -12px no-repeat; + +} +.edui-colorpicker-slider { + width: 100%; + height: 100%; + cursor: pointer; +} +.edui-colorpicker-thumb{ + position: absolute; + top: 0; + cursor: pointer; + height: 3px; + left: -1px; + right: -1px; + border: 1px solid black; + background: white; + opacity: .8; +} + +/*自动排版弹出菜单*/ +.edui-default .edui-autotypesetpicker .edui-autotypesetpicker-body { + font-size: 12px; + margin-bottom: 3px; + clear: both; +} + +.edui-default .edui-autotypesetpicker-body table { + border-collapse: separate; + border-spacing: 2px; +} + +.edui-default .edui-autotypesetpicker-body td { + font-size: 12px; + word-wrap:break-word; +} + +.edui-default .edui-autotypesetpicker-body td input { + margin: 3px 3px 3px 4px; + *margin: 1px 0 0 0; +} +/*自动排版弹出菜单*/ +.edui-default .edui-cellalignpicker .edui-cellalignpicker-body { + width: 70px; + font-size: 12px; + cursor: default; +} + +.edui-default .edui-cellalignpicker-body table { + border-collapse: separate; + border-spacing: 0; +} +.edui-default .edui-cellalignpicker-body td{ + padding: 1px; +} +.edui-default .edui-cellalignpicker-body .edui-icon{ + height: 20px; + width: 20px; + padding: 1px; + background-image: url(../images/table-cell-align.png); +} + +.edui-default .edui-cellalignpicker-body .edui-left{ + background-position: 0 0; +} + +.edui-default .edui-cellalignpicker-body .edui-center{ + background-position: -25px 0; +} +.edui-default .edui-cellalignpicker-body .edui-right{ + background-position: -51px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-left{ + background-position: -73px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-center{ + background-position: -98px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-right{ + background-position: -124px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-left { + background-position: -146px 0; + background-color: #f1f4f5; +} + +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-center { + background-position: -245px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-right { + background-position: -271px 0; +} +/*分隔线*/ +.edui-default .edui-toolbar .edui-separator { + width: 1px; + height: 20px; + margin: 5px 5px; + background: #CCC; +} + +/*颜色按钮 */ +.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump { + position: absolute; + overflow: hidden; + bottom: 1px; + left: 5px; + width: 20px; + height: 4px; +} + +/*表情按钮及弹出菜单*/ +/*去除了表情的下拉箭头*/ +.edui-default .edui-for-emotion .edui-icon:before { + content: "\e60e"; +} +.edui-default .edui-for-emotion .edui-popup-content iframe +{ + width: 514px; + height: 380px; + overflow: hidden; +} +.edui-default .edui-for-emotion .edui-popup-content +{ + position: relative; + z-index: 555 +} + +.edui-default .edui-for-emotion .edui-splitborder { + display: none +} + +.edui-default .edui-for-emotion .edui-splitbutton-body .edui-arrow +{ + width: 0 +} +.edui-default .edui-toolbar .edui-for-emotion .edui-state-active .edui-splitborder +{ + border-left: 1px solid transparent; +} + +/*contextmenu*/ +.edui-default .edui-hassubmenu .edui-arrow { + height: 20px; + width: 20px; + float: right; + /*background: url("../images/icons-all.gif") no-repeat 10px -233px;*/ + font-family: 'edui-iconfont'; + font-size:12px; + line-height:20px; + text-align:center; +} + +.edui-default .edui-hassubmenu .edui-arrow:before{ + content: "\e665"; +} + +.edui-default .edui-menu-body .edui-menuitem { + padding: 1px; +} + +.edui-default .edui-menuseparator { + margin: 2px 0; + height: 1px; + overflow: hidden; +} + +.edui-default .edui-menuseparator-inner { + border-bottom: 1px solid #e2e3e3; + margin-left: 29px; + margin-right: 1px; +} + +.edui-default .edui-menu-body .edui-state-hover { + padding: 0 !important; + background-color: var(--edui-color-active-bg); + border-radius:3px; + border:1px solid var(--edui-color-active-bg); +} + +/*弹出菜单*/ +.edui-default .edui-shortcutmenu { + padding: 2px; + width: 300px; + height: auto; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 5px; +} + +/*粘贴弹出菜单*/ +.edui-default .edui-wordpastepop .edui-popup-content{ + border: none; + padding: 0; + width: 54px; + height: 21px; +} +.edui-default .edui-pasteicon { + width: 100%; + height: 100%; + background-image: url('../images/wordpaste.png'); + background-position: 0 0; +} + +.edui-default .edui-pasteicon.edui-state-opened { + background-position: 0 -34px; +} + +.edui-default .edui-pastecontainer { + position: relative; + visibility: hidden; + width: 97px; + background: #fff; + border: 1px solid #ccc; +} + +.edui-default .edui-pastecontainer .edui-title { + font-weight: bold; + background: #F8F8FF; + height: 25px; + line-height: 25px; + font-size: 12px; + padding-left: 5px; +} + +.edui-default .edui-pastecontainer .edui-button { + overflow: hidden; + margin: 3px 0; +} + +.edui-default .edui-pastecontainer .edui-button .edui-richtxticon, +.edui-default .edui-pastecontainer .edui-button .edui-tagicon, +.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{ + float: left; + cursor: pointer; + width: 29px; + height: 29px; + margin-left: 5px; + background-image: url('../images/wordpaste.png'); + background-repeat: no-repeat; +} +.edui-default .edui-pastecontainer .edui-button .edui-richtxticon { + margin-left: 0; + background-position: -109px 0; +} +.edui-default .edui-pastecontainer .edui-button .edui-tagicon { + background-position: -148px 1px; +} + +.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon { + background-position: -72px 0; +} + +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-richtxticon { + background-position: -109px -34px; +} +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-tagicon{ + background-position: -148px -34px; +} +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-plaintxticon{ + background-position: -72px -34px; +} \ No newline at end of file diff --git a/public/js/ueditor/themes/default/dialogbase.css b/public/js/ueditor/themes/default/dialogbase.css new file mode 100644 index 0000000..6b78254 --- /dev/null +++ b/public/js/ueditor/themes/default/dialogbase.css @@ -0,0 +1,101 @@ +/*弹出对话框页面样式组件 +*/ + +/*reset +*/ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + outline: 0; + font-size: 100%; +} + +body { + line-height: 1; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + +ins { + text-decoration: none; +} + +del { + text-decoration: line-through; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +/*module +*/ +body { + background-color: #fff; + font: 12px/1.5 sans-serif, "宋体", "Arial Narrow", HELVETICA; + color: #646464; +} + +/*tab*/ +.tabhead { + position: relative; + z-index: 10; +} + +.tabhead span { + display: inline-block; + padding: 0 5px; + height: 30px; + border: 1px solid #ccc; + background: #EEE; + text-align: center; + line-height: 30px; + cursor: pointer; + *margin-right: 5px; + border-radius: 3px 3px 0 0; +} + +.tabhead span.focus { + height: 31px; + border-bottom: none; + background: #fff; +} + +.tabbody { + position: relative; + top: -1px; + margin: 0 auto; + border: 1px solid #ccc; +} + +/*button*/ +a.button { + display: block; + text-align: center; + line-height: 24px; + text-decoration: none; + height: 24px; + width: 95px; + border: 0; + color: #838383; + background: url(../../themes/default/images/icons-all.gif) no-repeat; +} + +a.button:hover { + background-position: 0 -30px; +} diff --git a/public/js/ueditor/themes/default/font/iconfont.ttf b/public/js/ueditor/themes/default/font/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..58831d238b6f26c324082ebf42542465d8dca859 GIT binary patch literal 25388 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 eArE1>ft6ajW8;( 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 esM2ZEJ4BL|6n8{Sei@Jt0L_f7?5pN7PDVh+V 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 Oa|~VrhDkVV0RR9E*0<{b literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/anchor.gif b/public/js/ueditor/themes/default/images/anchor.gif new file mode 100644 index 0000000000000000000000000000000000000000..5aa797b2240a432d9f3f1d166ed5542eaf684937 GIT binary patch literal 184 zcmZ?wbhEHb6kygJ|Uu&?oD;%Ae!z@09(NL_hv#6Slx0y!YR{?r|LJZgAju=f-$sQVWNL{+Tsz18#+~Ke%+zTWns()WcPwy8dQcr!JH# U&i)o#ra{o6vp4_np&fqGg-1;GP^BJO_p_?A6nLIYwB=H*Qp>A8nZf?fNnCY(uvZL zYMq5r=M|ASom0_?Sn7~VE3B<^mcq1BrHIr9EGW>Ifm~m?y<>mJPIAsKPjWszPx7z| z^K(;^4e+i)B*?S*guTS?B+Vho2 z`WG1Kuclp>qR!nSa-c>gf6E3&1HPK$>6qGXeOCp%qBL8aEd$S;?m%#@0uH|roliGe zy#i~1E?Ad#U1t}6uwt+qqgIm=xY8r0F*7 zl{ZWo1&^Wcj_roRaNKw0cq|%;M#7eRWh<*7;!rva!w3Wdg+kTSXqlOr3+!(Y+UH1c!M>bUYK1<=lG*1pq%m&P~1QC>Rx($IJPWjnN zpR&G{Rq^JvgludxnIl{D8LgfGe-+MHCcM_UcHp8Td8VLE6B~29!k7r659<2nKp^Fl zj!GszzF7d5gy6DP@ZR1H93XOu{-OI@l6&5C>BJ*|uw%klayELyqgg z(1r2VJa0I-7Tj#n#oR8}RJ&g+`2!5Q8%of3mwZ1ylT{6m^cuZ3bEx<+w~3H6c=s2I zHqmMPM&{IH<=Icl=QPsL@wWkIaQ9;d5!{KiwDTAp6ANhcA|rcd_*y;vPo-D@#WUD8 zxj?H-u8_-Qb;^#oX{dywAOO4sP%-&Maru89peVTaNW45UP{=b_+ByMxH6aCa_?|l> lFG7akQpaiL%L!NFwXt25X8cm0x*UH6P&xU?o7rDC{|kH`9-#mL literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/arrow_down.png b/public/js/ueditor/themes/default/images/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..e9257e83b00375259f2f724c7cbac03d0df5ceb2 GIT binary patch literal 1610 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW`)d{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGf*%y)H5_T zF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d20o>TUVrVb{15Cdnu|VHY&j92lm_lD){7Q3k;i`*Ef>IIg#cFVINM%8) zeo$(0erZuMFyhjbK~@!5ITxiSmgEG&eP`1g19yq1OegIswNQ-xSi<4Z1u2!m4XhFqBbF8wG<_`!+|HhuxMFc&SLMF{7Z@fVvH$#8 ze|mSH#FSX^%>h00S4ci?>YufC3b$>be$N&e)g9;i=5%xkTh1s~5&sk~hpZURp;Qa?iE^5gq z0+?2AoO*aq`+eIDGp&3MoLz0RPBnf@mZEj!Y0cZVUxN2^iyZs(a?eI%oljxTtdUFo z4zJtT6vh6mc<(8@dEybWbJNr%Pc%*VvF}gIi|llP_mw#+z3j zapfmJXkU5iJgMMaq6;%eEr0F`fv2A$yk@Z1O`YMLW4b!$#En-43)(gNwO&tIE1$YR z{=f_5V<-h{r;w^f@VvOcJ`XH-Laf=HZ$7pE8y$b zea|FcbA8_y&V4&;c0EYAF6z7Uq;gWX%!S@_GP~BiYk9@S9hp{rSmuZc`!rX#z78?b z>^=VrHI}o6**U$5wKDVU&pfZEJI56Y zoT$4mvucV;+x1h4)@uJZd{#I=XN5ldnP;uVH#)aA-sLj_f6xsvx)X=xc_v2 z@-mt-`NgS3hTn0)cfZMswpSgNlI1YlD$F(+3=d#Wzp$P!&XKAJY literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/arrow_up.png b/public/js/ueditor/themes/default/images/arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..74277af1e6a8ef91f8fe664efde11377a5292dbc GIT binary patch literal 1649 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=9J8kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGf*%y)H5_T zF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d2fv+#z;JjjJKmmhHzap_f-%!s$KQ|ZTFR<$3lAu(CGq9>I4yi0i)elN7 z&Mz%W2F6F4GE6ft?C@IzQV4X7m48ttFj5k8T=J7kb5rw5JY8&+fHHb1nJHGr&Zcf= zZpLmdj^@s;MuvtK&X$(07A9_{2F`9K1|}9TGqCA(Gj?@#HgIt=cQbG_G;}qxFf=l- zbaON}GPN)@wKR5t>GjMjE=kNwPKDW<3A7ig*AcH?E9aur#FG4?ko^1{SPBTp$S=t+ z&d4uNa1J(A2+zz*$uBPkMGnNTE~!PCWvMA{Mftf3;Lx?o#9}*PUqke!kP~A1K*#8V zk_J*zfe8WAABYK0_&^Rk>!juZ^GgvhW0Y{Wv@$R-E%tPA45_#^WvZ{gh@(K;>Z+== zX-At4KPH3-+4r@v2}X8*AN$Mh@OiHNYs3&%QbHW!0`#zh1`9tBzYV@8G#Wg&l2-#)h$FUdfE_lvm%b2=kt^Ebzn( zr(4oF%+7xg2Te=y(fqh}+AK?Nt8-e6Vo~YWrY1FhH}uX($oOv&HCTs__< zzEdCca~LbgR5%PtJYh=3FjGRGp=cUaJC^c^yU)Zr^k2P zlm5xRG;W0~lefT@)ERLuic?K4bNlUNS|KodrrwHIUNWEc`M1i>U^rI0VS1uR{)PLi zihmWG2&`Lpzrjh}nD@mILlb2Uhtt|CHp`N!r`KF5c$VaRcJZF}LJe(& zwV}p~KZGbP@?1Z4Mc+d4`MOQrYgSe4X#ZDh+%|1dL)h$@nv3?ZH`~Z?rV3X7(F@K> zb+Z2u>#VllaHj5&E!~}`b21Ja)w^fT&+2mzy!OR_pE1^}_1<=w+EA5Nm$Hp%M~^AK zU)Z92;jd=Sl<1n3x7z+*ci#Wo(IT=)J{K*+Q?C!N1MD&Sbd le02W-shBsPKJ+s%GgK)^wA}p_d>&K@c)I$ztaD0e0svXmV!r?Y literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/button-bg.gif b/public/js/ueditor/themes/default/images/button-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec7fa2eabf0705226fe0c488d65198508bf547e9 GIT binary patch literal 1114 zcmV-g1f}~&Nk%w1VKM+R0OkMy00030|Nr{?`~Uyg|Nq+c_4NPz*Z=(3`t{5D_RRV9 z%lr1t{P@xN^27S{$occg`t-~D_Rjb6(E0Jf`t!&5^V9k7zxnUL`S8H{@x=P_$@uNP z`0c*=@5lM`q&aU|6w)f(-(ZHJcKyq);w!1v|A_vOL(=ELpXz3||{+03)&lq#;^N`q z;o#ul-{0Tf-rm~U+Sk|D(9qET|Nj6000000000000000000000A^8LW004OaEC2ui z05SkF000O7fO%_oc!h?Ch>41ei+5{zWp`--l$Dm3n3+> zsF_HyqQ#3CGiszrN8-khAVaF@xTd7ZlPFWFT*=ZTojPn{%A85Frp=o;W!90Hv!~CW zBj>nb)267=qezn~UCPvr&^vA(N|o9Msu?(T?r7c0wX4^!V8PmfVC>oFmqw6)fdnp04j^zqp|u`Sa-0r=OsK#f}aaILMz*zrOwZ z`0-!pup>tY5FP|5;D7`cXyAbdg3v(@I*72r2M|Um;e-@cXrYB0h@gWGA&@Y_haiS1 z;)o=cSRx4_Z1{o+CA8?`i!jD0v_{FvJiptdPRD zl1w(~KIEzAo_zM{=bwE7aRU-l5Rn8GGXU|#qKr1`=%bKE+9(h+P>}@@TWDd06i{^P z>8GHED(a}AN@0Z-TXdns6;*su#jCK!D(kGY)*7p;S18d%0YNN*1r}fgE9|hu7HjOW g!~VKN5CsU(L=jFzEA6z@R%`9G*G3VB0D%AiJBq`ncK`qY literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/cancelbutton.gif b/public/js/ueditor/themes/default/images/cancelbutton.gif new file mode 100644 index 0000000000000000000000000000000000000000..df4bc2c06d485df4403d689c98ee745a4cde8e97 GIT binary patch literal 1227 zcmV;+1T_0cNk%w1VH^Ms0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui02}}g000R80N?d8lSPY`ECmaSA@vT~rz=b%E}1xSN+M*v*63=s zj2W|z%bEpKgUQntPOMg`Ql)Ygt58`0p~(cQlP6A|I&tD;)03AgfeIBOG>DKjY^XJ4==@p5kGnYDTB5w7&K^jxZs(hL{cL~lH}dPcdt$q zD_5TQ&|`gZmzMqH0#&%8nU(?9AzvZOs&E($thW17wAnF=2dS zixx%10*e+@Tw%iubG*?-5ob)X#T8L>VFrIHgwcf)I#^*u6G{}}gcVlU-~$+ANa4h3 zU5Eh&8T;8#LljaNAp~tsNC8C^Rb1i1Av~P%1{`$QfyY)`G0{dGGhE??7h#NH1{!Ik pfd&v=WTQt8w{C>_-)j6kG zmZ@`2opZWct<*WE%jHsMvsp;f^!~Ol**?^DO`hifs44&=f~umb34Y07v! zehXl>0V0C67HciWn4KjeEEWr@sxtk4|8?WtNwEFcm{Yc@Vy$H`7@(^3dc70h4xmY} zPa;B+{C!@Q<^CQRW6lMfrwb>zFkriOfWsf}arIZ0*)jKSzW9HD4>|2i1+FOg^6oL0 zuMGL+PHkt#*vvh~NQ@CxMMM#xZ40h-e^cjfe*)md?7iRY1HqRBjSwR0J%@RRXP>@> zkKcbjGFwIi5M!jSYpSZEsw%t>6uuy+C;C8K=M*aB-KzlIq|@mbYi)bIUbpA-`I#n_ zWy#v)_!v+R^=b{kGLNXLO{}#BFq6sTxvIY0l+`3NPhQ=Ac;nXf2W4IstBgcUD^b-d zJ3eY@@JRF1!NCEoR?7f{5J-}wDJcQkB4Re+sH#y!e2lU916r{A&pdHrm;e9(07*qo IM6N<$g2apNRsaA1 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/cursor_h.gif b/public/js/ueditor/themes/default/images/cursor_h.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7c3e7e9eb5755d57ec03c34097c258244abe61a GIT binary patch literal 253 zcmVG|6H_V+Po~-c6$N^_IEGZ*Iy1qOk3oThS@Yxn_+t|0*P6|%n+#L~Iyf|E zrg84hNMwpx9_!-6|BEHhl_}FHLcZHi@xo+A>tN1bvzr~8Z#Ex)a8Qdkef% WRW|>PuXh3sXYh3Ob6Mw<&;$VH);Gui literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/cursor_v.gif b/public/js/ueditor/themes/default/images/cursor_v.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb508db552b6ac3f670f9ce1fcb1e55669db0dd6 GIT binary patch literal 370 zcmZ?wbhEHbQBhG}zIty_2L(xqFsZe72A-PqWelao_UPVUE#AKKd5`}glJC@2UB2rw`(IB?*A zqN1XRh{(>JJ55YXczAeJRaJNI-YqUJE-x?t@#Dumd-if8Ejy6@I4`1w~F!Qzky-V-VnInOpfk+|GDYn9AS7wc)Z8bf!!3 zZ2HZ7qm!>fg-@N3u_S6BtfcFRaLzUWGF!q z%AzEfB~`D;I)q^T@hn>GjrE?{UdLiPgP&3w>7tmXsgPC#5>G@))3jVemdgxLP8K0W zSvgGh3k4G=ZtO?YCn3lc(TL2c!850)DFo3*HcZxKVg(a36p4}m^OOpp{&p|bt$J&&x7~}fl`AqcVt%cEU2}27dM96QnwD)g zZI46N>oIHU?{_Z!WDf$^W^<7J82vsuXemZ#a;t%OX9%BFi literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/filescan.png b/public/js/ueditor/themes/default/images/filescan.png new file mode 100644 index 0000000000000000000000000000000000000000..1d271588692c1726e3521032f71d8354b66fab0e GIT binary patch literal 4282 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/highlighted.gif b/public/js/ueditor/themes/default/images/highlighted.gif new file mode 100644 index 0000000000000000000000000000000000000000..9272b4915ad2b8d4052a19b4c80a41b7c71cf1f1 GIT binary patch literal 111 zcmZ?wbhEHb6k`x$Sjfb1_to#iH~&L`;!hSvE(RtB9R?r($ulrHOzB@K_Ll!X=Ym_^ zj literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/icons-all.gif b/public/js/ueditor/themes/default/images/icons-all.gif new file mode 100644 index 0000000000000000000000000000000000000000..21915e59dede0aa22cda8c7097a14f0f1f68906c GIT binary patch literal 3750 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 b4O*493C(v}$CrKE*L~j?e&ctU0s;U#>#h02 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/icons.png b/public/js/ueditor/themes/default/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..c015e3aac9a84ebad11b932e84722124772d9641 GIT binary patch literal 19694 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ÏmvOE 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 b`u_(2Nr-(&rSM literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/img-cracked.png b/public/js/ueditor/themes/default/images/img-cracked.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1d38965486452bf9a13a913109299ec713c8f8 GIT binary patch literal 1497 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/loading.gif b/public/js/ueditor/themes/default/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..b713e27dfba708a01c380e7c731a13b52a34edfc GIT binary patch literal 734 zcmZ?wbhEHb6krfw*v!jdZ*RYU|9&kkt+4ULFya6I z{|pQa5E95x{Lk&@8WQa67~pE8XTZz|68g!)$-uzNpaWzB4HaNuV6okB(sT7*i`QqX zc^L!>4t!=<(wVp51?zD`Kkg=-D~S>;skcR%7#$omMC>21xN*pcHs0c0tRNsF(;}SM ziPc1Fu!&|20tT$-nJa`fCQUjv@kC+C3!quI1U@ISvoqf2Xk|(i=IUl?N@{e_G3Yq3 z;U-H^uFrB+CTuRW+i+5nfx|fagWLs?!jQY{X6=arU0riqs^&x$2`7X};t z37RYmQ;O#*G6uOVn*=nAm7~Q)&(!ybaj}oz`WtJ?PQSHN#^y?3ICf5PGS1Ha8pE+k zgJmJh5y6y1=@^y-ft=a0ZG|ZdPArq?H(+2`(;|7`F{6Xpbl>GI8B?M_My|#ljzAN4 z3Pb@-+?qdUsm6)xA>j@^Y0K7lSt}-Mopvo#qQ-sCkLXFkyF zSLvgkf4d8-w;?feL$4)lp3HYoMI*E5@=0AueT*09aVgICcu;r3k!5-F!GZ%U3=K0F z9S$(a^)KPCsC4r`z65*B*uc`x?)kvPGDl;Yns{Fj0|R3#FisfHGY4!D^0$zE1ljvXNk%w1VH^N10QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui02}}=000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Na$VuFhf5;SOl zQR2k}8962Z;Gkkb01ZqM%&2mp#+Cvv!u%%_X3ds21*#in3e-1?2?(ltc28ctYrP)k z{Pb@UlQicB-E)}JlDi_MMmXbuk803?iR{rRp~2S#dR_^-LU%))h*>DmHq0rnjf;8~ zsJM}rcHp`#D%4?EVW;cduL6J7ThT2kQ{cJka07oF;i3Wu4ZceYpGm&F`Sa-04-5zZJCANLt@XPdKI8X22WQ%mvv4FO#q2N BK}7%n literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/pagebreak.gif b/public/js/ueditor/themes/default/images/pagebreak.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d1cffd64af72709b1180b3b0a51bbfe30bcb8c6 GIT binary patch literal 54 zcmZ?wbhEHb{( zJaZG%Q-e|yQz{EjrrH1%u?6^qxTdA0{r~^J*gJ9sP=u)@$S?Rm!_(~sUO=9vr;B4q z#jTK2Cpj4yIG7J^{J*Sr7aP;;!*evU*UP7-zWuuR&zi{Xq6rL2tqds~bx9pSO$?r{ KelF{r5}E*+%QgN0 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/sortable.png b/public/js/ueditor/themes/default/images/sortable.png new file mode 100644 index 0000000000000000000000000000000000000000..1bca649698e187a80e1b1951fde99ddea3d7b038 GIT binary patch literal 2851 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 BXOsW{ literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/spacer.gif b/public/js/ueditor/themes/default/images/spacer.gif new file mode 100644 index 0000000000000000000000000000000000000000..5bfd67a2d6f72ac3a55cbfcea5866e841d22f5d9 GIT binary patch literal 43 mcmZ?wbhEHbWMp7uXkdT>#h)yUAf^t80Ld^gF}W}@SOWlZ0R#L1 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/sparator_v.png b/public/js/ueditor/themes/default/images/sparator_v.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf5662da8c36a446e1e08eb71b992c730ab8d15 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-Y0V1m%Ufcz7ii6yp7}lMWc?smOq&xaLGB9lH z=l+w(3gmMZctjR6Fz_7)VaDV6D^h@h{GKk3Arj%q6<>aQ{Qv(yqp%0-vU7cb$AD4{ Mp00i_>zopr0ET%XRR910 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/table-cell-align.png b/public/js/ueditor/themes/default/images/table-cell-align.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf42853ea5c00663e74d9195d1f1264ab684252 GIT binary patch literal 1847 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 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/toolbar_bg.png b/public/js/ueditor/themes/default/images/toolbar_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab685f4236ad543601b0d7dc43e429e041bee98 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI{!2~3a95{LaNJ*BsMwA5Sra_n`~3ut zhqFCqhNk>9eAm}?**d-K>ErgL-9FQkEgB1_|9|!V%ggstduo?ezj^hOMS@|yt(J@G Th3lO_a~V8c{an^LB{Ts5X5&F_ literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/unhighlighted.gif b/public/js/ueditor/themes/default/images/unhighlighted.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ad0b67ae634d41e76848ec0b6696e8ac7e06983 GIT binary patch literal 111 zcmZ?wbhEHb6k`x$Sjfci#j9d&%3_1)z0Fq~5a+uP;QtU1Nea;29 zx*cclynVJpP9xwz=Q6F#ReGoPZ4xWkEPX#)_EqLPYsO~h_`vc#s_EX6+DxrJi$d-_ L>N=ao&0q}x{nsuG literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/upload.png b/public/js/ueditor/themes/default/images/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..08d4d9268204a20ca343bf75784302cc706d2417 GIT binary patch literal 6608 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 O00001IobTth)ve1{+;xF-z$zX1$@cbk;N#jz zM8mU4YCupmEU?Nii0lQg^bRCan?Ab3%VAH658-8xBFJMB`IuzR@?X?_cxg~njWe8Z z7he1{t~NY@;sD2oqwB>InLWHP3|(&rFL;_%YXisG!f|)t`LI~xqj*wKLbXWp)f$eo z4#asOE4^bXVR1zDClZ^-`L@9YE{GEUM6w@>B$|*3C13A^6xxLq**_!Pdr{&MM+{D{ z56z@TzG*@hw6S^P4v136mt~*C)1y;z@#LIHDjO7zE0$NBVk(?tEAPD`x}r!4rSvo+ zGrN|Z-`M*gk?fXS+qo0;d0 zh<&hBzt>Fxc`eUN=*S8tip(N)4%c-Hsa$abS1kGZZD3dwRL~Y&OiQls$!Zy(aK#~| zjPP=1B(V$A*qhVABln1FxZ*mlSSnXYWQzzgJF1owUC)i7_7-#saE!r1=5SG$fWQ*I z?G_O^BB^|7ZhisN&MW7LKFbwbTU$SV{P_O;`{w56#>U3_`uf`1+Un}+%F2pDp;%g4 zT3lS5pP!e@<#Tg$GMVhlmoKxkvokX@)6>(Flao@ZbYfycB9V-bkB^RyibNuzP$&=x zMn*=4hK2?Q2l;$HkH;Gr80hQk>+S93a=9E1r@OnG&1QFYb~2ev27}Sj(b3-C-qzOE z+}zyQ*hr;PDHIBkNX*O2%g)YDPEJltOhlnjzdrQ8MQa@l0suN-^vmE^6Tt3mAau_$ zXbql@q{N)M&$25b1FG78WjFA2Q`{wpcH+plH-T+lc4H{-V^L{To}?sY^7t- zRp-#0EC|Fh>5nV9*osg354U2y3FFpwXQ!`Na;JKQ;uHrYmb=qU|MBr zTOt(Y=@VUlJq+6mQt^WJ9lIJTz?$6jvB@_0Ijg#xyHYhx6QE$9@Q;P`SNru{MQcx_ z>I9eqMm;}}tfJ*J&?Udq;ijL1AIs^TNj%ED8++(4bqQ3YK5><%~obS)3oEv z2`L9EwBilZbt=4c48b+h%ydj29TQf1;FclAt3p@D@Iv$C>k|Ryx={((b>+iEv*M}T zw2%>2(|!*aqioP7@6#WGj~%z23qkbWx? zq>K{ydFDHsgH&Ab#e8p|DBB+i&e7YjgH&Dp_Cc?zbGzF=vu-e#1^&&3UitP6Qvg=W z;+>M!e1J%3O7HX-hEcUA+~cC@8WAyj^bml>?&AT`HEEBQ}9Z=3X$i*Zty)I zU*Zj5^tvjIuB=l9Z9~T)&b;Eg=FK&TO>3g*yVOqt8d@&{JXvVbxz7~cYII$TQHvSS zgJ#LpO3a#6>HScB5@i5vKw}cnyiI*AUkCSPz7s6};*mIoCN(8C-gssBWz<}Twr?3} zMG(-KVyeCT&UjVicgg-NE@GN=DKAW@1zjD3zqggT>WPOqXK6a*HA(U%`Q-^?%QNdz M>|NJq=D?r-0Tclc1poj5 literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/default/images/word.gif b/public/js/ueditor/themes/default/images/word.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ef5d09b7b30c4f3225f77788462e429cc494b9b GIT binary patch literal 1019 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 bp?H9uNI6(~=EJQ&zcn<}bW|&qZNmQtXU+rA literal 0 HcmV?d00001 diff --git a/public/js/ueditor/themes/iframe.css b/public/js/ueditor/themes/iframe.css new file mode 100644 index 0000000..3e4032a --- /dev/null +++ b/public/js/ueditor/themes/iframe.css @@ -0,0 +1,56 @@ +body { + font-family: "Microsoft YaHei", Helvetica, "STHeiti STXihei", "Microsoft JhengHei", Tohoma, Arial; + font-size: 14px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +a { + color: #09f; + text-decoration: none; +} + +a:hover, +a:focus { + color: #09f; + text-decoration: none; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 18px; + border-left: 5px solid #EEE; +} + +img + br { + display: block; + padding: 4px 0; + content: ' '; +} + +body p { + margin-bottom: 1em; +} + +iframe { + border: none; +} + +img { + max-width: 100%; +} + +img[data-word-image]{ + cursor: pointer; +} + +pre { + margin: .5em 0; + padding: .4em .6em; + border-radius: 8px; + background: #f8f8f8; + line-height: 1.5; +} + + diff --git a/public/js/ueditor/third-party/SyntaxHighlighter/shCore.js b/public/js/ueditor/third-party/SyntaxHighlighter/shCore.js new file mode 100644 index 0000000..3249184 --- /dev/null +++ b/public/js/ueditor/third-party/SyntaxHighlighter/shCore.js @@ -0,0 +1,3655 @@ +// XRegExp 1.5.1 +// (c) 2007-2012 Steven Levithan +// MIT License +// +// Provides an augmented, extensible, cross-browser implementation of regular expressions, +// including support for additional syntax, flags, and methods + +var XRegExp; + +if (XRegExp) { + // Avoid running twice, since that would break references to native globals + throw Error("can't load XRegExp twice in the same frame"); +} + +// Run within an anonymous function to protect variables and avoid new globals +(function (undefined) { + + //--------------------------------- + // Constructor + //--------------------------------- + + // Accepts a pattern and flags; returns a new, extended `RegExp` object. Differs from a native + // regular expression in that additional syntax and flags are supported and cross-browser + // syntax inconsistencies are ameliorated. `XRegExp(/regex/)` clones an existing regex and + // converts to type XRegExp + XRegExp = function (pattern, flags) { + var output = [], + currScope = XRegExp.OUTSIDE_CLASS, + pos = 0, + context, tokenResult, match, chr, regex; + + if (XRegExp.isRegExp(pattern)) { + if (flags !== undefined) + throw TypeError("can't supply flags when constructing one RegExp from another"); + return clone(pattern); + } + // Tokens become part of the regex construction process, so protect against infinite + // recursion when an XRegExp is constructed within a token handler or trigger + if (isInsideConstructor) + throw Error("can't call the XRegExp constructor within token definition functions"); + + flags = flags || ""; + context = { // `this` object for custom tokens + hasNamedCapture: false, + captureNames: [], + hasFlag: function (flag) {return flags.indexOf(flag) > -1;}, + setFlag: function (flag) {flags += flag;} + }; + + while (pos < pattern.length) { + // Check for custom tokens at the current position + tokenResult = runTokens(pattern, pos, currScope, context); + + if (tokenResult) { + output.push(tokenResult.output); + pos += (tokenResult.match[0].length || 1); + } else { + // Check for native multicharacter metasequences (excluding character classes) at + // the current position + if (match = nativ.exec.call(nativeTokens[currScope], pattern.slice(pos))) { + output.push(match[0]); + pos += match[0].length; + } else { + chr = pattern.charAt(pos); + if (chr === "[") + currScope = XRegExp.INSIDE_CLASS; + else if (chr === "]") + currScope = XRegExp.OUTSIDE_CLASS; + // Advance position one character + output.push(chr); + pos++; + } + } + } + + regex = RegExp(output.join(""), nativ.replace.call(flags, flagClip, "")); + regex._xregexp = { + source: pattern, + captureNames: context.hasNamedCapture ? context.captureNames : null + }; + return regex; + }; + + + //--------------------------------- + // Public properties + //--------------------------------- + + XRegExp.version = "1.5.1"; + + // Token scope bitflags + XRegExp.INSIDE_CLASS = 1; + XRegExp.OUTSIDE_CLASS = 2; + + + //--------------------------------- + // Private variables + //--------------------------------- + + var replacementToken = /\$(?:(\d\d?|[$&`'])|{([$\w]+)})/g, + flagClip = /[^gimy]+|([\s\S])(?=[\s\S]*\1)/g, // Nonnative and duplicate flags + quantifier = /^(?:[?*+]|{\d+(?:,\d*)?})\??/, + isInsideConstructor = false, + tokens = [], + // Copy native globals for reference ("native" is an ES3 reserved keyword) + nativ = { + exec: RegExp.prototype.exec, + test: RegExp.prototype.test, + match: String.prototype.match, + replace: String.prototype.replace, + split: String.prototype.split + }, + compliantExecNpcg = nativ.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups + compliantLastIndexIncrement = function () { + var x = /^/g; + nativ.test.call(x, ""); + return !x.lastIndex; + }(), + hasNativeY = RegExp.prototype.sticky !== undefined, + nativeTokens = {}; + + // `nativeTokens` match native multicharacter metasequences only (including deprecated octals, + // excluding character classes) + nativeTokens[XRegExp.INSIDE_CLASS] = /^(?:\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S]))/; + nativeTokens[XRegExp.OUTSIDE_CLASS] = /^(?:\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??)/; + + + //--------------------------------- + // Public methods + //--------------------------------- + + // Lets you extend or change XRegExp syntax and create custom flags. This is used internally by + // the XRegExp library and can be used to create XRegExp plugins. This function is intended for + // users with advanced knowledge of JavaScript's regular expression syntax and behavior. It can + // be disabled by `XRegExp.freezeTokens` + XRegExp.addToken = function (regex, handler, scope, trigger) { + tokens.push({ + pattern: clone(regex, "g" + (hasNativeY ? "y" : "")), + handler: handler, + scope: scope || XRegExp.OUTSIDE_CLASS, + trigger: trigger || null + }); + }; + + // Accepts a pattern and flags; returns an extended `RegExp` object. If the pattern and flag + // combination has previously been cached, the cached copy is returned; otherwise the newly + // created regex is cached + XRegExp.cache = function (pattern, flags) { + var key = pattern + "/" + (flags || ""); + return XRegExp.cache[key] || (XRegExp.cache[key] = XRegExp(pattern, flags)); + }; + + // Accepts a `RegExp` instance; returns a copy with the `/g` flag set. The copy has a fresh + // `lastIndex` (set to zero). If you want to copy a regex without forcing the `global` + // property, use `XRegExp(regex)`. Do not use `RegExp(regex)` because it will not preserve + // special properties required for named capture + XRegExp.copyAsGlobal = function (regex) { + return clone(regex, "g"); + }; + + // Accepts a string; returns the string with regex metacharacters escaped. The returned string + // can safely be used at any point within a regex to match the provided literal string. Escaped + // characters are [ ] { } ( ) * + ? - . , \ ^ $ | # and whitespace + XRegExp.escape = function (str) { + return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + }; + + // Accepts a string to search, regex to search with, position to start the search within the + // string (default: 0), and an optional Boolean indicating whether matches must start at-or- + // after the position or at the specified position only. This function ignores the `lastIndex` + // of the provided regex in its own handling, but updates the property for compatibility + XRegExp.execAt = function (str, regex, pos, anchored) { + var r2 = clone(regex, "g" + ((anchored && hasNativeY) ? "y" : "")), + match; + r2.lastIndex = pos = pos || 0; + match = r2.exec(str); // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (anchored && match && match.index !== pos) + match = null; + if (regex.global) + regex.lastIndex = match ? r2.lastIndex : 0; + return match; + }; + + // Breaks the unrestorable link to XRegExp's private list of tokens, thereby preventing + // syntax and flag changes. Should be run after XRegExp and any plugins are loaded + XRegExp.freezeTokens = function () { + XRegExp.addToken = function () { + throw Error("can't run addToken after freezeTokens"); + }; + }; + + // Accepts any value; returns a Boolean indicating whether the argument is a `RegExp` object. + // Note that this is also `true` for regex literals and regexes created by the `XRegExp` + // constructor. This works correctly for variables created in another frame, when `instanceof` + // and `constructor` checks would fail to work as intended + XRegExp.isRegExp = function (o) { + return Object.prototype.toString.call(o) === "[object RegExp]"; + }; + + // Executes `callback` once per match within `str`. Provides a simpler and cleaner way to + // iterate over regex matches compared to the traditional approaches of subverting + // `String.prototype.replace` or repeatedly calling `exec` within a `while` loop + XRegExp.iterate = function (str, regex, callback, context) { + var r2 = clone(regex, "g"), + i = -1, match; + while (match = r2.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (regex.global) + regex.lastIndex = r2.lastIndex; // Doing this to follow expectations if `lastIndex` is checked within `callback` + callback.call(context, match, ++i, str, regex); + if (r2.lastIndex === match.index) + r2.lastIndex++; + } + if (regex.global) + regex.lastIndex = 0; + }; + + // Accepts a string and an array of regexes; returns the result of using each successive regex + // to search within the matches of the previous regex. The array of regexes can also contain + // objects with `regex` and `backref` properties, in which case the named or numbered back- + // references specified are passed forward to the next regex or returned. E.g.: + // var xregexpImgFileNames = XRegExp.matchChain(html, [ + // {regex: /]+)>/i, backref: 1}, // tag attributes + // {regex: XRegExp('(?ix) \\s src=" (? [^"]+ )'), backref: "src"}, // src attribute values + // {regex: XRegExp("^http://xregexp\\.com(/[^#?]+)", "i"), backref: 1}, // xregexp.com paths + // /[^\/]+$/ // filenames (strip directory paths) + // ]); + XRegExp.matchChain = function (str, chain) { + return function recurseChain (values, level) { + var item = chain[level].regex ? chain[level] : {regex: chain[level]}, + regex = clone(item.regex, "g"), + matches = [], i; + for (i = 0; i < values.length; i++) { + XRegExp.iterate(values[i], regex, function (match) { + matches.push(item.backref ? (match[item.backref] || "") : match[0]); + }); + } + return ((level === chain.length - 1) || !matches.length) ? + matches : recurseChain(matches, level + 1); + }([str], 0); + }; + + + //--------------------------------- + // New RegExp prototype methods + //--------------------------------- + + // Accepts a context object and arguments array; returns the result of calling `exec` with the + // first value in the arguments array. the context is ignored but is accepted for congruity + // with `Function.prototype.apply` + RegExp.prototype.apply = function (context, args) { + return this.exec(args[0]); + }; + + // Accepts a context object and string; returns the result of calling `exec` with the provided + // string. the context is ignored but is accepted for congruity with `Function.prototype.call` + RegExp.prototype.call = function (context, str) { + return this.exec(str); + }; + + + //--------------------------------- + // Overriden native methods + //--------------------------------- + + // Adds named capture support (with backreferences returned as `result.name`), and fixes two + // cross-browser issues per ES3: + // - Captured values for nonparticipating capturing groups should be returned as `undefined`, + // rather than the empty string. + // - `lastIndex` should not be incremented after zero-length matches. + RegExp.prototype.exec = function (str) { + var match, name, r2, origLastIndex; + if (!this.global) + origLastIndex = this.lastIndex; + match = nativ.exec.apply(this, arguments); + if (match) { + // Fix browsers whose `exec` methods don't consistently return `undefined` for + // nonparticipating capturing groups + if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) { + r2 = RegExp(this.source, nativ.replace.call(getNativeFlags(this), "g", "")); + // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed + // matching due to characters outside the match + nativ.replace.call((str + "").slice(match.index), r2, function () { + for (var i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) + match[i] = undefined; + } + }); + } + // Attach named capture properties + if (this._xregexp && this._xregexp.captureNames) { + for (var i = 1; i < match.length; i++) { + name = this._xregexp.captureNames[i - 1]; + if (name) + match[name] = match[i]; + } + } + // Fix browsers that increment `lastIndex` after zero-length matches + if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) + this.lastIndex--; + } + if (!this.global) + this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + return match; + }; + + // Fix browser bugs in native method + RegExp.prototype.test = function (str) { + // Use the native `exec` to skip some processing overhead, even though the altered + // `exec` would take care of the `lastIndex` fixes + var match, origLastIndex; + if (!this.global) + origLastIndex = this.lastIndex; + match = nativ.exec.call(this, str); + // Fix browsers that increment `lastIndex` after zero-length matches + if (match && !compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) + this.lastIndex--; + if (!this.global) + this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + return !!match; + }; + + // Adds named capture support and fixes browser bugs in native method + String.prototype.match = function (regex) { + if (!XRegExp.isRegExp(regex)) + regex = RegExp(regex); // Native `RegExp` + if (regex.global) { + var result = nativ.match.apply(this, arguments); + regex.lastIndex = 0; // Fix IE bug + return result; + } + return regex.exec(this); // Run the altered `exec` + }; + + // Adds support for `${n}` tokens for named and numbered backreferences in replacement text, + // and provides named backreferences to replacement functions as `arguments[0].name`. Also + // fixes cross-browser differences in replacement text syntax when performing a replacement + // using a nonregex search value, and the value of replacement regexes' `lastIndex` property + // during replacement iterations. Note that this doesn't support SpiderMonkey's proprietary + // third (`flags`) parameter + String.prototype.replace = function (search, replacement) { + var isRegex = XRegExp.isRegExp(search), + captureNames, result, str, origLastIndex; + + // There are too many combinations of search/replacement types/values and browser bugs that + // preclude passing to native `replace`, so don't try + //if (...) + // return nativ.replace.apply(this, arguments); + + if (isRegex) { + if (search._xregexp) + captureNames = search._xregexp.captureNames; // Array or `null` + if (!search.global) + origLastIndex = search.lastIndex; + } else { + search = search + ""; // Type conversion + } + + if (Object.prototype.toString.call(replacement) === "[object Function]") { + result = nativ.replace.call(this + "", search, function () { + if (captureNames) { + // Change the `arguments[0]` string primitive to a String object which can store properties + arguments[0] = new String(arguments[0]); + // Store named backreferences on `arguments[0]` + for (var i = 0; i < captureNames.length; i++) { + if (captureNames[i]) + arguments[0][captureNames[i]] = arguments[i + 1]; + } + } + // Update `lastIndex` before calling `replacement` (fix browsers) + if (isRegex && search.global) + search.lastIndex = arguments[arguments.length - 2] + arguments[0].length; + return replacement.apply(null, arguments); + }); + } else { + str = this + ""; // Type conversion, so `args[args.length - 1]` will be a string (given nonstring `this`) + result = nativ.replace.call(str, search, function () { + var args = arguments; // Keep this function's `arguments` available through closure + return nativ.replace.call(replacement + "", replacementToken, function ($0, $1, $2) { + // Numbered backreference (without delimiters) or special variable + if ($1) { + switch ($1) { + case "$": return "$"; + case "&": return args[0]; + case "`": return args[args.length - 1].slice(0, args[args.length - 2]); + case "'": return args[args.length - 1].slice(args[args.length - 2] + args[0].length); + // Numbered backreference + default: + // What does "$10" mean? + // - Backreference 10, if 10 or more capturing groups exist + // - Backreference 1 followed by "0", if 1-9 capturing groups exist + // - Otherwise, it's the string "$10" + // Also note: + // - Backreferences cannot be more than two digits (enforced by `replacementToken`) + // - "$01" is equivalent to "$1" if a capturing group exists, otherwise it's the string "$01" + // - There is no "$0" token ("$&" is the entire match) + var literalNumbers = ""; + $1 = +$1; // Type conversion; drop leading zero + if (!$1) // `$1` was "0" or "00" + return $0; + while ($1 > args.length - 3) { + literalNumbers = String.prototype.slice.call($1, -1) + literalNumbers; + $1 = Math.floor($1 / 10); // Drop the last digit + } + return ($1 ? args[$1] || "" : "$") + literalNumbers; + } + // Named backreference or delimited numbered backreference + } else { + // What does "${n}" mean? + // - Backreference to numbered capture n. Two differences from "$n": + // - n can be more than two digits + // - Backreference 0 is allowed, and is the entire match + // - Backreference to named capture n, if it exists and is not a number overridden by numbered capture + // - Otherwise, it's the string "${n}" + var n = +$2; // Type conversion; drop leading zeros + if (n <= args.length - 3) + return args[n]; + n = captureNames ? indexOf(captureNames, $2) : -1; + return n > -1 ? args[n + 1] : $0; + } + }); + }); + } + + if (isRegex) { + if (search.global) + search.lastIndex = 0; // Fix IE, Safari bug (last tested IE 9.0.5, Safari 5.1.2 on Windows) + else + search.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + } + + return result; + }; + + // A consistent cross-browser, ES3 compliant `split` + String.prototype.split = function (s /* separator */, limit) { + // If separator `s` is not a regex, use the native `split` + if (!XRegExp.isRegExp(s)) + return nativ.split.apply(this, arguments); + + var str = this + "", // Type conversion + output = [], + lastLastIndex = 0, + match, lastLength; + + // Behavior for `limit`: if it's... + // - `undefined`: No limit + // - `NaN` or zero: Return an empty array + // - A positive number: Use `Math.floor(limit)` + // - A negative number: No limit + // - Other: Type-convert, then use the above rules + if (limit === undefined || +limit < 0) { + limit = Infinity; + } else { + limit = Math.floor(+limit); + if (!limit) + return []; + } + + // This is required if not `s.global`, and it avoids needing to set `s.lastIndex` to zero + // and restore it to its original value when we're done using the regex + s = XRegExp.copyAsGlobal(s); + + while (match = s.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (s.lastIndex > lastLastIndex) { + output.push(str.slice(lastLastIndex, match.index)); + + if (match.length > 1 && match.index < str.length) + Array.prototype.push.apply(output, match.slice(1)); + + lastLength = match[0].length; + lastLastIndex = s.lastIndex; + + if (output.length >= limit) + break; + } + + if (s.lastIndex === match.index) + s.lastIndex++; + } + + if (lastLastIndex === str.length) { + if (!nativ.test.call(s, "") || lastLength) + output.push(""); + } else { + output.push(str.slice(lastLastIndex)); + } + + return output.length > limit ? output.slice(0, limit) : output; + }; + + + //--------------------------------- + // Private helper functions + //--------------------------------- + + // Supporting function for `XRegExp`, `XRegExp.copyAsGlobal`, etc. Returns a copy of a `RegExp` + // instance with a fresh `lastIndex` (set to zero), preserving properties required for named + // capture. Also allows adding new flags in the process of copying the regex + function clone (regex, additionalFlags) { + if (!XRegExp.isRegExp(regex)) + throw TypeError("type RegExp expected"); + var x = regex._xregexp; + regex = XRegExp(regex.source, getNativeFlags(regex) + (additionalFlags || "")); + if (x) { + regex._xregexp = { + source: x.source, + captureNames: x.captureNames ? x.captureNames.slice(0) : null + }; + } + return regex; + } + + function getNativeFlags (regex) { + return (regex.global ? "g" : "") + + (regex.ignoreCase ? "i" : "") + + (regex.multiline ? "m" : "") + + (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3 + (regex.sticky ? "y" : ""); + } + + function runTokens (pattern, index, scope, context) { + var i = tokens.length, + result, match, t; + // Protect against constructing XRegExps within token handler and trigger functions + isInsideConstructor = true; + // Must reset `isInsideConstructor`, even if a `trigger` or `handler` throws + try { + while (i--) { // Run in reverse order + t = tokens[i]; + if ((scope & t.scope) && (!t.trigger || t.trigger.call(context))) { + t.pattern.lastIndex = index; + match = t.pattern.exec(pattern); // Running the altered `exec` here allows use of named backreferences, etc. + if (match && match.index === index) { + result = { + output: t.handler.call(context, match, scope), + match: match + }; + break; + } + } + } + } catch (err) { + throw err; + } finally { + isInsideConstructor = false; + } + return result; + } + + function indexOf (array, item, from) { + if (Array.prototype.indexOf) // Use the native array method if available + return array.indexOf(item, from); + for (var i = from || 0; i < array.length; i++) { + if (array[i] === item) + return i; + } + return -1; + } + + + //--------------------------------- + // Built-in tokens + //--------------------------------- + + // Augment XRegExp's regular expression syntax and flags. Note that when adding tokens, the + // third (`scope`) argument defaults to `XRegExp.OUTSIDE_CLASS` + + // Comment pattern: (?# ) + XRegExp.addToken( + /\(\?#[^)]*\)/, + function (match) { + // Keep tokens separated unless the following token is a quantifier + return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)"; + } + ); + + // Capturing group (match the opening parenthesis only). + // Required for support of named capturing groups + XRegExp.addToken( + /\((?!\?)/, + function () { + this.captureNames.push(null); + return "("; + } + ); + + // Named capturing group (match the opening delimiter only): (? + XRegExp.addToken( + /\(\?<([$\w]+)>/, + function (match) { + this.captureNames.push(match[1]); + this.hasNamedCapture = true; + return "("; + } + ); + + // Named backreference: \k + XRegExp.addToken( + /\\k<([\w$]+)>/, + function (match) { + var index = indexOf(this.captureNames, match[1]); + // Keep backreferences separate from subsequent literal numbers. Preserve back- + // references to named groups that are undefined at this point as literal strings + return index > -1 ? + "\\" + (index + 1) + (isNaN(match.input.charAt(match.index + match[0].length)) ? "" : "(?:)") : + match[0]; + } + ); + + // Empty character class: [] or [^] + XRegExp.addToken( + /\[\^?]/, + function (match) { + // For cross-browser compatibility with ES3, convert [] to \b\B and [^] to [\s\S]. + // (?!) should work like \b\B, but is unreliable in Firefox + return match[0] === "[]" ? "\\b\\B" : "[\\s\\S]"; + } + ); + + // Mode modifier at the start of the pattern only, with any combination of flags imsx: (?imsx) + // Does not support x(?i), (?-i), (?i-m), (?i: ), (?i)(?m), etc. + XRegExp.addToken( + /^\(\?([imsx]+)\)/, + function (match) { + this.setFlag(match[1]); + return ""; + } + ); + + // Whitespace and comments, in free-spacing (aka extended) mode only + XRegExp.addToken( + /(?:\s+|#.*)+/, + function (match) { + // Keep tokens separated unless the following token is a quantifier + return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)"; + }, + XRegExp.OUTSIDE_CLASS, + function () {return this.hasFlag("x");} + ); + + // Dot, in dotall (aka singleline) mode only + XRegExp.addToken( + /\./, + function () {return "[\\s\\S]";}, + XRegExp.OUTSIDE_CLASS, + function () {return this.hasFlag("s");} + ); + + + //--------------------------------- + // Backward compatibility + //--------------------------------- + + // Uncomment the following block for compatibility with XRegExp 1.0-1.2: + /* + XRegExp.matchWithinChain = XRegExp.matchChain; + RegExp.prototype.addFlags = function (s) {return clone(this, s);}; + RegExp.prototype.execAll = function (s) {var r = []; XRegExp.iterate(s, this, function (m) {r.push(m);}); return r;}; + RegExp.prototype.forEachExec = function (s, f, c) {return XRegExp.iterate(s, this, f, c);}; + RegExp.prototype.validate = function (s) {var r = RegExp("^(?:" + this.source + ")$(?!\\s)", getNativeFlags(this)); if (this.global) this.lastIndex = 0; return s.search(r) === 0;}; + */ + +})(); + +// +// Begin anonymous function. This is used to contain local scope variables without polutting global scope. +// +if (typeof(SyntaxHighlighter) == 'undefined') var SyntaxHighlighter = function() { + +// CommonJS + if (typeof(require) != 'undefined' && typeof(XRegExp) == 'undefined') + { + XRegExp = require('XRegExp').XRegExp; + } + +// Shortcut object which will be assigned to the SyntaxHighlighter variable. +// This is a shorthand for local reference in order to avoid long namespace +// references to SyntaxHighlighter.whatever... + var sh = { + defaults : { + /** Additional CSS class names to be added to highlighter elements. */ + 'class-name' : '', + + /** First line number. */ + 'first-line' : 1, + + /** + * Pads line numbers. Possible values are: + * + * false - don't pad line numbers. + * true - automaticaly pad numbers with minimum required number of leading zeroes. + * [int] - length up to which pad line numbers. + */ + 'pad-line-numbers' : false, + + /** Lines to highlight. */ + 'highlight' : false, + + /** Title to be displayed above the code block. */ + 'title' : null, + + /** Enables or disables smart tabs. */ + 'smart-tabs' : true, + + /** Gets or sets tab size. */ + 'tab-size' : 4, + + /** Enables or disables gutter. */ + 'gutter' : true, + + /** Enables or disables toolbar. */ + 'toolbar' : true, + + /** Enables quick code copy and paste from double click. */ + 'quick-code' : true, + + /** Forces code view to be collapsed. */ + 'collapse' : false, + + /** Enables or disables automatic links. */ + 'auto-links' : false, + + /** Gets or sets light mode. Equavalent to turning off gutter and toolbar. */ + 'light' : false, + + 'unindent' : true, + + 'html-script' : false + }, + + config : { + space : ' ', + + /** Enables use of + * + * ``` + */ + findParent: function(node, filterFn, includeSelf) { + if (node && !domUtils.isBody(node)) { + node = includeSelf ? node : node.parentNode; + while (node) { + if (!filterFn || filterFn(node) || domUtils.isBody(node)) { + return filterFn && !filterFn(node) && domUtils.isBody(node) + ? null + : node; + } + node = node.parentNode; + } + } + return null; + }, + /** + * 查找node的节点名为tagName的第一个祖先节点, 查找的起点是node节点的父节点。 + * @method findParentByTagName + * @param { Node } node 需要查找的节点对象 + * @param { Array } tagNames 需要查找的父节点的名称数组 + * @warning 查找的终点是到body节点为止 + * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL + * @example + * ```javascript + * var node = UE.dom.domUtils.findParentByTagName( document.getElementsByTagName("div")[0], [ "BODY" ] ); + * //output: BODY + * console.log( node.tagName ); + * ``` + */ + + /** + * 查找node的节点名为tagName的祖先节点, 如果includeSelf的值为true,则查找的起点是给定的节点node, + * 否则, 起点是node的父节点。 + * @method findParentByTagName + * @param { Node } node 需要查找的节点对象 + * @param { Array } tagNames 需要查找的父节点的名称数组 + * @param { Boolean } includeSelf 查找过程是否包含node节点自身 + * @warning 查找的终点是到body节点为止 + * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL + * @example + * ```javascript + * var queryTarget = document.getElementsByTagName("div")[0]; + * var node = UE.dom.domUtils.findParentByTagName( queryTarget, [ "DIV" ], true ); + * //output: true + * console.log( queryTarget === node ); + * ``` + */ + findParentByTagName: function(node, tagNames, includeSelf, excludeFn) { + tagNames = utils.listToMap(utils.isArray(tagNames) ? tagNames : [tagNames]); + return domUtils.findParent( + node, + function(node) { + return tagNames[node.tagName] && !(excludeFn && excludeFn(node)); + }, + includeSelf + ); + }, + /** + * 查找节点node的祖先节点集合, 查找的起点是给定节点的父节点,结果集中不包含给定的节点。 + * @method findParents + * @param { Node } node 需要查找的节点对象 + * @return { Array } 给定节点的祖先节点数组 + * @grammar UE.dom.domUtils.findParents(node) => Array //返回一个祖先节点数组集合,不包含自身 + * @grammar UE.dom.domUtils.findParents(node,includeSelf) => Array //返回一个祖先节点数组集合,includeSelf指定是否包含自身 + * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn) => Array //返回一个祖先节点数组集合,filterFn指定过滤条件,返回true的node将被选取 + * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn,closerFirst) => Array //返回一个祖先节点数组集合,closerFirst为true的话,node的直接父亲节点是数组的第0个 + */ + + /** + * 查找节点node的祖先节点集合, 如果includeSelf的值为true, + * 则返回的结果集中允许出现当前给定的节点, 否则, 该节点不会出现在其结果集中。 + * @method findParents + * @param { Node } node 需要查找的节点对象 + * @param { Boolean } includeSelf 查找的结果中是否允许包含当前查找的节点对象 + * @return { Array } 给定节点的祖先节点数组 + */ + findParents: function(node, includeSelf, filterFn, closerFirst) { + var parents = includeSelf && ((filterFn && filterFn(node)) || !filterFn) + ? [node] + : []; + while ((node = domUtils.findParent(node, filterFn))) { + parents.push(node); + } + return closerFirst ? parents : parents.reverse(); + }, + + /** + * 在节点node后面插入新节点newNode + * @method insertAfter + * @param { Node } node 目标节点 + * @param { Node } newNode 新插入的节点, 该节点将置于目标节点之后 + * @return { Node } 新插入的节点 + */ + insertAfter: function(node, newNode) { + return node.nextSibling + ? node.parentNode.insertBefore(newNode, node.nextSibling) + : node.parentNode.appendChild(newNode); + }, + + /** + * 删除节点node及其下属的所有节点 + * @method remove + * @param { Node } node 需要删除的节点对象 + * @return { Node } 返回刚删除的节点对象 + * @example + * ```html + *

    + *
    你好
    + *
    + * + * ``` + */ + + /** + * 删除节点node,并根据keepChildren的值决定是否保留子节点 + * @method remove + * @param { Node } node 需要删除的节点对象 + * @param { Boolean } keepChildren 是否需要保留子节点 + * @return { Node } 返回刚删除的节点对象 + * @example + * ```html + *
    + *
    你好
    + *
    + * + * ``` + */ + remove: function(node, keepChildren) { + var parent = node.parentNode, + child; + if (parent) { + if (keepChildren && node.hasChildNodes()) { + while ((child = node.firstChild)) { + parent.insertBefore(child, node); + } + } + parent.removeChild(node); + } + return node; + }, + + /** + * 取得node节点的下一个兄弟节点, 如果该节点其后没有兄弟节点, 则递归查找其父节点之后的第一个兄弟节点, + * 直到找到满足条件的节点或者递归到BODY节点之后才会结束。 + * @method getNextDomNode + * @param { Node } node 需要获取其后的兄弟节点的节点对象 + * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL + * @example + * ```html + * + *
    + * + *
    + * xxx + * + * + * ``` + * @example + * ```html + * + *
    + * + * xxx + *
    + * xxx + * + * + * ``` + */ + + /** + * 取得node节点的下一个兄弟节点, 如果startFromChild的值为ture,则先获取其子节点, + * 如果有子节点则直接返回第一个子节点;如果没有子节点或者startFromChild的值为false, + * 则执行
    getNextDomNode(Node node)的查找过程。 + * @method getNextDomNode + * @param { Node } node 需要获取其后的兄弟节点的节点对象 + * @param { Boolean } startFromChild 查找过程是否从其子节点开始 + * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL + * @see UE.dom.domUtils.getNextDomNode(Node) + */ + getNextDomNode: function(node, startFromChild, filterFn, guard) { + return getDomNode( + node, + "firstChild", + "nextSibling", + startFromChild, + filterFn, + guard + ); + }, + getPreDomNode: function(node, startFromChild, filterFn, guard) { + return getDomNode( + node, + "lastChild", + "previousSibling", + startFromChild, + filterFn, + guard + ); + }, + /** + * 检测节点node是否属是UEditor定义的bookmark节点 + * @method isBookmarkNode + * @private + * @param { Node } node 需要检测的节点对象 + * @return { Boolean } 是否是bookmark节点 + * @example + * ```html + * + * + * ``` + */ + isBookmarkNode: function(node) { + return node.nodeType == 1 && node.id && /^_baidu_bookmark_/i.test(node.id); + }, + /** + * 获取节点node所属的window对象 + * @method getWindow + * @param { Node } node 节点对象 + * @return { Window } 当前节点所属的window对象 + * @example + * ```javascript + * //output: true + * console.log( UE.dom.domUtils.getWindow( document.body ) === window ); + * ``` + */ + getWindow: function(node) { + var doc = node.ownerDocument || node; + return doc.defaultView || doc.parentWindow; + }, + /** + * 获取离nodeA与nodeB最近的公共的祖先节点 + * @method getCommonAncestor + * @param { Node } nodeA 第一个节点 + * @param { Node } nodeB 第二个节点 + * @remind 如果给定的两个节点是同一个节点, 将直接返回该节点。 + * @return { Node | NULL } 如果未找到公共节点, 返回NULL, 否则返回最近的公共祖先节点。 + * @example + * ```javascript + * var commonAncestor = UE.dom.domUtils.getCommonAncestor( document.body, document.body.firstChild ); + * //output: true + * console.log( commonAncestor.tagName.toLowerCase() === 'body' ); + * ``` + */ + getCommonAncestor: function(nodeA, nodeB) { + if (nodeA === nodeB) return nodeA; + var parentsA = [nodeA], + parentsB = [nodeB], + parent = nodeA, + i = -1; + while ((parent = parent.parentNode)) { + if (parent === nodeB) { + return parent; + } + parentsA.push(parent); + } + parent = nodeB; + while ((parent = parent.parentNode)) { + if (parent === nodeA) return parent; + parentsB.push(parent); + } + parentsA.reverse(); + parentsB.reverse(); + while ((i++, parentsA[i] === parentsB[i])) {} + return i == 0 ? null : parentsA[i - 1]; + }, + /** + * 清除node节点左右连续为空的兄弟inline节点 + * @method clearEmptySibling + * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, + * 则这些兄弟节点将被删除 + * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext) //ignoreNext指定是否忽略右边空节点 + * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext,ignorePre) //ignorePre指定是否忽略左边空节点 + * @example + * ```html + * + *
    + * + * + * + * xxx + * + * + * + * ``` + */ + + /** + * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true, + * 则忽略对右边兄弟节点的操作。 + * @method clearEmptySibling + * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, + * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作 + * 则这些兄弟节点将被删除 + * @see UE.dom.domUtils.clearEmptySibling(Node) + */ + + /** + * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true, + * 则忽略对右边兄弟节点的操作, 如果ignorePre的值为true,则忽略对左边兄弟节点的操作。 + * @method clearEmptySibling + * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, + * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作 + * @param { Boolean } ignorePre 是否忽略忽略对左边的兄弟节点的操作 + * 则这些兄弟节点将被删除 + * @see UE.dom.domUtils.clearEmptySibling(Node) + */ + clearEmptySibling: function(node, ignoreNext, ignorePre) { + function clear(next, dir) { + var tmpNode; + while ( + next && + !domUtils.isBookmarkNode(next) && + (domUtils.isEmptyInlineElement(next) || + //这里不能把空格算进来会吧空格干掉,出现文字间的空格丢掉了 + !new RegExp("[^\t\n\r" + domUtils.fillChar + "]").test( + next.nodeValue + )) + ) { + tmpNode = next[dir]; + domUtils.remove(next); + next = tmpNode; + } + } + !ignoreNext && clear(node.nextSibling, "nextSibling"); + !ignorePre && clear(node.previousSibling, "previousSibling"); + }, + /** + * 将一个文本节点textNode拆分成两个文本节点,offset指定拆分位置 + * @method split + * @param { Node } textNode 需要拆分的文本节点对象 + * @param { int } offset 需要拆分的位置, 位置计算从0开始 + * @return { Node } 拆分后形成的新节点 + * @example + * ```html + *
    abcdef
    + * + * ``` + */ + split: function(node, offset) { + var doc = node.ownerDocument; + if (browser.ie && offset == node.nodeValue.length) { + var next = doc.createTextNode(""); + return domUtils.insertAfter(node, next); + } + var retval = node.splitText(offset); + //ie8下splitText不会跟新childNodes,我们手动触发他的更新 + if (browser.ie8) { + var tmpNode = doc.createTextNode(""); + domUtils.insertAfter(retval, tmpNode); + domUtils.remove(tmpNode); + } + return retval; + }, + + /** + * 检测文本节点textNode是否为空节点(包括空格、换行、占位符等字符) + * @method isWhitespace + * @param { Node } node 需要检测的节点对象 + * @return { Boolean } 检测的节点是否为空 + * @example + * ```html + *
    + * + *
    + * + * ``` + */ + isWhitespace: function(node) { + return !new RegExp("[^ \t\n\r" + domUtils.fillChar + "]").test( + node.nodeValue + ); + }, + /** + * 获取元素element相对于viewport的位置坐标 + * @method getXY + * @param { Node } element 需要计算位置的节点对象 + * @return { Object } 返回形如{x:left,y:top}的一个key-value映射对象, 其中键x代表水平偏移距离, + * y代表垂直偏移距离。 + * + * @example + * ```javascript + * var location = UE.dom.domUtils.getXY( document.getElementById("test") ); + * //output: test的坐标为: 12, 24 + * console.log( 'test的坐标为: ', location.x, ',', location.y ); + * ``` + */ + getXY: function(element) { + var x = 0, + y = 0; + while (element.offsetParent) { + y += element.offsetTop; + x += element.offsetLeft; + element = element.offsetParent; + } + return { x: x, y: y }; + }, + /** + * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数 + * @method on + * @param { Node } element 需要绑定事件的节点对象 + * @param { String } type 绑定的事件类型 + * @param { Function } handler 事件处理器 + * @example + * ```javascript + * UE.dom.domUtils.on(document.body,"click",function(e){ + * //e为事件对象,this为被点击元素对戏那个 + * }); + * ``` + */ + + /** + * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数 + * @method on + * @param { Node } element 需要绑定事件的节点对象 + * @param { Array } type 绑定的事件类型数组 + * @param { Function } handler 事件处理器 + * @example + * ```javascript + * UE.dom.domUtils.on(document.body,["click","mousedown"],function(evt){ + * //evt为事件对象,this为被点击元素对象 + * }); + * ``` + */ + on: function(element, type, handler) { + var types = utils.isArray(type) ? type : utils.trim(type).split(/\s+/), + k = types.length; + if (k) + while (k--) { + type = types[k]; + if (element.addEventListener) { + element.addEventListener(type, handler, false); + } else { + if (!handler._d) { + handler._d = { + els: [] + }; + } + var key = type + handler.toString(), + index = utils.indexOf(handler._d.els, element); + if (!handler._d[key] || index == -1) { + if (index == -1) { + handler._d.els.push(element); + } + if (!handler._d[key]) { + handler._d[key] = function(evt) { + return handler.call(evt.srcElement, evt || window.event); + }; + } + + element.attachEvent("on" + type, handler._d[key]); + } + } + } + element = null; + }, + /** + * 解除DOM事件绑定 + * @method un + * @param { Node } element 需要解除事件绑定的节点对象 + * @param { String } type 需要接触绑定的事件类型 + * @param { Function } handler 对应的事件处理器 + * @example + * ```javascript + * UE.dom.domUtils.un(document.body,"click",function(evt){ + * //evt为事件对象,this为被点击元素对象 + * }); + * ``` + */ + + /** + * 解除DOM事件绑定 + * @method un + * @param { Node } element 需要解除事件绑定的节点对象 + * @param { Array } type 需要接触绑定的事件类型数组 + * @param { Function } handler 对应的事件处理器 + * @example + * ```javascript + * UE.dom.domUtils.un(document.body, ["click","mousedown"],function(evt){ + * //evt为事件对象,this为被点击元素对象 + * }); + * ``` + */ + un: function(element, type, handler) { + var types = utils.isArray(type) ? type : utils.trim(type).split(/\s+/), + k = types.length; + if (k) + while (k--) { + type = types[k]; + if (element.removeEventListener) { + element.removeEventListener(type, handler, false); + } else { + var key = type + handler.toString(); + try { + element.detachEvent( + "on" + type, + handler._d ? handler._d[key] : handler + ); + } catch (e) {} + if (handler._d && handler._d[key]) { + var index = utils.indexOf(handler._d.els, element); + if (index != -1) { + handler._d.els.splice(index, 1); + } + handler._d.els.length == 0 && delete handler._d[key]; + } + } + } + }, + + /** + * 比较节点nodeA与节点nodeB是否具有相同的标签名、属性名以及属性值 + * @method isSameElement + * @param { Node } nodeA 需要比较的节点 + * @param { Node } nodeB 需要比较的节点 + * @return { Boolean } 两个节点是否具有相同的标签名、属性名以及属性值 + * @example + * ```html + * ssss + * bbbbb + * ssss + * bbbbb + * + * + * ``` + */ + isSameElement: function(nodeA, nodeB) { + if (nodeA.tagName != nodeB.tagName) { + return false; + } + var thisAttrs = nodeA.attributes, + otherAttrs = nodeB.attributes; + if (!ie && thisAttrs.length != otherAttrs.length) { + return false; + } + var attrA, + attrB, + al = 0, + bl = 0; + for (var i = 0; (attrA = thisAttrs[i++]); ) { + if (attrA.nodeName == "style") { + if (attrA.specified) { + al++; + } + if (domUtils.isSameStyle(nodeA, nodeB)) { + continue; + } else { + return false; + } + } + if (ie) { + if (attrA.specified) { + al++; + attrB = otherAttrs.getNamedItem(attrA.nodeName); + } else { + continue; + } + } else { + attrB = nodeB.attributes[attrA.nodeName]; + } + if (!attrB.specified || attrA.nodeValue != attrB.nodeValue) { + return false; + } + } + // 有可能attrB的属性包含了attrA的属性之外还有自己的属性 + if (ie) { + for (i = 0; (attrB = otherAttrs[i++]); ) { + if (attrB.specified) { + bl++; + } + } + if (al != bl) { + return false; + } + } + return true; + }, + + /** + * 判断节点nodeA与节点nodeB的元素的style属性是否一致 + * @method isSameStyle + * @param { Node } nodeA 需要比较的节点 + * @param { Node } nodeB 需要比较的节点 + * @return { Boolean } 两个节点是否具有相同的style属性值 + * @example + * ```html + * ssss + * bbbbb + * ssss + * bbbbb + * + * + * ``` + */ + isSameStyle: function(nodeA, nodeB) { + var styleA = nodeA.style.cssText + .replace(/( ?; ?)/g, ";") + .replace(/( ?: ?)/g, ":"), + styleB = nodeB.style.cssText + .replace(/( ?; ?)/g, ";") + .replace(/( ?: ?)/g, ":"); + if (browser.opera) { + styleA = nodeA.style; + styleB = nodeB.style; + if (styleA.length != styleB.length) return false; + for (var p in styleA) { + if (/^(\d+|csstext)$/i.test(p)) { + continue; + } + if (styleA[p] != styleB[p]) { + return false; + } + } + return true; + } + if (!styleA || !styleB) { + return styleA == styleB; + } + styleA = styleA.split(";"); + styleB = styleB.split(";"); + if (styleA.length != styleB.length) { + return false; + } + for (var i = 0, ci; (ci = styleA[i++]); ) { + if (utils.indexOf(styleB, ci) == -1) { + return false; + } + } + return true; + }, + /** + * 检查节点node是否为block元素 + * @method isBlockElm + * @param { Node } node 需要检测的节点对象 + * @return { Boolean } 是否是block元素节点 + * @warning 该方法的判断规则如下: 如果该元素原本是block元素, 则不论该元素当前的css样式是什么都会返回true; + * 否则,检测该元素的css样式, 如果该元素当前是block元素, 则返回true。 其余情况下都返回false。 + * @example + * ```html + * + * + *
    + * + * + * ``` + */ + isBlockElm: function(node) { + return ( + node.nodeType == 1 && + (dtd.$block[node.tagName] || + styleBlock[domUtils.getComputedStyle(node, "display")]) && + !dtd.$nonChild[node.tagName] + ); + }, + /** + * 检测node节点是否为body节点 + * @method isBody + * @param { Element } node 需要检测的dom元素 + * @return { Boolean } 给定的元素是否是body元素 + * @example + * ```javascript + * //output: true + * console.log( UE.dom.domUtils.isBody( document.body ) ); + * ``` + */ + isBody: function(node) { + return node && node.nodeType == 1 && node.tagName.toLowerCase() == "body"; + }, + /** + * 以node节点为分界,将该节点的指定祖先节点parent拆分成两个独立的节点, + * 拆分形成的两个节点之间是node节点 + * @method breakParent + * @param { Node } node 作为分界的节点对象 + * @param { Node } parent 该节点必须是node节点的祖先节点, 且是block节点。 + * @return { Node } 给定的node分界节点 + * @example + * ```javascript + * + * var node = document.createElement("span"), + * wrapNode = document.createElement( "div" ), + * parent = document.createElement("p"); + * + * parent.appendChild( node ); + * wrapNode.appendChild( parent ); + * + * //拆分前 + * //output:

    + * console.log( wrapNode.innerHTML ); + * + * + * UE.dom.domUtils.breakParent( node, parent ); + * //拆分后 + * //output:

    + * console.log( wrapNode.innerHTML ); + * + * ``` + */ + breakParent: function(node, parent) { + var tmpNode, + parentClone = node, + clone = node, + leftNodes, + rightNodes; + do { + parentClone = parentClone.parentNode; + if (leftNodes) { + tmpNode = parentClone.cloneNode(false); + tmpNode.appendChild(leftNodes); + leftNodes = tmpNode; + tmpNode = parentClone.cloneNode(false); + tmpNode.appendChild(rightNodes); + rightNodes = tmpNode; + } else { + leftNodes = parentClone.cloneNode(false); + rightNodes = leftNodes.cloneNode(false); + } + while ((tmpNode = clone.previousSibling)) { + leftNodes.insertBefore(tmpNode, leftNodes.firstChild); + } + while ((tmpNode = clone.nextSibling)) { + rightNodes.appendChild(tmpNode); + } + clone = parentClone; + } while (parent !== parentClone); + tmpNode = parent.parentNode; + tmpNode.insertBefore(leftNodes, parent); + tmpNode.insertBefore(rightNodes, parent); + tmpNode.insertBefore(node, rightNodes); + domUtils.remove(parent); + return node; + }, + /** + * 检查节点node是否是空inline节点 + * @method isEmptyInlineElement + * @param { Node } node 需要检测的节点对象 + * @return { Number } 如果给定的节点是空的inline节点, 则返回1, 否则返回0。 + * @example + * ```html + * => 1 + * => 1 + * => 1 + * xx => 0 + * ``` + */ + isEmptyInlineElement: function(node) { + if (node.nodeType != 1 || !dtd.$removeEmpty[node.tagName]) { + return 0; + } + node = node.firstChild; + while (node) { + //如果是创建的bookmark就跳过 + if (domUtils.isBookmarkNode(node)) { + return 0; + } + if ( + (node.nodeType == 1 && !domUtils.isEmptyInlineElement(node)) || + (node.nodeType == 3 && !domUtils.isWhitespace(node)) + ) { + return 0; + } + node = node.nextSibling; + } + return 1; + }, + + /** + * 删除node节点下首尾两端的空白文本子节点 + * @method trimWhiteTextNode + * @param { Element } node 需要执行删除操作的元素对象 + * @example + * ```javascript + * var node = document.createElement("div"); + * + * node.appendChild( document.createTextNode( "" ) ); + * + * node.appendChild( document.createElement("div") ); + * + * node.appendChild( document.createTextNode( "" ) ); + * + * //3 + * console.log( node.childNodes.length ); + * + * UE.dom.domUtils.trimWhiteTextNode( node ); + * + * //1 + * console.log( node.childNodes.length ); + * ``` + */ + trimWhiteTextNode: function(node) { + function remove(dir) { + var child; + while ( + (child = node[dir]) && + child.nodeType == 3 && + domUtils.isWhitespace(child) + ) { + node.removeChild(child); + } + } + remove("firstChild"); + remove("lastChild"); + }, + + /** + * 合并node节点下相同的子节点 + * @name mergeChild + * @desc + * UE.dom.domUtils.mergeChild(node,tagName) //tagName要合并的子节点的标签 + * @example + *

    xxaaxx

    + * ==> UE.dom.domUtils.mergeChild(node,'span') + *

    xxaaxx

    + */ + mergeChild: function(node, tagName, attrs) { + var list = domUtils.getElementsByTagName(node, node.tagName.toLowerCase()); + for (var i = 0, ci; (ci = list[i++]); ) { + if (!ci.parentNode || domUtils.isBookmarkNode(ci)) { + continue; + } + //span单独处理 + if (ci.tagName.toLowerCase() == "span") { + if (node === ci.parentNode) { + domUtils.trimWhiteTextNode(node); + if (node.childNodes.length == 1) { + node.style.cssText = ci.style.cssText + ";" + node.style.cssText; + domUtils.remove(ci, true); + continue; + } + } + ci.style.cssText = node.style.cssText + ";" + ci.style.cssText; + if (attrs) { + var style = attrs.style; + if (style) { + style = style.split(";"); + for (var j = 0, s; (s = style[j++]); ) { + ci.style[utils.cssStyleToDomStyle(s.split(":")[0])] = s.split( + ":" + )[1]; + } + } + } + if (domUtils.isSameStyle(ci, node)) { + domUtils.remove(ci, true); + } + continue; + } + if (domUtils.isSameElement(node, ci)) { + domUtils.remove(ci, true); + } + } + }, + + /** + * 原生方法getElementsByTagName的封装 + * @method getElementsByTagName + * @param { Node } node 目标节点对象 + * @param { String } tagName 需要查找的节点的tagName, 多个tagName以空格分割 + * @return { Array } 符合条件的节点集合 + */ + getElementsByTagName: function(node, name, filter) { + if (filter && utils.isString(filter)) { + var className = filter; + filter = function(node) { + return domUtils.hasClass(node, className); + }; + } + name = utils.trim(name).replace(/[ ]{2,}/g, " ").split(" "); + var arr = []; + for (var n = 0, ni; (ni = name[n++]); ) { + var list = node.getElementsByTagName(ni); + for (var i = 0, ci; (ci = list[i++]); ) { + if (!filter || filter(ci)) arr.push(ci); + } + } + + return arr; + }, + /** + * 将节点node提取到父节点上 + * @method mergeToParent + * @param { Element } node 需要提取的元素对象 + * @example + * ```html + *
    + *
    + * + *
    + *
    + * + * + * ``` + */ + mergeToParent: function(node) { + var parent = node.parentNode; + while (parent && dtd.$removeEmpty[parent.tagName]) { + if (parent.tagName == node.tagName || parent.tagName == "A") { + //针对a标签单独处理 + domUtils.trimWhiteTextNode(parent); + //span需要特殊处理 不处理这样的情况 xxxxxxxxx + if ( + (parent.tagName == "SPAN" && !domUtils.isSameStyle(parent, node)) || + (parent.tagName == "A" && node.tagName == "SPAN") + ) { + if (parent.childNodes.length > 1 || parent !== node.parentNode) { + node.style.cssText = + parent.style.cssText + ";" + node.style.cssText; + parent = parent.parentNode; + continue; + } else { + parent.style.cssText += ";" + node.style.cssText; + //trace:952 a标签要保持下划线 + if (parent.tagName == "A") { + parent.style.textDecoration = "underline"; + } + } + } + if (parent.tagName != "A") { + parent === node.parentNode && domUtils.remove(node, true); + break; + } + } + parent = parent.parentNode; + } + }, + /** + * 合并节点node的左右兄弟节点 + * @method mergeSibling + * @param { Element } node 需要合并的目标节点 + * @example + * ```html + * xxxxoooxxxx + * + * + * ``` + */ + + /** + * 合并节点node的左右兄弟节点, 可以根据给定的条件选择是否忽略合并左节点。 + * @method mergeSibling + * @param { Element } node 需要合并的目标节点 + * @param { Boolean } ignorePre 是否忽略合并左节点 + * @example + * ```html + * xxxxoooxxxx + * + * + * ``` + */ + + /** + * 合并节点node的左右兄弟节点,可以根据给定的条件选择是否忽略合并左右节点。 + * @method mergeSibling + * @param { Element } node 需要合并的目标节点 + * @param { Boolean } ignorePre 是否忽略合并左节点 + * @param { Boolean } ignoreNext 是否忽略合并右节点 + * @remind 如果同时忽略左右节点, 则该操作什么也不会做 + * @example + * ```html + * xxxxoooxxxx + * + * + * ``` + */ + mergeSibling: function(node, ignorePre, ignoreNext) { + function merge(rtl, start, node) { + var next; + if ( + (next = node[rtl]) && + !domUtils.isBookmarkNode(next) && + next.nodeType == 1 && + domUtils.isSameElement(node, next) + ) { + while (next.firstChild) { + if (start == "firstChild") { + node.insertBefore(next.lastChild, node.firstChild); + } else { + node.appendChild(next.firstChild); + } + } + domUtils.remove(next); + } + } + !ignorePre && merge("previousSibling", "firstChild", node); + !ignoreNext && merge("nextSibling", "lastChild", node); + }, + + /** + * 设置节点node及其子节点不会被选中 + * @method unSelectable + * @param { Element } node 需要执行操作的dom元素 + * @remind 执行该操作后的节点, 将不能被鼠标选中 + * @example + * ```javascript + * UE.dom.domUtils.unSelectable( document.body ); + * ``` + */ + unSelectable: (ie && browser.ie9below) || browser.opera + ? function(node) { + //for ie9 + node.onselectstart = function() { + return false; + }; + node.onclick = node.onkeyup = node.onkeydown = function() { + return false; + }; + node.unselectable = "on"; + node.setAttribute("unselectable", "on"); + for (var i = 0, ci; (ci = node.all[i++]); ) { + switch (ci.tagName.toLowerCase()) { + case "iframe": + case "textarea": + case "input": + case "select": + break; + default: + ci.unselectable = "on"; + node.setAttribute("unselectable", "on"); + } + } + } + : function(node) { + node.style.MozUserSelect = node.style.webkitUserSelect = node.style.msUserSelect = node.style.KhtmlUserSelect = + "none"; + }, + /** + * 删除节点node上的指定属性名称的属性 + * @method removeAttributes + * @param { Node } node 需要删除属性的节点对象 + * @param { String } attrNames 可以是空格隔开的多个属性名称,该操作将会依次删除相应的属性 + * @example + * ```html + *
    + * xxxxx + *
    + * + * + * ``` + */ + + /** + * 删除节点node上的指定属性名称的属性 + * @method removeAttributes + * @param { Node } node 需要删除属性的节点对象 + * @param { Array } attrNames 需要删除的属性名数组 + * @example + * ```html + *
    + * xxxxx + *
    + * + * + * ``` + */ + removeAttributes: function(node, attrNames) { + attrNames = utils.isArray(attrNames) + ? attrNames + : utils.trim(attrNames).replace(/[ ]{2,}/g, " ").split(" "); + for (var i = 0, ci; (ci = attrNames[i++]); ) { + ci = attrFix[ci] || ci; + switch (ci) { + case "className": + node[ci] = ""; + break; + case "style": + node.style.cssText = ""; + var val = node.getAttributeNode("style"); + !browser.ie && val && node.removeAttributeNode(val); + } + node.removeAttribute(ci); + } + }, + /** + * 在doc下创建一个标签名为tag,属性为attrs的元素 + * @method createElement + * @param { DomDocument } doc 新创建的元素属于该document节点创建 + * @param { String } tagName 需要创建的元素的标签名 + * @param { Object } attrs 新创建的元素的属性key-value集合 + * @return { Element } 新创建的元素对象 + * @example + * ```javascript + * var ele = UE.dom.domUtils.createElement( document, 'div', { + * id: 'test' + * } ); + * + * //output: DIV + * console.log( ele.tagName ); + * + * //output: test + * console.log( ele.id ); + * + * ``` + */ + createElement: function(doc, tag, attrs) { + return domUtils.setAttributes(doc.createElement(tag), attrs); + }, + /** + * 为节点node添加属性attrs,attrs为属性键值对 + * @method setAttributes + * @param { Element } node 需要设置属性的元素对象 + * @param { Object } attrs 需要设置的属性名-值对 + * @return { Element } 设置属性的元素对象 + * @example + * ```html + * + * + * + * + */ + setAttributes: function(node, attrs) { + for (var attr in attrs) { + if('_propertyDelete'===attr){ + for(var j=0;j + * #test { + * font-size: 15px; + * } + * + * + * + * + * + * ``` + */ + getComputedStyle: function(element, styleName) { + //一下的属性单独处理 + var pros = "width height top left"; + + if (pros.indexOf(styleName) > -1) { + return ( + element[ + "offset" + + styleName.replace(/^\w/, function(s) { + return s.toUpperCase(); + }) + ] + "px" + ); + } + //忽略文本节点 + if (element.nodeType == 3) { + element = element.parentNode; + } + //ie下font-size若body下定义了font-size,则从currentStyle里会取到这个font-size. 取不到实际值,故此修改. + if ( + browser.ie && + browser.version < 9 && + styleName == "font-size" && + !element.style.fontSize && + !dtd.$empty[element.tagName] && + !dtd.$nonChild[element.tagName] + ) { + var span = element.ownerDocument.createElement("span"); + span.style.cssText = "padding:0;border:0;font-family:simsun;"; + span.innerHTML = "."; + element.appendChild(span); + var result = span.offsetHeight; + element.removeChild(span); + span = null; + return result + "px"; + } + try { + var value = + domUtils.getStyle(element, styleName) || + (window.getComputedStyle + ? domUtils + .getWindow(element) + .getComputedStyle(element, "") + .getPropertyValue(styleName) + : (element.currentStyle || element.style)[ + utils.cssStyleToDomStyle(styleName) + ]); + } catch (e) { + return ""; + } + return utils.transUnitToPx(utils.fixColor(styleName, value)); + }, + /** + * 删除元素element指定的className + * @method removeClasses + * @param { Element } ele 需要删除class的元素节点 + * @param { String } classNames 需要删除的className, 多个className之间以空格分开 + * @example + * ```html + * xxx + * + * + * ``` + */ + + /** + * 删除元素element指定的className + * @method removeClasses + * @param { Element } ele 需要删除class的元素节点 + * @param { Array } classNames 需要删除的className数组 + * @example + * ```html + * xxx + * + * + * ``` + */ + removeClasses: function(elm, classNames) { + classNames = utils.isArray(classNames) + ? classNames + : utils.trim(classNames).replace(/[ ]{2,}/g, " ").split(" "); + for (var i = 0, ci, cls = elm.className; (ci = classNames[i++]); ) { + cls = cls.replace(new RegExp("\\b" + ci + "\\b"), ""); + } + cls = utils.trim(cls).replace(/[ ]{2,}/g, " "); + if (cls) { + elm.className = cls; + } else { + domUtils.removeAttributes(elm, ["class"]); + } + }, + /** + * 给元素element添加className + * @method addClass + * @param { Node } ele 需要增加className的元素 + * @param { String } classNames 需要添加的className, 多个className之间以空格分割 + * @remind 相同的类名不会被重复添加 + * @example + * ```html + * + * + * + * ``` + */ + + /** + * 判断元素element是否包含给定的样式类名className + * @method hasClass + * @param { Node } ele 需要检测的元素 + * @param { Array } classNames 需要检测的className数组 + * @return { Boolean } 元素是否包含所有给定的className + * @example + * ```html + * + * + * + * ``` + */ + hasClass: function(element, className) { + if (utils.isRegExp(className)) { + return className.test(element.className); + } + className = utils.trim(className).replace(/[ ]{2,}/g, " ").split(" "); + for (var i = 0, ci, cls = element.className; (ci = className[i++]); ) { + if (!new RegExp("\\b" + ci + "\\b", "i").test(cls)) { + return false; + } + } + return i - 1 == className.length; + }, + + /** + * 阻止事件默认行为 + * @method preventDefault + * @param { Event } evt 需要阻止默认行为的事件对象 + * @example + * ```javascript + * UE.dom.domUtils.preventDefault( evt ); + * ``` + */ + preventDefault: function(evt) { + evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); + }, + /** + * 删除元素element指定的样式 + * @method removeStyle + * @param { Element } element 需要删除样式的元素 + * @param { String } styleName 需要删除的样式名 + * @example + * ```html + * + * + * + * ``` + */ + removeStyle: function(element, name) { + if (browser.ie) { + //针对color先单独处理一下 + if (name == "color") { + name = "(^|;)" + name; + } + element.style.cssText = element.style.cssText.replace( + new RegExp(name + "[^:]*:[^;]+;?", "ig"), + "" + ); + } else { + if (element.style.removeProperty) { + element.style.removeProperty(name); + } else { + element.style.removeAttribute(utils.cssStyleToDomStyle(name)); + } + } + + if (!element.style.cssText) { + domUtils.removeAttributes(element, ["style"]); + } + }, + /** + * 获取元素element的style属性的指定值 + * @method getStyle + * @param { Element } element 需要获取属性值的元素 + * @param { String } styleName 需要获取的style的名称 + * @warning 该方法仅获取元素style属性中所标明的值 + * @return { String } 该元素包含指定的style属性值 + * @example + * ```html + *
    + * + * + * ``` + */ + getStyle: function(element, name) { + var value = element.style[utils.cssStyleToDomStyle(name)]; + return utils.fixColor(name, value); + }, + /** + * 为元素element设置样式属性值 + * @method setStyle + * @param { Element } element 需要设置样式的元素 + * @param { String } styleName 样式名 + * @param { String } styleValue 样式值 + * @example + * ```html + *
    + * + * + * ``` + */ + setStyle: function(element, name, value) { + element.style[utils.cssStyleToDomStyle(name)] = value; + if (!utils.trim(element.style.cssText)) { + this.removeAttributes(element, "style"); + } + }, + /** + * 为元素element设置多个样式属性值 + * @method setStyles + * @param { Element } element 需要设置样式的元素 + * @param { Object } styles 样式名值对 + * @example + * ```html + *
    + * + * + * ``` + */ + setStyles: function(element, styles) { + for (var name in styles) { + if (styles.hasOwnProperty(name)) { + domUtils.setStyle(element, name, styles[name]); + } + } + }, + /** + * 删除_moz_dirty属性 + * @private + * @method removeDirtyAttr + */ + removeDirtyAttr: function(node) { + for ( + var i = 0, ci, nodes = node.getElementsByTagName("*"); + (ci = nodes[i++]); + + ) { + ci.removeAttribute("_moz_dirty"); + } + node.removeAttribute("_moz_dirty"); + }, + /** + * 获取子节点的数量 + * @method getChildCount + * @param { Element } node 需要检测的元素 + * @return { Number } 给定的node元素的子节点数量 + * @example + * ```html + *
    + * + *
    + * + * + * ``` + */ + + /** + * 根据给定的过滤规则, 获取符合条件的子节点的数量 + * @method getChildCount + * @param { Element } node 需要检测的元素 + * @param { Function } fn 过滤器, 要求对符合条件的子节点返回true, 反之则要求返回false + * @return { Number } 符合过滤条件的node元素的子节点数量 + * @example + * ```html + *
    + * + *
    + * + * + * ``` + */ + getChildCount: function(node, fn) { + var count = 0, + first = node.firstChild; + fn = + fn || + function() { + return 1; + }; + while (first) { + if (fn(first)) { + count++; + } + first = first.nextSibling; + } + return count; + }, + + /** + * 判断给定节点是否为空节点 + * @method isEmptyNode + * @param { Node } node 需要检测的节点对象 + * @return { Boolean } 节点是否为空 + * @example + * ```javascript + * UE.dom.domUtils.isEmptyNode( document.body ); + * ``` + */ + isEmptyNode: function(node) { + return ( + !node.firstChild || + domUtils.getChildCount(node, function(node) { + return ( + !domUtils.isBr(node) && + !domUtils.isBookmarkNode(node) && + !domUtils.isWhitespace(node) + ); + }) == 0 + ); + }, + clearSelectedArr: function(nodes) { + var node; + while ((node = nodes.pop())) { + domUtils.removeAttributes(node, ["class"]); + } + }, + /** + * 将显示区域滚动到指定节点的位置 + * @method scrollToView + * @param {Node} node 节点 + * @param {window} win window对象 + * @param {Number} offsetTop 距离上方的偏移量 + */ + scrollToView: function(node, win, offsetTop) { + var getViewPaneSize = function() { + var doc = win.document, + mode = doc.compatMode == "CSS1Compat"; + return { + width: + (mode ? doc.documentElement.clientWidth : doc.body.clientWidth) || 0, + height: + (mode ? doc.documentElement.clientHeight : doc.body.clientHeight) || 0 + }; + }, + getScrollPosition = function(win) { + if ("pageXOffset" in win) { + return { + x: win.pageXOffset || 0, + y: win.pageYOffset || 0 + }; + } else { + var doc = win.document; + return { + x: doc.documentElement.scrollLeft || doc.body.scrollLeft || 0, + y: doc.documentElement.scrollTop || doc.body.scrollTop || 0 + }; + } + }; + var winHeight = getViewPaneSize().height, + offset = winHeight * -1 + offsetTop; + offset += node.offsetHeight || 0; + var elementPosition = domUtils.getXY(node); + offset += elementPosition.y; + var currentScroll = getScrollPosition(win).y; + // offset += 50; + if (offset > currentScroll || offset < currentScroll - winHeight) { + win.scrollTo(0, offset + (offset < 0 ? -20 : 20)); + } + }, + /** + * 判断给定节点是否为br + * @method isBr + * @param { Node } node 需要判断的节点对象 + * @return { Boolean } 给定的节点是否是br节点 + */ + isBr: function(node) { + return node.nodeType == 1 && node.tagName == "BR"; + }, + /** + * 判断给定的节点是否是一个“填充”节点 + * @private + * @method isFillChar + * @param { Node } node 需要判断的节点 + * @param { Boolean } isInStart 是否从节点内容的开始位置匹配 + * @returns { Boolean } 节点是否是填充节点 + */ + isFillChar: function(node, isInStart) { + if (node.nodeType != 3) return false; + var text = node.nodeValue; + if (isInStart) { + return new RegExp("^" + domUtils.fillChar).test(text); + } + return !text.replace(new RegExp(domUtils.fillChar, "g"), "").length; + }, + isStartInblock: function(range) { + var tmpRange = range.cloneRange(), + flag = 0, + start = tmpRange.startContainer, + tmp; + if (start.nodeType == 1 && start.childNodes[tmpRange.startOffset]) { + start = start.childNodes[tmpRange.startOffset]; + var pre = start.previousSibling; + while (pre && domUtils.isFillChar(pre)) { + start = pre; + pre = pre.previousSibling; + } + } + if (this.isFillChar(start, true) && tmpRange.startOffset == 1) { + tmpRange.setStartBefore(start); + start = tmpRange.startContainer; + } + + while (start && domUtils.isFillChar(start)) { + tmp = start; + start = start.previousSibling; + } + if (tmp) { + tmpRange.setStartBefore(tmp); + start = tmpRange.startContainer; + } + if ( + start.nodeType == 1 && + domUtils.isEmptyNode(start) && + tmpRange.startOffset == 1 + ) { + tmpRange.setStart(start, 0).collapse(true); + } + while (!tmpRange.startOffset) { + start = tmpRange.startContainer; + if (domUtils.isBlockElm(start) || domUtils.isBody(start)) { + flag = 1; + break; + } + var pre = tmpRange.startContainer.previousSibling, + tmpNode; + if (!pre) { + tmpRange.setStartBefore(tmpRange.startContainer); + } else { + while (pre && domUtils.isFillChar(pre)) { + tmpNode = pre; + pre = pre.previousSibling; + } + if (tmpNode) { + tmpRange.setStartBefore(tmpNode); + } else { + tmpRange.setStartBefore(tmpRange.startContainer); + } + } + } + return flag && !domUtils.isBody(tmpRange.startContainer) ? 1 : 0; + }, + + /** + * 判断给定的元素是否是一个空元素 + * @method isEmptyBlock + * @param { Element } node 需要判断的元素 + * @return { Boolean } 是否是空元素 + * @example + * ```html + *
    + * + * + * ``` + */ + + /** + * 根据指定的判断规则判断给定的元素是否是一个空元素 + * @method isEmptyBlock + * @param { Element } node 需要判断的元素 + * @param { RegExp } reg 对内容执行判断的正则表达式对象 + * @return { Boolean } 是否是空元素 + */ + isEmptyBlock: function(node, reg) { + if (node.nodeType != 1) return 0; + reg = reg || new RegExp("[ \xa0\t\r\n" + domUtils.fillChar + "]", "g"); + + if ( + node[browser.ie ? "innerText" : "textContent"].replace(reg, "").length > 0 + ) { + return 0; + } + for (var n in dtd.$isNotEmpty) { + if (node.getElementsByTagName(n).length) { + return 0; + } + } + return 1; + }, + + /** + * 移动元素使得该元素的位置移动指定的偏移量的距离 + * @method setViewportOffset + * @param { Element } element 需要设置偏移量的元素 + * @param { Object } offset 偏移量, 形如{ left: 100, top: 50 }的一个键值对, 表示该元素将在 + * 现有的位置上向水平方向偏移offset.left的距离, 在竖直方向上偏移 + * offset.top的距离 + * @example + * ```html + *
    + * + * + * ``` + */ + setViewportOffset: function(element, offset) { + var left = parseInt(element.style.left) | 0; + var top = parseInt(element.style.top) | 0; + var rect = element.getBoundingClientRect(); + var offsetLeft = offset.left - rect.left; + var offsetTop = offset.top - rect.top; + if (offsetLeft) { + element.style.left = left + offsetLeft + "px"; + } + if (offsetTop) { + element.style.top = top + offsetTop + "px"; + } + }, + + /** + * 用“填充字符”填充节点 + * @method fillNode + * @private + * @param { DomDocument } doc 填充的节点所在的docment对象 + * @param { Node } node 需要填充的节点对象 + * @example + * ```html + *
    + * + * + * ``` + */ + fillNode: function(doc, node) { + var tmpNode = browser.ie + ? doc.createTextNode(domUtils.fillChar) + : doc.createElement("br"); + node.innerHTML = ""; + node.appendChild(tmpNode); + }, + + /** + * 把节点src的所有子节点追加到另一个节点tag上去 + * @method moveChild + * @param { Node } src 源节点, 该节点下的所有子节点将被移除 + * @param { Node } tag 目标节点, 从源节点移除的子节点将被追加到该节点下 + * @example + * ```html + *
    + * + *
    + *
    + *
    + *
    + * + * + * ``` + */ + + /** + * 把节点src的所有子节点移动到另一个节点tag上去, 可以通过dir参数控制附加的行为是“追加”还是“插入顶部” + * @method moveChild + * @param { Node } src 源节点, 该节点下的所有子节点将被移除 + * @param { Node } tag 目标节点, 从源节点移除的子节点将被附加到该节点下 + * @param { Boolean } dir 附加方式, 如果为true, 则附加进去的节点将被放到目标节点的顶部, 反之,则放到末尾 + * @example + * ```html + *
    + * + *
    + *
    + *
    + *
    + * + * + * ``` + */ + moveChild: function(src, tag, dir) { + while (src.firstChild) { + if (dir && tag.firstChild) { + tag.insertBefore(src.lastChild, tag.firstChild); + } else { + tag.appendChild(src.firstChild); + } + } + }, + + /** + * 判断节点的标签上是否不存在任何属性 + * @method hasNoAttributes + * @private + * @param { Node } node 需要检测的节点对象 + * @return { Boolean } 节点是否不包含任何属性 + * @example + * ```html + *
    xxxx
    + * + * + * ``` + */ + hasNoAttributes: function(node) { + return browser.ie + ? /^<\w+\s*?>/.test(node.outerHTML) + : node.attributes.length == 0; + }, + + /** + * 检测节点是否是UEditor所使用的辅助节点 + * @method isCustomeNode + * @private + * @param { Node } node 需要检测的节点 + * @remind 辅助节点是指编辑器要完成工作临时添加的节点, 在输出的时候将会从编辑器内移除, 不会影响最终的结果。 + * @return { Boolean } 给定的节点是否是一个辅助节点 + */ + isCustomeNode: function(node) { + return node.nodeType == 1 && node.getAttribute("_ue_custom_node_"); + }, + + /** + * 检测节点的标签是否是给定的标签 + * @method isTagNode + * @param { Node } node 需要检测的节点对象 + * @param { String } tagName 标签 + * @return { Boolean } 节点的标签是否是给定的标签 + * @example + * ```html + *
    + * + * + * ``` + */ + isTagNode: function(node, tagNames) { + return ( + node.nodeType == 1 && + new RegExp("\\b" + node.tagName + "\\b", "i").test(tagNames) + ); + }, + + /** + * 给定一个节点数组,在通过指定的过滤器过滤后, 获取其中满足过滤条件的第一个节点 + * @method filterNodeList + * @param { Array } nodeList 需要过滤的节点数组 + * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false + * @return { Node | NULL } 如果找到符合过滤条件的节点, 则返回该节点, 否则返回NULL + * @example + * ```javascript + * var divNodes = document.getElementsByTagName("div"); + * divNodes = [].slice.call( divNodes, 0 ); + * + * //output: null + * console.log( UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { + * return node.tagName.toLowerCase() !== 'div'; + * } ) ); + * ``` + */ + + /** + * 给定一个节点数组nodeList和一组标签名tagNames, 获取其中能够匹配标签名的节点集合中的第一个节点 + * @method filterNodeList + * @param { Array } nodeList 需要过滤的节点数组 + * @param { String } tagNames 需要匹配的标签名, 多个标签名之间用空格分割 + * @return { Node | NULL } 如果找到标签名匹配的节点, 则返回该节点, 否则返回NULL + * @example + * ```javascript + * var divNodes = document.getElementsByTagName("div"); + * divNodes = [].slice.call( divNodes, 0 ); + * + * //output: null + * console.log( UE.dom.domUtils.filterNodeList( divNodes, 'a span' ) ); + * ``` + */ + + /** + * 给定一个节点数组,在通过指定的过滤器过滤后, 如果参数forAll为true, 则会返回所有满足过滤 + * 条件的节点集合, 否则, 返回满足条件的节点集合中的第一个节点 + * @method filterNodeList + * @param { Array } nodeList 需要过滤的节点数组 + * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false + * @param { Boolean } forAll 是否返回整个节点数组, 如果该参数为false, 则返回节点集合中的第一个节点 + * @return { Array | Node | NULL } 如果找到符合过滤条件的节点, 则根据参数forAll的值决定返回满足 + * 过滤条件的节点数组或第一个节点, 否则返回NULL + * @example + * ```javascript + * var divNodes = document.getElementsByTagName("div"); + * divNodes = [].slice.call( divNodes, 0 ); + * + * //output: 3(假定有3个div) + * console.log( divNodes.length ); + * + * var nodes = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { + * return node.tagName.toLowerCase() === 'div'; + * }, true ); + * + * //output: 3 + * console.log( nodes.length ); + * + * var node = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { + * return node.tagName.toLowerCase() === 'div'; + * }, false ); + * + * //output: div + * console.log( node.nodeName ); + * ``` + */ + filterNodeList: function(nodelist, filter, forAll) { + var results = []; + if (!utils.isFunction(filter)) { + var str = filter; + filter = function(n) { + return ( + utils.indexOf( + utils.isArray(str) ? str : str.split(" "), + n.tagName.toLowerCase() + ) != -1 + ); + }; + } + utils.each(nodelist, function(n) { + filter(n) && results.push(n); + }); + return results.length == 0 + ? null + : results.length == 1 || !forAll ? results[0] : results; + }, + + /** + * 查询给定的range选区是否在给定的node节点内,且在该节点的最末尾 + * @method isInNodeEndBoundary + * @param { UE.dom.Range } rng 需要判断的range对象, 该对象的startContainer不能为NULL + * @param node 需要检测的节点对象 + * @return { Number } 如果给定的选取range对象是在node内部的最末端, 则返回1, 否则返回0 + */ + isInNodeEndBoundary: function(rng, node) { + var start = rng.startContainer; + if (start.nodeType == 3 && rng.startOffset != start.nodeValue.length) { + return 0; + } + if (start.nodeType == 1 && rng.startOffset != start.childNodes.length) { + return 0; + } + while (start !== node) { + if (start.nextSibling) { + return 0; + } + start = start.parentNode; + } + return 1; + }, + isBoundaryNode: function(node, dir) { + var tmp; + while (!domUtils.isBody(node)) { + tmp = node; + node = node.parentNode; + if (tmp !== node[dir]) { + return false; + } + } + return true; + }, + fillHtml: browser.ie11below ? " " : "
    " +}); +var fillCharReg = new RegExp(domUtils.fillChar, "g"); + + +// core/Range.js +/** + * Range封装 + * @file + * @module UE.dom + * @class Range + * @since 1.2.6.1 + */ + +/** + * dom操作封装 + * @unfile + * @module UE.dom + */ + +/** + * Range实现类,本类是UEditor底层核心类,封装不同浏览器之间的Range操作。 + * @unfile + * @module UE.dom + * @class Range + */ + +(function() { + var guid = 0, + fillChar = domUtils.fillChar, + fillData; + + /** + * 更新range的collapse状态 + * @param {Range} range range对象 + */ + function updateCollapse(range) { + range.collapsed = + range.startContainer && + range.endContainer && + range.startContainer === range.endContainer && + range.startOffset == range.endOffset; + } + + function selectOneNode(rng) { + return ( + !rng.collapsed && + rng.startContainer.nodeType == 1 && + rng.startContainer === rng.endContainer && + rng.endOffset - rng.startOffset == 1 + ); + } + function setEndPoint(toStart, node, offset, range) { + //如果node是自闭合标签要处理 + if ( + node.nodeType == 1 && + (dtd.$empty[node.tagName] || dtd.$nonChild[node.tagName]) + ) { + offset = domUtils.getNodeIndex(node) + (toStart ? 0 : 1); + node = node.parentNode; + } + if (toStart) { + range.startContainer = node; + range.startOffset = offset; + if (!range.endContainer) { + range.collapse(true); + } + } else { + range.endContainer = node; + range.endOffset = offset; + if (!range.startContainer) { + range.collapse(false); + } + } + updateCollapse(range); + return range; + } + + function execContentsAction(range, action) { + //调整边界 + //range.includeBookmark(); + var start = range.startContainer, + end = range.endContainer, + startOffset = range.startOffset, + endOffset = range.endOffset, + doc = range.document, + frag = doc.createDocumentFragment(), + tmpStart, + tmpEnd; + if (start.nodeType == 1) { + start = + start.childNodes[startOffset] || + (tmpStart = start.appendChild(doc.createTextNode(""))); + } + if (end.nodeType == 1) { + end = + end.childNodes[endOffset] || + (tmpEnd = end.appendChild(doc.createTextNode(""))); + } + if (start === end && start.nodeType == 3) { + frag.appendChild( + doc.createTextNode( + start.substringData(startOffset, endOffset - startOffset) + ) + ); + //is not clone + if (action) { + start.deleteData(startOffset, endOffset - startOffset); + range.collapse(true); + } + return frag; + } + var current, + currentLevel, + clone = frag, + startParents = domUtils.findParents(start, true), + endParents = domUtils.findParents(end, true); + for (var i = 0; startParents[i] == endParents[i]; ) { + i++; + } + for (var j = i, si; (si = startParents[j]); j++) { + current = si.nextSibling; + if (si == start) { + if (!tmpStart) { + if (range.startContainer.nodeType == 3) { + clone.appendChild( + doc.createTextNode(start.nodeValue.slice(startOffset)) + ); + //is not clone + if (action) { + start.deleteData( + startOffset, + start.nodeValue.length - startOffset + ); + } + } else { + clone.appendChild(!action ? start.cloneNode(true) : start); + } + } + } else { + currentLevel = si.cloneNode(false); + clone.appendChild(currentLevel); + } + while (current) { + if (current === end || current === endParents[j]) { + break; + } + si = current.nextSibling; + clone.appendChild(!action ? current.cloneNode(true) : current); + current = si; + } + clone = currentLevel; + } + clone = frag; + if (!startParents[i]) { + clone.appendChild(startParents[i - 1].cloneNode(false)); + clone = clone.firstChild; + } + for (var j = i, ei; (ei = endParents[j]); j++) { + current = ei.previousSibling; + if (ei == end) { + if (!tmpEnd && range.endContainer.nodeType == 3) { + clone.appendChild( + doc.createTextNode(end.substringData(0, endOffset)) + ); + //is not clone + if (action) { + end.deleteData(0, endOffset); + } + } + } else { + currentLevel = ei.cloneNode(false); + clone.appendChild(currentLevel); + } + //如果两端同级,右边第一次已经被开始做了 + if (j != i || !startParents[i]) { + while (current) { + if (current === start) { + break; + } + ei = current.previousSibling; + clone.insertBefore( + !action ? current.cloneNode(true) : current, + clone.firstChild + ); + current = ei; + } + } + clone = currentLevel; + } + if (action) { + range + .setStartBefore( + !endParents[i] + ? endParents[i - 1] + : !startParents[i] ? startParents[i - 1] : endParents[i] + ) + .collapse(true); + } + tmpStart && domUtils.remove(tmpStart); + tmpEnd && domUtils.remove(tmpEnd); + return frag; + } + + /** + * 创建一个跟document绑定的空的Range实例 + * @constructor + * @param { Document } document 新建的选区所属的文档对象 + */ + + /** + * @property { Node } startContainer 当前Range的开始边界的容器节点, 可以是一个元素节点或者是文本节点 + */ + + /** + * @property { Node } startOffset 当前Range的开始边界容器节点的偏移量, 如果是元素节点, + * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符 + */ + + /** + * @property { Node } endContainer 当前Range的结束边界的容器节点, 可以是一个元素节点或者是文本节点 + */ + + /** + * @property { Node } endOffset 当前Range的结束边界容器节点的偏移量, 如果是元素节点, + * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符 + */ + + /** + * @property { Boolean } collapsed 当前Range是否闭合 + * @default true + * @remind Range是闭合的时候, startContainer === endContainer && startOffset === endOffset + */ + + /** + * @property { Document } document 当前Range所属的Document对象 + * @remind 不同range的的document属性可以是不同的 + */ + var Range = (dom.Range = function(document) { + var me = this; + me.startContainer = me.startOffset = me.endContainer = me.endOffset = null; + me.document = document; + me.collapsed = true; + }); + + /** + * 删除fillData + * @param doc + * @param excludeNode + */ + function removeFillData(doc, excludeNode) { + try { + if (fillData && domUtils.inDoc(fillData, doc)) { + if (!fillData.nodeValue.replace(fillCharReg, "").length) { + var tmpNode = fillData.parentNode; + domUtils.remove(fillData); + while ( + tmpNode && + domUtils.isEmptyInlineElement(tmpNode) && + //safari的contains有bug + (browser.safari + ? !( + domUtils.getPosition(tmpNode, excludeNode) & + domUtils.POSITION_CONTAINS + ) + : !tmpNode.contains(excludeNode)) + ) { + fillData = tmpNode.parentNode; + domUtils.remove(tmpNode); + tmpNode = fillData; + } + } else { + fillData.nodeValue = fillData.nodeValue.replace(fillCharReg, ""); + } + } + } catch (e) {} + } + + /** + * @param node + * @param dir + */ + function mergeSibling(node, dir) { + var tmpNode; + node = node[dir]; + while (node && domUtils.isFillChar(node)) { + tmpNode = node[dir]; + domUtils.remove(node); + node = tmpNode; + } + } + + Range.prototype = { + /** + * 克隆选区的内容到一个DocumentFragment里 + * @method cloneContents + * @return { DocumentFragment | NULL } 如果选区是闭合的将返回null, 否则, 返回包含所clone内容的DocumentFragment元素 + * @example + * ```html + * + * + * xx[xxx]x + * + * + * + * ``` + */ + cloneContents: function() { + return this.collapsed ? null : execContentsAction(this, 0); + }, + + /** + * 删除当前选区范围中的所有内容 + * @method deleteContents + * @remind 执行完该操作后, 当前Range对象变成了闭合状态 + * @return { UE.dom.Range } 当前操作的Range对象 + * @example + * ```html + * + * + * xx[xxx]x + * + * + * + * ``` + */ + deleteContents: function() { + var txt; + if (!this.collapsed) { + execContentsAction(this, 1); + } + if (browser.webkit) { + txt = this.startContainer; + if (txt.nodeType == 3 && !txt.nodeValue.length) { + this.setStartBefore(txt).collapse(true); + domUtils.remove(txt); + } + } + return this; + }, + + /** + * 将当前选区的内容提取到一个DocumentFragment里 + * @method extractContents + * @remind 执行该操作后, 选区将变成闭合状态 + * @warning 执行该操作后, 原来选区所选中的内容将从dom树上剥离出来 + * @return { DocumentFragment } 返回包含所提取内容的DocumentFragment对象 + * @example + * ```html + * + * + * xx[xxx]x + * + * + * + */ + extractContents: function() { + return this.collapsed ? null : execContentsAction(this, 2); + }, + + /** + * 设置Range的开始容器节点和偏移量 + * @method setStart + * @remind 如果给定的节点是元素节点,那么offset指的是其子元素中索引为offset的元素, + * 如果是文本节点,那么offset指的是其文本内容的第offset个字符 + * @remind 如果提供的容器节点是一个不能包含子元素的节点, 则该选区的开始容器将被设置 + * 为该节点的父节点, 此时, 其距离开始容器的偏移量也变成了该节点在其父节点 + * 中的索引 + * @param { Node } node 将被设为当前选区开始边界容器的节点对象 + * @param { int } offset 选区的开始位置偏移量 + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * xxxxxxxxxxxxx[xxx] + * + * + * ``` + * @example + * ```html + * + * xxx[xx]x + * + * + * ``` + */ + setStart: function(node, offset) { + return setEndPoint(true, node, offset, this); + }, + + /** + * 设置Range的结束容器和偏移量 + * @method setEnd + * @param { Node } node 作为当前选区结束边界容器的节点对象 + * @param { int } offset 结束边界的偏移量 + * @see UE.dom.Range:setStart(Node,int) + * @return { UE.dom.Range } 当前range对象 + */ + setEnd: function(node, offset) { + return setEndPoint(false, node, offset, this); + }, + + /** + * 将Range开始位置设置到node节点之后 + * @method setStartAfter + * @remind 该操作将会把给定节点的父节点作为range的开始容器, 且偏移量是该节点在其父节点中的位置索引+1 + * @param { Node } node 选区的开始边界将紧接着该节点之后 + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * xxxxxxx[xxxx] + * + * + * ``` + */ + setStartAfter: function(node) { + return this.setStart(node.parentNode, domUtils.getNodeIndex(node) + 1); + }, + + /** + * 将Range开始位置设置到node节点之前 + * @method setStartBefore + * @remind 该操作将会把给定节点的父节点作为range的开始容器, 且偏移量是该节点在其父节点中的位置索引 + * @param { Node } node 新的选区开始位置在该节点之前 + * @see UE.dom.Range:setStartAfter(Node) + * @return { UE.dom.Range } 当前range对象 + */ + setStartBefore: function(node) { + return this.setStart(node.parentNode, domUtils.getNodeIndex(node)); + }, + + /** + * 将Range结束位置设置到node节点之后 + * @method setEndAfter + * @remind 该操作将会把给定节点的父节点作为range的结束容器, 且偏移量是该节点在其父节点中的位置索引+1 + * @param { Node } node 目标节点 + * @see UE.dom.Range:setStartAfter(Node) + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * [xxxxxxx]xxxx + * + * + * ``` + */ + setEndAfter: function(node) { + return this.setEnd(node.parentNode, domUtils.getNodeIndex(node) + 1); + }, + + /** + * 将Range结束位置设置到node节点之前 + * @method setEndBefore + * @remind 该操作将会把给定节点的父节点作为range的结束容器, 且偏移量是该节点在其父节点中的位置索引 + * @param { Node } node 目标节点 + * @see UE.dom.Range:setEndAfter(Node) + * @return { UE.dom.Range } 当前range对象 + */ + setEndBefore: function(node) { + return this.setEnd(node.parentNode, domUtils.getNodeIndex(node)); + }, + + /** + * 设置Range的开始位置到node节点内的第一个子节点之前 + * @method setStartAtFirst + * @remind 选区的开始容器将变成给定的节点, 且偏移量为0 + * @remind 如果给定的节点是元素节点, 则该节点必须是允许包含子节点的元素。 + * @param { Node } node 目标节点 + * @see UE.dom.Range:setStartBefore(Node) + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * xxxxx[xx]xxxx + * + * + * ``` + */ + setStartAtFirst: function(node) { + return this.setStart(node, 0); + }, + + /** + * 设置Range的开始位置到node节点内的最后一个节点之后 + * @method setStartAtLast + * @remind 选区的开始容器将变成给定的节点, 且偏移量为该节点的子节点数 + * @remind 如果给定的节点是元素节点, 则该节点必须是允许包含子节点的元素。 + * @param { Node } node 目标节点 + * @see UE.dom.Range:setStartAtFirst(Node) + * @return { UE.dom.Range } 当前range对象 + */ + setStartAtLast: function(node) { + return this.setStart( + node, + node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length + ); + }, + + /** + * 设置Range的结束位置到node节点内的第一个节点之前 + * @method setEndAtFirst + * @param { Node } node 目标节点 + * @remind 选区的结束容器将变成给定的节点, 且偏移量为0 + * @remind node必须是一个元素节点, 且必须是允许包含子节点的元素。 + * @see UE.dom.Range:setStartAtFirst(Node) + * @return { UE.dom.Range } 当前range对象 + */ + setEndAtFirst: function(node) { + return this.setEnd(node, 0); + }, + + /** + * 设置Range的结束位置到node节点内的最后一个节点之后 + * @method setEndAtLast + * @param { Node } node 目标节点 + * @remind 选区的结束容器将变成给定的节点, 且偏移量为该节点的子节点数量 + * @remind node必须是一个元素节点, 且必须是允许包含子节点的元素。 + * @see UE.dom.Range:setStartAtFirst(Node) + * @return { UE.dom.Range } 当前range对象 + */ + setEndAtLast: function(node) { + return this.setEnd( + node, + node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length + ); + }, + + /** + * 选中给定节点 + * @method selectNode + * @remind 此时, 选区的开始容器和结束容器都是该节点的父节点, 其startOffset是该节点在父节点中的位置索引, + * 而endOffset为startOffset+1 + * @param { Node } node 需要选中的节点 + * @return { UE.dom.Range } 当前range对象,此时的range仅包含当前给定的节点对象 + * @example + * ```html + * + * xxxxx[xx]xxxx + * + * + * ``` + */ + selectNode: function(node) { + return this.setStartBefore(node).setEndAfter(node); + }, + + /** + * 选中给定节点内部的所有节点 + * @method selectNodeContents + * @remind 此时, 选区的开始容器和结束容器都是该节点, 其startOffset为0, + * 而endOffset是该节点的子节点数。 + * @param { Node } node 目标节点, 当前range将包含该节点内的所有节点 + * @return { UE.dom.Range } 当前range对象, 此时range仅包含给定节点的所有子节点 + * @example + * ```html + * + * xxxxx[xx]xxxx + * + * + * ``` + */ + selectNodeContents: function(node) { + return this.setStart(node, 0).setEndAtLast(node); + }, + + /** + * clone当前Range对象 + * @method cloneRange + * @remind 返回的range是一个全新的range对象, 其内部所有属性与当前被clone的range相同。 + * @return { UE.dom.Range } 当前range对象的一个副本 + */ + cloneRange: function() { + var me = this; + return new Range(me.document) + .setStart(me.startContainer, me.startOffset) + .setEnd(me.endContainer, me.endOffset); + }, + + /** + * 向当前选区的结束处闭合选区 + * @method collapse + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * xxxxx[xx]xxxx + * + * + * ``` + */ + + /** + * 闭合当前选区,根据给定的toStart参数项决定是向当前选区开始处闭合还是向结束处闭合, + * 如果toStart的值为true,则向开始位置闭合, 反之,向结束位置闭合。 + * @method collapse + * @param { Boolean } toStart 是否向选区开始处闭合 + * @return { UE.dom.Range } 当前range对象,此时range对象处于闭合状态 + * @see UE.dom.Range:collapse() + * @example + * ```html + * + * xxxxx[xx]xxxx + * + * + * ``` + */ + collapse: function(toStart) { + var me = this; + if (toStart) { + me.endContainer = me.startContainer; + me.endOffset = me.startOffset; + } else { + me.startContainer = me.endContainer; + me.startOffset = me.endOffset; + } + me.collapsed = true; + return me; + }, + + /** + * 调整range的开始位置和结束位置,使其"收缩"到最小的位置 + * @method shrinkBoundary + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * xxxx[xxxxx] => xxxx[xxxxx] + * ``` + * + * @example + * ```html + * + * x[xx]xxx + * + * + * ``` + * + * @example + * ```html + * [xxxxxxxxxxx] => [xxxxxxxxxxx] + * ``` + */ + + /** + * 调整range的开始位置和结束位置,使其"收缩"到最小的位置, + * 如果ignoreEnd的值为true,则忽略对结束位置的调整 + * @method shrinkBoundary + * @param { Boolean } ignoreEnd 是否忽略对结束位置的调整 + * @return { UE.dom.Range } 当前range对象 + * @see UE.dom.domUtils.Range:shrinkBoundary() + */ + shrinkBoundary: function(ignoreEnd) { + var me = this, + child, + collapsed = me.collapsed; + function check(node) { + return ( + node.nodeType == 1 && + !domUtils.isBookmarkNode(node) && + !dtd.$empty[node.tagName] && + !dtd.$nonChild[node.tagName] + ); + } + while ( + me.startContainer.nodeType == 1 && //是element + (child = me.startContainer.childNodes[me.startOffset]) && //子节点也是element + check(child) + ) { + me.setStart(child, 0); + } + if (collapsed) { + return me.collapse(true); + } + if (!ignoreEnd) { + while ( + me.endContainer.nodeType == 1 && //是element + me.endOffset > 0 && //如果是空元素就退出 endOffset=0那么endOffst-1为负值,childNodes[endOffset]报错 + (child = me.endContainer.childNodes[me.endOffset - 1]) && //子节点也是element + check(child) + ) { + me.setEnd(child, child.childNodes.length); + } + } + return me; + }, + + /** + * 获取离当前选区内包含的所有节点最近的公共祖先节点, + * @method getCommonAncestor + * @remind 返回的公共祖先节点一定不是range自身的容器节点, 但有可能是一个文本节点 + * @return { Node } 当前range对象内所有节点的公共祖先节点 + * @example + * ```html + * //选区示例 + * xxxx[xxx]xxxxxx + * + * ``` + */ + + /** + * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到 + * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf + * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点 + * @method getCommonAncestor + * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点 + * @return { Node } 当前range对象内所有节点的公共祖先节点 + * @see UE.dom.Range:getCommonAncestor() + * @example + * ```html + * + * + * + * xxxxxxxxx[xxx]xxxxxxxx + * + * + * + * + * ``` + */ + + /** + * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到 + * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf + * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点; 同时可以根据 + * ignoreTextNode 参数的取值决定是否忽略类型为文本节点的祖先节点。 + * @method getCommonAncestor + * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点 + * @param { Boolean } ignoreTextNode 获取祖先节点的过程中是否忽略类型为文本节点的祖先节点 + * @return { Node } 当前range对象内所有节点的公共祖先节点 + * @see UE.dom.Range:getCommonAncestor() + * @see UE.dom.Range:getCommonAncestor(Boolean) + * @example + * ```html + * + * + * + * xxxxxxxx[x]xxxxxxxxxxx + * + * + * + * + * ``` + */ + getCommonAncestor: function(includeSelf, ignoreTextNode) { + var me = this, + start = me.startContainer, + end = me.endContainer; + if (start === end) { + if (includeSelf && selectOneNode(this)) { + start = start.childNodes[me.startOffset]; + if (start.nodeType == 1) return start; + } + //只有在上来就相等的情况下才会出现是文本的情况 + return ignoreTextNode && start.nodeType == 3 ? start.parentNode : start; + } + return domUtils.getCommonAncestor(start, end); + }, + + /** + * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上 + * @method trimBoundary + * @remind 该操作有可能会引起文本节点被切开 + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * //选区示例 + * xxx[xxxxx]xxx + * + * + * ``` + */ + + /** + * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上, + * 可以根据 ignoreEnd 参数的值决定是否调整对结束边界的调整 + * @method trimBoundary + * @param { Boolean } ignoreEnd 是否忽略对结束边界的调整 + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * //选区示例 + * xxx[xxxxx]xxx + * + * + * ``` + */ + trimBoundary: function(ignoreEnd) { + this.txtToElmBoundary(); + var start = this.startContainer, + offset = this.startOffset, + collapsed = this.collapsed, + end = this.endContainer; + if (start.nodeType == 3) { + if (offset == 0) { + this.setStartBefore(start); + } else { + if (offset >= start.nodeValue.length) { + this.setStartAfter(start); + } else { + var textNode = domUtils.split(start, offset); + //跟新结束边界 + if (start === end) { + this.setEnd(textNode, this.endOffset - offset); + } else if (start.parentNode === end) { + this.endOffset += 1; + } + this.setStartBefore(textNode); + } + } + if (collapsed) { + return this.collapse(true); + } + } + if (!ignoreEnd) { + offset = this.endOffset; + end = this.endContainer; + if (end.nodeType == 3) { + if (offset == 0) { + this.setEndBefore(end); + } else { + offset < end.nodeValue.length && domUtils.split(end, offset); + this.setEndAfter(end); + } + } + } + return this; + }, + + /** + * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则什么也不做 + * @method txtToElmBoundary + * @remind 该操作不会修改dom节点 + * @return { UE.dom.Range } 当前range对象 + */ + + /** + * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则根据参数项 + * ignoreCollapsed 的值决定是否执行该调整 + * @method txtToElmBoundary + * @param { Boolean } ignoreCollapsed 是否忽略选区的闭合状态, 如果该参数取值为true, 则 + * 不论选区是否闭合, 都会执行该操作, 反之, 则不会对闭合的选区执行该操作 + * @return { UE.dom.Range } 当前range对象 + */ + txtToElmBoundary: function(ignoreCollapsed) { + function adjust(r, c) { + var container = r[c + "Container"], + offset = r[c + "Offset"]; + if (container.nodeType == 3) { + if (!offset) { + r[ + "set" + + c.replace(/(\w)/, function(a) { + return a.toUpperCase(); + }) + + "Before" + ](container); + } else if (offset >= container.nodeValue.length) { + r[ + "set" + + c.replace(/(\w)/, function(a) { + return a.toUpperCase(); + }) + + "After" + ](container); + } + } + } + + if (ignoreCollapsed || !this.collapsed) { + adjust(this, "start"); + adjust(this, "end"); + } + return this; + }, + + /** + * 在当前选区的开始位置前插入节点,新插入的节点会被该range包含 + * @method insertNode + * @param { Node } node 需要插入的节点 + * @remind 插入的节点可以是一个DocumentFragment依次插入多个节点 + * @return { UE.dom.Range } 当前range对象 + */ + insertNode: function(node) { + var first = node, + length = 1; + if (node.nodeType == 11) { + first = node.firstChild; + length = node.childNodes.length; + } + this.trimBoundary(true); + var start = this.startContainer, + offset = this.startOffset; + var nextNode = start.childNodes[offset]; + if (nextNode) { + start.insertBefore(node, nextNode); + } else { + start.appendChild(node); + } + if (first.parentNode === this.endContainer) { + this.endOffset = this.endOffset + length; + } + return this.setStartBefore(first); + }, + + /** + * 闭合选区到当前选区的开始位置, 并且定位光标到闭合后的位置 + * @method setCursor + * @return { UE.dom.Range } 当前range对象 + * @see UE.dom.Range:collapse() + */ + + /** + * 闭合选区,可以根据参数toEnd的值控制选区是向前闭合还是向后闭合, 并且定位光标到闭合后的位置。 + * @method setCursor + * @param { Boolean } toEnd 是否向后闭合, 如果为true, 则闭合选区时, 将向结束容器方向闭合, + * 反之,则向开始容器方向闭合 + * @return { UE.dom.Range } 当前range对象 + * @see UE.dom.Range:collapse(Boolean) + */ + setCursor: function(toEnd, noFillData) { + return this.collapse(!toEnd).select(noFillData); + }, + + /** + * 创建当前range的一个书签,记录下当前range的位置,方便当dom树改变时,还能找回原来的选区位置 + * @method createBookmark + * @param { Boolean } serialize 控制返回的标记位置是对当前位置的引用还是ID,如果该值为true,则 + * 返回标记位置的ID, 反之则返回标记位置节点的引用 + * @return { Object } 返回一个书签记录键值对, 其包含的key有: start => 开始标记的ID或者引用, + * end => 结束标记的ID或引用, id => 当前标记的类型, 如果为true,则表示 + * 返回的记录的类型为ID, 反之则为引用 + */ + createBookmark: function(serialize, same) { + var endNode, + startNode = this.document.createElement("span"); + startNode.style.cssText = "display:none;line-height:0px;"; + startNode.appendChild(this.document.createTextNode("\u200D")); + startNode.id = "_baidu_bookmark_start_" + (same ? "" : guid++); + + if (!this.collapsed) { + endNode = startNode.cloneNode(true); + endNode.id = "_baidu_bookmark_end_" + (same ? "" : guid++); + } + this.insertNode(startNode); + if (endNode) { + this.collapse().insertNode(endNode).setEndBefore(endNode); + } + this.setStartAfter(startNode); + return { + start: serialize ? startNode.id : startNode, + end: endNode ? (serialize ? endNode.id : endNode) : null, + id: serialize + }; + }, + + /** + * 调整当前range的边界到书签位置,并删除该书签对象所标记的位置内的节点 + * @method moveToBookmark + * @param { BookMark } bookmark createBookmark所创建的标签对象 + * @return { UE.dom.Range } 当前range对象 + * @see UE.dom.Range:createBookmark(Boolean) + */ + moveToBookmark: function(bookmark) { + var start = bookmark.id + ? this.document.getElementById(bookmark.start) + : bookmark.start, + end = bookmark.end && bookmark.id + ? this.document.getElementById(bookmark.end) + : bookmark.end; + this.setStartBefore(start); + domUtils.remove(start); + if (end) { + this.setEndBefore(end); + domUtils.remove(end); + } else { + this.collapse(true); + } + return this; + }, + + /** + * 调整range的边界,使其"放大"到最近的父节点 + * @method enlarge + * @remind 会引起选区的变化 + * @return { UE.dom.Range } 当前range对象 + */ + + /** + * 调整range的边界,使其"放大"到最近的父节点,根据参数 toBlock 的取值, 可以 + * 要求扩大之后的父节点是block节点 + * @method enlarge + * @param { Boolean } toBlock 是否要求扩大之后的父节点必须是block节点 + * @return { UE.dom.Range } 当前range对象 + */ + enlarge: function(toBlock, stopFn) { + var isBody = domUtils.isBody, + pre, + node, + tmp = this.document.createTextNode(""); + if (toBlock) { + node = this.startContainer; + if (node.nodeType == 1) { + if (node.childNodes[this.startOffset]) { + pre = node = node.childNodes[this.startOffset]; + } else { + node.appendChild(tmp); + pre = node = tmp; + } + } else { + pre = node; + } + while (1) { + if (domUtils.isBlockElm(node)) { + node = pre; + while ((pre = node.previousSibling) && !domUtils.isBlockElm(pre)) { + node = pre; + } + this.setStartBefore(node); + break; + } + pre = node; + node = node.parentNode; + } + node = this.endContainer; + if (node.nodeType == 1) { + if ((pre = node.childNodes[this.endOffset])) { + node.insertBefore(tmp, pre); + } else { + node.appendChild(tmp); + } + pre = node = tmp; + } else { + pre = node; + } + while (1) { + if (domUtils.isBlockElm(node)) { + node = pre; + while ((pre = node.nextSibling) && !domUtils.isBlockElm(pre)) { + node = pre; + } + this.setEndAfter(node); + break; + } + pre = node; + node = node.parentNode; + } + if (tmp.parentNode === this.endContainer) { + this.endOffset--; + } + domUtils.remove(tmp); + } + + // 扩展边界到最大 + if (!this.collapsed) { + while (this.startOffset == 0) { + if (stopFn && stopFn(this.startContainer)) { + break; + } + if (isBody(this.startContainer)) { + break; + } + this.setStartBefore(this.startContainer); + } + while ( + this.endOffset == + (this.endContainer.nodeType == 1 + ? this.endContainer.childNodes.length + : this.endContainer.nodeValue.length) + ) { + if (stopFn && stopFn(this.endContainer)) { + break; + } + if (isBody(this.endContainer)) { + break; + } + this.setEndAfter(this.endContainer); + } + } + return this; + }, + enlargeToBlockElm: function(ignoreEnd) { + while (!domUtils.isBlockElm(this.startContainer)) { + this.setStartBefore(this.startContainer); + } + if (!ignoreEnd) { + while (!domUtils.isBlockElm(this.endContainer)) { + this.setEndAfter(this.endContainer); + } + } + return this; + }, + /** + * 调整Range的边界,使其"缩小"到最合适的位置 + * @method adjustmentBoundary + * @return { UE.dom.Range } 当前range对象 + * @see UE.dom.Range:shrinkBoundary() + */ + adjustmentBoundary: function() { + if (!this.collapsed) { + while ( + !domUtils.isBody(this.startContainer) && + this.startOffset == + this.startContainer[ + this.startContainer.nodeType == 3 ? "nodeValue" : "childNodes" + ].length && + this.startContainer[ + this.startContainer.nodeType == 3 ? "nodeValue" : "childNodes" + ].length + ) { + this.setStartAfter(this.startContainer); + } + while ( + !domUtils.isBody(this.endContainer) && + !this.endOffset && + this.endContainer[ + this.endContainer.nodeType == 3 ? "nodeValue" : "childNodes" + ].length + ) { + this.setEndBefore(this.endContainer); + } + } + return this; + }, + + /** + * 给range选区中的内容添加给定的inline标签 + * @method applyInlineStyle + * @param { String } tagName 需要添加的标签名 + * @example + * ```html + *

    xxxx[xxxx]x

    ==> range.applyInlineStyle("strong") ==>

    xxxx[xxxx]x

    + * ``` + */ + + /** + * 给range选区中的内容添加给定的inline标签, 并且为标签附加上一些初始化属性。 + * @method applyInlineStyle + * @param { String } tagName 需要添加的标签名 + * @param { Object } attrs 跟随新添加的标签的属性 + * @return { UE.dom.Range } 当前选区 + * @example + * ```html + *

    xxxx[xxxx]x

    + * + * ==> + * + * + * range.applyInlineStyle("strong",{"style":"font-size:12px"}) + * + * ==> + * + *

    xxxx[xxxx]x

    + * ``` + */ + applyInlineStyle: function(tagName, attrs, list) { + if (this.collapsed) return this; + this.trimBoundary() + .enlarge(false, function(node) { + return node.nodeType == 1 && domUtils.isBlockElm(node); + }) + .adjustmentBoundary(); + var bookmark = this.createBookmark(), + end = bookmark.end, + filterFn = function(node) { + return node.nodeType == 1 + ? node.tagName.toLowerCase() != "br" + : !domUtils.isWhitespace(node); + }, + current = domUtils.getNextDomNode(bookmark.start, false, filterFn), + node, + pre, + range = this.cloneRange(); + while ( + current && + domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING + ) { + if (current.nodeType == 3 || dtd[tagName][current.tagName]) { + range.setStartBefore(current); + node = current; + while ( + node && + (node.nodeType == 3 || dtd[tagName][node.tagName]) && + node !== end + ) { + pre = node; + node = domUtils.getNextDomNode( + node, + node.nodeType == 1, + null, + function(parent) { + return dtd[tagName][parent.tagName]; + } + ); + } + var frag = range.setEndAfter(pre).extractContents(), + elm; + if (list && list.length > 0) { + var level, top; + top = level = list[0].cloneNode(false); + for (var i = 1, ci; (ci = list[i++]); ) { + level.appendChild(ci.cloneNode(false)); + level = level.firstChild; + } + elm = level; + } else { + elm = range.document.createElement(tagName); + } + if (attrs) { + domUtils.setAttributes(elm, attrs); + } + elm.appendChild(frag); + //针对嵌套span的全局样式指定,做容错处理 + if (elm.tagName == "SPAN" && attrs && attrs.style) { + utils.each(elm.getElementsByTagName("span"), function(s) { + s.style.cssText = s.style.cssText + ";" + attrs.style; + }); + } + range.insertNode(list ? top : elm); + //处理下滑线在a上的情况 + var aNode; + if ( + tagName == "span" && + attrs.style && + /text\-decoration/.test(attrs.style) && + (aNode = domUtils.findParentByTagName(elm, "a", true)) + ) { + domUtils.setAttributes(aNode, attrs); + domUtils.remove(elm, true); + elm = aNode; + } else { + domUtils.mergeSibling(elm); + domUtils.clearEmptySibling(elm); + } + //去除子节点相同的 + domUtils.mergeChild(elm, attrs); + current = domUtils.getNextDomNode(elm, false, filterFn); + domUtils.mergeToParent(elm); + if (node === end) { + break; + } + } else { + current = domUtils.getNextDomNode(current, true, filterFn); + } + } + return this.moveToBookmark(bookmark); + }, + + /** + * 移除当前选区内指定的inline标签,但保留其中的内容 + * @method removeInlineStyle + * @param { String } tagName 需要移除的标签名 + * @return { UE.dom.Range } 当前的range对象 + * @example + * ```html + * xx[xxxxyyyzz]z => range.removeInlineStyle(["em"]) => xx[xxxxyyyzz]z + * ``` + */ + + /** + * 移除当前选区内指定的一组inline标签,但保留其中的内容 + * @method removeInlineStyle + * @param { Array } tagNameArr 需要移除的标签名的数组 + * @return { UE.dom.Range } 当前的range对象 + * @see UE.dom.Range:removeInlineStyle(String) + */ + removeInlineStyle: function(tagNames) { + if (this.collapsed) return this; + tagNames = utils.isArray(tagNames) ? tagNames : [tagNames]; + this.shrinkBoundary().adjustmentBoundary(); + var start = this.startContainer, + end = this.endContainer; + while (1) { + if (start.nodeType == 1) { + if (utils.indexOf(tagNames, start.tagName.toLowerCase()) > -1) { + break; + } + if (start.tagName.toLowerCase() == "body") { + start = null; + break; + } + } + start = start.parentNode; + } + while (1) { + if (end.nodeType == 1) { + if (utils.indexOf(tagNames, end.tagName.toLowerCase()) > -1) { + break; + } + if (end.tagName.toLowerCase() == "body") { + end = null; + break; + } + } + end = end.parentNode; + } + var bookmark = this.createBookmark(), + frag, + tmpRange; + if (start) { + tmpRange = this.cloneRange() + .setEndBefore(bookmark.start) + .setStartBefore(start); + frag = tmpRange.extractContents(); + tmpRange.insertNode(frag); + domUtils.clearEmptySibling(start, true); + start.parentNode.insertBefore(bookmark.start, start); + } + if (end) { + tmpRange = this.cloneRange() + .setStartAfter(bookmark.end) + .setEndAfter(end); + frag = tmpRange.extractContents(); + tmpRange.insertNode(frag); + domUtils.clearEmptySibling(end, false, true); + end.parentNode.insertBefore(bookmark.end, end.nextSibling); + } + var current = domUtils.getNextDomNode(bookmark.start, false, function( + node + ) { + return node.nodeType == 1; + }), + next; + while (current && current !== bookmark.end) { + next = domUtils.getNextDomNode(current, true, function(node) { + return node.nodeType == 1; + }); + if (utils.indexOf(tagNames, current.tagName.toLowerCase()) > -1) { + domUtils.remove(current, true); + } + current = next; + } + return this.moveToBookmark(bookmark); + }, + + /** + * 获取当前选中的自闭合的节点 + * @method getClosedNode + * @return { Node | NULL } 如果当前选中的是自闭合节点, 则返回该节点, 否则返回NULL + */ + getClosedNode: function() { + var node; + if (!this.collapsed) { + var range = this.cloneRange().adjustmentBoundary().shrinkBoundary(); + if (selectOneNode(range)) { + var child = range.startContainer.childNodes[range.startOffset]; + if ( + child && + child.nodeType == 1 && + (dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName]) + ) { + node = child; + } + } + } + return node; + }, + + /** + * 在页面上高亮range所表示的选区 + * @method select + * @return { UE.dom.Range } 返回当前Range对象 + */ + //这里不区分ie9以上,trace:3824 + select: browser.ie + ? function(noFillData, textRange) { + var nativeRange; + if (!this.collapsed) this.shrinkBoundary(); + var node = this.getClosedNode(); + if (node && !textRange) { + try { + nativeRange = this.document.body.createControlRange(); + nativeRange.addElement(node); + nativeRange.select(); + } catch (e) {} + return this; + } + var bookmark = this.createBookmark(), + start = bookmark.start, + end; + nativeRange = this.document.body.createTextRange(); + nativeRange.moveToElementText(start); + nativeRange.moveStart("character", 1); + if (!this.collapsed) { + var nativeRangeEnd = this.document.body.createTextRange(); + end = bookmark.end; + nativeRangeEnd.moveToElementText(end); + nativeRange.setEndPoint("EndToEnd", nativeRangeEnd); + } else { + if (!noFillData && this.startContainer.nodeType != 3) { + //使用|x固定住光标 + var tmpText = this.document.createTextNode(fillChar), + tmp = this.document.createElement("span"); + tmp.appendChild(this.document.createTextNode(fillChar)); + start.parentNode.insertBefore(tmp, start); + start.parentNode.insertBefore(tmpText, start); + //当点b,i,u时,不能清除i上边的b + removeFillData(this.document, tmpText); + fillData = tmpText; + mergeSibling(tmp, "previousSibling"); + mergeSibling(start, "nextSibling"); + nativeRange.moveStart("character", -1); + nativeRange.collapse(true); + } + } + this.moveToBookmark(bookmark); + tmp && domUtils.remove(tmp); + //IE在隐藏状态下不支持range操作,catch一下 + try { + nativeRange.select(); + } catch (e) {} + return this; + } + : function(notInsertFillData) { + function checkOffset(rng) { + function check(node, offset, dir) { + if (node.nodeType == 3 && node.nodeValue.length < offset) { + rng[dir + "Offset"] = node.nodeValue.length; + } + } + check(rng.startContainer, rng.startOffset, "start"); + check(rng.endContainer, rng.endOffset, "end"); + } + var win = domUtils.getWindow(this.document), + sel = win.getSelection(), + txtNode; + //FF下关闭自动长高时滚动条在关闭dialog时会跳 + //ff下如果不body.focus将不能定位闭合光标到编辑器内 + browser.gecko ? this.document.body.focus() : win.focus(); + if (sel) { + sel.removeAllRanges(); + // trace:870 chrome/safari后边是br对于闭合得range不能定位 所以去掉了判断 + // this.startContainer.nodeType != 3 &&! ((child = this.startContainer.childNodes[this.startOffset]) && child.nodeType == 1 && child.tagName == 'BR' + if (this.collapsed && !notInsertFillData) { + // //opear如果没有节点接着,原生的不能够定位,不能在body的第一级插入空白节点 + // if (notInsertFillData && browser.opera && !domUtils.isBody(this.startContainer) && this.startContainer.nodeType == 1) { + // var tmp = this.document.createTextNode(''); + // this.insertNode(tmp).setStart(tmp, 0).collapse(true); + // } + // + //处理光标落在文本节点的情况 + //处理以下的情况 + //|xxxx + //xxxx|xxxx + //xxxx| + var start = this.startContainer, + child = start; + if (start.nodeType == 1) { + child = start.childNodes[this.startOffset]; + } + if ( + !(start.nodeType == 3 && this.startOffset) && + (child + ? !child.previousSibling || + child.previousSibling.nodeType != 3 + : !start.lastChild || start.lastChild.nodeType != 3) + ) { + txtNode = this.document.createTextNode(fillChar); + //跟着前边走 + this.insertNode(txtNode); + removeFillData(this.document, txtNode); + mergeSibling(txtNode, "previousSibling"); + mergeSibling(txtNode, "nextSibling"); + fillData = txtNode; + this.setStart(txtNode, browser.webkit ? 1 : 0).collapse(true); + } + } + var nativeRange = this.document.createRange(); + if ( + this.collapsed && + browser.opera && + this.startContainer.nodeType == 1 + ) { + var child = this.startContainer.childNodes[this.startOffset]; + if (!child) { + //往前靠拢 + child = this.startContainer.lastChild; + if (child && domUtils.isBr(child)) { + this.setStartBefore(child).collapse(true); + } + } else { + //向后靠拢 + while (child && domUtils.isBlockElm(child)) { + if (child.nodeType == 1 && child.childNodes[0]) { + child = child.childNodes[0]; + } else { + break; + } + } + child && this.setStartBefore(child).collapse(true); + } + } + //是createAddress最后一位算的不准,现在这里进行微调 + checkOffset(this); + nativeRange.setStart(this.startContainer, this.startOffset); + nativeRange.setEnd(this.endContainer, this.endOffset); + sel.addRange(nativeRange); + } + return this; + }, + + /** + * 滚动到当前range开始的位置 + * @method scrollToView + * @param { Window } win 当前range对象所属的window对象 + * @return { UE.dom.Range } 当前Range对象 + */ + + /** + * 滚动到距离当前range开始位置 offset 的位置处 + * @method scrollToView + * @param { Window } win 当前range对象所属的window对象 + * @param { Number } offset 距离range开始位置处的偏移量, 如果为正数, 则向下偏移, 反之, 则向上偏移 + * @return { UE.dom.Range } 当前Range对象 + */ + scrollToView: function(win, offset) { + win = win ? window : domUtils.getWindow(this.document); + var me = this, + span = me.document.createElement("span"); + //trace:717 + span.innerHTML = " "; + me.cloneRange().insertNode(span); + domUtils.scrollToView(span, win, offset); + domUtils.remove(span); + return me; + }, + + /** + * 判断当前选区内容是否占位符 + * @private + * @method inFillChar + * @return { Boolean } 如果是占位符返回true,否则返回false + */ + inFillChar: function() { + var start = this.startContainer; + if ( + this.collapsed && + start.nodeType == 3 && + start.nodeValue.replace(new RegExp("^" + domUtils.fillChar), "") + .length + + 1 == + start.nodeValue.length + ) { + return true; + } + return false; + }, + + /** + * 保存 + * @method createAddress + * @private + * @return { Boolean } 返回开始和结束的位置 + * @example + * ```html + * + *

    + * aaaa + * + * + * bbbb + * + * + *

    + * + * + * + * ``` + */ + createAddress: function(ignoreEnd, ignoreTxt) { + var addr = {}, + me = this; + + function getAddress(isStart) { + var node = isStart ? me.startContainer : me.endContainer; + var parents = domUtils.findParents(node, true, function(node) { + return !domUtils.isBody(node); + }), + addrs = []; + for (var i = 0, ci; (ci = parents[i++]); ) { + addrs.push(domUtils.getNodeIndex(ci, ignoreTxt)); + } + var firstIndex = 0; + + if (ignoreTxt) { + if (node.nodeType == 3) { + var tmpNode = node.previousSibling; + while (tmpNode && tmpNode.nodeType == 3) { + firstIndex += tmpNode.nodeValue.replace(fillCharReg, "").length; + tmpNode = tmpNode.previousSibling; + } + firstIndex += isStart ? me.startOffset : me.endOffset; // - (fillCharReg.test(node.nodeValue) ? 1 : 0 ) + } else { + node = node.childNodes[isStart ? me.startOffset : me.endOffset]; + if (node) { + firstIndex = domUtils.getNodeIndex(node, ignoreTxt); + } else { + node = isStart ? me.startContainer : me.endContainer; + var first = node.firstChild; + while (first) { + if (domUtils.isFillChar(first)) { + first = first.nextSibling; + continue; + } + firstIndex++; + if (first.nodeType == 3) { + while (first && first.nodeType == 3) { + first = first.nextSibling; + } + } else { + first = first.nextSibling; + } + } + } + } + } else { + firstIndex = isStart + ? domUtils.isFillChar(node) ? 0 : me.startOffset + : me.endOffset; + } + if (firstIndex < 0) { + firstIndex = 0; + } + addrs.push(firstIndex); + return addrs; + } + addr.startAddress = getAddress(true); + if (!ignoreEnd) { + addr.endAddress = me.collapsed + ? [].concat(addr.startAddress) + : getAddress(); + } + return addr; + }, + + /** + * 保存 + * @method createAddress + * @private + * @return { Boolean } 返回开始和结束的位置 + * @example + * ```html + * + *

    + * aaaa + * + * + * bbbb + * + * + *

    + * + * + * + * ``` + */ + moveToAddress: function(addr, ignoreEnd) { + var me = this; + function getNode(address, isStart) { + var tmpNode = me.document.body, + parentNode, + offset; + for (var i = 0, ci, l = address.length; i < l; i++) { + ci = address[i]; + parentNode = tmpNode; + tmpNode = tmpNode.childNodes[ci]; + if (!tmpNode) { + offset = ci; + break; + } + } + if (isStart) { + if (tmpNode) { + me.setStartBefore(tmpNode); + } else { + me.setStart(parentNode, offset); + } + } else { + if (tmpNode) { + me.setEndBefore(tmpNode); + } else { + me.setEnd(parentNode, offset); + } + } + } + getNode(addr.startAddress, true); + !ignoreEnd && addr.endAddress && getNode(addr.endAddress); + return me; + }, + + /** + * 判断给定的Range对象是否和当前Range对象表示的是同一个选区 + * @method equals + * @param { UE.dom.Range } 需要判断的Range对象 + * @return { Boolean } 如果给定的Range对象与当前Range对象表示的是同一个选区, 则返回true, 否则返回false + */ + equals: function(rng) { + for (var p in this) { + if (this.hasOwnProperty(p)) { + if (this[p] !== rng[p]) return false; + } + } + return true; + }, + + /** + * 遍历range内的节点。每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点 + * 作为其参数。 + * @method traversal + * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数 + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * + * + * + * + * + * + * + * + * + * ``` + */ + + /** + * 遍历range内的节点。 + * 每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点 + * 作为其参数。 + * 可以通过参数项 filterFn 来指定一个过滤器, 只有符合该过滤器过滤规则的节点才会触 + * 发doFn函数的执行 + * @method traversal + * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数 + * @param { Function } filterFn 过滤器, 该函数接受当前遍历的节点作为参数, 如果该节点满足过滤 + * 规则, 请返回true, 该节点会触发doFn, 否则, 请返回false, 则该节点不 + * 会触发doFn。 + * @return { UE.dom.Range } 当前range对象 + * @see UE.dom.Range:traversal(Function) + * @example + * ```html + * + * + * + * + * + * + * + * + * + * + * ``` + */ + traversal: function(doFn, filterFn) { + if (this.collapsed) return this; + var bookmark = this.createBookmark(), + end = bookmark.end, + current = domUtils.getNextDomNode(bookmark.start, false, filterFn); + while ( + current && + current !== end && + domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING + ) { + var tmpNode = domUtils.getNextDomNode(current, false, filterFn); + doFn(current); + current = tmpNode; + } + return this.moveToBookmark(bookmark); + } + }; +})(); + + +// core/Selection.js +/** + * 选集 + * @file + * @module UE.dom + * @class Selection + * @since 1.2.6.1 + */ + +/** + * 选区集合 + * @unfile + * @module UE.dom + * @class Selection + */ +(function() { + function getBoundaryInformation(range, start) { + var getIndex = domUtils.getNodeIndex; + range = range.duplicate(); + range.collapse(start); + var parent = range.parentElement(); + //如果节点里没有子节点,直接退出 + if (!parent.hasChildNodes()) { + return { container: parent, offset: 0 }; + } + var siblings = parent.children, + child, + testRange = range.duplicate(), + startIndex = 0, + endIndex = siblings.length - 1, + index = -1, + distance; + while (startIndex <= endIndex) { + index = Math.floor((startIndex + endIndex) / 2); + child = siblings[index]; + testRange.moveToElementText(child); + var position = testRange.compareEndPoints("StartToStart", range); + if (position > 0) { + endIndex = index - 1; + } else if (position < 0) { + startIndex = index + 1; + } else { + //trace:1043 + return { container: parent, offset: getIndex(child) }; + } + } + if (index == -1) { + testRange.moveToElementText(parent); + testRange.setEndPoint("StartToStart", range); + distance = testRange.text.replace(/(\r\n|\r)/g, "\n").length; + siblings = parent.childNodes; + if (!distance) { + child = siblings[siblings.length - 1]; + return { container: child, offset: child.nodeValue.length }; + } + + var i = siblings.length; + while (distance > 0) { + distance -= siblings[--i].nodeValue.length; + } + return { container: siblings[i], offset: -distance }; + } + testRange.collapse(position > 0); + testRange.setEndPoint(position > 0 ? "StartToStart" : "EndToStart", range); + distance = testRange.text.replace(/(\r\n|\r)/g, "\n").length; + if (!distance) { + return dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName] + ? { + container: parent, + offset: getIndex(child) + (position > 0 ? 0 : 1) + } + : { + container: child, + offset: position > 0 ? 0 : child.childNodes.length + }; + } + while (distance > 0) { + try { + var pre = child; + child = child[position > 0 ? "previousSibling" : "nextSibling"]; + distance -= child.nodeValue.length; + } catch (e) { + return { container: parent, offset: getIndex(pre) }; + } + } + return { + container: child, + offset: position > 0 ? -distance : child.nodeValue.length + distance + }; + } + + /** + * 将ieRange转换为Range对象 + * @param {Range} ieRange ieRange对象 + * @param {Range} range Range对象 + * @return {Range} range 返回转换后的Range对象 + */ + function transformIERangeToRange(ieRange, range) { + if (ieRange.item) { + range.selectNode(ieRange.item(0)); + } else { + var bi = getBoundaryInformation(ieRange, true); + range.setStart(bi.container, bi.offset); + if (ieRange.compareEndPoints("StartToEnd", ieRange) != 0) { + bi = getBoundaryInformation(ieRange, false); + range.setEnd(bi.container, bi.offset); + } + } + return range; + } + + /** + * 获得ieRange + * @param {Selection} sel Selection对象 + * @return {ieRange} 得到ieRange + */ + function _getIERange(sel) { + var ieRange; + //ie下有可能报错 + try { + ieRange = sel.getNative().createRange(); + } catch (e) { + return null; + } + var el = ieRange.item ? ieRange.item(0) : ieRange.parentElement(); + if ((el.ownerDocument || el) === sel.document) { + return ieRange; + } + return null; + } + + var Selection = (dom.Selection = function(doc) { + var me = this, + iframe; + me.document = doc; + if (browser.ie9below) { + iframe = domUtils.getWindow(doc).frameElement; + domUtils.on(iframe, "beforedeactivate", function() { + me._bakIERange = me.getIERange(); + }); + domUtils.on(iframe, "activate", function() { + try { + if (!_getIERange(me) && me._bakIERange) { + me._bakIERange.select(); + } + } catch (ex) {} + me._bakIERange = null; + }); + } + iframe = doc = null; + }); + + Selection.prototype = { + rangeInBody: function(rng, txtRange) { + var node = browser.ie9below || txtRange + ? rng.item ? rng.item() : rng.parentElement() + : rng.startContainer; + + return node === this.document.body || domUtils.inDoc(node, this.document); + }, + + /** + * 获取原生seleciton对象 + * @method getNative + * @return { Object } 获得selection对象 + * @example + * ```javascript + * editor.selection.getNative(); + * ``` + */ + getNative: function() { + var doc = this.document; + try { + return !doc + ? null + : browser.ie9below + ? doc.selection + : domUtils.getWindow(doc).getSelection(); + } catch (e) { + return null; + } + }, + + /** + * 获得ieRange + * @method getIERange + * @return { Object } 返回ie原生的Range + * @example + * ```javascript + * editor.selection.getIERange(); + * ``` + */ + getIERange: function() { + var ieRange = _getIERange(this); + if (!ieRange) { + if (this._bakIERange) { + return this._bakIERange; + } + } + return ieRange; + }, + + /** + * 缓存当前选区的range和选区的开始节点 + * @method cache + */ + cache: function() { + this.clear(); + this._cachedRange = this.getRange(); + this._cachedStartElement = this.getStart(); + this._cachedStartElementPath = this.getStartElementPath(); + }, + + /** + * 获取选区开始位置的父节点到body + * @method getStartElementPath + * @return { Array } 返回父节点集合 + * @example + * ```javascript + * editor.selection.getStartElementPath(); + * ``` + */ + getStartElementPath: function() { + if (this._cachedStartElementPath) { + return this._cachedStartElementPath; + } + var start = this.getStart(); + if (start) { + return domUtils.findParents(start, true, null, true); + } + return []; + }, + + /** + * 清空缓存 + * @method clear + */ + clear: function() { + this._cachedStartElementPath = this._cachedRange = this._cachedStartElement = null; + }, + + /** + * 编辑器是否得到了选区 + * @method isFocus + */ + isFocus: function() { + try { + if (browser.ie9below) { + var nativeRange = _getIERange(this); + return !!(nativeRange && this.rangeInBody(nativeRange)); + } else { + return !!this.getNative().rangeCount; + } + } catch (e) { + return false; + } + }, + + /** + * 获取选区对应的Range + * @method getRange + * @return { Object } 得到Range对象 + * @example + * ```javascript + * editor.selection.getRange(); + * ``` + */ + getRange: function() { + var me = this; + function optimze(range) { + var child = me.document.body.firstChild, + collapsed = range.collapsed; + while (child && child.firstChild) { + range.setStart(child, 0); + child = child.firstChild; + } + if (!range.startContainer) { + range.setStart(me.document.body, 0); + } + if (collapsed) { + range.collapse(true); + } + } + + if (me._cachedRange != null) { + return this._cachedRange; + } + var range = new baidu.editor.dom.Range(me.document); + + if (browser.ie9below) { + var nativeRange = me.getIERange(); + if (nativeRange) { + //备份的_bakIERange可能已经实效了,dom树发生了变化比如从源码模式切回来,所以try一下,实效就放到body开始位置 + try { + transformIERangeToRange(nativeRange, range); + } catch (e) { + optimze(range); + } + } else { + optimze(range); + } + } else { + var sel = me.getNative(); + if (sel && sel.rangeCount) { + var firstRange = sel.getRangeAt(0); + var lastRange = sel.getRangeAt(sel.rangeCount - 1); + range + .setStart(firstRange.startContainer, firstRange.startOffset) + .setEnd(lastRange.endContainer, lastRange.endOffset); + if ( + range.collapsed && + domUtils.isBody(range.startContainer) && + !range.startOffset + ) { + optimze(range); + } + } else { + //trace:1734 有可能已经不在dom树上了,标识的节点 + if ( + this._bakRange && + domUtils.inDoc(this._bakRange.startContainer, this.document) + ) { + return this._bakRange; + } + optimze(range); + } + } + return (this._bakRange = range); + }, + + /** + * 获取开始元素,用于状态反射 + * @method getStart + * @return { Element } 获得开始元素 + * @example + * ```javascript + * editor.selection.getStart(); + * ``` + */ + getStart: function() { + if (this._cachedStartElement) { + return this._cachedStartElement; + } + var range = browser.ie9below ? this.getIERange() : this.getRange(), + tmpRange, + start, + tmp, + parent; + if (browser.ie9below) { + if (!range) { + //todo 给第一个值可能会有问题 + return this.document.body.firstChild; + } + //control元素 + if (range.item) { + return range.item(0); + } + tmpRange = range.duplicate(); + //修正ie下x[xx] 闭合后 x|xx + tmpRange.text.length > 0 && tmpRange.moveStart("character", 1); + tmpRange.collapse(1); + start = tmpRange.parentElement(); + parent = tmp = range.parentElement(); + while ((tmp = tmp.parentNode)) { + if (tmp == start) { + start = parent; + break; + } + } + } else { + range.shrinkBoundary(); + start = range.startContainer; + if (start.nodeType == 1 && start.hasChildNodes()) { + start = + start.childNodes[ + Math.min(start.childNodes.length - 1, range.startOffset) + ]; + } + if (start.nodeType == 3) { + return start.parentNode; + } + } + return start; + }, + + /** + * 得到选区中的文本 + * @method getText + * @return { String } 选区中包含的文本 + * @example + * ```javascript + * editor.selection.getText(); + * ``` + */ + getText: function() { + var nativeSel, nativeRange; + if (this.isFocus() && (nativeSel = this.getNative())) { + nativeRange = browser.ie9below + ? nativeSel.createRange() + : nativeSel.getRangeAt(0); + return browser.ie9below ? nativeRange.text : nativeRange.toString(); + } + return ""; + }, + + /** + * 清除选区 + * @method clearRange + * @example + * ```javascript + * editor.selection.clearRange(); + * ``` + */ + clearRange: function() { + this.getNative()[browser.ie9below ? "empty" : "removeAllRanges"](); + } + }; +})(); + + +// core/Editor.js +/** + * 编辑器主类,包含编辑器提供的大部分公用接口 + * @file + * @module UE + * @class Editor + * @since 1.2.6.1 + */ + +/** + * UEditor公用空间,UEditor所有的功能都挂载在该空间下 + * @unfile + * @module UE + */ + +/** + * UEditor的核心类,为用户提供与编辑器交互的接口。 + * @unfile + * @module UE + * @class Editor + */ + +(function() { + var uid = 0, + _selectionChangeTimer; + + /** + * 获取编辑器的html内容,赋值到编辑器所在表单的textarea文本域里面 + * @private + * @method setValue + * @param { UE.Editor } editor 编辑器事例 + */ + function setValue(form, editor) { + var textarea; + if (editor.options.textarea) { + if (utils.isString(editor.options.textarea)) { + for ( + var i = 0, ti, tis = domUtils.getElementsByTagName(form, "textarea"); + (ti = tis[i++]); + + ) { + if (ti.id == "ueditor_textarea_" + editor.options.textarea) { + textarea = ti; + break; + } + } + } else { + textarea = editor.textarea; + } + } + if (!textarea) { + form.appendChild( + (textarea = domUtils.createElement(document, "textarea", { + name: editor.options.textarea, + id: "ueditor_textarea_" + editor.options.textarea, + style: "display:none" + })) + ); + //不要产生多个textarea + editor.textarea = textarea; + } + !textarea.getAttribute("name") && + textarea.setAttribute("name", editor.options.textarea); + textarea.value = editor.hasContents() + ? editor.options.allHtmlEnabled + ? editor.getAllHtml() + : editor.getContent(null, null, true) + : ""; + } + function loadPlugins(me) { + //初始化插件 + for (var pi in UE.plugins) { + UE.plugins[pi].call(me); + } + } + function checkCurLang(I18N) { + for (var lang in I18N) { + return lang; + } + } + + function langReadied(me) { + me.langIsReady = true; + + me.fireEvent("langReady"); + } + + /** + * 编辑器准备就绪后会触发该事件 + * @module UE + * @class Editor + * @event ready + * @remind render方法执行完成之后,会触发该事件 + * @remind + * @example + * ```javascript + * editor.addListener( 'ready', function( editor ) { + * editor.execCommand( 'focus' ); //编辑器家在完成后,让编辑器拿到焦点 + * } ); + * ``` + */ + /** + * 执行destroy方法,会触发该事件 + * @module UE + * @class Editor + * @event destroy + * @see UE.Editor:destroy() + */ + /** + * 执行reset方法,会触发该事件 + * @module UE + * @class Editor + * @event reset + * @see UE.Editor:reset() + */ + /** + * 执行focus方法,会触发该事件 + * @module UE + * @class Editor + * @event focus + * @see UE.Editor:focus(Boolean) + */ + /** + * 语言加载完成会触发该事件 + * @module UE + * @class Editor + * @event langReady + */ + /** + * 运行命令之后会触发该命令 + * @module UE + * @class Editor + * @event beforeExecCommand + */ + /** + * 运行命令之后会触发该命令 + * @module UE + * @class Editor + * @event afterExecCommand + */ + /** + * 运行命令之前会触发该命令 + * @module UE + * @class Editor + * @event firstBeforeExecCommand + */ + /** + * 在getContent方法执行之前会触发该事件 + * @module UE + * @class Editor + * @event beforeGetContent + * @see UE.Editor:getContent() + */ + /** + * 在getContent方法执行之后会触发该事件 + * @module UE + * @class Editor + * @event afterGetContent + * @see UE.Editor:getContent() + */ + /** + * 在getAllHtml方法执行时会触发该事件 + * @module UE + * @class Editor + * @event getAllHtml + * @see UE.Editor:getAllHtml() + */ + /** + * 在setContent方法执行之前会触发该事件 + * @module UE + * @class Editor + * @event beforeSetContent + * @see UE.Editor:setContent(String) + */ + /** + * 在setContent方法执行之后会触发该事件 + * @module UE + * @class Editor + * @event afterSetContent + * @see UE.Editor:setContent(String) + */ + /** + * 每当编辑器内部选区发生改变时,将触发该事件 + * @event selectionchange + * @warning 该事件的触发非常频繁,不建议在该事件的处理过程中做重量级的处理 + * @example + * ```javascript + * editor.addListener( 'selectionchange', function( editor ) { + * console.log('选区发生改变'); + * } + */ + /** + * 在所有selectionchange的监听函数执行之前,会触发该事件 + * @module UE + * @class Editor + * @event beforeSelectionChange + * @see UE.Editor:selectionchange + */ + /** + * 在所有selectionchange的监听函数执行完之后,会触发该事件 + * @module UE + * @class Editor + * @event afterSelectionChange + * @see UE.Editor:selectionchange + */ + /** + * 编辑器内容发生改变时会触发该事件 + * @module UE + * @class Editor + * @event contentChange + */ + + /** + * 以默认参数构建一个编辑器实例 + * @constructor + * @remind 通过 改构造方法实例化的编辑器,不带ui层.需要render到一个容器,编辑器实例才能正常渲染到页面 + * @example + * ```javascript + * var editor = new UE.Editor(); + * editor.execCommand('blod'); + * ``` + * @see UE.Config + */ + + /** + * 以给定的参数集合创建一个编辑器实例,对于未指定的参数,将应用默认参数。 + * @constructor + * @remind 通过 改构造方法实例化的编辑器,不带ui层.需要render到一个容器,编辑器实例才能正常渲染到页面 + * @param { Object } setting 创建编辑器的参数 + * @example + * ```javascript + * var editor = new UE.Editor(); + * editor.execCommand('blod'); + * ``` + * @see UE.Config + */ + var Editor = (UE.Editor = function(options) { + var me = this; + me.uid = uid++; + EventBase.call(me); + me.commands = {}; + me.options = utils.extend(utils.clone(options || {}), UEDITOR_CONFIG, true); + me.shortcutkeys = {}; + me.inputRules = []; + me.outputRules = []; + //设置默认的常用属性 + me.setOpt(Editor.defaultOptions(me)); + + /* 尝试异步加载后台配置 */ + me.loadServerConfig(); + + if (!utils.isEmptyObject(UE.I18N)) { + //修改默认的语言类型 + me.options.lang = checkCurLang(UE.I18N); + UE.plugin.load(me); + langReadied(me); + } else { + utils.loadFile( + document, + { + src: + me.options.langPath + + me.options.lang + + "/" + + me.options.lang + + ".js?20220907", + tag: "script", + type: "text/javascript", + defer: "defer" + }, + function() { + UE.plugin.load(me); + langReadied(me); + } + ); + } + + UE.instants["ueditorInstant" + me.uid] = me; + }); + Editor.prototype = { + registerCommand: function(name, obj) { + this.commands[name] = obj; + }, + /** + * 编辑器对外提供的监听ready事件的接口, 通过调用该方法,达到的效果与监听ready事件是一致的 + * @method ready + * @param { Function } fn 编辑器ready之后所执行的回调, 如果在注册事件之前编辑器已经ready,将会 + * 立即触发该回调。 + * @remind 需要等待编辑器加载完成后才能执行的代码,可以使用该方法传入 + * @example + * ```javascript + * editor.ready( function( editor ) { + * editor.setContent('初始化完毕'); + * } ); + * ``` + * @see UE.Editor.event:ready + */ + ready: function(fn) { + var me = this; + if (fn) { + me.isReady ? fn.apply(me) : me.addListener("ready", fn); + } + }, + + /** + * 该方法是提供给插件里面使用,设置配置项默认值 + * @method setOpt + * @warning 三处设置配置项的优先级: 实例化时传入参数 > setOpt()设置 > config文件里设置 + * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。 + * @param { String } key 编辑器的可接受的选项名称 + * @param { * } val 该选项可接受的值 + * @example + * ```javascript + * editor.setOpt( 'initContent', '欢迎使用编辑器' ); + * ``` + */ + + /** + * 该方法是提供给插件里面使用,以{key:value}集合的方式设置插件内用到的配置项默认值 + * @method setOpt + * @warning 三处设置配置项的优先级: 实例化时传入参数 > setOpt()设置 > config文件里设置 + * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。 + * @param { Object } options 将要设置的选项的键值对对象 + * @example + * ```javascript + * editor.setOpt( { + * 'initContent': '欢迎使用编辑器' + * } ); + * ``` + */ + setOpt: function(key, val) { + var obj = {}; + if (utils.isString(key)) { + obj[key] = val; + } else { + obj = key; + } + utils.extend(this.options, obj, true); + }, + getOpt: function(key) { + return this.options[key]; + }, + /** + * 销毁编辑器实例,使用textarea代替 + * @method destroy + * @example + * ```javascript + * editor.destroy(); + * ``` + */ + destroy: function() { + var me = this; + me.fireEvent("destroy"); + var container = me.container.parentNode; + var textarea = me.textarea; + if (!textarea) { + textarea = document.createElement("textarea"); + container.parentNode.insertBefore(textarea, container); + } else { + textarea.style.display = ""; + } + + textarea.style.width = me.iframe.offsetWidth + "px"; + textarea.style.height = me.iframe.offsetHeight + "px"; + textarea.value = me.getContent(); + textarea.id = me.key; + container.innerHTML = ""; + domUtils.remove(container); + var key = me.key; + //trace:2004 + for (var p in me) { + if (me.hasOwnProperty(p)) { + delete this[p]; + } + } + UE.delEditor(key); + }, + + /** + * 渲染编辑器的DOM到指定容器 + * @method render + * @param { String } containerId 指定一个容器ID + * @remind 执行该方法,会触发ready事件 + * @warning 必须且只能调用一次 + */ + + /** + * 渲染编辑器的DOM到指定容器 + * @method render + * @param { Element } containerDom 直接指定容器对象 + * @remind 执行该方法,会触发ready事件 + * @warning 必须且只能调用一次 + */ + render: function(container) { + var me = this, + options = me.options, + getStyleValue = function(attr) { + return parseInt(domUtils.getComputedStyle(container, attr)); + }; + if (utils.isString(container)) { + container = document.getElementById(container); + } + if (container) { + if (options.initialFrameWidth) { + options.minFrameWidth = options.initialFrameWidth; + } else { + options.minFrameWidth = options.initialFrameWidth = + container.offsetWidth; + } + if (options.initialFrameHeight) { + options.minFrameHeight = options.initialFrameHeight; + } else { + options.initialFrameHeight = options.minFrameHeight = + container.offsetHeight; + } + + container.style.width = /%$/.test(options.initialFrameWidth) + ? "100%" + : options.initialFrameWidth - + getStyleValue("padding-left") - + getStyleValue("padding-right") + + "px"; + container.style.height = /%$/.test(options.initialFrameHeight) + ? "100%" + : options.initialFrameHeight - + getStyleValue("padding-top") - + getStyleValue("padding-bottom") + + "px"; + + container.style.zIndex = options.zIndex; + var additionCssHtml = []; + for(var i in options.iframeCssUrlsAddition){ + additionCssHtml.push("") + } + var html = + (ie && browser.version < 9 ? "" : "") + + "" + + "" + + "" + + (options.iframeCssUrl + ? "" + : "") + + (options.initialStyle + ? "" + : "") + + additionCssHtml.join("") + + "" + + "" + + "" + + (options.iframeJsUrl + ? "" + : "") + + ""; + + container.appendChild( + domUtils.createElement(document, "iframe", { + id: "ueditor_" + me.uid, + width: "100%", + height: "100%", + frameborder: "0", + //先注释掉了,加的原因忘记了,但开启会直接导致全屏模式下内容多时不会出现滚动条 + // scrolling :'no', + src: + "javascript:void(function(){document.open();" + + (options.customDomain && document.domain != location.hostname + ? 'document.domain="' + document.domain + '";' + : "") + + 'document.write("' + + html + + '");document.close();}())' + }) + ); + container.style.overflow = "hidden"; + //解决如果是给定的百分比,会导致高度算不对的问题 + setTimeout(function() { + if (/%$/.test(options.initialFrameWidth)) { + options.minFrameWidth = options.initialFrameWidth = + container.offsetWidth; + //如果这里给定宽度,会导致ie在拖动窗口大小时,编辑区域不随着变化 + // container.style.width = options.initialFrameWidth + 'px'; + } + if (/%$/.test(options.initialFrameHeight)) { + options.minFrameHeight = options.initialFrameHeight = + container.offsetHeight; + container.style.height = options.initialFrameHeight + "px"; + } + }); + } + }, + + /** + * 编辑器初始化 + * @method _setup + * @private + * @param { Element } doc 编辑器Iframe中的文档对象 + */ + _setup: function(doc) { + var me = this, + options = me.options; + if (ie) { + doc.body.disabled = true; + doc.body.contentEditable = true; + doc.body.disabled = false; + } else { + doc.body.contentEditable = true; + } + doc.body.spellcheck = false; + me.document = doc; + me.window = doc.defaultView || doc.parentWindow; + me.iframe = me.window.frameElement; + me.body = doc.body; + me.selection = new dom.Selection(doc); + //gecko初始化就能得到range,无法判断isFocus了 + var geckoSel; + if (browser.gecko && (geckoSel = this.selection.getNative())) { + geckoSel.removeAllRanges(); + } + this._initEvents(); + //为form提交提供一个隐藏的textarea + for ( + var form = this.iframe.parentNode; + !domUtils.isBody(form); + form = form.parentNode + ) { + if (form.tagName == "FORM") { + me.form = form; + if (me.options.autoSyncData) { + domUtils.on(me.window, "blur", function() { + setValue(form, me); + }); + } else { + domUtils.on(form, "submit", function() { + setValue(this, me); + }); + } + break; + } + } + if (options.initialContent) { + if (options.autoClearinitialContent) { + var oldExecCommand = me.execCommand; + me.execCommand = function() { + me.fireEvent("firstBeforeExecCommand"); + return oldExecCommand.apply(me, arguments); + }; + this._setDefaultContent(options.initialContent); + } else this.setContent(options.initialContent, false, true); + } + + //编辑器不能为空内容 + + if (domUtils.isEmptyNode(me.body)) { + me.body.innerHTML = "

    " + (browser.ie ? "" : "
    ") + "

    "; + } + //如果要求focus, 就把光标定位到内容开始 + if (options.focus) { + setTimeout(function() { + me.focus(me.options.focusInEnd); + //如果自动清除开着,就不需要做selectionchange; + !me.options.autoClearinitialContent && me._selectionChange(); + }, 0); + } + if (!me.container) { + me.container = this.iframe.parentNode; + } + if (options.fullscreen && me.ui) { + me.ui.setFullScreen(true); + } + + try { + me.document.execCommand("2D-position", false, false); + } catch (e) {} + try { + me.document.execCommand("enableInlineTableEditing", false, false); + } catch (e) {} + try { + me.document.execCommand("enableObjectResizing", false, false); + } catch (e) {} + + //挂接快捷键 + me._bindshortcutKeys(); + me.isReady = 1; + me.fireEvent("ready"); + options.onready && options.onready.call(me); + if (!browser.ie9below) { + domUtils.on(me.window, ["blur", "focus"], function(e) { + //chrome下会出现alt+tab切换时,导致选区位置不对 + if (e.type == "blur") { + me._bakRange = me.selection.getRange(); + try { + me._bakNativeRange = me.selection.getNative().getRangeAt(0); + me.selection.getNative().removeAllRanges(); + } catch (e) { + me._bakNativeRange = null; + } + } else { + try { + me._bakRange && me._bakRange.select(); + } catch (e) {} + } + }); + } + //trace:1518 ff3.6body不够寛,会导致点击空白处无法获得焦点 + if (browser.gecko && browser.version <= 10902) { + //修复ff3.6初始化进来,不能点击获得焦点 + me.body.contentEditable = false; + setTimeout(function() { + me.body.contentEditable = true; + }, 100); + setInterval(function() { + me.body.style.height = me.iframe.offsetHeight - 20 + "px"; + }, 100); + } + + !options.isShow && me.setHide(); + options.readonly && me.setDisabled(); + }, + + /** + * 同步数据到编辑器所在的form + * 从编辑器的容器节点向上查找form元素,若找到,就同步编辑内容到找到的form里,为提交数据做准备,主要用于是手动提交的情况 + * 后台取得数据的键值,使用你容器上的name属性,如果没有就使用参数里的textarea项 + * @method sync + * @example + * ```javascript + * editor.sync(); + * form.sumbit(); //form变量已经指向了form元素 + * ``` + */ + + /** + * 根据传入的formId,在页面上查找要同步数据的表单,若找到,就同步编辑内容到找到的form里,为提交数据做准备 + * 后台取得数据的键值,该键值默认使用给定的编辑器容器的name属性,如果没有name属性则使用参数项里给定的“textarea”项 + * @method sync + * @param { String } formID 指定一个要同步数据的form的id,编辑器的数据会同步到你指定form下 + */ + sync: function(formId) { + var me = this, + form = formId + ? document.getElementById(formId) + : domUtils.findParent( + me.iframe.parentNode, + function(node) { + return node.tagName == "FORM"; + }, + true + ); + form && setValue(form, me); + }, + + /** + * 手动触发更新按钮栏状态 + */ + syncCommandState: function(){ + this.fireEvent("selectionchange"); + }, + + /** + * 设置编辑器宽度 + * @param width + */ + setWidth: function(width){ + if (width !== parseInt(this.iframe.parentNode.parentNode.style.width)) { + this.iframe.parentNode.parentNode.style.width = width + "px"; + } + }, + + /** + * 设置编辑器高度 + * @method setHeight + * @remind 当配置项autoHeightEnabled为真时,该方法无效 + * @param { Number } number 设置的高度值,纯数值,不带单位 + * @example + * ```javascript + * editor.setHeight(number); + * ``` + */ + setHeight: function(height, notSetHeight) { + if (height !== parseInt(this.iframe.parentNode.style.height)) { + this.iframe.parentNode.style.height = height + "px"; + } + !notSetHeight && + (this.options.minFrameHeight = this.options.initialFrameHeight = height); + this.body.style.height = height + "px"; + !notSetHeight && this.trigger("setHeight"); + }, + + /** + * 为编辑器的编辑命令提供快捷键 + * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口 + * @method addshortcutkey + * @param { Object } keyset 命令名和快捷键键值对对象,多个按钮的快捷键用“+”分隔 + * @example + * ```javascript + * editor.addshortcutkey({ + * "Bold" : "ctrl+66",//^B + * "Italic" : "ctrl+73", //^I + * }); + * ``` + */ + /** + * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口 + * @method addshortcutkey + * @param { String } cmd 触发快捷键时,响应的命令 + * @param { String } keys 快捷键的字符串,多个按钮用“+”分隔 + * @example + * ```javascript + * editor.addshortcutkey("Underline", "ctrl+85"); //^U + * ``` + */ + addshortcutkey: function(cmd, keys) { + var obj = {}; + if (keys) { + obj[cmd] = keys; + } else { + obj = cmd; + } + utils.extend(this.shortcutkeys, obj); + }, + + /** + * 对编辑器设置keydown事件监听,绑定快捷键和命令,当快捷键组合触发成功,会响应对应的命令 + * @method _bindshortcutKeys + * @private + */ + _bindshortcutKeys: function() { + var me = this, + shortcutkeys = this.shortcutkeys; + me.addListener("keydown", function(type, e) { + var keyCode = e.keyCode || e.which; + for (var i in shortcutkeys) { + var tmp = shortcutkeys[i].split(","); + for (var t = 0, ti; (ti = tmp[t++]); ) { + ti = ti.split(":"); + var key = ti[0], + param = ti[1]; + if ( + /^(ctrl)(\+shift)?\+(\d+)$/.test(key.toLowerCase()) || + /^(\d+)$/.test(key) + ) { + if ( + ((RegExp.$1 == "ctrl" ? e.ctrlKey || e.metaKey : 0) && + (RegExp.$2 != "" ? e[RegExp.$2.slice(1) + "Key"] : 1) && + keyCode == RegExp.$3) || + keyCode == RegExp.$1 + ) { + if (me.queryCommandState(i, param) != -1) + me.execCommand(i, param); + domUtils.preventDefault(e); + } + } + } + } + }); + }, + + /** + * 获取编辑器的内容 + * @method getContent + * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容 + * @return { String } 编辑器的内容字符串, 如果编辑器的内容为空,或者是空的标签内容(如:”<p><br/></p>“), 则返回空字符串 + * @example + * ```javascript + * //编辑器html内容:

    123456

    + * var content = editor.getContent(); //返回值:

    123456

    + * ``` + */ + + /** + * 获取编辑器的内容。 可以通过参数定义编辑器内置的判空规则 + * @method getContent + * @param { Function } fn 自定的判空规则, 要求该方法返回一个boolean类型的值, + * 代表当前编辑器的内容是否空, + * 如果返回true, 则该方法将直接返回空字符串;如果返回false,则编辑器将返回 + * 经过内置过滤规则处理后的内容。 + * @remind 该方法在处理包含有初始化内容的时候能起到很好的作用。 + * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容 + * @return { String } 编辑器的内容字符串 + * @example + * ```javascript + * // editor 是一个编辑器的实例 + * var content = editor.getContent( function ( editor ) { + * return editor.body.innerHTML === '欢迎使用UEditor'; //返回空字符串 + * } ); + * ``` + */ + getContent: function(cmd, fn, notSetCursor, ignoreBlank, formatter) { + var me = this; + if (cmd && utils.isFunction(cmd)) { + fn = cmd; + cmd = ""; + } + if (fn ? !fn() : !this.hasContents()) { + return ""; + } + me.fireEvent("beforegetcontent"); + var root = UE.htmlparser(me.body.innerHTML, ignoreBlank); + me.filterOutputRule(root); + me.fireEvent("aftergetcontent", cmd, root); + return root.toHtml(formatter); + }, + + /** + * 取得完整的html代码,可以直接显示成完整的html文档 + * @method getAllHtml + * @return { String } 编辑器的内容html文档字符串 + * @eaxmple + * ```javascript + * editor.getAllHtml(); //返回格式大致是: ...... + * ``` + */ + getAllHtml: function() { + var me = this, + headHtml = [], + html = ""; + me.fireEvent("getAllHtml", headHtml); + if (browser.ie && browser.version > 8) { + var headHtmlForIE9 = ""; + utils.each(me.document.styleSheets, function(si) { + headHtmlForIE9 += si.href + ? '' + : ""; + }); + utils.each(me.document.getElementsByTagName("script"), function(si) { + headHtmlForIE9 += si.outerHTML; + }); + } + return ( + "" + + (me.options.charset + ? '' + : "") + + (headHtmlForIE9 || + me.document.getElementsByTagName("head")[0].innerHTML) + + headHtml.join("\n") + + "" + + "" + + me.getContent(null, null, true) + + "" + ); + }, + + /** + * 得到编辑器的纯文本内容,但会保留段落格式 + * @method getPlainTxt + * @return { String } 编辑器带段落格式的纯文本内容字符串 + * @example + * ```javascript + * //编辑器html内容:

    1

    2

    + * console.log(editor.getPlainTxt()); //输出:"1\n2\n + * ``` + */ + getPlainTxt: function() { + var reg = new RegExp(domUtils.fillChar, "g"), + html = this.body.innerHTML.replace(/[\n\r]/g, ""); //ie要先去了\n在处理 + html = html + .replace(/<(p|div)[^>]*>(| )<\/\1>/gi, "\n") + .replace(//gi, "\n") + .replace(/<[^>/]+>/g, "") + .replace(/(\n)?<\/([^>]+)>/g, function(a, b, c) { + return dtd.$block[c] ? "\n" : b ? b : ""; + }); + //取出来的空格会有c2a0会变成乱码,处理这种情况\u00a0 + return html + .replace(reg, "") + .replace(/\u00a0/g, " ") + .replace(/ /g, " "); + }, + + /** + * 获取编辑器中的纯文本内容,没有段落格式 + * @method getContentTxt + * @return { String } 编辑器不带段落格式的纯文本内容字符串 + * @example + * ```javascript + * //编辑器html内容:

    1

    2

    + * console.log(editor.getPlainTxt()); //输出:"12 + * ``` + */ + getContentTxt: function() { + var reg = new RegExp(domUtils.fillChar, "g"); + //取出来的空格会有c2a0会变成乱码,处理这种情况\u00a0 + return this.body[browser.ie ? "innerText" : "textContent"] + .replace(reg, "") + .replace(/\u00a0/g, " "); + }, + + /** + * 设置编辑器的内容,可修改编辑器当前的html内容 + * @method setContent + * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容 + * @warning 该方法会触发selectionchange事件 + * @param { String } html 要插入的html内容 + * @example + * ```javascript + * editor.getContent('

    test

    '); + * ``` + */ + + /** + * 设置编辑器的内容,可修改编辑器当前的html内容 + * @method setContent + * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容 + * @warning 该方法会触发selectionchange事件 + * @param { String } html 要插入的html内容 + * @param { Boolean } isAppendTo 若传入true,不清空原来的内容,在最后插入内容,否则,清空内容再插入 + * @example + * ```javascript + * //假设设置前的编辑器内容是

    old text

    + * editor.setContent('

    new text

    ', true); //插入的结果是

    old text

    new text

    + * ``` + */ + setContent: function(html, isAppendTo, notFireSelectionchange) { + var me = this; + + me.fireEvent("beforesetcontent", html); + var root = UE.htmlparser(html); + me.filterInputRule(root); + html = root.toHtml(); + + me.body.innerHTML = (isAppendTo ? me.body.innerHTML : "") + html; + + function isCdataDiv(node) { + return node.tagName == "DIV" && node.getAttribute("cdata_tag"); + } + //给文本或者inline节点套p标签 + if (me.options.enterTag == "p") { + var child = this.body.firstChild, + tmpNode; + if ( + !child || + (child.nodeType == 1 && + (dtd.$cdata[child.tagName] || + isCdataDiv(child) || + domUtils.isCustomeNode(child)) && + child === this.body.lastChild) + ) { + this.body.innerHTML = + "

    " + + (browser.ie ? " " : "
    ") + + "

    " + + this.body.innerHTML; + } else { + var p = me.document.createElement("p"); + while (child) { + while ( + child && + (child.nodeType == 3 || + (child.nodeType == 1 && + dtd.p[child.tagName] && + !dtd.$cdata[child.tagName])) + ) { + tmpNode = child.nextSibling; + p.appendChild(child); + child = tmpNode; + } + if (p.firstChild) { + if (!child) { + me.body.appendChild(p); + break; + } else { + child.parentNode.insertBefore(p, child); + p = me.document.createElement("p"); + } + } + child = child.nextSibling; + } + } + } + me.fireEvent("aftersetcontent"); + me.fireEvent("contentchange"); + + !notFireSelectionchange && me._selectionChange(); + //清除保存的选区 + me._bakRange = me._bakIERange = me._bakNativeRange = null; + //trace:1742 setContent后gecko能得到焦点问题 + var geckoSel; + if (browser.gecko && (geckoSel = this.selection.getNative())) { + geckoSel.removeAllRanges(); + } + if (me.options.autoSyncData) { + me.form && setValue(me.form, me); + } + }, + + /** + * 让编辑器获得焦点,默认focus到编辑器头部 + * @method focus + * @example + * ```javascript + * editor.focus() + * ``` + */ + + /** + * 让编辑器获得焦点,toEnd确定focus位置 + * @method focus + * @param { Boolean } toEnd 默认focus到编辑器头部,toEnd为true时focus到内容尾部 + * @example + * ```javascript + * editor.focus(true) + * ``` + */ + focus: function(toEnd) { + try { + var me = this, + rng = me.selection.getRange(); + if (toEnd) { + var node = me.body.lastChild; + if (node && node.nodeType == 1 && !dtd.$empty[node.tagName]) { + if (domUtils.isEmptyBlock(node)) { + rng.setStartAtFirst(node); + } else { + rng.setStartAtLast(node); + } + rng.collapse(true); + } + rng.setCursor(true); + } else { + if ( + !rng.collapsed && + domUtils.isBody(rng.startContainer) && + rng.startOffset == 0 + ) { + var node = me.body.firstChild; + if (node && node.nodeType == 1 && !dtd.$empty[node.tagName]) { + rng.setStartAtFirst(node).collapse(true); + } + } + + rng.select(true); + } + this.fireEvent("focus selectionchange"); + } catch (e) {} + }, + isFocus: function() { + return this.selection.isFocus(); + }, + blur: function() { + var sel = this.selection.getNative(); + if (sel.empty && browser.ie) { + var nativeRng = document.body.createTextRange(); + nativeRng.moveToElementText(document.body); + nativeRng.collapse(true); + nativeRng.select(); + sel.empty(); + } else { + sel.removeAllRanges(); + } + + //this.fireEvent('blur selectionchange'); + }, + /** + * 初始化UE事件及部分事件代理 + * @method _initEvents + * @private + */ + _initEvents: function() { + var me = this, + doc = me.document, + win = me.window; + me._proxyDomEvent = utils.bind(me._proxyDomEvent, me); + domUtils.on( + doc, + [ + "click", + "contextmenu", + "mousedown", + "keydown", + "keyup", + "keypress", + "mouseup", + "mouseover", + "mouseout", + "selectstart" + ], + me._proxyDomEvent + ); + domUtils.on(win, ["focus", "blur"], me._proxyDomEvent); + domUtils.on(me.body, "drop", function(e) { + //阻止ff下默认的弹出新页面打开图片 + if (browser.gecko && e.stopPropagation) { + e.stopPropagation(); + } + me.fireEvent("contentchange"); + }); + domUtils.on(doc, ["mouseup", "keydown"], function(evt) { + //特殊键不触发selectionchange + if ( + evt.type == "keydown" && + (evt.ctrlKey || evt.metaKey || evt.shiftKey || evt.altKey) + ) { + return; + } + if (evt.button == 2) return; + me._selectionChange(250, evt); + }); + }, + /** + * 触发事件代理 + * @method _proxyDomEvent + * @private + * @return { * } fireEvent的返回值 + * @see UE.EventBase:fireEvent(String) + */ + _proxyDomEvent: function(evt) { + if ( + this.fireEvent("before" + evt.type.replace(/^on/, "").toLowerCase()) === + false + ) { + return false; + } + if (this.fireEvent(evt.type.replace(/^on/, ""), evt) === false) { + return false; + } + return this.fireEvent( + "after" + evt.type.replace(/^on/, "").toLowerCase() + ); + }, + /** + * 变化选区 + * @method _selectionChange + * @private + */ + _selectionChange: function(delay, evt) { + var me = this; + //有光标才做selectionchange 为了解决未focus时点击source不能触发更改工具栏状态的问题(source命令notNeedUndo=1) + // if ( !me.selection.isFocus() ){ + // return; + // } + + var hackForMouseUp = false; + var mouseX, mouseY; + if (browser.ie && browser.version < 9 && evt && evt.type == "mouseup") { + var range = this.selection.getRange(); + if (!range.collapsed) { + hackForMouseUp = true; + mouseX = evt.clientX; + mouseY = evt.clientY; + } + } + clearTimeout(_selectionChangeTimer); + _selectionChangeTimer = setTimeout(function() { + if (!me.selection || !me.selection.getNative()) { + return; + } + //修复一个IE下的bug: 鼠标点击一段已选择的文本中间时,可能在mouseup后的一段时间内取到的range是在selection的type为None下的错误值. + //IE下如果用户是拖拽一段已选择文本,则不会触发mouseup事件,所以这里的特殊处理不会对其有影响 + var ieRange; + if (hackForMouseUp && me.selection.getNative().type == "None") { + ieRange = me.document.body.createTextRange(); + try { + ieRange.moveToPoint(mouseX, mouseY); + } catch (ex) { + ieRange = null; + } + } + var bakGetIERange; + if (ieRange) { + bakGetIERange = me.selection.getIERange; + me.selection.getIERange = function() { + return ieRange; + }; + } + me.selection.cache(); + if (bakGetIERange) { + me.selection.getIERange = bakGetIERange; + } + if (me.selection._cachedRange && me.selection._cachedStartElement) { + me.fireEvent("beforeselectionchange"); + // 第二个参数causeByUi为true代表由用户交互造成的selectionchange. + me.fireEvent("selectionchange", !!evt); + me.fireEvent("afterselectionchange"); + me.selection.clear(); + } + }, delay || 50); + }, + + /** + * 执行编辑命令 + * @method _callCmdFn + * @private + * @param { String } fnName 函数名称 + * @param { * } args 传给命令函数的参数 + * @return { * } 返回命令函数运行的返回值 + */ + _callCmdFn: function(fnName, args) { + var cmdName = args[0].toLowerCase(), + cmd, + cmdFn; + cmd = this.commands[cmdName] || UE.commands[cmdName]; + cmdFn = cmd && cmd[fnName]; + //没有querycommandstate或者没有command的都默认返回0 + if ((!cmd || !cmdFn) && fnName == "queryCommandState") { + return 0; + } else if (cmdFn) { + return cmdFn.apply(this, args); + } + }, + + /** + * 执行编辑命令cmdName,完成富文本编辑效果 + * @method execCommand + * @param { String } cmdName 需要执行的命令 + * @remind 具体命令的使用请参考命令列表 + * @return { * } 返回命令函数运行的返回值 + * @example + * ```javascript + * editor.execCommand(cmdName); + * ``` + */ + execCommand: function(cmdName) { + cmdName = cmdName.toLowerCase(); + var me = this, + result, + cmd = me.commands[cmdName] || UE.commands[cmdName]; + if (!cmd || !cmd.execCommand) { + return null; + } + if (!cmd.notNeedUndo && !me.__hasEnterExecCommand) { + me.__hasEnterExecCommand = true; + if (me.queryCommandState.apply(me, arguments) != -1) { + me.fireEvent("saveScene"); + me.fireEvent.apply( + me, + ["beforeexeccommand", cmdName].concat(arguments) + ); + result = this._callCmdFn("execCommand", arguments); + //保存场景时,做了内容对比,再看是否进行contentchange触发,这里多触发了一次,去掉 + // (!cmd.ignoreContentChange && !me._ignoreContentChange) && me.fireEvent('contentchange'); + me.fireEvent.apply( + me, + ["afterexeccommand", cmdName].concat(arguments) + ); + me.fireEvent("saveScene"); + } + me.__hasEnterExecCommand = false; + } else { + result = this._callCmdFn("execCommand", arguments); + !me.__hasEnterExecCommand && + !cmd.ignoreContentChange && + !me._ignoreContentChange && + me.fireEvent("contentchange"); + } + !me.__hasEnterExecCommand && + !cmd.ignoreContentChange && + !me._ignoreContentChange && + me._selectionChange(); + return result; + }, + + /** + * 根据传入的command命令,查选编辑器当前的选区,返回命令的状态 + * @method queryCommandState + * @param { String } cmdName 需要查询的命令名称 + * @remind 具体命令的使用请参考命令列表 + * @return { Number } number 返回放前命令的状态,返回值三种情况:(-1|0|1) + * @example + * ```javascript + * editor.queryCommandState(cmdName) => (-1|0|1) + * ``` + * @see COMMAND.LIST + */ + queryCommandState: function(cmdName) { + return this._callCmdFn("queryCommandState", arguments); + }, + + /** + * 根据传入的command命令,查选编辑器当前的选区,根据命令返回相关的值 + * @method queryCommandValue + * @param { String } cmdName 需要查询的命令名称 + * @remind 具体命令的使用请参考命令列表 + * @remind 只有部分插件有此方法 + * @return { * } 返回每个命令特定的当前状态值 + * @grammar editor.queryCommandValue(cmdName) => {*} + * @see COMMAND.LIST + */ + queryCommandValue: function(cmdName) { + return this._callCmdFn("queryCommandValue", arguments); + }, + + /** + * 检查编辑区域中是否有内容 + * @method hasContents + * @remind 默认有文本内容,或者有以下节点都不认为是空 + * table,ul,ol,dl,iframe,area,base,col,hr,img,embed,input,link,meta,param + * @return { Boolean } 检查有内容返回true,否则返回false + * @example + * ```javascript + * editor.hasContents() + * ``` + */ + + /** + * 检查编辑区域中是否有内容,若包含参数tags中的节点类型,直接返回true + * @method hasContents + * @param { Array } tags 传入数组判断时用到的节点类型 + * @return { Boolean } 若文档中包含tags数组里对应的tag,返回true,否则返回false + * @example + * ```javascript + * editor.hasContents(['span']); + * ``` + */ + hasContents: function(tags) { + if (tags) { + for (var i = 0, ci; (ci = tags[i++]); ) { + if (this.document.getElementsByTagName(ci).length > 0) { + return true; + } + } + } + if (!domUtils.isEmptyBlock(this.body)) { + return true; + } + // 随时添加,定义的特殊标签如果存在,不能认为是空 + tags = ["div"]; + for (i = 0; (ci = tags[i++]); ) { + var nodes = domUtils.getElementsByTagName(this.document, ci); + for (var n = 0, cn; (cn = nodes[n++]); ) { + if (domUtils.isCustomeNode(cn)) { + return true; + } + } + } + // 部分如媒体标签,不能认为为空 + tags = [ "video","iframe" ] + for (i = 0; (ci = tags[i++]); ) { + var nodes = domUtils.getElementsByTagName(this.document, ci); + for (var n = 0, cn; (cn = nodes[n++]); ) { + return true; + } + } + return false; + }, + + /** + * 重置编辑器,可用来做多个tab使用同一个编辑器实例 + * @method reset + * @remind 此方法会清空编辑器内容,清空回退列表,会触发reset事件 + * @example + * ```javascript + * editor.reset() + * ``` + */ + reset: function() { + this.fireEvent("reset"); + }, + + /** + * 设置当前编辑区域可以编辑 + * @method setEnabled + * @example + * ```javascript + * editor.setEnabled() + * ``` + */ + setEnabled: function() { + var me = this, + range; + if (me.body.contentEditable == "false") { + me.body.contentEditable = true; + range = me.selection.getRange(); + //有可能内容丢失了 + try { + range.moveToBookmark(me.lastBk); + delete me.lastBk; + } catch (e) { + range.setStartAtFirst(me.body).collapse(true); + } + range.select(true); + if (me.bkqueryCommandState) { + me.queryCommandState = me.bkqueryCommandState; + delete me.bkqueryCommandState; + } + if (me.bkqueryCommandValue) { + me.queryCommandValue = me.bkqueryCommandValue; + delete me.bkqueryCommandValue; + } + me.fireEvent("selectionchange"); + } + }, + enable: function() { + return this.setEnabled(); + }, + + /** 设置当前编辑区域不可编辑 + * @method setDisabled + */ + + /** 设置当前编辑区域不可编辑,except中的命令除外 + * @method setDisabled + * @param { String } except 例外命令的字符串 + * @remind 即使设置了disable,此处配置的例外命令仍然可以执行 + * @example + * ```javascript + * editor.setDisabled('bold'); //禁用工具栏中除加粗之外的所有功能 + * ``` + */ + + /** 设置当前编辑区域不可编辑,except中的命令除外 + * @method setDisabled + * @param { Array } except 例外命令的字符串数组,数组中的命令仍然可以执行 + * @remind 即使设置了disable,此处配置的例外命令仍然可以执行 + * @example + * ```javascript + * editor.setDisabled(['bold','insertimage']); //禁用工具栏中除加粗和插入图片之外的所有功能 + * ``` + */ + setDisabled: function(except) { + var me = this; + except = except ? (utils.isArray(except) ? except : [except]) : []; + if (me.body.contentEditable == "true") { + if (!me.lastBk) { + me.lastBk = me.selection.getRange().createBookmark(true); + } + me.body.contentEditable = false; + me.bkqueryCommandState = me.queryCommandState; + me.bkqueryCommandValue = me.queryCommandValue; + me.queryCommandState = function(type) { + if (utils.indexOf(except, type) != -1) { + return me.bkqueryCommandState.apply(me, arguments); + } + return -1; + }; + me.queryCommandValue = function(type) { + if (utils.indexOf(except, type) != -1) { + return me.bkqueryCommandValue.apply(me, arguments); + } + return null; + }; + me.fireEvent("selectionchange"); + } + }, + disable: function(except) { + return this.setDisabled(except); + }, + + /** + * 设置默认内容 + * @method _setDefaultContent + * @private + * @param { String } cont 要存入的内容 + */ + _setDefaultContent: (function() { + function clear() { + var me = this; + if (me.document.getElementById("initContent")) { + me.body.innerHTML = "

    " + (ie ? "" : "
    ") + "

    "; + me.removeListener("firstBeforeExecCommand focus", clear); + setTimeout(function() { + me.focus(); + me._selectionChange(); + }, 0); + } + } + + return function(cont) { + var me = this; + me.body.innerHTML = '

    ' + cont + "

    "; + + me.addListener("firstBeforeExecCommand focus", clear); + }; + })(), + + /** + * 显示编辑器 + * @method setShow + * @example + * ```javascript + * editor.setShow() + * ``` + */ + setShow: function() { + var me = this, + range = me.selection.getRange(); + if (me.container.style.display == "none") { + //有可能内容丢失了 + try { + range.moveToBookmark(me.lastBk); + delete me.lastBk; + } catch (e) { + range.setStartAtFirst(me.body).collapse(true); + } + //ie下focus实效,所以做了个延迟 + setTimeout(function() { + range.select(true); + }, 100); + me.container.style.display = ""; + } + }, + show: function() { + return this.setShow(); + }, + /** + * 隐藏编辑器 + * @method setHide + * @example + * ```javascript + * editor.setHide() + * ``` + */ + setHide: function() { + var me = this; + if (!me.lastBk) { + me.lastBk = me.selection.getRange().createBookmark(true); + } + me.container.style.display = "none"; + }, + hide: function() { + return this.setHide(); + }, + + /** + * 根据指定的路径,获取对应的语言资源 + * @method getLang + * @param { String } path 路径根据的是lang目录下的语言文件的路径结构 + * @return { Object | String } 根据路径返回语言资源的Json格式对象或者语言字符串 + * @example + * ```javascript + * editor.getLang('contextMenu.delete'); //如果当前是中文,那返回是的是'删除' + * ``` + */ + getLang: function(path) { + var lang = UE.I18N[this.options.lang]; + if (!lang) { + throw Error("not import language file"); + } + path = (path || "").split("."); + for (var i = 0, ci; (ci = path[i++]); ) { + lang = lang[ci]; + if (!lang) break; + } + return lang; + }, + + /** + * 计算编辑器html内容字符串的长度 + * @method getContentLength + * @return { Number } 返回计算的长度 + * @example + * ```javascript + * //编辑器html内容

    132

    + * editor.getContentLength() //返回27 + * ``` + */ + /** + * 计算编辑器当前纯文本内容的长度 + * @method getContentLength + * @param { Boolean } ingoneHtml 传入true时,只按照纯文本来计算 + * @return { Number } 返回计算的长度,内容中有hr/img/iframe标签,长度加1 + * @example + * ```javascript + * //编辑器html内容

    132

    + * editor.getContentLength() //返回3 + * ``` + */ + getContentLength: function(ingoneHtml, tagNames) { + var count = this.getContent(false, false, true).length; + if (ingoneHtml) { + tagNames = (tagNames || []).concat(["hr", "img", "iframe"]); + count = this.getContentTxt().replace(/[\t\r\n]+/g, "").length; + for (var i = 0, ci; (ci = tagNames[i++]); ) { + count += this.document.getElementsByTagName(ci).length; + } + } + return count; + }, + + /** + * 注册输入过滤规则 + * @method addInputRule + * @param { Function } rule 要添加的过滤规则 + * @example + * ```javascript + * editor.addInputRule(function(root){ + * $.each(root.getNodesByTagName('div'),function(i,node){ + * node.tagName="p"; + * }); + * }); + * ``` + */ + addInputRule: function(rule) { + this.inputRules.push(rule); + }, + + /** + * 执行注册的过滤规则 + * @method filterInputRule + * @param { UE.uNode } root 要过滤的uNode节点 + * @remind 执行editor.setContent方法和执行'inserthtml'命令后,会运行该过滤函数 + * @example + * ```javascript + * editor.filterInputRule(editor.body); + * ``` + * @see UE.Editor:addInputRule + */ + filterInputRule: function(root) { + for (var i = 0, ci; (ci = this.inputRules[i++]); ) { + ci.call(this, root); + } + }, + + /** + * 注册输出过滤规则 + * @method addOutputRule + * @param { Function } rule 要添加的过滤规则 + * @example + * ```javascript + * editor.addOutputRule(function(root){ + * $.each(root.getNodesByTagName('p'),function(i,node){ + * node.tagName="div"; + * }); + * }); + * ``` + */ + addOutputRule: function(rule) { + this.outputRules.push(rule); + }, + + /** + * 根据输出过滤规则,过滤编辑器内容 + * @method filterOutputRule + * @remind 执行editor.getContent方法的时候,会先运行该过滤函数 + * @param { UE.uNode } root 要过滤的uNode节点 + * @example + * ```javascript + * editor.filterOutputRule(editor.body); + * ``` + * @see UE.Editor:addOutputRule + */ + filterOutputRule: function(root) { + for (var i = 0, ci; (ci = this.outputRules[i++]); ) { + ci.call(this, root); + } + }, + + /** + * 根据action名称获取请求的路径 + * @method getActionUrl + * @remind 假如没有设置serverUrl,会根据imageUrl设置默认的controller路径 + * @param { String } action action名称 + * @example + * ```javascript + * editor.getActionUrl('config'); //返回 "/ueditor/php/controller.php?action=config" + * editor.getActionUrl('image'); //返回 "/ueditor/php/controller.php?action=uplaodimage" + * editor.getActionUrl('scrawl'); //返回 "/ueditor/php/controller.php?action=uplaodscrawl" + * editor.getActionUrl('imageManager'); //返回 "/ueditor/php/controller.php?action=listimage" + * ``` + */ + getActionUrl: function(action) { + var actionName = this.getOpt(action) || action, + imageUrl = this.getOpt("imageUrl"), + serverUrl = this.getOpt("serverUrl"); + + if (!serverUrl && imageUrl) { + serverUrl = imageUrl.replace(/^(.*[\/]).+([\.].+)$/, "$1controller$2"); + } + + if (serverUrl) { + serverUrl = + serverUrl + + (serverUrl.indexOf("?") == -1 ? "?" : "&") + + "action=" + + (actionName || ""); + return utils.formatUrl(serverUrl); + } else { + return ""; + } + } + }; + utils.inherits(Editor, EventBase); +})(); + + +// core/Editor.defaultoptions.js +//维护编辑器一下默认的不在插件中的配置项 +UE.Editor.defaultOptions = function(editor) { + var _url = editor.options.UEDITOR_HOME_URL; + return { + isShow: true, + initialContent: "", + initialStyle: "", + autoClearinitialContent: false, + iframeCssUrl: _url + "themes/iframe.css?20220503", + iframeCssUrlsAddition: [], + textarea: "editorValue", + focus: false, + focusInEnd: true, + autoClearEmptyNode: true, + fullscreen: false, + readonly: false, + zIndex: 999, + imagePopup: true, + enterTag: "p", + customDomain: false, + lang: "zh-cn", + langPath: _url + "lang/", + theme: "default", + themePath: _url + "themes/", + allHtmlEnabled: false, + scaleEnabled: false, + tableNativeEditInFF: false, + autoSyncData: true, + fileNameFormat: "{time}{rand:6}" + }; +}; + + +// core/loadconfig.js +(function() { + UE.Editor.prototype.loadServerConfig = function() { + var me = this; + setTimeout(function() { + try { + me.options.imageUrl && + me.setOpt( + "serverUrl", + me.options.imageUrl.replace( + /^(.*[\/]).+([\.].+)$/, + "$1controller$2" + ) + ); + + var configUrl = me.getActionUrl("config"), + isJsonp = utils.isCrossDomainUrl(configUrl); + + /* 发出ajax请求 */ + me._serverConfigLoaded = false; + + configUrl && + UE.ajax.request(configUrl, { + method: "GET", + dataType: isJsonp ? "jsonp" : "", + onsuccess: function(r) { + try { + var config = isJsonp ? r : eval("(" + r.responseText + ")"); + utils.extend(me.options, config); + // console.log('me.options.before',me.options); + // console.log('server.config',config); + // console.log('me.options.after',me.options); + me.fireEvent("serverConfigLoaded"); + me._serverConfigLoaded = true; + } catch (e) { + showErrorMsg(me.getLang("loadconfigFormatError")); + } + }, + onerror: function() { + showErrorMsg(me.getLang("loadconfigHttpError")); + } + }); + } catch (e) { + showErrorMsg(me.getLang("loadconfigError")); + } + }); + + function showErrorMsg(msg) { + console && console.error(msg); + //me.fireEvent('showMessage', { + // 'title': msg, + // 'type': 'error' + //}); + } + }; + + UE.Editor.prototype.isServerConfigLoaded = function() { + var me = this; + return me._serverConfigLoaded || false; + }; + + UE.Editor.prototype.afterConfigReady = function(handler) { + if (!handler || !utils.isFunction(handler)) return; + var me = this; + var readyHandler = function() { + handler.apply(me, arguments); + me.removeListener("serverConfigLoaded", readyHandler); + }; + + if (me.isServerConfigLoaded()) { + handler.call(me, "serverConfigLoaded"); + } else { + me.addListener("serverConfigLoaded", readyHandler); + } + }; +})(); + + +// core/ajax.js +/** + * @file + * @module UE.ajax + * @since 1.2.6.1 + */ + +/** + * 提供对ajax请求的支持 + * @module UE.ajax + */ +UE.ajax = (function() { + //创建一个ajaxRequest对象 + var fnStr = "XMLHttpRequest()"; + try { + new ActiveXObject("Msxml2.XMLHTTP"); + fnStr = "ActiveXObject('Msxml2.XMLHTTP')"; + } catch (e) { + try { + new ActiveXObject("Microsoft.XMLHTTP"); + fnStr = "ActiveXObject('Microsoft.XMLHTTP')"; + } catch (e) {} + } + var creatAjaxRequest = new Function("return new " + fnStr); + + /** + * 将json参数转化成适合ajax提交的参数列表 + * @param json + */ + function json2str(json) { + var strArr = []; + for (var i in json) { + //忽略默认的几个参数 + if ( + i == "method" || + i == "timeout" || + i == "async" || + i == "dataType" || + i == "callback" + ) + continue; + //忽略控制 + if (json[i] == undefined || json[i] == null) continue; + //传递过来的对象和函数不在提交之列 + if ( + !( + (typeof json[i]).toLowerCase() == "function" || + (typeof json[i]).toLowerCase() == "object" + ) + ) { + strArr.push(encodeURIComponent(i) + "=" + encodeURIComponent(json[i])); + } else if (utils.isArray(json[i])) { + //支持传数组内容 + for (var j = 0; j < json[i].length; j++) { + strArr.push( + encodeURIComponent(i) + "[]=" + encodeURIComponent(json[i][j]) + ); + } + } + } + return strArr.join("&"); + } + + function doAjax(url, ajaxOptions) { + var xhr = creatAjaxRequest(), + //是否超时 + timeIsOut = false, + //默认参数 + defaultAjaxOptions = { + method: "POST", + timeout: 5000, + async: true, + data: {}, //需要传递对象的话只能覆盖 + onsuccess: function() {}, + onerror: function() {} + }; + + if (typeof url === "object") { + ajaxOptions = url; + url = ajaxOptions.url; + } + if (!xhr || !url) return; + var ajaxOpts = ajaxOptions + ? utils.extend(defaultAjaxOptions, ajaxOptions) + : defaultAjaxOptions; + + var submitStr = json2str(ajaxOpts); // { name:"Jim",city:"Beijing" } --> "name=Jim&city=Beijing" + //如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串 + if (!utils.isEmptyObject(ajaxOpts.data)) { + submitStr += (submitStr ? "&" : "") + json2str(ajaxOpts.data); + } + //超时检测 + var timerID = setTimeout(function() { + if (xhr.readyState != 4) { + timeIsOut = true; + xhr.abort(); + clearTimeout(timerID); + } + }, ajaxOpts.timeout); + + var method = ajaxOpts.method.toUpperCase(); + var str = + url + + (url.indexOf("?") == -1 ? "?" : "&") + + (method == "POST" ? "" : submitStr + "&noCache=" + +new Date()); + xhr.open(method, str, ajaxOpts.async); + xhr.onreadystatechange = function() { + if (xhr.readyState == 4) { + if (!timeIsOut && xhr.status == 200) { + ajaxOpts.onsuccess(xhr); + } else { + ajaxOpts.onerror(xhr); + } + } + }; + if (method == "POST") { + xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + xhr.send(submitStr); + } else { + xhr.send(null); + } + } + + function doJsonp(url, opts) { + var successhandler = opts.onsuccess || function() {}, + scr = document.createElement("SCRIPT"), + options = opts || {}, + charset = options["charset"], + callbackField = options["jsonp"] || "callback", + callbackFnName, + timeOut = options["timeOut"] || 0, + timer, + reg = new RegExp("(\\?|&)" + callbackField + "=([^&]*)"), + matches; + + if (utils.isFunction(successhandler)) { + callbackFnName = + "bd__editor__" + Math.floor(Math.random() * 2147483648).toString(36); + window[callbackFnName] = getCallBack(0); + } else if (utils.isString(successhandler)) { + callbackFnName = successhandler; + } else { + if ((matches = reg.exec(url))) { + callbackFnName = matches[2]; + } + } + + url = url.replace(reg, "\x241" + callbackField + "=" + callbackFnName); + + if (url.search(reg) < 0) { + url += + (url.indexOf("?") < 0 ? "?" : "&") + + callbackField + + "=" + + callbackFnName; + } + + var queryStr = json2str(opts); // { name:"Jim",city:"Beijing" } --> "name=Jim&city=Beijing" + //如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串 + if (!utils.isEmptyObject(opts.data)) { + queryStr += (queryStr ? "&" : "") + json2str(opts.data); + } + if (queryStr) { + url = url.replace(/\?/, "?" + queryStr + "&"); + } + + scr.onerror = getCallBack(1); + if (timeOut) { + timer = setTimeout(getCallBack(1), timeOut); + } + createScriptTag(scr, url, charset); + + function createScriptTag(scr, url, charset) { + scr.setAttribute("type", "text/javascript"); + scr.setAttribute("defer", "defer"); + charset && scr.setAttribute("charset", charset); + scr.setAttribute("src", url); + document.getElementsByTagName("head")[0].appendChild(scr); + } + + function getCallBack(onTimeOut) { + return function() { + try { + if (onTimeOut) { + options.onerror && options.onerror(); + } else { + try { + clearTimeout(timer); + successhandler.apply(window, arguments); + } catch (e) {} + } + } catch (exception) { + options.onerror && options.onerror.call(window, exception); + } finally { + options.oncomplete && options.oncomplete.apply(window, arguments); + scr.parentNode && scr.parentNode.removeChild(scr); + window[callbackFnName] = null; + try { + delete window[callbackFnName]; + } catch (e) {} + } + }; + } + } + + return { + /** + * 根据给定的参数项,向指定的url发起一个ajax请求。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求 + * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调 + * @method request + * @param { URLString } url ajax请求的url地址 + * @param { Object } ajaxOptions ajax请求选项的键值对,支持的选项如下: + * @example + * ```javascript + * //向sayhello.php发起一个异步的Ajax GET请求, 请求超时时间为10s, 请求完成后执行相应的回调。 + * UE.ajax.requeset( 'sayhello.php', { + * + * //请求方法。可选值: 'GET', 'POST',默认值是'POST' + * method: 'GET', + * + * //超时时间。 默认为5000, 单位是ms + * timeout: 10000, + * + * //是否是异步请求。 true为异步请求, false为同步请求 + * async: true, + * + * //请求携带的数据。如果请求为GET请求, data会经过stringify后附加到请求url之后。 + * data: { + * name: 'ueditor' + * }, + * + * //请求成功后的回调, 该回调接受当前的XMLHttpRequest对象作为参数。 + * onsuccess: function ( xhr ) { + * console.log( xhr.responseText ); + * }, + * + * //请求失败或者超时后的回调。 + * onerror: function ( xhr ) { + * alert( 'Ajax请求失败' ); + * } + * + * } ); + * ``` + */ + + /** + * 根据给定的参数项发起一个ajax请求, 参数项里必须包含一个url地址。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求 + * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调。 + * @method request + * @warning 如果在参数项里未提供一个key为“url”的地址值,则该请求将直接退出。 + * @param { Object } ajaxOptions ajax请求选项的键值对,支持的选项如下: + * @example + * ```javascript + * + * //向sayhello.php发起一个异步的Ajax POST请求, 请求超时时间为5s, 请求完成后不执行任何回调。 + * UE.ajax.requeset( 'sayhello.php', { + * + * //请求的地址, 该项是必须的。 + * url: 'sayhello.php' + * + * } ); + * ``` + */ + request: function(url, opts) { + if (opts && opts.dataType == "jsonp") { + doJsonp(url, opts); + } else { + doAjax(url, opts); + } + }, + getJSONP: function(url, data, fn) { + var opts = { + data: data, + oncomplete: fn + }; + doJsonp(url, opts); + } + }; +})(); + + +// core/filterword.js +/** + * UE过滤word的静态方法 + * @file + */ + +/** + * UEditor公用空间,UEditor所有的功能都挂载在该空间下 + * @module UE + */ + +/** + * 根据传入html字符串过滤word + * @module UE + * @since 1.2.6.1 + * @method filterWord + * @param { String } html html字符串 + * @return { String } 已过滤后的结果字符串 + * @example + * ```javascript + * UE.filterWord(html); + * ``` + */ +var filterWord = (UE.filterWord = (function() { + //是否是word过来的内容 + function isWordDocument(str) { + return /(class="?Mso|style="[^"]*\bmso\-|w:WordDocument|<(v|o):|lang=)/gi.test( + str + ); + } + //去掉小数 + function transUnit(v) { + v = v.replace(/[\d.]+\w+/g, function(m) { + return utils.transUnitToPx(m); + }); + return v; + } + + function filterPasteWord(str) { + return ( + str + .replace(/[\t\r\n]+/g, " ") + .replace(//gi, "") + //转换图片 + .replace(/]*>[\s\S]*?.<\/v:shape>/gi, function(str) { + //opera能自己解析出image所这里直接返回空 + if (browser.opera) { + return ""; + } + try { + //有可能是bitmap占为图,无用,直接过滤掉,主要体现在粘贴excel表格中 + if (/Bitmap/i.test(str)) { + return ""; + } + var width = str.match(/width:([ \d.]*p[tx])/i)[1], + height = str.match(/height:([ \d.]*p[tx])/i)[1], + src = str.match(/src=\s*"([^"]*)"/i)[1]; + return ( + '' + ); + } catch (e) { + return ""; + } + }) + //针对wps添加的多余标签处理 + .replace(/<\/?div[^>]*>/g, "") + //去掉多余的属性 + .replace(/v:\w+=(["']?)[^'"]+\1/g, "") + .replace( + /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|xml|meta|link|style|\w+:\w+)(?=[\s\/>]))[^>]*>/gi, + "" + ) + .replace( + /

    ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, + "

    $1

    " + ) + //去掉多余的属性 + .replace(/\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/gi, function( + str, + name, + marks, + val + ) { + //保留list的标示 + return name == "class" && val == "MsoListParagraph" ? str : ""; + }) + //清除多余的font/span不能匹配 有可能是空格 + .replace(/<(font|span)[^>]*>(\s*)<\/\1>/gi, function(a, b, c) { + return c.replace(/[\t\r\n ]+/g, " "); + }) + //处理style的问题 + .replace(/(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi, function( + str, + tag, + tmp, + style + ) { + var n = [], + s = style + .replace(/^\s+|\s+$/, "") + .replace(/'/g, "'") + .replace(/"/gi, "'") + .replace(/[\d.]+(cm|pt)/g, function(str) { + return utils.transUnitToPx(str); + }) + .split(/;\s*/g); + + for (var i = 0, v; (v = s[i]); i++) { + var name, + value, + parts = v.split(":"); + + if (parts.length == 2) { + name = parts[0].toLowerCase(); + value = parts[1].toLowerCase(); + if ( + (/^(background)\w*/.test(name) && + value.replace(/(initial|\s)/g, "").length == 0) || + (/^(margin)\w*/.test(name) && /^0\w+$/.test(value)) + ) { + continue; + } + + switch (name) { + case "mso-padding-alt": + case "mso-padding-top-alt": + case "mso-padding-right-alt": + case "mso-padding-bottom-alt": + case "mso-padding-left-alt": + case "mso-margin-alt": + case "mso-margin-top-alt": + case "mso-margin-right-alt": + case "mso-margin-bottom-alt": + case "mso-margin-left-alt": + //ie下会出现挤到一起的情况 + //case "mso-table-layout-alt": + case "mso-height": + case "mso-width": + case "mso-vertical-align-alt": + //trace:1819 ff下会解析出padding在table上 + if (!/]/.test(html)) { + return UE.htmlparser(html).children[0]; + } else { + return new uNode({ + type: "element", + children: [], + tagName: html + }); + } + }; + uNode.createText = function(data, noTrans) { + return new UE.uNode({ + type: "text", + data: noTrans ? data : utils.unhtml(data || "") + }); + }; + function nodeToHtml(node, arr, formatter, current) { + switch (node.type) { + case "root": + for (var i = 0, ci; (ci = node.children[i++]); ) { + //插入新行 + if ( + formatter && + ci.type == "element" && + !dtd.$inlineWithA[ci.tagName] && + i > 1 + ) { + insertLine(arr, current, true); + insertIndent(arr, current); + } + nodeToHtml(ci, arr, formatter, current); + } + break; + case "text": + isText(node, arr); + break; + case "element": + isElement(node, arr, formatter, current); + break; + case "comment": + isComment(node, arr, formatter); + } + return arr; + } + + function isText(node, arr) { + if (node.parentNode.tagName == "pre") { + //源码模式下输入html标签,不能做转换处理,直接输出 + arr.push(node.data); + } else { + arr.push( + notTransTagName[node.parentNode.tagName] + ? utils.html(node.data) + : node.data.replace(/[ ]{2}/g, "  ") + ); + } + } + + function isElement(node, arr, formatter, current) { + var attrhtml = ""; + if (node.attrs) { + attrhtml = []; + var attrs = node.attrs; + for (var a in attrs) { + //这里就针对 + //

    '

    + //这里边的\"做转换,要不用innerHTML直接被截断了,属性src + //有可能做的不够 + attrhtml.push( + a + + (attrs[a] !== undefined + ? '="' + + (notTransAttrs[a] + ? utils.html(attrs[a]).replace(/["]/g, function(a) { + return """; + }) + : utils.unhtml(attrs[a])) + + '"' + : "") + ); + } + attrhtml = attrhtml.join(" "); + } + arr.push( + "<" + + node.tagName + + (attrhtml ? " " + attrhtml : "") + + (dtd.$empty[node.tagName] ? "/" : "") + + ">" + ); + //插入新行 + if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != "pre") { + if (node.children && node.children.length) { + current = insertLine(arr, current, true); + insertIndent(arr, current); + } + } + if (node.children && node.children.length) { + for (var i = 0, ci; (ci = node.children[i++]); ) { + if ( + formatter && + ci.type == "element" && + !dtd.$inlineWithA[ci.tagName] && + i > 1 + ) { + insertLine(arr, current); + insertIndent(arr, current); + } + nodeToHtml(ci, arr, formatter, current); + } + } + if (!dtd.$empty[node.tagName]) { + if ( + formatter && + !dtd.$inlineWithA[node.tagName] && + node.tagName != "pre" + ) { + if (node.children && node.children.length) { + current = insertLine(arr, current); + insertIndent(arr, current); + } + } + arr.push(""); + } + } + + function isComment(node, arr) { + arr.push(""); + } + + function getNodeById(root, id) { + var node; + if (root.type == "element" && root.getAttr("id") == id) { + return root; + } + if (root.children && root.children.length) { + for (var i = 0, ci; (ci = root.children[i++]); ) { + if ((node = getNodeById(ci, id))) { + return node; + } + } + } + } + + function getNodesByTagName(node, tagName, arr) { + if (node.type == "element" && node.tagName == tagName) { + arr.push(node); + } + if (node.children && node.children.length) { + for (var i = 0, ci; (ci = node.children[i++]); ) { + getNodesByTagName(ci, tagName, arr); + } + } + } + function nodeTraversal(root, fn) { + if (root.children && root.children.length) { + for (var i = 0, ci; (ci = root.children[i]); ) { + nodeTraversal(ci, fn); + //ci被替换的情况,这里就不再走 fn了 + if (ci.parentNode) { + if (ci.children && ci.children.length) { + fn(ci); + } + if (ci.parentNode) i++; + } + } + } else { + fn(root); + } + } + uNode.prototype = { + /** + * 当前节点对象,转换成html文本 + * @method toHtml + * @return { String } 返回转换后的html字符串 + * @example + * ```javascript + * node.toHtml(); + * ``` + */ + + /** + * 当前节点对象,转换成html文本 + * @method toHtml + * @param { Boolean } formatter 是否格式化返回值 + * @return { String } 返回转换后的html字符串 + * @example + * ```javascript + * node.toHtml( true ); + * ``` + */ + toHtml: function(formatter) { + var arr = []; + nodeToHtml(this, arr, formatter, 0); + return arr.join(""); + }, + + /** + * 获取节点的html内容 + * @method innerHTML + * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 + * @return { String } 返回节点的html内容 + * @example + * ```javascript + * var htmlstr = node.innerHTML(); + * ``` + */ + + /** + * 设置节点的html内容 + * @method innerHTML + * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 + * @param { String } htmlstr 传入要设置的html内容 + * @return { UE.uNode } 返回节点本身 + * @example + * ```javascript + * node.innerHTML('text'); + * ``` + */ + innerHTML: function(htmlstr) { + if (this.type != "element" || dtd.$empty[this.tagName]) { + return this; + } + if (utils.isString(htmlstr)) { + if (this.children) { + for (var i = 0, ci; (ci = this.children[i++]); ) { + ci.parentNode = null; + } + } + this.children = []; + var tmpRoot = UE.htmlparser(htmlstr); + for (var i = 0, ci; (ci = tmpRoot.children[i++]); ) { + this.children.push(ci); + ci.parentNode = this; + } + return this; + } else { + var tmpRoot = new UE.uNode({ + type: "root", + children: this.children + }); + return tmpRoot.toHtml(); + } + }, + + /** + * 获取节点的纯文本内容 + * @method innerText + * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 + * @return { String } 返回节点的存文本内容 + * @example + * ```javascript + * var textStr = node.innerText(); + * ``` + */ + + /** + * 设置节点的纯文本内容 + * @method innerText + * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 + * @param { String } textStr 传入要设置的文本内容 + * @return { UE.uNode } 返回节点本身 + * @example + * ```javascript + * node.innerText('text'); + * ``` + */ + innerText: function(textStr, noTrans) { + if (this.type != "element" || dtd.$empty[this.tagName]) { + return this; + } + if (textStr) { + if (this.children) { + for (var i = 0, ci; (ci = this.children[i++]); ) { + ci.parentNode = null; + } + } + this.children = []; + this.appendChild(uNode.createText(textStr, noTrans)); + return this; + } else { + return this.toHtml().replace(/<[^>]+>/g, ""); + } + }, + + /** + * 获取当前对象的data属性 + * @method getData + * @return { Object } 若节点的type值是elemenet,返回空字符串,否则返回节点的data属性 + * @example + * ```javascript + * node.getData(); + * ``` + */ + getData: function() { + if (this.type == "element") return ""; + return this.data; + }, + + /** + * 获取当前节点下的第一个子节点 + * @method firstChild + * @return { UE.uNode } 返回第一个子节点 + * @example + * ```javascript + * node.firstChild(); //返回第一个子节点 + * ``` + */ + firstChild: function() { + // if (this.type != 'element' || dtd.$empty[this.tagName]) { + // return this; + // } + return this.children ? this.children[0] : null; + }, + + /** + * 获取当前节点下的最后一个子节点 + * @method lastChild + * @return { UE.uNode } 返回最后一个子节点 + * @example + * ```javascript + * node.lastChild(); //返回最后一个子节点 + * ``` + */ + lastChild: function() { + // if (this.type != 'element' || dtd.$empty[this.tagName] ) { + // return this; + // } + return this.children ? this.children[this.children.length - 1] : null; + }, + + /** + * 获取和当前节点有相同父亲节点的前一个节点 + * @method previousSibling + * @return { UE.uNode } 返回前一个节点 + * @example + * ```javascript + * node.children[2].previousSibling(); //返回子节点node.children[1] + * ``` + */ + previousSibling: function() { + var parent = this.parentNode; + for (var i = 0, ci; (ci = parent.children[i]); i++) { + if (ci === this) { + return i == 0 ? null : parent.children[i - 1]; + } + } + }, + + /** + * 获取和当前节点有相同父亲节点的后一个节点 + * @method nextSibling + * @return { UE.uNode } 返回后一个节点,找不到返回null + * @example + * ```javascript + * node.children[2].nextSibling(); //如果有,返回子节点node.children[3] + * ``` + */ + nextSibling: function() { + var parent = this.parentNode; + for (var i = 0, ci; (ci = parent.children[i++]); ) { + if (ci === this) { + return parent.children[i]; + } + } + }, + + /** + * 用新的节点替换当前节点 + * @method replaceChild + * @param { UE.uNode } target 要替换成该节点参数 + * @param { UE.uNode } source 要被替换掉的节点 + * @return { UE.uNode } 返回替换之后的节点对象 + * @example + * ```javascript + * node.replaceChild(newNode, childNode); //用newNode替换childNode,childNode是node的子节点 + * ``` + */ + replaceChild: function(target, source) { + if (this.children) { + if (target.parentNode) { + target.parentNode.removeChild(target); + } + for (var i = 0, ci; (ci = this.children[i]); i++) { + if (ci === source) { + this.children.splice(i, 1, target); + source.parentNode = null; + target.parentNode = this; + return target; + } + } + } + }, + + /** + * 在节点的子节点列表最后位置插入一个节点 + * @method appendChild + * @param { UE.uNode } node 要插入的节点 + * @return { UE.uNode } 返回刚插入的子节点 + * @example + * ```javascript + * node.appendChild( newNode ); //在node内插入子节点newNode + * ``` + */ + appendChild: function(node) { + if ( + this.type == "root" || + (this.type == "element" && !dtd.$empty[this.tagName]) + ) { + if (!this.children) { + this.children = []; + } + if (node.parentNode) { + node.parentNode.removeChild(node); + } + for (var i = 0, ci; (ci = this.children[i]); i++) { + if (ci === node) { + this.children.splice(i, 1); + break; + } + } + this.children.push(node); + node.parentNode = this; + return node; + } + }, + + /** + * 在传入节点的前面插入一个节点 + * @method insertBefore + * @param { UE.uNode } target 要插入的节点 + * @param { UE.uNode } source 在该参数节点前面插入 + * @return { UE.uNode } 返回刚插入的子节点 + * @example + * ```javascript + * node.parentNode.insertBefore(newNode, node); //在node节点后面插入newNode + * ``` + */ + insertBefore: function(target, source) { + if (this.children) { + if (target.parentNode) { + target.parentNode.removeChild(target); + } + for (var i = 0, ci; (ci = this.children[i]); i++) { + if (ci === source) { + this.children.splice(i, 0, target); + target.parentNode = this; + return target; + } + } + } + }, + + /** + * 在传入节点的后面插入一个节点 + * @method insertAfter + * @param { UE.uNode } target 要插入的节点 + * @param { UE.uNode } source 在该参数节点后面插入 + * @return { UE.uNode } 返回刚插入的子节点 + * @example + * ```javascript + * node.parentNode.insertAfter(newNode, node); //在node节点后面插入newNode + * ``` + */ + insertAfter: function(target, source) { + if (this.children) { + if (target.parentNode) { + target.parentNode.removeChild(target); + } + for (var i = 0, ci; (ci = this.children[i]); i++) { + if (ci === source) { + this.children.splice(i + 1, 0, target); + target.parentNode = this; + return target; + } + } + } + }, + + /** + * 从当前节点的子节点列表中,移除节点 + * @method removeChild + * @param { UE.uNode } node 要移除的节点引用 + * @param { Boolean } keepChildren 是否保留移除节点的子节点,若传入true,自动把移除节点的子节点插入到移除的位置 + * @return { * } 返回刚移除的子节点 + * @example + * ```javascript + * node.removeChild(childNode,true); //在node的子节点列表中移除child节点,并且吧child的子节点插入到移除的位置 + * ``` + */ + removeChild: function(node, keepChildren) { + if (this.children) { + for (var i = 0, ci; (ci = this.children[i]); i++) { + if (ci === node) { + this.children.splice(i, 1); + ci.parentNode = null; + if (keepChildren && ci.children && ci.children.length) { + for (var j = 0, cj; (cj = ci.children[j]); j++) { + this.children.splice(i + j, 0, cj); + cj.parentNode = this; + } + } + return ci; + } + } + } + }, + + /** + * 获取当前节点所代表的元素属性,即获取attrs对象下的属性值 + * @method getAttr + * @param { String } attrName 要获取的属性名称 + * @return { * } 返回attrs对象下的属性值 + * @example + * ```javascript + * node.getAttr('title'); + * ``` + */ + getAttr: function(attrName) { + return this.attrs && this.attrs[attrName.toLowerCase()]; + }, + + /** + * 设置当前节点所代表的元素属性,即设置attrs对象下的属性值 + * @method setAttr + * @param { String } attrName 要设置的属性名称 + * @param { * } attrVal 要设置的属性值,类型视设置的属性而定 + * @return { * } 返回attrs对象下的属性值 + * @example + * ```javascript + * node.setAttr('title','标题'); + * ``` + */ + setAttr: function(attrName, attrVal) { + if (!attrName) { + delete this.attrs; + return; + } + if (!this.attrs) { + this.attrs = {}; + } + if (utils.isObject(attrName)) { + for (var a in attrName) { + if (!attrName[a]) { + delete this.attrs[a]; + } else { + this.attrs[a.toLowerCase()] = attrName[a]; + } + } + } else { + if (!attrVal) { + delete this.attrs[attrName]; + } else { + this.attrs[attrName.toLowerCase()] = attrVal; + } + } + }, + + /** + * 获取当前节点在父节点下的位置索引 + * @method getIndex + * @return { Number } 返回索引数值,如果没有父节点,返回-1 + * @example + * ```javascript + * node.getIndex(); + * ``` + */ + getIndex: function() { + var parent = this.parentNode; + for (var i = 0, ci; (ci = parent.children[i]); i++) { + if (ci === this) { + return i; + } + } + return -1; + }, + + /** + * 在当前节点下,根据id查找节点 + * @method getNodeById + * @param { String } id 要查找的id + * @return { UE.uNode } 返回找到的节点 + * @example + * ```javascript + * node.getNodeById('textId'); + * ``` + */ + getNodeById: function(id) { + var node; + if (this.children && this.children.length) { + for (var i = 0, ci; (ci = this.children[i++]); ) { + if ((node = getNodeById(ci, id))) { + return node; + } + } + } + }, + + /** + * 在当前节点下,根据元素名称查找节点列表 + * @method getNodesByTagName + * @param { String } tagNames 要查找的元素名称 + * @return { Array } 返回找到的节点列表 + * @example + * ```javascript + * node.getNodesByTagName('span'); + * ``` + */ + getNodesByTagName: function(tagNames) { + tagNames = utils.trim(tagNames).replace(/[ ]{2,}/g, " ").split(" "); + var arr = [], + me = this; + utils.each(tagNames, function(tagName) { + if (me.children && me.children.length) { + for (var i = 0, ci; (ci = me.children[i++]); ) { + getNodesByTagName(ci, tagName, arr); + } + } + }); + return arr; + }, + + /** + * 根据样式名称,获取节点的样式值 + * @method getStyle + * @param { String } name 要获取的样式名称 + * @return { String } 返回样式值 + * @example + * ```javascript + * node.getStyle('font-size'); + * ``` + */ + getStyle: function(name) { + var cssStyle = this.getAttr("style"); + if (!cssStyle) { + return ""; + } + var reg = new RegExp("(^|;)\\s*" + name + ":([^;]+)", "i"); + var match = cssStyle.match(reg); + if (match && match[0]) { + return match[2]; + } + return ""; + }, + + /** + * 给节点设置样式 + * @method setStyle + * @param { String } name 要设置的的样式名称 + * @param { String } val 要设置的的样值 + * @example + * ```javascript + * node.setStyle('font-size', '12px'); + * ``` + */ + setStyle: function(name, val) { + function exec(name, val) { + var reg = new RegExp("(^|;)\\s*" + name + ":([^;]+;?)", "gi"); + cssStyle = cssStyle.replace(reg, "$1"); + if (val) { + cssStyle = name + ":" + utils.unhtml(val) + ";" + cssStyle; + } + } + + var cssStyle = this.getAttr("style"); + if (!cssStyle) { + cssStyle = ""; + } + if (utils.isObject(name)) { + for (var a in name) { + exec(a, name[a]); + } + } else { + exec(name, val); + } + this.setAttr("style", utils.trim(cssStyle)); + }, + + /** + * 传入一个函数,递归遍历当前节点下的所有节点 + * @method traversal + * @param { Function } fn 遍历到节点的时,传入节点作为参数,运行此函数 + * @example + * ```javascript + * traversal(node, function(){ + * console.log(node.type); + * }); + * ``` + */ + traversal: function(fn) { + if (this.children && this.children.length) { + nodeTraversal(this, fn); + } + return this; + } + }; +})(); + + +// core/htmlparser.js +/** + * html字符串转换成uNode节点 + * @file + * @module UE + * @since 1.2.6.1 + */ + +/** + * UEditor公用空间,UEditor所有的功能都挂载在该空间下 + * @unfile + * @module UE + */ + +/** + * html字符串转换成uNode节点的静态方法 + * @method htmlparser + * @param { String } htmlstr 要转换的html代码 + * @param { Boolean } ignoreBlank 若设置为true,转换的时候忽略\n\r\t等空白字符 + * @return { uNode } 给定的html片段转换形成的uNode对象 + * @example + * ```javascript + * var root = UE.htmlparser('

    htmlparser

    ', true); + * ``` + */ + +var htmlparser = (UE.htmlparser = function(htmlstr, ignoreBlank) { + //todo 原来的方式 [^"'<>\/] 有\/就不能配对上 "); + + tmpl.push( + '' + ); + + tempIndex === 2 && tmpl.push(""); + } + + return ( + '
    ' + + '
    ' + + '
    这样的标签了 + //先去掉了,加上的原因忘了,这里先记录 + //var re_tag = /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\s\/<>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g, + //以上的正则表达式无法匹配:

    + //修改为如下正则表达式: + var re_tag = /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g, + re_attr = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g; + + //ie下取得的html可能会有\n存在,要去掉,在处理replace(/[\t\r\n]*/g,'');代码高量的\n不能去除 + var allowEmptyTags = { + b: 1, + code: 1, + i: 1, + u: 1, + strike: 1, + s: 1, + tt: 1, + strong: 1, + q: 1, + samp: 1, + em: 1, + span: 1, + sub: 1, + img: 1, + sup: 1, + font: 1, + big: 1, + small: 1, + iframe: 1, + a: 1, + br: 1, + pre: 1 + }; + htmlstr = htmlstr.replace(new RegExp(domUtils.fillChar, "g"), ""); + if (!ignoreBlank) { + htmlstr = htmlstr.replace( + new RegExp( + "[\\r\\t\\n" + + (ignoreBlank ? "" : " ") + + "]*]*)>[\\r\\t\\n" + + (ignoreBlank ? "" : " ") + + "]*", + "g" + ), + function(a, b) { + //br暂时单独处理 + if (b && allowEmptyTags[b.toLowerCase()]) { + return a.replace(/(^[\n\r]+)|([\n\r]+$)/g, ""); + } + return a + .replace(new RegExp("^[\\r\\n" + (ignoreBlank ? "" : " ") + "]+"), "") + .replace( + new RegExp("[\\r\\n" + (ignoreBlank ? "" : " ") + "]+$"), + "" + ); + } + ); + } + + var notTransAttrs = { + href: 1, + src: 1 + }; + + var uNode = UE.uNode, + needParentNode = { + td: "tr", + tr: ["tbody", "thead", "tfoot"], + tbody: "table", + th: "tr", + thead: "table", + tfoot: "table", + caption: "table", + li: ["ul", "ol"], + dt: "dl", + dd: "dl", + option: "select" + }, + needChild = { + ol: "li", + ul: "li" + }; + + function text(parent, data) { + if (needChild[parent.tagName]) { + var tmpNode = uNode.createElement(needChild[parent.tagName]); + parent.appendChild(tmpNode); + tmpNode.appendChild(uNode.createText(data)); + parent = tmpNode; + } else { + parent.appendChild(uNode.createText(data)); + } + } + + function element(parent, tagName, htmlattr) { + var needParentTag; + if ((needParentTag = needParentNode[tagName])) { + var tmpParent = parent, + hasParent; + while (tmpParent.type != "root") { + if ( + utils.isArray(needParentTag) + ? utils.indexOf(needParentTag, tmpParent.tagName) != -1 + : needParentTag == tmpParent.tagName + ) { + parent = tmpParent; + hasParent = true; + break; + } + tmpParent = tmpParent.parentNode; + } + if (!hasParent) { + parent = element( + parent, + utils.isArray(needParentTag) ? needParentTag[0] : needParentTag + ); + } + } + //按dtd处理嵌套 + // if(parent.type != 'root' && !dtd[parent.tagName][tagName]) + // parent = parent.parentNode; + var elm = new uNode({ + parentNode: parent, + type: "element", + tagName: tagName.toLowerCase(), + //是自闭合的处理一下 + children: dtd.$empty[tagName] ? null : [] + }); + //如果属性存在,处理属性 + if (htmlattr) { + var attrs = {}, + match; + while ((match = re_attr.exec(htmlattr))) { + attrs[match[1].toLowerCase()] = notTransAttrs[match[1].toLowerCase()] + ? match[2] || match[3] || match[4] + : utils.unhtml(match[2] || match[3] || match[4]); + } + elm.attrs = attrs; + } + //trace:3970 + // //如果parent下不能放elm + // if(dtd.$inline[parent.tagName] && dtd.$block[elm.tagName] && !dtd[parent.tagName][elm.tagName]){ + // parent = parent.parentNode; + // elm.parentNode = parent; + // } + parent.children.push(elm); + //如果是自闭合节点返回父亲节点 + return dtd.$empty[tagName] ? parent : elm; + } + + function comment(parent, data) { + parent.children.push( + new uNode({ + type: "comment", + data: data, + parentNode: parent + }) + ); + } + + var match, + currentIndex = 0, + nextIndex = 0; + //设置根节点 + var root = new uNode({ + type: "root", + children: [] + }); + var currentParent = root; + + while ((match = re_tag.exec(htmlstr))) { + currentIndex = match.index; + try { + if (currentIndex > nextIndex) { + //text node + text(currentParent, htmlstr.slice(nextIndex, currentIndex)); + } + if (match[3]) { + if (dtd.$cdata[currentParent.tagName]) { + text(currentParent, match[0]); + } else { + //start tag + currentParent = element( + currentParent, + match[3].toLowerCase(), + match[4] + ); + } + } else if (match[1]) { + if (currentParent.type != "root") { + if (dtd.$cdata[currentParent.tagName] && !dtd.$cdata[match[1]]) { + text(currentParent, match[0]); + } else { + var tmpParent = currentParent; + while ( + currentParent.type == "element" && + currentParent.tagName != match[1].toLowerCase() + ) { + currentParent = currentParent.parentNode; + if (currentParent.type == "root") { + currentParent = tmpParent; + throw "break"; + } + } + //end tag + currentParent = currentParent.parentNode; + } + } + } else if (match[2]) { + //comment + comment(currentParent, match[2]); + } + } catch (e) {} + + nextIndex = re_tag.lastIndex; + } + //如果结束是文本,就有可能丢掉,所以这里手动判断一下 + //例如
  • sdfsdfsdf
  • sdfsdfsdfsdf + if (nextIndex < htmlstr.length) { + text(currentParent, htmlstr.slice(nextIndex)); + } + return root; +}); + + +// core/filternode.js +/** + * UE过滤节点的静态方法 + * @file + */ + +/** + * UEditor公用空间,UEditor所有的功能都挂载在该空间下 + * @module UE + */ + +/** + * 根据传入节点和过滤规则过滤相应节点 + * @module UE + * @since 1.2.6.1 + * @method filterNode + * @param { Object } root 指定root节点 + * @param { Object } rules 过滤规则json对象 + * @example + * ```javascript + * UE.filterNode(root,editor.options.filterRules); + * ``` + */ +var filterNode = (UE.filterNode = (function() { + function filterNode(node, rules) { + switch (node.type) { + case "text": + break; + case "element": + var val; + if ((val = rules[node.tagName])) { + if (val === "-") { + node.parentNode.removeChild(node); + } else if (utils.isFunction(val)) { + var parentNode = node.parentNode, + index = node.getIndex(); + val(node); + if (node.parentNode) { + if (node.children) { + for (var i = 0, ci; (ci = node.children[i]); ) { + filterNode(ci, rules); + if (ci.parentNode) { + i++; + } + } + } + } else { + for (var i = index, ci; (ci = parentNode.children[i]); ) { + filterNode(ci, rules); + if (ci.parentNode) { + i++; + } + } + } + } else { + var attrs = val["$"]; + if (attrs && node.attrs) { + var tmpAttrs = {}, + tmpVal; + for (var a in attrs) { + tmpVal = node.getAttr(a); + //todo 只先对style单独处理 + if (a == "style" && utils.isArray(attrs[a])) { + var tmpCssStyle = []; + utils.each(attrs[a], function(v) { + var tmp; + if ((tmp = node.getStyle(v))) { + tmpCssStyle.push(v + ":" + tmp); + } + }); + tmpVal = tmpCssStyle.join(";"); + } + if (tmpVal) { + tmpAttrs[a] = tmpVal; + } + } + node.attrs = tmpAttrs; + } + if (node.children) { + for (var i = 0, ci; (ci = node.children[i]); ) { + filterNode(ci, rules); + if (ci.parentNode) { + i++; + } + } + } + } + } else { + //如果不在名单里扣出子节点并删除该节点,cdata除外 + if (dtd.$cdata[node.tagName]) { + node.parentNode.removeChild(node); + } else { + var parentNode = node.parentNode, + index = node.getIndex(); + node.parentNode.removeChild(node, true); + for (var i = index, ci; (ci = parentNode.children[i]); ) { + filterNode(ci, rules); + if (ci.parentNode) { + i++; + } + } + } + } + break; + case "comment": + node.parentNode.removeChild(node); + } + } + return function(root, rules) { + if (utils.isEmptyObject(rules)) { + return root; + } + var val; + if ((val = rules["-"])) { + utils.each(val.split(" "), function(k) { + rules[k] = "-"; + }); + } + for (var i = 0, ci; (ci = root.children[i]); ) { + filterNode(ci, rules); + if (ci.parentNode) { + i++; + } + } + return root; + }; +})()); + + +// core/plugin.js +/** + * Created with JetBrains PhpStorm. + * User: campaign + * Date: 10/8/13 + * Time: 6:15 PM + * To change this template use File | Settings | File Templates. + */ +UE.plugin = (function() { + var _plugins = {}; + return { + register: function(pluginName, fn, oldOptionName, afterDisabled) { + if (oldOptionName && utils.isFunction(oldOptionName)) { + afterDisabled = oldOptionName; + oldOptionName = null; + } + _plugins[pluginName] = { + optionName: oldOptionName || pluginName, + execFn: fn, + //当插件被禁用时执行 + afterDisabled: afterDisabled + }; + }, + load: function(editor) { + utils.each(_plugins, function(plugin) { + var _export = plugin.execFn.call(editor); + if (editor.options[plugin.optionName] !== false) { + if (_export) { + //后边需要再做扩展 + utils.each(_export, function(v, k) { + switch (k.toLowerCase()) { + case "shortcutkey": + editor.addshortcutkey(v); + break; + case "bindevents": + utils.each(v, function(fn, eventName) { + editor.addListener(eventName, fn); + }); + break; + case "bindmultievents": + utils.each(utils.isArray(v) ? v : [v], function(event) { + var types = utils.trim(event.type).split(/\s+/); + utils.each(types, function(eventName) { + editor.addListener(eventName, event.handler); + }); + }); + break; + case "commands": + utils.each(v, function(execFn, execName) { + editor.commands[execName] = execFn; + }); + break; + case "outputrule": + editor.addOutputRule(v); + break; + case "inputrule": + editor.addInputRule(v); + break; + case "defaultoptions": + editor.setOpt(v); + } + }); + } + } else if (plugin.afterDisabled) { + plugin.afterDisabled.call(editor); + } + }); + //向下兼容 + utils.each(UE.plugins, function(plugin) { + plugin.call(editor); + }); + }, + run: function(pluginName, editor) { + var plugin = _plugins[pluginName]; + if (plugin) { + plugin.exeFn.call(editor); + } + } + }; +})(); + + +// core/keymap.js +var keymap = (UE.keymap = { + Backspace: 8, + Tab: 9, + Enter: 13, + + Shift: 16, + Control: 17, + Alt: 18, + CapsLock: 20, + + Esc: 27, + + Spacebar: 32, + + PageUp: 33, + PageDown: 34, + End: 35, + Home: 36, + + Left: 37, + Up: 38, + Right: 39, + Down: 40, + + Insert: 45, + + Del: 46, + + NumLock: 144, + + Cmd: 91, + + "=": 187, + "-": 189, + + b: 66, + i: 73, + //回退 + z: 90, + y: 89, + //粘贴 + v: 86, + x: 88, + + s: 83, + + n: 78 +}); + + +// core/localstorage.js +var LocalStorage = (UE.LocalStorage = (function () { + + var storage = window.localStorage + + return { + saveLocalData: function (key, data) { + // console.log('saveLocalData', key, data); + if (!storage) { + return false; + } + storage.setItem(key, data); + return true; + }, + getLocalData: function (key) { + // console.log('getLocalData', key); + if (!storage) { + return null; + } + return storage.getItem(key) || null; + }, + removeItem: function (key) { + // console.log('removeItem', key); + storage && storage.removeItem(key); + } + }; + +})()); + +(function () { + + var ROOT_KEY = "UEditorPlusPref"; + + UE.Editor.prototype.setPreferences = function (key, value) { + // console.log('setPreferences', key, value); + var obj = {}; + if (utils.isString(key)) { + obj[key] = value; + } else { + obj = key; + } + var data = LocalStorage.getLocalData(ROOT_KEY); + if (data && (data = utils.str2json(data))) { + utils.extend(data, obj); + } else { + data = obj; + } + data && LocalStorage.saveLocalData(ROOT_KEY, utils.json2str(data)); + }; + + UE.Editor.prototype.getPreferences = function (key) { + // console.log('getPreferences', key); + var data = LocalStorage.getLocalData(ROOT_KEY); + if (data && (data = utils.str2json(data))) { + return key ? data[key] : data; + } + return null; + }; + + UE.Editor.prototype.removePreferences = function (key) { + // console.log('removePreferences', key); + var data = LocalStorage.getLocalData(ROOT_KEY); + if (data && (data = utils.str2json(data))) { + data[key] = undefined; + delete data[key]; + } + data && LocalStorage.saveLocalData(ROOT_KEY, utils.json2str(data)); + }; +})(); + + +// plugins/defaultfilter.js +///import core +///plugin 编辑器默认的过滤转换机制 + +UE.plugins["defaultfilter"] = function() { + var me = this; + me.setOpt({ + allowDivTransToP: true, + disabledTableInTable: true, + rgb2Hex: true + }); + //默认的过滤处理 + //进入编辑器的内容处理 + me.addInputRule(function(root) { + var allowDivTransToP = this.options.allowDivTransToP; + var val; + function tdParent(node) { + while (node && node.type == "element") { + if (node.tagName == "td") { + return true; + } + node = node.parentNode; + } + return false; + } + //进行默认的处理 + root.traversal(function(node) { + if (node.type == "element") { + if ( + !dtd.$cdata[node.tagName] && + me.options.autoClearEmptyNode && + dtd.$inline[node.tagName] && + !dtd.$empty[node.tagName] && + (!node.attrs || utils.isEmptyObject(node.attrs)) + ) { + if (!node.firstChild()) node.parentNode.removeChild(node); + else if ( + node.tagName == "span" && + (!node.attrs || utils.isEmptyObject(node.attrs)) + ) { + node.parentNode.removeChild(node, true); + } + return; + } + switch (node.tagName) { + case "style": + case "script": + node.setAttr({ + cdata_tag: node.tagName, + cdata_data: node.innerHTML() || "", + _ue_custom_node_: "true" + }); + node.tagName = "div"; + node.innerHTML(""); + break; + case "a": + if ((val = node.getAttr("href"))) { + node.setAttr("_href", val); + } + break; + case "img": + //todo base64暂时去掉,后边做远程图片上传后,干掉这个 + if ((val = node.getAttr("src"))) { + if (/^data:/.test(val)) { + node.parentNode.removeChild(node); + break; + } + } + node.setAttr("_src", node.getAttr("src")); + break; + case "span": + if (browser.webkit && (val = node.getStyle("white-space"))) { + if (/nowrap|normal/.test(val)) { + node.setStyle("white-space", ""); + if ( + me.options.autoClearEmptyNode && + utils.isEmptyObject(node.attrs) + ) { + node.parentNode.removeChild(node, true); + } + } + } + val = node.getAttr("id"); + if (val && /^_baidu_bookmark_/i.test(val)) { + node.parentNode.removeChild(node); + } + break; + case "p": + if ((val = node.getAttr("align"))) { + node.setAttr("align"); + node.setStyle("text-align", val); + } + //trace:3431 + // var cssStyle = node.getAttr('style'); + // if (cssStyle) { + // cssStyle = cssStyle.replace(/(margin|padding)[^;]+/g, ''); + // node.setAttr('style', cssStyle) + // + // } + //p标签不允许嵌套 + utils.each(node.children, function(n) { + if (n.type == "element" && n.tagName == "p") { + var next = n.nextSibling(); + node.parentNode.insertAfter(n, node); + var last = n; + while (next) { + var tmp = next.nextSibling(); + node.parentNode.insertAfter(next, last); + last = next; + next = tmp; + } + return false; + } + }); + if (!node.firstChild()) { + node.innerHTML(browser.ie ? " " : "
    "); + } + break; + case "div": + if (node.getAttr("cdata_tag")) { + break; + } + //针对代码这里不处理插入代码的div + val = node.getAttr("class"); + if (val && /^line number\d+/.test(val)) { + break; + } + if (!allowDivTransToP) { + break; + } + var tmpNode, + p = UE.uNode.createElement("p"); + while ((tmpNode = node.firstChild())) { + if ( + tmpNode.type == "text" || + !UE.dom.dtd.$block[tmpNode.tagName] + ) { + p.appendChild(tmpNode); + } else { + if (p.firstChild()) { + node.parentNode.insertBefore(p, node); + p = UE.uNode.createElement("p"); + } else { + node.parentNode.insertBefore(tmpNode, node); + } + } + } + if (p.firstChild()) { + node.parentNode.insertBefore(p, node); + } + node.parentNode.removeChild(node); + break; + case "dl": + node.tagName = "ul"; + break; + case "dt": + case "dd": + node.tagName = "li"; + break; + case "li": + var className = node.getAttr("class"); + if (!className || !/list\-/.test(className)) { + node.setAttr(); + } + var tmpNodes = node.getNodesByTagName("ol ul"); + UE.utils.each(tmpNodes, function(n) { + node.parentNode.insertAfter(n, node); + }); + break; + case "td": + case "th": + case "caption": + if (!node.children || !node.children.length) { + node.appendChild( + browser.ie11below + ? UE.uNode.createText(" ") + : UE.uNode.createElement("br") + ); + } + break; + case "table": + if (me.options.disabledTableInTable && tdParent(node)) { + node.parentNode.insertBefore( + UE.uNode.createText(node.innerText()), + node + ); + node.parentNode.removeChild(node); + } + } + } + // if(node.type == 'comment'){ + // node.parentNode.removeChild(node); + // } + }); + }); + + //从编辑器出去的内容处理 + me.addOutputRule(function(root) { + var val; + root.traversal(function(node) { + if (node.type == "element") { + if ( + me.options.autoClearEmptyNode && + dtd.$inline[node.tagName] && + !dtd.$empty[node.tagName] && + (!node.attrs || utils.isEmptyObject(node.attrs)) + ) { + if (!node.firstChild()) node.parentNode.removeChild(node); + else if ( + node.tagName == "span" && + (!node.attrs || utils.isEmptyObject(node.attrs)) + ) { + node.parentNode.removeChild(node, true); + } + return; + } + switch (node.tagName) { + case "div": + if ((val = node.getAttr("cdata_tag"))) { + node.tagName = val; + node.appendChild(UE.uNode.createText(node.getAttr("cdata_data"))); + node.setAttr({ + cdata_tag: "", + cdata_data: "", + _ue_custom_node_: "" + }); + } + break; + case "a": + if ((val = node.getAttr("_href"))) { + node.setAttr({ + href: utils.html(val), + _href: "" + }); + } + break; + break; + case "span": + val = node.getAttr("id"); + if (val && /^_baidu_bookmark_/i.test(val)) { + node.parentNode.removeChild(node); + } + //将color的rgb格式转换为#16进制格式 + if (me.getOpt("rgb2Hex")) { + var cssStyle = node.getAttr("style"); + if (cssStyle) { + node.setAttr( + "style", + cssStyle.replace(/rgba?\(([\d,\s]+)\)/g, function(a, value) { + var array = value.split(","); + if (array.length > 3) return ""; + value = "#"; + for (var i = 0, color; (color = array[i++]); ) { + color = parseInt( + color.replace(/[^\d]/gi, ""), + 10 + ).toString(16); + value += color.length == 1 ? "0" + color : color; + } + return value.toUpperCase(); + }) + ); + } + } + break; + case "img": + if ((val = node.getAttr("_src"))) { + node.setAttr({ + src: node.getAttr("_src"), + _src: "" + }); + } + } + } + }); + }); +}; + + +// plugins/inserthtml.js +/** + * 插入html字符串插件 + * @file + * @since 1.2.6.1 + */ + +/** + * 插入html代码 + * @command inserthtml + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } html 插入的html字符串 + * @remaind 插入的标签内容是在当前的选区位置上插入,如果当前是闭合状态,那直接插入内容, 如果当前是选中状态,将先清除当前选中内容后,再做插入 + * @warning 注意:该命令会对当前选区的位置,对插入的内容进行过滤转换处理。 过滤的规则遵循html语意化的原则。 + * @example + * ```javascript + * //xxx[BB]xxx 当前选区为非闭合选区,选中BB这两个文本 + * //执行命令,插入CC + * //插入后的效果 xxxCCxxx + * //

    xx|xxx

    当前选区为闭合状态 + * //插入

    CC

    + * //结果

    xx

    CC

    xxx

    + * //

    xxxx

    |

    xxx

    当前选区在两个p标签之间 + * //插入 xxxx + * //结果

    xxxx

    xxxx

    xxx

    + * ``` + */ + +UE.commands["inserthtml"] = { + execCommand: function(command, html, notNeedFilter) { + var me = this, + range, + div; + if (!html) { + return; + } + if (me.fireEvent("beforeinserthtml", html) === true) { + return; + } + range = me.selection.getRange(); + div = range.document.createElement("div"); + div.style.display = "inline"; + + if (!notNeedFilter) { + var root = UE.htmlparser(html); + //如果给了过滤规则就先进行过滤 + if (me.options.filterRules) { + UE.filterNode(root, me.options.filterRules); + } + //执行默认的处理 + me.filterInputRule(root); + html = root.toHtml(); + } + div.innerHTML = utils.trim(html); + + if (!range.collapsed) { + var tmpNode = range.startContainer; + if (domUtils.isFillChar(tmpNode)) { + range.setStartBefore(tmpNode); + } + tmpNode = range.endContainer; + if (domUtils.isFillChar(tmpNode)) { + range.setEndAfter(tmpNode); + } + range.txtToElmBoundary(); + //结束边界可能放到了br的前边,要把br包含进来 + // x[xxx]
    + if (range.endContainer && range.endContainer.nodeType == 1) { + tmpNode = range.endContainer.childNodes[range.endOffset]; + if (tmpNode && domUtils.isBr(tmpNode)) { + range.setEndAfter(tmpNode); + } + } + if (range.startOffset == 0) { + tmpNode = range.startContainer; + if (domUtils.isBoundaryNode(tmpNode, "firstChild")) { + tmpNode = range.endContainer; + if ( + range.endOffset == + (tmpNode.nodeType == 3 + ? tmpNode.nodeValue.length + : tmpNode.childNodes.length) && + domUtils.isBoundaryNode(tmpNode, "lastChild") + ) { + me.body.innerHTML = "

    " + (browser.ie ? "" : "
    ") + "

    "; + range.setStart(me.body.firstChild, 0).collapse(true); + } + } + } + !range.collapsed && range.deleteContents(); + if (range.startContainer.nodeType == 1) { + var child = range.startContainer.childNodes[range.startOffset], + pre; + if ( + child && + domUtils.isBlockElm(child) && + (pre = child.previousSibling) && + domUtils.isBlockElm(pre) + ) { + range.setEnd(pre, pre.childNodes.length).collapse(); + while (child.firstChild) { + pre.appendChild(child.firstChild); + } + domUtils.remove(child); + } + } + } + + var child, + parent, + pre, + tmp, + hadBreak = 0, + nextNode; + //如果当前位置选中了fillchar要干掉,要不会产生空行 + if (range.inFillChar()) { + child = range.startContainer; + if (domUtils.isFillChar(child)) { + range.setStartBefore(child).collapse(true); + domUtils.remove(child); + } else if (domUtils.isFillChar(child, true)) { + child.nodeValue = child.nodeValue.replace(fillCharReg, ""); + range.startOffset--; + range.collapsed && range.collapse(true); + } + } + //列表单独处理 + var li = domUtils.findParentByTagName(range.startContainer, "li", true); + if (li) { + var next, last; + while ((child = div.firstChild)) { + //针对hr单独处理一下先 + while ( + child && + (child.nodeType == 3 || + !domUtils.isBlockElm(child) || + child.tagName == "HR") + ) { + next = child.nextSibling; + range.insertNode(child).collapse(); + last = child; + child = next; + } + if (child) { + if (/^(ol|ul)$/i.test(child.tagName)) { + while (child.firstChild) { + last = child.firstChild; + domUtils.insertAfter(li, child.firstChild); + li = li.nextSibling; + } + domUtils.remove(child); + } else { + var tmpLi; + next = child.nextSibling; + tmpLi = me.document.createElement("li"); + domUtils.insertAfter(li, tmpLi); + tmpLi.appendChild(child); + last = child; + child = next; + li = tmpLi; + } + } + } + li = domUtils.findParentByTagName(range.startContainer, "li", true); + if (domUtils.isEmptyBlock(li)) { + domUtils.remove(li); + } + if (last) { + range.setStartAfter(last).collapse(true).select(true); + } + } else { + while ((child = div.firstChild)) { + if (hadBreak) { + var p = me.document.createElement("p"); + while (child && (child.nodeType == 3 || !dtd.$block[child.tagName])) { + nextNode = child.nextSibling; + p.appendChild(child); + child = nextNode; + } + if (p.firstChild) { + child = p; + } + } + range.insertNode(child); + nextNode = child.nextSibling; + if ( + !hadBreak && + child.nodeType == domUtils.NODE_ELEMENT && + domUtils.isBlockElm(child) + ) { + parent = domUtils.findParent(child, function(node) { + return domUtils.isBlockElm(node); + }); + if ( + parent && + parent.tagName.toLowerCase() != "body" && + !( + dtd[parent.tagName][child.nodeName] && child.parentNode === parent + ) + ) { + if (!dtd[parent.tagName][child.nodeName]) { + pre = parent; + } else { + tmp = child.parentNode; + while (tmp !== parent) { + pre = tmp; + tmp = tmp.parentNode; + } + } + + domUtils.breakParent(child, pre || tmp); + //去掉break后前一个多余的节点

    |<[p> ==>

    |

    + var pre = child.previousSibling; + domUtils.trimWhiteTextNode(pre); + if (!pre.childNodes.length) { + domUtils.remove(pre); + } + //trace:2012,在非ie的情况,切开后剩下的节点有可能不能点入光标添加br占位 + + if ( + !browser.ie && + (next = child.nextSibling) && + domUtils.isBlockElm(next) && + next.lastChild && + !domUtils.isBr(next.lastChild) + ) { + next.appendChild(me.document.createElement("br")); + } + hadBreak = 1; + } + } + var next = child.nextSibling; + if (!div.firstChild && next && domUtils.isBlockElm(next)) { + range.setStart(next, 0).collapse(true); + break; + } + range.setEndAfter(child).collapse(); + } + + child = range.startContainer; + + if (nextNode && domUtils.isBr(nextNode)) { + domUtils.remove(nextNode); + } + //用chrome可能有空白展位符 + if (domUtils.isBlockElm(child) && domUtils.isEmptyNode(child)) { + if ((nextNode = child.nextSibling)) { + domUtils.remove(child); + if (nextNode.nodeType == 1 && dtd.$block[nextNode.tagName]) { + range.setStart(nextNode, 0).collapse(true).shrinkBoundary(); + } + } else { + try { + child.innerHTML = browser.ie ? domUtils.fillChar : "
    "; + } catch (e) { + range.setStartBefore(child); + domUtils.remove(child); + } + } + } + //加上true因为在删除表情等时会删两次,第一次是删的fillData + try { + range.select(true); + } catch (e) {} + } + + setTimeout(function() { + range = me.selection.getRange(); + range.scrollToView( + me.autoHeightEnabled, + me.autoHeightEnabled ? domUtils.getXY(me.iframe).y : 0 + ); + me.fireEvent("afterinserthtml", html); + }, 200); + } +}; + + +// plugins/autotypeset.js +/** + * 自动排版 + * @file + * @since 1.2.6.1 + */ + +/** + * 对当前编辑器的内容执行自动排版, 排版的行为根据config配置文件里的“autotypeset”选项进行控制。 + * @command autotypeset + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'autotypeset' ); + * ``` + */ + +UE.plugins["autotypeset"] = function() { + this.setOpt({ + autotypeset: { + mergeEmptyline: true, //合并空行 + removeClass: true, //去掉冗余的class + removeEmptyline: false, //去掉空行 + textAlign: "left", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版 + imageBlockLine: "center", //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版 + pasteFilter: false, //根据规则过滤没事粘贴进来的内容 + clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号 + clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体 + removeEmptyNode: false, // 去掉空节点 + //可以去掉的标签 + removeTagNames: utils.extend({ div: 1 }, dtd.$removeEmpty), + indent: false, // 行首缩进 + indentValue: "2em", //行首缩进的大小 + bdc2sb: false, + tobdc: false + } + }); + + var me = this, + opt = me.options.autotypeset, + remainClass = { + selectTdClass: 1, + pagebreak: 1, + anchorclass: 1 + }, + remainTag = { + li: 1 + }, + tags = { + div: 1, + p: 1, + //trace:2183 这些也认为是行 + blockquote: 1, + center: 1, + h1: 1, + h2: 1, + h3: 1, + h4: 1, + h5: 1, + h6: 1, + span: 1 + }, + highlightCont; + //升级了版本,但配置项目里没有autotypeset + if (!opt) { + return; + } + + readLocalOpts(); + + function isLine(node, notEmpty) { + if (!node || node.nodeType == 3) return 0; + if (domUtils.isBr(node)) return 1; + if (node && node.parentNode && tags[node.tagName.toLowerCase()]) { + if ( + (highlightCont && highlightCont.contains(node)) || + node.getAttribute("pagebreak") + ) { + return 0; + } + + return notEmpty + ? !domUtils.isEmptyBlock(node) + : domUtils.isEmptyBlock( + node, + new RegExp("[\\s" + domUtils.fillChar + "]", "g") + ); + } + } + + function removeNotAttributeSpan(node) { + if (!node.style.cssText) { + domUtils.removeAttributes(node, ["style"]); + if ( + node.tagName.toLowerCase() == "span" && + domUtils.hasNoAttributes(node) + ) { + domUtils.remove(node, true); + } + } + } + function autotype(type, html) { + var me = this, + cont; + if (html) { + if (!opt.pasteFilter) { + return; + } + cont = me.document.createElement("div"); + cont.innerHTML = html.html; + } else { + cont = me.document.body; + } + var nodes = domUtils.getElementsByTagName(cont, "*"); + + // 行首缩进,段落方向,段间距,段内间距 + for (var i = 0, ci; (ci = nodes[i++]); ) { + if (me.fireEvent("excludeNodeinautotype", ci) === true) { + continue; + } + //font-size + if (opt.clearFontSize && ci.style.fontSize) { + domUtils.removeStyle(ci, "font-size"); + + removeNotAttributeSpan(ci); + } + //font-family + if (opt.clearFontFamily && ci.style.fontFamily) { + domUtils.removeStyle(ci, "font-family"); + removeNotAttributeSpan(ci); + } + + if (isLine(ci)) { + //合并空行 + if (opt.mergeEmptyline) { + var next = ci.nextSibling, + tmpNode, + isBr = domUtils.isBr(ci); + while (isLine(next)) { + tmpNode = next; + next = tmpNode.nextSibling; + if (isBr && (!next || (next && !domUtils.isBr(next)))) { + break; + } + domUtils.remove(tmpNode); + } + } + //去掉空行,保留占位的空行 + if ( + opt.removeEmptyline && + domUtils.inDoc(ci, cont) && + !remainTag[ci.parentNode.tagName.toLowerCase()] + ) { + if (domUtils.isBr(ci)) { + next = ci.nextSibling; + if (next && !domUtils.isBr(next)) { + continue; + } + } + domUtils.remove(ci); + continue; + } + } + if (isLine(ci, true) && ci.tagName != "SPAN") { + if (opt.indent) { + ci.style.textIndent = opt.indentValue; + } + if (opt.textAlign) { + ci.style.textAlign = opt.textAlign; + } + // if(opt.lineHeight) + // ci.style.lineHeight = opt.lineHeight + 'cm'; + } + + //去掉class,保留的class不去掉 + if ( + opt.removeClass && + ci.className && + !remainClass[ci.className.toLowerCase()] + ) { + if (highlightCont && highlightCont.contains(ci)) { + continue; + } + domUtils.removeAttributes(ci, ["class"]); + } + + //表情不处理 + if ( + opt.imageBlockLine && + ci.tagName.toLowerCase() == "img" && + !ci.getAttribute("emotion") + ) { + if (html) { + var img = ci; + switch (opt.imageBlockLine) { + case "left": + case "right": + case "none": + var pN = img.parentNode, + tmpNode, + pre, + next; + while (dtd.$inline[pN.tagName] || pN.tagName == "A") { + pN = pN.parentNode; + } + tmpNode = pN; + if ( + tmpNode.tagName == "P" && + domUtils.getStyle(tmpNode, "text-align") == "center" + ) { + if ( + !domUtils.isBody(tmpNode) && + domUtils.getChildCount(tmpNode, function(node) { + return !domUtils.isBr(node) && !domUtils.isWhitespace(node); + }) == 1 + ) { + pre = tmpNode.previousSibling; + next = tmpNode.nextSibling; + if ( + pre && + next && + pre.nodeType == 1 && + next.nodeType == 1 && + pre.tagName == next.tagName && + domUtils.isBlockElm(pre) + ) { + pre.appendChild(tmpNode.firstChild); + while (next.firstChild) { + pre.appendChild(next.firstChild); + } + domUtils.remove(tmpNode); + domUtils.remove(next); + } else { + domUtils.setStyle(tmpNode, "text-align", ""); + } + } + } + domUtils.setStyle(img, "float", opt.imageBlockLine); + break; + case "center": + if (me.queryCommandValue("imagefloat") != "center") { + pN = img.parentNode; + domUtils.setStyle(img, "float", "none"); + tmpNode = img; + while ( + pN && + domUtils.getChildCount(pN, function(node) { + return !domUtils.isBr(node) && !domUtils.isWhitespace(node); + }) == 1 && + (dtd.$inline[pN.tagName] || pN.tagName == "A") + ) { + tmpNode = pN; + pN = pN.parentNode; + } + var pNode = me.document.createElement("p"); + domUtils.setAttributes(pNode, { + style: "text-align:center" + }); + tmpNode.parentNode.insertBefore(pNode, tmpNode); + pNode.appendChild(tmpNode); + domUtils.setStyle(tmpNode, "float", ""); + } + } + } else { + var range = me.selection.getRange(); + range.selectNode(ci).select(); + me.execCommand("imagefloat", opt.imageBlockLine); + } + } + + //去掉冗余的标签 + if (opt.removeEmptyNode) { + if ( + opt.removeTagNames[ci.tagName.toLowerCase()] && + domUtils.hasNoAttributes(ci) && + domUtils.isEmptyBlock(ci) + ) { + domUtils.remove(ci); + } + } + } + if (opt.tobdc) { + var root = UE.htmlparser(cont.innerHTML); + root.traversal(function(node) { + if (node.type == "text") { + node.data = ToDBC(node.data); + } + }); + cont.innerHTML = root.toHtml(); + } + if (opt.bdc2sb) { + var root = UE.htmlparser(cont.innerHTML); + root.traversal(function(node) { + if (node.type == "text") { + node.data = DBC2SB(node.data); + } + }); + cont.innerHTML = root.toHtml(); + } + if (html) { + html.html = cont.innerHTML; + } + } + if (opt.pasteFilter) { + me.addListener("beforepaste", autotype); + } + + function DBC2SB(str) { + var result = ""; + for (var i = 0; i < str.length; i++) { + var code = str.charCodeAt(i); //获取当前字符的unicode编码 + if (code >= 65281 && code <= 65373) { + //在这个unicode编码范围中的是所有的英文字母已经各种字符 + result += String.fromCharCode(str.charCodeAt(i) - 65248); //把全角字符的unicode编码转换为对应半角字符的unicode码 + } else if (code == 12288) { + //空格 + result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32); + } else { + result += str.charAt(i); + } + } + return result; + } + function ToDBC(txtstring) { + txtstring = utils.html(txtstring); + var tmp = ""; + var mark = ""; /*用于判断,如果是html尖括里的标记,则不进行全角的转换*/ + for (var i = 0; i < txtstring.length; i++) { + if (txtstring.charCodeAt(i) == 32) { + tmp = tmp + String.fromCharCode(12288); + } else if (txtstring.charCodeAt(i) < 127) { + tmp = tmp + String.fromCharCode(txtstring.charCodeAt(i) + 65248); + } else { + tmp += txtstring.charAt(i); + } + } + return tmp; + } + + function readLocalOpts() { + var cookieOpt = me.getPreferences("autotypeset"); + utils.extend(me.options.autotypeset, cookieOpt); + } + + me.commands["autotypeset"] = { + execCommand: function() { + me.removeListener("beforepaste", autotype); + if (opt.pasteFilter) { + me.addListener("beforepaste", autotype); + } + autotype.call(me); + } + }; +}; + + +// plugins/autosubmit.js +/** + * 快捷键提交 + * @file + * @since 1.2.6.1 + */ + +/** + * 提交表单 + * @command autosubmit + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'autosubmit' ); + * ``` + */ + +UE.plugin.register("autosubmit", function() { + return { + shortcutkey: { + autosubmit: "ctrl+13" //手动提交 + }, + commands: { + autosubmit: { + execCommand: function() { + var me = this, + form = domUtils.findParentByTagName(me.iframe, "form", false); + if (form) { + if (me.fireEvent("beforesubmit") === false) { + return; + } + me.sync(); + form.submit(); + } + } + } + } + }; +}); + + +// plugins/background.js +/** + * 背景插件,为UEditor提供设置背景功能 + * @file + * @since 1.2.6.1 + */ +UE.plugin.register("background", function() { + var me = this, + cssRuleId = "editor_background", + isSetColored, + reg = new RegExp("body[\\s]*\\{(.+)\\}", "i"); + + function stringToObj(str) { + var obj = {}, + styles = str.split(";"); + utils.each(styles, function(v) { + var index = v.indexOf(":"), + key = utils.trim(v.substr(0, index)).toLowerCase(); + key && (obj[key] = utils.trim(v.substr(index + 1) || "")); + }); + return obj; + } + + function setBackground(obj) { + if (obj) { + var styles = []; + for (var name in obj) { + if (obj.hasOwnProperty(name)) { + styles.push(name + ":" + obj[name] + "; "); + } + } + utils.cssRule( + cssRuleId, + styles.length ? "body{" + styles.join("") + "}" : "", + me.document + ); + } else { + utils.cssRule(cssRuleId, "", me.document); + } + } + //重写editor.hasContent方法 + + var orgFn = me.hasContents; + me.hasContents = function() { + if (me.queryCommandValue("background")) { + return true; + } + return orgFn.apply(me, arguments); + }; + return { + bindEvents: { + getAllHtml: function(type, headHtml) { + var body = this.body, + su = domUtils.getComputedStyle(body, "background-image"), + url = ""; + if (su.indexOf(me.options.imagePath) > 0) { + url = su + .substring(su.indexOf(me.options.imagePath), su.length - 1) + .replace(/"|\(|\)/gi, ""); + } else { + url = su != "none" ? su.replace(/url\("?|"?\)/gi, "") : ""; + } + var html = ' "; + headHtml.push(html); + }, + aftersetcontent: function() { + if (isSetColored == false) setBackground(); + } + }, + inputRule: function(root) { + isSetColored = false; + utils.each(root.getNodesByTagName("p"), function(p) { + var styles = p.getAttr("data-background"); + if (styles) { + isSetColored = true; + setBackground(stringToObj(styles)); + p.parentNode.removeChild(p); + } + }); + }, + outputRule: function(root) { + var me = this, + styles = (utils.cssRule(cssRuleId, me.document) || "") + .replace(/[\n\r]+/g, "") + .match(reg); + if (styles) { + root.appendChild( + UE.uNode.createElement( + '


    ' + ) + ); + } + }, + commands: { + background: { + execCommand: function(cmd, obj) { + setBackground(obj); + }, + queryCommandValue: function() { + var me = this, + styles = (utils.cssRule(cssRuleId, me.document) || "") + .replace(/[\n\r]+/g, "") + .match(reg); + return styles ? stringToObj(styles[1]) : null; + }, + notNeedUndo: true + } + } + }; +}); + + +// plugins/image.js +/** + * 图片插入、排版插件 + * @file + * @since 1.2.6.1 + */ + +/** + * 图片对齐方式 + * @command imagefloat + * @method execCommand + * @remind 值center为独占一行居中 + * @param { String } cmd 命令字符串 + * @param { String } align 对齐方式,可传left、right、none、center + * @remaind center表示图片独占一行 + * @example + * ```javascript + * editor.execCommand( 'imagefloat', 'center' ); + * ``` + */ + +/** + * 如果选区所在位置是图片区域 + * @command imagefloat + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回图片对齐方式 + * @example + * ```javascript + * editor.queryCommandValue( 'imagefloat' ); + * ``` + */ + +UE.commands["imagefloat"] = { + execCommand: function(cmd, align) { + var me = this, + range = me.selection.getRange(); + if (!range.collapsed) { + var img = range.getClosedNode(); + if (img && img.tagName == "IMG") { + switch (align) { + case "left": + case "right": + case "none": + var pN = img.parentNode, + tmpNode, + pre, + next; + while (dtd.$inline[pN.tagName] || pN.tagName == "A") { + pN = pN.parentNode; + } + tmpNode = pN; + if ( + tmpNode.tagName == "P" && + domUtils.getStyle(tmpNode, "text-align") == "center" + ) { + if ( + !domUtils.isBody(tmpNode) && + domUtils.getChildCount(tmpNode, function(node) { + return !domUtils.isBr(node) && !domUtils.isWhitespace(node); + }) == 1 + ) { + pre = tmpNode.previousSibling; + next = tmpNode.nextSibling; + if ( + pre && + next && + pre.nodeType == 1 && + next.nodeType == 1 && + pre.tagName == next.tagName && + domUtils.isBlockElm(pre) + ) { + pre.appendChild(tmpNode.firstChild); + while (next.firstChild) { + pre.appendChild(next.firstChild); + } + domUtils.remove(tmpNode); + domUtils.remove(next); + } else { + domUtils.setStyle(tmpNode, "text-align", ""); + } + } + + range.selectNode(img).select(); + } + domUtils.setStyle(img, "float", align == "none" ? "" : align); + if (align == "none") { + domUtils.removeAttributes(img, "align"); + } + + break; + case "center": + if (me.queryCommandValue("imagefloat") != "center") { + pN = img.parentNode; + domUtils.setStyle(img, "float", ""); + domUtils.removeAttributes(img, "align"); + tmpNode = img; + while ( + pN && + domUtils.getChildCount(pN, function(node) { + return !domUtils.isBr(node) && !domUtils.isWhitespace(node); + }) == 1 && + (dtd.$inline[pN.tagName] || pN.tagName == "A") + ) { + tmpNode = pN; + pN = pN.parentNode; + } + range.setStartBefore(tmpNode).setCursor(false); + pN = me.document.createElement("div"); + pN.appendChild(tmpNode); + domUtils.setStyle(tmpNode, "float", ""); + + me.execCommand( + "insertHtml", + '

    ' + + pN.innerHTML + + "

    " + ); + + tmpNode = me.document.getElementById("_img_parent_tmp"); + tmpNode.removeAttribute("id"); + tmpNode = tmpNode.firstChild; + range.selectNode(tmpNode).select(); + //去掉后边多余的元素 + next = tmpNode.parentNode.nextSibling; + if (next && domUtils.isEmptyNode(next)) { + domUtils.remove(next); + } + } + + break; + } + } + } + }, + queryCommandValue: function() { + var range = this.selection.getRange(), + startNode, + floatStyle; + if (range.collapsed) { + return "none"; + } + startNode = range.getClosedNode(); + if (startNode && startNode.nodeType == 1 && startNode.tagName == "IMG") { + floatStyle = + domUtils.getComputedStyle(startNode, "float") || + startNode.getAttribute("align"); + + if (floatStyle == "none") { + floatStyle = domUtils.getComputedStyle( + startNode.parentNode, + "text-align" + ) == "center" + ? "center" + : floatStyle; + } + return { + left: 1, + right: 1, + center: 1 + }[floatStyle] + ? floatStyle + : "none"; + } + return "none"; + }, + queryCommandState: function() { + var range = this.selection.getRange(), + startNode; + + if (range.collapsed) return -1; + + startNode = range.getClosedNode(); + if (startNode && startNode.nodeType == 1 && startNode.tagName == "IMG") { + return 0; + } + return -1; + } +}; + +/** + * 插入图片 + * @command insertimage + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Object } opt 属性键值对,这些属性都将被复制到当前插入图片 + * @remind 该命令第二个参数可接受一个图片配置项对象的数组,可以插入多张图片, + * 此时数组的每一个元素都是一个Object类型的图片属性集合。 + * @example + * ```javascript + * editor.execCommand( 'insertimage', { + * src:'a/b/c.jpg', + * width:'100', + * height:'100' + * } ); + * ``` + * @example + * ```javascript + * editor.execCommand( 'insertimage', [{ + * src:'a/b/c.jpg', + * width:'100', + * height:'100' + * },{ + * src:'a/b/d.jpg', + * width:'100', + * height:'100' + * }] ); + * ``` + */ + +UE.commands["insertimage"] = { + execCommand: function(cmd, opt) { + opt = utils.isArray(opt) ? opt : [opt]; + if (!opt.length) { + return; + } + var me = this, + range = me.selection.getRange(), + img = range.getClosedNode(); + + if (me.fireEvent("beforeinsertimage", opt) === true) { + return; + } + + if ( + img && + /img/i.test(img.tagName) && + (img.className != "edui-faked-video" || + img.className.indexOf("edui-upload-video") != -1) && + !img.getAttribute("data-word-image") + ) { + var first = opt.shift(); + var floatStyle = first["floatStyle"]; + delete first["floatStyle"]; + //// img.style.border = (first.border||0) +"px solid #000"; + //// img.style.margin = (first.margin||0) +"px"; + // img.style.cssText += ';margin:' + (first.margin||0) +"px;" + 'border:' + (first.border||0) +"px solid #000"; + domUtils.setAttributes(img, first); + me.execCommand("imagefloat", floatStyle); + if (opt.length > 0) { + range.setStartAfter(img).setCursor(false, true); + me.execCommand("insertimage", opt); + } + } else { + var html = [], + str = "", + ci; + ci = opt[0]; + if (opt.length == 1) { + str = + '' + ci.alt + '"; + if (ci["floatStyle"] == "center") { + str = '

    ' + str + "

    "; + } + html.push(str); + } else { + for (var i = 0; (ci = opt[i++]); ) { + str = + "

    "; + html.push(str); + } + } + + me.execCommand("insertHtml", html.join("")); + } + + me.fireEvent("afterinsertimage", opt); + } +}; + + +// plugins/justify.js +/** + * 段落格式 + * @file + * @since 1.2.6.1 + */ + +/** + * 段落对齐方式 + * @command justify + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } align 对齐方式:left => 居左,right => 居右,center => 居中,justify => 两端对齐 + * @example + * ```javascript + * editor.execCommand( 'justify', 'center' ); + * ``` + */ +/** + * 如果选区所在位置是段落区域,返回当前段落对齐方式 + * @command justify + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回段落对齐方式 + * @example + * ```javascript + * editor.queryCommandValue( 'justify' ); + * ``` + */ + +UE.plugins["justify"] = function() { + var me = this, + block = domUtils.isBlockElm, + defaultValue = { + left: 1, + right: 1, + center: 1, + justify: 1 + }, + doJustify = function(range, style) { + var bookmark = range.createBookmark(), + filterFn = function(node) { + return node.nodeType == 1 + ? node.tagName.toLowerCase() != "br" && + !domUtils.isBookmarkNode(node) + : !domUtils.isWhitespace(node); + }; + + range.enlarge(true); + var bookmark2 = range.createBookmark(), + current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), + tmpRange = range.cloneRange(), + tmpNode; + while ( + current && + !( + domUtils.getPosition(current, bookmark2.end) & + domUtils.POSITION_FOLLOWING + ) + ) { + if (current.nodeType == 3 || !block(current)) { + tmpRange.setStartBefore(current); + while (current && current !== bookmark2.end && !block(current)) { + tmpNode = current; + current = domUtils.getNextDomNode(current, false, null, function( + node + ) { + return !block(node); + }); + } + tmpRange.setEndAfter(tmpNode); + var common = tmpRange.getCommonAncestor(); + if (!domUtils.isBody(common) && block(common)) { + domUtils.setStyles( + common, + utils.isString(style) ? { "text-align": style } : style + ); + current = common; + } else { + var p = range.document.createElement("p"); + domUtils.setStyles( + p, + utils.isString(style) ? { "text-align": style } : style + ); + var frag = tmpRange.extractContents(); + p.appendChild(frag); + tmpRange.insertNode(p); + current = p; + } + current = domUtils.getNextDomNode(current, false, filterFn); + } else { + current = domUtils.getNextDomNode(current, true, filterFn); + } + } + return range.moveToBookmark(bookmark2).moveToBookmark(bookmark); + }; + + UE.commands["justify"] = { + execCommand: function(cmdName, align) { + var range = this.selection.getRange(), + txt; + + //闭合时单独处理 + if (range.collapsed) { + txt = this.document.createTextNode("p"); + range.insertNode(txt); + } + doJustify(range, align); + if (txt) { + range.setStartBefore(txt).collapse(true); + domUtils.remove(txt); + } + + range.select(); + + return true; + }, + queryCommandValue: function() { + var startNode = this.selection.getStart(), + value = domUtils.getComputedStyle(startNode, "text-align"); + return defaultValue[value] ? value : "left"; + }, + queryCommandState: function() { + var start = this.selection.getStart(), + cell = + start && + domUtils.findParentByTagName(start, ["td", "th", "caption"], true); + + return cell ? -1 : 0; + } + }; +}; + + +// plugins/font.js +/** + * 字体颜色,背景色,字号,字体,下划线,删除线 + * @file + * @since 1.2.6.1 + */ + +/** + * 字体颜色 + * @command forecolor + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } value 色值(必须十六进制) + * @example + * ```javascript + * editor.execCommand( 'forecolor', '#000' ); + * ``` + */ +/** + * 返回选区字体颜色 + * @command forecolor + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回字体颜色 + * @example + * ```javascript + * editor.queryCommandValue( 'forecolor' ); + * ``` + */ + +/** + * 字体背景颜色 + * @command backcolor + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } value 色值(必须十六进制) + * @example + * ```javascript + * editor.execCommand( 'backcolor', '#000' ); + * ``` + */ +/** + * 返回选区字体颜色 + * @command backcolor + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回字体背景颜色 + * @example + * ```javascript + * editor.queryCommandValue( 'backcolor' ); + * ``` + */ + +/** + * 字体大小 + * @command fontsize + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } value 字体大小 + * @example + * ```javascript + * editor.execCommand( 'fontsize', '14px' ); + * ``` + */ +/** + * 返回选区字体大小 + * @command fontsize + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回字体大小 + * @example + * ```javascript + * editor.queryCommandValue( 'fontsize' ); + * ``` + */ + +/** + * 字体样式 + * @command fontfamily + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } value 字体样式 + * @example + * ```javascript + * editor.execCommand( 'fontfamily', '微软雅黑' ); + * ``` + */ +/** + * 返回选区字体样式 + * @command fontfamily + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回字体样式 + * @example + * ```javascript + * editor.queryCommandValue( 'fontfamily' ); + * ``` + */ + +/** + * 字体下划线,与删除线互斥 + * @command underline + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'underline' ); + * ``` + */ + +/** + * 字体删除线,与下划线互斥 + * @command strikethrough + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'strikethrough' ); + * ``` + */ + +/** + * 字体边框 + * @command fontborder + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'fontborder' ); + * ``` + */ + +UE.plugins["font"] = function() { + var me = this, + fonts = { + forecolor: "color", + backcolor: "background-color", + fontsize: "font-size", + fontfamily: "font-family", + underline: "text-decoration", + strikethrough: "text-decoration", + fontborder: "border" + }, + needCmd = { underline: 1, strikethrough: 1, fontborder: 1 }, + needSetChild = { + forecolor: "color", + backcolor: "background-color", + fontsize: "font-size", + fontfamily: "font-family" + }; + me.setOpt({ + fontfamily: [ + { name: "songti", val: "宋体,SimSun" }, + { name: "yahei", val: "微软雅黑,Microsoft YaHei" }, + { name: "kaiti", val: "楷体,楷体_GB2312, SimKai" }, + { name: "heiti", val: "黑体, SimHei" }, + { name: "lishu", val: "隶书, SimLi" }, + { name: "andaleMono", val: "andale mono" }, + { name: "arial", val: "arial, helvetica,sans-serif" }, + { name: "arialBlack", val: "arial black,avant garde" }, + { name: "comicSansMs", val: "comic sans ms" }, + { name: "impact", val: "impact,chicago" }, + { name: "timesNewRoman", val: "times new roman" } + ], + fontsize: [10, 11, 12, 14, 16, 18, 20, 24, 36] + }); + + function mergeWithParent(node) { + var parent; + while ((parent = node.parentNode)) { + if ( + parent.tagName == "SPAN" && + domUtils.getChildCount(parent, function(child) { + return !domUtils.isBookmarkNode(child) && !domUtils.isBr(child); + }) == 1 + ) { + parent.style.cssText += node.style.cssText; + domUtils.remove(node, true); + node = parent; + } else { + break; + } + } + } + function mergeChild(rng, cmdName, value) { + if (needSetChild[cmdName]) { + rng.adjustmentBoundary(); + if (!rng.collapsed && rng.startContainer.nodeType == 1) { + var start = rng.startContainer.childNodes[rng.startOffset]; + if (start && domUtils.isTagNode(start, "span")) { + var bk = rng.createBookmark(); + utils.each(domUtils.getElementsByTagName(start, "span"), function( + span + ) { + if (!span.parentNode || domUtils.isBookmarkNode(span)) return; + if ( + cmdName == "backcolor" && + domUtils + .getComputedStyle(span, "background-color") + .toLowerCase() === value + ) { + return; + } + domUtils.removeStyle(span, needSetChild[cmdName]); + if (span.style.cssText.replace(/^\s+$/, "").length == 0) { + domUtils.remove(span, true); + } + }); + rng.moveToBookmark(bk); + } + } + } + } + function mergesibling(rng, cmdName, value) { + var collapsed = rng.collapsed, + bk = rng.createBookmark(), + common; + if (collapsed) { + common = bk.start.parentNode; + while (dtd.$inline[common.tagName]) { + common = common.parentNode; + } + } else { + common = domUtils.getCommonAncestor(bk.start, bk.end); + } + utils.each(domUtils.getElementsByTagName(common, "span"), function(span) { + if (!span.parentNode || domUtils.isBookmarkNode(span)) return; + if (/\s*border\s*:\s*none;?\s*/i.test(span.style.cssText)) { + if (/^\s*border\s*:\s*none;?\s*$/.test(span.style.cssText)) { + domUtils.remove(span, true); + } else { + domUtils.removeStyle(span, "border"); + } + return; + } + if ( + /border/i.test(span.style.cssText) && + span.parentNode.tagName == "SPAN" && + /border/i.test(span.parentNode.style.cssText) + ) { + span.style.cssText = span.style.cssText.replace( + /border[^:]*:[^;]+;?/gi, + "" + ); + } + if (!(cmdName == "fontborder" && value == "none")) { + var next = span.nextSibling; + while (next && next.nodeType == 1 && next.tagName == "SPAN") { + if (domUtils.isBookmarkNode(next) && cmdName == "fontborder") { + span.appendChild(next); + next = span.nextSibling; + continue; + } + if (next.style.cssText == span.style.cssText) { + domUtils.moveChild(next, span); + domUtils.remove(next); + } + if (span.nextSibling === next) break; + next = span.nextSibling; + } + } + + mergeWithParent(span); + if (browser.ie && browser.version > 8) { + //拷贝父亲们的特别的属性,这里只做背景颜色的处理 + var parent = domUtils.findParent(span, function(n) { + return ( + n.tagName == "SPAN" && /background-color/.test(n.style.cssText) + ); + }); + if (parent && !/background-color/.test(span.style.cssText)) { + span.style.backgroundColor = parent.style.backgroundColor; + } + } + }); + rng.moveToBookmark(bk); + mergeChild(rng, cmdName, value); + } + + me.addInputRule(function(root) { + utils.each(root.getNodesByTagName("u s del font strike"), function(node) { + if (node.tagName == "font") { + var cssStyle = []; + for (var p in node.attrs) { + switch (p) { + case "size": + cssStyle.push( + "font-size:" + + ({ + "1": "10", + "2": "12", + "3": "16", + "4": "18", + "5": "24", + "6": "32", + "7": "48" + }[node.attrs[p]] || node.attrs[p]) + + "px" + ); + break; + case "color": + cssStyle.push("color:" + node.attrs[p]); + break; + case "face": + cssStyle.push("font-family:" + node.attrs[p]); + break; + case "style": + cssStyle.push(node.attrs[p]); + } + } + node.attrs = { + style: cssStyle.join(";") + }; + } else { + var val = node.tagName == "u" ? "underline" : "line-through"; + node.attrs = { + style: (node.getAttr("style") || "") + "text-decoration:" + val + ";" + }; + } + node.tagName = "span"; + }); + // utils.each(root.getNodesByTagName('span'), function (node) { + // var val; + // if(val = node.getAttr('class')){ + // if(/fontstrikethrough/.test(val)){ + // node.setStyle('text-decoration','line-through'); + // if(node.attrs['class']){ + // node.attrs['class'] = node.attrs['class'].replace(/fontstrikethrough/,''); + // }else{ + // node.setAttr('class') + // } + // } + // if(/fontborder/.test(val)){ + // node.setStyle('border','1px solid #000'); + // if(node.attrs['class']){ + // node.attrs['class'] = node.attrs['class'].replace(/fontborder/,''); + // }else{ + // node.setAttr('class') + // } + // } + // } + // }); + }); + // me.addOutputRule(function(root){ + // utils.each(root.getNodesByTagName('span'), function (node) { + // var val; + // if(val = node.getStyle('text-decoration')){ + // if(/line-through/.test(val)){ + // if(node.attrs['class']){ + // node.attrs['class'] += ' fontstrikethrough'; + // }else{ + // node.setAttr('class','fontstrikethrough') + // } + // } + // + // node.setStyle('text-decoration') + // } + // if(val = node.getStyle('border')){ + // if(/1px/.test(val) && /solid/.test(val)){ + // if(node.attrs['class']){ + // node.attrs['class'] += ' fontborder'; + // + // }else{ + // node.setAttr('class','fontborder') + // } + // } + // node.setStyle('border') + // + // } + // }); + // }); + for (var p in fonts) { + (function(cmd, style) { + UE.commands[cmd] = { + execCommand: function(cmdName, value) { + value = + value || + (this.queryCommandState(cmdName) + ? "none" + : cmdName == "underline" + ? "underline" + : cmdName == "fontborder" ? "1px solid #000" : "line-through"); + var me = this, + range = this.selection.getRange(), + text; + + if (value == "default") { + if (range.collapsed) { + text = me.document.createTextNode("font"); + range.insertNode(text).select(); + } + me.execCommand("removeFormat", "span,a", style); + if (text) { + range.setStartBefore(text).collapse(true); + domUtils.remove(text); + } + mergesibling(range, cmdName, value); + range.select(); + } else { + if (!range.collapsed) { + if (needCmd[cmd] && me.queryCommandValue(cmd)) { + me.execCommand("removeFormat", "span,a", style); + } + range = me.selection.getRange(); + + range.applyInlineStyle("span", { style: style + ":" + value }); + mergesibling(range, cmdName, value); + range.select(); + } else { + var span = domUtils.findParentByTagName( + range.startContainer, + "span", + true + ); + text = me.document.createTextNode("font"); + if ( + span && + !span.children.length && + !span[browser.ie ? "innerText" : "textContent"].replace( + fillCharReg, + "" + ).length + ) { + //for ie hack when enter + range.insertNode(text); + if (needCmd[cmd]) { + range.selectNode(text).select(); + me.execCommand("removeFormat", "span,a", style, null); + + span = domUtils.findParentByTagName(text, "span", true); + range.setStartBefore(text); + } + span && (span.style.cssText += ";" + style + ":" + value); + range.collapse(true).select(); + } else { + range.insertNode(text); + range.selectNode(text).select(); + span = range.document.createElement("span"); + + if (needCmd[cmd]) { + //a标签内的不处理跳过 + if (domUtils.findParentByTagName(text, "a", true)) { + range.setStartBefore(text).setCursor(); + domUtils.remove(text); + return; + } + me.execCommand("removeFormat", "span,a", style); + } + + span.style.cssText = style + ":" + value; + + text.parentNode.insertBefore(span, text); + //修复,span套span 但样式不继承的问题 + if (!browser.ie || (browser.ie && browser.version == 9)) { + var spanParent = span.parentNode; + while (!domUtils.isBlockElm(spanParent)) { + if (spanParent.tagName == "SPAN") { + //opera合并style不会加入";" + span.style.cssText = + spanParent.style.cssText + ";" + span.style.cssText; + } + spanParent = spanParent.parentNode; + } + } + + if (opera) { + setTimeout(function() { + range.setStart(span, 0).collapse(true); + mergesibling(range, cmdName, value); + range.select(); + }); + } else { + range.setStart(span, 0).collapse(true); + mergesibling(range, cmdName, value); + range.select(); + } + + //trace:981 + //domUtils.mergeToParent(span) + } + domUtils.remove(text); + } + } + return true; + }, + queryCommandValue: function(cmdName) { + var startNode = this.selection.getStart(); + + //trace:946 + if (cmdName == "underline" || cmdName == "strikethrough") { + var tmpNode = startNode, + value; + while ( + tmpNode && + !domUtils.isBlockElm(tmpNode) && + !domUtils.isBody(tmpNode) + ) { + if (tmpNode.nodeType == 1) { + value = domUtils.getComputedStyle(tmpNode, style); + if (value != "none") { + return value; + } + } + + tmpNode = tmpNode.parentNode; + } + return "none"; + } + if (cmdName == "fontborder") { + var tmp = startNode, + val; + while (tmp && dtd.$inline[tmp.tagName]) { + if ((val = domUtils.getComputedStyle(tmp, "border"))) { + if (/1px/.test(val) && /solid/.test(val)) { + return val; + } + } + tmp = tmp.parentNode; + } + return ""; + } + + if (cmdName == "FontSize") { + var styleVal = domUtils.getComputedStyle(startNode, style), + tmp = /^([\d\.]+)(\w+)$/.exec(styleVal); + + if (tmp) { + return Math.floor(tmp[1]) + tmp[2]; + } + + return styleVal; + } + + return domUtils.getComputedStyle(startNode, style); + }, + queryCommandState: function(cmdName) { + if (!needCmd[cmdName]) return 0; + var val = this.queryCommandValue(cmdName); + if (cmdName == "fontborder") { + return /1px/.test(val) && /solid/.test(val); + } else { + return cmdName == "underline" + ? /underline/.test(val) + : /line\-through/.test(val); + } + } + }; + })(p, fonts[p]); + } +}; + + +// plugins/link.js +/** + * 超链接 + * @file + * @since 1.2.6.1 + */ + +/** + * 插入超链接 + * @command link + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Object } options 设置自定义属性,例如:url、title、target + * @example + * ```javascript + * editor.execCommand( 'link', '{ + * url:'ueditor.baidu.com', + * title:'ueditor', + * target:'_blank' + * }' ); + * ``` + */ +/** + * 返回当前选中的第一个超链接节点 + * @command link + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { Element } 超链接节点 + * @example + * ```javascript + * editor.queryCommandValue( 'link' ); + * ``` + */ + +/** + * 取消超链接 + * @command unlink + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'unlink'); + * ``` + */ + +UE.plugins["link"] = function() { + function optimize(range) { + var start = range.startContainer, + end = range.endContainer; + + if ((start = domUtils.findParentByTagName(start, "a", true))) { + range.setStartBefore(start); + } + if ((end = domUtils.findParentByTagName(end, "a", true))) { + range.setEndAfter(end); + } + } + + UE.commands["unlink"] = { + execCommand: function() { + var range = this.selection.getRange(), + bookmark; + if ( + range.collapsed && + !domUtils.findParentByTagName(range.startContainer, "a", true) + ) { + return; + } + bookmark = range.createBookmark(); + optimize(range); + range.removeInlineStyle("a").moveToBookmark(bookmark).select(); + }, + queryCommandState: function() { + return !this.highlight && this.queryCommandValue("link") ? 0 : -1; + } + }; + function doLink(range, opt, me) { + var rngClone = range.cloneRange(), + link = me.queryCommandValue("link"); + optimize((range = range.adjustmentBoundary())); + var start = range.startContainer; + if (start.nodeType == 1 && link) { + start = start.childNodes[range.startOffset]; + if ( + start && + start.nodeType == 1 && + start.tagName == "A" && + /^(?:https?|ftp|file)\s*:\s*\/\//.test( + start[browser.ie ? "innerText" : "textContent"] + ) + ) { + start[browser.ie ? "innerText" : "textContent"] = utils.html( + opt.textValue || opt.href + ); + } + } + if (!rngClone.collapsed || link) { + range.removeInlineStyle("a"); + rngClone = range.cloneRange(); + } + + if (rngClone.collapsed) { + var a = range.document.createElement("a"), + text = ""; + if (opt.textValue) { + text = utils.html(opt.textValue); + delete opt.textValue; + } else { + text = utils.html(opt.href); + } + domUtils.setAttributes(a, opt); + start = domUtils.findParentByTagName(rngClone.startContainer, "a", true); + if (start && domUtils.isInNodeEndBoundary(rngClone, start)) { + range.setStartAfter(start).collapse(true); + } + a[browser.ie ? "innerText" : "textContent"] = text; + range.insertNode(a).selectNode(a); + } else { + range.applyInlineStyle("a", opt); + } + } + UE.commands["link"] = { + execCommand: function(cmdName, opt) { + var range; + opt._href && (opt._href = utils.unhtml(opt._href, /[<">]/g)); + opt.href && (opt.href = utils.unhtml(opt.href, /[<">]/g)); + opt.textValue && (opt.textValue = utils.unhtml(opt.textValue, /[<">]/g)); + doLink((range = this.selection.getRange()), opt, this); + //闭合都不加占位符,如果加了会在a后边多个占位符节点,导致a是图片背景组成的列表,出现空白问题 + range.collapse().select(true); + }, + queryCommandValue: function() { + var range = this.selection.getRange(), + node; + if (range.collapsed) { + // node = this.selection.getStart(); + //在ie下getstart()取值偏上了 + node = range.startContainer; + node = node.nodeType == 1 ? node : node.parentNode; + + if ( + node && + (node = domUtils.findParentByTagName(node, "a", true)) && + !domUtils.isInNodeEndBoundary(range, node) + ) { + return node; + } + } else { + //trace:1111 如果是

    xx

    startContainer是p就会找不到a + range.shrinkBoundary(); + var start = range.startContainer.nodeType == 3 || + !range.startContainer.childNodes[range.startOffset] + ? range.startContainer + : range.startContainer.childNodes[range.startOffset], + end = range.endContainer.nodeType == 3 || range.endOffset == 0 + ? range.endContainer + : range.endContainer.childNodes[range.endOffset - 1], + common = range.getCommonAncestor(); + node = domUtils.findParentByTagName(common, "a", true); + if (!node && common.nodeType == 1) { + var as = common.getElementsByTagName("a"), + ps, + pe; + + for (var i = 0, ci; (ci = as[i++]); ) { + (ps = domUtils.getPosition(ci, start)), (pe = domUtils.getPosition( + ci, + end + )); + if ( + (ps & domUtils.POSITION_FOLLOWING || + ps & domUtils.POSITION_CONTAINS) && + (pe & domUtils.POSITION_PRECEDING || + pe & domUtils.POSITION_CONTAINS) + ) { + node = ci; + break; + } + } + } + return node; + } + }, + queryCommandState: function() { + //判断如果是视频的话连接不可用 + //fix 853 + var img = this.selection.getRange().getClosedNode(), + flag = + img && + (img.className == "edui-faked-video" || + img.className.indexOf("edui-upload-video") != -1); + return flag ? -1 : 0; + } + }; +}; + + +// plugins/iframe.js +///import core +///import plugins\inserthtml.js +///commands 插入框架 +///commandsName InsertFrame +///commandsTitle 插入Iframe +///commandsDialog dialogs\insertframe + +UE.plugins["insertframe"] = function() { + var me = this; + function deleteIframe() { + me._iframe && delete me._iframe; + } + + me.addListener("selectionchange", function() { + deleteIframe(); + }); +}; + + +// plugins/scrawl.js +///import core +///commands 涂鸦 +///commandsName Scrawl +///commandsTitle 涂鸦 +///commandsDialog dialogs\scrawl +UE.commands["scrawl"] = { + queryCommandState: function() { + return browser.ie && browser.version <= 8 ? -1 : 0; + } +}; + + +// plugins/removeformat.js +/** + * 清除格式 + * @file + * @since 1.2.6.1 + */ + +/** + * 清除文字样式 + * @command removeformat + * @method execCommand + * @param { String } cmd 命令字符串 + * @param {String} tags 以逗号隔开的标签。如:strong + * @param {String} style 样式如:color + * @param {String} attrs 属性如:width + * @example + * ```javascript + * editor.execCommand( 'removeformat', 'strong','color','width' ); + * ``` + */ + +UE.plugins["removeformat"] = function() { + var me = this; + me.setOpt({ + removeFormatTags: + "b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var", + removeFormatAttributes: "class,style,lang,width,height,align,hspace,valign" + }); + me.commands["removeformat"] = { + execCommand: function(cmdName, tags, style, attrs, notIncludeA) { + var tagReg = new RegExp( + "^(?:" + + (tags || this.options.removeFormatTags).replace(/,/g, "|") + + ")$", + "i" + ), + removeFormatAttributes = style + ? [] + : (attrs || this.options.removeFormatAttributes).split(","), + range = new dom.Range(this.document), + bookmark, + node, + parent, + filter = function(node) { + return node.nodeType == 1; + }; + + function isRedundantSpan(node) { + if (node.nodeType == 3 || node.tagName.toLowerCase() != "span") { + return 0; + } + if (browser.ie) { + //ie 下判断实效,所以只能简单用style来判断 + //return node.style.cssText == '' ? 1 : 0; + var attrs = node.attributes; + if (attrs.length) { + for (var i = 0, l = attrs.length; i < l; i++) { + if (attrs[i].specified) { + return 0; + } + } + return 1; + } + } + return !node.attributes.length; + } + function doRemove(range) { + var bookmark1 = range.createBookmark(); + if (range.collapsed) { + range.enlarge(true); + } + + //不能把a标签切了 + if (!notIncludeA) { + var aNode = domUtils.findParentByTagName( + range.startContainer, + "a", + true + ); + if (aNode) { + range.setStartBefore(aNode); + } + + aNode = domUtils.findParentByTagName(range.endContainer, "a", true); + if (aNode) { + range.setEndAfter(aNode); + } + } + + bookmark = range.createBookmark(); + + node = bookmark.start; + + //切开始 + while ((parent = node.parentNode) && !domUtils.isBlockElm(parent)) { + domUtils.breakParent(node, parent); + + domUtils.clearEmptySibling(node); + } + if (bookmark.end) { + //切结束 + node = bookmark.end; + while ((parent = node.parentNode) && !domUtils.isBlockElm(parent)) { + domUtils.breakParent(node, parent); + domUtils.clearEmptySibling(node); + } + + //开始去除样式 + var current = domUtils.getNextDomNode(bookmark.start, false, filter), + next; + while (current) { + if (current == bookmark.end) { + break; + } + + next = domUtils.getNextDomNode(current, true, filter); + + if ( + !dtd.$empty[current.tagName.toLowerCase()] && + !domUtils.isBookmarkNode(current) + ) { + if (tagReg.test(current.tagName)) { + if (style) { + domUtils.removeStyle(current, style); + if (isRedundantSpan(current) && style != "text-decoration") { + domUtils.remove(current, true); + } + } else { + domUtils.remove(current, true); + } + } else { + //trace:939 不能把list上的样式去掉 + if ( + !dtd.$tableContent[current.tagName] && + !dtd.$list[current.tagName] + ) { + domUtils.removeAttributes(current, removeFormatAttributes); + if (isRedundantSpan(current)) { + domUtils.remove(current, true); + } + } + } + } + current = next; + } + } + //trace:1035 + //trace:1096 不能把td上的样式去掉,比如边框 + var pN = bookmark.start.parentNode; + if ( + domUtils.isBlockElm(pN) && + !dtd.$tableContent[pN.tagName] && + !dtd.$list[pN.tagName] + ) { + domUtils.removeAttributes(pN, removeFormatAttributes); + } + pN = bookmark.end.parentNode; + if ( + bookmark.end && + domUtils.isBlockElm(pN) && + !dtd.$tableContent[pN.tagName] && + !dtd.$list[pN.tagName] + ) { + domUtils.removeAttributes(pN, removeFormatAttributes); + } + range.moveToBookmark(bookmark).moveToBookmark(bookmark1); + //清除冗余的代码 + var node = range.startContainer, + tmp, + collapsed = range.collapsed; + while ( + node.nodeType == 1 && + domUtils.isEmptyNode(node) && + dtd.$removeEmpty[node.tagName] + ) { + tmp = node.parentNode; + range.setStartBefore(node); + //trace:937 + //更新结束边界 + if (range.startContainer === range.endContainer) { + range.endOffset--; + } + domUtils.remove(node); + node = tmp; + } + + if (!collapsed) { + node = range.endContainer; + while ( + node.nodeType == 1 && + domUtils.isEmptyNode(node) && + dtd.$removeEmpty[node.tagName] + ) { + tmp = node.parentNode; + range.setEndBefore(node); + domUtils.remove(node); + + node = tmp; + } + } + } + + range = this.selection.getRange(); + doRemove(range); + range.select(); + } + }; +}; + + +// plugins/blockquote.js +/** + * 添加引用 + * @file + * @since 1.2.6.1 + */ + +/** + * 添加引用 + * @command blockquote + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'blockquote' ); + * ``` + */ + +/** + * 添加引用 + * @command blockquote + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Object } attrs 节点属性 + * @example + * ```javascript + * editor.execCommand( 'blockquote',{ + * style: "color: red;" + * } ); + * ``` + */ + +UE.plugins["blockquote"] = function() { + var me = this; + function getObj(editor) { + return domUtils.filterNodeList( + editor.selection.getStartElementPath(), + "blockquote" + ); + } + me.commands["blockquote"] = { + execCommand: function(cmdName, attrs) { + var range = this.selection.getRange(), + obj = getObj(this), + blockquote = dtd.blockquote, + bookmark = range.createBookmark(); + + if (obj) { + var start = range.startContainer, + startBlock = domUtils.isBlockElm(start) + ? start + : domUtils.findParent(start, function(node) { + return domUtils.isBlockElm(node); + }), + end = range.endContainer, + endBlock = domUtils.isBlockElm(end) + ? end + : domUtils.findParent(end, function(node) { + return domUtils.isBlockElm(node); + }); + + //处理一下li + startBlock = + domUtils.findParentByTagName(startBlock, "li", true) || startBlock; + endBlock = + domUtils.findParentByTagName(endBlock, "li", true) || endBlock; + + if ( + startBlock.tagName == "LI" || + startBlock.tagName == "TD" || + startBlock === obj || + domUtils.isBody(startBlock) + ) { + domUtils.remove(obj, true); + } else { + domUtils.breakParent(startBlock, obj); + } + + if (startBlock !== endBlock) { + obj = domUtils.findParentByTagName(endBlock, "blockquote"); + if (obj) { + if ( + endBlock.tagName == "LI" || + endBlock.tagName == "TD" || + domUtils.isBody(endBlock) + ) { + obj.parentNode && domUtils.remove(obj, true); + } else { + domUtils.breakParent(endBlock, obj); + } + } + } + + var blockquotes = domUtils.getElementsByTagName( + this.document, + "blockquote" + ); + for (var i = 0, bi; (bi = blockquotes[i++]); ) { + if (!bi.childNodes.length) { + domUtils.remove(bi); + } else if ( + domUtils.getPosition(bi, startBlock) & + domUtils.POSITION_FOLLOWING && + domUtils.getPosition(bi, endBlock) & domUtils.POSITION_PRECEDING + ) { + domUtils.remove(bi, true); + } + } + } else { + var tmpRange = range.cloneRange(), + node = tmpRange.startContainer.nodeType == 1 + ? tmpRange.startContainer + : tmpRange.startContainer.parentNode, + preNode = node, + doEnd = 1; + + //调整开始 + while (1) { + if (domUtils.isBody(node)) { + if (preNode !== node) { + if (range.collapsed) { + tmpRange.selectNode(preNode); + doEnd = 0; + } else { + tmpRange.setStartBefore(preNode); + } + } else { + tmpRange.setStart(node, 0); + } + + break; + } + if (!blockquote[node.tagName]) { + if (range.collapsed) { + tmpRange.selectNode(preNode); + } else { + tmpRange.setStartBefore(preNode); + } + break; + } + + preNode = node; + node = node.parentNode; + } + + //调整结束 + if (doEnd) { + preNode = node = node = tmpRange.endContainer.nodeType == 1 + ? tmpRange.endContainer + : tmpRange.endContainer.parentNode; + while (1) { + if (domUtils.isBody(node)) { + if (preNode !== node) { + tmpRange.setEndAfter(preNode); + } else { + tmpRange.setEnd(node, node.childNodes.length); + } + + break; + } + if (!blockquote[node.tagName]) { + tmpRange.setEndAfter(preNode); + break; + } + + preNode = node; + node = node.parentNode; + } + } + + node = range.document.createElement("blockquote"); + domUtils.setAttributes(node, attrs); + node.appendChild(tmpRange.extractContents()); + tmpRange.insertNode(node); + //去除重复的 + var childs = domUtils.getElementsByTagName(node, "blockquote"); + for (var i = 0, ci; (ci = childs[i++]); ) { + if (ci.parentNode) { + domUtils.remove(ci, true); + } + } + } + range.moveToBookmark(bookmark).select(); + }, + queryCommandState: function() { + return getObj(this) ? 1 : 0; + } + }; +}; + + +// plugins/convertcase.js +/** + * 大小写转换 + * @file + * @since 1.2.6.1 + */ + +/** + * 把选区内文本变大写,与“tolowercase”命令互斥 + * @command touppercase + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'touppercase' ); + * ``` + */ + +/** + * 把选区内文本变小写,与“touppercase”命令互斥 + * @command tolowercase + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'tolowercase' ); + * ``` + */ +UE.commands["touppercase"] = UE.commands["tolowercase"] = { + execCommand: function(cmd) { + var me = this; + var rng = me.selection.getRange(); + if (rng.collapsed) { + return rng; + } + var bk = rng.createBookmark(), + bkEnd = bk.end, + filterFn = function(node) { + return !domUtils.isBr(node) && !domUtils.isWhitespace(node); + }, + curNode = domUtils.getNextDomNode(bk.start, false, filterFn); + while ( + curNode && + domUtils.getPosition(curNode, bkEnd) & domUtils.POSITION_PRECEDING + ) { + if (curNode.nodeType == 3) { + curNode.nodeValue = curNode.nodeValue[ + cmd == "touppercase" ? "toUpperCase" : "toLowerCase" + ](); + } + curNode = domUtils.getNextDomNode(curNode, true, filterFn); + if (curNode === bkEnd) { + break; + } + } + rng.moveToBookmark(bk).select(); + } +}; + + +// plugins/indent.js +/** + * 首行缩进 + * @file + * @since 1.2.6.1 + */ + +/** + * 缩进 + * @command indent + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'indent' ); + * ``` + */ +UE.commands["indent"] = { + execCommand: function() { + var me = this, + value = me.queryCommandState("indent") + ? "0em" + : me.options.indentValue || "2em"; + me.execCommand("Paragraph", "p", { style: "text-indent:" + value }); + }, + queryCommandState: function() { + var pN = domUtils.filterNodeList( + this.selection.getStartElementPath(), + "p h1 h2 h3 h4 h5 h6" + ); + return pN && pN.style.textIndent && parseInt(pN.style.textIndent) ? 1 : 0; + } +}; + + +// plugins/print.js +/** + * 打印 + * @file + * @since 1.2.6.1 + */ + +/** + * 打印 + * @command print + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'print' ); + * ``` + */ +UE.commands["print"] = { + execCommand: function() { + this.window.print(); + }, + notNeedUndo: 1 +}; + + +// plugins/preview.js +/** + * 预览 + * @file + * @since 1.2.6.1 + */ + +/** + * 预览 + * @command preview + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'preview' ); + * ``` + */ +UE.commands["preview"] = { + execCommand: function() { + var w = window.open("", "_blank", ""), + d = w.document; + d.open(); + d.write( + '
    " + + this.getContent(null, null, true) + + "
    " + ); + d.close(); + }, + notNeedUndo: 1 +}; + + +// plugins/selectall.js +/** + * 全选 + * @file + * @since 1.2.6.1 + */ + +/** + * 选中所有内容 + * @command selectall + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'selectall' ); + * ``` + */ +UE.plugins["selectall"] = function() { + var me = this; + me.commands["selectall"] = { + execCommand: function() { + //去掉了原生的selectAll,因为会出现报错和当内容为空时,不能出现闭合状态的光标 + var me = this, + body = me.body, + range = me.selection.getRange(); + range.selectNodeContents(body); + if (domUtils.isEmptyBlock(body)) { + //opera不能自动合并到元素的里边,要手动处理一下 + if (browser.opera && body.firstChild && body.firstChild.nodeType == 1) { + range.setStartAtFirst(body.firstChild); + } + range.collapse(true); + } + range.select(true); + }, + notNeedUndo: 1 + }; + + //快捷键 + me.addshortcutkey({ + selectAll: "ctrl+65" + }); +}; + + +// plugins/paragraph.js +/** + * 段落样式 + * @file + * @since 1.2.6.1 + */ + +/** + * 段落格式 + * @command paragraph + * @method execCommand + * @param { String } cmd 命令字符串 + * @param {String} style 标签值为:'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' + * @param {Object} attrs 标签的属性 + * @example + * ```javascript + * editor.execCommand( 'Paragraph','h1','{ + * class:'test' + * }' ); + * ``` + */ + +/** + * 返回选区内节点标签名 + * @command paragraph + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 节点标签名 + * @example + * ```javascript + * editor.queryCommandValue( 'Paragraph' ); + * ``` + */ + +UE.plugins["paragraph"] = function() { + var me = this, + block = domUtils.isBlockElm, + notExchange = ["TD", "LI", "PRE"], + doParagraph = function(range, style, attrs, sourceCmdName) { + var bookmark = range.createBookmark(), + filterFn = function(node) { + return node.nodeType == 1 + ? node.tagName.toLowerCase() != "br" && + !domUtils.isBookmarkNode(node) + : !domUtils.isWhitespace(node); + }, + para; + + range.enlarge(true); + var bookmark2 = range.createBookmark(), + current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), + tmpRange = range.cloneRange(), + tmpNode; + while ( + current && + !( + domUtils.getPosition(current, bookmark2.end) & + domUtils.POSITION_FOLLOWING + ) + ) { + if (current.nodeType == 3 || !block(current)) { + tmpRange.setStartBefore(current); + while (current && current !== bookmark2.end && !block(current)) { + tmpNode = current; + current = domUtils.getNextDomNode(current, false, null, function( + node + ) { + return !block(node); + }); + } + tmpRange.setEndAfter(tmpNode); + + para = range.document.createElement(style); + if (attrs) { + domUtils.setAttributes(para, attrs); + if ( + sourceCmdName && + sourceCmdName == "customstyle" && + attrs.style + ) { + para.style.cssText = attrs.style; + } + } + para.appendChild(tmpRange.extractContents()); + //需要内容占位 + if (domUtils.isEmptyNode(para)) { + domUtils.fillChar(range.document, para); + } + + tmpRange.insertNode(para); + + var parent = para.parentNode; + //如果para上一级是一个block元素且不是body,td就删除它 + if ( + block(parent) && + !domUtils.isBody(para.parentNode) && + utils.indexOf(notExchange, parent.tagName) == -1 + ) { + //存储dir,style + if (!(sourceCmdName && sourceCmdName == "customstyle")) { + parent.getAttribute("dir") && + para.setAttribute("dir", parent.getAttribute("dir")); + //trace:1070 + parent.style.cssText && + (para.style.cssText = + parent.style.cssText + ";" + para.style.cssText); + //trace:1030 + parent.style.textAlign && + !para.style.textAlign && + (para.style.textAlign = parent.style.textAlign); + parent.style.textIndent && + !para.style.textIndent && + (para.style.textIndent = parent.style.textIndent); + parent.style.padding && + !para.style.padding && + (para.style.padding = parent.style.padding); + } + + //trace:1706 选择的就是h1-6要删除 + if ( + attrs && + /h\d/i.test(parent.tagName) && + !/h\d/i.test(para.tagName) + ) { + domUtils.setAttributes(parent, attrs); + if ( + sourceCmdName && + sourceCmdName == "customstyle" && + attrs.style + ) { + parent.style.cssText = attrs.style; + } + domUtils.remove(para.parentNode, true); + para = parent; + } else { + domUtils.remove(para.parentNode, true); + } + } + if (utils.indexOf(notExchange, parent.tagName) != -1) { + current = parent; + } else { + current = para; + } + + current = domUtils.getNextDomNode(current, false, filterFn); + } else { + current = domUtils.getNextDomNode(current, true, filterFn); + } + } + return range.moveToBookmark(bookmark2).moveToBookmark(bookmark); + }; + me.setOpt("paragraph", { + p: "", + h1: "", + h2: "", + h3: "", + h4: "", + h5: "", + h6: "" + }); + me.commands["paragraph"] = { + execCommand: function(cmdName, style, attrs, sourceCmdName) { + var range = this.selection.getRange(); + //闭合时单独处理 + if (range.collapsed) { + var txt = this.document.createTextNode("p"); + range.insertNode(txt); + //去掉冗余的fillchar + if (browser.ie) { + var node = txt.previousSibling; + if (node && domUtils.isWhitespace(node)) { + domUtils.remove(node); + } + node = txt.nextSibling; + if (node && domUtils.isWhitespace(node)) { + domUtils.remove(node); + } + } + } + range = doParagraph(range, style, attrs, sourceCmdName); + if (txt) { + range.setStartBefore(txt).collapse(true); + pN = txt.parentNode; + + domUtils.remove(txt); + + if (domUtils.isBlockElm(pN) && domUtils.isEmptyNode(pN)) { + domUtils.fillNode(this.document, pN); + } + } + + if ( + browser.gecko && + range.collapsed && + range.startContainer.nodeType == 1 + ) { + var child = range.startContainer.childNodes[range.startOffset]; + if ( + child && + child.nodeType == 1 && + child.tagName.toLowerCase() == style + ) { + range.setStart(child, 0).collapse(true); + } + } + //trace:1097 原来有true,原因忘了,但去了就不能清除多余的占位符了 + range.select(); + + return true; + }, + queryCommandValue: function() { + var node = domUtils.filterNodeList( + this.selection.getStartElementPath(), + "p h1 h2 h3 h4 h5 h6" + ); + return node ? node.tagName.toLowerCase() : ""; + } + }; +}; + + +// plugins/directionality.js +/** + * 设置文字输入的方向的插件 + * @file + * @since 1.2.6.1 + */ +(function() { + var block = domUtils.isBlockElm, + getObj = function(editor) { + // var startNode = editor.selection.getStart(), + // parents; + // if ( startNode ) { + // //查找所有的是block的父亲节点 + // parents = domUtils.findParents( startNode, true, block, true ); + // for ( var i = 0,ci; ci = parents[i++]; ) { + // if ( ci.getAttribute( 'dir' ) ) { + // return ci; + // } + // } + // } + return domUtils.filterNodeList( + editor.selection.getStartElementPath(), + function(n) { + return n && n.nodeType == 1 && n.getAttribute("dir"); + } + ); + }, + doDirectionality = function(range, editor, forward) { + var bookmark, + filterFn = function(node) { + return node.nodeType == 1 + ? !domUtils.isBookmarkNode(node) + : !domUtils.isWhitespace(node); + }, + obj = getObj(editor); + + if (obj && range.collapsed) { + obj.setAttribute("dir", forward); + return range; + } + bookmark = range.createBookmark(); + range.enlarge(true); + var bookmark2 = range.createBookmark(), + current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), + tmpRange = range.cloneRange(), + tmpNode; + while ( + current && + !( + domUtils.getPosition(current, bookmark2.end) & + domUtils.POSITION_FOLLOWING + ) + ) { + if (current.nodeType == 3 || !block(current)) { + tmpRange.setStartBefore(current); + while (current && current !== bookmark2.end && !block(current)) { + tmpNode = current; + current = domUtils.getNextDomNode(current, false, null, function( + node + ) { + return !block(node); + }); + } + tmpRange.setEndAfter(tmpNode); + var common = tmpRange.getCommonAncestor(); + if (!domUtils.isBody(common) && block(common)) { + //遍历到了block节点 + common.setAttribute("dir", forward); + current = common; + } else { + //没有遍历到,添加一个block节点 + var p = range.document.createElement("p"); + p.setAttribute("dir", forward); + var frag = tmpRange.extractContents(); + p.appendChild(frag); + tmpRange.insertNode(p); + current = p; + } + + current = domUtils.getNextDomNode(current, false, filterFn); + } else { + current = domUtils.getNextDomNode(current, true, filterFn); + } + } + return range.moveToBookmark(bookmark2).moveToBookmark(bookmark); + }; + + /** + * 文字输入方向 + * @command directionality + * @method execCommand + * @param { String } cmdName 命令字符串 + * @param { String } forward 传入'ltr'表示从左向右输入,传入'rtl'表示从右向左输入 + * @example + * ```javascript + * editor.execCommand( 'directionality', 'ltr'); + * ``` + */ + + /** + * 查询当前选区的文字输入方向 + * @command directionality + * @method queryCommandValue + * @param { String } cmdName 命令字符串 + * @return { String } 返回'ltr'表示从左向右输入,返回'rtl'表示从右向左输入 + * @example + * ```javascript + * editor.queryCommandValue( 'directionality'); + * ``` + */ + UE.commands["directionality"] = { + execCommand: function(cmdName, forward) { + var range = this.selection.getRange(); + //闭合时单独处理 + if (range.collapsed) { + var txt = this.document.createTextNode("d"); + range.insertNode(txt); + } + doDirectionality(range, this, forward); + if (txt) { + range.setStartBefore(txt).collapse(true); + domUtils.remove(txt); + } + + range.select(); + return true; + }, + queryCommandValue: function() { + var node = getObj(this); + return node ? node.getAttribute("dir") : "ltr"; + } + }; +})(); + + +// plugins/horizontal.js +/** + * 插入分割线插件 + * @file + * @since 1.2.6.1 + */ + +/** + * 插入分割线 + * @command horizontal + * @method execCommand + * @param { String } cmdName 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'horizontal' ); + * ``` + */ +UE.plugins["horizontal"] = function() { + var me = this; + me.commands["horizontal"] = { + execCommand: function(cmdName) { + var me = this; + if (me.queryCommandState(cmdName) !== -1) { + me.execCommand("insertHtml", "
    "); + var range = me.selection.getRange(), + start = range.startContainer; + if (start.nodeType == 1 && !start.childNodes[range.startOffset]) { + var tmp; + if ((tmp = start.childNodes[range.startOffset - 1])) { + if (tmp.nodeType == 1 && tmp.tagName == "HR") { + if (me.options.enterTag == "p") { + tmp = me.document.createElement("p"); + range.insertNode(tmp); + range.setStart(tmp, 0).setCursor(); + } else { + tmp = me.document.createElement("br"); + range.insertNode(tmp); + range.setStartBefore(tmp).setCursor(); + } + } + } + } + return true; + } + }, + //边界在table里不能加分隔线 + queryCommandState: function() { + return domUtils.filterNodeList( + this.selection.getStartElementPath(), + "table" + ) + ? -1 + : 0; + } + }; + // me.addListener('delkeyup',function(){ + // var rng = this.selection.getRange(); + // if(browser.ie && browser.version > 8){ + // rng.txtToElmBoundary(true); + // if(domUtils.isStartInblock(rng)){ + // var tmpNode = rng.startContainer; + // var pre = tmpNode.previousSibling; + // if(pre && domUtils.isTagNode(pre,'hr')){ + // domUtils.remove(pre); + // rng.select(); + // return; + // } + // } + // } + // if(domUtils.isBody(rng.startContainer)){ + // var hr = rng.startContainer.childNodes[rng.startOffset -1]; + // if(hr && hr.nodeName == 'HR'){ + // var next = hr.nextSibling; + // if(next){ + // rng.setStart(next,0) + // }else if(hr.previousSibling){ + // rng.setStartAtLast(hr.previousSibling) + // }else{ + // var p = this.document.createElement('p'); + // hr.parentNode.insertBefore(p,hr); + // domUtils.fillNode(this.document,p); + // rng.setStart(p,0); + // } + // domUtils.remove(hr); + // rng.setCursor(false,true); + // } + // } + // }) + me.addListener("delkeydown", function(name, evt) { + var rng = this.selection.getRange(); + rng.txtToElmBoundary(true); + if (domUtils.isStartInblock(rng)) { + var tmpNode = rng.startContainer; + var pre = tmpNode.previousSibling; + if (pre && domUtils.isTagNode(pre, "hr")) { + domUtils.remove(pre); + rng.select(); + domUtils.preventDefault(evt); + return true; + } + } + }); +}; + + +// plugins/time.js +/** + * 插入时间和日期 + * @file + * @since 1.2.6.1 + */ + +/** + * 插入时间,默认格式:12:59:59 + * @command time + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'time'); + * ``` + */ + +/** + * 插入日期,默认格式:2013-08-30 + * @command date + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'date'); + * ``` + */ +UE.commands["time"] = UE.commands["date"] = { + execCommand: function(cmd, format) { + var date = new Date(); + + function formatTime(date, format) { + var hh = ("0" + date.getHours()).slice(-2), + ii = ("0" + date.getMinutes()).slice(-2), + ss = ("0" + date.getSeconds()).slice(-2); + format = format || "hh:ii:ss"; + return format.replace(/hh/gi, hh).replace(/ii/gi, ii).replace(/ss/gi, ss); + } + function formatDate(date, format) { + var yyyy = ("000" + date.getFullYear()).slice(-4), + yy = yyyy.slice(-2), + mm = ("0" + (date.getMonth() + 1)).slice(-2), + dd = ("0" + date.getDate()).slice(-2); + format = format || "yyyy-mm-dd"; + return format + .replace(/yyyy/gi, yyyy) + .replace(/yy/gi, yy) + .replace(/mm/gi, mm) + .replace(/dd/gi, dd); + } + + this.execCommand( + "insertHtml", + cmd == "time" ? formatTime(date, format) : formatDate(date, format) + ); + } +}; + + +// plugins/rowspacing.js +/** + * 段前段后间距插件 + * @file + * @since 1.2.6.1 + */ + +/** + * 设置段间距 + * @command rowspacing + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } value 段间距的值,以px为单位 + * @param { String } dir 间距位置,top或bottom,分别表示段前和段后 + * @example + * ```javascript + * editor.execCommand( 'rowspacing', '10', 'top' ); + * ``` + */ + +UE.plugins["rowspacing"] = function() { + var me = this; + me.setOpt({ + rowspacingtop: ["5", "10", "15", "20", "25"], + rowspacingbottom: ["5", "10", "15", "20", "25"] + }); + me.commands["rowspacing"] = { + execCommand: function(cmdName, value, dir) { + this.execCommand("paragraph", "p", { + style: "margin-" + dir + ":" + value + "px" + }); + return true; + }, + queryCommandValue: function(cmdName, dir) { + var pN = domUtils.filterNodeList( + this.selection.getStartElementPath(), + function(node) { + return domUtils.isBlockElm(node); + } + ), + value; + //trace:1026 + if (pN) { + value = domUtils + .getComputedStyle(pN, "margin-" + dir) + .replace(/[^\d]/g, ""); + return !value ? 0 : value; + } + return 0; + } + }; +}; + + +// plugins/lineheight.js +/** + * 设置行内间距 + * @file + * @since 1.2.6.1 + */ +UE.plugins["lineheight"] = function() { + var me = this; + me.setOpt({ lineheight: ["1", "1.5", "1.75", "2", "3", "4", "5"] }); + + /** + * 行距 + * @command lineheight + * @method execCommand + * @param { String } cmdName 命令字符串 + * @param { String } value 传入的行高值, 该值是当前字体的倍数, 例如: 1.5, 1.75 + * @example + * ```javascript + * editor.execCommand( 'lineheight', 1.5); + * ``` + */ + /** + * 查询当前选区内容的行高大小 + * @command lineheight + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回当前行高大小 + * @example + * ```javascript + * editor.queryCommandValue( 'lineheight' ); + * ``` + */ + + me.commands["lineheight"] = { + execCommand: function(cmdName, value) { + this.execCommand("paragraph", "p", { + style: "line-height:" + (value == "1" ? "normal" : value + "em") + }); + return true; + }, + queryCommandValue: function() { + var pN = domUtils.filterNodeList( + this.selection.getStartElementPath(), + function(node) { + return domUtils.isBlockElm(node); + } + ); + if (pN) { + var value = domUtils.getComputedStyle(pN, "line-height"); + return value == "normal" ? 1 : value.replace(/[^\d.]*/gi, ""); + } + } + }; +}; + + +// plugins/insertcode.js +/** + * 插入代码插件 + * @file + * @since 1.2.6.1 + */ + +UE.plugins["insertcode"] = function() { + var me = this; + me.setOpt("insertcode", { + as3: "ActionScript3", + bash: "Bash/Shell", + cpp: "C/C++", + css: "Css", + cf: "CodeFunction", + "c#": "C#", + delphi: "Delphi", + diff: "Diff", + erlang: "Erlang", + groovy: "Groovy", + html: "Html", + java: "Java", + jfx: "JavaFx", + js: "Javascript", + pl: "Perl", + php: "Php", + plain: "Plain Text", + ps: "PowerShell", + python: "Python", + ruby: "Ruby", + scala: "Scala", + sql: "Sql", + vb: "Vb", + xml: "Xml" + }); + + /** + * 插入代码 + * @command insertcode + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } lang 插入代码的语言 + * @example + * ```javascript + * editor.execCommand( 'insertcode', 'javascript' ); + * ``` + */ + + /** + * 如果选区所在位置是插入插入代码区域,返回代码的语言 + * @command insertcode + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回代码的语言 + * @example + * ```javascript + * editor.queryCommandValue( 'insertcode' ); + * ``` + */ + + me.commands["insertcode"] = { + execCommand: function(cmd, lang) { + var me = this, + rng = me.selection.getRange(), + pre = domUtils.findParentByTagName(rng.startContainer, "pre", true); + if (pre) { + pre.className = "brush:" + lang + ";toolbar:false;"; + } else { + var code = ""; + if (rng.collapsed) { + code = browser.ie && browser.ie11below + ? browser.version <= 8 ? " " : "" + : "
    "; + } else { + var frag = rng.extractContents(); + var div = me.document.createElement("div"); + div.appendChild(frag); + + utils.each( + UE.filterNode( + UE.htmlparser(div.innerHTML.replace(/[\r\t]/g, "")), + me.options.filterTxtRules + ).children, + function(node) { + if (browser.ie && browser.ie11below && browser.version > 8) { + if (node.type == "element") { + if (node.tagName == "br") { + code += "\n"; + } else if (!dtd.$empty[node.tagName]) { + utils.each(node.children, function(cn) { + if (cn.type == "element") { + if (cn.tagName == "br") { + code += "\n"; + } else if (!dtd.$empty[node.tagName]) { + code += cn.innerText(); + } + } else { + code += cn.data; + } + }); + if (!/\n$/.test(code)) { + code += "\n"; + } + } + } else { + code += node.data + "\n"; + } + if (!node.nextSibling() && /\n$/.test(code)) { + code = code.replace(/\n$/, ""); + } + } else { + if (browser.ie && browser.ie11below) { + if (node.type == "element") { + if (node.tagName == "br") { + code += "
    "; + } else if (!dtd.$empty[node.tagName]) { + utils.each(node.children, function(cn) { + if (cn.type == "element") { + if (cn.tagName == "br") { + code += "
    "; + } else if (!dtd.$empty[node.tagName]) { + code += cn.innerText(); + } + } else { + code += cn.data; + } + }); + if (!/br>$/.test(code)) { + code += "
    "; + } + } + } else { + code += node.data + "
    "; + } + if (!node.nextSibling() && /
    $/.test(code)) { + code = code.replace(/
    $/, ""); + } + } else { + code += node.type == "element" + ? dtd.$empty[node.tagName] ? "" : node.innerText() + : node.data; + if (!/br\/?\s*>$/.test(code)) { + if (!node.nextSibling()) return; + code += "
    "; + } + } + } + } + ); + } + me.execCommand( + "inserthtml", + '
    ' +
    +            code +
    +            "
    ", + true + ); + + pre = me.document.getElementById("coder"); + domUtils.removeAttributes(pre, "id"); + var tmpNode = pre.previousSibling; + + if ( + tmpNode && + ((tmpNode.nodeType == 3 && + tmpNode.nodeValue.length == 1 && + browser.ie && + browser.version == 6) || + domUtils.isEmptyBlock(tmpNode)) + ) { + domUtils.remove(tmpNode); + } + var rng = me.selection.getRange(); + if (domUtils.isEmptyBlock(pre)) { + rng.setStart(pre, 0).setCursor(false, true); + } else { + rng.selectNodeContents(pre).select(); + } + } + }, + queryCommandValue: function() { + var path = this.selection.getStartElementPath(); + var lang = ""; + utils.each(path, function(node) { + if (node.nodeName == "PRE") { + var match = node.className.match(/brush:([^;]+)/); + lang = match && match[1] ? match[1] : ""; + return false; + } + }); + return lang; + } + }; + + me.addInputRule(function(root) { + utils.each(root.getNodesByTagName("pre"), function(pre) { + var brs = pre.getNodesByTagName("br"); + if (brs.length) { + browser.ie && + browser.ie11below && + browser.version > 8 && + utils.each(brs, function(br) { + var txt = UE.uNode.createText("\n"); + br.parentNode.insertBefore(txt, br); + br.parentNode.removeChild(br); + }); + return; + } + if (browser.ie && browser.ie11below && browser.version > 8) return; + var code = pre.innerText().split(/\n/); + pre.innerHTML(""); + utils.each(code, function(c) { + if (c.length) { + pre.appendChild(UE.uNode.createText(c)); + } + pre.appendChild(UE.uNode.createElement("br")); + }); + }); + }); + me.addOutputRule(function(root) { + utils.each(root.getNodesByTagName("pre"), function(pre) { + var code = ""; + utils.each(pre.children, function(n) { + if (n.type == "text") { + //在ie下文本内容有可能末尾带有\n要去掉 + //trace:3396 + code += n.data.replace(/[ ]/g, " ").replace(/\n$/, ""); + } else { + if (n.tagName == "br") { + code += "\n"; + } else { + code += !dtd.$empty[n.tagName] ? "" : n.innerText(); + } + } + }); + + pre.innerText(code.replace(/( |\n)+$/, "")); + }); + }); + //不需要判断highlight的command列表 + me.notNeedCodeQuery = { + help: 1, + undo: 1, + redo: 1, + source: 1, + print: 1, + searchreplace: 1, + fullscreen: 1, + preview: 1, + insertparagraph: 1, + elementpath: 1, + insertcode: 1, + inserthtml: 1, + selectall: 1 + }; + //将queyCommamndState重置 + var orgQuery = me.queryCommandState; + me.queryCommandState = function(cmd) { + var me = this; + + if ( + !me.notNeedCodeQuery[cmd.toLowerCase()] && + me.selection && + me.queryCommandValue("insertcode") + ) { + return -1; + } + return UE.Editor.prototype.queryCommandState.apply(this, arguments); + }; + me.addListener("beforeenterkeydown", function() { + var rng = me.selection.getRange(); + var pre = domUtils.findParentByTagName(rng.startContainer, "pre", true); + if (pre) { + me.fireEvent("saveScene"); + if (!rng.collapsed) { + rng.deleteContents(); + } + if (!browser.ie || browser.ie9above) { + var tmpNode = me.document.createElement("br"), + pre; + rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true); + var next = tmpNode.nextSibling; + if (!next && (!browser.ie || browser.version > 10)) { + rng.insertNode(tmpNode.cloneNode(false)); + } else { + rng.setStartAfter(tmpNode); + } + pre = tmpNode.previousSibling; + var tmp; + while (pre) { + tmp = pre; + pre = pre.previousSibling; + if (!pre || pre.nodeName == "BR") { + pre = tmp; + break; + } + } + if (pre) { + var str = ""; + while ( + pre && + pre.nodeName != "BR" && + new RegExp("^[\\s" + domUtils.fillChar + "]*$").test(pre.nodeValue) + ) { + str += pre.nodeValue; + pre = pre.nextSibling; + } + if (pre.nodeName != "BR") { + var match = pre.nodeValue.match( + new RegExp("^([\\s" + domUtils.fillChar + "]+)") + ); + if (match && match[1]) { + str += match[1]; + } + } + if (str) { + str = me.document.createTextNode(str); + rng.insertNode(str).setStartAfter(str); + } + } + rng.collapse(true).select(true); + } else { + if (browser.version > 8) { + var txt = me.document.createTextNode("\n"); + var start = rng.startContainer; + if (rng.startOffset == 0) { + var preNode = start.previousSibling; + if (preNode) { + rng.insertNode(txt); + var fillchar = me.document.createTextNode(" "); + rng + .setStartAfter(txt) + .insertNode(fillchar) + .setStart(fillchar, 0) + .collapse(true) + .select(true); + } + } else { + rng.insertNode(txt).setStartAfter(txt); + var fillchar = me.document.createTextNode(" "); + start = rng.startContainer.childNodes[rng.startOffset]; + if (start && !/^\n/.test(start.nodeValue)) { + rng.setStartBefore(txt); + } + rng + .insertNode(fillchar) + .setStart(fillchar, 0) + .collapse(true) + .select(true); + } + } else { + var tmpNode = me.document.createElement("br"); + rng.insertNode(tmpNode); + rng.insertNode(me.document.createTextNode(domUtils.fillChar)); + rng.setStartAfter(tmpNode); + pre = tmpNode.previousSibling; + var tmp; + while (pre) { + tmp = pre; + pre = pre.previousSibling; + if (!pre || pre.nodeName == "BR") { + pre = tmp; + break; + } + } + if (pre) { + var str = ""; + while ( + pre && + pre.nodeName != "BR" && + new RegExp("^[ " + domUtils.fillChar + "]*$").test(pre.nodeValue) + ) { + str += pre.nodeValue; + pre = pre.nextSibling; + } + if (pre.nodeName != "BR") { + var match = pre.nodeValue.match( + new RegExp("^([ " + domUtils.fillChar + "]+)") + ); + if (match && match[1]) { + str += match[1]; + } + } + + str = me.document.createTextNode(str); + rng.insertNode(str).setStartAfter(str); + } + rng.collapse(true).select(); + } + } + me.fireEvent("saveScene"); + return true; + } + }); + + me.addListener("tabkeydown", function(cmd, evt) { + var rng = me.selection.getRange(); + var pre = domUtils.findParentByTagName(rng.startContainer, "pre", true); + if (pre) { + me.fireEvent("saveScene"); + if (evt.shiftKey) { + } else { + if (!rng.collapsed) { + var bk = rng.createBookmark(); + var start = bk.start.previousSibling; + + while (start) { + if (pre.firstChild === start && !domUtils.isBr(start)) { + pre.insertBefore(me.document.createTextNode(" "), start); + + break; + } + if (domUtils.isBr(start)) { + pre.insertBefore( + me.document.createTextNode(" "), + start.nextSibling + ); + + break; + } + start = start.previousSibling; + } + var end = bk.end; + start = bk.start.nextSibling; + if (pre.firstChild === bk.start) { + pre.insertBefore( + me.document.createTextNode(" "), + start.nextSibling + ); + } + while (start && start !== end) { + if (domUtils.isBr(start) && start.nextSibling) { + if (start.nextSibling === end) { + break; + } + pre.insertBefore( + me.document.createTextNode(" "), + start.nextSibling + ); + } + + start = start.nextSibling; + } + rng.moveToBookmark(bk).select(); + } else { + var tmpNode = me.document.createTextNode(" "); + rng + .insertNode(tmpNode) + .setStartAfter(tmpNode) + .collapse(true) + .select(true); + } + } + + me.fireEvent("saveScene"); + return true; + } + }); + + me.addListener("beforeinserthtml", function(evtName, html) { + var me = this, + rng = me.selection.getRange(), + pre = domUtils.findParentByTagName(rng.startContainer, "pre", true); + if (pre) { + if (!rng.collapsed) { + rng.deleteContents(); + } + var htmlstr = ""; + if (browser.ie && browser.version > 8) { + utils.each( + UE.filterNode(UE.htmlparser(html), me.options.filterTxtRules) + .children, + function(node) { + if (node.type == "element") { + if (node.tagName == "br") { + htmlstr += "\n"; + } else if (!dtd.$empty[node.tagName]) { + utils.each(node.children, function(cn) { + if (cn.type == "element") { + if (cn.tagName == "br") { + htmlstr += "\n"; + } else if (!dtd.$empty[node.tagName]) { + htmlstr += cn.innerText(); + } + } else { + htmlstr += cn.data; + } + }); + if (!/\n$/.test(htmlstr)) { + htmlstr += "\n"; + } + } + } else { + htmlstr += node.data + "\n"; + } + if (!node.nextSibling() && /\n$/.test(htmlstr)) { + htmlstr = htmlstr.replace(/\n$/, ""); + } + } + ); + var tmpNode = me.document.createTextNode( + utils.html(htmlstr.replace(/ /g, " ")) + ); + rng.insertNode(tmpNode).selectNode(tmpNode).select(); + } else { + var frag = me.document.createDocumentFragment(); + + utils.each( + UE.filterNode(UE.htmlparser(html), me.options.filterTxtRules) + .children, + function(node) { + if (node.type == "element") { + if (node.tagName == "br") { + frag.appendChild(me.document.createElement("br")); + } else if (!dtd.$empty[node.tagName]) { + utils.each(node.children, function(cn) { + if (cn.type == "element") { + if (cn.tagName == "br") { + frag.appendChild(me.document.createElement("br")); + } else if (!dtd.$empty[node.tagName]) { + frag.appendChild( + me.document.createTextNode( + utils.html(cn.innerText().replace(/ /g, " ")) + ) + ); + } + } else { + frag.appendChild( + me.document.createTextNode( + utils.html(cn.data.replace(/ /g, " ")) + ) + ); + } + }); + if (frag.lastChild.nodeName != "BR") { + frag.appendChild(me.document.createElement("br")); + } + } + } else { + frag.appendChild( + me.document.createTextNode( + utils.html(node.data.replace(/ /g, " ")) + ) + ); + } + if (!node.nextSibling() && frag.lastChild.nodeName == "BR") { + frag.removeChild(frag.lastChild); + } + } + ); + rng.insertNode(frag).select(); + } + + return true; + } + }); + //方向键的处理 + me.addListener("keydown", function(cmd, evt) { + var me = this, + keyCode = evt.keyCode || evt.which; + if (keyCode == 40) { + var rng = me.selection.getRange(), + pre, + start = rng.startContainer; + if ( + rng.collapsed && + (pre = domUtils.findParentByTagName(rng.startContainer, "pre", true)) && + !pre.nextSibling + ) { + var last = pre.lastChild; + while (last && last.nodeName == "BR") { + last = last.previousSibling; + } + if ( + last === start || + (rng.startContainer === pre && + rng.startOffset == pre.childNodes.length) + ) { + me.execCommand("insertparagraph"); + domUtils.preventDefault(evt); + } + } + } + }); + //trace:3395 + me.addListener("delkeydown", function(type, evt) { + var rng = this.selection.getRange(); + rng.txtToElmBoundary(true); + var start = rng.startContainer; + if ( + domUtils.isTagNode(start, "pre") && + rng.collapsed && + domUtils.isStartInblock(rng) + ) { + var p = me.document.createElement("p"); + domUtils.fillNode(me.document, p); + start.parentNode.insertBefore(p, start); + domUtils.remove(start); + rng.setStart(p, 0).setCursor(false, true); + domUtils.preventDefault(evt); + return true; + } + }); +}; + + +// plugins/cleardoc.js +/** + * 清空文档插件 + * @file + * @since 1.2.6.1 + */ + +/** + * 清空文档 + * @command cleardoc + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor 是编辑器实例 + * editor.execCommand('cleardoc'); + * ``` + */ + +UE.commands["cleardoc"] = { + execCommand: function(cmdName) { + var me = this, + enterTag = me.options.enterTag, + range = me.selection.getRange(); + if (enterTag == "br") { + me.body.innerHTML = "
    "; + range.setStart(me.body, 0).setCursor(); + } else { + me.body.innerHTML = "

    " + (ie ? "" : "
    ") + "

    "; + range.setStart(me.body.firstChild, 0).setCursor(false, true); + } + setTimeout(function() { + me.fireEvent("clearDoc"); + }, 0); + } +}; + + +// plugins/anchor.js +/** + * 锚点插件,为UEditor提供插入锚点支持 + * @file + * @since 1.2.6.1 + */ +UE.plugin.register("anchor", function() { + return { + bindEvents: { + ready: function() { + utils.cssRule( + "anchor", + ".anchorclass{background: url('" + + this.options.themePath + + this.options.theme + + "/images/anchor.gif') no-repeat scroll left center transparent;cursor: auto;display: inline-block;height: 16px;width: 15px;}", + this.document + ); + } + }, + outputRule: function(root) { + utils.each(root.getNodesByTagName("img"), function(a) { + var val; + if ((val = a.getAttr("anchorname"))) { + a.tagName = "a"; + a.setAttr({ + anchorname: "", + name: val, + class: "" + }); + } + }); + }, + inputRule: function(root) { + utils.each(root.getNodesByTagName("a"), function(a) { + var val; + if ((val = a.getAttr("name")) && !a.getAttr("href")) { + //过滤掉word冗余标签 + //_Toc\d+有可能勿命中 + if (/^\_Toc\d+$/.test(val)) { + a.parentNode.removeChild(a); + return; + } + a.tagName = "img"; + a.setAttr({ + anchorname: a.getAttr("name"), + class: "anchorclass" + }); + a.setAttr("name"); + } + }); + }, + commands: { + /** + * 插入锚点 + * @command anchor + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } name 锚点名称字符串 + * @example + * ```javascript + * //editor 是编辑器实例 + * editor.execCommand('anchor', 'anchor1'); + * ``` + */ + anchor: { + execCommand: function(cmd, name) { + var range = this.selection.getRange(), + img = range.getClosedNode(); + if (img && img.getAttribute("anchorname")) { + if (name) { + img.setAttribute("anchorname", name); + } else { + range.setStartBefore(img).setCursor(); + domUtils.remove(img); + } + } else { + if (name) { + //只在选区的开始插入 + var anchor = this.document.createElement("img"); + range.collapse(true); + domUtils.setAttributes(anchor, { + anchorname: name, + class: "anchorclass" + }); + range + .insertNode(anchor) + .setStartAfter(anchor) + .setCursor(false, true); + } + } + } + } + } + }; +}); + + +// plugins/wordcount.js +///import core +///commands 字数统计 +///commandsName WordCount,wordCount +///commandsTitle 字数统计 +/* + * Created by JetBrains WebStorm. + * User: taoqili + * Date: 11-9-7 + * Time: 下午8:18 + * To change this template use File | Settings | File Templates. + */ + +UE.plugins["wordcount"] = function() { + var me = this; + me.setOpt("wordCount", true); + me.addListener("contentchange", function() { + me.fireEvent("wordcount"); + }); + var timer; + me.addListener("ready", function() { + var me = this; + domUtils.on(me.body, "keyup", function(evt) { + var code = evt.keyCode || evt.which, + //忽略的按键,ctr,alt,shift,方向键 + ignores = { + "16": 1, + "18": 1, + "20": 1, + "37": 1, + "38": 1, + "39": 1, + "40": 1 + }; + if (code in ignores) return; + clearTimeout(timer); + timer = setTimeout(function() { + me.fireEvent("wordcount"); + }, 200); + }); + }); +}; + + +// plugins/pagebreak.js +/** + * 分页功能插件 + * @file + * @since 1.2.6.1 + */ +UE.plugins["pagebreak"] = function() { + var me = this, + notBreakTags = ["td"]; + me.setOpt("pageBreakTag", "_ueditor_page_break_tag_"); + + function fillNode(node) { + if (domUtils.isEmptyBlock(node)) { + var firstChild = node.firstChild, + tmpNode; + + while ( + firstChild && + firstChild.nodeType == 1 && + domUtils.isEmptyBlock(firstChild) + ) { + tmpNode = firstChild; + firstChild = firstChild.firstChild; + } + !tmpNode && (tmpNode = node); + domUtils.fillNode(me.document, tmpNode); + } + } + //分页符样式添加 + + me.ready(function() { + utils.cssRule( + "pagebreak", + ".pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}", + me.document + ); + }); + function isHr(node) { + return ( + node && + node.nodeType == 1 && + node.tagName == "HR" && + node.className == "pagebreak" + ); + } + me.addInputRule(function(root) { + root.traversal(function(node) { + if (node.type == "text" && node.data == me.options.pageBreakTag) { + var hr = UE.uNode.createElement( + '
    ' + ); + node.parentNode.insertBefore(hr, node); + node.parentNode.removeChild(node); + } + }); + }); + me.addOutputRule(function(node) { + utils.each(node.getNodesByTagName("hr"), function(n) { + if (n.getAttr("class") == "pagebreak") { + var txt = UE.uNode.createText(me.options.pageBreakTag); + n.parentNode.insertBefore(txt, n); + n.parentNode.removeChild(n); + } + }); + }); + + /** + * 插入分页符 + * @command pagebreak + * @method execCommand + * @param { String } cmd 命令字符串 + * @remind 在表格中插入分页符会把表格切分成两部分 + * @remind 获取编辑器内的数据时, 编辑器会把分页符转换成“_ueditor_page_break_tag_”字符串, + * 以便于提交数据到服务器端后处理分页。 + * @example + * ```javascript + * editor.execCommand( 'pagebreak'); //插入一个hr标签,带有样式类名pagebreak + * ``` + */ + + me.commands["pagebreak"] = { + execCommand: function() { + var range = me.selection.getRange(), + hr = me.document.createElement("hr"); + domUtils.setAttributes(hr, { + class: "pagebreak", + noshade: "noshade", + size: "5" + }); + domUtils.unSelectable(hr); + //table单独处理 + var node = domUtils.findParentByTagName( + range.startContainer, + notBreakTags, + true + ), + parents = [], + pN; + if (node) { + switch (node.tagName) { + case "TD": + pN = node.parentNode; + if (!pN.previousSibling) { + var table = domUtils.findParentByTagName(pN, "table"); + // var tableWrapDiv = table.parentNode; + // if(tableWrapDiv && tableWrapDiv.nodeType == 1 + // && tableWrapDiv.tagName == 'DIV' + // && tableWrapDiv.getAttribute('dropdrag') + // ){ + // domUtils.remove(tableWrapDiv,true); + // } + table.parentNode.insertBefore(hr, table); + parents = domUtils.findParents(hr, true); + } else { + pN.parentNode.insertBefore(hr, pN); + parents = domUtils.findParents(hr); + } + pN = parents[1]; + if (hr !== pN) { + domUtils.breakParent(hr, pN); + } + //table要重写绑定一下拖拽 + me.fireEvent("afteradjusttable", me.document); + } + } else { + if (!range.collapsed) { + range.deleteContents(); + var start = range.startContainer; + while ( + !domUtils.isBody(start) && + domUtils.isBlockElm(start) && + domUtils.isEmptyNode(start) + ) { + range.setStartBefore(start).collapse(true); + domUtils.remove(start); + start = range.startContainer; + } + } + range.insertNode(hr); + + var pN = hr.parentNode, + nextNode; + while (!domUtils.isBody(pN)) { + domUtils.breakParent(hr, pN); + nextNode = hr.nextSibling; + if (nextNode && domUtils.isEmptyBlock(nextNode)) { + domUtils.remove(nextNode); + } + pN = hr.parentNode; + } + nextNode = hr.nextSibling; + var pre = hr.previousSibling; + if (isHr(pre)) { + domUtils.remove(pre); + } else { + pre && fillNode(pre); + } + + if (!nextNode) { + var p = me.document.createElement("p"); + + hr.parentNode.appendChild(p); + domUtils.fillNode(me.document, p); + range.setStart(p, 0).collapse(true); + } else { + if (isHr(nextNode)) { + domUtils.remove(nextNode); + } else { + fillNode(nextNode); + } + range.setEndAfter(hr).collapse(false); + } + + range.select(true); + } + } + }; +}; + + +// plugins/wordimage.js +///import core +///commands 本地图片引导上传 +///commandsName WordImage +///commandsTitle 本地图片引导上传 +///commandsDialog dialogs\wordimage + +UE.plugin.register("wordimage", function() { + var me = this, + images = []; + + this.addListener("click", function (type, evt) { + var el = evt.target || evt.srcElement; + if ('IMG' == el.tagName && el.getAttribute('data-word-image')) { + me.ui._dialogs.wordimageDialog && me.ui._dialogs.wordimageDialog.open(); + } + }); + + return { + commands: { + wordimage: { + execCommand: function() { + var images = domUtils.getElementsByTagName(me.body, "img"); + var urlList = []; + for (var i = 0, ci; (ci = images[i++]); ) { + var url = ci.getAttribute("data-word-image"); + url && urlList.push(url); + } + return urlList; + }, + queryCommandState: function() { + images = domUtils.getElementsByTagName(me.body, "img"); + for (var i = 0, ci; (ci = images[i++]); ) { + if (ci.getAttribute("data-word-image")) { + return 1; + } + } + return -1; + }, + notNeedUndo: true + } + }, + inputRule: function(root) { + utils.each(root.getNodesByTagName("img"), function(img) { + var attrs = img.attrs, + flag = parseInt(attrs.width) < 128 || parseInt(attrs.height) < 43, + opt = me.options, + src = opt.UEDITOR_HOME_URL + "themes/default/images/spacer.gif"; + if (attrs["src"] && /^(?:(file:\/+))/.test(attrs["src"])) { + img.setAttr({ + width: attrs.width, + height: attrs.height, + alt: attrs.alt, + 'data-word-image': attrs.src, + src: src, + style: + "background:url(" + + (flag + ? opt.themePath + opt.theme + "/images/word.gif" + : opt.langPath + opt.lang + "/images/localimage.png") + + ") no-repeat center center;border:1px solid #ddd" + }); + } + }); + } + }; +}); + + +// plugins/autosave.js +UE.plugin.register("autosave", function () { + var me = this, saveKey = null; + + function save(editor) { + var saveData; + + if (!editor.hasContents()) { + //这里不能调用命令来删除, 会造成事件死循环 + saveKey && me.removePreferences(saveKey); + return; + } + + editor._autoSaveTimer = null; + + saveData = me.body.innerHTML; + + if ( + editor.fireEvent("beforeautosave", { + content: saveData + }) === false + ) { + return; + } + + me.setPreferences(saveKey, saveData); + + editor.fireEvent("afterautosave", { + content: saveData + }); + } + + return { + defaultOptions: { + autoSaveEnable: true, + autoSaveRestore: false, + autoSaveKey: null, + }, + bindEvents: { + ready: function () { + saveKey = me.getOpt('autoSaveKey'); + if (!saveKey) { + var _suffix = "_DraftsData", key = null; + + if (me.key) { + key = me.key + _suffix; + } else { + key = (me.container.parentNode.id || "ue-common") + _suffix; + } + saveKey = (location.protocol + location.host + location.pathname).replace( + /[.:\/]/g, + "_" + ) + key; + } + if (me.getOpt('autoSaveRestore')) { + var data = me.getPreferences(saveKey); + if (data) { + me.body.innerHTML = data; + } + } + // console.log('saveKey', saveKey); + }, + contentchange: function () { + if (!me.getOpt("autoSaveEnable")) { + return; + } + + if (!saveKey) { + return; + } + + if (me._autoSaveTimer) { + window.clearTimeout(me._autoSaveTimer); + } + + me._autoSaveTimer = window.setTimeout(function () { + save(me); + }, 500); + } + }, + commands: { + clear_auto_save_content: { + execCommand: function (cmd, name) { + if (saveKey && me.getPreferences(saveKey)) { + me.removePreferences(saveKey); + } + }, + notNeedUndo: true, + ignoreContentChange: true + }, + + set_auto_save_content: { + execCommand: function (cmd, name) { + save(me); + }, + notNeedUndo: true, + ignoreContentChange: true + }, + + get_auto_save_content: { + execCommand: function (cmd, name) { + return me.getPreferences(saveKey) || ""; + }, + notNeedUndo: true, + ignoreContentChange: true + }, + + auto_save_restore: { + execCommand: function (cmd, name) { + if (saveKey) { + me.body.innerHTML = + me.getPreferences(saveKey) || "

    " + domUtils.fillHtml + "

    "; + me.focus(true); + } + }, + queryCommandState: function () { + return saveKey ? (me.getPreferences(saveKey) === null ? -1 : 0) : -1; + }, + notNeedUndo: true, + ignoreContentChange: true + } + } + }; +}); + + +// plugins/formula.js +UE.plugin.register("formula", function () { + var me = this, images = []; + + return { + commands: { + formula: { + execCommand: function (cmdName, value) { + var range = me.selection.getRange(), + img = range.getClosedNode(); + + value = encodeURIComponent(value); + var formulaConfig = me.getOpt('formulaConfig'); + var src = formulaConfig.imageUrlTemplate.replace(/\{\}/, value); + + if (img) { + img.setAttribute("src", src); + } else { + me.execCommand("insertHtml", ''); + } + }, + } + }, + }; +}); + + +// plugins/dragdrop.js +UE.plugins["dragdrop"] = function() { + var me = this; + me.ready(function() { + domUtils.on(this.body, "dragend", function() { + var rng = me.selection.getRange(); + var node = rng.getClosedNode() || me.selection.getStart(); + + if (node && node.tagName == "IMG") { + var pre = node.previousSibling, + next; + while ((next = node.nextSibling)) { + if ( + next.nodeType == 1 && + next.tagName == "SPAN" && + !next.firstChild + ) { + domUtils.remove(next); + } else { + break; + } + } + + if ( + ((pre && pre.nodeType == 1 && !domUtils.isEmptyBlock(pre)) || !pre) && + (!next || (next && !domUtils.isEmptyBlock(next))) + ) { + if (pre && pre.tagName == "P" && !domUtils.isEmptyBlock(pre)) { + pre.appendChild(node); + domUtils.moveChild(next, pre); + domUtils.remove(next); + } else if ( + next && + next.tagName == "P" && + !domUtils.isEmptyBlock(next) + ) { + next.insertBefore(node, next.firstChild); + } + + if (pre && pre.tagName == "P" && domUtils.isEmptyBlock(pre)) { + domUtils.remove(pre); + } + if (next && next.tagName == "P" && domUtils.isEmptyBlock(next)) { + domUtils.remove(next); + } + rng.selectNode(node).select(); + me.fireEvent("saveScene"); + } + } + }); + }); + me.addListener("keyup", function(type, evt) { + var keyCode = evt.keyCode || evt.which; + if (keyCode == 13) { + var rng = me.selection.getRange(), + node; + if ( + (node = domUtils.findParentByTagName(rng.startContainer, "p", true)) + ) { + if (domUtils.getComputedStyle(node, "text-align") == "center") { + domUtils.removeStyle(node, "text-align"); + } + } + } + }); +}; + + +// plugins/undo.js +/** + * undo redo + * @file + * @since 1.2.6.1 + */ + +/** + * 撤销上一次执行的命令 + * @command undo + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'undo' ); + * ``` + */ + +/** + * 重做上一次执行的命令 + * @command redo + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'redo' ); + * ``` + */ + +UE.plugins["undo"] = function() { + var saveSceneTimer; + var me = this, + maxUndoCount = me.options.maxUndoCount || 20, + maxInputCount = me.options.maxInputCount || 20, + fillchar = new RegExp(domUtils.fillChar + "|", "gi"); // ie会产生多余的 + var noNeedFillCharTags = { + ol: 1, + ul: 1, + table: 1, + tbody: 1, + tr: 1, + body: 1 + }; + var orgState = me.options.autoClearEmptyNode; + function compareAddr(indexA, indexB) { + if (indexA.length != indexB.length) return 0; + for (var i = 0, l = indexA.length; i < l; i++) { + if (indexA[i] != indexB[i]) return 0; + } + return 1; + } + + function compareRangeAddress(rngAddrA, rngAddrB) { + if (rngAddrA.collapsed != rngAddrB.collapsed) { + return 0; + } + if ( + !compareAddr(rngAddrA.startAddress, rngAddrB.startAddress) || + !compareAddr(rngAddrA.endAddress, rngAddrB.endAddress) + ) { + return 0; + } + return 1; + } + + function UndoManager() { + this.list = []; + this.index = 0; + this.hasUndo = false; + this.hasRedo = false; + this.undo = function() { + if (this.hasUndo) { + if (!this.list[this.index - 1] && this.list.length == 1) { + this.reset(); + return; + } + while ( + this.list[this.index].content == this.list[this.index - 1].content + ) { + this.index--; + if (this.index == 0) { + return this.restore(0); + } + } + this.restore(--this.index); + } + }; + this.redo = function() { + if (this.hasRedo) { + while ( + this.list[this.index].content == this.list[this.index + 1].content + ) { + this.index++; + if (this.index == this.list.length - 1) { + return this.restore(this.index); + } + } + this.restore(++this.index); + } + }; + + this.restore = function() { + var me = this.editor; + var scene = this.list[this.index]; + var root = UE.htmlparser(scene.content.replace(fillchar, "")); + me.options.autoClearEmptyNode = false; + me.filterInputRule(root); + me.options.autoClearEmptyNode = orgState; + //trace:873 + //去掉展位符 + me.document.body.innerHTML = root.toHtml(); + me.fireEvent("afterscencerestore"); + //处理undo后空格不展位的问题 + if (browser.ie) { + utils.each( + domUtils.getElementsByTagName(me.document, "td th caption p"), + function(node) { + if (domUtils.isEmptyNode(node)) { + domUtils.fillNode(me.document, node); + } + } + ); + } + + try { + var rng = new dom.Range(me.document).moveToAddress(scene.address); + rng.select( + noNeedFillCharTags[rng.startContainer.nodeName.toLowerCase()] + ); + } catch (e) {} + + this.update(); + this.clearKey(); + //不能把自己reset了 + me.fireEvent("reset", true); + }; + + this.getScene = function() { + var me = this.editor; + var rng = me.selection.getRange(), + rngAddress = rng.createAddress(false, true); + me.fireEvent("beforegetscene"); + var root = UE.htmlparser(me.body.innerHTML); + me.options.autoClearEmptyNode = false; + me.filterOutputRule(root); + me.options.autoClearEmptyNode = orgState; + var cont = root.toHtml(); + //trace:3461 + //这个会引起回退时导致空格丢失的情况 + // browser.ie && (cont = cont.replace(/> <').replace(/\s*\s*/g, '>')); + me.fireEvent("aftergetscene"); + + return { + address: rngAddress, + content: cont + }; + }; + this.save = function(notCompareRange, notSetCursor) { + + clearTimeout(saveSceneTimer); + var currentScene = this.getScene(notSetCursor), + lastScene = this.list[this.index]; + if (lastScene && lastScene.content != currentScene.content) { + me.trigger("contentchange"); + } + //内容相同位置相同不存 + if ( + lastScene && + lastScene.content == currentScene.content && + (notCompareRange + ? 1 + : compareRangeAddress(lastScene.address, currentScene.address)) + ) { + return; + } + this.list = this.list.slice(0, this.index + 1); + this.list.push(currentScene); + //如果大于最大数量了,就把最前的剔除 + if (this.list.length > maxUndoCount) { + this.list.shift(); + } + this.index = this.list.length - 1; + this.clearKey(); + //跟新undo/redo状态 + this.update(); + }; + this.update = function() { + this.hasRedo = !!this.list[this.index + 1]; + this.hasUndo = !!this.list[this.index - 1]; + }; + this.reset = function() { + this.list = []; + this.index = 0; + this.hasUndo = false; + this.hasRedo = false; + this.clearKey(); + }; + this.clearKey = function() { + keycont = 0; + lastKeyCode = null; + }; + } + + me.undoManger = new UndoManager(); + me.undoManger.editor = me; + function saveScene() { + this.undoManger.save(); + } + + me.addListener("saveScene", function() { + var args = Array.prototype.splice.call(arguments, 1); + this.undoManger.save.apply(this.undoManger, args); + }); + + // me.addListener('beforeexeccommand', saveScene); + // me.addListener('afterexeccommand', saveScene); + + me.addListener("reset", function(type, exclude) { + if (!exclude) { + this.undoManger.reset(); + } + }); + me.commands["redo"] = me.commands["undo"] = { + execCommand: function(cmdName) { + this.undoManger[cmdName](); + }, + queryCommandState: function(cmdName) { + return this.undoManger[ + "has" + (cmdName.toLowerCase() == "undo" ? "Undo" : "Redo") + ] + ? 0 + : -1; + }, + notNeedUndo: 1 + }; + + var keys = { + // /*Backspace*/ 8:1, /*Delete*/ 46:1, + /*Shift*/ 16: 1, + /*Ctrl*/ 17: 1, + /*Alt*/ 18: 1, + 37: 1, + 38: 1, + 39: 1, + 40: 1 + }, + keycont = 0, + lastKeyCode; + //输入法状态下不计算字符数 + var inputType = false; + me.addListener("ready", function() { + domUtils.on(this.body, "compositionstart", function() { + inputType = true; + }); + domUtils.on(this.body, "compositionend", function() { + inputType = false; + }); + }); + //快捷键 + me.addshortcutkey({ + Undo: "ctrl+90", //undo + Redo: "ctrl+89" //redo + }); + var isCollapsed = true; + me.addListener("keydown", function(type, evt) { + var me = this; + var keyCode = evt.keyCode || evt.which; + if ( + !keys[keyCode] && + !evt.ctrlKey && + !evt.metaKey && + !evt.shiftKey && + !evt.altKey + ) { + if (inputType) return; + + if (!me.selection.getRange().collapsed) { + me.undoManger.save(false, true); + isCollapsed = false; + return; + } + if (me.undoManger.list.length == 0) { + me.undoManger.save(true); + } + clearTimeout(saveSceneTimer); + function save(cont) { + cont.undoManger.save(false, true); + cont.fireEvent("selectionchange"); + } + saveSceneTimer = setTimeout(function() { + if (inputType) { + var interalTimer = setInterval(function() { + if (!inputType) { + save(me); + clearInterval(interalTimer); + } + }, 300); + return; + } + save(me); + }, 200); + + lastKeyCode = keyCode; + keycont++; + if (keycont >= maxInputCount) { + save(me); + } + } + }); + me.addListener("keyup", function(type, evt) { + var keyCode = evt.keyCode || evt.which; + if ( + !keys[keyCode] && + !evt.ctrlKey && + !evt.metaKey && + !evt.shiftKey && + !evt.altKey + ) { + if (inputType) return; + if (!isCollapsed) { + this.undoManger.save(false, true); + isCollapsed = true; + } + } + }); + //扩展实例,添加关闭和开启命令undo + me.stopCmdUndo = function() { + me.__hasEnterExecCommand = true; + }; + me.startCmdUndo = function() { + me.__hasEnterExecCommand = false; + }; +}; + + +// plugins/copy.js +UE.plugin.register("copy", function() { + var me = this; + + function initZeroClipboard() { + ZeroClipboard.config({ + debug: false, + swfPath: + me.options.UEDITOR_HOME_URL + + "third-party/zeroclipboard/ZeroClipboard.swf" + }); + + var client = (me.zeroclipboard = new ZeroClipboard()); + + // 复制内容 + client.on("copy", function(e) { + var client = e.client, + rng = me.selection.getRange(), + div = document.createElement("div"); + + div.appendChild(rng.cloneContents()); + client.setText(div.innerText || div.textContent); + client.setHtml(div.innerHTML); + rng.select(); + }); + // hover事件传递到target + client.on("mouseover mouseout", function(e) { + var target = e.target; + if (target) { + if (e.type == "mouseover") { + domUtils.addClass(target, "edui-state-hover"); + } else if (e.type == "mouseout") { + domUtils.removeClasses(target, "edui-state-hover"); + } + } + }); + // flash加载不成功 + client.on("wrongflash noflash", function() { + ZeroClipboard.destroy(); + }); + + // 触发事件 + me.fireEvent("zeroclipboardready", client); + } + + return { + bindEvents: { + ready: function() { + if (!browser.ie) { + if (window.ZeroClipboard) { + initZeroClipboard(); + } else { + utils.loadFile( + document, + { + src: + me.options.UEDITOR_HOME_URL + + "third-party/zeroclipboard/ZeroClipboard.js", + tag: "script", + type: "text/javascript", + defer: "defer" + }, + function() { + initZeroClipboard(); + } + ); + } + } + } + }, + commands: { + copy: { + execCommand: function(cmd) { + if (!me.document.execCommand("copy")) { + alert(me.getLang("copymsg")); + } + } + } + } + }; +}); + + +// plugins/paste.js +///import core +///import plugins/inserthtml.js +///import plugins/undo.js +///import plugins/serialize.js +///commands 粘贴 +///commandsName PastePlain +///commandsTitle 纯文本粘贴模式 +/** + * @description 粘贴 + * @author zhanyi + */ +UE.plugins["paste"] = function() { + function getClipboardData(callback) { + var doc = this.document; + if (doc.getElementById("baidu_pastebin")) { + return; + } + var range = this.selection.getRange(), + bk = range.createBookmark(), + //创建剪贴的容器div + pastebin = doc.createElement("div"); + pastebin.id = "baidu_pastebin"; + // Safari 要求div必须有内容,才能粘贴内容进来 + browser.webkit && + pastebin.appendChild( + doc.createTextNode(domUtils.fillChar + domUtils.fillChar) + ); + doc.body.appendChild(pastebin); + //trace:717 隐藏的span不能得到top + //bk.start.innerHTML = ' '; + bk.start.style.display = ""; + pastebin.style.cssText = + "position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:" + + //要在现在光标平行的位置加入,否则会出现跳动的问题 + domUtils.getXY(bk.start).y + + "px"; + + range.selectNodeContents(pastebin).select(true); + + setTimeout(function() { + if (browser.webkit) { + for ( + var i = 0, pastebins = doc.querySelectorAll("#baidu_pastebin"), pi; + (pi = pastebins[i++]); + + ) { + if (domUtils.isEmptyNode(pi)) { + domUtils.remove(pi); + } else { + pastebin = pi; + break; + } + } + } + try { + pastebin.parentNode.removeChild(pastebin); + } catch (e) {} + range.moveToBookmark(bk).select(true); + callback(pastebin); + }, 0); + } + + var me = this; + + me.setOpt({ + retainOnlyLabelPasted: false + }); + + var txtContent, htmlContent, address; + + function getPureHtml(html) { + return html.replace(/<(\/?)([\w\-]+)([^>]*)>/gi, function( + a, + b, + tagName, + attrs + ) { + tagName = tagName.toLowerCase(); + if ({ img: 1 }[tagName]) { + return a; + } + attrs = attrs.replace( + /([\w\-]*?)\s*=\s*(("([^"]*)")|('([^']*)')|([^\s>]+))/gi, + function(str, atr, val) { + if ( + { + src: 1, + href: 1, + name: 1 + }[atr.toLowerCase()] + ) { + return atr + "=" + val + " "; + } + return ""; + } + ); + if ( + { + span: 1, + div: 1 + }[tagName] + ) { + return ""; + } else { + return "<" + b + tagName + " " + utils.trim(attrs) + ">"; + } + }); + } + function filter(div) { + var html; + if (div.firstChild) { + //去掉cut中添加的边界值 + var nodes = domUtils.getElementsByTagName(div, "span"); + for (var i = 0, ni; (ni = nodes[i++]); ) { + if (ni.id == "_baidu_cut_start" || ni.id == "_baidu_cut_end") { + domUtils.remove(ni); + } + } + + if (browser.webkit) { + var brs = div.querySelectorAll("div br"); + for (var i = 0, bi; (bi = brs[i++]); ) { + var pN = bi.parentNode; + if (pN.tagName == "DIV" && pN.childNodes.length == 1) { + pN.innerHTML = "


    "; + domUtils.remove(pN); + } + } + var divs = div.querySelectorAll("#baidu_pastebin"); + for (var i = 0, di; (di = divs[i++]); ) { + var tmpP = me.document.createElement("p"); + di.parentNode.insertBefore(tmpP, di); + while (di.firstChild) { + tmpP.appendChild(di.firstChild); + } + domUtils.remove(di); + } + + var metas = div.querySelectorAll("meta"); + for (var i = 0, ci; (ci = metas[i++]); ) { + domUtils.remove(ci); + } + + var brs = div.querySelectorAll("br"); + for (i = 0; (ci = brs[i++]); ) { + if (/^apple-/i.test(ci.className)) { + domUtils.remove(ci); + } + } + } + if (browser.gecko) { + var dirtyNodes = div.querySelectorAll("[_moz_dirty]"); + for (i = 0; (ci = dirtyNodes[i++]); ) { + ci.removeAttribute("_moz_dirty"); + } + } + if (!browser.ie) { + var spans = div.querySelectorAll("span.Apple-style-span"); + for (var i = 0, ci; (ci = spans[i++]); ) { + domUtils.remove(ci, true); + } + } + + //ie下使用innerHTML会产生多余的\r\n字符,也会产生 这里过滤掉 + html = div.innerHTML; //.replace(/>(?:(\s| )*?)<'); + + //过滤word粘贴过来的冗余属性 + html = UE.filterWord(html); + //取消了忽略空白的第二个参数,粘贴过来的有些是有空白的,会被套上相关的标签 + var root = UE.htmlparser(html); + //如果给了过滤规则就先进行过滤 + if (me.options.filterRules) { + UE.filterNode(root, me.options.filterRules); + } + //执行默认的处理 + me.filterInputRule(root); + //针对chrome的处理 + if (browser.webkit) { + var br = root.lastChild(); + if (br && br.type == "element" && br.tagName == "br") { + root.removeChild(br); + } + utils.each(me.body.querySelectorAll("div"), function(node) { + if (domUtils.isEmptyBlock(node)) { + domUtils.remove(node, true); + } + }); + } + html = { html: root.toHtml() }; + me.fireEvent("beforepaste", html, root); + //抢了默认的粘贴,那后边的内容就不执行了,比如表格粘贴 + if (!html.html) { + return; + } + root = UE.htmlparser(html.html, true); + //如果开启了纯文本模式 + if (me.queryCommandState("pasteplain") === 1) { + me.execCommand( + "insertHtml", + UE.filterNode(root, me.options.filterTxtRules).toHtml(), + true + ); + } else { + //文本模式 + UE.filterNode(root, me.options.filterTxtRules); + txtContent = root.toHtml(); + //完全模式 + htmlContent = html.html; + + address = me.selection.getRange().createAddress(true); + me.execCommand( + "insertHtml", + me.getOpt("retainOnlyLabelPasted") === true + ? getPureHtml(htmlContent) + : htmlContent, + true + ); + } + me.fireEvent("afterpaste", html); + } + } + + me.addListener("pasteTransfer", function(cmd, plainType) { + if (address && txtContent && htmlContent && txtContent != htmlContent) { + var range = me.selection.getRange(); + range.moveToAddress(address, true); + + if (!range.collapsed) { + while (!domUtils.isBody(range.startContainer)) { + var start = range.startContainer; + if (start.nodeType == 1) { + start = start.childNodes[range.startOffset]; + if (!start) { + range.setStartBefore(range.startContainer); + continue; + } + var pre = start.previousSibling; + + if ( + pre && + pre.nodeType == 3 && + new RegExp("^[\n\r\t " + domUtils.fillChar + "]*$").test( + pre.nodeValue + ) + ) { + range.setStartBefore(pre); + } + } + if (range.startOffset == 0) { + range.setStartBefore(range.startContainer); + } else { + break; + } + } + while (!domUtils.isBody(range.endContainer)) { + var end = range.endContainer; + if (end.nodeType == 1) { + end = end.childNodes[range.endOffset]; + if (!end) { + range.setEndAfter(range.endContainer); + continue; + } + var next = end.nextSibling; + if ( + next && + next.nodeType == 3 && + new RegExp("^[\n\r\t" + domUtils.fillChar + "]*$").test( + next.nodeValue + ) + ) { + range.setEndAfter(next); + } + } + if ( + range.endOffset == + range.endContainer[ + range.endContainer.nodeType == 3 ? "nodeValue" : "childNodes" + ].length + ) { + range.setEndAfter(range.endContainer); + } else { + break; + } + } + } + + range.deleteContents(); + range.select(true); + me.__hasEnterExecCommand = true; + var html = htmlContent; + if (plainType === 2) { + html = getPureHtml(html); + } else if (plainType) { + html = txtContent; + } + me.execCommand("inserthtml", html, true); + me.__hasEnterExecCommand = false; + var rng = me.selection.getRange(); + while ( + !domUtils.isBody(rng.startContainer) && + !rng.startOffset && + rng.startContainer[ + rng.startContainer.nodeType == 3 ? "nodeValue" : "childNodes" + ].length + ) { + rng.setStartBefore(rng.startContainer); + } + var tmpAddress = rng.createAddress(true); + address.endAddress = tmpAddress.startAddress; + } + }); + + me.addListener("ready", function() { + domUtils.on(me.body, "cut", function() { + var range = me.selection.getRange(); + if (!range.collapsed && me.undoManger) { + me.undoManger.save(); + } + }); + + //ie下beforepaste在点击右键时也会触发,所以用监控键盘才处理 + domUtils.on( + me.body, + browser.ie || browser.opera ? "keydown" : "paste", + function(e) { + if ( + (browser.ie || browser.opera) && + ((!e.ctrlKey && !e.metaKey) || e.keyCode != "86") + ) { + return; + } + getClipboardData.call(me, function(div) { + filter(div); + }); + } + ); + }); + + me.commands["paste"] = { + execCommand: function(cmd) { + if (browser.ie) { + getClipboardData.call(me, function(div) { + filter(div); + }); + me.document.execCommand("paste"); + } else { + alert(me.getLang("pastemsg")); + } + } + }; +}; + + +// plugins/puretxtpaste.js +/** + * 纯文本粘贴插件 + * @file + * @since 1.2.6.1 + */ + +UE.plugins["pasteplain"] = function() { + var me = this; + me.setOpt({ + pasteplain: false, + filterTxtRules: (function() { + function transP(node) { + node.tagName = "p"; + node.setStyle(); + } + function removeNode(node) { + node.parentNode.removeChild(node, true); + } + return { + //直接删除及其字节点内容 + "-": "script style object iframe embed input select", + p: { $: {} }, + br: { $: {} }, + div: function(node) { + var tmpNode, + p = UE.uNode.createElement("p"); + while ((tmpNode = node.firstChild())) { + if (tmpNode.type == "text" || !UE.dom.dtd.$block[tmpNode.tagName]) { + p.appendChild(tmpNode); + } else { + if (p.firstChild()) { + node.parentNode.insertBefore(p, node); + p = UE.uNode.createElement("p"); + } else { + node.parentNode.insertBefore(tmpNode, node); + } + } + } + if (p.firstChild()) { + node.parentNode.insertBefore(p, node); + } + node.parentNode.removeChild(node); + }, + ol: removeNode, + ul: removeNode, + dl: removeNode, + dt: removeNode, + dd: removeNode, + li: removeNode, + caption: transP, + th: transP, + tr: transP, + h1: transP, + h2: transP, + h3: transP, + h4: transP, + h5: transP, + h6: transP, + td: function(node) { + //没有内容的td直接删掉 + var txt = !!node.innerText(); + if (txt) { + node.parentNode.insertAfter( + UE.uNode.createText("    "), + node + ); + } + node.parentNode.removeChild(node, node.innerText()); + } + }; + })() + }); + //暂时这里支持一下老版本的属性 + var pasteplain = me.options.pasteplain; + + /** + * 启用或取消纯文本粘贴模式 + * @command pasteplain + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.queryCommandState( 'pasteplain' ); + * ``` + */ + + /** + * 查询当前是否处于纯文本粘贴模式 + * @command pasteplain + * @method queryCommandState + * @param { String } cmd 命令字符串 + * @return { int } 如果处于纯文本模式,返回1,否则,返回0 + * @example + * ```javascript + * editor.queryCommandState( 'pasteplain' ); + * ``` + */ + me.commands["pasteplain"] = { + queryCommandState: function() { + return pasteplain ? 1 : 0; + }, + execCommand: function() { + pasteplain = !pasteplain | 0; + }, + notNeedUndo: 1 + }; +}; + + +// plugins/list.js +/** + * 有序列表,无序列表插件 + * @file + * @since 1.2.6.1 + */ + +UE.plugins["list"] = function() { + var me = this, + notExchange = { + TD: 1, + PRE: 1, + BLOCKQUOTE: 1 + }; + var customStyle = { + cn: "cn-1-", + cn1: "cn-2-", + cn2: "cn-3-", + num: "num-1-", + num1: "num-2-", + num2: "num-3-", + dash: "dash", + dot: "dot" + }; + + me.setOpt({ + autoTransWordToList: false, + insertorderedlist: { + num: "", + num1: "", + num2: "", + cn: "", + cn1: "", + cn2: "", + decimal: "", + "lower-alpha": "", + "lower-roman": "", + "upper-alpha": "", + "upper-roman": "" + }, + insertunorderedlist: { + circle: "", + disc: "", + square: "", + dash: "", + dot: "" + }, + listDefaultPaddingLeft: "30", + listiconpath: "http://bs.baidu.com/listicon/", + maxListLevel: -1, //-1不限制 + disablePInList: false + }); + function listToArray(list) { + var arr = []; + for (var p in list) { + arr.push(p); + } + return arr; + } + var listStyle = { + OL: listToArray(me.options.insertorderedlist), + UL: listToArray(me.options.insertunorderedlist) + }; + var liiconpath = me.options.listiconpath; + + //根据用户配置,调整customStyle + for (var s in customStyle) { + if ( + !me.options.insertorderedlist.hasOwnProperty(s) && + !me.options.insertunorderedlist.hasOwnProperty(s) + ) { + delete customStyle[s]; + } + } + + me.ready(function() { + var customCss = []; + for (var p in customStyle) { + if (p == "dash" || p == "dot") { + customCss.push( + "li.list-" + + customStyle[p] + + "{background-image:url(" + + liiconpath + + customStyle[p] + + ".gif)}" + ); + customCss.push( + "ul.custom_" + + p + + "{list-style:none;}ul.custom_" + + p + + " li{background-position:0 3px;background-repeat:no-repeat}" + ); + } else { + for (var i = 0; i < 99; i++) { + customCss.push( + "li.list-" + + customStyle[p] + + i + + "{background-image:url(" + + liiconpath + + "list-" + + customStyle[p] + + i + + ".gif)}" + ); + } + customCss.push( + "ol.custom_" + + p + + "{list-style:none;}ol.custom_" + + p + + " li{background-position:0 3px;background-repeat:no-repeat}" + ); + } + switch (p) { + case "cn": + customCss.push("li.list-" + p + "-paddingleft-1{padding-left:25px}"); + customCss.push("li.list-" + p + "-paddingleft-2{padding-left:40px}"); + customCss.push("li.list-" + p + "-paddingleft-3{padding-left:55px}"); + break; + case "cn1": + customCss.push("li.list-" + p + "-paddingleft-1{padding-left:30px}"); + customCss.push("li.list-" + p + "-paddingleft-2{padding-left:40px}"); + customCss.push("li.list-" + p + "-paddingleft-3{padding-left:55px}"); + break; + case "cn2": + customCss.push("li.list-" + p + "-paddingleft-1{padding-left:40px}"); + customCss.push("li.list-" + p + "-paddingleft-2{padding-left:55px}"); + customCss.push("li.list-" + p + "-paddingleft-3{padding-left:68px}"); + break; + case "num": + case "num1": + customCss.push("li.list-" + p + "-paddingleft-1{padding-left:25px}"); + break; + case "num2": + customCss.push("li.list-" + p + "-paddingleft-1{padding-left:35px}"); + customCss.push("li.list-" + p + "-paddingleft-2{padding-left:40px}"); + break; + case "dash": + customCss.push("li.list-" + p + "-paddingleft{padding-left:35px}"); + break; + case "dot": + customCss.push("li.list-" + p + "-paddingleft{padding-left:20px}"); + } + } + customCss.push(".list-paddingleft-1{padding-left:0}"); + customCss.push( + ".list-paddingleft-2{padding-left:" + + me.options.listDefaultPaddingLeft + + "px}" + ); + customCss.push( + ".list-paddingleft-3{padding-left:" + + me.options.listDefaultPaddingLeft * 2 + + "px}" + ); + //如果不给宽度会在自定应样式里出现滚动条 + utils.cssRule( + "list", + "ol,ul{margin:0;pading:0;" + + (browser.ie ? "" : "width:95%") + + "}li{clear:both;}" + + customCss.join("\n"), + me.document + ); + }); + //单独处理剪切的问题 + me.ready(function() { + domUtils.on(me.body, "cut", function() { + setTimeout(function() { + var rng = me.selection.getRange(), + li; + //trace:3416 + if (!rng.collapsed) { + if ( + (li = domUtils.findParentByTagName(rng.startContainer, "li", true)) + ) { + if (!li.nextSibling && domUtils.isEmptyBlock(li)) { + var pn = li.parentNode, + node; + if ((node = pn.previousSibling)) { + domUtils.remove(pn); + rng.setStartAtLast(node).collapse(true); + rng.select(true); + } else if ((node = pn.nextSibling)) { + domUtils.remove(pn); + rng.setStartAtFirst(node).collapse(true); + rng.select(true); + } else { + var tmpNode = me.document.createElement("p"); + domUtils.fillNode(me.document, tmpNode); + pn.parentNode.insertBefore(tmpNode, pn); + domUtils.remove(pn); + rng.setStart(tmpNode, 0).collapse(true); + rng.select(true); + } + } + } + } + }); + }); + }); + + function getStyle(node) { + var cls = node.className; + if (domUtils.hasClass(node, /custom_/)) { + return cls.match(/custom_(\w+)/)[1]; + } + return domUtils.getStyle(node, "list-style-type"); + } + + me.addListener("beforepaste", function(type, html) { + var me = this, + rng = me.selection.getRange(), + li; + var root = UE.htmlparser(html.html, true); + if ((li = domUtils.findParentByTagName(rng.startContainer, "li", true))) { + var list = li.parentNode, + tagName = list.tagName == "OL" ? "ul" : "ol"; + utils.each(root.getNodesByTagName(tagName), function(n) { + n.tagName = list.tagName; + n.setAttr(); + if (n.parentNode === root) { + type = getStyle(list) || (list.tagName == "OL" ? "decimal" : "disc"); + } else { + var className = n.parentNode.getAttr("class"); + if (className && /custom_/.test(className)) { + type = className.match(/custom_(\w+)/)[1]; + } else { + type = n.parentNode.getStyle("list-style-type"); + } + if (!type) { + type = list.tagName == "OL" ? "decimal" : "disc"; + } + } + var index = utils.indexOf(listStyle[list.tagName], type); + if (n.parentNode !== root) + index = index + 1 == listStyle[list.tagName].length ? 0 : index + 1; + var currentStyle = listStyle[list.tagName][index]; + if (customStyle[currentStyle]) { + n.setAttr("class", "custom_" + currentStyle); + } else { + n.setStyle("list-style-type", currentStyle); + } + }); + } + + html.html = root.toHtml(); + }); + //导出时,去掉p标签 + me.getOpt("disablePInList") === true && + me.addOutputRule(function(root) { + utils.each(root.getNodesByTagName("li"), function(li) { + var newChildrens = [], + index = 0; + utils.each(li.children, function(n) { + if (n.tagName == "p") { + var tmpNode; + while ((tmpNode = n.children.pop())) { + newChildrens.splice(index, 0, tmpNode); + tmpNode.parentNode = li; + lastNode = tmpNode; + } + tmpNode = newChildrens[newChildrens.length - 1]; + if ( + !tmpNode || + tmpNode.type != "element" || + tmpNode.tagName != "br" + ) { + var br = UE.uNode.createElement("br"); + br.parentNode = li; + newChildrens.push(br); + } + + index = newChildrens.length; + } + }); + if (newChildrens.length) { + li.children = newChildrens; + } + }); + }); + //进入编辑器的li要套p标签 + me.addInputRule(function(root) { + utils.each(root.getNodesByTagName("li"), function(li) { + var tmpP = UE.uNode.createElement("p"); + for (var i = 0, ci; (ci = li.children[i]); ) { + if (ci.type == "text" || dtd.p[ci.tagName]) { + tmpP.appendChild(ci); + } else { + if (tmpP.firstChild()) { + li.insertBefore(tmpP, ci); + tmpP = UE.uNode.createElement("p"); + i = i + 2; + } else { + i++; + } + } + } + if ((tmpP.firstChild() && !tmpP.parentNode) || !li.firstChild()) { + li.appendChild(tmpP); + } + //trace:3357 + //p不能为空 + if (!tmpP.firstChild()) { + tmpP.innerHTML(browser.ie ? " " : "
    "); + } + //去掉末尾的空白 + var p = li.firstChild(); + var lastChild = p.lastChild(); + if ( + lastChild && + lastChild.type == "text" && + /^\s*$/.test(lastChild.data) + ) { + p.removeChild(lastChild); + } + }); + if (me.options.autoTransWordToList) { + var orderlisttype = { + num1: /^\d+\)/, + decimal: /^\d+\./, + "lower-alpha": /^[a-z]+\)/, + "upper-alpha": /^[A-Z]+\./, + cn: /^[\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+[\u3001]/, + cn2: /^\([\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+\)/ + }, + unorderlisttype = { + square: "n" + }; + function checkListType(content, container) { + var span = container.firstChild(); + if ( + span && + span.type == "element" && + span.tagName == "span" && + /Wingdings|Symbol/.test(span.getStyle("font-family")) + ) { + for (var p in unorderlisttype) { + if (unorderlisttype[p] == span.data) { + return p; + } + } + return "disc"; + } + for (var p in orderlisttype) { + if (orderlisttype[p].test(content)) { + return p; + } + } + } + utils.each(root.getNodesByTagName("p"), function(node) { + if (node.getAttr("class") != "MsoListParagraph") { + return; + } + + //word粘贴过来的会带有margin要去掉,但这样也可能会误命中一些央视 + node.setStyle("margin", ""); + node.setStyle("margin-left", ""); + node.setAttr("class", ""); + + function appendLi(list, p, type) { + if (list.tagName == "ol") { + if (browser.ie) { + var first = p.firstChild(); + if ( + first.type == "element" && + first.tagName == "span" && + orderlisttype[type].test(first.innerText()) + ) { + p.removeChild(first); + } + } else { + p.innerHTML(p.innerHTML().replace(orderlisttype[type], "")); + } + } else { + p.removeChild(p.firstChild()); + } + + var li = UE.uNode.createElement("li"); + li.appendChild(p); + list.appendChild(li); + } + var tmp = node, + type, + cacheNode = node; + + if ( + node.parentNode.tagName != "li" && + (type = checkListType(node.innerText(), node)) + ) { + var list = UE.uNode.createElement( + me.options.insertorderedlist.hasOwnProperty(type) ? "ol" : "ul" + ); + if (customStyle[type]) { + list.setAttr("class", "custom_" + type); + } else { + list.setStyle("list-style-type", type); + } + while ( + node && + node.parentNode.tagName != "li" && + checkListType(node.innerText(), node) + ) { + tmp = node.nextSibling(); + if (!tmp) { + node.parentNode.insertBefore(list, node); + } + appendLi(list, node, type); + node = tmp; + } + if (!list.parentNode && node && node.parentNode) { + node.parentNode.insertBefore(list, node); + } + } + var span = cacheNode.firstChild(); + if ( + span && + span.type == "element" && + span.tagName == "span" && + /^\s*( )+\s*$/.test(span.innerText()) + ) { + span.parentNode.removeChild(span); + } + }); + } + }); + + //调整索引标签 + me.addListener("contentchange", function() { + adjustListStyle(me.document); + }); + + function adjustListStyle(doc, ignore) { + utils.each(domUtils.getElementsByTagName(doc, "ol ul"), function(node) { + if (!domUtils.inDoc(node, doc)) return; + + var parent = node.parentNode; + if (parent.tagName == node.tagName) { + var nodeStyleType = + getStyle(node) || (node.tagName == "OL" ? "decimal" : "disc"), + parentStyleType = + getStyle(parent) || (parent.tagName == "OL" ? "decimal" : "disc"); + if (nodeStyleType == parentStyleType) { + var styleIndex = utils.indexOf( + listStyle[node.tagName], + nodeStyleType + ); + styleIndex = styleIndex + 1 == listStyle[node.tagName].length + ? 0 + : styleIndex + 1; + setListStyle(node, listStyle[node.tagName][styleIndex]); + } + } + var index = 0, + type = 2; + if (domUtils.hasClass(node, /custom_/)) { + if ( + !( + /[ou]l/i.test(parent.tagName) && + domUtils.hasClass(parent, /custom_/) + ) + ) { + type = 1; + } + } else { + if ( + /[ou]l/i.test(parent.tagName) && + domUtils.hasClass(parent, /custom_/) + ) { + type = 3; + } + } + + var style = domUtils.getStyle(node, "list-style-type"); + style && (node.style.cssText = "list-style-type:" + style); + node.className = + utils.trim(node.className.replace(/list-paddingleft-\w+/, "")) + + " list-paddingleft-" + + type; + utils.each(domUtils.getElementsByTagName(node, "li"), function(li) { + li.style.cssText && (li.style.cssText = ""); + if (!li.firstChild) { + domUtils.remove(li); + return; + } + if (li.parentNode !== node) { + return; + } + index++; + if (domUtils.hasClass(node, /custom_/)) { + var paddingLeft = 1, + currentStyle = getStyle(node); + if (node.tagName == "OL") { + if (currentStyle) { + switch (currentStyle) { + case "cn": + case "cn1": + case "cn2": + if ( + index > 10 && + (index % 10 == 0 || (index > 10 && index < 20)) + ) { + paddingLeft = 2; + } else if (index > 20) { + paddingLeft = 3; + } + break; + case "num2": + if (index > 9) { + paddingLeft = 2; + } + } + } + li.className = + "list-" + + customStyle[currentStyle] + + index + + " " + + "list-" + + currentStyle + + "-paddingleft-" + + paddingLeft; + } else { + li.className = + "list-" + + customStyle[currentStyle] + + " " + + "list-" + + currentStyle + + "-paddingleft"; + } + } else { + li.className = li.className.replace(/list-[\w\-]+/gi, ""); + } + var className = li.getAttribute("class"); + if (className !== null && !className.replace(/\s/g, "")) { + domUtils.removeAttributes(li, "class"); + } + }); + !ignore && + adjustList( + node, + node.tagName.toLowerCase(), + getStyle(node) || domUtils.getStyle(node, "list-style-type"), + true + ); + }); + } + function adjustList(list, tag, style, ignoreEmpty) { + var nextList = list.nextSibling; + if ( + nextList && + nextList.nodeType == 1 && + nextList.tagName.toLowerCase() == tag && + (getStyle(nextList) || + domUtils.getStyle(nextList, "list-style-type") || + (tag == "ol" ? "decimal" : "disc")) == style + ) { + domUtils.moveChild(nextList, list); + if (nextList.childNodes.length == 0) { + domUtils.remove(nextList); + } + } + if (nextList && domUtils.isFillChar(nextList)) { + domUtils.remove(nextList); + } + var preList = list.previousSibling; + if ( + preList && + preList.nodeType == 1 && + preList.tagName.toLowerCase() == tag && + (getStyle(preList) || + domUtils.getStyle(preList, "list-style-type") || + (tag == "ol" ? "decimal" : "disc")) == style + ) { + domUtils.moveChild(list, preList); + } + if (preList && domUtils.isFillChar(preList)) { + domUtils.remove(preList); + } + !ignoreEmpty && domUtils.isEmptyBlock(list) && domUtils.remove(list); + if (getStyle(list)) { + adjustListStyle(list.ownerDocument, true); + } + } + + function setListStyle(list, style) { + if (customStyle[style]) { + list.className = "custom_" + style; + } + try { + domUtils.setStyle(list, "list-style-type", style); + } catch (e) {} + } + function clearEmptySibling(node) { + var tmpNode = node.previousSibling; + if (tmpNode && domUtils.isEmptyBlock(tmpNode)) { + domUtils.remove(tmpNode); + } + tmpNode = node.nextSibling; + if (tmpNode && domUtils.isEmptyBlock(tmpNode)) { + domUtils.remove(tmpNode); + } + } + + me.addListener("keydown", function(type, evt) { + function preventAndSave() { + evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); + me.fireEvent("contentchange"); + me.undoManger && me.undoManger.save(); + } + function findList(node, filterFn) { + while (node && !domUtils.isBody(node)) { + if (filterFn(node)) { + return null; + } + if (node.nodeType == 1 && /[ou]l/i.test(node.tagName)) { + return node; + } + node = node.parentNode; + } + return null; + } + var keyCode = evt.keyCode || evt.which; + if (keyCode == 13 && !evt.shiftKey) { + //回车 + var rng = me.selection.getRange(), + parent = domUtils.findParent( + rng.startContainer, + function(node) { + return domUtils.isBlockElm(node); + }, + true + ), + li = domUtils.findParentByTagName(rng.startContainer, "li", true); + if (parent && parent.tagName != "PRE" && !li) { + var html = parent.innerHTML.replace( + new RegExp(domUtils.fillChar, "g"), + "" + ); + if (/^\s*1\s*\.[^\d]/.test(html)) { + parent.innerHTML = html.replace(/^\s*1\s*\./, ""); + rng.setStartAtLast(parent).collapse(true).select(); + me.__hasEnterExecCommand = true; + me.execCommand("insertorderedlist"); + me.__hasEnterExecCommand = false; + } + } + var range = me.selection.getRange(), + start = findList(range.startContainer, function(node) { + return node.tagName == "TABLE"; + }), + end = range.collapsed + ? start + : findList(range.endContainer, function(node) { + return node.tagName == "TABLE"; + }); + + if (start && end && start === end) { + if (!range.collapsed) { + start = domUtils.findParentByTagName( + range.startContainer, + "li", + true + ); + end = domUtils.findParentByTagName(range.endContainer, "li", true); + if (start && end && start === end) { + range.deleteContents(); + li = domUtils.findParentByTagName(range.startContainer, "li", true); + if (li && domUtils.isEmptyBlock(li)) { + pre = li.previousSibling; + next = li.nextSibling; + p = me.document.createElement("p"); + + domUtils.fillNode(me.document, p); + parentList = li.parentNode; + if (pre && next) { + range.setStart(next, 0).collapse(true).select(true); + domUtils.remove(li); + } else { + if ((!pre && !next) || !pre) { + parentList.parentNode.insertBefore(p, parentList); + } else { + li.parentNode.parentNode.insertBefore( + p, + parentList.nextSibling + ); + } + domUtils.remove(li); + if (!parentList.firstChild) { + domUtils.remove(parentList); + } + range.setStart(p, 0).setCursor(); + } + preventAndSave(); + return; + } + } else { + var tmpRange = range.cloneRange(), + bk = tmpRange.collapse(false).createBookmark(); + + range.deleteContents(); + tmpRange.moveToBookmark(bk); + var li = domUtils.findParentByTagName( + tmpRange.startContainer, + "li", + true + ); + + clearEmptySibling(li); + tmpRange.select(); + preventAndSave(); + return; + } + } + + li = domUtils.findParentByTagName(range.startContainer, "li", true); + + if (li) { + if (domUtils.isEmptyBlock(li)) { + bk = range.createBookmark(); + var parentList = li.parentNode; + if (li !== parentList.lastChild) { + domUtils.breakParent(li, parentList); + clearEmptySibling(li); + } else { + parentList.parentNode.insertBefore(li, parentList.nextSibling); + if (domUtils.isEmptyNode(parentList)) { + domUtils.remove(parentList); + } + } + //嵌套不处理 + if (!dtd.$list[li.parentNode.tagName]) { + if (!domUtils.isBlockElm(li.firstChild)) { + p = me.document.createElement("p"); + li.parentNode.insertBefore(p, li); + while (li.firstChild) { + p.appendChild(li.firstChild); + } + domUtils.remove(li); + } else { + domUtils.remove(li, true); + } + } + range.moveToBookmark(bk).select(); + } else { + var first = li.firstChild; + if (!first || !domUtils.isBlockElm(first)) { + var p = me.document.createElement("p"); + + !li.firstChild && domUtils.fillNode(me.document, p); + while (li.firstChild) { + p.appendChild(li.firstChild); + } + li.appendChild(p); + first = p; + } + + var span = me.document.createElement("span"); + + range.insertNode(span); + domUtils.breakParent(span, li); + + var nextLi = span.nextSibling; + first = nextLi.firstChild; + + if (!first) { + p = me.document.createElement("p"); + + domUtils.fillNode(me.document, p); + nextLi.appendChild(p); + first = p; + } + if (domUtils.isEmptyNode(first)) { + first.innerHTML = ""; + domUtils.fillNode(me.document, first); + } + + range.setStart(first, 0).collapse(true).shrinkBoundary().select(); + domUtils.remove(span); + var pre = nextLi.previousSibling; + if (pre && domUtils.isEmptyBlock(pre)) { + pre.innerHTML = "

    "; + domUtils.fillNode(me.document, pre.firstChild); + } + } + // } + preventAndSave(); + } + } + } + if (keyCode == 8) { + //修中ie中li下的问题 + range = me.selection.getRange(); + if (range.collapsed && domUtils.isStartInblock(range)) { + tmpRange = range.cloneRange().trimBoundary(); + li = domUtils.findParentByTagName(range.startContainer, "li", true); + //要在li的最左边,才能处理 + if (li && domUtils.isStartInblock(tmpRange)) { + start = domUtils.findParentByTagName(range.startContainer, "p", true); + if (start && start !== li.firstChild) { + var parentList = domUtils.findParentByTagName(start, ["ol", "ul"]); + domUtils.breakParent(start, parentList); + clearEmptySibling(start); + me.fireEvent("contentchange"); + range.setStart(start, 0).setCursor(false, true); + me.fireEvent("saveScene"); + domUtils.preventDefault(evt); + return; + } + + if (li && (pre = li.previousSibling)) { + if (keyCode == 46 && li.childNodes.length) { + return; + } + //有可能上边的兄弟节点是个2级菜单,要追加到2级菜单的最后的li + if (dtd.$list[pre.tagName]) { + pre = pre.lastChild; + } + me.undoManger && me.undoManger.save(); + first = li.firstChild; + if (domUtils.isBlockElm(first)) { + if (domUtils.isEmptyNode(first)) { + // range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true); + pre.appendChild(first); + range.setStart(first, 0).setCursor(false, true); + //first不是唯一的节点 + while (li.firstChild) { + pre.appendChild(li.firstChild); + } + } else { + span = me.document.createElement("span"); + range.insertNode(span); + //判断pre是否是空的节点,如果是


    类型的空节点,干掉p标签防止它占位 + if (domUtils.isEmptyBlock(pre)) { + pre.innerHTML = ""; + } + domUtils.moveChild(li, pre); + range.setStartBefore(span).collapse(true).select(true); + + domUtils.remove(span); + } + } else { + if (domUtils.isEmptyNode(li)) { + var p = me.document.createElement("p"); + pre.appendChild(p); + range.setStart(p, 0).setCursor(); + // range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true); + } else { + range + .setEnd(pre, pre.childNodes.length) + .collapse() + .select(true); + while (li.firstChild) { + pre.appendChild(li.firstChild); + } + } + } + domUtils.remove(li); + me.fireEvent("contentchange"); + me.fireEvent("saveScene"); + domUtils.preventDefault(evt); + return; + } + //trace:980 + + if (li && !li.previousSibling) { + var parentList = li.parentNode; + var bk = range.createBookmark(); + if (domUtils.isTagNode(parentList.parentNode, "ol ul")) { + parentList.parentNode.insertBefore(li, parentList); + if (domUtils.isEmptyNode(parentList)) { + domUtils.remove(parentList); + } + } else { + while (li.firstChild) { + parentList.parentNode.insertBefore(li.firstChild, parentList); + } + + domUtils.remove(li); + if (domUtils.isEmptyNode(parentList)) { + domUtils.remove(parentList); + } + } + range.moveToBookmark(bk).setCursor(false, true); + me.fireEvent("contentchange"); + me.fireEvent("saveScene"); + domUtils.preventDefault(evt); + return; + } + } + } + } + }); + + me.addListener("keyup", function(type, evt) { + var keyCode = evt.keyCode || evt.which; + if (keyCode == 8) { + var rng = me.selection.getRange(), + list; + if ( + (list = domUtils.findParentByTagName( + rng.startContainer, + ["ol", "ul"], + true + )) + ) { + adjustList( + list, + list.tagName.toLowerCase(), + getStyle(list) || domUtils.getComputedStyle(list, "list-style-type"), + true + ); + } + } + }); + //处理tab键 + me.addListener("tabkeydown", function() { + var range = me.selection.getRange(); + + //控制级数 + function checkLevel(li) { + if (me.options.maxListLevel != -1) { + var level = li.parentNode, + levelNum = 0; + while (/[ou]l/i.test(level.tagName)) { + levelNum++; + level = level.parentNode; + } + if (levelNum >= me.options.maxListLevel) { + return true; + } + } + } + //只以开始为准 + //todo 后续改进 + var li = domUtils.findParentByTagName(range.startContainer, "li", true); + if (li) { + var bk; + if (range.collapsed) { + if (checkLevel(li)) return true; + var parentLi = li.parentNode, + list = me.document.createElement(parentLi.tagName), + index = utils.indexOf( + listStyle[list.tagName], + getStyle(parentLi) || + domUtils.getComputedStyle(parentLi, "list-style-type") + ); + index = index + 1 == listStyle[list.tagName].length ? 0 : index + 1; + var currentStyle = listStyle[list.tagName][index]; + setListStyle(list, currentStyle); + if (domUtils.isStartInblock(range)) { + me.fireEvent("saveScene"); + bk = range.createBookmark(); + parentLi.insertBefore(list, li); + list.appendChild(li); + adjustList(list, list.tagName.toLowerCase(), currentStyle); + me.fireEvent("contentchange"); + range.moveToBookmark(bk).select(true); + return true; + } + } else { + me.fireEvent("saveScene"); + bk = range.createBookmark(); + for ( + var i = 0, closeList, parents = domUtils.findParents(li), ci; + (ci = parents[i++]); + + ) { + if (domUtils.isTagNode(ci, "ol ul")) { + closeList = ci; + break; + } + } + var current = li; + if (bk.end) { + while ( + current && + !( + domUtils.getPosition(current, bk.end) & + domUtils.POSITION_FOLLOWING + ) + ) { + if (checkLevel(current)) { + current = domUtils.getNextDomNode(current, false, null, function( + node + ) { + return node !== closeList; + }); + continue; + } + var parentLi = current.parentNode, + list = me.document.createElement(parentLi.tagName), + index = utils.indexOf( + listStyle[list.tagName], + getStyle(parentLi) || + domUtils.getComputedStyle(parentLi, "list-style-type") + ); + var currentIndex = index + 1 == listStyle[list.tagName].length + ? 0 + : index + 1; + var currentStyle = listStyle[list.tagName][currentIndex]; + setListStyle(list, currentStyle); + parentLi.insertBefore(list, current); + while ( + current && + !( + domUtils.getPosition(current, bk.end) & + domUtils.POSITION_FOLLOWING + ) + ) { + li = current.nextSibling; + list.appendChild(current); + if (!li || domUtils.isTagNode(li, "ol ul")) { + if (li) { + while ((li = li.firstChild)) { + if (li.tagName == "LI") { + break; + } + } + } else { + li = domUtils.getNextDomNode(current, false, null, function( + node + ) { + return node !== closeList; + }); + } + break; + } + current = li; + } + adjustList(list, list.tagName.toLowerCase(), currentStyle); + current = li; + } + } + me.fireEvent("contentchange"); + range.moveToBookmark(bk).select(); + return true; + } + } + }); + function getLi(start) { + while (start && !domUtils.isBody(start)) { + if (start.nodeName == "TABLE") { + return null; + } + if (start.nodeName == "LI") { + return start; + } + start = start.parentNode; + } + } + + /** + * 有序列表,与“insertunorderedlist”命令互斥 + * @command insertorderedlist + * @method execCommand + * @param { String } command 命令字符串 + * @param { String } style 插入的有序列表类型,值为:decimal,lower-alpha,lower-roman,upper-alpha,upper-roman,cn,cn1,cn2,num,num1,num2 + * @example + * ```javascript + * editor.execCommand( 'insertorderedlist','decimal'); + * ``` + */ + /** + * 查询当前选区内容是否有序列表 + * @command insertorderedlist + * @method queryCommandState + * @param { String } cmd 命令字符串 + * @return { int } 如果当前选区是有序列表返回1,否则返回0 + * @example + * ```javascript + * editor.queryCommandState( 'insertorderedlist' ); + * ``` + */ + /** + * 查询当前选区内容是否有序列表 + * @command insertorderedlist + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回当前有序列表的类型,值为null或decimal,lower-alpha,lower-roman,upper-alpha,upper-roman,cn,cn1,cn2,num,num1,num2 + * @example + * ```javascript + * editor.queryCommandValue( 'insertorderedlist' ); + * ``` + */ + + /** + * 无序列表,与“insertorderedlist”命令互斥 + * @command insertunorderedlist + * @method execCommand + * @param { String } command 命令字符串 + * @param { String } style 插入的无序列表类型,值为:circle,disc,square,dash,dot + * @example + * ```javascript + * editor.execCommand( 'insertunorderedlist','circle'); + * ``` + */ + /** + * 查询当前是否有word文档粘贴进来的图片 + * @command insertunorderedlist + * @method insertunorderedlist + * @param { String } command 命令字符串 + * @return { int } 如果当前选区是无序列表返回1,否则返回0 + * @example + * ```javascript + * editor.queryCommandState( 'insertunorderedlist' ); + * ``` + */ + /** + * 查询当前选区内容是否有序列表 + * @command insertunorderedlist + * @method queryCommandValue + * @param { String } command 命令字符串 + * @return { String } 返回当前无序列表的类型,值为null或circle,disc,square,dash,dot + * @example + * ```javascript + * editor.queryCommandValue( 'insertunorderedlist' ); + * ``` + */ + + me.commands["insertorderedlist"] = me.commands["insertunorderedlist"] = { + execCommand: function(command, style) { + if (!style) { + style = command.toLowerCase() == "insertorderedlist" + ? "decimal" + : "disc"; + } + var me = this, + range = this.selection.getRange(), + filterFn = function(node) { + return node.nodeType == 1 + ? node.tagName.toLowerCase() != "br" + : !domUtils.isWhitespace(node); + }, + tag = command.toLowerCase() == "insertorderedlist" ? "ol" : "ul", + frag = me.document.createDocumentFragment(); + //去掉是因为会出现选到末尾,导致adjustmentBoundary缩到ol/ul的位置 + //range.shrinkBoundary();//.adjustmentBoundary(); + range.adjustmentBoundary().shrinkBoundary(); + var bko = range.createBookmark(true), + start = getLi(me.document.getElementById(bko.start)), + modifyStart = 0, + end = getLi(me.document.getElementById(bko.end)), + modifyEnd = 0, + startParent, + endParent, + list, + tmp; + + if (start || end) { + start && (startParent = start.parentNode); + if (!bko.end) { + end = start; + } + end && (endParent = end.parentNode); + + if (startParent === endParent) { + while (start !== end) { + tmp = start; + start = start.nextSibling; + if (!domUtils.isBlockElm(tmp.firstChild)) { + var p = me.document.createElement("p"); + while (tmp.firstChild) { + p.appendChild(tmp.firstChild); + } + tmp.appendChild(p); + } + frag.appendChild(tmp); + } + tmp = me.document.createElement("span"); + startParent.insertBefore(tmp, end); + if (!domUtils.isBlockElm(end.firstChild)) { + p = me.document.createElement("p"); + while (end.firstChild) { + p.appendChild(end.firstChild); + } + end.appendChild(p); + } + frag.appendChild(end); + domUtils.breakParent(tmp, startParent); + if (domUtils.isEmptyNode(tmp.previousSibling)) { + domUtils.remove(tmp.previousSibling); + } + if (domUtils.isEmptyNode(tmp.nextSibling)) { + domUtils.remove(tmp.nextSibling); + } + var nodeStyle = + getStyle(startParent) || + domUtils.getComputedStyle(startParent, "list-style-type") || + (command.toLowerCase() == "insertorderedlist" ? "decimal" : "disc"); + if (startParent.tagName.toLowerCase() == tag && nodeStyle == style) { + for ( + var i = 0, ci, tmpFrag = me.document.createDocumentFragment(); + (ci = frag.firstChild); + + ) { + if (domUtils.isTagNode(ci, "ol ul")) { + // 删除时,子列表不处理 + // utils.each(domUtils.getElementsByTagName(ci,'li'),function(li){ + // while(li.firstChild){ + // tmpFrag.appendChild(li.firstChild); + // } + // + // }); + tmpFrag.appendChild(ci); + } else { + while (ci.firstChild) { + tmpFrag.appendChild(ci.firstChild); + domUtils.remove(ci); + } + } + } + tmp.parentNode.insertBefore(tmpFrag, tmp); + } else { + list = me.document.createElement(tag); + setListStyle(list, style); + list.appendChild(frag); + tmp.parentNode.insertBefore(list, tmp); + } + + domUtils.remove(tmp); + list && adjustList(list, tag, style); + range.moveToBookmark(bko).select(); + return; + } + //开始 + if (start) { + while (start) { + tmp = start.nextSibling; + if (domUtils.isTagNode(start, "ol ul")) { + frag.appendChild(start); + } else { + var tmpfrag = me.document.createDocumentFragment(), + hasBlock = 0; + while (start.firstChild) { + if (domUtils.isBlockElm(start.firstChild)) { + hasBlock = 1; + } + tmpfrag.appendChild(start.firstChild); + } + if (!hasBlock) { + var tmpP = me.document.createElement("p"); + tmpP.appendChild(tmpfrag); + frag.appendChild(tmpP); + } else { + frag.appendChild(tmpfrag); + } + domUtils.remove(start); + } + + start = tmp; + } + startParent.parentNode.insertBefore(frag, startParent.nextSibling); + if (domUtils.isEmptyNode(startParent)) { + range.setStartBefore(startParent); + domUtils.remove(startParent); + } else { + range.setStartAfter(startParent); + } + modifyStart = 1; + } + + if (end && domUtils.inDoc(endParent, me.document)) { + //结束 + start = endParent.firstChild; + while (start && start !== end) { + tmp = start.nextSibling; + if (domUtils.isTagNode(start, "ol ul")) { + frag.appendChild(start); + } else { + tmpfrag = me.document.createDocumentFragment(); + hasBlock = 0; + while (start.firstChild) { + if (domUtils.isBlockElm(start.firstChild)) { + hasBlock = 1; + } + tmpfrag.appendChild(start.firstChild); + } + if (!hasBlock) { + tmpP = me.document.createElement("p"); + tmpP.appendChild(tmpfrag); + frag.appendChild(tmpP); + } else { + frag.appendChild(tmpfrag); + } + domUtils.remove(start); + } + start = tmp; + } + var tmpDiv = domUtils.createElement(me.document, "div", { + tmpDiv: 1 + }); + domUtils.moveChild(end, tmpDiv); + + frag.appendChild(tmpDiv); + domUtils.remove(end); + endParent.parentNode.insertBefore(frag, endParent); + range.setEndBefore(endParent); + if (domUtils.isEmptyNode(endParent)) { + domUtils.remove(endParent); + } + + modifyEnd = 1; + } + } + + if (!modifyStart) { + range.setStartBefore(me.document.getElementById(bko.start)); + } + if (bko.end && !modifyEnd) { + range.setEndAfter(me.document.getElementById(bko.end)); + } + range.enlarge(true, function(node) { + return notExchange[node.tagName]; + }); + + frag = me.document.createDocumentFragment(); + + var bk = range.createBookmark(), + current = domUtils.getNextDomNode(bk.start, false, filterFn), + tmpRange = range.cloneRange(), + tmpNode, + block = domUtils.isBlockElm; + + while ( + current && + current !== bk.end && + domUtils.getPosition(current, bk.end) & domUtils.POSITION_PRECEDING + ) { + if (current.nodeType == 3 || dtd.li[current.tagName]) { + if (current.nodeType == 1 && dtd.$list[current.tagName]) { + while (current.firstChild) { + frag.appendChild(current.firstChild); + } + tmpNode = domUtils.getNextDomNode(current, false, filterFn); + domUtils.remove(current); + current = tmpNode; + continue; + } + tmpNode = current; + tmpRange.setStartBefore(current); + + while ( + current && + current !== bk.end && + (!block(current) || domUtils.isBookmarkNode(current)) + ) { + tmpNode = current; + current = domUtils.getNextDomNode(current, false, null, function( + node + ) { + return !notExchange[node.tagName]; + }); + } + + if (current && block(current)) { + tmp = domUtils.getNextDomNode(tmpNode, false, filterFn); + if (tmp && domUtils.isBookmarkNode(tmp)) { + current = domUtils.getNextDomNode(tmp, false, filterFn); + tmpNode = tmp; + } + } + tmpRange.setEndAfter(tmpNode); + + current = domUtils.getNextDomNode(tmpNode, false, filterFn); + + var li = range.document.createElement("li"); + + li.appendChild(tmpRange.extractContents()); + if (domUtils.isEmptyNode(li)) { + var tmpNode = range.document.createElement("p"); + while (li.firstChild) { + tmpNode.appendChild(li.firstChild); + } + li.appendChild(tmpNode); + } + frag.appendChild(li); + } else { + current = domUtils.getNextDomNode(current, true, filterFn); + } + } + range.moveToBookmark(bk).collapse(true); + list = me.document.createElement(tag); + setListStyle(list, style); + list.appendChild(frag); + range.insertNode(list); + //当前list上下看能否合并 + adjustList(list, tag, style); + //去掉冗余的tmpDiv + for ( + var i = 0, ci, tmpDivs = domUtils.getElementsByTagName(list, "div"); + (ci = tmpDivs[i++]); + + ) { + if (ci.getAttribute("tmpDiv")) { + domUtils.remove(ci, true); + } + } + range.moveToBookmark(bko).select(); + }, + queryCommandState: function(command) { + var tag = command.toLowerCase() == "insertorderedlist" ? "ol" : "ul"; + var path = this.selection.getStartElementPath(); + for (var i = 0, ci; (ci = path[i++]); ) { + if (ci.nodeName == "TABLE") { + return 0; + } + if (tag == ci.nodeName.toLowerCase()) { + return 1; + } + } + return 0; + }, + queryCommandValue: function(command) { + var tag = command.toLowerCase() == "insertorderedlist" ? "ol" : "ul"; + var path = this.selection.getStartElementPath(), + node; + for (var i = 0, ci; (ci = path[i++]); ) { + if (ci.nodeName == "TABLE") { + node = null; + break; + } + if (tag == ci.nodeName.toLowerCase()) { + node = ci; + break; + } + } + return node + ? getStyle(node) || domUtils.getComputedStyle(node, "list-style-type") + : null; + } + }; +}; + + +// plugins/source.js +/** + * 源码编辑插件 + * @file + * @since 1.2.6.1 + */ + +(function() { + var sourceEditors = { + textarea: function(editor, holder) { + var textarea = holder.ownerDocument.createElement("textarea"); + textarea.style.cssText = + "position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;"; + // todo: IE下只有onresize属性可用... 很纠结 + if (browser.ie && browser.version < 8) { + textarea.style.width = holder.offsetWidth + "px"; + textarea.style.height = holder.offsetHeight + "px"; + holder.onresize = function() { + textarea.style.width = holder.offsetWidth + "px"; + textarea.style.height = holder.offsetHeight + "px"; + }; + } + holder.appendChild(textarea); + return { + setContent: function(content) { + textarea.value = content; + }, + getContent: function() { + return textarea.value; + }, + select: function() { + var range; + if (browser.ie) { + range = textarea.createTextRange(); + range.collapse(true); + range.select(); + } else { + //todo: chrome下无法设置焦点 + textarea.setSelectionRange(0, 0); + textarea.focus(); + } + }, + dispose: function() { + holder.removeChild(textarea); + // todo + holder.onresize = null; + textarea = null; + holder = null; + }, + focus: function (){ + textarea.focus(); + }, + blur: function (){ + textarea.blur(); + } + }; + }, + codemirror: function(editor, holder) { + var codeEditor = window.CodeMirror(holder, { + mode: "text/html", + tabMode: "indent", + lineNumbers: true, + lineWrapping: true + }); + var dom = codeEditor.getWrapperElement(); + dom.style.cssText = + 'position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,"Courier new",monospace;font-size:13px;'; + codeEditor.getScrollerElement().style.cssText = + "position:absolute;left:0;top:0;width:100%;height:100%;"; + codeEditor.refresh(); + return { + getCodeMirror: function() { + return codeEditor; + }, + setContent: function(content) { + codeEditor.setValue(content); + }, + getContent: function() { + return codeEditor.getValue(); + }, + select: function() { + codeEditor.focus(); + }, + dispose: function() { + holder.removeChild(dom); + dom = null; + codeEditor = null; + }, + focus: function (){ + codeEditor.focus(); + }, + blur: function (){ + // codeEditor.blur(); + // since codemirror not support blur() + codeEditor.setOption('readOnly', true); + codeEditor.setOption('readOnly', false); + } + }; + } + }; + + UE.plugins["source"] = function() { + var me = this; + var opt = this.options; + var sourceMode = false; + var sourceEditor; + var orgSetContent; + var orgFocus; + var orgBlur; + opt.sourceEditor = browser.ie + ? "textarea" + : opt.sourceEditor || "codemirror"; + + me.setOpt({ + sourceEditorFirst: false + }); + function createSourceEditor(holder) { + return sourceEditors[ + opt.sourceEditor == "codemirror" && window.CodeMirror + ? "codemirror" + : "textarea" + ](me, holder); + } + + var bakCssText; + //解决在源码模式下getContent不能得到最新的内容问题 + var oldGetContent, bakAddress; + + /** + * 切换源码模式和编辑模式 + * @command source + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'source'); + * ``` + */ + + /** + * 查询当前编辑区域的状态是源码模式还是可视化模式 + * @command source + * @method queryCommandState + * @param { String } cmd 命令字符串 + * @return { int } 如果当前是源码编辑模式,返回1,否则返回0 + * @example + * ```javascript + * editor.queryCommandState( 'source' ); + * ``` + */ + + me.commands["source"] = { + execCommand: function() { + sourceMode = !sourceMode; + if (sourceMode) { + bakAddress = me.selection.getRange().createAddress(false, true); + me.undoManger && me.undoManger.save(true); + if (browser.gecko) { + me.body.contentEditable = false; + } + + bakCssText = me.iframe.style.cssText; + me.iframe.style.cssText += + "position:absolute;left:-32768px;top:-32768px;"; + + me.fireEvent("beforegetcontent"); + var root = UE.htmlparser(me.body.innerHTML); + me.filterOutputRule(root); + root.traversal(function(node) { + if (node.type == "element") { + switch (node.tagName) { + case "td": + case "th": + case "caption": + if (node.children && node.children.length == 1) { + if (node.firstChild().tagName == "br") { + node.removeChild(node.firstChild()); + } + } + break; + case "pre": + node.innerText(node.innerText().replace(/ /g, " ")); + } + } + }); + + me.fireEvent("aftergetcontent"); + + var content = root.toHtml(true); + + sourceEditor = createSourceEditor(me.iframe.parentNode); + + sourceEditor.setContent(content); + + orgSetContent = me.setContent; + + me.setContent = function(html) { + //这里暂时不触发事件,防止报错 + var root = UE.htmlparser(html); + me.filterInputRule(root); + html = root.toHtml(); + sourceEditor.setContent(html); + }; + + setTimeout(function() { + sourceEditor.select(); + me.addListener("fullscreenchanged", function() { + try { + sourceEditor.getCodeMirror().refresh(); + } catch (e) {} + }); + }); + + //重置getContent,源码模式下取值也能是最新的数据 + oldGetContent = me.getContent; + me.getContent = function() { + return ( + sourceEditor.getContent() || + "

    " + (browser.ie ? "" : "
    ") + "

    " + ); + }; + + orgFocus = me.focus; + orgBlur = me.blur; + + me.focus = function(){ + sourceEditor.focus(); + }; + + me.blur = function(){ + orgBlur.call(me); + sourceEditor.blur(); + }; + } else { + me.iframe.style.cssText = bakCssText; + var cont = + sourceEditor.getContent() || + "

    " + (browser.ie ? "" : "
    ") + "

    "; + //处理掉block节点前后的空格,有可能会误命中,暂时不考虑 + cont = cont.replace( + new RegExp("[\\r\\t\\n ]*]*)>", "g"), + function(a, b) { + if (b && !dtd.$inlineWithA[b.toLowerCase()]) { + return a.replace(/(^[\n\r\t ]*)|([\n\r\t ]*$)/g, ""); + } + return a.replace(/(^[\n\r\t]*)|([\n\r\t]*$)/g, ""); + } + ); + + me.setContent = orgSetContent; + + me.setContent(cont); + sourceEditor.dispose(); + sourceEditor = null; + //还原getContent方法 + me.getContent = oldGetContent; + + me.focus = orgFocus; + me.blur = orgBlur; + + var first = me.body.firstChild; + //trace:1106 都删除空了,下边会报错,所以补充一个p占位 + if (!first) { + me.body.innerHTML = "

    " + (browser.ie ? "" : "
    ") + "

    "; + first = me.body.firstChild; + } + + //要在ifm为显示时ff才能取到selection,否则报错 + //这里不能比较位置了 + me.undoManger && me.undoManger.save(true); + + if (browser.gecko) { + var input = document.createElement("input"); + input.style.cssText = "position:absolute;left:0;top:-32768px"; + + document.body.appendChild(input); + + me.body.contentEditable = false; + setTimeout(function() { + domUtils.setViewportOffset(input, { left: -32768, top: 0 }); + input.focus(); + setTimeout(function() { + me.body.contentEditable = true; + me.selection.getRange().moveToAddress(bakAddress).select(true); + domUtils.remove(input); + }); + }); + } else { + //ie下有可能报错,比如在代码顶头的情况 + try { + me.selection.getRange().moveToAddress(bakAddress).select(true); + } catch (e) {} + } + } + this.fireEvent("sourcemodechanged", sourceMode); + }, + queryCommandState: function() { + return sourceMode | 0; + }, + notNeedUndo: 1 + }; + var oldQueryCommandState = me.queryCommandState; + + me.queryCommandState = function(cmdName) { + cmdName = cmdName.toLowerCase(); + if (sourceMode) { + //源码模式下可以开启的命令 + return cmdName in + { + source: 1, + fullscreen: 1 + } + ? 1 + : -1; + } + return oldQueryCommandState.apply(this, arguments); + }; + + if (opt.sourceEditor == "codemirror") { + me.addListener("ready", function() { + utils.loadFile( + document, + { + src: + opt.codeMirrorJsUrl || + opt.UEDITOR_HOME_URL + "third-party/codemirror/codemirror.js", + tag: "script", + type: "text/javascript", + defer: "defer" + }, + function() { + if (opt.sourceEditorFirst) { + setTimeout(function() { + me.execCommand("source"); + }, 0); + } + } + ); + utils.loadFile(document, { + tag: "link", + rel: "stylesheet", + type: "text/css", + href: + opt.codeMirrorCssUrl || + opt.UEDITOR_HOME_URL + "third-party/codemirror/codemirror.css?220922" + }); + }); + } + }; +})(); + + +// plugins/enterkey.js +///import core +///import plugins/undo.js +///commands 设置回车标签p或br +///commandsName EnterKey +///commandsTitle 设置回车标签p或br +/** + * @description 处理回车 + * @author zhanyi + */ +UE.plugins["enterkey"] = function() { + var hTag, + me = this, + tag = me.options.enterTag; + me.addListener("keyup", function(type, evt) { + var keyCode = evt.keyCode || evt.which; + if (keyCode == 13) { + var range = me.selection.getRange(), + start = range.startContainer, + doSave; + + //修正在h1-h6里边回车后不能嵌套p的问题 + if (!browser.ie) { + if (/h\d/i.test(hTag)) { + if (browser.gecko) { + var h = domUtils.findParentByTagName( + start, + [ + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "blockquote", + "caption", + "table" + ], + true + ); + if (!h) { + me.document.execCommand("formatBlock", false, "

    "); + doSave = 1; + } + } else { + //chrome remove div + if (start.nodeType == 1) { + var tmp = me.document.createTextNode(""), + div; + range.insertNode(tmp); + div = domUtils.findParentByTagName(tmp, "div", true); + if (div) { + var p = me.document.createElement("p"); + while (div.firstChild) { + p.appendChild(div.firstChild); + } + div.parentNode.insertBefore(p, div); + domUtils.remove(div); + range.setStartBefore(tmp).setCursor(); + doSave = 1; + } + domUtils.remove(tmp); + } + } + + if (me.undoManger && doSave) { + me.undoManger.save(); + } + } + //没有站位符,会出现多行的问题 + browser.opera && range.select(); + } else { + me.fireEvent("saveScene", true, true); + } + } + }); + + me.addListener("keydown", function(type, evt) { + var keyCode = evt.keyCode || evt.which; + if (keyCode == 13) { + //回车 + if (me.fireEvent("beforeenterkeydown")) { + domUtils.preventDefault(evt); + return; + } + me.fireEvent("saveScene", true, true); + hTag = ""; + + var range = me.selection.getRange(); + + if (!range.collapsed) { + //跨td不能删 + var start = range.startContainer, + end = range.endContainer, + startTd = domUtils.findParentByTagName(start, "td", true), + endTd = domUtils.findParentByTagName(end, "td", true); + if ( + (startTd && endTd && startTd !== endTd) || + (!startTd && endTd) || + (startTd && !endTd) + ) { + evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); + return; + } + } + if (tag == "p") { + if (!browser.ie) { + start = domUtils.findParentByTagName( + range.startContainer, + [ + "ol", + "ul", + "p", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "blockquote", + "caption" + ], + true + ); + + //opera下执行formatblock会在table的场景下有问题,回车在opera原生支持很好,所以暂时在opera去掉调用这个原生的command + //trace:2431 + if (!start && !browser.opera) { + me.document.execCommand("formatBlock", false, "

    "); + + if (browser.gecko) { + range = me.selection.getRange(); + start = domUtils.findParentByTagName( + range.startContainer, + "p", + true + ); + start && domUtils.removeDirtyAttr(start); + } + } else { + hTag = start.tagName; + start.tagName.toLowerCase() == "p" && + browser.gecko && + domUtils.removeDirtyAttr(start); + } + } + } else { + evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); + + if (!range.collapsed) { + range.deleteContents(); + start = range.startContainer; + if ( + start.nodeType == 1 && + (start = start.childNodes[range.startOffset]) + ) { + while (start.nodeType == 1) { + if (dtd.$empty[start.tagName]) { + range.setStartBefore(start).setCursor(); + if (me.undoManger) { + me.undoManger.save(); + } + return false; + } + if (!start.firstChild) { + var br = range.document.createElement("br"); + start.appendChild(br); + range.setStart(start, 0).setCursor(); + if (me.undoManger) { + me.undoManger.save(); + } + return false; + } + start = start.firstChild; + } + if (start === range.startContainer.childNodes[range.startOffset]) { + br = range.document.createElement("br"); + range.insertNode(br).setCursor(); + } else { + range.setStart(start, 0).setCursor(); + } + } else { + br = range.document.createElement("br"); + range.insertNode(br).setStartAfter(br).setCursor(); + } + } else { + br = range.document.createElement("br"); + range.insertNode(br); + var parent = br.parentNode; + if (parent.lastChild === br) { + br.parentNode.insertBefore(br.cloneNode(true), br); + range.setStartBefore(br); + } else { + range.setStartAfter(br); + } + range.setCursor(); + } + } + } + }); +}; + + +// plugins/keystrokes.js +/* 处理特殊键的兼容性问题 */ +UE.plugins["keystrokes"] = function() { + var me = this; + var collapsed = true; + me.addListener("keydown", function(type, evt) { + var keyCode = evt.keyCode || evt.which, + rng = me.selection.getRange(); + + //处理全选的情况 + if ( + !rng.collapsed && + !(evt.ctrlKey || evt.shiftKey || evt.altKey || evt.metaKey) && + ((keyCode >= 65 && keyCode <= 90) || + (keyCode >= 48 && keyCode <= 57) || + (keyCode >= 96 && keyCode <= 111) || + { + 13: 1, + 8: 1, + 46: 1 + }[keyCode]) + ) { + var tmpNode = rng.startContainer; + if (domUtils.isFillChar(tmpNode)) { + rng.setStartBefore(tmpNode); + } + tmpNode = rng.endContainer; + if (domUtils.isFillChar(tmpNode)) { + rng.setEndAfter(tmpNode); + } + rng.txtToElmBoundary(); + //结束边界可能放到了br的前边,要把br包含进来 + // x[xxx]
    + if (rng.endContainer && rng.endContainer.nodeType == 1) { + tmpNode = rng.endContainer.childNodes[rng.endOffset]; + if (tmpNode && domUtils.isBr(tmpNode)) { + rng.setEndAfter(tmpNode); + } + } + if (rng.startOffset == 0) { + tmpNode = rng.startContainer; + if (domUtils.isBoundaryNode(tmpNode, "firstChild")) { + tmpNode = rng.endContainer; + if ( + rng.endOffset == + (tmpNode.nodeType == 3 + ? tmpNode.nodeValue.length + : tmpNode.childNodes.length) && + domUtils.isBoundaryNode(tmpNode, "lastChild") + ) { + me.fireEvent("saveScene"); + me.body.innerHTML = "

    " + (browser.ie ? "" : "
    ") + "

    "; + rng.setStart(me.body.firstChild, 0).setCursor(false, true); + me._selectionChange(); + return; + } + } + } + } + + //处理backspace + if (keyCode == keymap.Backspace) { + rng = me.selection.getRange(); + collapsed = rng.collapsed; + if (me.fireEvent("delkeydown", evt)) { + return; + } + var start, end; + //避免按两次删除才能生效的问题 + if (rng.collapsed && rng.inFillChar()) { + start = rng.startContainer; + + if (domUtils.isFillChar(start)) { + rng.setStartBefore(start).shrinkBoundary(true).collapse(true); + domUtils.remove(start); + } else { + start.nodeValue = start.nodeValue.replace( + new RegExp("^" + domUtils.fillChar), + "" + ); + rng.startOffset--; + rng.collapse(true).select(true); + } + } + + //解决选中control元素不能删除的问题 + if ((start = rng.getClosedNode())) { + me.fireEvent("saveScene"); + rng.setStartBefore(start); + domUtils.remove(start); + rng.setCursor(); + me.fireEvent("saveScene"); + domUtils.preventDefault(evt); + return; + } + //阻止在table上的删除 + if (!browser.ie) { + start = domUtils.findParentByTagName(rng.startContainer, "table", true); + end = domUtils.findParentByTagName(rng.endContainer, "table", true); + if ((start && !end) || (!start && end) || start !== end) { + evt.preventDefault(); + return; + } + } + } + //处理tab键的逻辑 + if (keyCode == keymap.Tab) { + //不处理以下标签 + var excludeTagNameForTabKey = { + ol: 1, + ul: 1, + table: 1 + }; + //处理组件里的tab按下事件 + if (me.fireEvent("tabkeydown", evt)) { + domUtils.preventDefault(evt); + return; + } + var range = me.selection.getRange(); + me.fireEvent("saveScene"); + for ( + var i = 0, + txt = "", + tabSize = me.options.tabSize || 4, + tabNode = me.options.tabNode || " "; + i < tabSize; + i++ + ) { + txt += tabNode; + } + var span = me.document.createElement("span"); + span.innerHTML = txt + domUtils.fillChar; + if (range.collapsed) { + range.insertNode(span.cloneNode(true).firstChild).setCursor(true); + } else { + var filterFn = function(node) { + return ( + domUtils.isBlockElm(node) && + !excludeTagNameForTabKey[node.tagName.toLowerCase()] + ); + }; + //普通的情况 + start = domUtils.findParent(range.startContainer, filterFn, true); + end = domUtils.findParent(range.endContainer, filterFn, true); + if (start && end && start === end) { + range.deleteContents(); + range.insertNode(span.cloneNode(true).firstChild).setCursor(true); + } else { + var bookmark = range.createBookmark(); + range.enlarge(true); + var bookmark2 = range.createBookmark(), + current = domUtils.getNextDomNode(bookmark2.start, false, filterFn); + while ( + current && + !( + domUtils.getPosition(current, bookmark2.end) & + domUtils.POSITION_FOLLOWING + ) + ) { + current.insertBefore( + span.cloneNode(true).firstChild, + current.firstChild + ); + current = domUtils.getNextDomNode(current, false, filterFn); + } + range.moveToBookmark(bookmark2).moveToBookmark(bookmark).select(); + } + } + domUtils.preventDefault(evt); + } + //trace:1634 + //ff的del键在容器空的时候,也会删除 + if (browser.gecko && keyCode == 46) { + range = me.selection.getRange(); + if (range.collapsed) { + start = range.startContainer; + if (domUtils.isEmptyBlock(start)) { + var parent = start.parentNode; + while ( + domUtils.getChildCount(parent) == 1 && + !domUtils.isBody(parent) + ) { + start = parent; + parent = parent.parentNode; + } + if (start === parent.lastChild) evt.preventDefault(); + return; + } + } + } + + /* 修复在编辑区域快捷键 (Mac:meta+alt+I; Win:ctrl+shift+I) 打不开 chrome 控制台的问题 */ + browser.chrome && + me.on("keydown", function(type, e) { + var keyCode = e.keyCode || e.which; + if ( + ((e.metaKey && e.altKey) || (e.ctrlKey && e.shiftKey)) && + keyCode == 73 + ) { + return true; + } + }); + }); + me.addListener("keyup", function(type, evt) { + var keyCode = evt.keyCode || evt.which, + rng, + me = this; + if (keyCode == keymap.Backspace) { + if (me.fireEvent("delkeyup")) { + return; + } + rng = me.selection.getRange(); + if (rng.collapsed) { + var tmpNode, + autoClearTagName = ["h1", "h2", "h3", "h4", "h5", "h6"]; + if ( + (tmpNode = domUtils.findParentByTagName( + rng.startContainer, + autoClearTagName, + true + )) + ) { + if (domUtils.isEmptyBlock(tmpNode)) { + var pre = tmpNode.previousSibling; + if (pre && pre.nodeName != "TABLE") { + domUtils.remove(tmpNode); + rng.setStartAtLast(pre).setCursor(false, true); + return; + } else { + var next = tmpNode.nextSibling; + if (next && next.nodeName != "TABLE") { + domUtils.remove(tmpNode); + rng.setStartAtFirst(next).setCursor(false, true); + return; + } + } + } + } + //处理当删除到body时,要重新给p标签展位 + if (domUtils.isBody(rng.startContainer)) { + var tmpNode = domUtils.createElement(me.document, "p", { + innerHTML: browser.ie ? domUtils.fillChar : "
    " + }); + rng.insertNode(tmpNode).setStart(tmpNode, 0).setCursor(false, true); + } + } + + //chrome下如果删除了inline标签,浏览器会有记忆,在输入文字还是会套上刚才删除的标签,所以这里再选一次就不会了 + if ( + !collapsed && + (rng.startContainer.nodeType == 3 || + (rng.startContainer.nodeType == 1 && + domUtils.isEmptyBlock(rng.startContainer))) + ) { + if (browser.ie) { + var span = rng.document.createElement("span"); + rng.insertNode(span).setStartBefore(span).collapse(true); + rng.select(); + domUtils.remove(span); + } else { + rng.select(); + } + } + } + }); +}; + + +// plugins/fiximgclick.js +///import core +///commands 修复chrome下图片不能点击的问题,出现八个角可改变大小 +///commandsName FixImgClick +///commandsTitle 修复chrome下图片不能点击的问题,出现八个角可改变大小 +//修复chrome下图片不能点击的问题,出现八个角可改变大小 + +UE.plugins["fiximgclick"] = (function() { + var elementUpdated = false; + function Scale() { + this.editor = null; + this.resizer = null; + this.cover = null; + this.doc = document; + this.prePos = { x: 0, y: 0 }; + this.startPos = { x: 0, y: 0 }; + } + + (function() { + var rect = [ + //[left, top, width, height] + [0, 0, -1, -1], + [0, 0, 0, -1], + [0, 0, 1, -1], + [0, 0, -1, 0], + [0, 0, 1, 0], + [0, 0, -1, 1], + [0, 0, 0, 1], + [0, 0, 1, 1] + ]; + + Scale.prototype = { + init: function(editor) { + var me = this; + me.editor = editor; + me.startPos = this.prePos = { x: 0, y: 0 }; + me.dragId = -1; + + var hands = [], + cover = (me.cover = document.createElement("div")), + resizer = (me.resizer = document.createElement("div")); + + cover.id = me.editor.ui.id + "_imagescale_cover"; + cover.style.cssText = + "position:absolute;display:none;z-index:" + + me.editor.options.zIndex + + ";filter:alpha(opacity=0); opacity:0;background:#CCC;"; + domUtils.on(cover, "mousedown click", function() { + me.hide(); + }); + + for (i = 0; i < 8; i++) { + hands.push( + '' + ); + } + resizer.id = me.editor.ui.id + "_imagescale"; + resizer.className = "edui-editor-imagescale"; + resizer.innerHTML = hands.join(""); + resizer.style.cssText += + ";display:none;border:1px solid #3b77ff;z-index:" + + me.editor.options.zIndex + + ";"; + + me.editor.ui.getDom().appendChild(cover); + me.editor.ui.getDom().appendChild(resizer); + + me.initStyle(); + me.initEvents(); + }, + initStyle: function() { + utils.cssRule( + "imagescale", + ".edui-editor-imagescale{display:none;position:absolute;border:1px solid #38B2CE;cursor:hand;-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}" + + ".edui-editor-imagescale span{position:absolute;width:6px;height:6px;overflow:hidden;font-size:0px;display:block;background-color:#3C9DD0;}" + + ".edui-editor-imagescale .edui-editor-imagescale-hand0{cursor:nw-resize;top:0;margin-top:-4px;left:0;margin-left:-4px;}" + + ".edui-editor-imagescale .edui-editor-imagescale-hand1{cursor:n-resize;top:0;margin-top:-4px;left:50%;margin-left:-4px;}" + + ".edui-editor-imagescale .edui-editor-imagescale-hand2{cursor:ne-resize;top:0;margin-top:-4px;left:100%;margin-left:-3px;}" + + ".edui-editor-imagescale .edui-editor-imagescale-hand3{cursor:w-resize;top:50%;margin-top:-4px;left:0;margin-left:-4px;}" + + ".edui-editor-imagescale .edui-editor-imagescale-hand4{cursor:e-resize;top:50%;margin-top:-4px;left:100%;margin-left:-3px;}" + + ".edui-editor-imagescale .edui-editor-imagescale-hand5{cursor:sw-resize;top:100%;margin-top:-3px;left:0;margin-left:-4px;}" + + ".edui-editor-imagescale .edui-editor-imagescale-hand6{cursor:s-resize;top:100%;margin-top:-3px;left:50%;margin-left:-4px;}" + + ".edui-editor-imagescale .edui-editor-imagescale-hand7{cursor:se-resize;top:100%;margin-top:-3px;left:100%;margin-left:-3px;}" + ); + }, + initEvents: function() { + var me = this; + + me.startPos.x = me.startPos.y = 0; + me.isDraging = false; + }, + _eventHandler: function(e) { + var me = this; + switch (e.type) { + case "mousedown": + var hand = e.target || e.srcElement, + hand; + if ( + hand.className.indexOf("edui-editor-imagescale-hand") != -1 && + me.dragId == -1 + ) { + me.dragId = hand.className.slice(-1); + me.startPos.x = me.prePos.x = e.clientX; + me.startPos.y = me.prePos.y = e.clientY; + domUtils.on(me.doc, "mousemove", me.proxy(me._eventHandler, me)); + } + break; + case "mousemove": + if (me.dragId != -1) { + me.updateContainerStyle(me.dragId, { + x: e.clientX - me.prePos.x, + y: e.clientY - me.prePos.y + }); + me.prePos.x = e.clientX; + me.prePos.y = e.clientY; + elementUpdated = true; + me.updateTargetElement(); + } + break; + case "mouseup": + if (me.dragId != -1) { + me.updateContainerStyle(me.dragId, { + x: e.clientX - me.prePos.x, + y: e.clientY - me.prePos.y + }); + me.updateTargetElement(); + if (me.target.parentNode) me.attachTo(me.target); + me.dragId = -1; + } + domUtils.un(me.doc, "mousemove", me.proxy(me._eventHandler, me)); + //修复只是点击挪动点,但没有改变大小,不应该触发contentchange + if (elementUpdated) { + elementUpdated = false; + me.editor.fireEvent("contentchange"); + } + + break; + default: + break; + } + }, + updateTargetElement: function() { + var me = this; + domUtils.setStyles(me.target, { + width: me.resizer.style.width, + height: me.resizer.style.height + }); + me.target.width = parseInt(me.resizer.style.width); + me.target.height = parseInt(me.resizer.style.height); + me.attachTo(me.target); + }, + updateContainerStyle: function(dir, offset) { + var me = this, + dom = me.resizer, + tmp; + + if (rect[dir][0] != 0) { + tmp = parseInt(dom.style.left) + offset.x; + dom.style.left = me._validScaledProp("left", tmp) + "px"; + } + if (rect[dir][1] != 0) { + tmp = parseInt(dom.style.top) + offset.y; + dom.style.top = me._validScaledProp("top", tmp) + "px"; + } + if (rect[dir][2] != 0) { + tmp = dom.clientWidth + rect[dir][2] * offset.x; + dom.style.width = me._validScaledProp("width", tmp) + "px"; + } + if (rect[dir][3] != 0) { + tmp = dom.clientHeight + rect[dir][3] * offset.y; + dom.style.height = me._validScaledProp("height", tmp) + "px"; + } + }, + _validScaledProp: function(prop, value) { + var ele = this.resizer, + wrap = document; + + value = isNaN(value) ? 0 : value; + switch (prop) { + case "left": + return value < 0 + ? 0 + : value + ele.clientWidth > wrap.clientWidth + ? wrap.clientWidth - ele.clientWidth + : value; + case "top": + return value < 0 + ? 0 + : value + ele.clientHeight > wrap.clientHeight + ? wrap.clientHeight - ele.clientHeight + : value; + case "width": + return value <= 0 + ? 1 + : value + ele.offsetLeft > wrap.clientWidth + ? wrap.clientWidth - ele.offsetLeft + : value; + case "height": + return value <= 0 + ? 1 + : value + ele.offsetTop > wrap.clientHeight + ? wrap.clientHeight - ele.offsetTop + : value; + } + }, + hideCover: function() { + this.cover.style.display = "none"; + }, + showCover: function() { + var me = this, + editorPos = domUtils.getXY(me.editor.ui.getDom()), + iframePos = domUtils.getXY(me.editor.iframe); + + domUtils.setStyles(me.cover, { + width: me.editor.iframe.offsetWidth + "px", + height: me.editor.iframe.offsetHeight + "px", + top: iframePos.y - editorPos.y + "px", + left: iframePos.x - editorPos.x + "px", + position: "absolute", + display: "" + }); + }, + show: function(targetObj) { + var me = this; + me.resizer.style.display = "block"; + if (targetObj) me.attachTo(targetObj); + + domUtils.on(this.resizer, "mousedown", me.proxy(me._eventHandler, me)); + domUtils.on(me.doc, "mouseup", me.proxy(me._eventHandler, me)); + + me.showCover(); + me.editor.fireEvent("afterscaleshow", me); + me.editor.fireEvent("saveScene"); + }, + hide: function() { + var me = this; + me.hideCover(); + me.resizer.style.display = "none"; + + domUtils.un(me.resizer, "mousedown", me.proxy(me._eventHandler, me)); + domUtils.un(me.doc, "mouseup", me.proxy(me._eventHandler, me)); + me.editor.fireEvent("afterscalehide", me); + }, + proxy: function(fn, context) { + return function(e) { + return fn.apply(context || this, arguments); + }; + }, + attachTo: function(targetObj) { + var me = this, + target = (me.target = targetObj), + resizer = this.resizer, + imgPos = domUtils.getXY(target), + iframePos = domUtils.getXY(me.editor.iframe), + editorPos = domUtils.getXY(resizer.parentNode); + + domUtils.setStyles(resizer, { + width: target.width + "px", + height: target.height + "px", + left: + iframePos.x + + imgPos.x - + me.editor.document.body.scrollLeft - + editorPos.x - + parseInt(resizer.style.borderLeftWidth) + + "px", + top: + iframePos.y + + imgPos.y - + me.editor.document.body.scrollTop - + editorPos.y - + parseInt(resizer.style.borderTopWidth) + + "px" + }); + } + }; + })(); + + return function() { + var me = this, + imageScale; + + me.setOpt("imageScaleEnabled", true); + + if (!browser.ie && me.options.imageScaleEnabled) { + me.addListener("click", function(type, e) { + if(e.target.tagName!=="IMG" && e.target.tagName !== "VIDEO"){ + return; + } + var range = me.selection.getRange(), + img = range.getClosedNode(); + if(img.tagName == 'SOURCE') { + try { + img = img.parentNode + } catch(e){ + console.error(e) + } + } + if (img && (img.tagName == "IMG" || img.tagName == "VIDEO") && me.body.contentEditable != "false") { + if ( + img.getAttribute("anchorname") || + domUtils.hasClass(img, "loadingclass") || + domUtils.hasClass(img, "loaderrorclass") + ) { + return; + } + + if (!imageScale) { + imageScale = new Scale(); + imageScale.init(me); + me.ui.getDom().appendChild(imageScale.resizer); + + var _keyDownHandler = function(e) { + imageScale.hide(); + if (imageScale.target) + me.selection.getRange().selectNode(imageScale.target).select(); + }, + _mouseDownHandler = function(e) { + var ele = e.target || e.srcElement; + if ( + ele && + (ele.className === undefined || + ele.className.indexOf("edui-editor-imagescale") == -1) + ) { + _keyDownHandler(e); + } + }, + timer; + + me.addListener("afterscaleshow", function(e) { + me.addListener("beforekeydown", _keyDownHandler); + me.addListener("beforemousedown", _mouseDownHandler); + domUtils.on(document, "keydown", _keyDownHandler); + domUtils.on(document, "mousedown", _mouseDownHandler); + me.selection.getNative().removeAllRanges(); + }); + me.addListener("afterscalehide", function(e) { + me.removeListener("beforekeydown", _keyDownHandler); + me.removeListener("beforemousedown", _mouseDownHandler); + domUtils.un(document, "keydown", _keyDownHandler); + domUtils.un(document, "mousedown", _mouseDownHandler); + var target = imageScale.target; + if (target.parentNode) { + me.selection.getRange().selectNode(target).select(); + } + }); + //TODO 有iframe的情况,mousedown不能往下传。。 + domUtils.on(imageScale.resizer, "mousedown", function(e) { + me.selection.getNative().removeAllRanges(); + var ele = e.target || e.srcElement; + if ( + ele && + ele.className.indexOf("edui-editor-imagescale-hand") == -1 + ) { + timer = setTimeout(function() { + imageScale.hide(); + if (imageScale.target) + me.selection.getRange().selectNode(ele).select(); + }, 200); + } + }); + domUtils.on(imageScale.resizer, "mouseup", function(e) { + var ele = e.target || e.srcElement; + if ( + ele && + ele.className.indexOf("edui-editor-imagescale-hand") == -1 + ) { + clearTimeout(timer); + } + }); + } + imageScale.show(img); + } else { + if (imageScale && imageScale.resizer.style.display != "none") + imageScale.hide(); + } + }); + } + + if (browser.webkit) { + me.addListener("click", function(type, e) { + if ((e.target.tagName == "IMG" || e.target.tagName == "VIDEO" ) && me.body.contentEditable != "false") { + var range = new dom.Range(me.document); + range.selectNode(e.target).select(); + } + }); + } + }; +})(); + + +// plugins/autolink.js +///import core +///commands 为非ie浏览器自动添加a标签 +///commandsName AutoLink +///commandsTitle 自动增加链接 +/** + * @description 为非ie浏览器自动添加a标签 + * @author zhanyi + */ + +UE.plugin.register( + "autolink", + function() { + var cont = 0; + + return !browser.ie + ? { + bindEvents: { + reset: function() { + cont = 0; + }, + keydown: function(type, evt) { + var me = this; + var keyCode = evt.keyCode || evt.which; + + if (keyCode == 32 || keyCode == 13) { + var sel = me.selection.getNative(), + range = sel.getRangeAt(0).cloneRange(), + offset, + charCode; + + var start = range.startContainer; + while (start.nodeType == 1 && range.startOffset > 0) { + start = + range.startContainer.childNodes[range.startOffset - 1]; + if (!start) { + break; + } + range.setStart( + start, + start.nodeType == 1 + ? start.childNodes.length + : start.nodeValue.length + ); + range.collapse(true); + start = range.startContainer; + } + + do { + if (range.startOffset == 0) { + start = range.startContainer.previousSibling; + + while (start && start.nodeType == 1) { + start = start.lastChild; + } + if (!start || domUtils.isFillChar(start)) { + break; + } + offset = start.nodeValue.length; + } else { + start = range.startContainer; + offset = range.startOffset; + } + range.setStart(start, offset - 1); + charCode = range.toString().charCodeAt(0); + } while (charCode != 160 && charCode != 32); + + if ( + range + .toString() + .replace(new RegExp(domUtils.fillChar, "g"), "") + .match(/(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i) + ) { + while (range.toString().length) { + if ( + /^(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i.test( + range.toString() + ) + ) { + break; + } + try { + range.setStart( + range.startContainer, + range.startOffset + 1 + ); + } catch (e) { + //trace:2121 + var start = range.startContainer; + while (!(next = start.nextSibling)) { + if (domUtils.isBody(start)) { + return; + } + start = start.parentNode; + } + range.setStart(next, 0); + } + } + //range的开始边界已经在a标签里的不再处理 + if ( + domUtils.findParentByTagName( + range.startContainer, + "a", + true + ) + ) { + return; + } + var a = me.document.createElement("a"), + text = me.document.createTextNode(" "), + href; + + me.undoManger && me.undoManger.save(); + a.appendChild(range.extractContents()); + a.href = a.innerHTML = a.innerHTML.replace(/<[^>]+>/g, ""); + href = a + .getAttribute("href") + .replace(new RegExp(domUtils.fillChar, "g"), ""); + href = /^(?:https?:\/\/)/gi.test(href) + ? href + : "http://" + href; + a.setAttribute("_src", utils.html(href)); + a.href = utils.html(href); + + range.insertNode(a); + a.parentNode.insertBefore(text, a.nextSibling); + range.setStart(text, 0); + range.collapse(true); + sel.removeAllRanges(); + sel.addRange(range); + me.undoManger && me.undoManger.save(); + } + } + } + } + } + : {}; + }, + function() { + var keyCodes = { + 37: 1, + 38: 1, + 39: 1, + 40: 1, + 13: 1, + 32: 1 + }; + function checkIsCludeLink(node) { + if (node.nodeType == 3) { + return null; + } + if (node.nodeName == "A") { + return node; + } + var lastChild = node.lastChild; + + while (lastChild) { + if (lastChild.nodeName == "A") { + return lastChild; + } + if (lastChild.nodeType == 3) { + if (domUtils.isWhitespace(lastChild)) { + lastChild = lastChild.previousSibling; + continue; + } + return null; + } + lastChild = lastChild.lastChild; + } + } + browser.ie && + this.addListener("keyup", function(cmd, evt) { + var me = this, + keyCode = evt.keyCode; + if (keyCodes[keyCode]) { + var rng = me.selection.getRange(); + var start = rng.startContainer; + + if (keyCode == 13) { + while ( + start && + !domUtils.isBody(start) && + !domUtils.isBlockElm(start) + ) { + start = start.parentNode; + } + if (start && !domUtils.isBody(start) && start.nodeName == "P") { + var pre = start.previousSibling; + if (pre && pre.nodeType == 1) { + var pre = checkIsCludeLink(pre); + if (pre && !pre.getAttribute("_href")) { + domUtils.remove(pre, true); + } + } + } + } else if (keyCode == 32) { + if (start.nodeType == 3 && /^\s$/.test(start.nodeValue)) { + start = start.previousSibling; + if ( + start && + start.nodeName == "A" && + !start.getAttribute("_href") + ) { + domUtils.remove(start, true); + } + } + } else { + start = domUtils.findParentByTagName(start, "a", true); + if (start && !start.getAttribute("_href")) { + var bk = rng.createBookmark(); + + domUtils.remove(start, true); + rng.moveToBookmark(bk).select(true); + } + } + } + }); + } +); + + +// plugins/autoheight.js +///import core +///commands 当输入内容超过编辑器高度时,编辑器自动增高 +///commandsName AutoHeight,autoHeightEnabled +///commandsTitle 自动增高 +/** + * @description 自动伸展 + * @author zhanyi + */ +UE.plugins["autoheight"] = function() { + var me = this; + //提供开关,就算加载也可以关闭 + me.autoHeightEnabled = me.options.autoHeightEnabled !== false; + if (!me.autoHeightEnabled) { + return; + } + + var bakOverflow, + lastHeight = 0, + options = me.options, + currentHeight, + timer; + + function adjustHeight() { + var me = this; + clearTimeout(timer); + if (isFullscreen) return; + if ( + !me.queryCommandState || + (me.queryCommandState && me.queryCommandState("source") != 1) + ) { + timer = setTimeout(function() { + var node = me.body.lastChild; + while (node && node.nodeType != 1) { + node = node.previousSibling; + } + if (node && node.nodeType == 1) { + node.style.clear = "both"; + currentHeight = Math.max( + domUtils.getXY(node).y + node.offsetHeight + 25, + Math.max(options.minFrameHeight, options.initialFrameHeight) + ); + if (currentHeight != lastHeight) { + if (currentHeight !== parseInt(me.iframe.parentNode.style.height)) { + me.iframe.parentNode.style.height = currentHeight + "px"; + } + me.body.style.height = currentHeight + "px"; + lastHeight = currentHeight; + } + domUtils.removeStyle(node, "clear"); + } + }, 50); + } + } + var isFullscreen; + me.addListener("fullscreenchanged", function(cmd, f) { + isFullscreen = f; + }); + me.addListener("destroy", function() { + domUtils.un(me.window, "scroll", fixedScrollTop); + me.removeListener( + "contentchange afterinserthtml keyup mouseup", + adjustHeight + ); + }); + me.enableAutoHeight = function() { + var me = this; + if (!me.autoHeightEnabled) { + return; + } + var doc = me.document; + me.autoHeightEnabled = true; + bakOverflow = doc.body.style.overflowY; + doc.body.style.overflowY = "hidden"; + me.addListener("contentchange afterinserthtml keyup mouseup", adjustHeight); + //ff不给事件算得不对 + + setTimeout(function() { + adjustHeight.call(me); + }, browser.gecko ? 100 : 0); + me.fireEvent("autoheightchanged", me.autoHeightEnabled); + }; + me.disableAutoHeight = function() { + me.body.style.overflowY = bakOverflow || ""; + + me.removeListener("contentchange", adjustHeight); + me.removeListener("keyup", adjustHeight); + me.removeListener("mouseup", adjustHeight); + me.autoHeightEnabled = false; + me.fireEvent("autoheightchanged", me.autoHeightEnabled); + }; + + me.on("setHeight", function() { + me.disableAutoHeight(); + }); + me.addListener("ready", function() { + me.enableAutoHeight(); + //trace:1764 + var timer; + domUtils.on( + browser.ie ? me.body : me.document, + browser.webkit ? "dragover" : "drop", + function() { + clearTimeout(timer); + timer = setTimeout(function() { + //trace:3681 + adjustHeight.call(me); + }, 100); + } + ); + //修复内容过多时,回到顶部,顶部内容被工具栏遮挡问题 + domUtils.on(me.window, "scroll", fixedScrollTop); + }); + + var lastScrollY; + + function fixedScrollTop() { + if (!me.window) return; + if (lastScrollY === null) { + lastScrollY = me.window.scrollY; + } else if (me.window.scrollY == 0 && lastScrollY != 0) { + me.window.scrollTo(0, 0); + lastScrollY = null; + } + } +}; + + +// plugins/autofloat.js +///import core +///commands 悬浮工具栏 +///commandsName AutoFloat,autoFloatEnabled +///commandsTitle 悬浮工具栏 +/** + * modified by chengchao01 + * 注意: 引入此功能后,在IE6下会将body的背景图片覆盖掉! + */ +UE.plugins["autofloat"] = function() { + var me = this, + lang = me.getLang(); + me.setOpt({ + topOffset: 0 + }); + var optsAutoFloatEnabled = me.options.autoFloatEnabled !== false, + topOffset = me.options.topOffset; + + //如果不固定toolbar的位置,则直接退出 + if (!optsAutoFloatEnabled) { + return; + } + var uiUtils = UE.ui.uiUtils, + LteIE6 = browser.ie && browser.version <= 6, + quirks = browser.quirks; + + function checkHasUI() { + if (!UE.ui) { + alert(lang.autofloatMsg); + return 0; + } + return 1; + } + function fixIE6FixedPos() { + var docStyle = document.body.style; + docStyle.backgroundImage = 'url("about:blank")'; + docStyle.backgroundAttachment = "fixed"; + } + var bakCssText, + placeHolder = document.createElement("div"), + toolbarBox, + orgTop, + getPosition, + flag = true; //ie7模式下需要偏移 + function setFloating() { + var toobarBoxPos = domUtils.getXY(toolbarBox), + origalFloat = domUtils.getComputedStyle(toolbarBox, "position"), + origalLeft = domUtils.getComputedStyle(toolbarBox, "left"); + toolbarBox.style.width = toolbarBox.offsetWidth + "px"; + toolbarBox.style.zIndex = me.options.zIndex * 1 + 1; + toolbarBox.parentNode.insertBefore(placeHolder, toolbarBox); + if (LteIE6 || (quirks && browser.ie)) { + if (toolbarBox.style.position != "absolute") { + toolbarBox.style.position = "absolute"; + } + toolbarBox.style.top = + (document.body.scrollTop || document.documentElement.scrollTop) - + orgTop + + topOffset + + "px"; + } else { + if (browser.ie7Compat && flag) { + flag = false; + toolbarBox.style.left = + domUtils.getXY(toolbarBox).x - + document.documentElement.getBoundingClientRect().left + + 2 + + "px"; + } + if (toolbarBox.style.position != "fixed") { + toolbarBox.style.position = "fixed"; + toolbarBox.style.top = topOffset + "px"; + (origalFloat == "absolute" || origalFloat == "relative") && + parseFloat(origalLeft) && + (toolbarBox.style.left = toobarBoxPos.x + "px"); + } + } + } + function unsetFloating() { + flag = true; + if (placeHolder.parentNode) { + placeHolder.parentNode.removeChild(placeHolder); + } + + toolbarBox.style.cssText = bakCssText; + } + + me.unsetFloating = unsetFloating; + + function updateFloating() { + var rect3 = getPosition(me.container); + var offset = me.options.toolbarTopOffset || 0; + if (rect3.top < 0 && rect3.bottom - toolbarBox.offsetHeight > offset) { + setFloating(); + } else { + unsetFloating(); + } + } + var defer_updateFloating = utils.defer( + function() { + updateFloating(); + }, + browser.ie ? 200 : 100, + true + ); + + me.addListener("destroy", function() { + domUtils.un(window, ["scroll", "resize"], updateFloating); + me.removeListener("keydown", defer_updateFloating); + }); + + me.addListener("ready", function() { + if (checkHasUI(me)) { + //加载了ui组件,但在new时,没有加载ui,导致编辑器实例上没有ui类,所以这里做判断 + if (!me.ui) { + return; + } + getPosition = uiUtils.getClientRect; + toolbarBox = me.ui.getDom("toolbarbox"); + orgTop = getPosition(toolbarBox).top; + bakCssText = toolbarBox.style.cssText; + placeHolder.style.height = toolbarBox.offsetHeight + "px"; + if (LteIE6) { + fixIE6FixedPos(); + } + domUtils.on(window, ["scroll", "resize"], updateFloating); + me.addListener("keydown", defer_updateFloating); + + me.addListener("beforefullscreenchange", function(t, enabled) { + if (enabled) { + unsetFloating(); + } + }); + me.addListener("fullscreenchanged", function(t, enabled) { + if (!enabled) { + updateFloating(); + } + }); + me.addListener("sourcemodechanged", function(t, enabled) { + setTimeout(function() { + updateFloating(); + }, 0); + }); + me.addListener("clearDoc", function() { + setTimeout(function() { + updateFloating(); + }, 0); + }); + } + }); +}; + + +// plugins/video.js +/** + * video插件, 为UEditor提供视频插入支持 + * @file + * @since 1.2.6.1 + */ + +UE.plugins["video"] = function() { + var me = this; + + /** + * 创建插入视频字符窜 + * @param url 视频地址 + * @param width 视频宽度 + * @param height 视频高度 + * @param align 视频对齐 + * @param toEmbed 是否以flash代替显示 + * @param addParagraph 是否需要添加P 标签 + */ + function creatInsertStr(url, width, height, id, align, classname, type) { + var str; + switch (type) { + case 'iframe': + str = ''; + + wrapper.className = "edui-" + me.options.theme; + wrapper.id = me.ui.id + "_iframeupload"; + btnIframeBody.style.cssText = btnStyle; + btnIframeBody.style.width = w + "px"; + btnIframeBody.style.height = h + "px"; + btnIframeBody.appendChild(wrapper); + + if (btnIframeBody.parentNode) { + btnIframeBody.parentNode.style.width = w + "px"; + btnIframeBody.parentNode.style.height = w + "px"; + } + + var form = btnIframeDoc.getElementById("edui_form_" + timestrap); + var input = btnIframeDoc.getElementById("edui_input_" + timestrap); + var iframe = btnIframeDoc.getElementById("edui_iframe_" + timestrap); + + domUtils.on(input, "change", function() { + if (!input.value) return; + var loadingId = "loading_" + (+new Date()).toString(36); + var params = + utils.serializeParam(me.queryCommandValue("serverparam")) || ""; + + var imageActionUrl = me.getActionUrl(me.getOpt("imageActionName")); + var allowFiles = me.getOpt("imageAllowFiles"); + + me.focus(); + me.execCommand( + "inserthtml", + '' + ); + + function callback() { + try { + var link, + json, + loader, + body = (iframe.contentDocument || iframe.contentWindow.document) + .body, + result = body.innerText || body.textContent || ""; + json = new Function("return " + result)(); + link = me.options.imageUrlPrefix + json.url; + if (json.state == "SUCCESS" && json.url) { + loader = me.document.getElementById(loadingId); + domUtils.removeClasses(loader, "loadingclass"); + loader.setAttribute("src", link); + loader.setAttribute("_src", link); + loader.setAttribute("alt", json.original || ""); + loader.removeAttribute("id"); + me.fireEvent("contentchange"); + } else { + showErrorLoader && showErrorLoader(json.state); + } + } catch (er) { + showErrorLoader && + showErrorLoader(me.getLang("simpleupload.loadError")); + } + form.reset(); + domUtils.un(iframe, "load", callback); + } + function showErrorLoader(title) { + if (loadingId) { + var loader = me.document.getElementById(loadingId); + loader && domUtils.remove(loader); + me.fireEvent("showmessage", { + id: loadingId, + content: title, + type: "error", + timeout: 4000 + }); + } + } + + /* 判断后端配置是否没有加载成功 */ + if (!me.getOpt("imageActionName")) { + errorHandler(me.getLang("autoupload.errorLoadConfig")); + return; + } + // 判断文件格式是否错误 + var filename = input.value, + fileext = filename ? filename.substr(filename.lastIndexOf(".")) : ""; + if ( + !fileext || + (allowFiles && + (allowFiles.join("") + ".").indexOf(fileext.toLowerCase() + ".") == + -1) + ) { + showErrorLoader(me.getLang("simpleupload.exceedTypeError")); + return; + } + + domUtils.on(iframe, "load", callback); + form.action = utils.formatUrl( + imageActionUrl + + (imageActionUrl.indexOf("?") == -1 ? "?" : "&") + + params + ); + form.submit(); + }); + + var stateTimer; + me.addListener("selectionchange", function() { + clearTimeout(stateTimer); + stateTimer = setTimeout(function() { + var state = me.queryCommandState("simpleupload"); + if (state == -1) { + input.disabled = "disabled"; + } else { + input.disabled = false; + } + }, 400); + }); + isLoaded = true; + }); + + btnIframe.style.cssText = btnStyle; + containerBtn.appendChild(btnIframe); + } + + return { + bindEvents: { + ready: function() { + //设置loading的样式 + utils.cssRule( + "loading", + ".loadingclass{display:inline-block;cursor:default;background: url('" + + this.options.themePath + + this.options.theme + + "/images/loading.gif') no-repeat center center transparent;border-radius:3px;outline:1px solid #EEE;margin-right:1px;height:22px;width:22px;}\n" + + ".loaderrorclass{display:inline-block;cursor:default;background: url('" + + this.options.themePath + + this.options.theme + + "/images/loaderror.png') no-repeat center center transparent;border-radius:3px;outline:1px solid #EEE;margin-right:1px;height:22px;width:22px;" + + "}", + this.document + ); + }, + /* 初始化简单上传按钮 */ + simpleuploadbtnready: function(type, container) { + containerBtn = container; + me.afterConfigReady(initUploadBtn); + } + }, + outputRule: function(root) { + utils.each(root.getNodesByTagName("img"), function(n) { + if (/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr("class"))) { + n.parentNode.removeChild(n); + } + }); + }, + commands: { + simpleupload: { + queryCommandState: function() { + return isLoaded ? 0 : -1; + } + } + } + }; +}); + + +// plugins/serverparam.js +/** + * 服务器提交的额外参数列表设置插件 + * @file + * @since 1.2.6.1 + */ +UE.plugin.register("serverparam", function() { + var me = this, + serverParam = {}; + + return { + commands: { + /** + * 修改服务器提交的额外参数列表,清除所有项 + * @command serverparam + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand('serverparam'); + * editor.queryCommandValue('serverparam'); //返回空 + * ``` + */ + /** + * 修改服务器提交的额外参数列表,删除指定项 + * @command serverparam + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } key 要清除的属性 + * @example + * ```javascript + * editor.execCommand('serverparam', 'name'); //删除属性name + * ``` + */ + /** + * 修改服务器提交的额外参数列表,使用键值添加项 + * @command serverparam + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } key 要添加的属性 + * @param { String } value 要添加属性的值 + * @example + * ```javascript + * editor.execCommand('serverparam', 'name', 'hello'); + * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'} + * ``` + */ + /** + * 修改服务器提交的额外参数列表,传入键值对对象添加多项 + * @command serverparam + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Object } key 传入的键值对对象 + * @example + * ```javascript + * editor.execCommand('serverparam', {'name': 'hello'}); + * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'} + * ``` + */ + /** + * 修改服务器提交的额外参数列表,使用自定义函数添加多项 + * @command serverparam + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Function } key 自定义获取参数的函数 + * @example + * ```javascript + * editor.execCommand('serverparam', function(editor){ + * return {'key': 'value'}; + * }); + * editor.queryCommandValue('serverparam'); //返回对象 {'key': 'value'} + * ``` + */ + + /** + * 获取服务器提交的额外参数列表 + * @command serverparam + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.queryCommandValue( 'serverparam' ); //返回对象 {'key': 'value'} + * ``` + */ + serverparam: { + execCommand: function(cmd, key, value) { + if (key === undefined || key === null) { + //不传参数,清空列表 + serverParam = {}; + } else if (utils.isString(key)) { + //传入键值 + if (value === undefined || value === null) { + delete serverParam[key]; + } else { + serverParam[key] = value; + } + } else if (utils.isObject(key)) { + //传入对象,覆盖列表项 + utils.extend(serverParam, key, false); + } else if (utils.isFunction(key)) { + //传入函数,添加列表项 + utils.extend(serverParam, key(), false); + } + }, + queryCommandValue: function() { + return serverParam || {}; + } + } + } + }; +}); + + +// plugins/insertfile.js +/** + * 插入附件 + */ +UE.plugin.register("insertfile", function() { + var me = this; + + function getFileIcon(url) { + var ext = url.substr(url.lastIndexOf(".") + 1).toLowerCase(), + maps = { + rar: "icon_rar.gif", + zip: "icon_rar.gif", + tar: "icon_rar.gif", + gz: "icon_rar.gif", + bz2: "icon_rar.gif", + doc: "icon_doc.gif", + docx: "icon_doc.gif", + pdf: "icon_pdf.gif", + mp3: "icon_mp3.gif", + xls: "icon_xls.gif", + chm: "icon_chm.gif", + ppt: "icon_ppt.gif", + pptx: "icon_ppt.gif", + avi: "icon_mv.gif", + rmvb: "icon_mv.gif", + wmv: "icon_mv.gif", + flv: "icon_mv.gif", + swf: "icon_mv.gif", + rm: "icon_mv.gif", + exe: "icon_exe.gif", + psd: "icon_psd.gif", + txt: "icon_txt.gif", + jpg: "icon_jpg.gif", + png: "icon_jpg.gif", + jpeg: "icon_jpg.gif", + gif: "icon_jpg.gif", + ico: "icon_jpg.gif", + bmp: "icon_jpg.gif" + }; + return maps[ext] ? maps[ext] : maps["txt"]; + } + + return { + commands: { + insertfile: { + execCommand: function(command, filelist) { + filelist = utils.isArray(filelist) ? filelist : [filelist]; + + if (me.fireEvent("beforeinsertfile", filelist) === true) { + return; + } + + var i, + item, + icon, + title, + html = "", + URL = me.getOpt("UEDITOR_HOME_URL"), + iconDir = + URL + + (URL.substr(URL.length - 1) == "/" ? "" : "/") + + "dialogs/attachment/fileTypeImages/"; + for (i = 0; i < filelist.length; i++) { + item = filelist[i]; + icon = iconDir + getFileIcon(item.url); + title = + item.title || item.url.substr(item.url.lastIndexOf("/") + 1); + html += + '

    ' + + '' + + '' + + title + + "" + + "

    "; + } + me.execCommand("insertHtml", html); + + me.fireEvent("afterinsertfile", filelist); + } + } + } + }; +}); + + +// ui/ui.js +var baidu = baidu || {}; +baidu.editor = baidu.editor || {}; +UE.ui = baidu.editor.ui = {}; + + +// ui/uiutils.js +(function() { + var browser = baidu.editor.browser, + domUtils = baidu.editor.dom.domUtils; + + var magic = "$EDITORUI"; + var root = (window[magic] = {}); + var uidMagic = "ID" + magic; + var uidCount = 0; + + var uiUtils = (baidu.editor.ui.uiUtils = { + uid: function(obj) { + return obj ? obj[uidMagic] || (obj[uidMagic] = ++uidCount) : ++uidCount; + }, + hook: function(fn, callback) { + var dg; + if (fn && fn._callbacks) { + dg = fn; + } else { + dg = function() { + var q; + if (fn) { + q = fn.apply(this, arguments); + } + var callbacks = dg._callbacks; + var k = callbacks.length; + while (k--) { + var r = callbacks[k].apply(this, arguments); + if (q === undefined) { + q = r; + } + } + return q; + }; + dg._callbacks = []; + } + dg._callbacks.push(callback); + return dg; + }, + createElementByHtml: function(html) { + var el = document.createElement("div"); + el.innerHTML = html; + el = el.firstChild; + el.parentNode.removeChild(el); + return el; + }, + getViewportElement: function() { + return browser.ie && browser.quirks + ? document.body + : document.documentElement; + }, + getClientRect: function(element) { + var bcr; + //trace IE6下在控制编辑器显隐时可能会报错,catch一下 + try { + bcr = element.getBoundingClientRect(); + } catch (e) { + bcr = { left: 0, top: 0, height: 0, width: 0 }; + } + var rect = { + left: Math.round(bcr.left), + top: Math.round(bcr.top), + height: Math.round(bcr.bottom - bcr.top), + width: Math.round(bcr.right - bcr.left) + }; + var doc; + while ( + (doc = element.ownerDocument) !== document && + (element = domUtils.getWindow(doc).frameElement) + ) { + bcr = element.getBoundingClientRect(); + rect.left += bcr.left; + rect.top += bcr.top; + } + rect.bottom = rect.top + rect.height; + rect.right = rect.left + rect.width; + return rect; + }, + getViewportRect: function() { + var viewportEl = uiUtils.getViewportElement(); + var width = (window.innerWidth || viewportEl.clientWidth) | 0; + var height = (window.innerHeight || viewportEl.clientHeight) | 0; + return { + left: 0, + top: 0, + height: height, + width: width, + bottom: height, + right: width + }; + }, + setViewportOffset: function(element, offset) { + var rect; + var fixedLayer = uiUtils.getFixedLayer(); + if (element.parentNode === fixedLayer) { + element.style.left = offset.left + "px"; + element.style.top = offset.top + "px"; + } else { + domUtils.setViewportOffset(element, offset); + } + }, + getEventOffset: function(evt) { + var el = evt.target || evt.srcElement; + var rect = uiUtils.getClientRect(el); + var offset = uiUtils.getViewportOffsetByEvent(evt); + return { + left: offset.left - rect.left, + top: offset.top - rect.top + }; + }, + getViewportOffsetByEvent: function(evt) { + var el = evt.target || evt.srcElement; + var frameEl = domUtils.getWindow(el).frameElement; + var offset = { + left: evt.clientX, + top: evt.clientY + }; + if (frameEl && el.ownerDocument !== document) { + var rect = uiUtils.getClientRect(frameEl); + offset.left += rect.left; + offset.top += rect.top; + } + return offset; + }, + setGlobal: function(id, obj) { + root[id] = obj; + return magic + '["' + id + '"]'; + }, + unsetGlobal: function(id) { + delete root[id]; + }, + copyAttributes: function(tgt, src) { + var attributes = src.attributes; + var k = attributes.length; + while (k--) { + var attrNode = attributes[k]; + if ( + attrNode.nodeName != "style" && + attrNode.nodeName != "class" && + (!browser.ie || attrNode.specified) + ) { + tgt.setAttribute(attrNode.nodeName, attrNode.nodeValue); + } + } + if (src.className) { + domUtils.addClass(tgt, src.className); + } + if (src.style.cssText) { + tgt.style.cssText += ";" + src.style.cssText; + } + }, + removeStyle: function(el, styleName) { + if (el.style.removeProperty) { + el.style.removeProperty(styleName); + } else if (el.style.removeAttribute) { + el.style.removeAttribute(styleName); + } else throw ""; + }, + contains: function(elA, elB) { + return ( + elA && + elB && + (elA === elB + ? false + : elA.contains + ? elA.contains(elB) + : elA.compareDocumentPosition(elB) & 16) + ); + }, + startDrag: function(evt, callbacks, doc) { + var doc = doc || document; + var startX = evt.clientX; + var startY = evt.clientY; + function handleMouseMove(evt) { + var x = evt.clientX - startX; + var y = evt.clientY - startY; + callbacks.ondragmove(x, y, evt); + if (evt.stopPropagation) { + evt.stopPropagation(); + } else { + evt.cancelBubble = true; + } + } + if (doc.addEventListener) { + function handleMouseUp(evt) { + doc.removeEventListener("mousemove", handleMouseMove, true); + doc.removeEventListener("mouseup", handleMouseUp, true); + window.removeEventListener("mouseup", handleMouseUp, true); + callbacks.ondragstop(); + } + doc.addEventListener("mousemove", handleMouseMove, true); + doc.addEventListener("mouseup", handleMouseUp, true); + window.addEventListener("mouseup", handleMouseUp, true); + + evt.preventDefault(); + } else { + var elm = evt.srcElement; + elm.setCapture(); + function releaseCaptrue() { + elm.releaseCapture(); + elm.detachEvent("onmousemove", handleMouseMove); + elm.detachEvent("onmouseup", releaseCaptrue); + elm.detachEvent("onlosecaptrue", releaseCaptrue); + callbacks.ondragstop(); + } + elm.attachEvent("onmousemove", handleMouseMove); + elm.attachEvent("onmouseup", releaseCaptrue); + elm.attachEvent("onlosecaptrue", releaseCaptrue); + evt.returnValue = false; + } + callbacks.ondragstart(); + }, + getFixedLayer: function() { + var layer = document.getElementById("edui_fixedlayer"); + if (layer == null) { + layer = document.createElement("div"); + layer.id = "edui_fixedlayer"; + document.body.appendChild(layer); + if (browser.ie && browser.version <= 8) { + layer.style.position = "absolute"; + bindFixedLayer(); + setTimeout(updateFixedOffset); + } else { + layer.style.position = "fixed"; + } + layer.style.left = "0"; + layer.style.top = "0"; + layer.style.width = "0"; + layer.style.height = "0"; + layer.style.margin = "0"; + } + return layer; + }, + makeUnselectable: function(element) { + if (browser.opera || (browser.ie && browser.version < 9)) { + element.unselectable = "on"; + if (element.hasChildNodes()) { + for (var i = 0; i < element.childNodes.length; i++) { + if (element.childNodes[i].nodeType == 1) { + uiUtils.makeUnselectable(element.childNodes[i]); + } + } + } + } else { + if (element.style.MozUserSelect !== undefined) { + element.style.MozUserSelect = "none"; + } else if (element.style.WebkitUserSelect !== undefined) { + element.style.WebkitUserSelect = "none"; + } else if (element.style.KhtmlUserSelect !== undefined) { + element.style.KhtmlUserSelect = "none"; + } + } + } + }); + function updateFixedOffset() { + var layer = document.getElementById("edui_fixedlayer"); + uiUtils.setViewportOffset(layer, { + left: 0, + top: 0 + }); + // layer.style.display = 'none'; + // layer.style.display = 'block'; + + //#trace: 1354 + // setTimeout(updateFixedOffset); + } + function bindFixedLayer(adjOffset) { + domUtils.on(window, "scroll", updateFixedOffset); + domUtils.on( + window, + "resize", + baidu.editor.utils.defer(updateFixedOffset, 0, true) + ); + } +})(); + + +// ui/uibase.js +(function() { + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + EventBase = baidu.editor.EventBase, + UIBase = (baidu.editor.ui.UIBase = function() {}); + + UIBase.prototype = { + className: "", + uiName: "", + initOptions: function(options) { + var me = this; + for (var k in options) { + me[k] = options[k]; + } + this.id = this.id || "edui" + uiUtils.uid(); + }, + initUIBase: function() { + this._globalKey = utils.unhtml(uiUtils.setGlobal(this.id, this)); + }, + render: function(holder) { + var html = this.renderHtml(); + var el = uiUtils.createElementByHtml(html); + + //by xuheng 给每个node添加class + var list = domUtils.getElementsByTagName(el, "*"); + var theme = "edui-" + (this.theme || this.editor.options.theme); + var layer = document.getElementById("edui_fixedlayer"); + for (var i = 0, node; (node = list[i++]); ) { + domUtils.addClass(node, theme); + } + domUtils.addClass(el, theme); + if (layer) { + layer.className = ""; + domUtils.addClass(layer, theme); + } + + var seatEl = this.getDom(); + if (seatEl != null) { + seatEl.parentNode.replaceChild(el, seatEl); + uiUtils.copyAttributes(el, seatEl); + } else { + if (typeof holder == "string") { + holder = document.getElementById(holder); + } + holder = holder || uiUtils.getFixedLayer(); + // console.log('Uibase.render',holder,el); + domUtils.addClass(holder, theme); + holder.appendChild(el); + } + this.postRender(); + }, + getDom: function(name) { + if (!name) { + return document.getElementById(this.id); + } else { + return document.getElementById(this.id + "_" + name); + } + }, + postRender: function() { + this.fireEvent("postrender"); + }, + getHtmlTpl: function() { + return ""; + }, + formatHtml: function(tpl) { + var prefix = "edui-" + this.uiName; + return tpl + .replace(/##/g, this.id) + .replace(/%%-/g, this.uiName ? prefix + "-" : "") + .replace(/%%/g, (this.uiName ? prefix : "") + " " + this.className) + .replace(/\$\$/g, this._globalKey); + }, + renderHtml: function() { + return this.formatHtml(this.getHtmlTpl()); + }, + dispose: function() { + var box = this.getDom(); + if (box) baidu.editor.dom.domUtils.remove(box); + uiUtils.unsetGlobal(this.id); + } + }; + utils.inherits(UIBase, EventBase); +})(); + + +// ui/separator.js +(function() { + var utils = baidu.editor.utils, + UIBase = baidu.editor.ui.UIBase, + Separator = (baidu.editor.ui.Separator = function(options) { + this.initOptions(options); + this.initSeparator(); + }); + Separator.prototype = { + uiName: "separator", + initSeparator: function() { + this.initUIBase(); + }, + getHtmlTpl: function() { + return '
    '; + } + }; + utils.inherits(Separator, UIBase); +})(); + + +// ui/mask.js +///import core +///import uicore +(function() { + var utils = baidu.editor.utils, + domUtils = baidu.editor.dom.domUtils, + UIBase = baidu.editor.ui.UIBase, + uiUtils = baidu.editor.ui.uiUtils; + + var Mask = (baidu.editor.ui.Mask = function(options) { + this.initOptions(options); + this.initUIBase(); + }); + Mask.prototype = { + getHtmlTpl: function() { + return '
    '; + }, + postRender: function() { + var me = this; + domUtils.on(window, "resize", function() { + setTimeout(function() { + if (!me.isHidden()) { + me._fill(); + } + }); + }); + }, + show: function(zIndex) { + this._fill(); + this.getDom().style.display = ""; + this.getDom().style.zIndex = zIndex; + }, + hide: function() { + this.getDom().style.display = "none"; + this.getDom().style.zIndex = ""; + }, + isHidden: function() { + return this.getDom().style.display == "none"; + }, + _onMouseDown: function() { + return false; + }, + _onClick: function(e, target) { + this.fireEvent("click", e, target); + }, + _fill: function() { + var el = this.getDom(); + var vpRect = uiUtils.getViewportRect(); + el.style.width = vpRect.width + "px"; + el.style.height = vpRect.height + "px"; + } + }; + utils.inherits(Mask, UIBase); +})(); + + +// ui/popup.js +///import core +///import uicore +(function() { + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + domUtils = baidu.editor.dom.domUtils, + UIBase = baidu.editor.ui.UIBase, + Popup = (baidu.editor.ui.Popup = function(options) { + this.initOptions(options); + this.initPopup(); + }); + + var allPopups = []; + function closeAllPopup(evt, el) { + for (var i = 0; i < allPopups.length; i++) { + var pop = allPopups[i]; + if (!pop.isHidden()) { + if (pop.queryAutoHide(el) !== false) { + if ( + evt && + /scroll/gi.test(evt.type) && + pop.className == "edui-wordpastepop" + ) + return; + pop.hide(); + } + } + } + + if (allPopups.length) pop.editor.fireEvent("afterhidepop"); + } + + Popup.postHide = closeAllPopup; + + var ANCHOR_CLASSES = [ + "edui-anchor-topleft", + "edui-anchor-topright", + "edui-anchor-bottomleft", + "edui-anchor-bottomright" + ]; + Popup.prototype = { + SHADOW_RADIUS: 5, + content: null, + _hidden: false, + autoRender: true, + canSideLeft: true, + canSideUp: true, + initPopup: function() { + this.initUIBase(); + allPopups.push(this); + }, + getHtmlTpl: function() { + return ( + '
    ' + + '
    ' + + ' ' + + '
    ' + + '
    ' + + this.getContentHtmlTpl() + + "
    " + + "
    " + + "
    " + ); + }, + getContentHtmlTpl: function() { + if (this.content) { + if (typeof this.content == "string") { + return this.content; + } + return this.content.renderHtml(); + } else { + return ""; + } + }, + _UIBase_postRender: UIBase.prototype.postRender, + postRender: function() { + if (this.content instanceof UIBase) { + this.content.postRender(); + } + + //捕获鼠标滚轮 + if (this.captureWheel && !this.captured) { + this.captured = true; + + var winHeight = + (document.documentElement.clientHeight || + document.body.clientHeight) - 80, + _height = this.getDom().offsetHeight, + _top = uiUtils.getClientRect(this.combox.getDom()).top, + content = this.getDom("content"), + ifr = this.getDom("body").getElementsByTagName("iframe"), + me = this; + + ifr.length && (ifr = ifr[0]); + + while (_top + _height > winHeight) { + _height -= 30; + } + content.style.height = _height + "px"; + //同步更改iframe高度 + ifr && (ifr.style.height = _height + "px"); + + //阻止在combox上的鼠标滚轮事件, 防止用户的正常操作被误解 + domUtils.on( + content, + "onmousewheel" in document.body ? "mousewheel" : "DOMMouseScroll", + function(e) { + if (e.preventDefault) { + e.preventDefault(); + } else { + e.returnValue = false; + } + + if (e.wheelDelta) { + content.scrollTop -= e.wheelDelta / 120 * 60; + } else { + content.scrollTop -= e.detail / -3 * 60; + } + } + ); + } + this.fireEvent("postRenderAfter"); + this.hide(true); + this._UIBase_postRender(); + }, + _doAutoRender: function() { + if (!this.getDom() && this.autoRender) { + this.render(); + } + }, + mesureSize: function() { + var box = this.getDom("content"); + return uiUtils.getClientRect(box); + }, + fitSize: function() { + // console.log('fitSize.popup') + if (this.captureWheel && this.sized) { + return this.__size; + } + this.sized = true; + var popBodyEl = this.getDom("body"); + popBodyEl.style.width = ""; + popBodyEl.style.height = ""; + var size = this.mesureSize(); + if (this.captureWheel) { + popBodyEl.style.width = -(-20 - size.width) + "px"; + var height = parseInt(this.getDom("content").style.height, 10); + !window.isNaN(height) && (size.height = height); + } else { + popBodyEl.style.width = size.width + "px"; + } + popBodyEl.style.height = size.height + "px"; + this.__size = size; + this.captureWheel && (this.getDom("content").style.overflow = "auto"); + return size; + }, + showAnchor: function(element, hoz) { + this.showAnchorRect(uiUtils.getClientRect(element), hoz); + }, + showAnchorRect: function(rect, hoz, adj) { + this._doAutoRender(); + var vpRect = uiUtils.getViewportRect(); + this.getDom().style.visibility = "hidden"; + this._show(); + var popSize = this.fitSize(); + + var sideLeft, sideUp, left, top; + if (hoz) { + sideLeft = + this.canSideLeft && + (rect.right + popSize.width > vpRect.right && + rect.left > popSize.width); + sideUp = + this.canSideUp && + (rect.top + popSize.height > vpRect.bottom && + rect.bottom > popSize.height); + left = sideLeft ? rect.left - popSize.width : rect.right; + top = sideUp ? rect.bottom - popSize.height : rect.top; + } else { + sideLeft = + this.canSideLeft && + (rect.right + popSize.width > vpRect.right && + rect.left > popSize.width); + sideUp = + this.canSideUp && + (rect.top + popSize.height > vpRect.bottom && + rect.bottom > popSize.height); + left = sideLeft ? rect.right - popSize.width : rect.left; + top = sideUp ? rect.top - popSize.height : rect.bottom; + } + if(!sideUp){ + if(top + popSize.height > vpRect.bottom){ + top = vpRect.bottom - popSize.height + } + } + // console.log('popup.showAnchorRect', vpRect, rect, hoz, sideUp, sideLeft, left, top); + + var popEl = this.getDom(); + uiUtils.setViewportOffset(popEl, { + left: left, + top: top + }); + domUtils.removeClasses(popEl, ANCHOR_CLASSES); + popEl.className += + " " + ANCHOR_CLASSES[(sideUp ? 1 : 0) * 2 + (sideLeft ? 1 : 0)]; + if (this.editor) { + popEl.style.zIndex = this.editor.container.style.zIndex * 1 + 10; + baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = + popEl.style.zIndex - 1; + } + this.getDom().style.visibility = "visible"; + }, + showAt: function(offset) { + var left = offset.left; + var top = offset.top; + var rect = { + left: left, + top: top, + right: left, + bottom: top, + height: 0, + width: 0 + }; + this.showAnchorRect(rect, false, true); + }, + _show: function() { + if (this._hidden) { + var box = this.getDom(); + box.style.display = ""; + this._hidden = false; + // if (box.setActive) { + // box.setActive(); + // } + this.fireEvent("show"); + } + }, + isHidden: function() { + return this._hidden; + }, + show: function() { + this._doAutoRender(); + this._show(); + }, + hide: function(notNofity) { + if (!this._hidden && this.getDom()) { + this.getDom().style.display = "none"; + this._hidden = true; + if (!notNofity) { + this.fireEvent("hide"); + } + } + }, + queryAutoHide: function(el) { + return !el || !uiUtils.contains(this.getDom(), el); + } + }; + utils.inherits(Popup, UIBase); + + domUtils.on(document, "mousedown", function(evt) { + var el = evt.target || evt.srcElement; + closeAllPopup(evt, el); + }); + domUtils.on(window, "scroll", function(evt, el) { + closeAllPopup(evt, el); + }); +})(); + + +// ui/colorpicker.js +///import core +///import uicore +(function() { + var utils = baidu.editor.utils, + UIBase = baidu.editor.ui.UIBase, + ColorPicker = (baidu.editor.ui.ColorPicker = function(options) { + this.initOptions(options); + this.noColorText = this.noColorText || this.editor.getLang("clearColor"); + this.initUIBase(); + }); + + ColorPicker.prototype = { + getHtmlTpl: function() { + return genColorPicker(this.noColorText, this.editor); + }, + _onTableClick: function(evt) { + var tgt = evt.target || evt.srcElement; + var color = tgt.getAttribute("data-color"); + if (color) { + this.fireEvent("pickcolor", color); + } + }, + _onTableOver: function(evt) { + var tgt = evt.target || evt.srcElement; + var color = tgt.getAttribute("data-color"); + if (color) { + this.getDom("preview").style.backgroundColor = color; + } + }, + _onTableOut: function() { + this.getDom("preview").style.backgroundColor = ""; + }, + _onPickNoColor: function() { + this.fireEvent("picknocolor"); + } + }; + utils.inherits(ColorPicker, UIBase); + + var COLORS = ("ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646," + + "f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada," + + "d8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5," + + "bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f," + + "a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09," + + "7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806," + + "c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,").split( + "," + ); + + function genColorPicker(noColorText, editor) { + var html = + '
    ' + + '
    ' + + '
    ' + + '
    ' + + noColorText + + "
    " + + "
    " + + '' + + '" + + ''; + for (var i = 0; i < COLORS.length; i++) { + if (i && i % 10 === 0) { + html += + "" + + (i == 60 + ? '" + : "") + + ""; + } + html += i < 70 + ? '" + : ""; + } + html += "
    ' + + editor.getLang("themeColor") + + "
    ' + + editor.getLang("standardColor") + + "
    = 60 + ? "border-width:1px;" + : i >= 10 && i < 20 + ? "border-width:1px 1px 0 1px;" + : "border-width:0 1px 0 1px;") + + '"' + + ">
    "; + return html; + } +})(); + + +// ui/tablepicker.js +///import core +///import uicore +(function() { + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + UIBase = baidu.editor.ui.UIBase; + + var TablePicker = (baidu.editor.ui.TablePicker = function(options) { + this.initOptions(options); + this.initTablePicker(); + }); + TablePicker.prototype = { + defaultNumRows: 10, + defaultNumCols: 10, + maxNumRows: 20, + maxNumCols: 20, + numRows: 10, + numCols: 10, + lengthOfCellSide: 22, + initTablePicker: function() { + this.initUIBase(); + }, + getHtmlTpl: function() { + var me = this; + return ( + '
    ' + + '
    ' + + '
    ' + + '' + + "
    " + + '
    " + + '
    ' + + "
    " + + "
    " + + "
    " + ); + }, + _UIBase_render: UIBase.prototype.render, + render: function(holder) { + this._UIBase_render(holder); + this.getDom("label").innerHTML = + "0" + + this.editor.getLang("t_row") + + " x 0" + + this.editor.getLang("t_col"); + }, + _track: function(numCols, numRows) { + var style = this.getDom("overlay").style; + var sideLen = this.lengthOfCellSide; + style.width = numCols * sideLen + "px"; + style.height = numRows * sideLen + "px"; + var label = this.getDom("label"); + label.innerHTML = + numCols + + this.editor.getLang("t_col") + + " x " + + numRows + + this.editor.getLang("t_row"); + this.numCols = numCols; + this.numRows = numRows; + }, + _onMouseOver: function(evt, el) { + var rel = evt.relatedTarget || evt.fromElement; + if (!uiUtils.contains(el, rel) && el !== rel) { + this.getDom("label").innerHTML = + "0" + + this.editor.getLang("t_col") + + " x 0" + + this.editor.getLang("t_row"); + this.getDom("overlay").style.visibility = ""; + } + }, + _onMouseOut: function(evt, el) { + var rel = evt.relatedTarget || evt.toElement; + if (!uiUtils.contains(el, rel) && el !== rel) { + this.getDom("label").innerHTML = + "0" + + this.editor.getLang("t_col") + + " x 0" + + this.editor.getLang("t_row"); + this.getDom("overlay").style.visibility = "hidden"; + } + }, + _onMouseMove: function(evt, el) { + var style = this.getDom("overlay").style; + var offset = uiUtils.getEventOffset(evt); + var sideLen = this.lengthOfCellSide; + var numCols = Math.ceil(offset.left / sideLen); + var numRows = Math.ceil(offset.top / sideLen); + this._track(numCols, numRows); + }, + _onClick: function() { + this.fireEvent("picktable", this.numCols, this.numRows); + } + }; + utils.inherits(TablePicker, UIBase); +})(); + + +// ui/stateful.js +(function() { + var browser = baidu.editor.browser, + domUtils = baidu.editor.dom.domUtils, + uiUtils = baidu.editor.ui.uiUtils; + + var TPL_STATEFUL = + 'onmousedown="$$.Stateful_onMouseDown(event, this);"' + + ' onmouseup="$$.Stateful_onMouseUp(event, this);"' + + (browser.ie + ? ' onmouseenter="$$.Stateful_onMouseEnter(event, this);"' + + ' onmouseleave="$$.Stateful_onMouseLeave(event, this);"' + : ' onmouseover="$$.Stateful_onMouseOver(event, this);"' + + ' onmouseout="$$.Stateful_onMouseOut(event, this);"'); + + baidu.editor.ui.Stateful = { + alwalysHoverable: false, + target: null, //目标元素和this指向dom不一样 + Stateful_init: function() { + this._Stateful_dGetHtmlTpl = this.getHtmlTpl; + this.getHtmlTpl = this.Stateful_getHtmlTpl; + }, + Stateful_getHtmlTpl: function() { + var tpl = this._Stateful_dGetHtmlTpl(); + // 使用function避免$转义 + return tpl.replace(/stateful/g, function() { + return TPL_STATEFUL; + }); + }, + Stateful_onMouseEnter: function(evt, el) { + this.target = el; + if (!this.isDisabled() || this.alwalysHoverable) { + this.addState("hover"); + this.fireEvent("over"); + } + }, + Stateful_onMouseLeave: function(evt, el) { + if (!this.isDisabled() || this.alwalysHoverable) { + this.removeState("hover"); + this.removeState("active"); + this.fireEvent("out"); + } + }, + Stateful_onMouseOver: function(evt, el) { + var rel = evt.relatedTarget; + if (!uiUtils.contains(el, rel) && el !== rel) { + this.Stateful_onMouseEnter(evt, el); + } + }, + Stateful_onMouseOut: function(evt, el) { + var rel = evt.relatedTarget; + if (!uiUtils.contains(el, rel) && el !== rel) { + this.Stateful_onMouseLeave(evt, el); + } + }, + Stateful_onMouseDown: function(evt, el) { + if (!this.isDisabled()) { + this.addState("active"); + } + }, + Stateful_onMouseUp: function(evt, el) { + if (!this.isDisabled()) { + this.removeState("active"); + } + }, + Stateful_postRender: function() { + if (this.disabled && !this.hasState("disabled")) { + this.addState("disabled"); + } + }, + hasState: function(state) { + return domUtils.hasClass(this.getStateDom(), "edui-state-" + state); + }, + addState: function(state) { + if (!this.hasState(state)) { + this.getStateDom().className += " edui-state-" + state; + } + }, + removeState: function(state) { + if (this.hasState(state)) { + domUtils.removeClasses(this.getStateDom(), ["edui-state-" + state]); + } + }, + getStateDom: function() { + return this.getDom("state"); + }, + isChecked: function() { + return this.hasState("checked"); + }, + setChecked: function(checked) { + if (!this.isDisabled() && checked) { + this.addState("checked"); + } else { + this.removeState("checked"); + } + }, + isDisabled: function() { + return this.hasState("disabled"); + }, + setDisabled: function(disabled) { + if (disabled) { + this.removeState("hover"); + this.removeState("checked"); + this.removeState("active"); + this.addState("disabled"); + } else { + this.removeState("disabled"); + } + } + }; +})(); + + +// ui/button.js +///import core +///import uicore +///import ui/stateful.js +(function() { + var utils = baidu.editor.utils, + UIBase = baidu.editor.ui.UIBase, + Stateful = baidu.editor.ui.Stateful, + Button = (baidu.editor.ui.Button = function(options) { + if (options.name) { + var btnName = options.name; + var cssRules = options.cssRules; + if (!options.className) { + options.className = "edui-for-" + btnName; + } + options.cssRules = + ".edui-" + + (options.theme || "default") + + " .edui-toolbar .edui-button.edui-for-" + + btnName + + " .edui-icon {" + + cssRules + + "}"; + } + this.initOptions(options); + this.initButton(); + }); + Button.prototype = { + uiName: "button", + label: "", + title: "", + showIcon: true, + showText: true, + cssRules: "", + initButton: function() { + this.initUIBase(); + this.Stateful_init(); + if (this.cssRules) { + utils.cssRule("edui-customize-" + this.name + "-style", this.cssRules); + } + }, + getHtmlTpl: function() { + return ( + '
    ' + + '
    ' + + '
    ' + + (this.showIcon ? '
    ' : "") + + (this.showText + ? '
    ' + this.label + "
    " + : "") + + "
    " + + "
    " + + "
    " + ); + }, + postRender: function() { + this.Stateful_postRender(); + this.setDisabled(this.disabled); + }, + _onMouseDown: function(e) { + var target = e.target || e.srcElement, + tagName = target && target.tagName && target.tagName.toLowerCase(); + if (tagName == "input" || tagName == "object" || tagName == "object") { + return false; + } + }, + _onClick: function() { + if (!this.isDisabled()) { + this.fireEvent("click"); + } + }, + setTitle: function(text) { + var label = this.getDom("label"); + label.innerHTML = text; + } + }; + utils.inherits(Button, UIBase); + utils.extend(Button.prototype, Stateful); +})(); + + +// ui/splitbutton.js +///import core +///import uicore +///import ui/stateful.js +(function() { + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + domUtils = baidu.editor.dom.domUtils, + UIBase = baidu.editor.ui.UIBase, + Stateful = baidu.editor.ui.Stateful, + SplitButton = (baidu.editor.ui.SplitButton = function(options) { + this.initOptions(options); + this.initSplitButton(); + }); + SplitButton.prototype = { + popup: null, + uiName: "splitbutton", + title: "", + initSplitButton: function() { + this.initUIBase(); + this.Stateful_init(); + var me = this; + if (this.popup != null) { + var popup = this.popup; + this.popup = null; + this.setPopup(popup); + } + }, + _UIBase_postRender: UIBase.prototype.postRender, + postRender: function() { + this.Stateful_postRender(); + this._UIBase_postRender(); + }, + setPopup: function(popup) { + if (this.popup === popup) return; + if (this.popup != null) { + this.popup.dispose(); + } + popup.addListener("show", utils.bind(this._onPopupShow, this)); + popup.addListener("hide", utils.bind(this._onPopupHide, this)); + popup.addListener( + "postrender", + utils.bind(function() { + popup + .getDom("body") + .appendChild( + uiUtils.createElementByHtml( + '
    ' + ) + ); + popup.getDom().className += " " + this.className; + }, this) + ); + this.popup = popup; + }, + _onPopupShow: function() { + this.addState("opened"); + }, + _onPopupHide: function() { + this.removeState("opened"); + }, + getHtmlTpl: function() { + return ( + '
    ' + + "
    ' + + '
    ' + + '
    ' + + "
    " + + '
    ' + + '
    ' + + "
    " + ); + }, + showPopup: function() { + // 当popup往上弹出的时候,做特殊处理 + var rect = uiUtils.getClientRect(this.getDom()); + rect.top -= this.popup.SHADOW_RADIUS; + rect.height += this.popup.SHADOW_RADIUS; + this.popup.showAnchorRect(rect); + }, + _onArrowClick: function(event, el) { + if (!this.isDisabled()) { + this.showPopup(); + } + }, + _onButtonClick: function() { + if (!this.isDisabled()) { + this.fireEvent("buttonclick"); + } + } + }; + utils.inherits(SplitButton, UIBase); + utils.extend(SplitButton.prototype, Stateful, true); +})(); + + +// ui/colorbutton.js +///import core +///import uicore +///import ui/colorpicker.js +///import ui/popup.js +///import ui/splitbutton.js +(function() { + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + ColorPicker = baidu.editor.ui.ColorPicker, + Popup = baidu.editor.ui.Popup, + SplitButton = baidu.editor.ui.SplitButton, + ColorButton = (baidu.editor.ui.ColorButton = function(options) { + this.initOptions(options); + this.initColorButton(); + }); + ColorButton.prototype = { + initColorButton: function() { + var me = this; + this.popup = new Popup({ + content: new ColorPicker({ + noColorText: me.editor.getLang("clearColor"), + editor: me.editor, + onpickcolor: function(t, color) { + me._onPickColor(color); + }, + onpicknocolor: function(t, color) { + me._onPickNoColor(color); + } + }), + editor: me.editor + }); + this.initSplitButton(); + }, + _SplitButton_postRender: SplitButton.prototype.postRender, + postRender: function() { + this._SplitButton_postRender(); + this.getDom("button_body").appendChild( + uiUtils.createElementByHtml( + '
    ' + ) + ); + this.getDom().className += " edui-colorbutton"; + }, + setColor: function(color) { + this.getDom("colorlump").style.backgroundColor = color; + this.color = color; + }, + _onPickColor: function(color) { + if (this.fireEvent("pickcolor", color) !== false) { + this.setColor(color); + this.popup.hide(); + } + }, + _onPickNoColor: function(color) { + if (this.fireEvent("picknocolor") !== false) { + this.popup.hide(); + } + } + }; + utils.inherits(ColorButton, SplitButton); +})(); + + +// ui/tablebutton.js +///import core +///import uicore +///import ui/popup.js +///import ui/tablepicker.js +///import ui/splitbutton.js +(function() { + var utils = baidu.editor.utils, + Popup = baidu.editor.ui.Popup, + TablePicker = baidu.editor.ui.TablePicker, + SplitButton = baidu.editor.ui.SplitButton, + TableButton = (baidu.editor.ui.TableButton = function(options) { + this.initOptions(options); + this.initTableButton(); + }); + TableButton.prototype = { + initTableButton: function() { + var me = this; + this.popup = new Popup({ + content: new TablePicker({ + editor: me.editor, + onpicktable: function(t, numCols, numRows) { + me._onPickTable(numCols, numRows); + } + }), + editor: me.editor + }); + this.initSplitButton(); + }, + _onPickTable: function(numCols, numRows) { + if (this.fireEvent("picktable", numCols, numRows) !== false) { + this.popup.hide(); + } + } + }; + utils.inherits(TableButton, SplitButton); +})(); + + +// ui/autotypesetpicker.js +///import core +///import uicore +(function() { + var utils = baidu.editor.utils, + UIBase = baidu.editor.ui.UIBase; + + var AutoTypeSetPicker = (baidu.editor.ui.AutoTypeSetPicker = function( + options + ) { + this.initOptions(options); + this.initAutoTypeSetPicker(); + }); + AutoTypeSetPicker.prototype = { + initAutoTypeSetPicker: function() { + this.initUIBase(); + }, + getHtmlTpl: function() { + var me = this.editor, + opt = me.options.autotypeset, + lang = me.getLang("autoTypeSet"); + + var textAlignInputName = "textAlignValue" + me.uid, + imageBlockInputName = "imageBlockLineValue" + me.uid, + symbolConverInputName = "symbolConverValue" + me.uid; + + return ( + '
    ' + + '
    ' + + "" + + '" + + '" + + "" + + '" + + '" + + "" + + "" + + '" + + '" + + "" + + '" + + '" + + '" + + "" + + '" + + '" + + '" + + "" + + "
    " + + lang.mergeLine + + '" + + lang.delLine + + "
    " + + lang.removeFormat + + '" + + lang.indent + + "
    " + + lang.alignment + + "' + + '" + + me.getLang("justifyleft") + + '" + + me.getLang("justifycenter") + + '" + + me.getLang("justifyright") + + "
    " + + lang.imageFloat + + "' + + '" + + me.getLang("default") + + '" + + me.getLang("justifyleft") + + '" + + me.getLang("justifycenter") + + '" + + me.getLang("justifyright") + + "
    " + + lang.removeFontsize + + '" + + lang.removeFontFamily + + "
    " + + lang.removeHtml + + "
    " + + lang.pasteFilter + + "
    " + + lang.symbol + + "' + + '" + + lang.bdc2sb + + '" + + lang.tobdc + + "" + + "
    " + + "
    " + + "
    " + ); + }, + _UIBase_render: UIBase.prototype.render + }; + utils.inherits(AutoTypeSetPicker, UIBase); +})(); + + +// ui/autotypesetbutton.js +///import core +///import uicore +///import ui/popup.js +///import ui/autotypesetpicker.js +///import ui/splitbutton.js +(function() { + var utils = baidu.editor.utils, + Popup = baidu.editor.ui.Popup, + AutoTypeSetPicker = baidu.editor.ui.AutoTypeSetPicker, + SplitButton = baidu.editor.ui.SplitButton, + AutoTypeSetButton = (baidu.editor.ui.AutoTypeSetButton = function(options) { + this.initOptions(options); + this.initAutoTypeSetButton(); + }); + function getPara(me) { + var opt = {}, + cont = me.getDom(), + editorId = me.editor.uid, + inputType = null, + attrName = null, + ipts = domUtils.getElementsByTagName(cont, "input"); + for (var i = ipts.length - 1, ipt; (ipt = ipts[i--]); ) { + inputType = ipt.getAttribute("type"); + if (inputType == "checkbox") { + attrName = ipt.getAttribute("name"); + opt[attrName] && delete opt[attrName]; + if (ipt.checked) { + var attrValue = document.getElementById( + attrName + "Value" + editorId + ); + if (attrValue) { + if (/input/gi.test(attrValue.tagName)) { + opt[attrName] = attrValue.value; + } else { + var iptChilds = attrValue.getElementsByTagName("input"); + for ( + var j = iptChilds.length - 1, iptchild; + (iptchild = iptChilds[j--]); + + ) { + if (iptchild.checked) { + opt[attrName] = iptchild.value; + break; + } + } + } + } else { + opt[attrName] = true; + } + } else { + opt[attrName] = false; + } + } else { + opt[ipt.getAttribute("value")] = ipt.checked; + } + } + + var selects = domUtils.getElementsByTagName(cont, "select"); + for (var i = 0, si; (si = selects[i++]); ) { + var attr = si.getAttribute("name"); + opt[attr] = opt[attr] ? si.value : ""; + } + + utils.extend(me.editor.options.autotypeset, opt); + + me.editor.setPreferences("autotypeset", opt); + } + + AutoTypeSetButton.prototype = { + initAutoTypeSetButton: function() { + var me = this; + this.popup = new Popup({ + //传入配置参数 + content: new AutoTypeSetPicker({ editor: me.editor }), + editor: me.editor, + hide: function() { + if (!this._hidden && this.getDom()) { + getPara(this); + this.getDom().style.display = "none"; + this._hidden = true; + this.fireEvent("hide"); + } + } + }); + var flag = 0; + this.popup.addListener("postRenderAfter", function() { + var popupUI = this; + if (flag) return; + var cont = this.getDom(), + btn = cont.getElementsByTagName("button")[0]; + + btn.onclick = function() { + getPara(popupUI); + me.editor.execCommand("autotypeset"); + popupUI.hide(); + }; + + domUtils.on(cont, "click", function(e) { + var target = e.target || e.srcElement, + editorId = me.editor.uid; + if (target && target.tagName == "INPUT") { + // 点击图片浮动的checkbox,去除对应的radio + if ( + target.name == "imageBlockLine" || + target.name == "textAlign" || + target.name == "symbolConver" + ) { + var checked = target.checked, + radioTd = document.getElementById( + target.name + "Value" + editorId + ), + radios = radioTd.getElementsByTagName("input"), + defalutSelect = { + imageBlockLine: "none", + textAlign: "left", + symbolConver: "tobdc" + }; + + for (var i = 0; i < radios.length; i++) { + if (checked) { + if (radios[i].value == defalutSelect[target.name]) { + radios[i].checked = "checked"; + } + } else { + radios[i].checked = false; + } + } + } + // 点击radio,选中对应的checkbox + if ( + target.name == "imageBlockLineValue" + editorId || + target.name == "textAlignValue" + editorId || + target.name == "bdc" + ) { + var checkboxs = target.parentNode.previousSibling.getElementsByTagName( + "input" + ); + checkboxs && (checkboxs[0].checked = true); + } + + getPara(popupUI); + } + }); + + flag = 1; + }); + this.initSplitButton(); + } + }; + utils.inherits(AutoTypeSetButton, SplitButton); +})(); + + +// ui/cellalignpicker.js +///import core +///import uicore +(function() { + var utils = baidu.editor.utils, + Popup = baidu.editor.ui.Popup, + Stateful = baidu.editor.ui.Stateful, + UIBase = baidu.editor.ui.UIBase; + + /** + * 该参数将新增一个参数: selected, 参数类型为一个Object, 形如{ 'align': 'center', 'valign': 'top' }, 表示单元格的初始 + * 对齐状态为: 竖直居上,水平居中; 其中 align的取值为:'center', 'left', 'right'; valign的取值为: 'top', 'middle', 'bottom' + * @update 2013/4/2 hancong03@baidu.com + */ + var CellAlignPicker = (baidu.editor.ui.CellAlignPicker = function(options) { + this.initOptions(options); + this.initSelected(); + this.initCellAlignPicker(); + }); + CellAlignPicker.prototype = { + //初始化选中状态, 该方法将根据传递进来的参数获取到应该选中的对齐方式图标的索引 + initSelected: function() { + var status = { + valign: { + top: 0, + middle: 1, + bottom: 2 + }, + align: { + left: 0, + center: 1, + right: 2 + }, + count: 3 + }, + result = -1; + + if (this.selected) { + this.selectedIndex = + status.valign[this.selected.valign] * status.count + + status.align[this.selected.align]; + } + }, + initCellAlignPicker: function() { + this.initUIBase(); + this.Stateful_init(); + }, + getHtmlTpl: function() { + var alignType = ["left", "center", "right"], + COUNT = 9, + tempClassName = null, + tempIndex = -1, + tmpl = []; + + for (var i = 0; i < COUNT; i++) { + tempClassName = this.selectedIndex === i + ? ' class="edui-cellalign-selected" ' + : ""; + tempIndex = i % 3; + + tempIndex === 0 && tmpl.push("
  • ' + + tmpl.join("") + + "
    " + + "
    " + + "
    " + ); + }, + getStateDom: function() { + return this.target; + }, + _onClick: function(evt) { + var target = evt.target || evt.srcElement; + if (/icon/.test(target.className)) { + this.items[target.parentNode.getAttribute("index")].onclick(); + Popup.postHide(evt); + } + }, + _UIBase_render: UIBase.prototype.render + }; + utils.inherits(CellAlignPicker, UIBase); + utils.extend(CellAlignPicker.prototype, Stateful, true); +})(); + + +// ui/pastepicker.js +///import core +///import uicore +(function() { + var utils = baidu.editor.utils, + Stateful = baidu.editor.ui.Stateful, + uiUtils = baidu.editor.ui.uiUtils, + UIBase = baidu.editor.ui.UIBase; + + var PastePicker = (baidu.editor.ui.PastePicker = function(options) { + this.initOptions(options); + this.initPastePicker(); + }); + PastePicker.prototype = { + initPastePicker: function() { + this.initUIBase(); + this.Stateful_init(); + }, + getHtmlTpl: function() { + return ( + '
    ' + + '
    ' + + '
    ' + + this.editor.getLang("pasteOpt") + + "
    " + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + "
    " + + "
    " + + "
    " + ); + }, + getStateDom: function() { + return this.target; + }, + format: function(param) { + this.editor.ui._isTransfer = true; + this.editor.fireEvent("pasteTransfer", param); + }, + _onClick: function(cur) { + var node = domUtils.getNextDomNode(cur), + screenHt = uiUtils.getViewportRect().height, + subPop = uiUtils.getClientRect(node); + + if (subPop.top + subPop.height > screenHt) + node.style.top = -subPop.height - cur.offsetHeight + "px"; + else node.style.top = ""; + + if (/hidden/gi.test(domUtils.getComputedStyle(node, "visibility"))) { + node.style.visibility = "visible"; + domUtils.addClass(cur, "edui-state-opened"); + } else { + node.style.visibility = "hidden"; + domUtils.removeClasses(cur, "edui-state-opened"); + } + }, + _UIBase_render: UIBase.prototype.render + }; + utils.inherits(PastePicker, UIBase); + utils.extend(PastePicker.prototype, Stateful, true); +})(); + + +// ui/toolbar.js +(function() { + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + UIBase = baidu.editor.ui.UIBase, + Toolbar = (baidu.editor.ui.Toolbar = function(options) { + this.initOptions(options); + this.initToolbar(); + }); + Toolbar.prototype = { + items: null, + initToolbar: function() { + this.items = this.items || []; + this.initUIBase(); + }, + add: function(item, index) { + if (index === undefined) { + this.items.push(item); + } else { + this.items.splice(index, 0, item); + } + }, + getHtmlTpl: function() { + var buff = []; + for (var i = 0; i < this.items.length; i++) { + buff[i] = this.items[i].renderHtml(); + } + return ( + '
    ' + + buff.join("") + + "
    " + ); + }, + postRender: function() { + var box = this.getDom(); + for (var i = 0; i < this.items.length; i++) { + this.items[i].postRender(); + } + uiUtils.makeUnselectable(box); + }, + _onMouseDown: function(e) { + var target = e.target || e.srcElement, + tagName = target && target.tagName && target.tagName.toLowerCase(); + if (tagName == "input" || tagName == "object" || tagName == "object") { + return false; + } + } + }; + utils.inherits(Toolbar, UIBase); +})(); + + +// ui/menu.js +///import core +///import uicore +///import ui\popup.js +///import ui\stateful.js +(function() { + var utils = baidu.editor.utils, + domUtils = baidu.editor.dom.domUtils, + uiUtils = baidu.editor.ui.uiUtils, + UIBase = baidu.editor.ui.UIBase, + Popup = baidu.editor.ui.Popup, + Stateful = baidu.editor.ui.Stateful, + CellAlignPicker = baidu.editor.ui.CellAlignPicker, + Menu = (baidu.editor.ui.Menu = function(options) { + this.initOptions(options); + this.initMenu(); + }); + + var menuSeparator = { + renderHtml: function() { + return '
    '; + }, + postRender: function() {}, + queryAutoHide: function() { + return true; + } + }; + Menu.prototype = { + items: null, + uiName: "menu", + initMenu: function() { + this.items = this.items || []; + this.initPopup(); + this.initItems(); + }, + initItems: function() { + for (var i = 0; i < this.items.length; i++) { + var item = this.items[i]; + if (item == "-") { + this.items[i] = this.getSeparator(); + } else if (!(item instanceof MenuItem)) { + item.editor = this.editor; + item.theme = this.editor.options.theme; + this.items[i] = this.createItem(item); + } + } + }, + getSeparator: function() { + return menuSeparator; + }, + createItem: function(item) { + //新增一个参数menu, 该参数存储了menuItem所对应的menu引用 + item.menu = this; + return new MenuItem(item); + }, + _Popup_getContentHtmlTpl: Popup.prototype.getContentHtmlTpl, + getContentHtmlTpl: function() { + if (this.items.length == 0) { + return this._Popup_getContentHtmlTpl(); + } + var buff = []; + for (var i = 0; i < this.items.length; i++) { + var item = this.items[i]; + buff[i] = item.renderHtml(); + } + return '
    ' + buff.join("") + "
    "; + }, + _Popup_postRender: Popup.prototype.postRender, + postRender: function() { + var me = this; + for (var i = 0; i < this.items.length; i++) { + var item = this.items[i]; + item.ownerMenu = this; + item.postRender(); + } + domUtils.on(this.getDom(), "mouseover", function(evt) { + evt = evt || event; + var rel = evt.relatedTarget || evt.fromElement; + var el = me.getDom(); + if (!uiUtils.contains(el, rel) && el !== rel) { + me.fireEvent("over"); + } + }); + this._Popup_postRender(); + }, + queryAutoHide: function(el) { + if (el) { + if (uiUtils.contains(this.getDom(), el)) { + return false; + } + for (var i = 0; i < this.items.length; i++) { + var item = this.items[i]; + if (item.queryAutoHide(el) === false) { + return false; + } + } + } + }, + clearItems: function() { + for (var i = 0; i < this.items.length; i++) { + var item = this.items[i]; + clearTimeout(item._showingTimer); + clearTimeout(item._closingTimer); + if (item.subMenu) { + item.subMenu.destroy(); + } + } + this.items = []; + }, + destroy: function() { + if (this.getDom()) { + domUtils.remove(this.getDom()); + } + this.clearItems(); + }, + dispose: function() { + this.destroy(); + } + }; + utils.inherits(Menu, Popup); + + /** + * @update 2013/04/03 hancong03 新增一个参数menu, 该参数存储了menuItem所对应的menu引用 + * @type {Function} + */ + var MenuItem = (baidu.editor.ui.MenuItem = function(options) { + this.initOptions(options); + this.initUIBase(); + this.Stateful_init(); + if (this.subMenu && !(this.subMenu instanceof Menu)) { + if (options.className && options.className.indexOf("aligntd") != -1) { + var me = this; + + //获取单元格对齐初始状态 + this.subMenu.selected = this.editor.queryCommandValue("cellalignment"); + + this.subMenu = new Popup({ + content: new CellAlignPicker(this.subMenu), + parentMenu: me, + editor: me.editor, + destroy: function() { + if (this.getDom()) { + domUtils.remove(this.getDom()); + } + } + }); + this.subMenu.addListener("postRenderAfter", function() { + domUtils.on(this.getDom(), "mouseover", function() { + me.addState("opened"); + }); + }); + } else { + this.subMenu = new Menu(this.subMenu); + } + } + }); + MenuItem.prototype = { + label: "", + subMenu: null, + ownerMenu: null, + uiName: "menuitem", + alwalysHoverable: true, + getHtmlTpl: function() { + return ( + '
    ' + + '
    ' + + this.renderLabelHtml() + + "
    " + + "
    " + ); + }, + postRender: function() { + var me = this; + this.addListener("over", function() { + me.ownerMenu.fireEvent("submenuover", me); + if (me.subMenu) { + me.delayShowSubMenu(); + } + }); + if (this.subMenu) { + this.getDom().className += " edui-hassubmenu"; + this.subMenu.render(); + this.addListener("out", function() { + me.delayHideSubMenu(); + }); + this.subMenu.addListener("over", function() { + clearTimeout(me._closingTimer); + me._closingTimer = null; + me.addState("opened"); + }); + this.ownerMenu.addListener("hide", function() { + me.hideSubMenu(); + }); + this.ownerMenu.addListener("submenuover", function(t, subMenu) { + if (subMenu !== me) { + me.delayHideSubMenu(); + } + }); + this.subMenu._bakQueryAutoHide = this.subMenu.queryAutoHide; + this.subMenu.queryAutoHide = function(el) { + if (el && uiUtils.contains(me.getDom(), el)) { + return false; + } + return this._bakQueryAutoHide(el); + }; + } + this.getDom().style.tabIndex = "-1"; + uiUtils.makeUnselectable(this.getDom()); + this.Stateful_postRender(); + }, + delayShowSubMenu: function() { + var me = this; + if (!me.isDisabled()) { + me.addState("opened"); + clearTimeout(me._showingTimer); + clearTimeout(me._closingTimer); + me._closingTimer = null; + me._showingTimer = setTimeout(function() { + me.showSubMenu(); + }, 250); + } + }, + delayHideSubMenu: function() { + var me = this; + if (!me.isDisabled()) { + me.removeState("opened"); + clearTimeout(me._showingTimer); + if (!me._closingTimer) { + me._closingTimer = setTimeout(function() { + if (!me.hasState("opened")) { + me.hideSubMenu(); + } + me._closingTimer = null; + }, 400); + } + } + }, + renderLabelHtml: function() { + return ( + '
    ' + + '
    ' + + '
    ' + + (this.label || "") + + "
    " + ); + }, + getStateDom: function() { + return this.getDom(); + }, + queryAutoHide: function(el) { + if (this.subMenu && this.hasState("opened")) { + return this.subMenu.queryAutoHide(el); + } + }, + _onClick: function(event, this_) { + if (this.hasState("disabled")) return; + if (this.fireEvent("click", event, this_) !== false) { + if (this.subMenu) { + this.showSubMenu(); + } else { + Popup.postHide(event); + } + } + }, + showSubMenu: function() { + var rect = uiUtils.getClientRect(this.getDom()); + rect.right -= 5; + rect.left += 2; + rect.width -= 7; + rect.top -= 4; + rect.bottom += 4; + rect.height += 8; + this.subMenu.showAnchorRect(rect, true, true); + }, + hideSubMenu: function() { + this.subMenu.hide(); + } + }; + utils.inherits(MenuItem, UIBase); + utils.extend(MenuItem.prototype, Stateful, true); +})(); + + +// ui/combox.js +///import core +///import uicore +///import ui/menu.js +///import ui/splitbutton.js +(function() { + // todo: menu和item提成通用list + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + Menu = baidu.editor.ui.Menu, + SplitButton = baidu.editor.ui.SplitButton, + Combox = (baidu.editor.ui.Combox = function(options) { + this.initOptions(options); + this.initCombox(); + }); + Combox.prototype = { + uiName: "combox", + onbuttonclick: function() { + this.showPopup(); + }, + initCombox: function() { + var me = this; + this.items = this.items || []; + for (var i = 0; i < this.items.length; i++) { + var item = this.items[i]; + item.uiName = "listitem"; + item.index = i; + item.onclick = function() { + me.selectByIndex(this.index); + }; + } + this.popup = new Menu({ + items: this.items, + uiName: "list", + editor: this.editor, + captureWheel: true, + combox: this + }); + + this.initSplitButton(); + }, + _SplitButton_postRender: SplitButton.prototype.postRender, + postRender: function() { + this._SplitButton_postRender(); + this.setLabel(this.label || ""); + this.setValue(this.initValue || ""); + }, + showPopup: function() { + var rect = uiUtils.getClientRect(this.getDom()); + rect.top += 1; + rect.bottom -= 1; + rect.height -= 2; + this.popup.showAnchorRect(rect); + }, + getValue: function() { + return this.value; + }, + setValue: function(value) { + var index = this.indexByValue(value); + if (index != -1) { + this.selectedIndex = index; + this.setLabel(this.items[index].label); + this.value = this.items[index].value; + } else { + this.selectedIndex = -1; + this.setLabel(this.getLabelForUnknowValue(value)); + this.value = value; + } + }, + setLabel: function(label) { + this.getDom("button_body").innerHTML = label; + this.label = label; + }, + getLabelForUnknowValue: function(value) { + return value; + }, + indexByValue: function(value) { + for (var i = 0; i < this.items.length; i++) { + if (value == this.items[i].value) { + return i; + } + } + return -1; + }, + getItem: function(index) { + return this.items[index]; + }, + selectByIndex: function(index) { + if ( + index < this.items.length && + this.fireEvent("select", index) !== false + ) { + this.selectedIndex = index; + this.value = this.items[index].value; + this.setLabel(this.items[index].label); + } + } + }; + utils.inherits(Combox, SplitButton); +})(); + + +// ui/dialog.js +///import core +///import uicore +///import ui/mask.js +///import ui/button.js +(function() { + var utils = baidu.editor.utils, + domUtils = baidu.editor.dom.domUtils, + uiUtils = baidu.editor.ui.uiUtils, + Mask = baidu.editor.ui.Mask, + UIBase = baidu.editor.ui.UIBase, + Button = baidu.editor.ui.Button, + Dialog = (baidu.editor.ui.Dialog = function(options) { + if (options.name) { + var name = options.name; + var cssRules = options.cssRules; + if (!options.className) { + options.className = "edui-for-" + name; + } + if (cssRules) { + options.cssRules = + ".edui-for-" + name + " .edui-dialog-content {" + cssRules + "}"; + } + } + this.initOptions( + utils.extend( + { + autoReset: true, + draggable: true, + onok: function() {}, + oncancel: function() {}, + onclose: function(t, ok) { + return ok ? this.onok() : this.oncancel(); + }, + //是否控制dialog中的scroll事件, 默认为不阻止 + holdScroll: false + }, + options + ) + ); + this.initDialog(); + }); + var modalMask; + var dragMask; + var activeDialog; + Dialog.prototype = { + draggable: false, + uiName: "dialog", + initDialog: function() { + var me = this, + theme = this.editor.options.theme; + if (this.cssRules) { + this.cssRules = ".edui-" + theme + " " + this.cssRules; + utils.cssRule("edui-customize-" + this.name + "-style", this.cssRules); + } + this.initUIBase(); + this.modalMask = + modalMask || + (modalMask = new Mask({ + className: "edui-dialog-modalmask", + theme: theme, + onclick: function() { + activeDialog && activeDialog.close(false); + } + })); + this.dragMask = + dragMask || + (dragMask = new Mask({ + className: "edui-dialog-dragmask", + theme: theme + })); + this.closeButton = new Button({ + className: "edui-dialog-closebutton", + title: me.closeDialog, + theme: theme, + onclick: function() { + me.close(false); + } + }); + + this.fullscreen && this.initResizeEvent(); + + if (this.buttons) { + for (var i = 0; i < this.buttons.length; i++) { + if (!(this.buttons[i] instanceof Button)) { + this.buttons[i] = new Button( + utils.extend( + this.buttons[i], + { + editor: this.editor + }, + true + ) + ); + } + } + } + }, + initResizeEvent: function() { + var me = this; + + + + domUtils.on(window, "resize", function() { + + if (me._hidden || me._hidden === undefined) { + return; + } + + if (me.__resizeTimer) { + window.clearTimeout(me.__resizeTimer); + } + + me.__resizeTimer = window.setTimeout(function() { + me.__resizeTimer = null; + + + + var dialogWrapNode = me.getDom(), + contentNode = me.getDom("content"), + wrapRect = UE.ui.uiUtils.getClientRect(dialogWrapNode), + contentRect = UE.ui.uiUtils.getClientRect(contentNode), + vpRect = uiUtils.getViewportRect(); + + contentNode.style.width = + vpRect.width - wrapRect.width + contentRect.width + "px"; + contentNode.style.height = + vpRect.height - wrapRect.height + contentRect.height + "px"; + + dialogWrapNode.style.width = vpRect.width + "px"; + dialogWrapNode.style.height = vpRect.height + "px"; + + me.fireEvent("resize"); + }, 100); + }); + }, + fitSize: function() { + // console.log('fitSize.dialog') + var popBodyEl = this.getDom("body"); + var $foot = popBodyEl.querySelector('.edui-dialog-foot'); + var heightWithoutBody = 70; + if(!$foot){ + heightWithoutBody = 30; + } + var size = this.mesureSize(); + var winSize = uiUtils.getViewportRect(); + var width = size.width; + var height = size.height - heightWithoutBody; + var maxWidth = winSize.width - 2; + var maxHeight = winSize.height - heightWithoutBody - 2; + if(width > maxWidth){ + height = height * maxWidth / width; + width = maxWidth; + } + if(height > maxHeight){ + width = width * maxHeight / height; + height = maxHeight; + } + var scale = (width / size.width); + // console.log('size', {sizeWidth:size.width,sizeHeight:size.height,width,height,scale}); + // console.log('popBodyEl',popBodyEl, popBodyEl.querySelector('.edui-dialog-foot')); + // window._xxx = popBodyEl; + var $content = popBodyEl.querySelector('.edui-dialog-content'); + if(!$content.dataset.dialogScaled){ + $content.dataset.dialogScaled = true + $content.style.width = (width)+'px'; + $content.style.height = (height)+'px'; + var $iframe = popBodyEl.querySelector('.edui-dialog-content iframe'); + $iframe.style.width = (size.width) +'px'; + $iframe.style.height = (size.height) +'px'; + $iframe.style.transformOrigin = '0 0'; + $iframe.style.transform = 'scale('+scale+')'; + size.width = width + size.height = height + heightWithoutBody + } + popBodyEl.style.width = size.width + "px"; + popBodyEl.style.height = size.height + "px"; + return size; + }, + safeSetOffset: function(offset) { + var me = this; + var el = me.getDom(); + var vpRect = uiUtils.getViewportRect(); + var rect = uiUtils.getClientRect(el); + var left = offset.left; + if (left + rect.width > vpRect.right) { + left = vpRect.right - rect.width; + } + var top = offset.top; + if (top + rect.height > vpRect.bottom) { + top = vpRect.bottom - rect.height; + } + el.style.left = Math.max(left, 0) + "px"; + el.style.top = Math.max(top, 0) + "px"; + }, + showAtCenter: function() { + var vpRect = uiUtils.getViewportRect(); + + if (!this.fullscreen) { + this.getDom().style.display = ""; + var popSize = this.fitSize(); + var titleHeight = this.getDom("titlebar").offsetHeight | 0; + var left = vpRect.width / 2 - popSize.width / 2; + var top = + vpRect.height / 2 - (popSize.height - titleHeight) / 2 - titleHeight; + var popEl = this.getDom(); + this.safeSetOffset({ + left: Math.max(left | 0, 0), + top: Math.max(top | 0, 0) + }); + if (!domUtils.hasClass(popEl, "edui-state-centered")) { + popEl.className += " edui-state-centered"; + } + } else { + var dialogWrapNode = this.getDom(), + contentNode = this.getDom("content"); + + dialogWrapNode.style.display = "block"; + + var wrapRect = UE.ui.uiUtils.getClientRect(dialogWrapNode), + contentRect = UE.ui.uiUtils.getClientRect(contentNode); + dialogWrapNode.style.left = "-100000px"; + + contentNode.style.width = + vpRect.width - wrapRect.width + contentRect.width + "px"; + contentNode.style.height = + vpRect.height - wrapRect.height + contentRect.height + "px"; + + dialogWrapNode.style.width = vpRect.width + "px"; + dialogWrapNode.style.height = vpRect.height + "px"; + dialogWrapNode.style.left = 0; + + //保存环境的overflow值 + this._originalContext = { + html: { + overflowX: document.documentElement.style.overflowX, + overflowY: document.documentElement.style.overflowY + }, + body: { + overflowX: document.body.style.overflowX, + overflowY: document.body.style.overflowY + } + }; + + document.documentElement.style.overflowX = "hidden"; + document.documentElement.style.overflowY = "hidden"; + document.body.style.overflowX = "hidden"; + document.body.style.overflowY = "hidden"; + } + + this._show(); + }, + getContentHtml: function() { + var contentHtml = ""; + if (typeof this.content == "string") { + contentHtml = this.content; + } else if (this.iframeUrl) { + contentHtml = + ''; + } + return contentHtml; + }, + getHtmlTpl: function() { + var footHtml = ""; + + if (this.buttons) { + var buff = []; + for (var i = 0; i < this.buttons.length; i++) { + buff[i] = this.buttons[i].renderHtml(); + } + footHtml = + '
    ' + + '
    ' + + buff.join("") + + "
    " + + "
    "; + } + + return ( + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '' + + (this.title || "") + + "" + + "
    " + + this.closeButton.renderHtml() + + "
    " + + '
    ' + + (this.autoReset ? "" : this.getContentHtml()) + + "
    " + + footHtml + + "
    " + ); + }, + postRender: function() { + // todo: 保持居中/记住上次关闭位置选项 + if (!this.modalMask.getDom()) { + this.modalMask.render(); + this.modalMask.hide(); + } + if (!this.dragMask.getDom()) { + this.dragMask.render(); + this.dragMask.hide(); + } + var me = this; + this.addListener("show", function() { + me.modalMask.show(this.getDom().style.zIndex - 2); + }); + this.addListener("hide", function() { + me.modalMask.hide(); + }); + if (this.buttons) { + for (var i = 0; i < this.buttons.length; i++) { + this.buttons[i].postRender(); + } + } + domUtils.on(window, "resize", function() { + setTimeout(function() { + if (!me.isHidden()) { + me.safeSetOffset(uiUtils.getClientRect(me.getDom())); + } + }); + }); + + //hold住scroll事件,防止dialog的滚动影响页面 + // if( this.holdScroll ) { + // + // if( !me.iframeUrl ) { + // domUtils.on( document.getElementById( me.id + "_iframe"), !browser.gecko ? "mousewheel" : "DOMMouseScroll", function(e){ + // domUtils.preventDefault(e); + // } ); + // } else { + // me.addListener('dialogafterreset', function(){ + // window.setTimeout(function(){ + // var iframeWindow = document.getElementById( me.id + "_iframe").contentWindow; + // + // if( browser.ie ) { + // + // var timer = window.setInterval(function(){ + // + // if( iframeWindow.document && iframeWindow.document.body ) { + // window.clearInterval( timer ); + // timer = null; + // domUtils.on( iframeWindow.document.body, !browser.gecko ? "mousewheel" : "DOMMouseScroll", function(e){ + // domUtils.preventDefault(e); + // } ); + // } + // + // }, 100); + // + // } else { + // domUtils.on( iframeWindow, !browser.gecko ? "mousewheel" : "DOMMouseScroll", function(e){ + // domUtils.preventDefault(e); + // } ); + // } + // + // }, 1); + // }); + // } + // + // } + this._hide(); + }, + mesureSize: function() { + var body = this.getDom("body"); + var width = uiUtils.getClientRect(this.getDom("content")).width; + var dialogBodyStyle = body.style; + dialogBodyStyle.width = width; + return uiUtils.getClientRect(body); + }, + _onTitlebarMouseDown: function(evt, el) { + if (this.draggable) { + var rect; + var vpRect = uiUtils.getViewportRect(); + var me = this; + uiUtils.startDrag(evt, { + ondragstart: function() { + rect = uiUtils.getClientRect(me.getDom()); + me.getDom("contmask").style.visibility = "visible"; + me.dragMask.show(me.getDom().style.zIndex - 1); + }, + ondragmove: function(x, y) { + var left = rect.left + x; + var top = rect.top + y; + me.safeSetOffset({ + left: left, + top: top + }); + }, + ondragstop: function() { + me.getDom("contmask").style.visibility = "hidden"; + domUtils.removeClasses(me.getDom(), ["edui-state-centered"]); + me.dragMask.hide(); + } + }); + } + }, + reset: function() { + this.getDom("content").innerHTML = this.getContentHtml(); + this.fireEvent("dialogafterreset"); + }, + _show: function() { + if (this._hidden) { + this.getDom().style.display = ""; + + //要高过编辑器的zindxe + this.editor.container.style.zIndex && + (this.getDom().style.zIndex = + this.editor.container.style.zIndex * 1 + 10); + this._hidden = false; + this.fireEvent("show"); + baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = + this.getDom().style.zIndex - 4; + } + }, + isHidden: function() { + return this._hidden; + }, + _hide: function() { + if (!this._hidden) { + var wrapNode = this.getDom(); + wrapNode.style.display = "none"; + wrapNode.style.zIndex = ""; + wrapNode.style.width = ""; + wrapNode.style.height = ""; + this._hidden = true; + this.fireEvent("hide"); + } + }, + open: function() { + if (this.autoReset) { + //有可能还没有渲染 + try { + this.reset(); + } catch (e) { + this.render(); + this.open(); + } + } + this.showAtCenter(); + if (this.iframeUrl) { + try { + this.getDom("iframe").focus(); + } catch (ex) {} + } + activeDialog = this; + }, + _onCloseButtonClick: function(evt, el) { + this.close(false); + }, + close: function(ok) { + if (this.fireEvent("close", ok) !== false) { + //还原环境 + if (this.fullscreen) { + document.documentElement.style.overflowX = this._originalContext.html.overflowX; + document.documentElement.style.overflowY = this._originalContext.html.overflowY; + document.body.style.overflowX = this._originalContext.body.overflowX; + document.body.style.overflowY = this._originalContext.body.overflowY; + delete this._originalContext; + } + this._hide(); + + //销毁content + var content = this.getDom("content"); + var iframe = this.getDom("iframe"); + if (content && iframe) { + var doc = iframe.contentDocument || iframe.contentWindow.document; + doc && (doc.body.innerHTML = ""); + domUtils.remove(content); + } + } + } + }; + utils.inherits(Dialog, UIBase); +})(); + + +// ui/menubutton.js +///import core +///import uicore +///import ui/menu.js +///import ui/splitbutton.js +(function() { + var utils = baidu.editor.utils, + Menu = baidu.editor.ui.Menu, + SplitButton = baidu.editor.ui.SplitButton, + MenuButton = (baidu.editor.ui.MenuButton = function(options) { + this.initOptions(options); + this.initMenuButton(); + }); + MenuButton.prototype = { + initMenuButton: function() { + var me = this; + this.uiName = "menubutton"; + this.popup = new Menu({ + items: me.items, + className: me.className, + editor: me.editor + }); + this.popup.addListener("show", function() { + var list = this; + for (var i = 0; i < list.items.length; i++) { + list.items[i].removeState("checked"); + if (list.items[i].value == me._value) { + list.items[i].addState("checked"); + this.value = me._value; + } + } + }); + this.initSplitButton(); + }, + setValue: function(value) { + this._value = value; + } + }; + utils.inherits(MenuButton, SplitButton); +})(); + + +// ui/multiMenu.js +///import core +///import uicore +///commands 表情 +(function() { + var utils = baidu.editor.utils, + Popup = baidu.editor.ui.Popup, + SplitButton = baidu.editor.ui.SplitButton, + MultiMenuPop = (baidu.editor.ui.MultiMenuPop = function(options) { + this.initOptions(options); + this.initMultiMenu(); + }); + + MultiMenuPop.prototype = { + initMultiMenu: function() { + var me = this; + this.popup = new Popup({ + content: "", + editor: me.editor, + iframe_rendered: false, + onshow: function() { + if (!this.iframe_rendered) { + this.iframe_rendered = true; + this.getDom("content").innerHTML = + ''; + me.editor.container.style.zIndex && + (this.getDom().style.zIndex = + me.editor.container.style.zIndex * 1 + 1); + } + } + // canSideUp:false, + // canSideLeft:false + }); + this.onbuttonclick = function() { + this.showPopup(); + }; + this.initSplitButton(); + } + }; + + utils.inherits(MultiMenuPop, SplitButton); +})(); + + +// ui/shortcutmenu.js +(function() { + var UI = baidu.editor.ui, + UIBase = UI.UIBase, + uiUtils = UI.uiUtils, + utils = baidu.editor.utils, + domUtils = baidu.editor.dom.domUtils; + + var allMenus = [], //存储所有快捷菜单 + timeID, + isSubMenuShow = false; //是否有子pop显示 + + var ShortCutMenu = (UI.ShortCutMenu = function(options) { + this.initOptions(options); + this.initShortCutMenu(); + }); + + ShortCutMenu.postHide = hideAllMenu; + + ShortCutMenu.prototype = { + isHidden: true, + SPACE: 5, + initShortCutMenu: function() { + this.items = this.items || []; + this.initUIBase(); + this.initItems(); + this.initEvent(); + allMenus.push(this); + }, + initEvent: function() { + var me = this, + doc = me.editor.document; + + /* + domUtils.on(doc, "mousemove", function(e) { + if (me.isHidden === false) { + //有pop显示就不隐藏快捷菜单 + if (me.getSubMenuMark() || me.eventType == "contextmenu") return; + + var flag = true, + el = me.getDom(), + wt = el.offsetWidth, + ht = el.offsetHeight, + distanceX = wt / 2 + me.SPACE, //距离中心X标准 + distanceY = ht / 2, //距离中心Y标准 + x = Math.abs(e.screenX - me.left), //离中心距离横坐标 + y = Math.abs(e.screenY - me.top); //离中心距离纵坐标 + + clearTimeout(timeID); + timeID = setTimeout(function() { + if (y > 0 && y < distanceY) { + me.setOpacity(el, "1"); + } else if (y > distanceY && y < distanceY + 70) { + me.setOpacity(el, "0.5"); + flag = false; + } else if (y > distanceY + 70 && y < distanceY + 140) { + me.hide(); + } + + if (flag && x > 0 && x < distanceX) { + me.setOpacity(el, "1"); + } else if (x > distanceX && x < distanceX + 70) { + me.setOpacity(el, "0.5"); + } else if (x > distanceX + 70 && x < distanceX + 140) { + console.log('hide') + me.hide(); + } + }); + } + }); + */ + //ie\ff下 mouseout不准 + /* + if (browser.chrome) { + domUtils.on(doc, "mouseout", function(e) { + var relatedTgt = e.relatedTarget || e.toElement; + + if (relatedTgt == null || relatedTgt.tagName == "HTML") { + me.hide(); + } + }); + } + */ + + me.editor.addListener("afterhidepop", function() { + if (!me.isHidden) { + isSubMenuShow = true; + } + }); + }, + initItems: function() { + if (utils.isArray(this.items)) { + for (var i = 0, len = this.items.length; i < len; i++) { + var item = this.items[i].toLowerCase(); + + if (UI[item]) { + this.items[i] = new UI[item](this.editor); + this.items[i].className += " edui-shortcutsubmenu "; + } + } + } + }, + setOpacity: function(el, value) { + if (browser.ie && browser.version < 9) { + el.style.filter = "alpha(opacity = " + parseFloat(value) * 100 + ");"; + } else { + el.style.opacity = value; + } + }, + getSubMenuMark: function() { + isSubMenuShow = false; + var layerEle = uiUtils.getFixedLayer(); + var list = domUtils.getElementsByTagName(layerEle, "div", function(node) { + return domUtils.hasClass(node, "edui-shortcutsubmenu edui-popup"); + }); + + for (var i = 0, node; (node = list[i++]); ) { + if (node.style.display != "none") { + isSubMenuShow = true; + } + } + return isSubMenuShow; + }, + show: function(e, hasContextmenu) { + var me = this, + offset = {}, + el = this.getDom(), + fixedlayer = uiUtils.getFixedLayer(); + + function setPos(offset) { + if (offset.left < 0) { + offset.left = 0; + } + if (offset.top < 0) { + offset.top = 0; + } + el.style.cssText = + "position:absolute;left:" + + offset.left + + "px;top:" + + offset.top + + "px;"; + } + + function setPosByCxtMenu(menu) { + if (!menu.tagName) { + menu = menu.getDom(); + } + offset.left = parseInt(menu.style.left); + offset.top = parseInt(menu.style.top); + offset.top -= el.offsetHeight + 15; + setPos(offset); + } + + me.eventType = e.type; + el.style.cssText = "display:block;left:-9999px"; + + if (e.type == "contextmenu" && hasContextmenu) { + var menu = domUtils.getElementsByTagName( + fixedlayer, + "div", + "edui-contextmenu" + )[0]; + if (menu) { + setPosByCxtMenu(menu); + } else { + me.editor.addListener("aftershowcontextmenu", function(type, menu) { + setPosByCxtMenu(menu); + }); + } + } else { + offset = uiUtils.getViewportOffsetByEvent(e); + offset.top -= el.offsetHeight + me.SPACE; + offset.left += me.SPACE + 20; + setPos(offset); + me.setOpacity(el, 1); + } + + me.isHidden = false; + me.left = e.screenX + el.offsetWidth / 2 - me.SPACE; + me.top = e.screenY - el.offsetHeight / 2 - me.SPACE; + + if (me.editor) { + el.style.zIndex = me.editor.container.style.zIndex * 1 + 10; + fixedlayer.style.zIndex = el.style.zIndex - 1; + } + }, + hide: function() { + if (this.getDom()) { + this.getDom().style.display = "none"; + } + this.isHidden = true; + }, + postRender: function() { + if (utils.isArray(this.items)) { + for (var i = 0, item; (item = this.items[i++]); ) { + item.postRender(); + } + } + }, + getHtmlTpl: function() { + var buff; + if (utils.isArray(this.items)) { + buff = []; + for (var i = 0; i < this.items.length; i++) { + buff[i] = this.items[i].renderHtml(); + } + buff = buff.join(""); + } else { + buff = this.items; + } + + return ( + '
    ' + + buff + + "
    " + ); + } + }; + + utils.inherits(ShortCutMenu, UIBase); + + function hideAllMenu(e) { + var tgt = e.target || e.srcElement, + cur = domUtils.findParent( + tgt, + function(node) { + return ( + domUtils.hasClass(node, "edui-shortcutmenu") || + domUtils.hasClass(node, "edui-popup") + ); + }, + true + ); + + if (!cur) { + for (var i = 0, menu; (menu = allMenus[i++]); ) { + menu.hide(); + } + } + } + + domUtils.on(document, "mousedown", function(e) { + hideAllMenu(e); + }); + + domUtils.on(window, "scroll", function(e) { + hideAllMenu(e); + }); +})(); + + +// ui/breakline.js +(function() { + var utils = baidu.editor.utils, + UIBase = baidu.editor.ui.UIBase, + Breakline = (baidu.editor.ui.Breakline = function(options) { + this.initOptions(options); + this.initSeparator(); + }); + Breakline.prototype = { + uiName: "Breakline", + initSeparator: function() { + this.initUIBase(); + }, + getHtmlTpl: function() { + return "
    "; + } + }; + utils.inherits(Breakline, UIBase); +})(); + + +// ui/message.js +///import core +///import uicore +(function() { + var utils = baidu.editor.utils, + domUtils = baidu.editor.dom.domUtils, + UIBase = baidu.editor.ui.UIBase, + Message = (baidu.editor.ui.Message = function(options) { + this.initOptions(options); + this.initMessage(); + }); + + Message.prototype = { + initMessage: function() { + this.initUIBase(); + }, + getHtmlTpl: function() { + return ( + '
    ' + + '
    ×
    ' + + '
    ' + + ' ' + + '
    ' + + '
    ' + + "
    " + + "
    " + + "
    " + ); + }, + reset: function(opt) { + var me = this; + if (!opt.keepshow) { + clearTimeout(this.timer); + me.timer = setTimeout(function() { + me.hide(); + }, opt.timeout || 4000); + } + + opt.content !== undefined && me.setContent(opt.content); + opt.type !== undefined && me.setType(opt.type); + + me.show(); + }, + postRender: function() { + var me = this, + closer = this.getDom("closer"); + closer && + domUtils.on(closer, "click", function() { + me.hide(); + }); + }, + setContent: function(content) { + this.getDom("content").innerHTML = content; + }, + setType: function(type) { + type = type || "info"; + var body = this.getDom("body"); + body.className = body.className.replace( + /edui-message-type-[\w-]+/, + "edui-message-type-" + type + ); + }, + getContent: function() { + return this.getDom("content").innerHTML; + }, + getType: function() { + var arr = this.getDom("body").match(/edui-message-type-([\w-]+)/); + return arr ? arr[1] : ""; + }, + show: function() { + this.getDom().style.display = "block"; + }, + hide: function() { + var dom = this.getDom(); + if (dom) { + dom.style.display = "none"; + dom.parentNode && dom.parentNode.removeChild(dom); + } + } + }; + + utils.inherits(Message, UIBase); +})(); + + +// adapter/editorui.js +//ui跟编辑器的适配層 +//那个按钮弹出是dialog,是下拉筐等都是在这个js中配置 +//自己写的ui也要在这里配置,放到baidu.editor.ui下边,当编辑器实例化的时候会根据ueditor.config中的toolbars找到相应的进行实例化 +(function() { + var utils = baidu.editor.utils; + var editorui = baidu.editor.ui; + var _Dialog = editorui.Dialog; + editorui.buttons = {}; + + editorui.Dialog = function(options) { + var dialog = new _Dialog(options); + dialog.addListener("hide", function() { + if (dialog.editor) { + var editor = dialog.editor; + try { + if (browser.gecko) { + var y = editor.window.scrollY, + x = editor.window.scrollX; + editor.body.focus(); + editor.window.scrollTo(x, y); + } else { + editor.focus(); + } + } catch (ex) {} + } + }); + return dialog; + }; + + var iframeUrlMap = { + anchor: "~/dialogs/anchor/anchor.html?20220503", + insertimage: "~/dialogs/image/image.html?20220503", + link: "~/dialogs/link/link.html?20220503", + spechars: "~/dialogs/spechars/spechars.html?20220503", + searchreplace: "~/dialogs/searchreplace/searchreplace.html?20220503", + insertvideo: "~/dialogs/video/video.html?20220503", + help: "~/dialogs/help/help.html?20220503", + preview: "~/dialogs/preview/preview.html?20220503", + emotion: "~/dialogs/emotion/emotion.html?20220503", + wordimage: "~/dialogs/wordimage/wordimage.html?20220902", + formula: "~/dialogs/formula/formula.html?20220902", + attachment: "~/dialogs/attachment/attachment.html?20220503", + insertframe: "~/dialogs/insertframe/insertframe.html?20220503", + edittip: "~/dialogs/table/edittip.html?20220503", + edittable: "~/dialogs/table/edittable.html?20220503", + edittd: "~/dialogs/table/edittd.html?20220503", + scrawl: "~/dialogs/scrawl/scrawl.html?20220503", + template: "~/dialogs/template/template.html?20220503", + background: "~/dialogs/background/background.html?20220503", + }; + //为工具栏添加按钮,以下都是统一的按钮触发命令,所以写在一起 + var btnCmds = [ + "undo", + "redo", + "formatmatch", + "bold", + "italic", + "underline", + "fontborder", + "touppercase", + "tolowercase", + "strikethrough", + "subscript", + "superscript", + "source", + "indent", + "outdent", + "blockquote", + "pasteplain", + "pagebreak", + "selectall", + "print", + "horizontal", + "removeformat", + "time", + "date", + "unlink", + "insertparagraphbeforetable", + "insertrow", + "insertcol", + "mergeright", + "mergedown", + "deleterow", + "deletecol", + "splittorows", + "splittocols", + "splittocells", + "mergecells", + "deletetable", + ]; + + for (var i = 0, ci; (ci = btnCmds[i++]); ) { + ci = ci.toLowerCase(); + editorui[ci] = (function(cmd) { + return function(editor) { + var ui = new editorui.Button({ + className: "edui-for-" + cmd, + title: + editor.options.labelMap[cmd] || + editor.getLang("labelMap." + cmd) || + "", + onclick: function() { + editor.execCommand(cmd); + }, + theme: editor.options.theme, + showText: false + }); + editorui.buttons[cmd] = ui; + editor.addListener("selectionchange", function( + type, + causeByUi, + uiReady + ) { + var state = editor.queryCommandState(cmd); + // console.log('selectionchange',cmd,uiReady,state); + if (state == -1) { + ui.setDisabled(true); + ui.setChecked(false); + } else { + if (!uiReady) { + ui.setDisabled(false); + ui.setChecked(state); + } + } + }); + return ui; + }; + })(ci); + } + + //清除文档 + editorui.cleardoc = function(editor) { + var ui = new editorui.Button({ + className: "edui-for-cleardoc", + title: + editor.options.labelMap.cleardoc || + editor.getLang("labelMap.cleardoc") || + "", + theme: editor.options.theme, + onclick: function() { + if (confirm(editor.getLang("confirmClear"))) { + editor.execCommand("cleardoc"); + } + } + }); + editorui.buttons["cleardoc"] = ui; + editor.addListener("selectionchange", function() { + ui.setDisabled(editor.queryCommandState("cleardoc") == -1); + }); + return ui; + }; + + //排版,图片排版,文字方向 + var typeset = { + justify: ["left", "right", "center", "justify"], + imagefloat: ["none", "left", "center", "right"], + directionality: ["ltr", "rtl"] + }; + + for (var p in typeset) { + (function(cmd, val) { + for (var i = 0, ci; (ci = val[i++]); ) { + (function(cmd2) { + editorui[cmd.replace("float", "") + cmd2] = function(editor) { + var ui = new editorui.Button({ + className: "edui-for-" + cmd.replace("float", "") + cmd2, + title: + editor.options.labelMap[cmd.replace("float", "") + cmd2] || + editor.getLang( + "labelMap." + cmd.replace("float", "") + cmd2 + ) || + "", + theme: editor.options.theme, + onclick: function() { + editor.execCommand(cmd, cmd2); + } + }); + editorui.buttons[cmd] = ui; + editor.addListener("selectionchange", function( + type, + causeByUi, + uiReady + ) { + ui.setDisabled(editor.queryCommandState(cmd) == -1); + ui.setChecked(editor.queryCommandValue(cmd) == cmd2 && !uiReady); + }); + return ui; + }; + })(ci); + } + })(p, typeset[p]); + } + + //字体颜色和背景颜色 + for (var i = 0, ci; (ci = ["backcolor", "forecolor"][i++]); ) { + editorui[ci] = (function(cmd) { + return function(editor) { + var ui = new editorui.ColorButton({ + className: "edui-for-" + cmd, + color: "default", + title: + editor.options.labelMap[cmd] || + editor.getLang("labelMap." + cmd) || + "", + editor: editor, + onpickcolor: function(t, color) { + editor.execCommand(cmd, color); + }, + onpicknocolor: function() { + editor.execCommand(cmd, "default"); + this.setColor("transparent"); + this.color = "default"; + }, + onbuttonclick: function() { + editor.execCommand(cmd, this.color); + } + }); + editorui.buttons[cmd] = ui; + editor.addListener("selectionchange", function() { + ui.setDisabled(editor.queryCommandState(cmd) == -1); + }); + return ui; + }; + })(ci); + } + + var dialogBtns = { + noOk: ["searchreplace", "help", "spechars", "preview"], + ok: [ + "attachment", + "anchor", + "link", + "insertimage", + "insertframe", + "wordimage", + "insertvideo", + "insertframe", + "edittip", + "edittable", + "edittd", + "scrawl", + "template", + "formula", + "background", + ] + }; + + for (var p in dialogBtns) { + (function(type, vals) { + for (var i = 0, ci; (ci = vals[i++]); ) { + //todo opera下存在问题 + if (browser.opera && ci === "searchreplace") { + continue; + } + (function(cmd) { + editorui[cmd] = function(editor, iframeUrl, title) { + iframeUrl = + iframeUrl || + (editor.options.iframeUrlMap || {})[cmd] || + iframeUrlMap[cmd]; + title = + editor.options.labelMap[cmd] || + editor.getLang("labelMap." + cmd) || + ""; + + var dialog; + //没有iframeUrl不创建dialog + if (iframeUrl) { + dialog = new editorui.Dialog( + utils.extend( + { + iframeUrl: editor.ui.mapUrl(iframeUrl), + editor: editor, + className: "edui-for-" + cmd, + title: title, + holdScroll: cmd === "insertimage", + fullscreen: /preview/.test(cmd), + closeDialog: editor.getLang("closeDialog") + }, + type == "ok" + ? { + buttons: [ + { + className: "edui-okbutton", + label: editor.getLang("ok"), + editor: editor, + onclick: function() { + dialog.close(true); + } + }, + { + className: "edui-cancelbutton", + label: editor.getLang("cancel"), + editor: editor, + onclick: function() { + dialog.close(false); + } + } + ] + } + : {} + ) + ); + + editor.ui._dialogs[cmd + "Dialog"] = dialog; + } + + var ui = new editorui.Button({ + className: "edui-for-" + cmd, + title: title, + onclick: function() { + if(editor.options.toolbarCallback){ + if(true === editor.options.toolbarCallback(cmd,editor)){ + return; + } + } + if (dialog) { + switch (cmd) { + case "wordimage": + var images = editor.execCommand("wordimage"); + if (images && images.length) { + dialog.render(); + dialog.open(); + } + break; + case "scrawl": + if (editor.queryCommandState("scrawl") != -1) { + dialog.render(); + dialog.open(); + } + + break; + default: + dialog.render(); + dialog.open(); + } + } + }, + theme: editor.options.theme, + disabled: + (cmd == "scrawl" && editor.queryCommandState("scrawl") == -1) + }); + editorui.buttons[cmd] = ui; + editor.addListener("selectionchange", function() { + //只存在于右键菜单而无工具栏按钮的ui不需要检测状态 + var unNeedCheckState = { edittable: 1 }; + if (cmd in unNeedCheckState) return; + + var state = editor.queryCommandState(cmd); + if (ui.getDom()) { + ui.setDisabled(state == -1); + ui.setChecked(state); + } + }); + + return ui; + }; + })(ci.toLowerCase()); + } + })(p, dialogBtns[p]); + } + + editorui.insertcode = function(editor, list, title) { + list = editor.options["insertcode"] || []; + title = + editor.options.labelMap["insertcode"] || + editor.getLang("labelMap.insertcode") || + ""; + // if (!list.length) return; + var items = []; + utils.each(list, function(key, val) { + items.push({ + label: key, + value: val, + theme: editor.options.theme, + renderLabelHtml: function() { + return ( + '
    ' + (this.label || "") + "
    " + ); + } + }); + }); + + var ui = new editorui.Combox({ + editor: editor, + items: items, + onselect: function(t, index) { + editor.execCommand("insertcode", this.items[index].value); + }, + onbuttonclick: function() { + this.showPopup(); + }, + title: title, + initValue: title, + className: "edui-for-insertcode", + indexByValue: function(value) { + if (value) { + for (var i = 0, ci; (ci = this.items[i]); i++) { + if (ci.value.indexOf(value) != -1) return i; + } + } + + return -1; + } + }); + editorui.buttons["insertcode"] = ui; + editor.addListener("selectionchange", function(type, causeByUi, uiReady) { + if (!uiReady) { + var state = editor.queryCommandState("insertcode"); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue("insertcode"); + if (!value) { + ui.setValue(title); + return; + } + //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号 + value && (value = value.replace(/['"]/g, "").split(",")[0]); + ui.setValue(value); + } + } + }); + return ui; + }; + editorui.fontfamily = function(editor, list, title) { + list = editor.options["fontfamily"] || []; + title = + editor.options.labelMap["fontfamily"] || + editor.getLang("labelMap.fontfamily") || + ""; + if (!list.length) return; + for (var i = 0, ci, items = []; (ci = list[i]); i++) { + var langLabel = editor.getLang("fontfamily")[ci.name] || ""; + (function(key, val) { + items.push({ + label: key, + value: val, + theme: editor.options.theme, + renderLabelHtml: function() { + return ( + '
    ' + + (this.label || "") + + "
    " + ); + } + }); + })(ci.label || langLabel, ci.val); + } + var ui = new editorui.Combox({ + editor: editor, + items: items, + onselect: function(t, index) { + editor.execCommand("FontFamily", this.items[index].value); + }, + onbuttonclick: function() { + this.showPopup(); + }, + title: title, + initValue: title, + className: "edui-for-fontfamily", + indexByValue: function(value) { + if (value) { + for (var i = 0, ci; (ci = this.items[i]); i++) { + if (ci.value.indexOf(value) != -1) return i; + } + } + + return -1; + } + }); + editorui.buttons["fontfamily"] = ui; + editor.addListener("selectionchange", function(type, causeByUi, uiReady) { + if (!uiReady) { + var state = editor.queryCommandState("FontFamily"); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue("FontFamily"); + //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号 + value && (value = value.replace(/['"]/g, "").split(",")[0]); + ui.setValue(value); + } + } + }); + return ui; + }; + + editorui.fontsize = function(editor, list, title) { + title = + editor.options.labelMap["fontsize"] || + editor.getLang("labelMap.fontsize") || + ""; + list = list || editor.options["fontsize"] || []; + if (!list.length) return; + var items = []; + for (var i = 0; i < list.length; i++) { + var size = list[i] + "px"; + items.push({ + label: size, + value: size, + theme: editor.options.theme, + renderLabelHtml: function() { + return ( + '
    ' + + (this.label || "") + + "
    " + ); + } + }); + } + var ui = new editorui.Combox({ + editor: editor, + items: items, + title: title, + initValue: title, + onselect: function(t, index) { + editor.execCommand("FontSize", this.items[index].value); + }, + onbuttonclick: function() { + this.showPopup(); + }, + className: "edui-for-fontsize" + }); + editorui.buttons["fontsize"] = ui; + editor.addListener("selectionchange", function(type, causeByUi, uiReady) { + if (!uiReady) { + var state = editor.queryCommandState("FontSize"); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + ui.setValue(editor.queryCommandValue("FontSize")); + } + } + }); + return ui; + }; + + editorui.paragraph = function(editor, list, title) { + title = + editor.options.labelMap["paragraph"] || + editor.getLang("labelMap.paragraph") || + ""; + list = editor.options["paragraph"] || []; + if (utils.isEmptyObject(list)) return; + var items = []; + for (var i in list) { + items.push({ + value: i, + label: list[i] || editor.getLang("paragraph")[i], + theme: editor.options.theme, + renderLabelHtml: function() { + return ( + '
    ' + + (this.label || "") + + "
    " + ); + } + }); + } + var ui = new editorui.Combox({ + editor: editor, + items: items, + title: title, + initValue: title, + className: "edui-for-paragraph", + onselect: function(t, index) { + editor.execCommand("Paragraph", this.items[index].value); + }, + onbuttonclick: function() { + this.showPopup(); + } + }); + editorui.buttons["paragraph"] = ui; + editor.addListener("selectionchange", function(type, causeByUi, uiReady) { + if (!uiReady) { + var state = editor.queryCommandState("Paragraph"); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue("Paragraph"); + var index = ui.indexByValue(value); + if (index != -1) { + ui.setValue(value); + } else { + ui.setValue(ui.initValue); + } + } + } + }); + return ui; + }; + + //自定义标题 + editorui.customstyle = function(editor) { + var list = editor.options["customstyle"] || [], + title = + editor.options.labelMap["customstyle"] || + editor.getLang("labelMap.customstyle") || + ""; + if (!list.length) return; + var langCs = editor.getLang("customstyle"); + for (var i = 0, items = [], t; (t = list[i++]); ) { + (function(t) { + var ck = {}; + ck.label = t.label ? t.label : langCs[t.name]; + ck.style = t.style; + ck.className = t.className; + ck.tag = t.tag; + items.push({ + label: ck.label, + value: ck, + theme: editor.options.theme, + renderLabelHtml: function() { + return ( + '
    ' + + "<" + + ck.tag + + " " + + (ck.className ? ' class="' + ck.className + '"' : "") + + (ck.style ? ' style="' + ck.style + '"' : "") + + ">" + + ck.label + + "" + + "
    " + ); + } + }); + })(t); + } + + var ui = new editorui.Combox({ + editor: editor, + items: items, + title: title, + initValue: title, + className: "edui-for-customstyle", + onselect: function(t, index) { + editor.execCommand("customstyle", this.items[index].value); + }, + onbuttonclick: function() { + this.showPopup(); + }, + indexByValue: function(value) { + for (var i = 0, ti; (ti = this.items[i++]); ) { + if (ti.label == value) { + return i - 1; + } + } + return -1; + } + }); + editorui.buttons["customstyle"] = ui; + editor.addListener("selectionchange", function(type, causeByUi, uiReady) { + if (!uiReady) { + var state = editor.queryCommandState("customstyle"); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue("customstyle"); + var index = ui.indexByValue(value); + if (index != -1) { + ui.setValue(value); + } else { + ui.setValue(ui.initValue); + } + } + } + }); + return ui; + }; + editorui.inserttable = function(editor, iframeUrl, title) { + title = + editor.options.labelMap["inserttable"] || + editor.getLang("labelMap.inserttable") || + ""; + var ui = new editorui.TableButton({ + editor: editor, + title: title, + className: "edui-for-inserttable", + onpicktable: function(t, numCols, numRows) { + editor.execCommand("InsertTable", { + numRows: numRows, + numCols: numCols, + border: 1 + }); + }, + onbuttonclick: function() { + this.showPopup(); + } + }); + editorui.buttons["inserttable"] = ui; + editor.addListener("selectionchange", function() { + ui.setDisabled(editor.queryCommandState("inserttable") == -1); + }); + return ui; + }; + + editorui.lineheight = function(editor) { + var val = editor.options.lineheight || []; + if (!val.length) return; + for (var i = 0, ci, items = []; (ci = val[i++]); ) { + items.push({ + //todo:写死了 + label: ci, + value: ci, + theme: editor.options.theme, + onclick: function() { + editor.execCommand("lineheight", this.value); + } + }); + } + var ui = new editorui.MenuButton({ + editor: editor, + className: "edui-for-lineheight", + title: + editor.options.labelMap["lineheight"] || + editor.getLang("labelMap.lineheight") || + "", + items: items, + onbuttonclick: function() { + var value = editor.queryCommandValue("LineHeight") || this.value; + editor.execCommand("LineHeight", value); + } + }); + editorui.buttons["lineheight"] = ui; + editor.addListener("selectionchange", function() { + var state = editor.queryCommandState("LineHeight"); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue("LineHeight"); + value && ui.setValue((value + "").replace(/cm/, "")); + ui.setChecked(state); + } + }); + return ui; + }; + + var rowspacings = ["top", "bottom"]; + for (var r = 0, ri; (ri = rowspacings[r++]); ) { + (function(cmd) { + editorui["rowspacing" + cmd] = function(editor) { + var val = editor.options["rowspacing" + cmd] || []; + if (!val.length) return null; + for (var i = 0, ci, items = []; (ci = val[i++]); ) { + items.push({ + label: ci, + value: ci, + theme: editor.options.theme, + onclick: function() { + editor.execCommand("rowspacing", this.value, cmd); + } + }); + } + var ui = new editorui.MenuButton({ + editor: editor, + className: "edui-for-rowspacing" + cmd, + title: + editor.options.labelMap["rowspacing" + cmd] || + editor.getLang("labelMap.rowspacing" + cmd) || + "", + items: items, + onbuttonclick: function() { + var value = + editor.queryCommandValue("rowspacing", cmd) || this.value; + editor.execCommand("rowspacing", value, cmd); + } + }); + editorui.buttons[cmd] = ui; + editor.addListener("selectionchange", function() { + var state = editor.queryCommandState("rowspacing", cmd); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue("rowspacing", cmd); + value && ui.setValue((value + "").replace(/%/, "")); + ui.setChecked(state); + } + }); + return ui; + }; + })(ri); + } + //有序,无序列表 + var lists = ["insertorderedlist", "insertunorderedlist"]; + for (var l = 0, cl; (cl = lists[l++]); ) { + (function(cmd) { + editorui[cmd] = function(editor) { + var vals = editor.options[cmd], + _onMenuClick = function() { + editor.execCommand(cmd, this.value); + }, + items = []; + for (var i in vals) { + items.push({ + label: vals[i] || editor.getLang()[cmd][i] || "", + value: i, + theme: editor.options.theme, + onclick: _onMenuClick + }); + } + var ui = new editorui.MenuButton({ + editor: editor, + className: "edui-for-" + cmd, + title: editor.getLang("labelMap." + cmd) || "", + items: items, + onbuttonclick: function() { + var value = editor.queryCommandValue(cmd) || this.value; + editor.execCommand(cmd, value); + } + }); + editorui.buttons[cmd] = ui; + editor.addListener("selectionchange", function() { + var state = editor.queryCommandState(cmd); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue(cmd); + ui.setValue(value); + ui.setChecked(state); + } + }); + return ui; + }; + })(cl); + } + + editorui.fullscreen = function(editor, title) { + title = + editor.options.labelMap["fullscreen"] || + editor.getLang("labelMap.fullscreen") || + ""; + var ui = new editorui.Button({ + className: "edui-for-fullscreen", + title: title, + theme: editor.options.theme, + onclick: function() { + if (editor.ui) { + editor.ui.setFullScreen(!editor.ui.isFullScreen()); + } + this.setChecked(editor.ui.isFullScreen()); + } + }); + editorui.buttons["fullscreen"] = ui; + editor.addListener("selectionchange", function() { + var state = editor.queryCommandState("fullscreen"); + ui.setDisabled(state == -1); + ui.setChecked(editor.ui.isFullScreen()); + }); + return ui; + }; + + // 表情 + editorui["emotion"] = function(editor, iframeUrl) { + var cmd = "emotion"; + var ui = new editorui.MultiMenuPop({ + title: + editor.options.labelMap[cmd] || + editor.getLang("labelMap." + cmd + "") || + "", + editor: editor, + className: "edui-for-" + cmd, + iframeUrl: editor.ui.mapUrl( + iframeUrl || + (editor.options.iframeUrlMap || {})[cmd] || + iframeUrlMap[cmd] + ) + }); + editorui.buttons[cmd] = ui; + + editor.addListener("selectionchange", function() { + ui.setDisabled(editor.queryCommandState(cmd) == -1); + }); + return ui; + }; + + editorui.autotypeset = function(editor) { + var ui = new editorui.AutoTypeSetButton({ + editor: editor, + title: + editor.options.labelMap["autotypeset"] || + editor.getLang("labelMap.autotypeset") || + "", + className: "edui-for-autotypeset", + onbuttonclick: function() { + editor.execCommand("autotypeset"); + } + }); + editorui.buttons["autotypeset"] = ui; + editor.addListener("selectionchange", function() { + ui.setDisabled(editor.queryCommandState("autotypeset") == -1); + }); + return ui; + }; + + /* 简单上传插件 */ + editorui["simpleupload"] = function(editor) { + var name = "simpleupload", + ui = new editorui.Button({ + className: "edui-for-" + name, + title: + editor.options.labelMap[name] || + editor.getLang("labelMap." + name) || + "", + onclick: function() {}, + theme: editor.options.theme, + showText: false + }); + editorui.buttons[name] = ui; + editor.addListener("ready", function() { + var b = ui.getDom("body"), + iconSpan = b.children[0]; + editor.fireEvent("simpleuploadbtnready", iconSpan); + }); + editor.addListener("selectionchange", function(type, causeByUi, uiReady) { + var state = editor.queryCommandState(name); + if (state == -1) { + ui.setDisabled(true); + ui.setChecked(false); + } else { + if (!uiReady) { + ui.setDisabled(false); + ui.setChecked(state); + } + } + }); + return ui; + }; +})(); + + +// adapter/editor.js +///import core +///commands 全屏 +///commandsName FullScreen +///commandsTitle 全屏 +(function () { + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + UIBase = baidu.editor.ui.UIBase, + domUtils = baidu.editor.dom.domUtils; + var nodeStack = []; + + function EditorUI(options) { + this.initOptions(options); + this.initEditorUI(); + } + + EditorUI.prototype = { + uiName: "editor", + initEditorUI: function () { + this.editor.ui = this; + this._dialogs = {}; + this.initUIBase(); + this._initToolbars(); + var editor = this.editor, + me = this; + + editor.addListener("ready", function () { + //提供getDialog方法 + editor.getDialog = function (name) { + return editor.ui._dialogs[name + "Dialog"]; + }; + domUtils.on(editor.window, "scroll", function (evt) { + baidu.editor.ui.Popup.postHide(evt); + }); + //提供编辑器实时宽高(全屏时宽高不变化) + editor.ui._actualFrameWidth = editor.options.initialFrameWidth; + + UE.browser.ie && + UE.browser.version === 6 && + editor.container.ownerDocument.execCommand( + "BackgroundImageCache", + false, + true + ); + + //display bottom-bar label based on config + if (editor.options.elementPathEnabled) { + editor.ui.getDom("elementpath").innerHTML = + '
    ' + + editor.getLang("elementPathTip") + + ":
    "; + } + if (editor.options.wordCount) { + function countFn() { + setCount(editor, me); + domUtils.un(editor.document, "click", arguments.callee); + } + + domUtils.on(editor.document, "click", countFn); + editor.ui.getDom("wordcount").innerHTML = editor.getLang( + "wordCountTip" + ); + } + editor.ui._scale(); + if (editor.options.scaleEnabled) { + if (editor.autoHeightEnabled) { + editor.disableAutoHeight(); + } + me.enableScale(); + } else { + me.disableScale(); + } + if ( + !editor.options.elementPathEnabled && + !editor.options.wordCount && + !editor.options.scaleEnabled + ) { + editor.ui.getDom("elementpath").style.display = "none"; + editor.ui.getDom("wordcount").style.display = "none"; + editor.ui.getDom("scale").style.display = "none"; + } + + if (!editor.selection.isFocus()) return; + editor.fireEvent("selectionchange", false, true); + }); + + editor.addListener("mousedown", function (t, evt) { + var el = evt.target || evt.srcElement; + baidu.editor.ui.Popup.postHide(evt, el); + baidu.editor.ui.ShortCutMenu.postHide(evt); + }); + editor.addListener("delcells", function () { + if (UE.ui["edittip"]) { + new UE.ui["edittip"](editor); + } + editor.getDialog("edittip").open(); + }); + + var pastePop, + isPaste = false, + timer; + editor.addListener("afterpaste", function () { + if (editor.queryCommandState("pasteplain")) return; + if (baidu.editor.ui.PastePicker) { + pastePop = new baidu.editor.ui.Popup({ + content: new baidu.editor.ui.PastePicker({editor: editor}), + editor: editor, + className: "edui-wordpastepop" + }); + pastePop.render(); + } + isPaste = true; + }); + + editor.addListener("afterinserthtml", function () { + clearTimeout(timer); + timer = setTimeout(function () { + if (pastePop && (isPaste || editor.ui._isTransfer)) { + if (pastePop.isHidden()) { + var span = domUtils.createElement(editor.document, "span", { + style: "line-height:0px;", + innerHTML: "\ufeff" + }), + range = editor.selection.getRange(); + range.insertNode(span); + var tmp = getDomNode(span, "firstChild", "previousSibling"); + tmp && + pastePop.showAnchor(tmp.nodeType == 3 ? tmp.parentNode : tmp); + domUtils.remove(span); + } else { + pastePop.show(); + } + delete editor.ui._isTransfer; + isPaste = false; + } + }, 200); + }); + editor.addListener("contextmenu", function (t, evt) { + baidu.editor.ui.Popup.postHide(evt); + }); + editor.addListener("keydown", function (t, evt) { + if (pastePop) pastePop.dispose(evt); + var keyCode = evt.keyCode || evt.which; + if (evt.altKey && keyCode == 90) { + UE.ui.buttons["fullscreen"].onclick(); + } + }); + editor.addListener("wordcount", function (type) { + setCount(this, me); + }); + + function setCount(editor, ui) { + editor.setOpt({ + wordCount: true, + maximumWords: 10000, + wordCountMsg: + editor.options.wordCountMsg || editor.getLang("wordCountMsg"), + wordOverFlowMsg: + editor.options.wordOverFlowMsg || editor.getLang("wordOverFlowMsg") + }); + var opt = editor.options, + max = opt.maximumWords, + msg = opt.wordCountMsg, + errMsg = opt.wordOverFlowMsg, + countDom = ui.getDom("wordcount"); + if (!opt.wordCount) { + return; + } + var count = editor.getContentLength(true); + if (count > max) { + countDom.innerHTML = errMsg; + editor.fireEvent("wordcountoverflow"); + } else { + countDom.innerHTML = msg + .replace("{#leave}", max - count) + .replace("{#count}", count); + } + } + + editor.addListener("selectionchange", function () { + if (editor.options.elementPathEnabled) { + me[ + (editor.queryCommandState("elementpath") == -1 ? "dis" : "en") + + "ableElementPath" + ](); + } + if (editor.options.scaleEnabled) { + me[ + (editor.queryCommandState("scale") == -1 ? "dis" : "en") + + "ableScale" + ](); + } + }); + var popup = new baidu.editor.ui.Popup({ + editor: editor, + content: "", + className: "edui-bubble", + _onEditButtonClick: function () { + this.hide(); + editor.ui._dialogs.linkDialog.open(); + }, + _onImgEditButtonClick: function (name) { + this.hide(); + editor.ui._dialogs[name] && editor.ui._dialogs[name].open(); + }, + _onImgSetFloat: function (value) { + this.hide(); + editor.execCommand("imagefloat", value); + }, + _setIframeAlign: function (value) { + var frame = popup.anchorEl; + var newFrame = frame.cloneNode(true); + switch (value) { + case -2: + newFrame.setAttribute("align", ""); + break; + case -1: + newFrame.setAttribute("align", "left"); + break; + case 1: + newFrame.setAttribute("align", "right"); + break; + } + frame.parentNode.insertBefore(newFrame, frame); + domUtils.remove(frame); + popup.anchorEl = newFrame; + popup.showAnchor(popup.anchorEl); + }, + _updateIframe: function () { + var frame = (editor._iframe = popup.anchorEl); + if (domUtils.hasClass(frame, "ueditor_baidumap")) { + editor.selection.getRange().selectNode(frame).select(); + editor.ui._dialogs.mapDialog.open(); + popup.hide(); + } else { + editor.ui._dialogs.insertframeDialog.open(); + popup.hide(); + } + }, + _onRemoveButtonClick: function (cmdName) { + editor.execCommand(cmdName); + this.hide(); + }, + queryAutoHide: function (el) { + if (el && el.ownerDocument == editor.document) { + if ( + el.tagName.toLowerCase() == "img" || + domUtils.findParentByTagName(el, "a", true) + ) { + return el !== popup.anchorEl; + } + } + return baidu.editor.ui.Popup.prototype.queryAutoHide.call(this, el); + } + }); + popup.render(); + if (editor.options.imagePopup) { + editor.addListener("mouseover", function (t, evt) { + evt = evt || window.event; + var el = evt.target || evt.srcElement; + if ( + editor.ui._dialogs.insertframeDialog && + /iframe/gi.test(el.tagName) + ) { + var html = popup.formatHtml( + "" + + '' + + editor.getLang("default") + + '  ' + + editor.getLang("justifyleft") + + '  ' + + editor.getLang("justifyright") + + "  " + + ' ' + + editor.getLang("modify") + + "" + ); + if (html) { + popup.getDom("content").innerHTML = html; + popup.anchorEl = el; + popup.showAnchor(popup.anchorEl); + } else { + popup.hide(); + } + } + }); + editor.addListener("selectionchange", function (t, causeByUi) { + if (!causeByUi) return; + var html = "", + str = "", + img = editor.selection.getRange().getClosedNode(), + dialogs = editor.ui._dialogs; + if (img && img.tagName == "IMG") { + var dialogName = "insertimageDialog"; + if ( + img.className.indexOf("edui-faked-video") != -1 || + img.className.indexOf("edui-upload-video") != -1 + ) { + dialogName = "insertvideoDialog"; + } + if (img.getAttribute("anchorname")) { + dialogName = "anchorDialog"; + html = popup.formatHtml( + "" + + '' + + editor.getLang("modify") + + "  " + + "" + + editor.getLang("delete") + + "" + ); + } + // if (img.getAttribute("data-word-image")) { + // //todo 放到dialog去做查询 + // editor['data-word-image'] = [img.getAttribute("data-word-image")]; + // dialogName = "wordimageDialog"; + // } + if ( + domUtils.hasClass(img, "loadingclass") || + domUtils.hasClass(img, "loaderrorclass") + ) { + dialogName = ""; + } + if (!dialogs[dialogName]) { + return; + } + + var actions = []; + actions.push(''); + actions.push('' + + editor.getLang("default") + + ""); + actions.push('' + + editor.getLang("default") + + ""); + actions.push('' + + editor.getLang("justifyleft") + + ""); + actions.push('' + + editor.getLang("justifyright") + + ""); + actions.push('' + + editor.getLang("justifycenter") + + ""); + if (img.getAttribute('data-formula-image') !== null) { + actions.push("" + + editor.getLang("formulaedit") + ""); + } + if (img.getAttribute("data-word-image")) { + actions.push("" + + editor.getLang("save") + + ""); + } else { + actions.push("' + + editor.getLang("modify") + + ""); + } + actions.push(""); + + !html && (html = popup.formatHtml(actions.join(""))); + } + if (editor.ui._dialogs.linkDialog) { + var link = editor.queryCommandValue("link"); + var url; + if ( + link && + (url = link.getAttribute("_href") || link.getAttribute("href", 2)) + ) { + var txt = url; + if (url.length > 30) { + txt = url.substring(0, 20) + "..."; + } + if (html) { + html += '
    '; + } + html += popup.formatHtml( + "" + + editor.getLang("anchorMsg") + + ': ' + + txt + + "" + + ' ' + + editor.getLang("modify") + + "" + + ' ' + + editor.getLang("clear") + + "" + ); + popup.showAnchor(link); + } + } + + if (html) { + popup.getDom("content").innerHTML = html; + popup.anchorEl = img || link; + popup.showAnchor(popup.anchorEl); + } else { + popup.hide(); + } + }); + } + }, + _initToolbars: function () { + var editor = this.editor; + var toolbars = this.toolbars || []; + var toolbarUis = []; + var extraUIs = []; + for (var i = 0; i < toolbars.length; i++) { + var toolbar = toolbars[i]; + var toolbarUi = new baidu.editor.ui.Toolbar({ + theme: editor.options.theme + }); + for (var j = 0; j < toolbar.length; j++) { + var toolbarItem = toolbar[j]; + var toolbarItemUi = null; + if (typeof toolbarItem == "string") { + toolbarItem = toolbarItem.toLowerCase(); + if (toolbarItem == "|") { + toolbarItem = "Separator"; + } + if (toolbarItem == "||") { + toolbarItem = "Breakline"; + } + var ui = baidu.editor.ui[toolbarItem]; + if (ui) { + if (utils.isFunction(ui)) { + toolbarItemUi = new baidu.editor.ui[toolbarItem](editor); + } else { + if (ui.id && ui.id != editor.key) { + continue; + } + var itemUI = ui.execFn.call(editor, editor, toolbarItem); + if (itemUI) { + if (ui.index === undefined) { + toolbarUi.add(itemUI); + continue; + } else { + extraUIs.push({ + index: ui.index, + itemUI: itemUI + }); + } + } + } + } + //fullscreen这里单独处理一下,放到首行去 + if (toolbarItem == "fullscreen") { + if (toolbarUis && toolbarUis[0]) { + toolbarUis[0].items.splice(0, 0, toolbarItemUi); + } else { + toolbarItemUi && toolbarUi.items.splice(0, 0, toolbarItemUi); + } + continue; + } + } else { + toolbarItemUi = toolbarItem; + } + if (toolbarItemUi && toolbarItemUi.id) { + toolbarUi.add(toolbarItemUi); + } + } + toolbarUis[i] = toolbarUi; + } + + //接受外部定制的UI + + utils.each(extraUIs, function (obj) { + toolbarUi.add(obj.itemUI, obj.index); + }); + this.toolbars = toolbarUis; + }, + getHtmlTpl: function () { + return ( + '
    ' + + '
    ' + + (this.toolbars.length + ? '
    ' + + this.renderToolbarBoxHtml() + + "
    " + : "") + + '" + + '
    ' + + "
    " + + '
    ' + + "
    " + + //modify wdcount by matao + '
    ' + + '' + + '' + + '' + + "
    " + + '
    ' + + "
    " + ); + }, + showWordImageDialog: function () { + this._dialogs["wordimageDialog"].open(); + }, + renderToolbarBoxHtml: function () { + var buff = []; + for (var i = 0; i < this.toolbars.length; i++) { + buff.push(this.toolbars[i].renderHtml()); + } + return buff.join(""); + }, + setFullScreen: function (fullscreen) { + var editor = this.editor, + container = editor.container.parentNode.parentNode; + if (this._fullscreen != fullscreen) { + this._fullscreen = fullscreen; + this.editor.fireEvent("beforefullscreenchange", fullscreen); + if (baidu.editor.browser.gecko) { + var bk = editor.selection.getRange().createBookmark(); + } + if (fullscreen) { + while (container.tagName != "BODY") { + var position = baidu.editor.dom.domUtils.getComputedStyle( + container, + "position" + ); + nodeStack.push(position); + container.style.position = "static"; + container = container.parentNode; + } + this._bakHtmlOverflow = document.documentElement.style.overflow; + this._bakBodyOverflow = document.body.style.overflow; + this._bakAutoHeight = this.editor.autoHeightEnabled; + this._bakScrollTop = Math.max( + document.documentElement.scrollTop, + document.body.scrollTop + ); + + this._bakEditorContaninerWidth = editor.iframe.parentNode.offsetWidth; + if (this._bakAutoHeight) { + //当全屏时不能执行自动长高 + editor.autoHeightEnabled = false; + this.editor.disableAutoHeight(); + } + + document.documentElement.style.overflow = "hidden"; + //修复,滚动条不收起的问题 + + window.scrollTo(0, window.scrollY); + this._bakCssText = this.getDom().style.cssText; + this._bakCssText1 = this.getDom("iframeholder").style.cssText; + editor.iframe.parentNode.style.width = ""; + this._updateFullScreen(); + } else { + while (container.tagName != "BODY") { + container.style.position = nodeStack.shift(); + container = container.parentNode; + } + this.getDom().style.cssText = this._bakCssText; + this.getDom("iframeholder").style.cssText = this._bakCssText1; + if (this._bakAutoHeight) { + editor.autoHeightEnabled = true; + this.editor.enableAutoHeight(); + } + + document.documentElement.style.overflow = this._bakHtmlOverflow; + document.body.style.overflow = this._bakBodyOverflow; + editor.iframe.parentNode.style.width = + this._bakEditorContaninerWidth + "px"; + window.scrollTo(0, this._bakScrollTop); + } + if (browser.gecko && editor.body.contentEditable === "true") { + var input = document.createElement("input"); + document.body.appendChild(input); + editor.body.contentEditable = false; + setTimeout(function () { + input.focus(); + setTimeout(function () { + editor.body.contentEditable = true; + editor.fireEvent("fullscreenchanged", fullscreen); + editor.selection.getRange().moveToBookmark(bk).select(true); + baidu.editor.dom.domUtils.remove(input); + fullscreen && window.scroll(0, 0); + }, 0); + }, 0); + } + + if (editor.body.contentEditable === "true") { + this.editor.fireEvent("fullscreenchanged", fullscreen); + this.triggerLayout(); + } + } + }, + _updateFullScreen: function () { + if (this._fullscreen) { + var vpRect = uiUtils.getViewportRect(); + this.getDom().style.cssText = + "border:0;position:absolute;left:0;top:" + + (this.editor.options.topOffset || 0) + + "px;width:" + + vpRect.width + + "px;height:" + + vpRect.height + + "px;z-index:" + + (this.getDom().style.zIndex * 1 + 100); + uiUtils.setViewportOffset(this.getDom(), { + left: 0, + top: this.editor.options.topOffset || 0 + }); + this.editor.setHeight( + vpRect.height - + this.getDom("toolbarbox").offsetHeight - + this.getDom("bottombar").offsetHeight - + (this.editor.options.topOffset || 0), + true + ); + //不手动调一下,会导致全屏失效 + if (browser.gecko) { + try { + window.onresize(); + } catch (e) { + } + } + } + }, + _updateElementPath: function () { + var bottom = this.getDom("elementpath"), + list; + if ( + this.elementPathEnabled && + (list = this.editor.queryCommandValue("elementpath")) + ) { + var buff = []; + for (var i = 0, ci; (ci = list[i]); i++) { + buff[i] = this.formatHtml( + '' + + ci + + "" + ); + } + bottom.innerHTML = + '
    ' + + this.editor.getLang("elementPathTip") + + ": " + + buff.join(" > ") + + "
    "; + } else { + bottom.style.display = "none"; + } + }, + disableElementPath: function () { + var bottom = this.getDom("elementpath"); + bottom.innerHTML = ""; + bottom.style.display = "none"; + this.elementPathEnabled = false; + }, + enableElementPath: function () { + var bottom = this.getDom("elementpath"); + bottom.style.display = ""; + this.elementPathEnabled = true; + this._updateElementPath(); + }, + _scale: function () { + var doc = document, + editor = this.editor, + editorHolder = editor.container, + editorDocument = editor.document, + toolbarBox = this.getDom("toolbarbox"), + bottombar = this.getDom("bottombar"), + scale = this.getDom("scale"), + scalelayer = this.getDom("scalelayer"); + + var isMouseMove = false, + position = null, + minEditorHeight = 0, + minEditorWidth = editor.options.minFrameWidth, + pageX = 0, + pageY = 0, + scaleWidth = 0, + scaleHeight = 0; + + function down() { + position = domUtils.getXY(editorHolder); + + if (!minEditorHeight) { + minEditorHeight = + editor.options.minFrameHeight + + toolbarBox.offsetHeight + + bottombar.offsetHeight; + } + + scalelayer.style.cssText = + "position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:" + + editorHolder.offsetWidth + + "px;height:" + + editorHolder.offsetHeight + + "px;z-index:" + + (editor.options.zIndex + 1); + + domUtils.on(doc, "mousemove", move); + domUtils.on(editorDocument, "mouseup", up); + domUtils.on(doc, "mouseup", up); + } + + var me = this; + //by xuheng 全屏时关掉缩放 + this.editor.addListener("fullscreenchanged", function (e, fullScreen) { + if (fullScreen) { + me.disableScale(); + } else { + if (me.editor.options.scaleEnabled) { + me.enableScale(); + var tmpNode = me.editor.document.createElement("span"); + me.editor.body.appendChild(tmpNode); + me.editor.body.style.height = + Math.max( + domUtils.getXY(tmpNode).y, + me.editor.iframe.offsetHeight - 20 + ) + "px"; + domUtils.remove(tmpNode); + } + } + }); + + function move(event) { + clearSelection(); + var e = event || window.event; + pageX = e.pageX || doc.documentElement.scrollLeft + e.clientX; + pageY = e.pageY || doc.documentElement.scrollTop + e.clientY; + scaleWidth = pageX - position.x; + scaleHeight = pageY - position.y; + + if (scaleWidth >= minEditorWidth) { + isMouseMove = true; + scalelayer.style.width = scaleWidth + "px"; + } + if (scaleHeight >= minEditorHeight) { + isMouseMove = true; + scalelayer.style.height = scaleHeight + "px"; + } + } + + function up() { + if (isMouseMove) { + isMouseMove = false; + editor.ui._actualFrameWidth = scalelayer.offsetWidth - 2; + editorHolder.style.width = editor.ui._actualFrameWidth + "px"; + + editor.setHeight( + scalelayer.offsetHeight - + bottombar.offsetHeight - + toolbarBox.offsetHeight - + 2, + true + ); + } + if (scalelayer) { + scalelayer.style.display = "none"; + } + clearSelection(); + domUtils.un(doc, "mousemove", move); + domUtils.un(editorDocument, "mouseup", up); + domUtils.un(doc, "mouseup", up); + } + + function clearSelection() { + if (browser.ie) doc.selection.clear(); + else window.getSelection().removeAllRanges(); + } + + this.enableScale = function () { + //trace:2868 + if (editor.queryCommandState("source") == 1) return; + scale.style.display = ""; + this.scaleEnabled = true; + domUtils.on(scale, "mousedown", down); + }; + this.disableScale = function () { + scale.style.display = "none"; + this.scaleEnabled = false; + domUtils.un(scale, "mousedown", down); + }; + }, + isFullScreen: function () { + return this._fullscreen; + }, + postRender: function () { + UIBase.prototype.postRender.call(this); + for (var i = 0; i < this.toolbars.length; i++) { + this.toolbars[i].postRender(); + } + var me = this; + var timerId, + domUtils = baidu.editor.dom.domUtils, + updateFullScreenTime = function () { + clearTimeout(timerId); + timerId = setTimeout(function () { + me._updateFullScreen(); + }); + }; + domUtils.on(window, "resize", updateFullScreenTime); + + me.addListener("destroy", function () { + domUtils.un(window, "resize", updateFullScreenTime); + clearTimeout(timerId); + }); + }, + showToolbarMsg: function (msg, flag) { + this.getDom("toolbarmsg_label").innerHTML = msg; + this.getDom("toolbarmsg").style.display = ""; + // + if (!flag) { + var w = this.getDom("upload_dialog"); + w.style.display = "none"; + } + }, + hideToolbarMsg: function () { + this.getDom("toolbarmsg").style.display = "none"; + }, + mapUrl: function (url) { + return url + ? url.replace("~/", this.editor.options.UEDITOR_HOME_URL || "") + : ""; + }, + triggerLayout: function () { + var dom = this.getDom(); + if (dom.style.zoom == "1") { + dom.style.zoom = "100%"; + } else { + dom.style.zoom = "1"; + } + } + }; + utils.inherits(EditorUI, baidu.editor.ui.UIBase); + + var instances = {}; + + UE.ui.Editor = function (options) { + var editor = new UE.Editor(options); + editor.options.editor = editor; + utils.loadFile(document, { + href: + editor.options.themePath + editor.options.theme + "/css/ueditor.css?20220907", + tag: "link", + type: "text/css", + rel: "stylesheet" + }); + + var oldRender = editor.render; + editor.render = function (holder) { + if (holder.constructor === String) { + editor.key = holder; + instances[holder] = editor; + } + utils.domReady(function () { + editor.langIsReady + ? renderUI() + : editor.addListener("langReady", renderUI); + + function renderUI() { + editor.setOpt({ + labelMap: editor.options.labelMap || editor.getLang("labelMap") + }); + new EditorUI(editor.options); + if (holder) { + if (holder.constructor === String) { + holder = document.getElementById(holder); + } + holder && + holder.getAttribute("name") && + (editor.options.textarea = holder.getAttribute("name")); + if (holder && /script|textarea/gi.test(holder.tagName)) { + var newDiv = document.createElement("div"); + holder.parentNode.insertBefore(newDiv, holder); + var cont = holder.value || holder.innerHTML; + editor.options.initialContent = /^[\t\r\n ]*$/.test(cont) + ? editor.options.initialContent + : cont + .replace(/>[\n\r\t]+([ ]{4})+/g, ">") + .replace(/[\n\r\t]+([ ]{4})+[\n\r\t]+<"); + holder.className && (newDiv.className = holder.className); + holder.style.cssText && + (newDiv.style.cssText = holder.style.cssText); + if (/textarea/i.test(holder.tagName)) { + editor.textarea = holder; + editor.textarea.style.display = "none"; + } else { + holder.parentNode.removeChild(holder); + } + if (holder.id) { + newDiv.id = holder.id; + domUtils.removeAttributes(holder, "id"); + } + holder = newDiv; + holder.innerHTML = ""; + } + } + domUtils.addClass(holder, "edui-" + editor.options.theme); + editor.ui.render(holder); + var opt = editor.options; + //给实例添加一个编辑器的容器引用 + editor.container = editor.ui.getDom(); + var parents = domUtils.findParents(holder, true); + var displays = []; + for (var i = 0, ci; (ci = parents[i]); i++) { + displays[i] = ci.style.display; + ci.style.display = "block"; + } + if (opt.initialFrameWidth) { + opt.minFrameWidth = opt.initialFrameWidth; + } else { + opt.minFrameWidth = opt.initialFrameWidth = holder.offsetWidth; + var styleWidth = holder.style.width; + if (/%$/.test(styleWidth)) { + opt.initialFrameWidth = styleWidth; + } + } + if (opt.initialFrameHeight) { + opt.minFrameHeight = opt.initialFrameHeight; + } else { + opt.initialFrameHeight = opt.minFrameHeight = holder.offsetHeight; + } + for (var i = 0, ci; (ci = parents[i]); i++) { + ci.style.display = displays[i]; + } + //编辑器最外容器设置了高度,会导致,编辑器不占位 + //todo 先去掉,没有找到原因 + if (holder.style.height) { + holder.style.height = ""; + } + editor.container.style.width = + opt.initialFrameWidth + + (/%$/.test(opt.initialFrameWidth) ? "" : "px"); + editor.container.style.zIndex = opt.zIndex; + oldRender.call(editor, editor.ui.getDom("iframeholder")); + editor.fireEvent("afteruiready"); + } + }); + }; + return editor; + }; + + /** + * @file + * @name UE + * @short UE + * @desc UEditor的顶部命名空间 + */ + /** + * @name getEditor + * @since 1.2.4+ + * @grammar UE.getEditor(id,[opt]) => Editor实例 + * @desc 提供一个全局的方法得到编辑器实例 + * + * * ''id'' 放置编辑器的容器id, 如果容器下的编辑器已经存在,就直接返回 + * * ''opt'' 编辑器的可选参数 + * @example + * UE.getEditor('containerId',{onready:function(){//创建一个编辑器实例 + * this.setContent('hello') + * }}); + * UE.getEditor('containerId'); //返回刚创建的实例 + * + */ + UE.getEditor = function (id, opt) { + var editor = instances[id]; + if (!editor) { + editor = instances[id] = new UE.ui.Editor(opt); + editor.render(id); + } + return editor; + }; + + UE.delEditor = function (id) { + var editor; + if ((editor = instances[id])) { + editor.key && editor.destroy(); + delete instances[id]; + } + }; + + UE.registerUI = function (uiName, fn, index, editorId) { + utils.each(uiName.split(/\s+/), function (name) { + baidu.editor.ui[name] = { + id: editorId, + execFn: fn, + index: index + }; + }); + }; +})(); + + +// adapter/message.js +UE.registerUI("message", function(editor) { + var editorui = baidu.editor.ui; + var Message = editorui.Message; + var holder; + var _messageItems = []; + var me = editor; + + me.setOpt("enableMessageShow", true); + if (me.getOpt("enableMessageShow") === false) { + return; + } + + me.addListener("ready", function() { + holder = document.getElementById(me.ui.id + "_message_holder"); + updateHolderPos(); + setTimeout(function() { + updateHolderPos(); + }, 500); + }); + + me.addListener("showmessage", function(type, opt) { + opt = utils.isString(opt) + ? { + content: opt + } + : opt; + var message = new Message({ + timeout: opt.timeout, + type: opt.type, + content: opt.content, + keepshow: opt.keepshow, + editor: me + }), + mid = opt.id || "msg_" + (+new Date()).toString(36); + message.render(holder); + _messageItems[mid] = message; + message.reset(opt); + updateHolderPos(); + return mid; + }); + + me.addListener("updatemessage", function(type, id, opt) { + opt = utils.isString(opt) + ? { + content: opt + } + : opt; + var message = _messageItems[id]; + message.render(holder); + message && message.reset(opt); + }); + + me.addListener("hidemessage", function(type, id) { + var message = _messageItems[id]; + message && message.hide(); + }); + + function updateHolderPos() { + if (!holder || !me.ui) return; + var toolbarbox = me.ui.getDom("toolbarbox"); + if (toolbarbox) { + holder.style.top = toolbarbox.offsetHeight + 3 + "px"; + } + holder.style.zIndex = + Math.max(me.options.zIndex, me.iframe.style.zIndex) + 1; + } +}); + + + +})(); diff --git a/public/js/ueditor/ueditor.config.js b/public/js/ueditor/ueditor.config.js new file mode 100644 index 0000000..434056d --- /dev/null +++ b/public/js/ueditor/ueditor.config.js @@ -0,0 +1,605 @@ +/** + * ueditor plus 完整配置项 + * 可以在这里配置整个编辑器的特性 + */ +/**************************提示******************************** + * 所有被注释的配置项均为UEditor默认值。 + * 修改默认配置请首先确保已经完全明确该参数的真实用途。 + * 主要有两种修改方案,一种是取消此处注释,然后修改成对应参数;另一种是在实例化编辑器时传入对应参数。 + * 当升级编辑器时,可直接使用旧版配置文件替换新版配置文件,不用担心旧版配置文件中因缺少新功能所需的参数而导致脚本报错。 + **************************提示********************************/ + +(function () { + /** + * 编辑器资源文件根路径。它所表示的含义是:以编辑器实例化页面为当前路径,指向编辑器资源文件(即dialog等文件夹)的路径。 + * 鉴于很多同学在使用编辑器的时候出现的种种路径问题,此处强烈建议大家使用"相对于网站根目录的相对路径"进行配置。 + * "相对于网站根目录的相对路径"也就是以斜杠开头的形如"/myProject/ueditor/"这样的路径。 + * 如果站点中有多个不在同一层级的页面需要实例化编辑器,且引用了同一UEditor的时候,此处的URL可能不适用于每个页面的编辑器。 + * 因此,UEditor提供了针对不同页面的编辑器可单独配置的根路径,具体来说,在需要实例化编辑器的页面最顶部写上如下代码即可。当然,需要令此处的URL等于对应的配置。 + * window.UEDITOR_HOME_URL = "/xxxx/xxxx/"; + */ + var URL, CORS_URL; + if (window.UEDITOR_HOME_URL) { + URL = window.UEDITOR_HOME_URL; + } else if (window.__msCDN) { + URL = window.__msCDN + 'asset/vendor/ueditor/'; + } else if (window.__msRoot) { + URL = window.__msRoot + 'asset/vendor/ueditor/'; + } else { + URL = getUEBasePath(); + } + if (window.__msRoot) { + CORS_URL = window.__msRoot + 'asset/vendor/ueditor/'; + } else { + CORS_URL = getUEBasePath(); + } + + /** + * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。 + */ + window.UEDITOR_CONFIG = { + + //为编辑器实例添加一个路径,这个不能被注释 + UEDITOR_HOME_URL: URL, + UEDITOR_CORS_URL: CORS_URL, + + // 服务器统一请求接口路径 + serverUrl: "/ueditor-plus/_demo_server/handle.php", + + //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义 + toolbars: [ + [ + "fullscreen", // 全屏 + "source", // 源代码 + "|", + "undo", // 撤销 + "redo", // 重做 + "|", + "bold", // 加粗 + "italic", // 斜体 + "underline", // 下划线 + "fontborder", // 字符边框 + "strikethrough",// 删除线 + "superscript", // 上标 + "subscript", // 下标 + "removeformat", // 清除格式 + "formatmatch", // 格式刷 + "autotypeset", // 自动排版 + "blockquote", // 引用 + "pasteplain", // 纯文本粘贴模式 + "|", + "forecolor", // 字体颜色 + "backcolor", // 背景色 + "insertorderedlist", // 有序列表 + "insertunorderedlist", // 无序列表 + "selectall", // 全选 + "cleardoc", // 清空文档 + "|", + "rowspacingtop",// 段前距 + "rowspacingbottom", // 段后距 + "lineheight", // 行间距 + "|", + "customstyle", // 自定义标题 + "paragraph", // 段落格式 + "fontfamily", // 字体 + "fontsize", // 字号 + "|", + "directionalityltr", // 从左向右输入 + "directionalityrtl", // 从右向左输入 + "indent", // 首行缩进 + "|", + "justifyleft", // 居左对齐 + "justifycenter", // 居中对齐 + "justifyright", + "justifyjustify", // 两端对齐 + "|", + "touppercase", // 字母大写 + "tolowercase", // 字母小写 + "|", + "link", // 超链接 + "unlink", // 取消链接 + "anchor", // 锚点 + "|", + "imagenone", // 图片默认 + "imageleft", // 图片左浮动 + "imageright", // 图片右浮动 + "imagecenter", // 图片居中 + "|", + "simpleupload", // 单图上传 + "insertimage", // 多图上传 + "emotion", // 表情 + "scrawl", // 涂鸦 + "insertvideo", // 视频 + "attachment", // 附件 + "insertframe", // 插入Iframe + "insertcode", // 插入代码 + "pagebreak", // 分页 + "template", // 模板 + "background", // 背景 + "formula", // 公式 + "|", + "horizontal", // 分隔线 + "date", // 日期 + "time", // 时间 + "spechars", // 特殊字符 + "wordimage", // Word图片转存 + "|", + "inserttable", // 插入表格 + "deletetable", // 删除表格 + "insertparagraphbeforetable", // 表格前插入行 + "insertrow", // 前插入行 + "deleterow", // 删除行 + "insertcol", // 前插入列 + "deletecol", // 删除列 + "mergecells", // 合并多个单元格 + "mergeright", // 右合并单元格 + "mergedown", // 下合并单元格 + "splittocells", // 完全拆分单元格 + "splittorows", // 拆分成行 + "splittocols", // 拆分成列 + "|", + "print", // 打印 + "preview", // 预览 + "searchreplace", // 查询替换 + "help", // 帮助 + ] + ] + + // 自定义工具栏按钮点击,返回 true 表示已经处理点击,会阻止默认事件 + , toolbarCallback: function (cmd, editor) { + // switch(cmd){ + // case 'insertimage': + // editor.execCommand('insertHtml', '

    '); + // console.log('toolbarCallback',cmd, editor) + // return true; + // case 'insertvideo': + // editor.execCommand('insertHtml', '

    '); + // console.log('toolbarCallback',cmd, editor) + // return true; + // } + } + + // 插入图片自定义配置 + , imageConfig: { + // 禁止本地上传 + disableUpload: false, + // 禁止在线管理 + disableOnline: false, + // 自定义选择按钮 + selectCallback: null, + // selectCallback: function(editor,cb){ + // console.log('selectCallback',cb); + // setTimeout(function(){ + // cb({ + // path:'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png', + // name:'测试图片' + // }); + // },1000); + // } + } + + // 插入视频配置 + , videoConfig: { + // 禁止本地上传, + disableUpload: false, + // 自定义选择按钮 + selectCallback: null, + // selectCallback: function(editor,cb){ + // console.log('selectCallback',cb); + // setTimeout(function(){ + // cb({ + // path:'https://www.bilibili.com/video/BV1y44y1g7NR?spm_id_from=333.1007.tianma.1-1-1.click', + // name:'测试视频' + // }); + // },1000); + // } + } + + // 公式配置 + , formulaConfig: { + // 公式渲染链接模板 + imageUrlTemplate: 'https://latex.codecogs.com/svg.image?{}', + // 为了更稳定的公式渲染服务,可以使用 魔众官方公式转图片渲染引擎 https://api.tecmz.com + } + + // 自动保存 + , autoSaveEnable: true + // 浏览器初始化时自动恢复上一次的内容 + , autoSaveRestore: false + // 自动保存Key,为空时根据网址自动计算 + , autoSaveKey: null + + //当鼠标放在工具栏上时显示的tooltip提示,留空支持自动多语言配置,否则以配置值为准 + //,labelMap:{ + // 'anchor':'', 'undo':'' + //} + + //语言配置项,默认是zh-cn。有需要的话也可以使用如下这样的方式来自动多语言切换,当然,前提条件是lang文件夹下存在对应的语言文件: + //lang值也可以通过自动获取 (navigator.language||navigator.browserLanguage ||navigator.userLanguage).toLowerCase() + //,lang:"zh-cn" + //,langPath:URL +"lang/" + + //主题配置项,默认是default。有需要的话也可以使用如下这样的方式来自动多主题切换,当然,前提条件是themes文件夹下存在对应的主题文件: + //现有如下皮肤:default + //,theme:'default' + //,themePath:URL +"themes/" + + //,zIndex : 900 //编辑器层级的基数,默认是900 + + //针对getAllHtml方法,会在对应的head标签中增加该编码设置。 + //,charset:"utf-8" + + //若实例化编辑器的页面手动修改的domain,此处需要设置为true + //,customDomain:false + + //常用配置项目 + //,isShow : true //默认显示编辑器 + + //,textarea:'editorValue' // 提交表单时,服务器获取编辑器提交内容的所用的参数,多实例时可以给容器name属性,会将name给定的值最为每个实例的键值,不用每次实例化的时候都设置这个值 + + //,initialContent:'欢迎使用ueditor!' //初始化编辑器的内容,也可以通过textarea/script给值,看官网例子 + + //,autoClearinitialContent:true //是否自动清除编辑器初始内容,注意:如果focus属性设置为true,这个也为真,那么编辑器一上来就会触发导致初始化的内容看不到了 + + //,focus:false //初始化时,是否让编辑器获得焦点true或false + + //如果自定义,最好给p标签如下的行高,要不输入中文时,会有跳动感 + //,initialStyle:'p{line-height:1em}'//编辑器层级的基数,可以用来改变字体等 + + //,iframeJsUrl: '' //给编辑区域的iframe引入一个js文件 + //,iframeCssUrl: URL + '/themes/iframe.css' //给编辑区域的iframe引入一个css文件 + // 给编辑器引入更多样式文件 + //,iframeCssUrlsAddition: [] + + //indentValue + //首行缩进距离,默认是2em + //,indentValue:'2em' + + ,initialFrameWidth:'100%' //初始化编辑器宽度,默认1000 + ,initialFrameHeight:450 //初始化编辑器高度,默认320 + + //,readonly : false //编辑器初始化结束后,编辑区域是否是只读的,默认是false + + //,autoClearEmptyNode : true //getContent时,是否删除空的inlineElement节点(包括嵌套的情况) + + //启用拖放上传 + //,enableDragUpload: true + //启用粘贴上传 + //,enablePasteUpload: true + + //启用图片拉伸缩放 + //,imageScaleEnabled: true + + //,fullscreen : false //是否开启初始化时即全屏,默认关闭 + + //,imagePopup:true //图片操作的浮层开关,默认打开 + + //,autoSyncData:true //自动同步编辑器要提交的数据 + //,emotionLocalization:false //是否开启表情本地化,默认关闭。若要开启请确保emotion文件夹下包含官网提供的images表情文件夹 + + //粘贴只保留标签,去除标签所有属性 + //,retainOnlyLabelPasted: false + + //,pasteplain:false //是否默认为纯文本粘贴。false为不使用纯文本粘贴,true为使用纯文本粘贴 + //纯文本粘贴模式下的过滤规则 + //'filterTxtRules' : function(){ + // function transP(node){ + // node.tagName = 'p'; + // node.setStyle(); + // } + // return { + // //直接删除及其字节点内容 + // '-' : 'script style object iframe embed input select', + // 'p': {$:{}}, + // 'br':{$:{}}, + // 'div':{'$':{}}, + // 'li':{'$':{}}, + // 'caption':transP, + // 'th':transP, + // 'tr':transP, + // 'h1':transP,'h2':transP,'h3':transP,'h4':transP,'h5':transP,'h6':transP, + // 'td':function(node){ + // //没有内容的td直接删掉 + // var txt = !!node.innerText(); + // if(txt){ + // node.parentNode.insertAfter(UE.uNode.createText('    '),node); + // } + // node.parentNode.removeChild(node,node.innerText()) + // } + // } + //}() + + //,allHtmlEnabled:false //提交到后台的数据是否包含整个html字符串 + + //insertorderedlist + //有序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准 + //,'insertorderedlist':{ + // //自定的样式 + // 'num':'1,2,3...', + // 'num1':'1),2),3)...', + // 'num2':'(1),(2),(3)...', + // 'cn':'一,二,三....', + // 'cn1':'一),二),三)....', + // 'cn2':'(一),(二),(三)....', + // //系统自带 + // 'decimal' : '' , //'1,2,3...' + // 'lower-alpha' : '' , // 'a,b,c...' + // 'lower-roman' : '' , //'i,ii,iii...' + // 'upper-alpha' : '' , lang //'A,B,C' + // 'upper-roman' : '' //'I,II,III...' + //} + + //insertunorderedlist + //无序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准 + //,insertunorderedlist : { //自定的样式 + // 'dash' :'— 破折号', //-破折号 + // 'dot':' 。 小圆圈', //系统自带 + // 'circle' : '', // '○ 小圆圈' + // 'disc' : '', // '● 小圆点' + // 'square' : '' //'■ 小方块' + //} + //,listDefaultPaddingLeft : '30'//默认的左边缩进的基数倍 + //,listiconpath : 'http://bs.baidu.com/listicon/'//自定义标号的路径 + //,maxListLevel : 3 //限制可以tab的级数, 设置-1为不限制 + + //,autoTransWordToList:false //禁止word中粘贴进来的列表自动变成列表标签 + + //fontfamily + //字体设置 label留空支持多语言自动切换,若配置,则以配置值为准 + //,'fontfamily':[ + // { label:'',name:'songti',val:'宋体,SimSun'}, + // { label:'',name:'kaiti',val:'楷体,楷体_GB2312, SimKai'}, + // { label:'',name:'yahei',val:'微软雅黑,Microsoft YaHei'}, + // { label:'',name:'heiti',val:'黑体, SimHei'}, + // { label:'',name:'lishu',val:'隶书, SimLi'}, + // { label:'',name:'andaleMono',val:'andale mono'}, + // { label:'',name:'arial',val:'arial, helvetica,sans-serif'}, + // { label:'',name:'arialBlack',val:'arial black,avant garde'}, + // { label:'',name:'comicSansMs',val:'comic sans ms'}, + // { label:'',name:'impact',val:'impact,chicago'}, + // { label:'',name:'timesNewRoman',val:'times new roman'} + //] + + //fontsize + //字号 + //,'fontsize':[10, 11, 12, 14, 16, 18, 20, 24, 36] + + //paragraph + //段落格式 值留空时支持多语言自动识别,若配置,则以配置值为准 + //,'paragraph':{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''} + + //rowspacingtop + //段间距 值和显示的名字相同 + //,'rowspacingtop':['5', '10', '15', '20', '25'] + + //rowspacingBottom + //段间距 值和显示的名字相同 + //,'rowspacingbottom':['5', '10', '15', '20', '25'] + + //lineheight + //行内间距 值和显示的名字相同 + //,'lineheight':['1', '1.5','1.75','2', '3', '4', '5'] + + //customstyle + //自定义样式,不支持国际化,此处配置值即可最后显示值 + //block的元素是依据设置段落的逻辑设置的,inline的元素依据BIU的逻辑设置 + //尽量使用一些常用的标签 + //参数说明 + //tag 使用的标签名字 + //label 显示的名字也是用来标识不同类型的标识符,注意这个值每个要不同, + //style 添加的样式 + //每一个对象就是一个自定义的样式 + //,'customstyle':[ + // {tag:'h1', name:'tc', label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;'}, + // {tag:'h1', name:'tl',label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;margin:0 0 10px 0;'}, + // {tag:'span',name:'im', label:'', style:'font-style:italic;font-weight:bold'}, + // {tag:'span',name:'hi', label:'', style:'font-style:italic;font-weight:bold;color:rgb(51, 153, 204)'} + //] + + //打开右键菜单功能 + //,enableContextMenu: true + //右键菜单的内容,可以参考plugins/contextmenu.js里边的默认菜单的例子,label留空支持国际化,否则以此配置为准 + //,contextMenu:[ + // { + // label:'', //显示的名称 + // cmdName:'selectall',//执行的command命令,当点击这个右键菜单时 + // //exec可选,有了exec就会在点击时执行这个function,优先级高于cmdName + // exec:function () { + // //this是当前编辑器的实例 + // //this.ui._dialogs['inserttableDialog'].open(); + // } + // } + //] + + //快捷菜单 + , shortcutMenu: [ + "fontfamily", // 字体 + "fontsize", // 字号 + "bold", // 加粗 + "italic", // 斜体 + "underline", // 下划线 + "strikethrough",// 删除线 + "fontborder", // 字符边框 + "forecolor", // 字体颜色 + // "shadowcolor", // 字体阴影 + // "backcolor", // 背景色 + "justifyleft", // 居左对齐 + "justifycenter", // 居中对齐 + "justifyright", // 居右对齐 + "justifyjustify", // 两端对齐 + // "textindent", // 首行缩进 + // "rowspacingtop", // 段前距 + // "rowspacingbottom", // 段后距 + // "outpadding", // 两侧距离 + "lineheight", // 行间距 + // "letterspacing" , // 字间距 + "insertorderedlist", // 有序列表 + "insertunorderedlist", // 无序列表 + "superscript", // 上标 + "subscript", // 下标 + "link", // 超链接 + "unlink", // 取消链接 + "touppercase", // 字母大写 + "tolowercase" // 字母小写 + ] + + //elementPathEnabled + //是否启用元素路径,默认是显示 + //,elementPathEnabled : true + + //wordCount + //,wordCount:true //是否开启字数统计 + ,maximumWords:500000 //允许的最大字符数 + //字数统计提示,{#count}代表当前字数,{#leave}代表还可以输入多少字符数,留空支持多语言自动切换,否则按此配置显示 + //,wordCountMsg:'' //当前已输入 {#count} 个字符,您还可以输入{#leave} 个字符 + //超出字数限制提示 留空支持多语言自动切换,否则按此配置显示 + //,wordOverFlowMsg:'' //你输入的字符个数已经超出最大允许值,服务器可能会拒绝保存! + + //tab + //点击tab键时移动的距离,tabSize倍数,tabNode什么字符做为单位 + //,tabSize:4 + //,tabNode:' ' + + //removeFormat + //清除格式时可以删除的标签和属性 + //removeForamtTags标签 + //,removeFormatTags:'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var' + //removeFormatAttributes属性 + //,removeFormatAttributes:'class,style,lang,width,height,align,hspace,valign' + + //undo + //可以最多回退的次数,默认20 + //,maxUndoCount:20 + //当输入的字符数超过该值时,保存一次现场 + //,maxInputCount:1 + + //autoHeightEnabled + // 是否自动长高,默认true + //,autoHeightEnabled:true + + //scaleEnabled + //是否可以拉伸长高,默认true(当开启时,自动长高失效) + //,scaleEnabled:false + //,minFrameWidth:800 //编辑器拖动时最小宽度,默认800 + //,minFrameHeight:220 //编辑器拖动时最小高度,默认220 + + //autoFloatEnabled + //是否保持toolbar的位置不动,默认true + ,autoFloatEnabled:false + //浮动时工具栏距离浏览器顶部的高度,用于某些具有固定头部的页面 + //,topOffset:30 + //编辑器底部距离工具栏高度(如果参数大于等于编辑器高度,则设置无效) + //,toolbarTopOffset:400 + + //设置远程图片是否抓取到本地保存 + //,catchRemoteImageEnable: true //设置是否抓取远程图片 + + //pageBreakTag + //分页标识符,默认是_ueditor_page_break_tag_ + //,pageBreakTag:'_ueditor_page_break_tag_' + + //autotypeset + //自动排版参数 + //,autotypeset: { + // mergeEmptyline: true, //合并空行 + // removeClass: true, //去掉冗余的class + // removeEmptyline: false, //去掉空行 + // textAlign:"left", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版 + // imageBlockLine: 'center', //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版 + // pasteFilter: false, //根据规则过滤没事粘贴进来的内容 + // clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号 + // clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体 + // removeEmptyNode: false, // 去掉空节点 + // //可以去掉的标签 + // removeTagNames: {标签名字:1}, + // indent: false, // 行首缩进 + // indentValue : '2em', //行首缩进的大小 + // bdc2sb: false, + // tobdc: false + //} + + //tableDragable + //表格是否可以拖拽 + //,tableDragable: true + + //sourceEditor + //源码的查看方式,codemirror 是代码高亮,textarea是文本框,默认是codemirror + //注意默认codemirror只能在ie8+和非ie中使用 + //,sourceEditor:"codemirror" + //如果sourceEditor是codemirror,还用配置一下两个参数 + //codeMirrorJsUrl js加载的路径,默认是 URL + "third-party/codemirror/codemirror.js" + //,codeMirrorJsUrl:URL + "third-party/codemirror/codemirror.js" + //codeMirrorCssUrl css加载的路径,默认是 URL + "third-party/codemirror/codemirror.css" + //,codeMirrorCssUrl:URL + "third-party/codemirror/codemirror.css" + //编辑器初始化完成后是否进入源码模式,默认为否。 + //,sourceEditorFirst:false + + //iframeUrlMap + //dialog内容的路径 ~会被替换成URL,垓属性一旦打开,将覆盖所有的dialog的默认路径 + //,iframeUrlMap:{ + // 'anchor':'~/dialogs/anchor/anchor.html', + //} + + //allowLinkProtocol 允许的链接地址,有这些前缀的链接地址不会自动添加http + //, allowLinkProtocols: ['http:', 'https:', '#', '/', 'ftp:', 'mailto:', 'tel:', 'git:', 'svn:'] + + //默认过滤规则相关配置项目 + //,disabledTableInTable:true //禁止表格嵌套 + //,allowDivTransToP:true //允许进入编辑器的div标签自动变成p标签 + //,rgb2Hex:true //默认产出的数据中的color自动从rgb格式变成16进制格式 + }; + + function getUEBasePath(docUrl, confUrl) { + return getBasePath( + docUrl || self.document.URL || self.location.href, + confUrl || getConfigFilePath() + ); + } + + function getConfigFilePath() { + var configPath = document.getElementsByTagName("script"); + + return configPath[configPath.length - 1].src; + } + + function getBasePath(docUrl, confUrl) { + var basePath = confUrl; + + if (/^(\/|\\\\)/.test(confUrl)) { + basePath = + /^.+?\w(\/|\\\\)/.exec(docUrl)[0] + confUrl.replace(/^(\/|\\\\)/, ""); + } else if (!/^[a-z]+:/i.test(confUrl)) { + docUrl = docUrl.split("#")[0].split("?")[0].replace(/[^\\\/]+$/, ""); + + basePath = docUrl + "" + confUrl; + } + + return optimizationPath(basePath); + } + + function optimizationPath(path) { + var protocol = /^[a-z]+:\/\//.exec(path)[0], + tmp = null, + res = []; + + path = path.replace(protocol, "").split("?")[0].split("#")[0]; + + path = path.replace(/\\/g, "/").split(/\//); + + path[path.length - 1] = ""; + + while (path.length) { + if ((tmp = path.shift()) === "..") { + res.pop(); + } else if (tmp !== ".") { + res.push(tmp); + } + } + + return protocol + res.join("/"); + } + + window.UE = { + getUEBasePath: getUEBasePath + }; +})(); diff --git a/public/js/ueditor/ueditor.parse.js b/public/js/ueditor/ueditor.parse.js new file mode 100644 index 0000000..dcb0bf6 --- /dev/null +++ b/public/js/ueditor/ueditor.parse.js @@ -0,0 +1,900 @@ +/*! + * UEditorPlus parse + * version: 2.0.0 +*/ +(function(){ + +(function() { + UE = window.UE || {}; + var isIE = !!window.ActiveXObject; + //定义utils工具 + var utils = { + removeLastbs: function(url) { + return url.replace(/\/$/, ""); + }, + extend: function(t, s) { + var a = arguments, + notCover = this.isBoolean(a[a.length - 1]) ? a[a.length - 1] : false, + len = this.isBoolean(a[a.length - 1]) ? a.length - 1 : a.length; + for (var i = 1; i < len; i++) { + var x = a[i]; + for (var k in x) { + if (!notCover || !t.hasOwnProperty(k)) { + t[k] = x[k]; + } + } + } + return t; + }, + isIE: isIE, + cssRule: isIE + ? function(key, style, doc) { + var indexList, index; + doc = doc || document; + if (doc.indexList) { + indexList = doc.indexList; + } else { + indexList = doc.indexList = {}; + } + var sheetStyle; + if (!indexList[key]) { + if (style === undefined) { + return ""; + } + sheetStyle = doc.createStyleSheet( + "", + (index = doc.styleSheets.length) + ); + indexList[key] = index; + } else { + sheetStyle = doc.styleSheets[indexList[key]]; + } + if (style === undefined) { + return sheetStyle.cssText; + } + sheetStyle.cssText = sheetStyle.cssText + "\n" + (style || ""); + } + : function(key, style, doc) { + doc = doc || document; + var head = doc.getElementsByTagName("head")[0], + node; + if (!(node = doc.getElementById(key))) { + if (style === undefined) { + return ""; + } + node = doc.createElement("style"); + node.id = key; + head.appendChild(node); + } + if (style === undefined) { + return node.innerHTML; + } + if (style !== "") { + node.innerHTML = node.innerHTML + "\n" + style; + } else { + head.removeChild(node); + } + }, + domReady: function(onready) { + var doc = window.document; + if (doc.readyState === "complete") { + onready(); + } else { + if (isIE) { + (function() { + if (doc.isReady) return; + try { + doc.documentElement.doScroll("left"); + } catch (error) { + setTimeout(arguments.callee, 0); + return; + } + onready(); + })(); + window.attachEvent("onload", function() { + onready(); + }); + } else { + doc.addEventListener( + "DOMContentLoaded", + function() { + doc.removeEventListener( + "DOMContentLoaded", + arguments.callee, + false + ); + onready(); + }, + false + ); + window.addEventListener( + "load", + function() { + onready(); + }, + false + ); + } + } + }, + each: function(obj, iterator, context) { + if (obj == null) return; + if (obj.length === +obj.length) { + for (var i = 0, l = obj.length; i < l; i++) { + if (iterator.call(context, obj[i], i, obj) === false) return false; + } + } else { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + if (iterator.call(context, obj[key], key, obj) === false) + return false; + } + } + } + }, + inArray: function(arr, item) { + var index = -1; + this.each(arr, function(v, i) { + if (v === item) { + index = i; + return false; + } + }); + return index; + }, + pushItem: function(arr, item) { + if (this.inArray(arr, item) == -1) { + arr.push(item); + } + }, + trim: function(str) { + return str.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g, ""); + }, + indexOf: function(array, item, start) { + var index = -1; + start = this.isNumber(start) ? start : 0; + this.each(array, function(v, i) { + if (i >= start && v === item) { + index = i; + return false; + } + }); + return index; + }, + hasClass: function(element, className) { + className = className + .replace(/(^[ ]+)|([ ]+$)/g, "") + .replace(/[ ]{2,}/g, " ") + .split(" "); + for (var i = 0, ci, cls = element.className; (ci = className[i++]); ) { + if (!new RegExp("\\b" + ci + "\\b", "i").test(cls)) { + return false; + } + } + return i - 1 == className.length; + }, + addClass: function(elm, classNames) { + if (!elm) return; + classNames = this.trim(classNames).replace(/[ ]{2,}/g, " ").split(" "); + for (var i = 0, ci, cls = elm.className; (ci = classNames[i++]); ) { + if (!new RegExp("\\b" + ci + "\\b").test(cls)) { + cls += " " + ci; + } + } + elm.className = utils.trim(cls); + }, + removeClass: function(elm, classNames) { + classNames = this.isArray(classNames) + ? classNames + : this.trim(classNames).replace(/[ ]{2,}/g, " ").split(" "); + for (var i = 0, ci, cls = elm.className; (ci = classNames[i++]); ) { + cls = cls.replace(new RegExp("\\b" + ci + "\\b"), ""); + } + cls = this.trim(cls).replace(/[ ]{2,}/g, " "); + elm.className = cls; + !cls && elm.removeAttribute("className"); + }, + on: function(element, type, handler) { + var types = this.isArray(type) ? type : type.split(/\s+/), + k = types.length; + if (k) + while (k--) { + type = types[k]; + if (element.addEventListener) { + element.addEventListener(type, handler, false); + } else { + if (!handler._d) { + handler._d = { + els: [] + }; + } + var key = type + handler.toString(), + index = utils.indexOf(handler._d.els, element); + if (!handler._d[key] || index == -1) { + if (index == -1) { + handler._d.els.push(element); + } + if (!handler._d[key]) { + handler._d[key] = function(evt) { + return handler.call(evt.srcElement, evt || window.event); + }; + } + + element.attachEvent("on" + type, handler._d[key]); + } + } + } + element = null; + }, + off: function(element, type, handler) { + var types = this.isArray(type) ? type : type.split(/\s+/), + k = types.length; + if (k) + while (k--) { + type = types[k]; + if (element.removeEventListener) { + element.removeEventListener(type, handler, false); + } else { + var key = type + handler.toString(); + try { + element.detachEvent( + "on" + type, + handler._d ? handler._d[key] : handler + ); + } catch (e) {} + if (handler._d && handler._d[key]) { + var index = utils.indexOf(handler._d.els, element); + if (index != -1) { + handler._d.els.splice(index, 1); + } + handler._d.els.length == 0 && delete handler._d[key]; + } + } + } + }, + loadFile: (function() { + var tmpList = []; + function getItem(doc, obj) { + try { + for (var i = 0, ci; (ci = tmpList[i++]); ) { + if (ci.doc === doc && ci.url == (obj.src || obj.href)) { + return ci; + } + } + } catch (e) { + return null; + } + } + return function(doc, obj, fn) { + var item = getItem(doc, obj); + if (item) { + if (item.ready) { + fn && fn(); + } else { + item.funs.push(fn); + } + return; + } + tmpList.push({ + doc: doc, + url: obj.src || obj.href, + funs: [fn] + }); + if (!doc.body) { + var html = []; + for (var p in obj) { + if (p == "tag") continue; + html.push(p + '="' + obj[p] + '"'); + } + doc.write( + "<" + obj.tag + " " + html.join(" ") + " >" + ); + return; + } + if (obj.id && doc.getElementById(obj.id)) { + return; + } + var element = doc.createElement(obj.tag); + delete obj.tag; + for (var p in obj) { + element.setAttribute(p, obj[p]); + } + element.onload = element.onreadystatechange = function() { + if (!this.readyState || /loaded|complete/.test(this.readyState)) { + item = getItem(doc, obj); + if (item.funs.length > 0) { + item.ready = 1; + for (var fi; (fi = item.funs.pop()); ) { + fi(); + } + } + element.onload = element.onreadystatechange = null; + } + }; + element.onerror = function() { + throw Error( + "The load " + (obj.href || obj.src) + " fails,check the url" + ); + }; + doc.getElementsByTagName("head")[0].appendChild(element); + }; + })() + }; + utils.each( + ["String", "Function", "Array", "Number", "RegExp", "Object", "Boolean"], + function(v) { + utils["is" + v] = function(obj) { + return Object.prototype.toString.apply(obj) == "[object " + v + "]"; + }; + } + ); + var parselist = {}; + UE.parse = { + register: function(parseName, fn) { + parselist[parseName] = fn; + }, + load: function(opt) { + utils.each(parselist, function(v) { + v.call(opt, utils); + }); + } + }; + uParse = function(selector, opt) { + utils.domReady(function() { + var contents; + if (document.querySelectorAll) { + contents = document.querySelectorAll(selector); + } else { + if (/^#/.test(selector)) { + contents = [document.getElementById(selector.replace(/^#/, ""))]; + } else if (/^\./.test(selector)) { + var contents = []; + utils.each(document.getElementsByTagName("*"), function(node) { + if ( + node.className && + new RegExp("\\b" + selector.replace(/^\./, "") + "\\b", "i").test( + node.className + ) + ) { + contents.push(node); + } + }); + } else { + contents = document.getElementsByTagName(selector); + } + } + utils.each(contents, function(v) { + UE.parse.load(utils.extend({ root: v, selector: selector }, opt)); + }); + }); + }; +})(); + +UE.parse.register("insertcode", function(utils) { + var pres = this.root.getElementsByTagName("pre"); + if (pres.length) { + if (typeof XRegExp == "undefined") { + var jsurl, cssurl; + if (this.rootPath !== undefined) { + jsurl = + utils.removeLastbs(this.rootPath) + + "/third-party/SyntaxHighlighter/shCore.js"; + cssurl = + utils.removeLastbs(this.rootPath) + + "/third-party/SyntaxHighlighter/shCoreDefault.css"; + } else { + jsurl = this.highlightJsUrl; + cssurl = this.highlightCssUrl; + } + utils.loadFile(document, { + id: "syntaxhighlighter_css", + tag: "link", + rel: "stylesheet", + type: "text/css", + href: cssurl + }); + utils.loadFile( + document, + { + id: "syntaxhighlighter_js", + src: jsurl, + tag: "script", + type: "text/javascript", + defer: "defer" + }, + function() { + utils.each(pres, function(pi) { + if (pi && /brush/i.test(pi.className)) { + SyntaxHighlighter.highlight(pi); + } + }); + } + ); + } else { + utils.each(pres, function(pi) { + if (pi && /brush/i.test(pi.className)) { + SyntaxHighlighter.highlight(pi); + } + }); + } + } +}); + +UE.parse.register("table", function(utils) { + var me = this, + root = this.root, + tables = root.getElementsByTagName("table"); + if (tables.length) { + var selector = this.selector; + //追加默认的表格样式 + utils.cssRule( + "table", + selector + + " table.noBorderTable td," + + selector + + " table.noBorderTable th," + + selector + + " table.noBorderTable caption{border:1px dashed #ddd !important}" + + selector + + " table.sortEnabled tr.firstRow th," + + selector + + " table.sortEnabled tr.firstRow td{padding-right:20px; background-repeat: no-repeat;" + + "background-position: center right; background-image:url(" + + this.rootPath + + "themes/default/images/sortable.png);}" + + selector + + " table.sortEnabled tr.firstRow th:hover," + + selector + + " table.sortEnabled tr.firstRow td:hover{background-color: #EEE;}" + + selector + + " table{margin-bottom:10px;border-collapse:collapse;display:table;}" + + selector + + " td," + + selector + + " th{padding: 5px 10px;border: 1px solid #DDD;}" + + selector + + " caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}" + + selector + + " th{border-top:1px solid #BBB;background:#F7F7F7;}" + + selector + + " table tr.firstRow th{border-top:2px solid #BBB;background:#F7F7F7;}" + + selector + + " tr.ue-table-interlace-color-single td{ background: #fcfcfc; }" + + selector + + " tr.ue-table-interlace-color-double td{ background: #f7faff; }" + + selector + + " td p{margin:0;padding:0;width:auto;height:auto;}", + document + ); + //填充空的单元格 + + utils.each("td th caption".split(" "), function(tag) { + var cells = root.getElementsByTagName(tag); + cells.length && + utils.each(cells, function(node) { + if (!node.firstChild) { + node.innerHTML = " "; + } + }); + }); + + //表格可排序 + var tables = root.getElementsByTagName("table"); + utils.each(tables, function(table) { + if (/\bsortEnabled\b/.test(table.className)) { + utils.on(table, "click", function(e) { + var target = e.target || e.srcElement, + cell = findParentByTagName(target, ["td", "th"]); + var table = findParentByTagName(target, "table"), + colIndex = utils.indexOf(table.rows[0].cells, cell), + sortType = table.getAttribute("data-sort-type"); + if (colIndex != -1) { + sortTable(table, colIndex, me.tableSortCompareFn || sortType); + updateTable(table); + } + }); + } + }); + + //按照标签名查找父节点 + function findParentByTagName(target, tagNames) { + var i, + current = target; + tagNames = utils.isArray(tagNames) ? tagNames : [tagNames]; + while (current) { + for (i = 0; i < tagNames.length; i++) { + if (current.tagName == tagNames[i].toUpperCase()) return current; + } + current = current.parentNode; + } + return null; + } + //表格排序 + function sortTable(table, sortByCellIndex, compareFn) { + var rows = table.rows, + trArray = [], + flag = rows[0].cells[0].tagName === "TH", + lastRowIndex = 0; + + for (var i = 0, len = rows.length; i < len; i++) { + trArray[i] = rows[i]; + } + + var Fn = { + reversecurrent: function(td1, td2) { + return 1; + }, + orderbyasc: function(td1, td2) { + var value1 = td1.innerText || td1.textContent, + value2 = td2.innerText || td2.textContent; + return value1.localeCompare(value2); + }, + reversebyasc: function(td1, td2) { + var value1 = td1.innerHTML, + value2 = td2.innerHTML; + return value2.localeCompare(value1); + }, + orderbynum: function(td1, td2) { + var value1 = td1[utils.isIE ? "innerText" : "textContent"].match( + /\d+/ + ), + value2 = td2[utils.isIE ? "innerText" : "textContent"].match(/\d+/); + if (value1) value1 = +value1[0]; + if (value2) value2 = +value2[0]; + return (value1 || 0) - (value2 || 0); + }, + reversebynum: function(td1, td2) { + var value1 = td1[utils.isIE ? "innerText" : "textContent"].match( + /\d+/ + ), + value2 = td2[utils.isIE ? "innerText" : "textContent"].match(/\d+/); + if (value1) value1 = +value1[0]; + if (value2) value2 = +value2[0]; + return (value2 || 0) - (value1 || 0); + } + }; + + //对表格设置排序的标记data-sort-type + table.setAttribute( + "data-sort-type", + compareFn && typeof compareFn === "string" && Fn[compareFn] + ? compareFn + : "" + ); + + //th不参与排序 + flag && trArray.splice(0, 1); + trArray = sort(trArray, function(tr1, tr2) { + var result; + if (compareFn && typeof compareFn === "function") { + result = compareFn.call( + this, + tr1.cells[sortByCellIndex], + tr2.cells[sortByCellIndex] + ); + } else if (compareFn && typeof compareFn === "number") { + result = 1; + } else if ( + compareFn && + typeof compareFn === "string" && + Fn[compareFn] + ) { + result = Fn[compareFn].call( + this, + tr1.cells[sortByCellIndex], + tr2.cells[sortByCellIndex] + ); + } else { + result = Fn["orderbyasc"].call( + this, + tr1.cells[sortByCellIndex], + tr2.cells[sortByCellIndex] + ); + } + return result; + }); + var fragment = table.ownerDocument.createDocumentFragment(); + for (var j = 0, len = trArray.length; j < len; j++) { + fragment.appendChild(trArray[j]); + } + var tbody = table.getElementsByTagName("tbody")[0]; + if (!lastRowIndex) { + tbody.appendChild(fragment); + } else { + tbody.insertBefore( + fragment, + rows[lastRowIndex - range.endRowIndex + range.beginRowIndex - 1] + ); + } + } + //冒泡排序 + function sort(array, compareFn) { + compareFn = + compareFn || + function(item1, item2) { + return item1.localeCompare(item2); + }; + for (var i = 0, len = array.length; i < len; i++) { + for (var j = i, length = array.length; j < length; j++) { + if (compareFn(array[i], array[j]) > 0) { + var t = array[i]; + array[i] = array[j]; + array[j] = t; + } + } + } + return array; + } + //更新表格 + function updateTable(table) { + //给第一行设置firstRow的样式名称,在排序图标的样式上使用到 + if (!utils.hasClass(table.rows[0], "firstRow")) { + for (var i = 1; i < table.rows.length; i++) { + utils.removeClass(table.rows[i], "firstRow"); + } + utils.addClass(table.rows[0], "firstRow"); + } + } + } +}); + +UE.parse.register("background", function(utils) { + var me = this, + root = me.root, + p = root.getElementsByTagName("p"), + styles; + + for (var i = 0, ci; (ci = p[i++]); ) { + styles = ci.getAttribute("data-background"); + if (styles) { + ci.parentNode.removeChild(ci); + } + } + + //追加默认的表格样式 + styles && + utils.cssRule( + "ueditor_background", + me.selector + "{" + styles + "}", + document + ); +}); + +UE.parse.register("list", function(utils) { + var customCss = [], + customStyle = { + cn: "cn-1-", + cn1: "cn-2-", + cn2: "cn-3-", + num: "num-1-", + num1: "num-2-", + num2: "num-3-", + dash: "dash", + dot: "dot" + }; + + utils.extend(this, { + liiconpath: "http://bs.baidu.com/listicon/", + listDefaultPaddingLeft: "20" + }); + + var root = this.root, + ols = root.getElementsByTagName("ol"), + uls = root.getElementsByTagName("ul"), + selector = this.selector; + + if (ols.length) { + applyStyle.call(this, ols); + } + + if (uls.length) { + applyStyle.call(this, uls); + } + + if (ols.length || uls.length) { + customCss.push(selector + " .list-paddingleft-1{padding-left:0}"); + customCss.push( + selector + + " .list-paddingleft-2{padding-left:" + + this.listDefaultPaddingLeft + + "px}" + ); + customCss.push( + selector + + " .list-paddingleft-3{padding-left:" + + this.listDefaultPaddingLeft * 2 + + "px}" + ); + + utils.cssRule( + "list", + selector + + " ol," + + selector + + " ul{margin:0;padding:0;}\n" + + selector + + " li{clear:both;}\n" + + customCss.join("\n"), + document + ); + } + function applyStyle(nodes) { + var T = this; + utils.each(nodes, function(list) { + if (list.className && /custom_/i.test(list.className)) { + var listStyle = list.className.match(/custom_(\w+)/)[1]; + if (listStyle == "dash" || listStyle == "dot") { + utils.pushItem( + customCss, + selector + + " li.list-" + + customStyle[listStyle] + + "{background-image:url(" + + T.liiconpath + + customStyle[listStyle] + + ".gif)}" + ); + utils.pushItem( + customCss, + selector + + " ul.custom_" + + listStyle + + "{list-style:none;} " + + selector + + " ul.custom_" + + listStyle + + " li{background-position:0 3px;background-repeat:no-repeat}" + ); + } else { + var index = 1; + utils.each(list.childNodes, function(li) { + if (li.tagName == "LI") { + utils.pushItem( + customCss, + selector + + " li.list-" + + customStyle[listStyle] + + index + + "{background-image:url(" + + T.liiconpath + + "list-" + + customStyle[listStyle] + + index + + ".gif)}" + ); + index++; + } + }); + utils.pushItem( + customCss, + selector + + " ol.custom_" + + listStyle + + "{list-style:none;}" + + selector + + " ol.custom_" + + listStyle + + " li{background-position:0 3px;background-repeat:no-repeat}" + ); + } + switch (listStyle) { + case "cn": + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft-1{padding-left:25px}" + ); + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft-2{padding-left:40px}" + ); + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft-3{padding-left:55px}" + ); + break; + case "cn1": + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft-1{padding-left:30px}" + ); + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft-2{padding-left:40px}" + ); + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft-3{padding-left:55px}" + ); + break; + case "cn2": + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft-1{padding-left:40px}" + ); + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft-2{padding-left:55px}" + ); + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft-3{padding-left:68px}" + ); + break; + case "num": + case "num1": + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft-1{padding-left:25px}" + ); + break; + case "num2": + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft-1{padding-left:35px}" + ); + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft-2{padding-left:40px}" + ); + break; + case "dash": + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft{padding-left:35px}" + ); + break; + case "dot": + utils.pushItem( + customCss, + selector + + " li.list-" + + listStyle + + "-paddingleft{padding-left:20px}" + ); + } + } + }); + } +}); + + +})(); diff --git a/shim.d.ts b/shim.d.ts new file mode 100644 index 0000000..3e9bfd0 --- /dev/null +++ b/shim.d.ts @@ -0,0 +1,13 @@ +/* eslint-disable */ + +// 声明文件,*.vue 后缀的文件交给 vue 模块来处理 +declare module '*.vue' { + import type { DefineComponent } from 'vue'; + const component: DefineComponent<{}, {}, any>; + export default component; +} + +// 声明文件,定义全局变量。其它 app.config.globalProperties.xxx,使用 getCurrentInstance() 来获取 +interface Window { + nextLoading: boolean; +} diff --git a/source.d.ts b/source.d.ts new file mode 100644 index 0000000..2f9c768 --- /dev/null +++ b/source.d.ts @@ -0,0 +1,6 @@ +declare module '*.json'; +declare module '*.png'; +declare module '*.jpg'; +declare module '*.scss'; +declare module '*.ts'; +declare module '*.js'; diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..eb9bda8 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,98 @@ + + + diff --git a/src/api/items.ts b/src/api/items.ts new file mode 100644 index 0000000..0a4300e --- /dev/null +++ b/src/api/items.ts @@ -0,0 +1,53 @@ +// 查询列表 +export function getItems(f: Function, query: Object) { + query = query || { pageSize: 10000 }; + return f(query); +} + +export function setItems(response: any, k: string, v: string):Array { + const data: Array = []; + k = k || 'id'; + v = v || 'name'; + if (response.data && response.data.list && response.data.list.length > 0) { + response.data.list.forEach((e: any) => { + data.push({ + key: e[k].toString(), + value: e[v].toString(), + }); + }); + } + return data; +} + +// 选项类型接口 +export interface ItemOptions { + key:string, + value:string +} + +/** 通过 options 数组获取 key 对应的 value */ +export function getOptionValue(key: any, options: Array,keyName:string,valName:string) { + keyName = keyName??'key' + valName = valName??'value' + const option = options.find((value) => { + return key + '' === value[keyName]; + }); + if (option !== undefined) { + return option[valName]; + } +} + +export function isEmpty(v: any) { + if (v === '' || v === undefined || v === null) { + return true; + } + + if (typeof v === 'object') { + if (Array.isArray(v)) { + return v.length === 0; + } else { + return Object.keys(v).length === 0; + } + } + return false; +} diff --git a/src/api/login/index.ts b/src/api/login/index.ts new file mode 100644 index 0000000..b22986f --- /dev/null +++ b/src/api/login/index.ts @@ -0,0 +1,33 @@ +import request from '/@/utils/request'; + +/** + * 登录api接口集合 + * @method signIn 用户登录 + */ +export function login(params: object){ + return request({ + url: '/api/v1/system/login', + method: 'post', + data: params, + }); +} + +/** + * 获取验证码 + */ +export function captcha(){ + return request({ + url:"/api/v1/pub/captcha/get", + method:"get" + }) +} + +/** + * 退出登录 + */ +export function logout(){ + return request({ + url: '/api/v1/system/logout', + method: 'get', + }); +} diff --git a/src/api/menu/index.ts b/src/api/menu/index.ts new file mode 100644 index 0000000..9c16bb7 --- /dev/null +++ b/src/api/menu/index.ts @@ -0,0 +1,26 @@ +import request from '/@/utils/request'; + +/** + * 后端控制菜单模拟json,路径在 https://gitee.com/lyt-top/vue-next-admin-images/tree/master/menu + * 后端控制路由,isRequestRoutes 为 true,则开启后端控制路由 + * @method getMenuAdmin 获取后端动态路由菜单(admin) + * @method getMenuTest 获取后端动态路由菜单(test) + */ +export function useMenuApi() { + return { + getMenuAdmin: (params?: object) => { + return request({ + url: '/gitee/lyt-top/vue-next-admin-images/raw/master/menu/adminMenu.json', + method: 'get', + params, + }); + }, + getMenuTest: (params?: object) => { + return request({ + url: '/gitee/lyt-top/vue-next-admin-images/raw/master/menu/testMenu.json', + method: 'get', + params, + }); + }, + }; +} diff --git a/src/api/system/bigFile/index.ts b/src/api/system/bigFile/index.ts new file mode 100644 index 0000000..e3b91ec --- /dev/null +++ b/src/api/system/bigFile/index.ts @@ -0,0 +1,49 @@ +import request from '/@/utils/request'; + +// 获取列表 +export function getBigFileList (query:Object) { + return request({ + url: '/api/v1/system/bigFile/list', + method: 'get', + params:query + }) +} + + +// 获取一条数据 +export function getBigFile(id:number) { + return request({ + url: '/api/v1/system/bigFile/get', + method: 'get', + params:{id} + }) +} + +// 添加文件 +export function addBigFile(data:any) { + return request({ + url: '/api/v1/system/bigFile/add', + method: 'post', + data:data + }) +} + +// 编辑文件夹 +export function editBigFile(data:any) { + return request({ + url: '/api/v1/system/bigFile/edit', + method: 'put', + data:data + }) +} + + +// 删除文件 +export function deleteBigFile(ids:number[]) { + return request({ + url: '/api/v1/system/bigFile/delete', + method: 'delete', + data:{ids} + }) +} + diff --git a/src/api/system/config/index.ts b/src/api/system/config/index.ts new file mode 100644 index 0000000..c3824c6 --- /dev/null +++ b/src/api/system/config/index.ts @@ -0,0 +1,42 @@ +import request from '/@/utils/request'; + + +export function getConfigList(query:Object) { + return request({ + url: '/api/v1/system/config/list', + method: 'get', + params:query + }) +} + +export function getConfig(id:number) { + return request({ + url: '/api/v1/system/config/get', + method: 'get', + params:{id} + }) +} + +export function addConfig(data:any) { + return request({ + url: '/api/v1/system/config/add', + method: 'post', + data:data + }) +} + +export function editConfig(data:any) { + return request({ + url: '/api/v1/system/config/edit', + method: 'put', + data:data + }) +} + +export function deleteConfig(ids:number[]) { + return request({ + url: '/api/v1/system/config/delete', + method: 'delete', + data:{ids} + }) +} diff --git a/src/api/system/dept/index.ts b/src/api/system/dept/index.ts new file mode 100644 index 0000000..95a9b42 --- /dev/null +++ b/src/api/system/dept/index.ts @@ -0,0 +1,36 @@ +import request from '/@/utils/request'; + +export function getDeptList(query?:Object) { + return request({ + url: '/api/v1/system/dept/list', + method: 'get', + params:query + }) +} + + +export function addDept(data:object) { + return request({ + url: '/api/v1/system/dept/add', + method: 'post', + data:data + }) +} + + +export function editDept(data:object) { + return request({ + url: '/api/v1/system/dept/edit', + method: 'put', + data:data + }) +} + + +export function deleteDept(id:number) { + return request({ + url: '/api/v1/system/dept/delete', + method: 'delete', + data:{id} + }) +} diff --git a/src/api/system/dict/data.ts b/src/api/system/dict/data.ts new file mode 100644 index 0000000..c97ae71 --- /dev/null +++ b/src/api/system/dict/data.ts @@ -0,0 +1,70 @@ +import request from '/@/utils/request'; +import {ref ,toRefs,ToRefs} from 'vue' +// 根据字典类型查询字典数据信息 +export function getDicts(dictType :string,defaultValue?:string):Promise { + let dv = defaultValue??'' + let params ={ + dictType:dictType, + defaultValue:dv + } + return request({ + url: '/api/v1/system/dict/data/getDictData', + method: 'get', + params:params + }) +} + +/** + * 获取字典数据 + */ +export function useDict(...args:string[]):ToRefs{ + const res:any = ref({}); + args.forEach((d:string) => { + res.value[d] = []; + getDicts(d).then(resp => { + res.value[d] = resp.data.values.map((p:any) => ({ label: p.value, value: p.key, isDefault: p.isDefault })) + }) + }) + return toRefs(res.value); +} + + +export function getDataList(query:Object) { + return request({ + url: '/api/v1/system/dict/data/list', + method: 'get', + params:query + }) +} + +export function getData(dictCode:number) { + return request({ + url: '/api/v1/system/dict/data/get', + method: 'get', + params:{dictCode} + }) +} + +export function addData(data:any) { + return request({ + url: '/api/v1/system/dict/data/add', + method: 'post', + data:data + }) +} + +export function editData(data:any) { + return request({ + url: '/api/v1/system/dict/data/edit', + method: 'put', + data:data + }) +} + +export function deleteData(ids:number[]) { + return request({ + url: '/api/v1/system/dict/data/delete', + method: 'delete', + data:{ids} + }) +} diff --git a/src/api/system/dict/type.ts b/src/api/system/dict/type.ts new file mode 100644 index 0000000..0163dbc --- /dev/null +++ b/src/api/system/dict/type.ts @@ -0,0 +1,52 @@ +import request from '/@/utils/request'; + +export function getTypeList(query:Object) { + return request({ + url: '/api/v1/system/dict/type/list', + method: 'get', + params:query + }) +} + +export function getType(dictId:number) { + return request({ + url: '/api/v1/system/dict/type/get', + method: 'get', + params:{dictId} + }) +} + +export function addType(data:any) { + return request({ + url: '/api/v1/system/dict/type/add', + method: 'post', + data:data + }) +} + +export function editType(data:any) { + return request({ + url: '/api/v1/system/dict/type/edit', + method: 'put', + data:data + }) +} + + +export function deleteType(dictIds:number[]) { + return request({ + url: '/api/v1/system/dict/type/delete', + method: 'delete', + data:{dictIds} + }) +} + + +// 获取字典选择框列表 +export function optionselect() { + return request({ + url: '/api/v1/system/dict/type/optionSelect', + method: 'get' + }) +} + diff --git a/src/api/system/menu/index.ts b/src/api/system/menu/index.ts new file mode 100644 index 0000000..758ea1c --- /dev/null +++ b/src/api/system/menu/index.ts @@ -0,0 +1,57 @@ +import request from '/@/utils/request'; + +export function getMenuList(query:Object) { + return request({ + url: '/api/v1/system/menu/list', + method: 'get', + params:query + }) +} + +export function getUserMenus() { + return request({ + url: '/api/v1/system/user/getUserMenus', + method: 'get' + }) +} + +export function getMenuParams() { + return request({ + url: '/api/v1/system/menu/getParams', + method: 'get' + }) +} + +export function addMenu(data:Object) { + return request({ + url: '/api/v1/system/menu/add', + method: 'post', + data:data + }) +} + +export function getMenuInfo(id:number) { + return request({ + url: '/api/v1/system/menu/get', + method: 'get', + params:{id} + }) +} + +export function updateMenu(data:Object) { + return request({ + url: '/api/v1/system/menu/update', + method: 'put', + data:data + }) +} + + +// 删除菜单 +export function delMenu(menuId:number) { + return request({ + url: '/api/v1/system/menu/delete', + method: 'delete', + data:{ids:[menuId]} + }) +} diff --git a/src/api/system/monitor/loginLog/index.ts b/src/api/system/monitor/loginLog/index.ts new file mode 100644 index 0000000..d2fcb61 --- /dev/null +++ b/src/api/system/monitor/loginLog/index.ts @@ -0,0 +1,28 @@ +import request from '/@/utils/request'; + + +export function logList(query:object) { + return request({ + url: '/api/v1/system/loginLog/list', + method: 'get', + params:query + }) +} + + +export function deleteLog(ids:number[]) { + return request({ + url: '/api/v1/system/loginLog/delete', + method: 'delete', + params:{ids} + }) +} + + + +export function clearLog() { + return request({ + url: '/api/v1/system/loginLog/clear', + method: 'delete', + }) +} diff --git a/src/api/system/monitor/operLog/index.ts b/src/api/system/monitor/operLog/index.ts new file mode 100644 index 0000000..569ec7a --- /dev/null +++ b/src/api/system/monitor/operLog/index.ts @@ -0,0 +1,37 @@ +import request from '/@/utils/request' +// 查询操作日志列表 +export function listSysOperLog(query:object) { + return request({ + url: '/api/v1/system/operLog/list', + method: 'get', + params: query + }) +} +// 查询操作日志详细 +export function getSysOperLog(operId:number) { + return request({ + url: '/api/v1/system/operLog/get', + method: 'get', + params: { + operId: operId.toString() + } + }) +} +// 删除操作日志 +export function delSysOperLog(operIds:number[]) { + return request({ + url: '/api/v1/system/operLog/delete', + method: 'delete', + data:{ + operIds:operIds + } + }) +} + + +export function clearOperLog() { + return request({ + url: '/api/v1/system/operLog/clear', + method: 'delete', + }) +} diff --git a/src/api/system/monitor/server/index.ts b/src/api/system/monitor/server/index.ts new file mode 100644 index 0000000..6603ce1 --- /dev/null +++ b/src/api/system/monitor/server/index.ts @@ -0,0 +1,9 @@ +import request from '/@/utils/request'; + + +export function getSysInfo() { + return request({ + url: '/api/v1/system/monitor/server', + method: 'get' + }) +} diff --git a/src/api/system/monitor/userOnline/index.ts b/src/api/system/monitor/userOnline/index.ts new file mode 100644 index 0000000..ed49e1b --- /dev/null +++ b/src/api/system/monitor/userOnline/index.ts @@ -0,0 +1,18 @@ +import request from '/@/utils/request'; + +// 查询列表 +export function listSysUserOnline(query:object) { + return request({ + url: '/api/v1/system/online/list', + method: 'get', + params: query + }) +} + +export function forceLogout(ids:number[]) { + return request({ + url: '/api/v1/system/online/forceLogout', + method: 'delete', + data: {ids} + }) +} diff --git a/src/api/system/personal/index.ts b/src/api/system/personal/index.ts new file mode 100644 index 0000000..24eb1f6 --- /dev/null +++ b/src/api/system/personal/index.ts @@ -0,0 +1,28 @@ +import request from '/@/utils/request'; + +export function getPersonalInfo() { + return request({ + url: '/api/v1/system/personal/getPersonalInfo', + method: 'get', + }) +} + + +export function editPersonal(data:object) { + return request({ + url: '/api/v1/system/personal/edit', + method: 'put', + data:data + }) +} + +//重置個人密碼 +export function resetPwdPersonal(data:object) { + return request({ + url: '/api/v1/system/personal/resetPwd', + method: 'put', + data:data + }) +} + + diff --git a/src/api/system/post/index.ts b/src/api/system/post/index.ts new file mode 100644 index 0000000..a84f0bc --- /dev/null +++ b/src/api/system/post/index.ts @@ -0,0 +1,35 @@ +import request from '/@/utils/request'; + +export function getPostList(query:Object) { + return request({ + url: '/api/v1/system/post/list', + method: 'get', + params:query + }) +} + +export function addPost(data:object) { + return request({ + url: '/api/v1/system/post/add', + method: 'post', + data:data + }) +} + + +export function editPost(data:object) { + return request({ + url: '/api/v1/system/post/edit', + method: 'put', + data:data + }) +} + + +export function deletePost(ids:number[]) { + return request({ + url: '/api/v1/system/post/delete', + method: 'delete', + data:{ids} + }) +} diff --git a/src/api/system/role/index.ts b/src/api/system/role/index.ts new file mode 100644 index 0000000..68dc955 --- /dev/null +++ b/src/api/system/role/index.ts @@ -0,0 +1,70 @@ +import request from '/@/utils/request'; + +export function getRoleList(query:Object) { + return request({ + url: '/api/v1/system/role/list', + method: 'get', + params:query + }) +} + +export function getRoleParams() { + return request({ + url: '/api/v1/system/role/getParams', + method: 'get' + }) +} + +export function addRole(data:object) { + return request({ + url: '/api/v1/system/role/add', + method: 'post', + data:data + }) +} + +export function getRole(id:number) { + return request({ + url: '/api/v1/system/role/get', + method: 'get', + params:{id} + }) +} + + +export function editRole(data:object) { + return request({ + url: '/api/v1/system/role/edit', + method: 'put', + data:data + }) +} + + +export function deleteRole(id:number) { + return request({ + url: '/api/v1/system/role/delete', + method: 'delete', + data:{ids:[id]} + }) +} + +export function dataScope(data:any) { + return request({ + url: '/api/v1/system/role/dataScope', + method: 'put', + data:data + }) +} + + +// 根据角色ID查询部门树结构 +export function roleDeptTreeSelect(roleId:number) { + return request({ + url: '/api/v1/system/role/deptTreeSelect', + method: 'get', + params:{roleId} + }) +} + + diff --git a/src/api/system/tools/gen/index.ts b/src/api/system/tools/gen/index.ts new file mode 100644 index 0000000..baa5c35 --- /dev/null +++ b/src/api/system/tools/gen/index.ts @@ -0,0 +1,74 @@ +import request from '/@/utils/request'; + +export function getTableList(query:Object) { + return request({ + url: '/api/v1/system/tools/gen/tableList', + method: 'get', + params:query + }) +} + +export function getImportTableList(query:Object) { + return request({ + url: '/api/v1/system/tools/gen/dataList', + method: 'get', + params:query + }) +} + + +export function importTable(tables:string[]) { + return request({ + url: '/api/v1/system/tools/gen/importTableSave', + method: 'post', + data:{tables:tables} + }) +} + +export function deleteTables(query:number[]) { + return request({ + url: '/api/v1/system/tools/gen/tableDelete', + method: 'delete', + params:{ids:query} + }) +} + +export function getGenTable(tableId:any){ + return request({ + url: '/api/v1/system/tools/gen/columnList', + method: 'get', + params:{tableId} + }) +} + +export function getRelationTable(){ + return request({ + url: '/api/v1/system/tools/gen/relationTable', + method: 'get', + }) +} + + +export function saveEdit(data:any) { + return request({ + url: '/api/v1/system/tools/gen/editSave', + method: 'post', + data:data + }) +} + +export function showPreview(tableId:number){ + return request({ + url: '/api/v1/system/tools/gen/preview', + method: 'get', + params: {tableId} + }) +} + +export function batchGenCode(ids:number[]){ + return request({ + url: '/api/v1/system/tools/gen/batchGenCode', + method: 'post', + data: {ids} + }) +} diff --git a/src/api/system/tools/job/sysJob.ts b/src/api/system/tools/job/sysJob.ts new file mode 100644 index 0000000..66d0ab3 --- /dev/null +++ b/src/api/system/tools/job/sysJob.ts @@ -0,0 +1,99 @@ +import request from '/@/utils/request' +import {SysJobLog} from "/@/views/system/sysJob/list/component/model"; +// 查询定时任务列表 +export function listSysJob(query:object) { + return request({ + url: '/api/v1/system/sysJob/list', + method: 'get', + params: query + }) +} +// 查询定时任务详细 +export function getSysJob(jobId:number) { + return request({ + url: '/api/v1/system/sysJob/get', + method: 'get', + params: { + jobId: jobId.toString() + } + }) +} +// 新增定时任务 +export function addSysJob(data:object) { + return request({ + url: '/api/v1/system/sysJob/add', + method: 'post', + data: data + }) +} +// 修改定时任务 +export function updateSysJob(data:object) { + return request({ + url: '/api/v1/system/sysJob/edit', + method: 'put', + data: data + }) +} +// 删除定时任务 +export function delSysJob(jobIds:number[]) { + return request({ + url: '/api/v1/system/sysJob/delete', + method: 'delete', + data:{ + jobIds:jobIds + } + }) +} +//获取用户信息列表 +export function getUserList(uIds:number[]){ + return request({ + url: '/api/v1/system/user/getUsers', + method: 'get', + params: {ids:uIds} + }) +} + +export function runJob(jobId:number){ + return request({ + url: '/api/v1/system/sysJob/run', + method: 'put', + data: {jobId} + }) +} + +export function startJob(jobId:number){ + return request({ + url: '/api/v1/system/sysJob/start', + method: 'put', + data: {jobId} + }) +} + + +export function stopJob(jobId:number){ + return request({ + url: '/api/v1/system/sysJob/stop', + method: 'put', + data: {jobId} + }) +} + + +export function getJobLogs(req:object){ + return request({ + url: '/api/v1/system/sysJob/logs', + method: 'get', + params: req + }) +} + +// 删除定时任务日志 +export function delSysJobLog(logIds:number[]) { + return request({ + url: '/api/v1/system/sysJob/deleteLogs', + method: 'delete', + data:{ + logIds:logIds + } + }) +} diff --git a/src/api/system/user/index.ts b/src/api/system/user/index.ts new file mode 100644 index 0000000..e036799 --- /dev/null +++ b/src/api/system/user/index.ts @@ -0,0 +1,75 @@ +import request from '/@/utils/request'; + +export function getUserList(query:Object) { + return request({ + url: '/api/v1/system/user/list', + method: 'get', + params:query + }) +} + +export function getDeptTree() { + return request({ + url: '/api/v1/system/dept/treeSelect', + method: 'get' + }) +} + +export function getParams() { + return request({ + url: '/api/v1/system/user/params', + method: 'get' + }) +} + +export function getEditUser(id:number) { + return request({ + url: '/api/v1/system/user/getEdit', + method: 'get', + params:{id} + }) +} + +export function addUser(data:object) { + return request({ + url: '/api/v1/system/user/add', + method: 'post', + data:data + }) +} + + +export function editUser(data:object) { + return request({ + url: '/api/v1/system/user/edit', + method: 'put', + data:data + }) +} + +export function resetUserPwd(userId:number, password:string) { + return request({ + url: '/api/v1/system/user/resetPwd', + method: 'put', + data:{userId,password} + }) +} + +export function changeUserStatus(userId:number, status:number) { + return request({ + url: '/api/v1/system/user/setStatus', + method: 'put', + data:{userId,status} + }) +} + + +export function deleteUser(ids:number[]) { + return request({ + url: '/api/v1/system/user/delete', + method: 'delete', + data:{ids} + }) +} + + diff --git a/src/assets/401.png b/src/assets/401.png new file mode 100644 index 0000000000000000000000000000000000000000..ce306dab624f6eb8092b2ebb0e1fd1d6414abe43 GIT binary patch literal 39645 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аL5D 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�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 C0B{Td literal 0 HcmV?d00001 diff --git a/src/assets/login-icon-two.svg b/src/assets/login-icon-two.svg new file mode 100644 index 0000000..ef48bc2 --- /dev/null +++ b/src/assets/login-icon-two.svg @@ -0,0 +1,9 @@ + + sunlight + diff --git a/src/assets/logo-mini.svg b/src/assets/logo-mini.svg new file mode 100644 index 0000000..4d687f6 --- /dev/null +++ b/src/assets/logo-mini.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/src/components/auth/auth.vue b/src/components/auth/auth.vue new file mode 100644 index 0000000..ae010d4 --- /dev/null +++ b/src/components/auth/auth.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/auth/authAll.vue b/src/components/auth/authAll.vue new file mode 100644 index 0000000..76c5e01 --- /dev/null +++ b/src/components/auth/authAll.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/auth/auths.vue b/src/components/auth/auths.vue new file mode 100644 index 0000000..ef31019 --- /dev/null +++ b/src/components/auth/auths.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/bigUploader/index.vue b/src/components/bigUploader/index.vue new file mode 100644 index 0000000..eb39bba --- /dev/null +++ b/src/components/bigUploader/index.vue @@ -0,0 +1,369 @@ + + + + + diff --git a/src/components/cropper/index.vue b/src/components/cropper/index.vue new file mode 100644 index 0000000..b23a266 --- /dev/null +++ b/src/components/cropper/index.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/src/components/editor/index.vue b/src/components/editor/index.vue new file mode 100644 index 0000000..78e5726 --- /dev/null +++ b/src/components/editor/index.vue @@ -0,0 +1,115 @@ + + + diff --git a/src/components/editor/toolbar.ts b/src/components/editor/toolbar.ts new file mode 100644 index 0000000..14a9bf3 --- /dev/null +++ b/src/components/editor/toolbar.ts @@ -0,0 +1,60 @@ +/** + * 工具栏配置 + */ +export const toolbarKeys = [ + 'headerSelect', + 'blockquote', + '|', + 'bold', + 'underline', + 'italic', + { + key: 'group-more-style', + title: '更多', + iconSvg: + '', + menuKeys: ['through', 'code', 'sup', 'sub', 'clearStyle'], + }, + 'color', + 'bgColor', + '|', + 'fontSize', + 'fontFamily', + 'lineHeight', + '|', + 'bulletedList', + 'numberedList', + 'todo', + { + key: 'group-justify', + title: '对齐', + iconSvg: + '', + menuKeys: ['justifyLeft', 'justifyRight', 'justifyCenter', 'justifyJustify'], + }, + { + key: 'group-indent', + title: '缩进', + iconSvg: + '', + menuKeys: ['indent', 'delIndent'], + }, + '|', + 'emotion', + 'insertLink', + { + key: 'group-image', + title: '图片', + iconSvg: + '', + menuKeys: ['uploadImage'], + }, + 'insertTable', + 'codeBlock', + 'divider', + '|', + 'undo', + 'redo', + '|', + 'fullScreen', +]; diff --git a/src/components/iconSelector/index.vue b/src/components/iconSelector/index.vue new file mode 100644 index 0000000..07de786 --- /dev/null +++ b/src/components/iconSelector/index.vue @@ -0,0 +1,252 @@ + + + diff --git a/src/components/myCodeMirror/index.vue b/src/components/myCodeMirror/index.vue new file mode 100644 index 0000000..7b380cf --- /dev/null +++ b/src/components/myCodeMirror/index.vue @@ -0,0 +1,56 @@ + + + diff --git a/src/components/noticeBar/index.vue b/src/components/noticeBar/index.vue new file mode 100644 index 0000000..b982ba7 --- /dev/null +++ b/src/components/noticeBar/index.vue @@ -0,0 +1,195 @@ + + + + + diff --git a/src/components/pagination/index.vue b/src/components/pagination/index.vue new file mode 100644 index 0000000..ee3e06a --- /dev/null +++ b/src/components/pagination/index.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/components/svgIcon/index.vue b/src/components/svgIcon/index.vue new file mode 100644 index 0000000..1fab298 --- /dev/null +++ b/src/components/svgIcon/index.vue @@ -0,0 +1,73 @@ + + + diff --git a/src/components/ueditor/index.vue b/src/components/ueditor/index.vue new file mode 100644 index 0000000..c4e783c --- /dev/null +++ b/src/components/ueditor/index.vue @@ -0,0 +1,77 @@ + + + + + + diff --git a/src/components/ueditor/model/index.ts b/src/components/ueditor/model/index.ts new file mode 100644 index 0000000..2d6263b --- /dev/null +++ b/src/components/ueditor/model/index.ts @@ -0,0 +1,95 @@ +export const toolbar = [ + "fullscreen", // 全屏 + "source", // 源代码 + "|", + "undo", // 撤销 + "redo", // 重做 + "|", + "bold", // 加粗 + "italic", // 斜体 + "underline", // 下划线 + "fontborder", // 字符边框 + "strikethrough",// 删除线 + "superscript", // 上标 + "subscript", // 下标 + "removeformat", // 清除格式 + "formatmatch", // 格式刷 + "autotypeset", // 自动排版 + "blockquote", // 引用 + "pasteplain", // 纯文本粘贴模式 + "|", + "forecolor", // 字体颜色 + "backcolor", // 背景色 + "insertorderedlist", // 有序列表 + "insertunorderedlist", // 无序列表 + "selectall", // 全选 + "cleardoc", // 清空文档 + "|", + "rowspacingtop",// 段前距 + "rowspacingbottom", // 段后距 + "lineheight", // 行间距 + "|", + "customstyle", // 自定义标题 + "paragraph", // 段落格式 + "fontfamily", // 字体 + "fontsize", // 字号 + "|", + "directionalityltr", // 从左向右输入 + "directionalityrtl", // 从右向左输入 + "indent", // 首行缩进 + "|", + "justifyleft", // 居左对齐 + "justifycenter", // 居中对齐 + "justifyright", + "justifyjustify", // 两端对齐 + "|", + "touppercase", // 字母大写 + "tolowercase", // 字母小写 + "|", + "link", // 超链接 + "unlink", // 取消链接 + "anchor", // 锚点 + "|", + "imagenone", // 图片默认 + "imageleft", // 图片左浮动 + "imageright", // 图片右浮动 + "imagecenter", // 图片居中 + "|", + "simpleupload", // 单图上传 + "insertimage", // 多图上传 + "emotion", // 表情 + "scrawl", // 涂鸦 + "insertvideo", // 视频 + "attachment", // 附件 + "insertframe", // 插入Iframe + "insertcode", // 插入代码 + "pagebreak", // 分页 + "template", // 模板 + "background", // 背景 + "formula", // 公式 + "|", + "horizontal", // 分隔线 + "date", // 日期 + "time", // 时间 + "spechars", // 特殊字符 + "wordimage", // Word图片转存 + "|", + "inserttable", // 插入表格 + "deletetable", // 删除表格 + "insertparagraphbeforetable", // 表格前插入行 + "insertrow", // 前插入行 + "deleterow", // 删除行 + "insertcol", // 前插入列 + "deletecol", // 删除列 + "mergecells", // 合并多个单元格 + "mergeright", // 右合并单元格 + "mergedown", // 下合并单元格 + "splittocells", // 完全拆分单元格 + "splittorows", // 拆分成行 + "splittocols", // 拆分成列 + "|", + "print", // 打印 + "preview", // 预览 + "searchreplace", // 查询替换 + "help", // 帮助 +] diff --git a/src/components/uploadFile/index.vue b/src/components/uploadFile/index.vue new file mode 100644 index 0000000..0cd6d5d --- /dev/null +++ b/src/components/uploadFile/index.vue @@ -0,0 +1,147 @@ + + + + diff --git a/src/components/uploadImg/index.vue b/src/components/uploadImg/index.vue new file mode 100644 index 0000000..fa6cf13 --- /dev/null +++ b/src/components/uploadImg/index.vue @@ -0,0 +1,191 @@ + + + + + + diff --git a/src/i18n/index.ts b/src/i18n/index.ts new file mode 100644 index 0000000..561a823 --- /dev/null +++ b/src/i18n/index.ts @@ -0,0 +1,68 @@ +import { createI18n } from 'vue-i18n'; +import pinia from '/@/stores/index'; +import { storeToRefs } from 'pinia'; +import { useThemeConfig } from '/@/stores/themeConfig'; +import zhcnLocale from 'element-plus/lib/locale/lang/zh-cn'; +import enLocale from 'element-plus/lib/locale/lang/en'; +import zhtwLocale from 'element-plus/lib/locale/lang/zh-tw'; + +import nextZhcn from '/@/i18n/lang/zh-cn'; +import nextEn from '/@/i18n/lang/en'; +import nextZhtw from '/@/i18n/lang/zh-tw'; + +import pagesLoginZhcn from '/@/i18n/pages/login/zh-cn'; +import pagesLoginEn from '/@/i18n/pages/login/en'; +import pagesLoginZhtw from '/@/i18n/pages/login/zh-tw'; +import pagesFormI18nZhcn from '/@/i18n/pages/formI18n/zh-cn'; +import pagesFormI18nEn from '/@/i18n/pages/formI18n/en'; +import pagesFormI18nZhtw from '/@/i18n/pages/formI18n/zh-tw'; + +// 定义语言国际化内容 +/** + * 说明: + * /src/i18n/lang 下的 ts 为框架的国际化内容 + * /src/i18n/pages 下的 ts 为各界面的国际化内容 + */ +const messages = { + [zhcnLocale.name]: { + ...zhcnLocale, + message: { + ...nextZhcn, + ...pagesLoginZhcn, + ...pagesFormI18nZhcn, + }, + }, + [enLocale.name]: { + ...enLocale, + message: { + ...nextEn, + ...pagesLoginEn, + ...pagesFormI18nEn, + }, + }, + [zhtwLocale.name]: { + ...zhtwLocale, + message: { + ...nextZhtw, + ...pagesLoginZhtw, + ...pagesFormI18nZhtw, + }, + }, +}; + +// 读取 pinia 默认语言 +const stores = useThemeConfig(pinia); +const { themeConfig } = storeToRefs(stores); + +// 导出语言国际化 +// https://vue-i18n.intlify.dev/guide/essentials/fallback.html#explicit-fallback-with-one-locale +export const i18n = createI18n({ + silentTranslationWarn: true, + missingWarn: false, + silentFallbackWarn: true, + fallbackWarn: false, + locale: themeConfig.value.globalI18n, + fallbackLocale: zhcnLocale.name, + legacy: false, + messages, +}); diff --git a/src/i18n/lang/en.ts b/src/i18n/lang/en.ts new file mode 100644 index 0000000..46ae830 --- /dev/null +++ b/src/i18n/lang/en.ts @@ -0,0 +1,180 @@ +// 定义内容 +export default { + router: { + home: 'home', + system: 'system', + systemMenu: 'systemMenu', + systemRole: 'systemRole', + systemUser: 'systemUser', + systemDept: 'systemDept', + systemDic: 'systemDic', + limits: 'limits', + limitsFrontEnd: 'FrontEnd', + limitsFrontEndPage: 'FrontEndPage', + limitsFrontEndBtn: 'FrontEndBtn', + limitsBackEnd: 'BackEnd', + limitsBackEndEndPage: 'BackEndEndPage', + menu: 'menu', + menu1: 'menu1', + menu11: 'menu11', + menu12: 'menu12', + menu121: 'menu121', + menu122: 'menu122', + menu13: 'menu13', + menu2: 'menu2', + funIndex: 'function', + funTagsView: 'funTagsView', + funCountup: 'countup', + funWangEditor: 'wangEditor', + funCropper: 'cropper', + funQrcode: 'qrcode', + funEchartsMap: 'EchartsMap', + funPrintJs: 'PrintJs', + funClipboard: 'Copy cut', + funGridLayout: 'Drag layout', + funSplitpanes: 'Pane splitter', + funDragVerify: 'Validator', + pagesIndex: 'pages', + pagesFiltering: 'Filtering', + pagesFilteringDetails: 'FilteringDetails', + pagesFilteringDetails1: 'FilteringDetails1', + pagesIocnfont: 'iconfont icon', + pagesElement: 'element icon', + pagesAwesome: 'awesome icon', + pagesFormAdapt: 'FormAdapt', + pagesTableRules: 'pagesTableRules', + pagesFormI18n: 'FormI18n', + pagesFormRules: 'Multi form validation', + pagesDynamicForm: 'Dynamic complex form', + pagesWorkflow: 'Workflow', + pagesListAdapt: 'ListAdapt', + pagesWaterfall: 'Waterfall', + pagesSteps: 'Steps', + pagesPreview: 'Large preview', + pagesWaves: 'Wave effect', + pagesTree: 'tree alter table', + pagesDrag: 'Drag command', + pagesLazyImg: 'Image lazy loading', + makeIndex: 'makeIndex', + makeSelector: 'Icon selector', + makeNoticeBar: 'notification bar', + makeSvgDemo: 'Svgicon demo', + paramsIndex: 'Routing parameters', + paramsCommon: 'General routing', + paramsDynamic: 'Dynamic routing', + paramsCommonDetails: 'General routing details', + paramsDynamicDetails: 'Dynamic routing details', + chartIndex: 'chartIndex', + visualizingIndex: 'visualizingIndex', + visualizingLinkDemo1: 'visualizingLinkDemo1', + visualizingLinkDemo2: 'visualizingLinkDemo2', + personal: 'personal', + tools: 'tools', + layoutLinkView: 'LinkView', + layoutIfameView: 'IfameView', + }, + staticRoutes: { + signIn: 'signIn', + notFound: 'notFound', + noPower: 'noPower', + }, + user: { + title0: 'Component size', + title1: 'Language switching', + title2: 'Menu search', + title3: 'Layout configuration', + title4: 'news', + title5: 'Full screen on', + title6: 'Full screen off', + dropdownLarge: 'large', + dropdownDefault: 'default', + dropdownSmall: 'small', + dropdown1: 'home page', + dropdown2: 'Personal Center', + dropdown3: '404', + dropdown4: '401', + dropdown5: 'Log out', + dropdown6: 'Code warehouse', + searchPlaceholder: 'Menu search: support Chinese, routing path', + newTitle: 'notice', + newBtn: 'All read', + newGo: 'Go to the notification center', + newDesc: 'No notice', + logOutTitle: 'Tips', + logOutMessage: 'This operation will log out. Do you want to continue?', + logOutConfirm: 'determine', + logOutCancel: 'cancel', + logOutExit: 'Exiting', + }, + tagsView: { + refresh: 'refresh', + close: 'close', + closeOther: 'closeOther', + closeAll: 'closeAll', + fullscreen: 'fullscreen', + closeFullscreen: 'closeFullscreen', + }, + notFound: { + foundTitle: 'Wrong address input, please re-enter the address~', + foundMsg: 'You can check the web address first, and then re-enter or give us feedback.', + foundBtn: 'Back to home page', + }, + noAccess: { + accessTitle: 'You are not authorized to operate~', + accessMsg: 'Contact information: add QQ group discussion 665452019', + accessBtn: 'Reauthorization', + }, + layout: { + configTitle: 'Layout configuration', + oneTitle: 'Global Themes', + twoTopTitle: 'top bar set up', + twoMenuTitle: 'Menu set up', + twoColumnsTitle: 'Columns set up', + twoTopBar: 'Top bar background', + twoTopBarColor: 'Top bar default font color', + twoIsTopBarColorGradual: 'Top bar gradient', + twoMenuBar: 'Menu background', + twoMenuBarColor: 'Menu default font color', + twoIsMenuBarColorGradual: 'Menu gradient', + twoColumnsMenuBar: 'Column menu background', + twoColumnsMenuBarColor: 'Default font color bar menu', + twoIsColumnsMenuBarColorGradual: 'Column gradient', + threeTitle: 'Interface settings', + threeIsCollapse: 'Menu horizontal collapse', + threeIsUniqueOpened: 'Menu accordion', + threeIsFixedHeader: 'Fixed header', + threeIsClassicSplitMenu: 'Classic layout split menu', + threeIsLockScreen: 'Open the lock screen', + threeLockScreenTime: 'screen locking(s/s)', + fourTitle: 'Interface display', + fourIsShowLogo: 'Sidebar logo', + fourIsBreadcrumb: 'Open breadcrumb', + fourIsBreadcrumbIcon: 'Open breadcrumb icon', + fourIsTagsview: 'Open tagsview', + fourIsTagsviewIcon: 'Open tagsview Icon', + fourIsCacheTagsView: 'Enable tagsview cache', + fourIsSortableTagsView: 'Enable tagsview drag', + fourIsShareTagsView: 'Enable tagsview sharing', + fourIsFooter: 'Open footer', + fourIsGrayscale: 'Grey model', + fourIsInvert: 'Color weak mode', + fourIsDark: 'Dark Mode', + fourIsWartermark: 'Turn on watermark', + fourWartermarkText: 'Watermark copy', + fiveTitle: 'Other settings', + fiveTagsStyle: 'Tagsview style', + fiveAnimation: 'page animation', + fiveColumnsAsideStyle: 'Column style', + fiveColumnsAsideLayout: 'Column layout', + sixTitle: 'Layout switch', + sixDefaults: 'One', + sixClassic: 'Two', + sixTransverse: 'Three', + sixColumns: 'Four', + tipText: 'Click the button below to copy the layout configuration to `/src/stores/themeConfig.ts` It has been modified in.', + copyText: 'replication configuration', + resetText: 'restore default', + copyTextSuccess: 'Copy succeeded!', + copyTextError: 'Copy failed!', + }, +}; diff --git a/src/i18n/lang/zh-cn.ts b/src/i18n/lang/zh-cn.ts new file mode 100644 index 0000000..79ef328 --- /dev/null +++ b/src/i18n/lang/zh-cn.ts @@ -0,0 +1,180 @@ +// 定义内容 +export default { + router: { + home: '首页', + system: '系统设置', + systemMenu: '菜单管理', + systemRole: '角色管理', + systemUser: '用户管理', + systemDept: '部门管理', + systemDic: '字典管理', + limits: '权限管理', + limitsFrontEnd: '前端控制', + limitsFrontEndPage: '页面权限', + limitsFrontEndBtn: '按钮权限', + limitsBackEnd: '后端控制', + limitsBackEndEndPage: '页面权限', + menu: '菜单嵌套', + menu1: '菜单1', + menu11: '菜单11', + menu12: '菜单12', + menu121: '菜单121', + menu122: '菜单122', + menu13: '菜单13', + menu2: '菜单2', + funIndex: '功能', + funTagsView: 'tagsView 操作', + funCountup: '数字滚动', + funWangEditor: 'Editor 编辑器', + funCropper: '图片裁剪', + funQrcode: '二维码生成', + funEchartsMap: '地理坐标/地图', + funPrintJs: '页面打印', + funClipboard: '复制剪切', + funGridLayout: '拖拽布局', + funSplitpanes: '窗格拆分器', + funDragVerify: '验证器', + pagesIndex: '页面', + pagesFiltering: '过滤筛选组件', + pagesFilteringDetails: '过滤筛选组件详情', + pagesFilteringDetails1: '过滤筛选组件详情111', + pagesIocnfont: 'ali 字体图标', + pagesElement: 'ele 字体图标', + pagesAwesome: 'awe 字体图标', + pagesFormAdapt: '表单自适应', + pagesTableRules: '表单表格验证', + pagesFormI18n: '表单国际化', + pagesFormRules: '多表单验证', + pagesDynamicForm: '动态复杂表单', + pagesWorkflow: '工作流', + pagesListAdapt: '列表自适应', + pagesWaterfall: '瀑布屏', + pagesSteps: '步骤条', + pagesPreview: '大图预览', + pagesWaves: '波浪效果', + pagesTree: '树形改表格', + pagesDrag: '拖动指令', + pagesLazyImg: '图片懒加载', + makeIndex: '组件封装', + makeSelector: '图标选择器', + makeNoticeBar: '滚动通知栏', + makeSvgDemo: 'svgIcon 演示', + paramsIndex: '路由参数', + paramsCommon: '普通路由', + paramsDynamic: '动态路由', + paramsCommonDetails: '普通路由详情', + paramsDynamicDetails: '动态路由详情', + chartIndex: '大数据图表', + visualizingIndex: '数据可视化', + visualizingLinkDemo1: '数据可视化演示1', + visualizingLinkDemo2: '数据可视化演示2', + personal: '个人中心', + tools: '工具类集合', + layoutLinkView: '外链', + layoutIfameView: '内嵌 iframe', + }, + staticRoutes: { + signIn: '登录', + notFound: '找不到此页面', + noPower: '没有权限', + }, + user: { + title0: '组件大小', + title1: '语言切换', + title2: '菜单搜索', + title3: '布局配置', + title4: '消息', + title5: '开全屏', + title6: '关全屏', + dropdownLarge: '大型', + dropdownDefault: '默认', + dropdownSmall: '小型', + dropdown1: '首页', + dropdown2: '个人中心', + dropdown3: '404', + dropdown4: '401', + dropdown5: '退出登录', + dropdown6: '代码仓库', + searchPlaceholder: '菜单搜索:支持中文、路由路径', + newTitle: '通知', + newBtn: '全部已读', + newGo: '前往通知中心', + newDesc: '暂无通知', + logOutTitle: '提示', + logOutMessage: '此操作将退出登录, 是否继续?', + logOutConfirm: '确定', + logOutCancel: '取消', + logOutExit: '退出中', + }, + tagsView: { + refresh: '刷新', + close: '关闭', + closeOther: '关闭其它', + closeAll: '全部关闭', + fullscreen: '当前页全屏', + closeFullscreen: '关闭全屏', + }, + notFound: { + foundTitle: '地址输入错误,请重新输入地址~', + foundMsg: '您可以先检查网址,然后重新输入或给我们反馈问题。', + foundBtn: '返回首页', + }, + noAccess: { + accessTitle: '您未被授权,没有操作权限~', + accessMsg: '联系方式:加QQ群探讨 665452019', + accessBtn: '重新授权', + }, + layout: { + configTitle: '布局配置', + oneTitle: '全局主题', + twoTopTitle: '顶栏设置', + twoMenuTitle: '菜单设置', + twoColumnsTitle: '分栏设置', + twoTopBar: '顶栏背景', + twoTopBarColor: '顶栏默认字体颜色', + twoIsTopBarColorGradual: '顶栏背景渐变', + twoMenuBar: '菜单背景', + twoMenuBarColor: '菜单默认字体颜色', + twoIsMenuBarColorGradual: '菜单背景渐变', + twoColumnsMenuBar: '分栏菜单背景', + twoColumnsMenuBarColor: '分栏菜单默认字体颜色', + twoIsColumnsMenuBarColorGradual: '分栏菜单背景渐变', + threeTitle: '界面设置', + threeIsCollapse: '菜单水平折叠', + threeIsUniqueOpened: '菜单手风琴', + threeIsFixedHeader: '固定 Header', + threeIsClassicSplitMenu: '经典布局分割菜单', + threeIsLockScreen: '开启锁屏', + threeLockScreenTime: '自动锁屏(s/秒)', + fourTitle: '界面显示', + fourIsShowLogo: '侧边栏 Logo', + fourIsBreadcrumb: '开启 Breadcrumb', + fourIsBreadcrumbIcon: '开启 Breadcrumb 图标', + fourIsTagsview: '开启 Tagsview', + fourIsTagsviewIcon: '开启 Tagsview 图标', + fourIsCacheTagsView: '开启 TagsView 缓存', + fourIsSortableTagsView: '开启 TagsView 拖拽', + fourIsShareTagsView: '开启 TagsView 共用', + fourIsFooter: '开启 Footer', + fourIsGrayscale: '灰色模式', + fourIsInvert: '色弱模式', + fourIsDark: '深色模式', + fourIsWartermark: '开启水印', + fourWartermarkText: '水印文案', + fiveTitle: '其它设置', + fiveTagsStyle: 'Tagsview 风格', + fiveAnimation: '主页面切换动画', + fiveColumnsAsideStyle: '分栏高亮风格', + fiveColumnsAsideLayout: '分栏布局风格', + sixTitle: '布局切换', + sixDefaults: '默认', + sixClassic: '经典', + sixTransverse: '横向', + sixColumns: '分栏', + tipText: '点击下方按钮,复制布局配置去 `src/stores/themeConfig.ts` 中修改。', + copyText: '一键复制配置', + resetText: '一键恢复默认', + copyTextSuccess: '复制成功!', + copyTextError: '复制失败!', + }, +}; diff --git a/src/i18n/lang/zh-tw.ts b/src/i18n/lang/zh-tw.ts new file mode 100644 index 0000000..d900abb --- /dev/null +++ b/src/i18n/lang/zh-tw.ts @@ -0,0 +1,180 @@ +// 定义内容 +export default { + router: { + home: '首頁', + system: '系統設置', + systemMenu: '選單管理', + systemRole: '角色管理', + systemUser: '用戶管理', + systemDept: '部門管理', + systemDic: '字典管理', + limits: '許可權管理', + limitsFrontEnd: '前端控制', + limitsFrontEndPage: '頁面許可權', + limitsFrontEndBtn: '按鈕許可權', + limitsBackEnd: '後端控制', + limitsBackEndEndPage: '頁面許可權', + menu: '選單嵌套', + menu1: '選單1', + menu11: '選單11', + menu12: '選單12', + menu121: '選單121', + menu122: '選單122', + menu13: '選單13', + menu2: '選單2', + funIndex: '功能', + funTagsView: 'tagsView 操作', + funCountup: '數位滾動', + funWangEditor: 'Editor 編輯器', + funCropper: '圖片裁剪', + funQrcode: '二維碼生成', + funEchartsMap: '地理座標/地圖', + funPrintJs: '頁面列印', + funClipboard: '複製剪切', + funGridLayout: '拖拽佈局', + funSplitpanes: '窗格折開器', + funDragVerify: '驗證器', + pagesIndex: '頁面', + pagesFiltering: '過濾篩選組件', + pagesFilteringDetails: '過濾篩選組件詳情', + pagesFilteringDetails1: '過濾篩選組件詳情111', + pagesIocnfont: 'ali 字體圖標', + pagesElement: 'ele 字體圖標', + pagesAwesome: 'awe 字體圖標', + pagesFormAdapt: '表單自我調整', + pagesTableRules: '表單表格驗證', + pagesFormI18n: '表單國際化', + pagesFormRules: '多表單驗證', + pagesDynamicForm: '動態複雜表單', + pagesWorkflow: '工作流', + pagesListAdapt: '清單自我調整', + pagesWaterfall: '瀑布屏', + pagesSteps: '步驟條', + pagesPreview: '大圖預覽', + pagesWaves: '波浪效果', + pagesTree: '樹形改表格', + pagesDrag: '拖動指令', + pagesLazyImg: '圖片懶加載', + makeIndex: '組件封裝', + makeSelector: '圖標選擇器', + makeNoticeBar: '滾動通知欄', + makeSvgDemo: 'svgIcon 演示', + paramsIndex: '路由參數', + paramsCommon: '普通路由', + paramsDynamic: '動態路由', + paramsCommonDetails: '普通路由詳情', + paramsDynamicDetails: '動態路由詳情', + chartIndex: '大資料圖表', + visualizingIndex: '數據視覺化', + visualizingLinkDemo1: '數據視覺化演示1', + visualizingLinkDemo2: '數據視覺化演示2', + personal: '個人中心', + tools: '工具類集合', + layoutLinkView: '外鏈', + layoutIfameView: '内嵌 iframe', + }, + staticRoutes: { + signIn: '登入', + notFound: '找不到此頁面', + noPower: '沒有許可權', + }, + user: { + title0: '組件大小', + title1: '語言切換', + title2: '選單蒐索', + title3: '佈局配寘', + title4: '消息', + title5: '開全屏', + title6: '關全屏', + dropdownLarge: '大型', + dropdownDefault: '默認', + dropdownSmall: '小型', + dropdown1: '首頁', + dropdown2: '個人中心', + dropdown3: '404', + dropdown4: '401', + dropdown5: '登出', + dropdown6: '程式碼倉庫', + searchPlaceholder: '選單蒐索:支援中文、路由路徑', + newTitle: '通知', + newBtn: '全部已讀', + newGo: '前往通知中心', + newDesc: '暫無通知', + logOutTitle: '提示', + logOutMessage: '此操作將登出,是否繼續?', + logOutConfirm: '確定', + logOutCancel: '取消', + logOutExit: '退出中', + }, + tagsView: { + refresh: '重繪', + close: '關閉', + closeOther: '關閉其它', + closeAll: '全部關閉', + fullscreen: '當前頁全屏', + closeFullscreen: '關閉全屏', + }, + notFound: { + foundTitle: '地址輸入錯誤,請重新輸入地址~', + foundMsg: '您可以先檢查網址,然後重新輸入或給我們迴響問題。', + foundBtn: '返回首頁', + }, + noAccess: { + accessTitle: '您未被授權,沒有操作許可權~', + accessMsg: '聯繫方式:加QQ群探討665452019', + accessBtn: '重新授權', + }, + layout: { + configTitle: '佈局配寘', + oneTitle: '全域主題', + twoTopTitle: '頂欄設定', + twoMenuTitle: '選單設定', + twoColumnsTitle: '分欄設定', + twoTopBar: '頂欄背景', + twoTopBarColor: '頂欄默認字體顏色', + twoIsTopBarColorGradual: '頂欄背景漸變', + twoMenuBar: '選單背景', + twoMenuBarColor: '選單默認字體顏色', + twoIsMenuBarColorGradual: '選單背景漸變', + twoColumnsMenuBar: '分欄選單背景', + twoColumnsMenuBarColor: '分欄選單默認字體顏色', + twoIsColumnsMenuBarColorGradual: '分欄選單背景漸變', + threeTitle: '介面設定', + threeIsCollapse: '選單水准折疊', + threeIsUniqueOpened: '選單手風琴', + threeIsFixedHeader: '固定 Header', + threeIsClassicSplitMenu: '經典佈局分割選單', + threeIsLockScreen: '開啟鎖屏', + threeLockScreenTime: '自動鎖屏(s/秒)', + fourTitle: '介面顯示', + fourIsShowLogo: '側邊欄 Logo', + fourIsBreadcrumb: '開啟 Breadcrumb', + fourIsBreadcrumbIcon: '開啟 Breadcrumb 圖標', + fourIsTagsview: '開啟 Tagsview', + fourIsTagsviewIcon: '開啟 Tagsview 圖標', + fourIsCacheTagsView: '開啟 TagsView 緩存', + fourIsSortableTagsView: '開啟 TagsView 拖拽', + fourIsShareTagsView: '開啟 TagsView 共用', + fourIsFooter: '開啟 Footer', + fourIsGrayscale: '灰色模式', + fourIsInvert: '色弱模式', + fourIsDark: '深色模式', + fourIsWartermark: '開啟浮水印', + fourWartermarkText: '浮水印文案', + fiveTitle: '其它設定', + fiveTagsStyle: 'Tagsview 風格', + fiveAnimation: '主頁面切換動畫', + fiveColumnsAsideStyle: '分欄高亮風格', + fiveColumnsAsideLayout: '分欄佈局風格', + sixTitle: '佈局切換', + sixDefaults: '默認', + sixClassic: '經典', + sixTransverse: '橫向', + sixColumns: '分欄', + tipText: '點擊下方按鈕,複製佈局配寘去`src/stores/themeConfig.ts`中修改。', + copyText: '一鍵複製配寘', + resetText: '一鍵恢復默認', + copyTextSuccess: '複製成功!', + copyTextError: '複製失敗!', + }, +}; diff --git a/src/i18n/pages/formI18n/en.ts b/src/i18n/pages/formI18n/en.ts new file mode 100644 index 0000000..b3c54d6 --- /dev/null +++ b/src/i18n/pages/formI18n/en.ts @@ -0,0 +1,13 @@ +// 定义内容 +export default { + formI18nLabel: { + name: 'name', + email: 'email', + autograph: 'autograph', + }, + formI18nPlaceholder: { + name: 'Please enter your name', + email: 'Please enter the users Department', + autograph: 'Please enter the login account name', + }, +}; diff --git a/src/i18n/pages/formI18n/zh-cn.ts b/src/i18n/pages/formI18n/zh-cn.ts new file mode 100644 index 0000000..0bed3ec --- /dev/null +++ b/src/i18n/pages/formI18n/zh-cn.ts @@ -0,0 +1,13 @@ +// 定义内容 +export default { + formI18nLabel: { + name: '姓名', + email: '用户归属部门', + autograph: '登陆账户名', + }, + formI18nPlaceholder: { + name: '请输入姓名', + email: '请输入用户归属部门', + autograph: '请输入登陆账户名', + }, +}; diff --git a/src/i18n/pages/formI18n/zh-tw.ts b/src/i18n/pages/formI18n/zh-tw.ts new file mode 100644 index 0000000..393ac03 --- /dev/null +++ b/src/i18n/pages/formI18n/zh-tw.ts @@ -0,0 +1,13 @@ +// 定义内容 +export default { + formI18nLabel: { + name: '姓名', + email: '用戶歸屬部門', + autograph: '登入帳戶名', + }, + formI18nPlaceholder: { + name: '請輸入姓名', + email: '請輸入用戶歸屬部門', + autograph: '請輸入登入帳戶名', + }, +}; diff --git a/src/i18n/pages/login/en.ts b/src/i18n/pages/login/en.ts new file mode 100644 index 0000000..2654a18 --- /dev/null +++ b/src/i18n/pages/login/en.ts @@ -0,0 +1,29 @@ +// 定义内容 +export default { + label: { + one1: 'User name login', + two2: 'Mobile number', + }, + link: { + one3: 'Third party login', + two4: 'Links', + }, + account: { + accountPlaceholder1: 'The user name admin or not is common', + accountPlaceholder2: 'Password: 123456', + accountPlaceholder3: 'Please enter the verification code', + accountBtnText: 'Sign in', + }, + mobile: { + placeholder1: 'Please input mobile phone number', + placeholder2: 'Please enter the verification code', + codeText: 'Get code', + btnText: 'Sign in', + msgText: + 'Warm tip: it is recommended to use Google, Microsoft edge, version 79.0.1072.62 and above browsers, and 360 browser, please use speed mode', + }, + scan: { + text: 'Open the mobile phone to scan and quickly log in / register', + }, + signInText: 'welcome back!', +}; diff --git a/src/i18n/pages/login/zh-cn.ts b/src/i18n/pages/login/zh-cn.ts new file mode 100644 index 0000000..3148c1f --- /dev/null +++ b/src/i18n/pages/login/zh-cn.ts @@ -0,0 +1,28 @@ +// 定义内容 +export default { + label: { + one1: '用户名登录', + two2: '手机号登录', + }, + link: { + one3: '第三方登录', + two4: '友情链接', + }, + account: { + accountPlaceholder1: '用户名 admin', + accountPlaceholder2: '密码:123456', + accountPlaceholder3: '请输入验证码', + accountBtnText: '登 录', + }, + mobile: { + placeholder1: '请输入手机号', + placeholder2: '请输入验证码', + codeText: '获取验证码', + btnText: '登 录', + msgText: '* 温馨提示:建议使用谷歌、Microsoft Edge,版本 79.0.1072.62 及以上浏览器,360浏览器请使用极速模式', + }, + scan: { + text: '打开手机扫一扫,快速登录/注册', + }, + signInText: '欢迎回来!', +}; diff --git a/src/i18n/pages/login/zh-tw.ts b/src/i18n/pages/login/zh-tw.ts new file mode 100644 index 0000000..138e8c8 --- /dev/null +++ b/src/i18n/pages/login/zh-tw.ts @@ -0,0 +1,28 @@ +// 定义内容 +export default { + label: { + one1: '用戶名登入', + two2: '手機號登入', + }, + link: { + one3: '協力廠商登入', + two4: '友情連結', + }, + account: { + accountPlaceholder1: '用戶名admin或不輸均為common', + accountPlaceholder2: '密碼:123456', + accountPlaceholder3: '請輸入驗證碼', + accountBtnText: '登入', + }, + mobile: { + placeholder1: '請輸入手機號', + placeholder2: '請輸入驗證碼', + codeText: '獲取驗證碼', + btnText: '登入', + msgText: '* 溫馨提示:建議使用穀歌、Microsoft Edge,版本79.0.1072.62及以上瀏覽器,360瀏覽器請使用極速模式', + }, + scan: { + text: '打開手機掃一掃,快速登錄/注册', + }, + signInText: '歡迎回來!', +}; diff --git a/src/layout/component/aside.vue b/src/layout/component/aside.vue new file mode 100644 index 0000000..d4ee363 --- /dev/null +++ b/src/layout/component/aside.vue @@ -0,0 +1,163 @@ + + + diff --git a/src/layout/component/columnsAside.vue b/src/layout/component/columnsAside.vue new file mode 100644 index 0000000..7fd7806 --- /dev/null +++ b/src/layout/component/columnsAside.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/src/layout/component/header.vue b/src/layout/component/header.vue new file mode 100644 index 0000000..21c9e2d --- /dev/null +++ b/src/layout/component/header.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/layout/component/main.vue b/src/layout/component/main.vue new file mode 100644 index 0000000..18eba60 --- /dev/null +++ b/src/layout/component/main.vue @@ -0,0 +1,101 @@ + + + diff --git a/src/layout/footer/index.vue b/src/layout/footer/index.vue new file mode 100644 index 0000000..7074293 --- /dev/null +++ b/src/layout/footer/index.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/layout/index.vue b/src/layout/index.vue new file mode 100644 index 0000000..50643a4 --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,54 @@ + + + diff --git a/src/layout/lockScreen/index.vue b/src/layout/lockScreen/index.vue new file mode 100644 index 0000000..b9173c2 --- /dev/null +++ b/src/layout/lockScreen/index.vue @@ -0,0 +1,372 @@ + + + + + diff --git a/src/layout/logo/index.vue b/src/layout/logo/index.vue new file mode 100644 index 0000000..67178af --- /dev/null +++ b/src/layout/logo/index.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/layout/main/classic.vue b/src/layout/main/classic.vue new file mode 100644 index 0000000..b92290f --- /dev/null +++ b/src/layout/main/classic.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/layout/main/columns.vue b/src/layout/main/columns.vue new file mode 100644 index 0000000..0aa1d31 --- /dev/null +++ b/src/layout/main/columns.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/layout/main/defaults.vue b/src/layout/main/defaults.vue new file mode 100644 index 0000000..0cabb0c --- /dev/null +++ b/src/layout/main/defaults.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/layout/main/transverse.vue b/src/layout/main/transverse.vue new file mode 100644 index 0000000..538f911 --- /dev/null +++ b/src/layout/main/transverse.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/layout/navBars/breadcrumb/breadcrumb.vue b/src/layout/navBars/breadcrumb/breadcrumb.vue new file mode 100644 index 0000000..609dee9 --- /dev/null +++ b/src/layout/navBars/breadcrumb/breadcrumb.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/src/layout/navBars/breadcrumb/closeFull.vue b/src/layout/navBars/breadcrumb/closeFull.vue new file mode 100644 index 0000000..6c786bb --- /dev/null +++ b/src/layout/navBars/breadcrumb/closeFull.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/layout/navBars/breadcrumb/index.vue b/src/layout/navBars/breadcrumb/index.vue new file mode 100644 index 0000000..2810718 --- /dev/null +++ b/src/layout/navBars/breadcrumb/index.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/layout/navBars/breadcrumb/search.vue b/src/layout/navBars/breadcrumb/search.vue new file mode 100644 index 0000000..d2a5713 --- /dev/null +++ b/src/layout/navBars/breadcrumb/search.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/layout/navBars/breadcrumb/setings.vue b/src/layout/navBars/breadcrumb/setings.vue new file mode 100644 index 0000000..b7e5263 --- /dev/null +++ b/src/layout/navBars/breadcrumb/setings.vue @@ -0,0 +1,816 @@ + + + + + diff --git a/src/layout/navBars/breadcrumb/user.vue b/src/layout/navBars/breadcrumb/user.vue new file mode 100644 index 0000000..3569f4e --- /dev/null +++ b/src/layout/navBars/breadcrumb/user.vue @@ -0,0 +1,303 @@ + + + + + diff --git a/src/layout/navBars/breadcrumb/userNews.vue b/src/layout/navBars/breadcrumb/userNews.vue new file mode 100644 index 0000000..99bf204 --- /dev/null +++ b/src/layout/navBars/breadcrumb/userNews.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/src/layout/navBars/index.vue b/src/layout/navBars/index.vue new file mode 100644 index 0000000..f41a0cf --- /dev/null +++ b/src/layout/navBars/index.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/layout/navBars/tagsView/contextmenu.vue b/src/layout/navBars/tagsView/contextmenu.vue new file mode 100644 index 0000000..c717aae --- /dev/null +++ b/src/layout/navBars/tagsView/contextmenu.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/layout/navBars/tagsView/tagsView.vue b/src/layout/navBars/tagsView/tagsView.vue new file mode 100644 index 0000000..83f272d --- /dev/null +++ b/src/layout/navBars/tagsView/tagsView.vue @@ -0,0 +1,734 @@ + + + + + diff --git a/src/layout/navMenu/horizontal.vue b/src/layout/navMenu/horizontal.vue new file mode 100644 index 0000000..022668b --- /dev/null +++ b/src/layout/navMenu/horizontal.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/src/layout/navMenu/subItem.vue b/src/layout/navMenu/subItem.vue new file mode 100644 index 0000000..3fcefd3 --- /dev/null +++ b/src/layout/navMenu/subItem.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/layout/navMenu/vertical.vue b/src/layout/navMenu/vertical.vue new file mode 100644 index 0000000..1bfa825 --- /dev/null +++ b/src/layout/navMenu/vertical.vue @@ -0,0 +1,101 @@ + + + diff --git a/src/layout/routerView/iframes.vue b/src/layout/routerView/iframes.vue new file mode 100644 index 0000000..43e71c5 --- /dev/null +++ b/src/layout/routerView/iframes.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/layout/routerView/link.vue b/src/layout/routerView/link.vue new file mode 100644 index 0000000..a48f002 --- /dev/null +++ b/src/layout/routerView/link.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/layout/routerView/parent.vue b/src/layout/routerView/parent.vue new file mode 100644 index 0000000..db22141 --- /dev/null +++ b/src/layout/routerView/parent.vue @@ -0,0 +1,88 @@ + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..c092855 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,64 @@ +import { createApp } from 'vue'; +import pinia from '/@/stores/index'; +import App from './App.vue'; +import router from './router'; +import { directive } from '/@/utils/directive'; +import { i18n } from '/@/i18n/index'; +import other from '/@/utils/other'; + +import ElementPlus from 'element-plus'; + +import 'element-plus/dist/index.css'; +import '/@/theme/index.scss'; +import mitt from 'mitt'; +import VueGridLayout from 'vue-grid-layout'; +import {getUpFileUrl, handleTree, parseTime, selectDictLabel} from '/@/utils/gfast'; +import {useDict} from '/@/api/system/dict/data'; +import {getItems, setItems, getOptionValue, isEmpty} from '/@/api/items' +// 分页组件 +import pagination from '/@/components/pagination/index.vue' + +// 大文件上传组件 +// @ts-ignore +import uploader from 'vue-simple-uploader' +import 'vue-simple-uploader/dist/style.css' +import VueUeditorWrap from 'vue-ueditor-wrap'; + + +const app = createApp(App); + +directive(app); +other.elSvg(app); + +app.component('pagination', pagination) +app.use(pinia) + .use(uploader) + .use(router) + .use(ElementPlus, { i18n: i18n.global.t }) + .use(i18n) + .use(VueGridLayout) + .use(VueUeditorWrap) + .mount('#app'); + +app.config.globalProperties.getUpFileUrl=getUpFileUrl +app.config.globalProperties.handleTree=handleTree +app.config.globalProperties.useDict=useDict +app.config.globalProperties.selectDictLabel=selectDictLabel + +app.config.globalProperties.getItems=getItems +app.config.globalProperties.setItems=setItems +app.config.globalProperties.getOptionValue=getOptionValue +app.config.globalProperties.isEmpty=isEmpty +app.config.globalProperties.parseTime=parseTime + +const globalProperties={ + mittBus: mitt(), + i18n +} + + +//必须合并vue默认的变量,否则有问题 +app.config.globalProperties = Object.assign( + app.config.globalProperties, + globalProperties +); diff --git a/src/router/backEnd.ts b/src/router/backEnd.ts new file mode 100644 index 0000000..7c2d78e --- /dev/null +++ b/src/router/backEnd.ts @@ -0,0 +1,170 @@ +import { RouteRecordRaw } from 'vue-router'; +import pinia from '/@/stores/index'; +import { useUserInfo } from '/@/stores/userInfo'; +import { useRequestOldRoutes } from '/@/stores/requestOldRoutes'; +import { Session } from '/@/utils/storage'; +import { NextLoading } from '/@/utils/loading'; +import { demoRoutes,dynamicRoutes, notFoundAndNoPower } from '/@/router/route'; +import { formatTwoStageRoutes, formatFlatteningRoutes, router } from '/@/router/index'; +import { useRoutesList } from '/@/stores/routesList'; +import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes'; +import { getUserMenus } from '/@/api/system/menu/index'; + + + +const layouModules: any = import.meta.glob('../layout/routerView/*.{vue,tsx}'); +const viewsModules: any = import.meta.glob('../views/**/*.{vue,tsx}'); + +// 后端控制路由 + +/** + * 获取目录下的 .vue、.tsx 全部文件 + * @method import.meta.glob + * @link 参考:https://cn.vitejs.dev/guide/features.html#json + */ +const dynamicViewsModules: Record = Object.assign({}, { ...layouModules }, { ...viewsModules }); + +/** + * 后端控制路由:初始化方法,防止刷新时路由丢失 + * @method NextLoading 界面 loading 动画开始执行 + * @method useUserInfo().setUserInfos() 触发初始化用户信息 pinia + * @method useRequestOldRoutes().setRequestOldRoutes() 存储接口原始路由(未处理component),根据需求选择使用 + * @method setAddRoute 添加动态路由 + * @method setFilterMenuAndCacheTagsViewRoutes 设置路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组 + */ +export async function initBackEndControlRoutes() { + // 界面 loading 动画开始执行 + if (window.nextLoading === undefined) NextLoading.start(); + // 无 token 停止执行下一步 + if (!Session.get('token')) return false; + // 触发初始化用户信息 pinia + // https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP + await useUserInfo().setUserInfos(); + await useUserInfo().setPermissions(); + // 获取路由菜单数据 + await getBackEndControlRoutes(); + let menuRoute = Session.get('userMenu') + // 存储接口原始路由(未处理component),根据需求选择使用 + useRequestOldRoutes().setRequestOldRoutes(JSON.parse(JSON.stringify(menuRoute))); + // 处理路由(component),替换 dynamicRoutes(/@/router/route)第一个顶级 children 的路由 + dynamicRoutes[0].children?.push(...await backEndComponent(menuRoute),...demoRoutes); + // 添加动态路由 + await setAddRoute(); + // 设置路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组 + await setFilterMenuAndCacheTagsViewRoutes(); +} + +/** + * 设置路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组 + * @description 用于左侧菜单、横向菜单的显示 + * @description 用于 tagsView、菜单搜索中:未过滤隐藏的(isHide) + */ +export function setFilterMenuAndCacheTagsViewRoutes() { + const storesRoutesList = useRoutesList(pinia); + storesRoutesList.setRoutesList(dynamicRoutes[0].children as any); + setCacheTagsViewRoutes(); +} + +/** + * 缓存多级嵌套数组处理后的一维数组 + * @description 用于 tagsView、菜单搜索中:未过滤隐藏的(isHide) + */ +export function setCacheTagsViewRoutes() { + const storesTagsView = useTagsViewRoutes(pinia); + storesTagsView.setTagsViewRoutes(formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes))[0].children); +} + +/** + * 处理路由格式及添加捕获所有路由或 404 Not found 路由 + * @description 替换 dynamicRoutes(/@/router/route)第一个顶级 children 的路由 + * @returns 返回替换后的路由数组 + */ +export function setFilterRouteEnd() { + let filterRouteEnd: any = formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes)); + filterRouteEnd[0].children = [...filterRouteEnd[0].children, ...notFoundAndNoPower]; + return filterRouteEnd; +} + +/** + * 添加动态路由 + * @method router.addRoute + * @description 此处循环为 dynamicRoutes(/@/router/route)第一个顶级 children 的路由一维数组,非多级嵌套 + * @link 参考:https://next.router.vuejs.org/zh/api/#addroute + */ +export async function setAddRoute() { + await setFilterRouteEnd().forEach((route: RouteRecordRaw) => { + const routeName: any = route.name; + if (!router.hasRoute(routeName)) router.addRoute(route); + }); +} + +/** + * 请求后端路由菜单接口 + * @description isRequestRoutes 为 true,则开启后端控制路由 + * @returns 返回后端路由菜单数据 + */ +export async function getBackEndControlRoutes() { + let menuRoute = Session.get('userMenu') + let permissions = Session.get('permissions') + if (!menuRoute || !permissions) { + await refreshBackEndControlRoutes() + } +} + +/** + * 请求后端路由菜单接口刷新菜单及权限 + * @description isRequestRoutes 为 true,则开启后端控制路由 + * @returns 返回后端路由菜单数据 + */ +export async function refreshBackEndControlRoutes() { + // 获取路由 + await getUserMenus().then((res:any)=>{ + Session.set('userMenu',res.data.menuList) + Session.set('permissions',res.data.permissions) + }) + await useUserInfo().setPermissions() +} + +/** + * 重新请求后端路由菜单接口 + * @description 用于菜单管理界面刷新菜单(未进行测试) + * @description 路径:/src/views/system/menu/component/addMenu.vue + */ +export function setBackEndControlRefreshRoutes() { + getBackEndControlRoutes(); +} + +/** + * 后端路由 component 转换 + * @param routes 后端返回的路由表数组 + * @returns 返回处理成函数后的 component + */ +export function backEndComponent(routes: any) { + if (!routes) return; + return routes.map((item: any) => { + if (item.component) item.component = dynamicImport(dynamicViewsModules, item.component as string); + item.children && backEndComponent(item.children); + return item; + }); +} + +/** + * 后端路由 component 转换函数 + * @param dynamicViewsModules 获取目录下的 .vue、.tsx 全部文件 + * @param component 当前要处理项 component + * @returns 返回处理成函数后的 component + */ +export function dynamicImport(dynamicViewsModules: Record, component: string) { + const keys = Object.keys(dynamicViewsModules); + const matchKeys = keys.filter((key) => { + const k = key.replace(/..\/views|../, ''); + return k.startsWith(`${component}`) || k.startsWith(`/${component}`); + }); + if (matchKeys?.length === 1) { + const matchKey = matchKeys[0]; + return dynamicViewsModules[matchKey]; + } + if (matchKeys?.length > 1) { + return false; + } +} diff --git a/src/router/frontEnd.ts b/src/router/frontEnd.ts new file mode 100644 index 0000000..67fc3fa --- /dev/null +++ b/src/router/frontEnd.ts @@ -0,0 +1,148 @@ +import { RouteRecordRaw } from 'vue-router'; +import { storeToRefs } from 'pinia'; +import { formatTwoStageRoutes, formatFlatteningRoutes, router } from '/@/router/index'; +import { dynamicRoutes, notFoundAndNoPower } from '/@/router/route'; +import pinia from '/@/stores/index'; +import { Session } from '/@/utils/storage'; +import { useUserInfo } from '/@/stores/userInfo'; +import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes'; +import { useRoutesList } from '/@/stores/routesList'; +import { NextLoading } from '/@/utils/loading'; + +// 前端控制路由 + +/** + * 前端控制路由:初始化方法,防止刷新时路由丢失 + * @method NextLoading 界面 loading 动画开始执行 + * @method useUserInfo(pinia).setUserInfos() 触发初始化用户信息 pinia + * @method setAddRoute 添加动态路由 + * @method setFilterMenuAndCacheTagsViewRoutes 设置递归过滤有权限的路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组 + */ +export async function initFrontEndControlRoutes() { + // 界面 loading 动画开始执行 + if (window.nextLoading === undefined) NextLoading.start(); + // 无 token 停止执行下一步 + if (!Session.get('token')) return false; + // 触发初始化用户信息 pinia + // https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP + await useUserInfo(pinia).setUserInfos(); + // 添加动态路由 + await setAddRoute(); + // 设置递归过滤有权限的路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组 + await setFilterMenuAndCacheTagsViewRoutes(); +} + +/** + * 添加动态路由 + * @method router.addRoute + * @description 此处循环为 dynamicRoutes(/@/router/route)第一个顶级 children 的路由一维数组,非多级嵌套 + * @link 参考:https://next.router.vuejs.org/zh/api/#addroute + */ +export async function setAddRoute() { + await setFilterRouteEnd().forEach((route: RouteRecordRaw) => { + router.addRoute(route); + }); +} + +/** + * 删除/重置路由 + * @method router.removeRoute + * @description 此处循环为 dynamicRoutes(/@/router/route)第一个顶级 children 的路由一维数组,非多级嵌套 + * @link 参考:https://next.router.vuejs.org/zh/api/#push + */ +export async function frontEndsResetRoute() { + await setFilterRouteEnd().forEach((route: RouteRecordRaw) => { + const routeName: any = route.name; + router.hasRoute(routeName) && router.removeRoute(routeName); + }); +} + +/** + * 获取有当前用户权限标识的路由数组,进行对原路由的替换 + * @description 替换 dynamicRoutes(/@/router/route)第一个顶级 children 的路由 + * @returns 返回替换后的路由数组 + */ +export function setFilterRouteEnd() { + let filterRouteEnd: any = formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes)); + filterRouteEnd[0].children = [...setFilterRoute(filterRouteEnd[0].children), ...notFoundAndNoPower]; + return filterRouteEnd; +} + +/** + * 获取当前用户权限标识去比对路由表(未处理成多级嵌套路由) + * @description 这里主要用于动态路由的添加,router.addRoute + * @link 参考:https://next.router.vuejs.org/zh/api/#addroute + * @param chil dynamicRoutes(/@/router/route)第一个顶级 children 的下路由集合 + * @returns 返回有当前用户权限标识的路由数组 + */ +export function setFilterRoute(chil: any) { + const stores = useUserInfo(pinia); + const { userInfos } = storeToRefs(stores); + let filterRoute: any = []; + chil.forEach((route: any) => { + if (route.meta.roles) { + route.meta.roles.forEach((metaRoles: any) => { + userInfos.value.roles.forEach((roles: any) => { + if (metaRoles === roles) filterRoute.push({ ...route }); + }); + }); + } + }); + return filterRoute; +} + +/** + * 缓存多级嵌套数组处理后的一维数组 + * @description 用于 tagsView、菜单搜索中:未过滤隐藏的(isHide) + */ +export function setCacheTagsViewRoutes() { + // 获取有权限的路由,否则 tagsView、菜单搜索中无权限的路由也将显示 + const stores = useUserInfo(pinia); + const storesTagsView = useTagsViewRoutes(pinia); + const { userInfos } = storeToRefs(stores); + let rolesRoutes = setFilterHasRolesMenu(dynamicRoutes, userInfos.value.roles); + // 添加到 pinia setTagsViewRoutes 中 + storesTagsView.setTagsViewRoutes(formatTwoStageRoutes(formatFlatteningRoutes(rolesRoutes))[0].children); +} + +/** + * 设置递归过滤有权限的路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组 + * @description 用于左侧菜单、横向菜单的显示 + * @description 用于 tagsView、菜单搜索中:未过滤隐藏的(isHide) + */ +export function setFilterMenuAndCacheTagsViewRoutes() { + const stores = useUserInfo(pinia); + const storesRoutesList = useRoutesList(pinia); + const { userInfos } = storeToRefs(stores); + storesRoutesList.setRoutesList(setFilterHasRolesMenu(dynamicRoutes[0].children, userInfos.value.roles)); + setCacheTagsViewRoutes(); +} + +/** + * 判断路由 `meta.roles` 中是否包含当前登录用户权限字段 + * @param roles 用户权限标识,在 userInfos(用户信息)的 roles(登录页登录时缓存到浏览器)数组 + * @param route 当前循环时的路由项 + * @returns 返回对比后有权限的路由项 + */ +export function hasRoles(roles: any, route: any) { + if (route.meta && route.meta.roles) return roles.some((role: any) => route.meta.roles.includes(role)); + else return true; +} + +/** + * 获取当前用户权限标识去比对路由表,设置递归过滤有权限的路由 + * @param routes 当前路由 children + * @param roles 用户权限标识,在 userInfos(用户信息)的 roles(登录页登录时缓存到浏览器)数组 + * @returns 返回有权限的路由数组 `meta.roles` 中控制 + */ +export function setFilterHasRolesMenu(routes: any, roles: any) { + const menu: any = []; + routes.forEach((route: any) => { + const item = { ...route }; + if (hasRoles(roles, item)) { + if (item.children) item.children = setFilterHasRolesMenu(item.children, roles); + menu.push(item); + } + }); + return menu; +} diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..da607b1 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,131 @@ +import { createRouter, createWebHashHistory } from 'vue-router'; +import NProgress from 'nprogress'; +import 'nprogress/nprogress.css'; +import pinia from '/@/stores/index'; +import { storeToRefs } from 'pinia'; +import { useKeepALiveNames } from '/@/stores/keepAliveNames'; +import { useRoutesList } from '/@/stores/routesList'; +import { useThemeConfig } from '/@/stores/themeConfig'; +import { Session } from '/@/utils/storage'; +import { staticRoutes } from '/@/router/route'; +import { initFrontEndControlRoutes } from '/@/router/frontEnd'; +import { initBackEndControlRoutes } from '/@/router/backEnd'; + +/** + * 1、前端控制路由时:isRequestRoutes 为 false,需要写 roles,需要走 setFilterRoute 方法。 + * 2、后端控制路由时:isRequestRoutes 为 true,不需要写 roles,不需要走 setFilterRoute 方法), + * 相关方法已拆解到对应的 `backEnd.ts` 与 `frontEnd.ts`(他们互不影响,不需要同时改 2 个文件)。 + * 特别说明: + * 1、前端控制:路由菜单由前端去写(无菜单管理界面,有角色管理界面),角色管理中有 roles 属性,需返回到 userInfo 中。 + * 2、后端控制:路由菜单由后端返回(有菜单管理界面、有角色管理界面) + */ + +// 读取 `/src/stores/themeConfig.ts` 是否开启后端控制路由配置 +const storesThemeConfig = useThemeConfig(pinia); +const { themeConfig } = storeToRefs(storesThemeConfig); +const { isRequestRoutes } = themeConfig.value; + +/** + * 创建一个可以被 Vue 应用程序使用的路由实例 + * @method createRouter(options: RouterOptions): Router + * @link 参考:https://next.router.vuejs.org/zh/api/#createrouter + */ +export const router = createRouter({ + history: createWebHashHistory(), + routes: staticRoutes, +}); + +/** + * 路由多级嵌套数组处理成一维数组 + * @param arr 传入路由菜单数据数组 + * @returns 返回处理后的一维路由菜单数组 + */ +export function formatFlatteningRoutes(arr: any) { + if (arr.length <= 0) return false; + for (let i = 0; i < arr.length; i++) { + if (arr[i].children) { + arr = arr.slice(0, i + 1).concat(arr[i].children, arr.slice(i + 1)); + } + } + return arr; +} + +/** + * 一维数组处理成多级嵌套数组(只保留二级:也就是二级以上全部处理成只有二级,keep-alive 支持二级缓存) + * @description isKeepAlive 处理 `name` 值,进行缓存。顶级关闭,全部不缓存 + * @link 参考:https://v3.cn.vuejs.org/api/built-in-components.html#keep-alive + * @param arr 处理后的一维路由菜单数组 + * @returns 返回将一维数组重新处理成 `定义动态路由(dynamicRoutes)` 的格式 + */ +export function formatTwoStageRoutes(arr: any) { + if (arr.length <= 0) return false; + const newArr: any = []; + const cacheList: Array = []; + arr.forEach((v: any) => { + if (v.path === '/') { + newArr.push({ component: v.component, name: v.name, path: v.path, redirect: v.redirect, meta: v.meta, children: [] }); + } else { + // 判断是否是动态路由(xx/:id/:name),用于 tagsView 等中使用 + // 修复:https://gitee.com/lyt-top/vue-next-admin/issues/I3YX6G + if (v.path.indexOf('/:') > -1) { + v.meta['isDynamic'] = true; + v.meta['isDynamicPath'] = v.path; + } + newArr[0].children.push({ ...v }); + // 存 name 值,keep-alive 中 include 使用,实现路由的缓存 + // 路径:/@/layout/routerView/parent.vue + if (newArr[0].meta.isKeepAlive && v.meta.isKeepAlive) { + cacheList.push(v.name); + const stores = useKeepALiveNames(pinia); + stores.setCacheKeepAlive(cacheList); + } + } + }); + return newArr; +} + +// 路由加载前 +router.beforeEach(async (to, from, next) => { + NProgress.configure({ showSpinner: false }); + if (to.meta.title) NProgress.start(); + const token = Session.get('token'); + if (to.path === '/login' && !token) { + next(); + NProgress.done(); + } else { + if (!token) { + next(`/login?redirect=${to.path}¶ms=${JSON.stringify(to.query ? to.query : to.params)}`); + Session.clear(); + NProgress.done(); + } else if (token && to.path === '/login') { + next('/home'); + NProgress.done(); + } else { + const storesRoutesList = useRoutesList(pinia); + const { routesList } = storeToRefs(storesRoutesList); + if (routesList.value.length === 0) { + if (isRequestRoutes) { + // 后端控制路由:路由数据初始化,防止刷新时丢失 + await initBackEndControlRoutes(); + // 动态添加路由:防止非首页刷新时跳转回首页的问题 + // 确保 addRoute() 时动态添加的路由已经被完全加载上去 + next({ ...to, replace: true }); + } else { + // https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP + await initFrontEndControlRoutes(); + next({ ...to, replace: true }); + } + } else { + next(); + } + } + } +}); + +// 路由加载后 +router.afterEach(() => { + NProgress.done(); +}); + +// 导出路由 +export default router; diff --git a/src/router/route.ts b/src/router/route.ts new file mode 100644 index 0000000..6cf4eb6 --- /dev/null +++ b/src/router/route.ts @@ -0,0 +1,1166 @@ +import { RouteRecordRaw } from 'vue-router'; + +/** + * 路由meta对象参数说明 + * meta: { + * title: 菜单栏及 tagsView 栏、菜单搜索名称(国际化) + * isLink: 是否超链接菜单,开启外链条件,`1、isLink: 链接地址不为空` + * isHide: 是否隐藏此路由 + * isKeepAlive: 是否缓存组件状态 + * isAffix: 是否固定在 tagsView 栏上 + * isIframe: 是否内嵌窗口,开启条件,`1、isIframe:true 2、isLink:链接地址不为空` + * roles: 当前路由权限标识,取角色管理。控制路由显示、隐藏。超级管理员:admin 普通角色:common + * icon: 菜单、tagsView 图标,阿里:加 `iconfont xxx`,fontawesome:加 `fa xxx` + * } + */ + +/** + * 定义动态路由 + * 前端添加路由,请在顶级节点的 `children 数组` 里添加 + * @description 未开启 isRequestRoutes 为 true 时使用(前端控制路由),开启时第一个顶级 children 的路由将被替换成接口请求回来的路由数据 + * @description 各字段请查看 `/@/views/system/menu/component/addMenu.vue 下的 ruleForm` + * @returns 返回路由菜单数据 + */ +export const dynamicRoutes: Array = [ + { + path: '/', + name: '/', + component: () => import('/@/layout/index.vue'), + redirect: '/home', + meta: { + isKeepAlive: true, + }, + children: [ + { + path: '/home', + name: 'home', + component: () => import('/@/views/home/index.vue'), + meta: { + title: 'message.router.home', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: true, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-shouye', + }, + }, + { + path: '/personal', + name: 'personals', + component: () => import('/@/views/system/personal/index.vue'), + meta: { + title: '个人中心', + isLink: '', + isHide: true, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-diannao', + }, + }, + { + path: '/bigUpload', + name: 'bigUpload', + component: () => import('/@/layout/routerView/parent.vue'), + redirect: '/bigUpload', + meta:{ + title: '大文件上传', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-diannao', + }, + children:[ + { + path: '/bigUpload', + name: 'bigUpload', + component: () => import('/@/views/bigUpload/index.vue'), + meta: { + title: '大文件上传', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-shouye', + }, + }, + ] + } + ], + }, +]; + +export const demoRoutes:Array = [ + { + path: '/demo', + name: 'demo', + component: () => import('/@/layout/routerView/parent.vue'), + redirect: '/demo/system/menu', + meta: { + title: '案例演示', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-diannao', + }, + children:[ + { + path: '/demo/system', + name: 'system', + component: () => import('/@/layout/routerView/parent.vue'), + redirect: '/system/menu', + meta: { + title: 'message.router.system', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-xitongshezhi', + }, + children: [ + { + path: '/demo/system/menu', + name: 'systemMenu', + component: () => import('/@/views/system/menu/index.vue'), + meta: { + title: 'message.router.systemMenu', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-caidan', + }, + }, + { + path: '/demo/system/role', + name: 'systemRole', + component: () => import('/@/views/system/role/index.vue'), + meta: { + title: 'message.router.systemRole', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'ele-ColdDrink', + }, + }, + { + path: '/demo/system/user', + name: 'systemUser', + component: () => import('/@/views/system/user/index.vue'), + meta: { + title: 'message.router.systemUser', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-icon-', + }, + }, + { + path: '/demo/system/dept', + name: 'systemDept', + component: () => import('/@/views/system/dept/index.vue'), + meta: { + title: 'message.router.systemDept', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'ele-OfficeBuilding', + }, + }, + ], + }, + { + path: '/demo/menu', + name: 'menu', + component: () => import('/@/layout/routerView/parent.vue'), + redirect: '/menu/menu1', + meta: { + title: 'message.router.menu', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-caidan', + }, + children: [ + { + path: '/demo/menu/menu1', + name: 'menu1', + component: () => import('/@/layout/routerView/parent.vue'), + redirect: '/menu/menu1/menu11', + meta: { + title: 'message.router.menu1', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-caidan', + }, + children: [ + { + path: '/demo/menu/menu1/menu11', + name: 'menu11', + component: () => import('/@/views/menu/menu1/menu11/index.vue'), + meta: { + title: 'message.router.menu11', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-caidan', + }, + }, + { + path: '/demo/menu/menu1/menu12', + name: 'menu12', + component: () => import('/@/layout/routerView/parent.vue'), + redirect: '/menu/menu1/menu12/menu121', + meta: { + title: 'message.router.menu12', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-caidan', + }, + children: [ + { + path: '/demo/menu/menu1/menu12/menu121', + name: 'menu121', + component: () => import('/@/views/menu/menu1/menu12/menu121/index.vue'), + meta: { + title: 'message.router.menu121', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-caidan', + }, + }, + { + path: '/demo/menu/menu1/menu12/menu122', + name: 'menu122', + component: () => import('/@/views/menu/menu1/menu12/menu122/index.vue'), + meta: { + title: 'message.router.menu122', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-caidan', + }, + }, + ], + }, + { + path: '/demo/menu/menu1/menu13', + name: 'menu13', + component: () => import('/@/views/menu/menu1/menu13/index.vue'), + meta: { + title: 'message.router.menu13', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-caidan', + }, + }, + ], + }, + { + path: '/demo/menu/menu2', + name: 'menu2', + component: () => import('/@/views/menu/menu2/index.vue'), + meta: { + title: 'message.router.menu2', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-caidan', + }, + }, + ], + }, + { + path: '/demo/fun', + name: 'funIndex', + component: () => import('/@/layout/routerView/parent.vue'), + redirect: '/fun/tagsView', + meta: { + title: 'message.router.funIndex', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-crew_feature', + }, + children: [ + { + path: '/demo/fun/tagsView', + name: 'funTagsView', + component: () => import('/@/views/fun/tagsView/index.vue'), + meta: { + title: 'message.router.funTagsView', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-Pointer', + }, + }, + { + path: '/demo/fun/countup', + name: 'funCountup', + component: () => import('/@/views/fun/countup/index.vue'), + meta: { + title: 'message.router.funCountup', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-Odometer', + }, + }, + { + path: '/demo/fun/codemirror', + name: 'demoCodeMirror', + component: () => import('/@/views/fun/codemirror/index.vue'), + meta: { + title: '代码编辑器', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-Odometer', + }, + }, + { + path: '/demo/fun/ueditor', + name: 'demoUeditor', + component: () => import('/@/views/fun/ueditor/index.vue'), + meta: { + title: '富文本编辑器', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-Odometer', + }, + }, + { + path: '/demo/fun/cropper', + name: 'funCropper', + component: () => import('/@/views/fun/cropper/index.vue'), + meta: { + title: 'message.router.funCropper', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-caijian', + }, + }, + { + path: '/demo/fun/qrcode', + name: 'funQrcode', + component: () => import('/@/views/fun/qrcode/index.vue'), + meta: { + title: 'message.router.funQrcode', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-ico', + }, + }, + { + path: '/demo/fun/echartsMap', + name: 'funEchartsMap', + component: () => import('/@/views/fun/echartsMap/index.vue'), + meta: { + title: 'message.router.funEchartsMap', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-ditu', + }, + }, + { + path: '/demo/fun/printJs', + name: 'funPrintJs', + component: () => import('/@/views/fun/printJs/index.vue'), + meta: { + title: 'message.router.funPrintJs', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-Printer', + }, + }, + { + path: '/demo/fun/clipboard', + name: 'funClipboard', + component: () => import('/@/views/fun/clipboard/index.vue'), + meta: { + title: 'message.router.funClipboard', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-DocumentCopy', + }, + }, + { + path: '/demo/fun/gridLayout', + name: 'funGridLayout', + component: () => import('/@/views/fun/gridLayout/index.vue'), + meta: { + title: 'message.router.funGridLayout', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-tuodong', + }, + }, + { + path: '/demo/fun/splitpanes', + name: 'funSplitpanes', + component: () => import('/@/views/fun/splitpanes/index.vue'), + meta: { + title: 'message.router.funSplitpanes', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon--chaifenlie', + }, + }, + ], + }, + { + path: '/demo/pages', + name: 'pagesIndex', + component: () => import('/@/layout/routerView/parent.vue'), + redirect: '/pages/filtering', + meta: { + title: 'message.router.pagesIndex', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-fuzhiyemian', + }, + children: [ + { + path: '/demo/pages/filtering', + name: 'pagesFiltering', + component: () => import('/@/views/pages/filtering/index.vue'), + meta: { + title: 'message.router.pagesFiltering', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-Sell', + }, + /** + * 注意此处详情写法: + * 1、嵌套进父级里时,面包屑显示为:首页/页面/过滤筛选组件/过滤筛选组件详情 + * 2、不嵌套进父级时,面包屑显示为:首页/页面/过滤筛选组件/过滤筛选组件详情 + * 3、想要父级不高亮,面包屑显示为:首页/页面/过滤筛选组件详情,设置路径为:/pages/filteringDetails + */ + children: [ + { + path: '/demo/pages/filtering/details', + name: 'pagesFilteringDetails', + component: () => import('/@/views/pages/filtering/details.vue'), + meta: { + title: 'message.router.pagesFilteringDetails', + isLink: '', + isHide: true, + isKeepAlive: false, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-Sunny', + }, + }, + ], + }, + { + path: '/demo/pages/filtering/details1', + name: 'pagesFilteringDetails1', + component: () => import('/@/views/pages/filtering/details1.vue'), + meta: { + title: 'message.router.pagesFilteringDetails1', + isLink: '', + isHide: true, + isKeepAlive: false, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-Sunny', + }, + }, + { + path: '/demo/pages/iocnfont', + name: 'pagesIocnfont', + component: () => import('/@/views/pages/iocnfont/index.vue'), + meta: { + title: 'message.router.pagesIocnfont', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-Present', + }, + }, + { + path: '/demo/pages/element', + name: 'pagesElement', + component: () => import('/@/views/pages/element/index.vue'), + meta: { + title: 'message.router.pagesElement', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-Eleme', + }, + }, + { + path: '/demo/pages/awesome', + name: 'pagesAwesome', + component: () => import('/@/views/pages/awesome/index.vue'), + meta: { + title: 'message.router.pagesAwesome', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-SetUp', + }, + }, + { + path: '/demo/pages/formAdapt', + name: 'pagesFormAdapt', + component: () => import('/@/views/pages/formAdapt/index.vue'), + meta: { + title: 'message.router.pagesFormAdapt', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-biaodan', + }, + }, + { + path: '/demo/pages/tableRules', + name: 'pagesTableRules', + component: () => import('/@/views/pages/tableRules/index.vue'), + meta: { + title: 'message.router.pagesTableRules', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-jiliandongxuanzeqi', + }, + }, + { + path: '/demo/pages/formI18n', + name: 'pagesFormI18n', + component: () => import('/@/views/pages/formI18n/index.vue'), + meta: { + title: 'message.router.pagesFormI18n', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-diqiu', + }, + }, + { + path: '/demo/pages/formRules', + name: 'pagesFormRules', + component: () => import('/@/views/pages/formRules/index.vue'), + meta: { + title: 'message.router.pagesFormRules', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-shuxing', + }, + }, + { + path: '/demo/pages/listAdapt', + name: 'pagesListAdapt', + component: () => import('/@/views/pages/listAdapt/index.vue'), + meta: { + title: 'message.router.pagesListAdapt', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-chazhaobiaodanliebiao', + }, + }, + { + path: '/demo/pages/waterfall', + name: 'pagesWaterfall', + component: () => import('/@/views/pages/waterfall/index.vue'), + meta: { + title: 'message.router.pagesWaterfall', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-zidingyibuju', + }, + }, + { + path: '/demo/pages/steps', + name: 'pagesSteps', + component: () => import('/@/views/pages/steps/index.vue'), + meta: { + title: 'message.router.pagesSteps', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-step', + }, + }, + { + path: '/demo/pages/preview', + name: 'pagesPreview', + component: () => import('/@/views/pages/preview/index.vue'), + meta: { + title: 'message.router.pagesPreview', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-15tupianyulan', + }, + }, + { + path: '/demo/pages/waves', + name: 'pagesWaves', + component: () => import('/@/views/pages/waves/index.vue'), + meta: { + title: 'message.router.pagesWaves', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-bolangneng', + }, + }, + { + path: '/demo/pages/tree', + name: 'pagesTree', + component: () => import('/@/views/pages/tree/index.vue'), + meta: { + title: 'message.router.pagesTree', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-shuxingtu', + }, + }, + { + path: '/demo/pages/drag', + name: 'pagesDrag', + component: () => import('/@/views/pages/drag/index.vue'), + meta: { + title: 'message.router.pagesDrag', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-Pointer', + }, + }, + { + path: '/demo/pages/lazyImg', + name: 'pagesLazyImg', + component: () => import('/@/views/pages/lazyImg/index.vue'), + meta: { + title: 'message.router.pagesLazyImg', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'ele-PictureFilled', + }, + }, + { + path: '/demo/pages/dynamicForm', + name: 'pagesDynamicForm', + component: () => import('/@/views/pages/dynamicForm/index.vue'), + meta: { + title: 'message.router.pagesDynamicForm', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-diannao', + }, + }, + { + path: '/demo/pages/workflow', + name: 'pagesWorkflow', + component: () => import('/@/views/pages/workflow/index.vue'), + meta: { + title: 'message.router.pagesWorkflow', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'ele-Connection', + }, + }, + ], + }, + { + path: '/demo/make', + name: 'makeIndex', + component: () => import('/@/layout/routerView/parent.vue'), + redirect: '/make/selector', + meta: { + title: 'message.router.makeIndex', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-siweidaotu', + }, + children: [ + { + path: '/demo/make/selector', + name: 'makeSelector', + component: () => import('/@/views/make/selector/index.vue'), + meta: { + title: 'message.router.makeSelector', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-xuanzeqi', + }, + }, + { + path: '/demo/make/noticeBar', + name: 'makeNoticeBar', + component: () => import('/@/views/make/noticeBar/index.vue'), + meta: { + title: 'message.router.makeNoticeBar', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'ele-Bell', + }, + }, + { + path: '/demo/make/svgDemo', + name: 'makeSvgDemo', + component: () => import('/@/views/make/svgDemo/index.vue'), + meta: { + title: 'message.router.makeSvgDemo', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'fa fa-thumbs-o-up', + }, + }, + ], + }, + { + path: '/demo/params', + name: 'paramsIndex', + component: () => import('/@/layout/routerView/parent.vue'), + redirect: '/params/common', + meta: { + title: 'message.router.paramsIndex', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-zhongduancanshu', + }, + children: [ + { + path: '/demo/params/common', + name: 'paramsCommon', + component: () => import('/@/views/params/common/index.vue'), + meta: { + title: 'message.router.paramsCommon', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-putong', + }, + }, + { + path: '/demo/params/common/details', + name: 'paramsCommonDetails', + component: () => import('/@/views/params/common/details.vue'), + meta: { + title: 'message.router.paramsCommonDetails', + isLink: '', + isHide: true, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'ele-Comment', + }, + }, + { + path: '/demo/params/dynamic', + name: 'paramsDynamic', + component: () => import('/@/views/params/dynamic/index.vue'), + meta: { + title: 'message.router.paramsDynamic', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-dongtai', + }, + }, + /** + * tagsViewName 为要设置不同的 "tagsView 名称" 字段 + * 如若需设置不同 "tagsView 名称",tagsViewName 字段必须要有 + */ + { + path: '/demo/params/dynamic/details/:t/:id/:tagsViewName', + name: 'paramsDynamicDetails', + component: () => import('/@/views/params/dynamic/details.vue'), + meta: { + title: 'message.router.paramsDynamicDetails', + isLink: '', + isHide: true, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'ele-Lightning', + }, + }, + ], + }, + { + path: '/demo/visualizing', + name: 'visualizingIndex', + component: () => import('/@/layout/routerView/parent.vue'), + redirect: '/visualizing/visualizingLinkDemo1', + meta: { + title: 'message.router.visualizingIndex', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'ele-ChatLineRound', + }, + children: [ + { + path: '/demo/visualizing/visualizingLinkDemo1', + name: 'visualizingLinkDemo1', + component: () => import('/@/layout/routerView/link.vue'), + meta: { + title: 'message.router.visualizingLinkDemo1', + isLink: `#/visualizingDemo1`, + isHide: false, + isKeepAlive: false, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-caozuo-wailian', + }, + }, + { + path: '/demo/visualizing/visualizingLinkDemo2', + name: 'visualizingLinkDemo2', + component: () => import('/@/layout/routerView/link.vue'), + meta: { + title: 'message.router.visualizingLinkDemo2', + isLink: `#/visualizingDemo2`, + isHide: false, + isKeepAlive: false, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-caozuo-wailian', + }, + }, + ], + }, + { + path: '/demo/chart', + name: 'chartIndex', + component: () => import('/@/views/chart/index.vue'), + meta: { + title: 'message.router.chartIndex', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-ico_shuju', + }, + }, + { + path: '/demo/personal', + name: 'personal', + component: () => import('/@/views/personal/index.vue'), + meta: { + title: 'message.router.personal', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-gerenzhongxin', + }, + }, + { + path: '/demo/tools', + name: 'tools', + component: () => import('/@/views/tools/index.vue'), + meta: { + title: 'message.router.tools', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-gongju', + }, + }, + { + path: '/demo/link', + name: 'layoutLinkView', + component: () => import('/@/layout/routerView/link.vue'), + meta: { + title: 'message.router.layoutLinkView', + isLink: 'https://element-plus.gitee.io/#/zh-CN/component/installation', + isHide: false, + isKeepAlive: false, + isAffix: false, + isIframe: false, + roles: ['admin'], + icon: 'iconfont icon-caozuo-wailian', + }, + }, + { + path: '/demo/iframes', + name: 'layoutIfameView', + component: () => import('/@/layout/routerView/iframes.vue'), + meta: { + title: 'message.router.layoutIfameView', + isLink: 'https://nodejs.org/zh-cn/', + isHide: false, + isKeepAlive: false, + isAffix: false, + isIframe: true, + roles: ['admin'], + icon: 'iconfont icon-neiqianshujuchucun', + }, + }, + ] + } +] + +/** + * 定义404、401界面 + * @link 参考:https://next.router.vuejs.org/zh/guide/essentials/history-mode.html#netlify + */ +export const notFoundAndNoPower = [ + { + path: '/:path(.*)*', + name: 'notFound', + component: () => import('/@/views/error/404.vue'), + meta: { + title: 'message.staticRoutes.notFound', + isHide: true, + }, + }, + { + path: '/401', + name: 'noPower', + component: () => import('/@/views/error/401.vue'), + meta: { + title: 'message.staticRoutes.noPower', + isHide: true, + }, + }, +]; + +/** + * 定义静态路由(默认路由) + * 此路由不要动,前端添加路由的话,请在 `dynamicRoutes 数组` 中添加 + * @description 前端控制直接改 dynamicRoutes 中的路由,后端控制不需要修改,请求接口路由数据时,会覆盖 dynamicRoutes 第一个顶级 children 的内容(全屏,不包含 layout 中的路由出口) + * @returns 返回路由菜单数据 + */ +export const staticRoutes: Array = [ + { + path: '/login', + name: 'login', + component: () => import('/@/views/login/index.vue'), + meta: { + title: '登录', + }, + }, + /** + * 提示:写在这里的为全屏界面,不建议写在这里 + * 请写在 `dynamicRoutes` 路由数组中 + */ + { + path: '/visualizingDemo1', + name: 'visualizingDemo1', + component: () => import('/@/views/visualizing/demo1.vue'), + meta: { + title: 'message.router.visualizingLinkDemo1', + }, + }, + { + path: '/visualizingDemo2', + name: 'visualizingDemo2', + component: () => import('/@/views/visualizing/demo2.vue'), + meta: { + title: 'message.router.visualizingLinkDemo2', + }, + }, +]; diff --git a/src/stores/bigUpload.ts b/src/stores/bigUpload.ts new file mode 100644 index 0000000..5418d6b --- /dev/null +++ b/src/stores/bigUpload.ts @@ -0,0 +1,13 @@ +import { defineStore } from 'pinia'; +import {bigUploadStates} from "/@/stores/interface"; + +export const bigUpload = defineStore('bigUpload', { + state:():bigUploadStates=>({ + panelShow:false + }), + actions: { + async setPanelShow(bool: boolean) { + this.panelShow = bool; + } + }, +}) diff --git a/src/stores/index.ts b/src/stores/index.ts new file mode 100644 index 0000000..27c377e --- /dev/null +++ b/src/stores/index.ts @@ -0,0 +1,8 @@ +// https://pinia.vuejs.org/ +import { createPinia } from 'pinia'; + +// 创建 +const pinia = createPinia(); + +// 导出 +export default pinia; diff --git a/src/stores/interface/index.ts b/src/stores/interface/index.ts new file mode 100644 index 0000000..336b021 --- /dev/null +++ b/src/stores/interface/index.ts @@ -0,0 +1,97 @@ +/** + * 定义接口来定义对象的类型 + * `stores` 全部类型定义在这里 + */ + +// 用户信息 +export interface UserInfosState { + id:number + authBtnList: string[]; + avatar: string; + roles: string[]; + time: number; + userName: string; + userNickname:string +} +export interface UserInfosStates { + userInfos: UserInfosState; + permissions:string[] +} + +// 路由缓存列表 +export interface KeepAliveNamesState { + keepAliveNames: string[]; + cachedViews: string[]; +} + +// 后端返回原始路由(未处理时) +export interface RequestOldRoutesState { + requestOldRoutes: string[]; +} + +// TagsView 路由列表 +export interface TagsViewRoutesState { + tagsViewRoutes: string[]; + isTagsViewCurrenFull: Boolean; +} + +// 路由列表 +export interface RoutesListState { + routesList: string[]; + isColumnsMenuHover: Boolean; + isColumnsNavHover: Boolean; +} + +// 布局配置 +export interface ThemeConfigState { + isDrawer: boolean; + primary: string; + topBar: string; + topBarColor: string; + isTopBarColorGradual: boolean; + menuBar: string; + menuBarColor: string; + isMenuBarColorGradual: boolean; + columnsMenuBar: string; + columnsMenuBarColor: string; + isColumnsMenuBarColorGradual: boolean; + isCollapse: boolean; + isUniqueOpened: boolean; + isFixedHeader: boolean; + isFixedHeaderChange: boolean; + isClassicSplitMenu: boolean; + isLockScreen: boolean; + lockScreenTime: number; + isShowLogo: boolean; + isShowLogoChange: boolean; + isBreadcrumb: boolean; + isTagsview: boolean; + isBreadcrumbIcon: boolean; + isTagsviewIcon: boolean; + isCacheTagsView: boolean; + isSortableTagsView: boolean; + isShareTagsView: boolean; + isFooter: boolean; + isGrayscale: boolean; + isInvert: boolean; + isIsDark: boolean; + isWartermark: boolean; + wartermarkText: string; + tagsStyle: string; + animation: string; + columnsAsideStyle: string; + columnsAsideLayout: string; + layout: string; + isRequestRoutes: boolean; + globalTitle: string; + globalViceTitle: string; + globalI18n: string; + globalComponentSize: string; +} +export interface ThemeConfigStates { + themeConfig: ThemeConfigState; +} + +export interface bigUploadStates { + panelShow : boolean +} diff --git a/src/stores/keepAliveNames.ts b/src/stores/keepAliveNames.ts new file mode 100644 index 0000000..32e0389 --- /dev/null +++ b/src/stores/keepAliveNames.ts @@ -0,0 +1,37 @@ +import { defineStore } from 'pinia'; +import { KeepAliveNamesState } from './interface'; + +/** + * 路由缓存列表 + * @methods setCacheKeepAlive 设置要缓存的路由 names(开启 Tagsview) + * @methods addCachedView 添加要缓存的路由 names(关闭 Tagsview) + * @methods delCachedView 删除要缓存的路由 names(关闭 Tagsview) + * @methods delOthersCachedViews 右键菜单`关闭其它`,删除要缓存的路由 names(关闭 Tagsview) + * @methods delAllCachedViews 右键菜单`全部关闭`,删除要缓存的路由 names(关闭 Tagsview) + */ +export const useKeepALiveNames = defineStore('keepALiveNames', { + state: (): KeepAliveNamesState => ({ + keepAliveNames: [], + cachedViews: [], + }), + actions: { + async setCacheKeepAlive(data: Array) { + this.keepAliveNames = data; + }, + async addCachedView(view: any) { + if (this.cachedViews.includes(view.name)) return; + if (view.meta.isKeepAlive) this.cachedViews.push(view.name); + }, + async delCachedView(view: any) { + const index = this.cachedViews.indexOf(view.name); + index > -1 && this.cachedViews.splice(index, 1); + }, + async delOthersCachedViews(view: any) { + if (view.meta.isKeepAlive) this.cachedViews = [view.name]; + else this.cachedViews = []; + }, + async delAllCachedViews() { + this.cachedViews = []; + }, + }, +}); diff --git a/src/stores/requestOldRoutes.ts b/src/stores/requestOldRoutes.ts new file mode 100644 index 0000000..be9b5cd --- /dev/null +++ b/src/stores/requestOldRoutes.ts @@ -0,0 +1,17 @@ +import { defineStore } from 'pinia'; +import { RequestOldRoutesState } from './interface'; + +/** + * 后端返回原始路由(未处理时) + * @methods setCacheKeepAlive 设置接口原始路由数据 + */ +export const useRequestOldRoutes = defineStore('requestOldRoutes', { + state: (): RequestOldRoutesState => ({ + requestOldRoutes: [], + }), + actions: { + async setRequestOldRoutes(routes: Array) { + this.requestOldRoutes = routes; + }, + }, +}); diff --git a/src/stores/routesList.ts b/src/stores/routesList.ts new file mode 100644 index 0000000..7dd2b28 --- /dev/null +++ b/src/stores/routesList.ts @@ -0,0 +1,27 @@ +import { defineStore } from 'pinia'; +import { RoutesListState } from './interface'; + +/** + * 路由列表 + * @methods setRoutesList 设置路由数据 + * @methods setColumnsMenuHover 设置分栏布局菜单鼠标移入 boolean + * @methods setColumnsNavHover 设置分栏布局最左侧导航鼠标移入 boolean + */ +export const useRoutesList = defineStore('routesList', { + state: (): RoutesListState => ({ + routesList: [], + isColumnsMenuHover: false, + isColumnsNavHover: false, + }), + actions: { + async setRoutesList(data: Array) { + this.routesList = data; + }, + async setColumnsMenuHover(bool: Boolean) { + this.isColumnsMenuHover = bool; + }, + async setColumnsNavHover(bool: Boolean) { + this.isColumnsNavHover = bool; + }, + }, +}); diff --git a/src/stores/tagsViewRoutes.ts b/src/stores/tagsViewRoutes.ts new file mode 100644 index 0000000..7a5e6f4 --- /dev/null +++ b/src/stores/tagsViewRoutes.ts @@ -0,0 +1,24 @@ +import { defineStore } from 'pinia'; +import { TagsViewRoutesState } from './interface'; +import { Session } from '/@/utils/storage'; + +/** + * TagsView 路由列表 + * @methods setTagsViewRoutes 设置 TagsView 路由列表 + * @methods setCurrenFullscreen 设置开启/关闭全屏时的 boolean 状态 + */ +export const useTagsViewRoutes = defineStore('tagsViewRoutes', { + state: (): TagsViewRoutesState => ({ + tagsViewRoutes: [], + isTagsViewCurrenFull: false, + }), + actions: { + async setTagsViewRoutes(data: Array) { + this.tagsViewRoutes = data; + }, + setCurrenFullscreen(bool: Boolean) { + Session.set('isTagsViewCurrenFull', bool); + this.isTagsViewCurrenFull = bool; + }, + }, +}); diff --git a/src/stores/themeConfig.ts b/src/stores/themeConfig.ts new file mode 100644 index 0000000..2c12fb1 --- /dev/null +++ b/src/stores/themeConfig.ts @@ -0,0 +1,146 @@ +import { defineStore } from 'pinia'; +import { ThemeConfigStates, ThemeConfigState } from './interface'; + +/** + * 布局配置 + * 修复:https://gitee.com/lyt-top/vue-next-admin/issues/I567R1,感谢@lanbao123 + * 2020.05.28 by lyt 优化。开发时配置不生效问题 + * 修改配置时: + * 1、需要每次都清理 `window.localStorage` 浏览器永久缓存 + * 2、或者点击布局配置最底部 `一键恢复默认` 按钮即可看到效果 + */ +export const useThemeConfig = defineStore('themeConfig', { + state: (): ThemeConfigStates => ({ + themeConfig: { + // 是否开启布局配置抽屉 + isDrawer: false, + + /** + * 全局主题 + */ + // 默认 primary 主题颜色 + primary: '#409eff', + // 是否开启深色模式 + isIsDark: false, + + /** + * 菜单 / 顶栏 + * 注意:v1.0.17 版本去除设置布局切换,重置主题样式(initSetLayoutChange), + * 切换布局需手动设置样式,设置的样式自动同步各布局, + * 代码位置:/@/layout/navBars/breadcrumb/setings.vue + */ + // 默认顶栏导航背景颜色 + topBar: '#ffffff', + // 默认顶栏导航字体颜色 + topBarColor: '#606266', + // 是否开启顶栏背景颜色渐变 + isTopBarColorGradual: false, + // 默认菜单导航背景颜色 + menuBar: '#354E67', + // 默认菜单导航字体颜色 + menuBarColor: '#eaeaea', + // 是否开启菜单背景颜色渐变 + isMenuBarColorGradual: false, + // 默认分栏菜单背景颜色 + columnsMenuBar: '#545c64', + // 默认分栏菜单字体颜色 + columnsMenuBarColor: '#e6e6e6', + // 是否开启分栏菜单背景颜色渐变 + isColumnsMenuBarColorGradual: false, + + /** + * 界面设置 + */ + // 是否开启菜单水平折叠效果 + isCollapse: false, + // 是否开启菜单手风琴效果 + isUniqueOpened: false, + // 是否开启固定 Header + isFixedHeader: false, + // 初始化变量,用于更新菜单 el-scrollbar 的高度,请勿删除 + isFixedHeaderChange: false, + // 是否开启经典布局分割菜单(仅经典布局生效) + isClassicSplitMenu: false, + // 是否开启自动锁屏 + isLockScreen: false, + // 开启自动锁屏倒计时(s/秒) + lockScreenTime: 30, + + /** + * 界面显示 + */ + // 是否开启侧边栏 Logo + isShowLogo: true, + // 初始化变量,用于 el-scrollbar 的高度更新,请勿删除 + isShowLogoChange: false, + // 是否开启 Breadcrumb,强制经典、横向布局不显示 + isBreadcrumb: true, + // 是否开启 Tagsview + isTagsview: true, + // 是否开启 Breadcrumb 图标 + isBreadcrumbIcon: false, + // 是否开启 Tagsview 图标 + isTagsviewIcon: false, + // 是否开启 TagsView 缓存 + isCacheTagsView: false, + // 是否开启 TagsView 拖拽 + isSortableTagsView: true, + // 是否开启 TagsView 共用 + isShareTagsView: false, + // 是否开启 Footer 底部版权信息 + isFooter: false, + // 是否开启灰色模式 + isGrayscale: false, + // 是否开启色弱模式 + isInvert: false, + // 是否开启水印 + isWartermark: false, + // 水印文案 + wartermarkText: 'GFastV3', + + /** + * 其它设置 + */ + // Tagsview 风格:可选值"",默认 tags-style-five + // 定义的值与 `/src/layout/navBars/tagsView/tagsView.vue` 中的 class 同名 + tagsStyle: 'tags-style-five', + // 主页面切换动画:可选值"",默认 slide-right + animation: 'slide-right', + // 分栏高亮风格:可选值"",默认 columns-round + columnsAsideStyle: 'columns-round', + // 分栏布局风格:可选值"",默认 columns-horizontal + columnsAsideLayout: 'columns-vertical', + + /** + * 布局切换 + * 注意:为了演示,切换布局时,颜色会被还原成默认,代码位置:/@/layout/navBars/breadcrumb/setings.vue + * 中的 `initSetLayoutChange(设置布局切换,重置主题样式)` 方法 + */ + // 布局切换:可选值"",默认 defaults + layout: 'defaults', + + /** + * 后端控制路由 + */ + // 是否开启后端控制路由 + isRequestRoutes: true, + + /** + * 全局网站标题 / 副标题 + */ + // 网站主标题(菜单导航、浏览器当前网页标题) + globalTitle: 'gfast3.2后台管理系统', + // 网站副标题(登录页顶部文字) + globalViceTitle: 'gfast3.2后台管理系统', + // 默认初始语言,可选值"",默认 zh-cn + globalI18n: 'zh-cn', + // 默认全局组件大小,可选值"",默认 'large' + globalComponentSize: 'large', + }, + }), + actions: { + setThemeConfig(data: ThemeConfigState) { + this.themeConfig = data; + }, + }, +}); diff --git a/src/stores/userInfo.ts b/src/stores/userInfo.ts new file mode 100644 index 0000000..aaebd87 --- /dev/null +++ b/src/stores/userInfo.ts @@ -0,0 +1,69 @@ +import { defineStore } from 'pinia'; +import Cookies from 'js-cookie'; +import { UserInfosStates } from './interface'; +import { Session } from '/@/utils/storage'; + +/** + * 用户信息 + * @methods setUserInfos 设置用户信息 + */ +export const useUserInfo = defineStore('userInfo', { + state: (): UserInfosStates => ({ + userInfos: { + id:0, + userName: '', + userNickname:'', + avatar: '', + roles: [], + time: 0, + authBtnList:[], + }, + permissions:[], + }), + actions: { + async setUserInfos() { + // 模拟数据,请求接口时,记得删除多余代码及对应依赖的引入 + const userName = Cookies.get('userName'); + // 模拟数据 + let defaultRoles: Array = []; + let defaultAuthBtnList: Array = []; + // admin 页面权限标识,对应路由 meta.roles,用于控制路由的显示/隐藏 + let adminRoles: Array = ['admin']; + // admin 按钮权限标识 + let adminAuthBtnList: Array = ['btn.add', 'btn.del', 'btn.edit', 'btn.link']; + // test 页面权限标识,对应路由 meta.roles,用于控制路由的显示/隐藏 + let testRoles: Array = ['common']; + // test 按钮权限标识 + let testAuthBtnList: Array = ['btn.add', 'btn.link']; + // 不同用户模拟不同的用户权限 + if (userName === 'admin') { + defaultRoles = adminRoles; + defaultAuthBtnList = adminAuthBtnList; + } else { + defaultRoles = testRoles; + defaultAuthBtnList = testAuthBtnList; + } + // 用户信息模拟数据 + const userInfos = { + id:0, + userName: userName, + userNickname: "", + avatar: + userName === 'admin' + ? 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1813762643,1914315241&fm=26&gp=0.jpg' + : 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=317673774,2961727727&fm=26&gp=0.jpg', + time: new Date().getTime(), + roles: defaultRoles, + authBtnList: defaultAuthBtnList, + }; + if (Session.get('userInfo')) { + this.userInfos = Session.get('userInfo'); + } else { + this.userInfos = userInfos; + } + }, + async setPermissions() { + this.permissions = Session.get('permissions') + }, + }, +}); diff --git a/src/theme/app.scss b/src/theme/app.scss new file mode 100644 index 0000000..9684db4 --- /dev/null +++ b/src/theme/app.scss @@ -0,0 +1,287 @@ +/* 初始化样式 +------------------------------- */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + outline: none !important; +} + +:root { + --next-color-white: #ffffff; + --next-bg-main-color: #f8f8f8; + --next-bg-color: #f5f5ff; + --next-border-color-light: #f1f2f3; + --next-color-primary-lighter: #ecf5ff; + --next-color-success-lighter: #f0f9eb; + --next-color-warning-lighter: #fdf6ec; + --next-color-danger-lighter: #fef0f0; + --next-color-dark-hover: #0000001a; + --next-color-menu-hover: rgba(0, 0, 0, 0.2); + --next-color-user-hover: rgba(0, 0, 0, 0.04); + --next-color-seting-main: #e9eef3; + --next-color-seting-aside: #d3dce6; + --next-color-seting-header: #b3c0d1; +} + +html, +body, +#app { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, SimSun, sans-serif; + font-weight: 400; + -webkit-font-smoothing: antialiased; + -webkit-tap-highlight-color: transparent; + background-color: var(--next-bg-main-color); + font-size: 14px; + overflow: hidden; + position: relative; +} + +/* 主布局样式 +------------------------------- */ +.layout-container { + width: 100%; + height: 100%; + .layout-aside { + background: var(--next-bg-menuBar); + box-shadow: 2px 0 6px rgb(0 21 41 / 1%); + height: inherit; + position: relative; + z-index: 1; + display: flex; + flex-direction: column; + overflow-x: hidden !important; + .el-scrollbar__view { + overflow: hidden; + } + } + .layout-header { + padding: 0 !important; + } + .layout-main { + padding: 0 !important; + overflow: hidden; + width: 100%; + background-color: var(--next-bg-main-color); + } + .el-scrollbar { + width: 100%; + } + // 此字段多次用到,建议不删除,如需修改,请重写覆盖样式 + .layout-view-bg-white { + background: var(--el-color-white); + width: 100%; + height: 100%; + border-radius: 4px; + border: 1px solid var(--el-border-color-light, #ebeef5); + } + .layout-el-aside-br-color { + border-right: 1px solid var(--el-border-color-light, #ebeef5); + } + // pc端左侧导航样式 + .layout-aside-pc-220 { + width: 220px !important; + transition: width 0.3s ease; + } + .layout-aside-pc-64 { + width: 64px !important; + transition: width 0.3s ease; + } + .layout-aside-pc-1 { + width: 1px !important; + transition: width 0.3s ease; + } + // 手机端左侧导航样式 + .layout-aside-mobile { + position: fixed; + top: 0; + left: -220px; + width: 220px; + z-index: 9999999; + } + .layout-aside-mobile-close { + left: -220px; + transition: all 0.3s cubic-bezier(0.39, 0.58, 0.57, 1); + } + .layout-aside-mobile-open { + left: 0; + transition: all 0.3s cubic-bezier(0.22, 0.61, 0.36, 1); + } + .layout-aside-mobile-mode { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 9999998; + animation: error-img 0.3s; + } + .layout-scrollbar { + @extend .el-scrollbar; + padding: 15px; + } + .layout-mian-height-50 { + height: calc(100vh - 50px); + } + .layout-columns-warp { + flex: 1; + display: flex; + overflow: hidden; + } + .layout-hide { + display: none; + } +} + +/* element plus 全局样式 +------------------------------- */ +.layout-breadcrumb-seting { + .el-divider { + background-color: rgb(230, 230, 230); + } +} + +/* nprogress 进度条跟随主题颜色 +------------------------------- */ +#nprogress { + .bar { + background: var(--el-color-primary) !important; + z-index: 9999999 !important; + } +} + +/* flex 弹性布局 +------------------------------- */ +.flex { + display: flex; +} +.flex-auto { + flex: 1; + overflow: hidden; +} +.flex-center { + @extend .flex; + flex-direction: column; + width: 100%; + overflow: hidden; +} +.flex-margin { + margin: auto; +} +.flex-warp { + display: flex; + flex-wrap: wrap; + align-content: flex-start; + margin: 0 -5px; + .flex-warp-item { + padding: 5px; + .flex-warp-item-box { + width: 100%; + height: 100%; + } + } +} + +/* cursor 鼠标形状 +------------------------------- */ +// 默认 +.cursor-default { + cursor: default !important; +} +// 帮助 +.cursor-help { + cursor: help !important; +} +// 手指 +.cursor-pointer { + cursor: pointer !important; +} +// 移动 +.cursor-move { + cursor: move !important; +} + +/* 宽高 100% +------------------------------- */ +.w100 { + width: 100% !important; +} +.h100 { + height: 100% !important; +} +.vh100 { + height: 100vh !important; +} +.max100vh { + max-height: 100vh !important; +} +.min100vh { + min-height: 100vh !important; +} + +/* 颜色值 +------------------------------- */ +.color-primary { + color: var(--el-color-primary); +} +.color-success { + color: var(--el-color-success); +} +.color-warning { + color: var(--el-color-warning); +} +.color-danger { + color: var(--el-color-danger); +} +.color-info { + color: var(--el-color-info); +} + +/* 字体大小全局样式 +------------------------------- */ +@for $i from 10 through 32 { + .font#{$i} { + font-size: #{$i}px !important; + } +} + +/* 外边距、内边距全局样式 +------------------------------- */ +@for $i from 1 through 35 { + .mt#{$i} { + margin-top: #{$i}px !important; + } + .mr#{$i} { + margin-right: #{$i}px !important; + } + .mb#{$i} { + margin-bottom: #{$i}px !important; + } + .ml#{$i} { + margin-left: #{$i}px !important; + } + .pt#{$i} { + padding-top: #{$i}px !important; + } + .pr#{$i} { + padding-right: #{$i}px !important; + } + .pb#{$i} { + padding-bottom: #{$i}px !important; + } + .pl#{$i} { + padding-left: #{$i}px !important; + } +} + +.link-type, .link-type:focus { + color: #337ab7; + cursor: pointer; + text-decoration: none; +} diff --git a/src/theme/common/transition.scss b/src/theme/common/transition.scss new file mode 100644 index 0000000..a03a7bb --- /dev/null +++ b/src/theme/common/transition.scss @@ -0,0 +1,94 @@ +/* 页面切换动画 +------------------------------- */ +.slide-right-enter-active, +.slide-right-leave-active, +.slide-left-enter-active, +.slide-left-leave-active { + will-change: transform; + transition: all 0.3s ease; +} +// slide-right +.slide-right-enter-from { + opacity: 0; + transform: translateX(-20px); +} +.slide-right-leave-to { + opacity: 0; + transform: translateX(20px); +} +// slide-left +.slide-left-enter-from { + @extend .slide-right-leave-to; +} +.slide-left-leave-to { + @extend .slide-right-enter-from; +} +// opacitys +.opacitys-enter-active, +.opacitys-leave-active { + will-change: transform; + transition: all 0.3s ease; +} +.opacitys-enter-from, +.opacitys-leave-to { + opacity: 0; +} + +/* Breadcrumb 面包屑过渡动画 +------------------------------- */ +.breadcrumb-enter-active, +.breadcrumb-leave-active { + transition: all 0.5s ease; +} +.breadcrumb-enter-from, +.breadcrumb-leave-active { + opacity: 0; + transform: translateX(20px); +} +.breadcrumb-leave-active { + position: absolute; + z-index: -1; +} + +/* logo 过渡动画 +------------------------------- */ +@keyframes logoAnimation { + 0% { + transform: scale(0); + } + 80% { + transform: scale(1.2); + } + 100% { + transform: scale(1); + } +} + +/* 404、401 过渡动画 +------------------------------- */ +@keyframes error-num { + 0% { + transform: translateY(60px); + opacity: 0; + } + 100% { + transform: translateY(0); + opacity: 1; + } +} +@keyframes error-img { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes error-img-two { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} diff --git a/src/theme/dark.scss b/src/theme/dark.scss new file mode 100644 index 0000000..593b757 --- /dev/null +++ b/src/theme/dark.scss @@ -0,0 +1,245 @@ +/* 深色模式样式 +------------------------------- */ +[data-theme='dark'] { + // 变量(自定义时,只需修改这里的值) + --next-bg-main: #1f1f1f; + --next-color-white: #ffffff; + --next-color-disabled: #191919; + --next-color-bar: #dadada; + --next-color-primary: #303030; + --next-border-color: #424242; + --next-border-black: #333333; + --next-border-columns: #2a2a2a; + --next-color-seting: #505050; + --next-text-color-regular: #9b9da1; + --next-text-color-placeholder: #7a7a7a; + --next-color-hover: #3c3c3c; + --next-color-hover-rgba: rgba(0, 0, 0, 0.3); + + // root + --next-bg-main-color: var(--next-bg-main) !important; + --next-bg-topBar: var(--next-color-disabled) !important; + --next-bg-topBarColor: var(--next-color-bar) !important; + --next-bg-menuBar: var(--next-color-disabled) !important; + --next-bg-menuBarColor: var(--next-color-bar) !important; + --next-bg-columnsMenuBar: var(--next-color-disabled) !important; + --next-bg-columnsMenuBarColor: var(--next-color-bar) !important; + --next-border-color-light: var(--next-border-black) !important; + --next-color-primary-lighter: var(--next-color-primary) !important; + --next-color-success-lighter: var(--next-color-primary) !important; + --next-color-warning-lighter: var(--next-color-primary) !important; + --next-color-danger-lighter: var(--next-color-primary) !important; + --next-bg-color: var(--next-color-primary) !important; + --next-color-dark-hover: var(--next-color-hover) !important; + --next-color-menu-hover: var(--next-color-hover-rgba) !important; + --next-color-user-hover: var(--next-color-hover-rgba) !important; + --next-color-seting-main: var(--next-color-seting) !important; + --next-color-seting-aside: var(--next-color-hover) !important; + --next-color-seting-header: var(--next-color-primary) !important; + + // element plus + --el-color-white: var(--next-color-disabled) !important; + --el-text-color-primary: var(--next-color-bar) !important; + --el-border-color: var(--next-border-black) !important; + --el-border-color-light: var(--next-border-black) !important; + --el-border-color-lighter: var(--next-border-black) !important; + --el-border-color-extra-light: var(--el-color-primary-light-8) !important; + --el-text-color-regular: var(--next-text-color-regular) !important; + --el-bg-color: var(--next-color-disabled) !important; + --el-color-primary-light-9: var(--next-color-hover) !important; + --el-text-color-disabled: var(--next-text-color-placeholder) !important; + --el-text-color-disabled-base: var(--el-color-primary) !important; + --el-text-color-placeholder: var(--next-text-color-placeholder) !important; + --el-disabled-bg-color: var(--next-color-disabled) !important; + --el-fill-base: var(--next-color-white) !important; + --el-fill-colo: var(--next-color-hover-rgba) !important; + --el-fill-color: var(--next-color-hover-rgba) !important; + --el-fill-color-blank: var(--next-color-disabled) !important; + --el-fill-color-light: var(--next-color-hover-rgba) !important; + --el-bg-color-overlay: var(--el-color-primary-light-9) !important; + --el-mask-color: rgb(42 42 42 / 80%); + --el-color-success-light-9: #1c2518; + --el-color-warning-light-9: #292218; + --el-color-danger-light-9: #2b1d1d; + --el-color-info-light-9: #202121; + --el-color-primary-light-8: #1d3043; + --el-color-success-light-8: #25371c; + --el-color-warning-light-8: #3e301c; + --el-color-info-light-8: #2d2d2f; + --el-color-danger-light-8: #412626; + + // button + .el-button { + &:hover { + border-color: var(--next-border-color) !important; + } + } + .el-button--primary, + .el-button--info, + .el-button--danger, + .el-button--success, + .el-button--warning { + --el-button-text-color: var(--next-color-white) !important; + --el-button-hover-text-color: var(--next-color-white) !important; + --el-button-disabled-text-color: var(--next-color-white) !important; + &:hover { + border-color: var(--el-button-hover-border-color, var(--el-button-hover-bg-color)) !important; + } + } + + // drawer + .el-divider__text { + background-color: var(--el-color-white) !important; + } + .el-drawer { + border-left: 1px solid var(--next-border-color-light) !important; + } + + // tabs + .el-tabs--border-card { + background-color: var(--el-color-white) !important; + } + .el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active { + background: var(--next-color-primary-lighter); + } + + // alert / notice-bar + .home-card-item { + border: 1px solid var(--next-border-color-light) !important; + } + .el-alert, + .notice-bar { + border: 1px solid var(--next-border-color) !important; + background-color: var(--next-color-disabled) !important; + } + + // menu + .layout-aside { + border-right: 1px solid var(--next-border-color-light) !important; + } + + // colorPicker + .el-color-picker__mask { + background: unset !important; + } + .el-color-picker__trigger { + border: 1px solid var(--next-border-color-light) !important; + } + + // popper / dropdown + .el-popper { + border: 1px solid var(--next-border-color) !important; + color: var(--el-text-color-primary) !important; + .el-popper__arrow:before { + background: var(--el-color-white) !important; + border: 1px solid var(--next-border-color); + } + a { + color: var(--el-text-color-primary) !important; + } + } + .el-popper, + .el-dropdown-menu { + background: var(--el-color-white) !important; + } + .el-dropdown-menu__item:hover:not(.is-disabled) { + background: var(--el-bg-color) !important; + } + .el-dropdown-menu__item.is-disabled { + font-weight: 700 !important; + } + + // input + .el-input-group__append, + .el-input-group__prepend { + border: var(--el-input-border) !important; + border-right: none !important; + background: var(--next-color-disabled) !important; + border-left: 0 !important; + } + .el-input-number__decrease, + .el-input-number__increase { + background: var(--next-color-disabled) !important; + } + + // tag + .el-select .el-select__tags .el-tag { + background-color: var(--next-bg-color) !important; + } + + // pagination + .el-pagination.is-background .el-pager li:not(.disabled).active { + color: var(--next-color-white) !important; + } + .el-pagination.is-background .btn-next, + .el-pagination.is-background .btn-prev, + .el-pagination.is-background .el-pager li { + background-color: var(--next-bg-color); + } + + // radio + .el-radio-button:not(.is-active) .el-radio-button__inner { + border: 1px solid var(--next-border-color-light) !important; + border-left: 0 !important; + } + .el-radio-button.is-active .el-radio-button__inner { + color: var(--next-color-white) !important; + } + + // countup + .countup-card-item-flex { + color: var(--el-text-color-primary) !important; + } + + // editor + .editor-container { + .w-e-toolbar { + background: var(--el-color-white) !important; + border: 1px solid var(--next-border-color-light) !important; + .w-e-menu:hover { + background: var(--next-color-user-hover) !important; + i { + color: var(--el-text-color-primary) !important; + } + } + } + .w-e-text-container { + border: 1px solid var(--next-border-color-light) !important; + border-top: none !important; + .w-e-text { + background: var(--el-color-white) !important; + } + } + } + + // date-picker + .el-picker-panel { + background: var(--el-color-white) !important; + } + + // dialog + .el-dialog { + border: 1px solid var(--el-border-color-lighter); + .el-dialog__header { + color: var(--el-text-color-primary) !important; + } + } + + // columns + .layout-columns-aside ul .layout-columns-active { + color: var(--next-color-white) !important; + } + .layout-columns-aside { + border-right: 1px solid var(--next-border-columns); + } + + // tagsView + .tags-style-one { + .is-active { + color: var(--el-text-color-primary) !important; + } + .layout-navbars-tagsview-ul-li:hover { + border-color: var(--el-border-color-lighter) !important; + } + } +} diff --git a/src/theme/element.scss b/src/theme/element.scss new file mode 100644 index 0000000..11c720b --- /dev/null +++ b/src/theme/element.scss @@ -0,0 +1,293 @@ +@import 'mixins/index.scss'; + +/* Button 按钮 +------------------------------- */ +// 第三方字体图标大小 +.el-button i.el-icon, +.el-button i.iconfont, +.el-button i.fa, +.el-button--default i.iconfont, +.el-button--default i.fa { + font-size: 14px !important; + margin-right: 5px; +} +.el-button--small i.iconfont, +.el-button--small i.fa { + font-size: 12px !important; + margin-right: 5px; +} + +/* Input 输入框、InputNumber 计数器 +------------------------------- */ +.el-input { + height: 100%; +} +// 菜单搜索 +.el-autocomplete-suggestion__wrap { + max-height: 280px !important; +} + +/* Form 表单 +------------------------------- */ +.el-form { + // 用于修改弹窗时表单内容间隔太大问题,如系统设置的新增菜单弹窗里的表单内容 + .el-form-item:last-of-type { + margin-bottom: 0 !important; + } + // 修复行内表单最后一个 el-form-item 位置下移问题 + &.el-form--inline { + .el-form-item--large.el-form-item:last-of-type { + margin-bottom: 22px !important; + } + .el-form-item--default.el-form-item:last-of-type, + .el-form-item--small.el-form-item:last-of-type { + margin-bottom: 18px !important; + } + } +} + +/* Alert 警告 +------------------------------- */ +.el-alert { + border: 1px solid; +} +.el-alert__title { + word-break: break-all; +} + +/* Message 消息提示 +------------------------------- */ +.el-message { + min-width: unset !important; + padding: 15px !important; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.02); +} + +/* NavMenu 导航菜单 +------------------------------- */ +// 鼠标 hover 时颜色 +.el-menu-hover-bg-color { + background-color: var(--next-color-menu-hover) !important; +} +// 默认样式修改 +.el-menu { + border-right: none !important; + width: 220px; +} +.el-menu-item { + height: 56px !important; + line-height: 56px !important; +} +.el-menu-item, +.el-sub-menu__title { + color: var(--next-bg-menuBarColor); +} +// 修复点击左侧菜单折叠再展开时,宽度不跟随问题 +.el-menu--collapse { + width: 64px !important; +} +// 外部链接时 +.el-menu-item a, +.el-menu-item a:hover, +.el-menu-item i, +.el-sub-menu__title i { + color: inherit; + text-decoration: none; +} +// 第三方图标字体间距/大小设置 +.el-menu-item .iconfont, +.el-sub-menu .iconfont, +.el-menu-item .fa, +.el-sub-menu .fa { + @include generalIcon; +} +// 水平菜单、横向菜单高亮 背景色,鼠标 hover 时,有子级菜单的背景色 +.el-menu-item.is-active, +.el-sub-menu.is-active .el-sub-menu__title, +.el-sub-menu:not(.is-opened):hover .el-sub-menu__title { + @extend .el-menu-hover-bg-color; +} +.el-sub-menu.is-active.is-opened .el-sub-menu__title { + background-color: unset !important; +} +// 子级菜单背景颜色 +// .el-menu--inline { +// background: var(--next-bg-menuBar-light-1); +// } +// 水平菜单、横向菜单折叠 a 标签 +.el-popper.is-dark a { + color: var(--el-color-white) !important; + text-decoration: none; +} +// 水平菜单、横向菜单折叠背景色 +.el-popper.is-pure.is-light { + // 水平菜单 + .el-menu--vertical { + background: var(--next-bg-menuBar); + .el-sub-menu.is-active .el-sub-menu__title { + color: var(--el-menu-active-color); + } + .el-popper.is-pure.is-light { + .el-menu--vertical { + .el-sub-menu .el-sub-menu__title { + background-color: unset !important; + color: var(--next-bg-menuBarColor); + } + .el-sub-menu.is-active .el-sub-menu__title { + color: var(--el-menu-active-color); + } + } + } + } + // 横向菜单 + .el-menu--horizontal { + background: var(--next-bg-topBar); + .el-menu-item, + .el-sub-menu { + height: 50px !important; + line-height: 50px !important; + color: var(--next-bg-topBarColor); + .el-sub-menu__title { + height: 50px !important; + line-height: 50px !important; + color: var(--next-bg-topBarColor); + } + .el-popper.is-pure.is-light { + .el-menu--horizontal { + .el-sub-menu .el-sub-menu__title { + background-color: unset !important; + color: var(--next-bg-topBarColor); + } + .el-sub-menu.is-active .el-sub-menu__title { + color: var(--el-menu-active-color); + } + } + } + } + .el-menu-item.is-active, + .el-sub-menu.is-active .el-sub-menu__title { + color: var(--el-menu-active-color); + } + } +} +// 横向菜单(经典、横向)布局 +.el-menu.el-menu--horizontal { + border-bottom: none !important; + width: 100% !important; + .el-menu-item, + .el-sub-menu__title { + height: 50px !important; + color: var(--next-bg-topBarColor); + } + .el-menu-item:not(.is-active):hover, + .el-sub-menu:not(.is-active):hover .el-sub-menu__title { + color: var(--next-bg-topBarColor); + } +} + +/* Tabs 标签页 +------------------------------- */ +.el-tabs__nav-wrap::after { + height: 1px !important; +} + +/* Dropdown 下拉菜单 +------------------------------- */ +.el-dropdown-menu { + list-style: none !important; /*修复 Dropdown 下拉菜单样式问题 2022.03.04*/ +} +.el-dropdown-menu .el-dropdown-menu__item { + white-space: nowrap; + &:not(.is-disabled):hover { + background-color: var(--el-dropdown-menuItem-hover-fill); + color: var(--el-dropdown-menuItem-hover-color); + } +} + +/* Steps 步骤条 +------------------------------- */ +.el-step__icon-inner { + font-size: 30px !important; + font-weight: 400 !important; +} +.el-step__title { + font-size: 14px; +} + +/* Dialog 对话框 +------------------------------- */ +.el-overlay { + overflow: hidden; + .el-overlay-dialog { + display: flex; + align-items: center; + justify-content: center; + position: unset !important; + width: 100%; + height: 100%; + .el-dialog { + margin: 0 auto !important; + position: absolute; + .el-dialog__body { + padding: 20px !important; + } + } + } +} +.el-dialog__body { + max-height: calc(90vh - 111px) !important; + overflow-y: auto; + overflow-x: hidden; +} + +/* Card 卡片 +------------------------------- */ +.el-card__header { + padding: 15px 20px; +} + +/* Table 表格 element plus 2.2.0 版本 +------------------------------- */ +.el-table { + .el-button.is-text { + padding: 0; + } +} + +/* scrollbar +------------------------------- */ +.el-scrollbar__bar { + z-index: 4; +} +.el-scrollbar__wrap { + max-height: 100%; /*防止页面切换时,滚动条高度不变的问题(滚动条高度非滚动条滚动高度)*/ +} +.el-select-dropdown .el-scrollbar__wrap { + overflow-x: scroll !important; +} +.el-select-dropdown__wrap { + max-height: 274px !important; /*修复Select 选择器高度问题*/ +} +.el-cascader-menu__wrap.el-scrollbar__wrap { + height: 204px !important; /*修复Cascader 级联选择器高度问题*/ +} + +/* Drawer 抽屉 +------------------------------- */ +.el-drawer { + --el-drawer-padding-primary: unset !important; + .el-drawer__header { + padding: 0 15px !important; + height: 50px; + display: flex; + align-items: center; + margin-bottom: 0 !important; + border-bottom: 1px solid var(--el-border-color); + color: var(--el-text-color-primary); + } + .el-drawer__body { + width: 100%; + height: 100%; + overflow: auto; + } +} diff --git a/src/theme/iconSelector.scss b/src/theme/iconSelector.scss new file mode 100644 index 0000000..970201e --- /dev/null +++ b/src/theme/iconSelector.scss @@ -0,0 +1,70 @@ +/* Popover 弹出框(图标选择器) +------------------------------- */ +.icon-selector-popper { + padding: 0 !important; + .icon-selector-warp { + height: 260px; + overflow: hidden; + .icon-selector-warp-title { + height: 40px; + line-height: 40px; + padding: 0 15px; + .icon-selector-warp-title-tab { + span { + cursor: pointer; + &:hover { + color: var(--el-color-primary); + text-decoration: underline; + } + } + .span-active { + color: var(--el-color-primary); + text-decoration: underline; + } + } + } + .icon-selector-warp-row { + height: 230px; + overflow: hidden; + border-top: 1px solid var(--el-border-color); + .el-row { + padding: 15px; + } + .el-scrollbar__bar.is-horizontal { + display: none; + } + .icon-selector-warp-item { + display: flex; + border: 1px solid var(--el-border-color); + padding: 5px; + border-radius: 5px; + margin-bottom: 10px; + .icon-selector-warp-item-value { + i { + font-size: 20px; + color: var(--el-text-color-regular); + } + } + &:hover { + cursor: pointer; + background-color: var(--el-color-primary-light-9); + border: 1px solid var(--el-color-primary-light-5); + .icon-selector-warp-item-value { + i { + color: var(--el-color-primary); + } + } + } + } + .icon-selector-active { + background-color: var(--el-color-primary-light-9); + border: 1px solid var(--el-color-primary-light-5); + .icon-selector-warp-item-value { + i { + color: var(--el-color-primary); + } + } + } + } + } +} diff --git a/src/theme/index.scss b/src/theme/index.scss new file mode 100644 index 0000000..c574e00 --- /dev/null +++ b/src/theme/index.scss @@ -0,0 +1,8 @@ +@import './app.scss'; +@import 'common/transition.scss'; +@import './other.scss'; +@import './element.scss'; +@import './iconSelector.scss'; +@import './media/media.scss'; +@import './waves.scss'; +@import './dark.scss'; diff --git a/src/theme/loading.scss b/src/theme/loading.scss new file mode 100644 index 0000000..c28c7b9 --- /dev/null +++ b/src/theme/loading.scss @@ -0,0 +1,51 @@ +.loading-next { + width: 100%; + height: 100%; +} +.loading-next .loading-next-box { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.loading-next .loading-next-box-warp { + width: 80px; + height: 80px; +} +.loading-next .loading-next-box-warp .loading-next-box-item { + width: 33.333333%; + height: 33.333333%; + background: var(--el-color-primary); + float: left; + animation: loading-next-animation 1.2s infinite ease; + border-radius: 1px; +} +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(7) { + animation-delay: 0s; +} +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(4), +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(8) { + animation-delay: 0.1s; +} +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(1), +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(5), +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(9) { + animation-delay: 0.2s; +} +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(2), +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(6) { + animation-delay: 0.3s; +} +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(3) { + animation-delay: 0.4s; +} +@keyframes loading-next-animation { + 0%, + 70%, + 100% { + transform: scale3D(1, 1, 1); + } + 35% { + transform: scale3D(0, 0, 1); + } +} diff --git a/src/theme/media/chart.scss b/src/theme/media/chart.scss new file mode 100644 index 0000000..8485e39 --- /dev/null +++ b/src/theme/media/chart.scss @@ -0,0 +1,94 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + .big-data-down-left { + width: 100% !important; + flex-direction: unset !important; + flex-wrap: wrap; + .flex-warp-item { + min-height: 196.24px; + padding: 0 7.5px 15px 15px !important; + .flex-warp-item-box { + border: none !important; + border-bottom: 1px solid #ebeef5 !important; + } + } + } + .big-data-down-center { + width: 100% !important; + .big-data-down-center-one, + .big-data-down-center-two { + min-height: 196.24px; + padding-left: 15px !important; + .big-data-down-center-one-content { + border: none !important; + border-bottom: 1px solid #ebeef5 !important; + } + .flex-warp-item-box { + @extend .big-data-down-center-one-content; + } + } + } + .big-data-down-right { + .flex-warp-item { + .flex-warp-item-box { + border: none !important; + border-bottom: 1px solid #ebeef5 !important; + } + &:nth-of-type(2) { + padding-left: 15px !important; + } + &:last-of-type { + .flex-warp-item-box { + border: none !important; + } + } + } + } +} + +/* 页面宽度大于768px小于1200px +------------------------------- */ +@media screen and (min-width: $sm) and (max-width: $lg) { + .chart-warp-bottom { + .big-data-down-left { + width: 50% !important; + } + .big-data-down-center { + width: 50% !important; + } + .big-data-down-right { + .flex-warp-item { + width: 50% !important; + &:nth-of-type(2) { + padding-left: 7.5px !important; + } + } + } + } +} + +/* 页面宽度小于1200px +------------------------------- */ +@media screen and (max-width: $lg) { + .chart-warp-top { + .up-left { + display: none; + } + } + .chart-warp-bottom { + overflow-y: auto !important; + flex-wrap: wrap; + .big-data-down-right { + width: 100% !important; + flex-direction: unset !important; + flex-wrap: wrap; + .flex-warp-item { + min-height: 196.24px; + padding: 0 7.5px 15px 15px !important; + } + } + } +} diff --git a/src/theme/media/cityLinkage.scss b/src/theme/media/cityLinkage.scss new file mode 100644 index 0000000..1394156 --- /dev/null +++ b/src/theme/media/cityLinkage.scss @@ -0,0 +1,10 @@ +@import './index.scss'; + +/* 页面宽度小于576px +------------------------------- */ +@media screen and (max-width: $xs) { + .el-cascader__dropdown.el-popper { + overflow: auto; + max-width: 100%; + } +} diff --git a/src/theme/media/date.scss b/src/theme/media/date.scss new file mode 100644 index 0000000..1a50397 --- /dev/null +++ b/src/theme/media/date.scss @@ -0,0 +1,25 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + // 时间选择器适配 + .el-date-range-picker { + width: 100vw; + .el-picker-panel__body { + min-width: 100%; + .el-date-range-picker__content { + .el-date-range-picker__header div { + margin-left: 22px; + margin-right: 0px; + } + & + .el-date-range-picker__content { + .el-date-range-picker__header div { + margin-left: 0px; + margin-right: 22px; + } + } + } + } + } +} diff --git a/src/theme/media/dialog.scss b/src/theme/media/dialog.scss new file mode 100644 index 0000000..023ccae --- /dev/null +++ b/src/theme/media/dialog.scss @@ -0,0 +1,12 @@ +@import './index.scss'; + +/* 页面宽度小于800px +------------------------------- */ +@media screen and (max-width: 800px) { + .el-dialog { + width: 90% !important; + } + .el-dialog.is-fullscreen { + width: 100% !important; + } +} diff --git a/src/theme/media/error.scss b/src/theme/media/error.scss new file mode 100644 index 0000000..f35015f --- /dev/null +++ b/src/theme/media/error.scss @@ -0,0 +1,45 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + .error { + .error-flex { + flex-direction: column-reverse !important; + height: auto !important; + width: 100% !important; + } + .right, + .left { + flex: unset !important; + display: flex !important; + } + .left-item { + margin: auto !important; + } + .right img { + max-width: 450px !important; + @extend .left-item; + } + } +} + +/* 页面宽度大于768px小于992px +------------------------------- */ +@media screen and (min-width: $sm) and (max-width: $md) { + .error { + .error-flex { + padding-left: 30px !important; + } + } +} + +/* 页面宽度小于1200px +------------------------------- */ +@media screen and (max-width: $lg) { + .error { + .error-flex { + padding: 0 30px; + } + } +} diff --git a/src/theme/media/form.scss b/src/theme/media/form.scss new file mode 100644 index 0000000..6fe0a8c --- /dev/null +++ b/src/theme/media/form.scss @@ -0,0 +1,18 @@ +@import './index.scss'; + +/* 页面宽度小于576px +------------------------------- */ +@media screen and (max-width: $xs) { + .el-form-item__label { + width: 100% !important; + text-align: left !important; + // 移动端 label 右对齐问题 + justify-content: flex-start !important; + } + .el-form-item__content { + margin-left: 0 !important; + } + .el-form-item { + display: unset !important; + } +} diff --git a/src/theme/media/home.scss b/src/theme/media/home.scss new file mode 100644 index 0000000..5a2417e --- /dev/null +++ b/src/theme/media/home.scss @@ -0,0 +1,23 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + .home-media, + .home-media-sm { + margin-top: 15px; + } +} + +/* 页面宽度小于1200px +------------------------------- */ +@media screen and (max-width: $lg) { + .home-media-lg { + margin-top: 15px; + } + .home-monitor { + .flex-warp-item { + width: 33.33% !important; + } + } +} diff --git a/src/theme/media/index.scss b/src/theme/media/index.scss new file mode 100644 index 0000000..4761c0c --- /dev/null +++ b/src/theme/media/index.scss @@ -0,0 +1,15 @@ +/* 栅格布局(媒体查询变量) +* https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/Media_queries +* $us ≥376px 响应式栅格 +* $xs ≥576px 响应式栅格 +* $sm ≥768px 响应式栅格 +* $md ≥992px 响应式栅格 +* $lg ≥1200px 响应式栅格 +* $xl ≥1920px 响应式栅格 +------------------------------- */ +$us: 376px; +$xs: 576px; +$sm: 768px; +$md: 992px; +$lg: 1200px; +$xl: 1920px; diff --git a/src/theme/media/layout.scss b/src/theme/media/layout.scss new file mode 100644 index 0000000..77cbec0 --- /dev/null +++ b/src/theme/media/layout.scss @@ -0,0 +1,55 @@ +@import './index.scss'; + +/* 页面宽度小于576px +------------------------------- */ +@media screen and (max-width: $xs) { + // MessageBox 弹框 + .el-message-box { + width: 80% !important; + } +} + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + // Breadcrumb 面包屑 + .layout-navbars-breadcrumb-hide { + display: none; + } + // 外链视图 + .layout-view-link { + a { + max-width: 80%; + text-align: center; + } + } + // 菜单搜索 + .layout-search-dialog { + .el-autocomplete { + width: 80% !important; + } + } +} + +/* 页面宽度小于1000px +------------------------------- */ +@media screen and (max-width: 1000px) { + // 布局配置 + .layout-drawer-content-flex { + position: relative; + &::after { + content: '手机版不支持切换布局'; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + text-align: center; + height: 140px; + line-height: 140px; + background: rgba(255, 255, 255, 0.9); + color: #666666; + } + } +} diff --git a/src/theme/media/login.scss b/src/theme/media/login.scss new file mode 100644 index 0000000..41a0159 --- /dev/null +++ b/src/theme/media/login.scss @@ -0,0 +1,63 @@ +@import './index.scss'; + +/* 页面宽度小于992px +------------------------------- */ +@media screen and (max-width: $lg) { + .login-container { + .login-icon-group { + &::before { + content: ''; + height: 70% !important; + transition: all 0.3s ease; + } + &::after { + content: ''; + width: 100px !important; + height: 200px !important; + transition: all 0.3s ease; + } + } + } +} + +/* 页面宽度小于992px +------------------------------- */ +@media screen and (max-width: $md) { + .login-content { + right: unset !important; + left: 50% !important; + transform: translate(-50%, -50%) translate3d(0, 0, 0) !important; + } +} + +/* 页面宽度小于576px +------------------------------- */ +@media screen and (max-width: $xs) { + .login-container { + .login-icon-group { + display: none !important; + } + .login-content { + width: 100% !important; + height: 100% !important; + padding: 20px 0 !important; + border-radius: 0 !important; + box-shadow: unset !important; + border: none !important; + } + .el-form-item { + display: flex !important; + } + } +} + +/* 页面宽度小于375px +------------------------------- */ +@media screen and (max-width: $us) { + .login-container { + .login-content-title { + font-size: 18px !important; + transition: all 0.3s ease; + } + } +} diff --git a/src/theme/media/media.scss b/src/theme/media/media.scss new file mode 100644 index 0000000..bed1c35 --- /dev/null +++ b/src/theme/media/media.scss @@ -0,0 +1,13 @@ +@import './login.scss'; +@import './error.scss'; +@import './layout.scss'; +@import './personal.scss'; +@import './tagsView.scss'; +@import './home.scss'; +@import './chart.scss'; +@import './form.scss'; +@import './scrollbar.scss'; +@import './pagination.scss'; +@import './dialog.scss'; +@import './cityLinkage.scss'; +@import './date.scss'; diff --git a/src/theme/media/pagination.scss b/src/theme/media/pagination.scss new file mode 100644 index 0000000..400ebaa --- /dev/null +++ b/src/theme/media/pagination.scss @@ -0,0 +1,15 @@ +@import './index.scss'; + +/* 页面宽度小于576px +------------------------------- */ +@media screen and (max-width: $xs) { + .el-pager, + .el-pagination__jump { + display: none !important; + } +} + +// 默认居中对齐 +.el-pagination { + text-align: center !important; +} diff --git a/src/theme/media/personal.scss b/src/theme/media/personal.scss new file mode 100644 index 0000000..7ec0d4a --- /dev/null +++ b/src/theme/media/personal.scss @@ -0,0 +1,16 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + .personal-info { + padding-left: 0 !important; + margin-top: 15px; + } + .personal-recommend-col { + margin-bottom: 15px; + &:last-of-type { + margin-bottom: 0; + } + } +} diff --git a/src/theme/media/scrollbar.scss b/src/theme/media/scrollbar.scss new file mode 100644 index 0000000..968a79d --- /dev/null +++ b/src/theme/media/scrollbar.scss @@ -0,0 +1,56 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + // 滚动条的宽度 + ::-webkit-scrollbar { + width: 3px !important; + height: 3px !important; + } + ::-webkit-scrollbar-track-piece { + background-color: var(--next-bg-main-color); + } + // 滚动条的设置 + ::-webkit-scrollbar-thumb { + background-color: rgba(144, 147, 153, 0.3); + background-clip: padding-box; + min-height: 28px; + border-radius: 5px; + transition: 0.3s background-color; + } + ::-webkit-scrollbar-thumb:hover { + background-color: rgba(144, 147, 153, 0.5); + } + // element plus scrollbar + .el-scrollbar__bar.is-vertical { + width: 2px !important; + } + .el-scrollbar__bar.is-horizontal { + height: 2px !important; + } +} + +/* 页面宽度大于768px +------------------------------- */ +@media screen and (min-width: 769px) { + // 滚动条的宽度 + ::-webkit-scrollbar { + width: 7px; + height: 7px; + } + ::-webkit-scrollbar-track-piece { + background-color: var(--next-bg-main-color); + } + // 滚动条的设置 + ::-webkit-scrollbar-thumb { + background-color: rgba(144, 147, 153, 0.3); + background-clip: padding-box; + min-height: 28px; + border-radius: 5px; + transition: 0.3s background-color; + } + ::-webkit-scrollbar-thumb:hover { + background-color: rgba(144, 147, 153, 0.5); + } +} diff --git a/src/theme/media/tagsView.scss b/src/theme/media/tagsView.scss new file mode 100644 index 0000000..b71674e --- /dev/null +++ b/src/theme/media/tagsView.scss @@ -0,0 +1,11 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + .tags-view-form { + .tags-view-form-col { + margin-bottom: 20px; + } + } +} diff --git a/src/theme/mixins/index.scss b/src/theme/mixins/index.scss new file mode 100644 index 0000000..61f3c6b --- /dev/null +++ b/src/theme/mixins/index.scss @@ -0,0 +1,56 @@ +/* 第三方图标字体间距/大小设置 +------------------------------- */ +@mixin generalIcon { + font-size: 14px !important; + display: inline-block; + vertical-align: middle; + margin-right: 5px; + width: 24px; + text-align: center; + justify-content: center; +} + +/* 文本不换行 +------------------------------- */ +@mixin text-no-wrap() { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} + +/* 多行文本溢出 + ------------------------------- */ +@mixin text-ellipsis($line: 2) { + overflow: hidden; + word-break: break-all; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: $line; + -webkit-box-orient: vertical; +} + +/* 滚动条(页面未使用) div 中使用: + ------------------------------- */ +// .test { +// @include scrollBar; +// } +@mixin scrollBar { + // 滚动条凹槽的颜色,还可以设置边框属性 + &::-webkit-scrollbar-track-piece { + background-color: #f8f8f8; + } + // 滚动条的宽度 + &::-webkit-scrollbar { + width: 9px; + height: 9px; + } + // 滚动条的设置 + &::-webkit-scrollbar-thumb { + background-color: #dddddd; + background-clip: padding-box; + min-height: 28px; + } + &::-webkit-scrollbar-thumb:hover { + background-color: #bbb; + } +} diff --git a/src/theme/other.scss b/src/theme/other.scss new file mode 100644 index 0000000..a0451b8 --- /dev/null +++ b/src/theme/other.scss @@ -0,0 +1,36 @@ +/* wangeditor富文本编辑器 +------------------------------- */ +.editor-container { + z-index: 9999; + .w-e-toolbar { + border: 1px solid var(--el-border-color-light, #ebeef5) !important; + border-bottom: 1px solid var(--el-border-color-light, #ebeef5) !important; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + z-index: 2 !important; + } + .w-e-text-container { + border: 1px solid var(--el-border-color-light, #ebeef5) !important; + border-top: none !important; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + z-index: 1 !important; + } +} + +[data-theme='dark'] { + // textarea - css vars + --w-e-textarea-bg-color: var(--el-color-white) !important; + --w-e-textarea-color: var(--el-text-color-primary) !important; + + // toolbar - css vars + --w-e-toolbar-color: var(--el-text-color-primary) !important; + --w-e-toolbar-bg-color: var(--el-color-white) !important; + --w-e-toolbar-active-color: var(--el-text-color-primary) !important; + --w-e-toolbar-active-bg-color: var(--next-color-menu-hover) !important; + --w-e-toolbar-border-color: var(--el-border-color-light, #ebeef5) !important; + + // modal - css vars + --w-e-modal-button-bg-color: var(--el-color-primary) !important; + --w-e-modal-button-border-color: var(--el-color-primary) !important; +} diff --git a/src/theme/waves.scss b/src/theme/waves.scss new file mode 100644 index 0000000..23add2c --- /dev/null +++ b/src/theme/waves.scss @@ -0,0 +1,101 @@ +/* Waves v0.6.0 +* http://fian.my.id/Waves +* +* Copyright 2014 Alfiana E. Sibuea and other contributors +* Released under the MIT license +* https://github.com/fians/Waves/blob/master/LICENSE +*/ +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + vertical-align: middle; + z-index: 1; + will-change: opacity, transform; + transition: all 0.3s ease-out; +} +.waves-effect .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + opacity: 0; + background: rgba(0, 0, 0, 0.2); + transition: all 0.7s ease-out; + transition-property: opacity, -webkit-transform; + transition-property: transform, opacity; + transition-property: transform, opacity, -webkit-transform; + -webkit-transform: scale(0); + transform: scale(0); + pointer-events: none; +} +.waves-effect.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.45); +} +.waves-effect.waves-red .waves-ripple { + background-color: rgba(244, 67, 54, 0.7); +} +.waves-effect.waves-yellow .waves-ripple { + background-color: rgba(255, 235, 59, 0.7); +} +.waves-effect.waves-orange .waves-ripple { + background-color: rgba(255, 152, 0, 0.7); +} +.waves-effect.waves-purple .waves-ripple { + background-color: rgba(156, 39, 176, 0.7); +} +.waves-effect.waves-green .waves-ripple { + background-color: rgba(76, 175, 80, 0.7); +} +.waves-effect.waves-teal .waves-ripple { + background-color: rgba(0, 150, 136, 0.7); +} +.waves-effect input[type='button'], +.waves-effect input[type='reset'], +.waves-effect input[type='submit'] { + border: 0; + font-style: normal; + font-size: inherit; + text-transform: inherit; + background: none; +} +.waves-notransition { + transition: none !important; +} +.waves-circle { + -webkit-transform: translateZ(0); + transform: translateZ(0); + -webkit-mask-image: -webkit-radial-gradient(circle, #fff 100%, #000 100%); +} +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; +} +.waves-input-wrapper .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; +} +.waves-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; + -webkit-mask-image: none; +} +.waves-block { + display: block; +} +a.waves-effect .waves-ripple { + z-index: -1; +} diff --git a/src/utils/arrayOperation.ts b/src/utils/arrayOperation.ts new file mode 100644 index 0000000..f71620d --- /dev/null +++ b/src/utils/arrayOperation.ts @@ -0,0 +1,66 @@ +/** + * 判断两数组字符串是否相同(用于按钮权限验证),数组字符串中存在相同时会自动去重(按钮权限标识不会重复) + * @param news 新数据 + * @param old 源数据 + * @returns 两数组相同返回 `true`,反之则反 + */ +export function judementSameArr(newArr: unknown[] | string[], oldArr: string[]): boolean { + const news = removeDuplicate(newArr); + const olds = removeDuplicate(oldArr); + let count = 0; + const leng = news.length; + for (let i in olds) { + for (let j in news) { + if (olds[i] === news[j]) count++; + } + } + return count === leng ? true : false; +} + +/** + * 判断两个对象是否相同 + * @param a 要比较的对象一 + * @param b 要比较的对象二 + * @returns 相同返回 true,反之则反 + */ +export function isObjectValueEqual(a: { [key: string]: any }, b: { [key: string]: any }) { + if (!a || !b) return false; + let aProps = Object.getOwnPropertyNames(a); + let bProps = Object.getOwnPropertyNames(b); + if (aProps.length != bProps.length) return false; + for (let i = 0; i < aProps.length; i++) { + let propName = aProps[i]; + let propA = a[propName]; + let propB = b[propName]; + if (!b.hasOwnProperty(propName)) return false; + if (propA instanceof Object) { + if (!isObjectValueEqual(propA, propB)) return false; + } else if (propA !== propB) { + return false; + } + } + return true; +} + +/** + * 数组、数组对象去重 + * @param arr 数组内容 + * @param attr 需要去重的键值(数组对象) + * @returns + */ +export function removeDuplicate(arr: any, attr?: string) { + if (!arr && !arr.length) { + return arr; + } else { + if (attr) { + const obj: any = {}; + const newArr = arr.reduce((cur: any, item: any) => { + obj[item[attr]] ? '' : (obj[item[attr]] = true && item[attr] && cur.push(item)); + return cur; + }, []); + return newArr; + } else { + return Array.from(new Set([...arr])); + } + } +} diff --git a/src/utils/authDirective.ts b/src/utils/authDirective.ts new file mode 100644 index 0000000..9d30bc3 --- /dev/null +++ b/src/utils/authDirective.ts @@ -0,0 +1,42 @@ +import type { App } from 'vue'; +import { useUserInfo } from '/@/stores/userInfo'; +import { judementSameArr } from '/@/utils/arrayOperation'; + +/** + * 用户权限指令 + * @directive 单个权限验证(v-auth="xxx") + * @directive 多个权限验证,满足一个则显示(v-auths="[xxx,xxx]") + * @directive 多个权限验证,全部满足则显示(v-auth-all="[xxx,xxx]") + */ +export function authDirective(app: App) { + const allPermissions = "*/*/*" + const stores = useUserInfo(); + // 单个权限验证(v-auth="xxx") + app.directive('auth', { + mounted(el, binding) { + if (stores.permissions.includes(allPermissions)) return + if (!stores.permissions.some((v: string) => v === binding.value)) el.parentNode.removeChild(el); + }, + }); + // 多个权限验证,满足一个则显示(v-auths="[xxx,xxx]") + app.directive('auths', { + mounted(el, binding) { + if (stores.permissions.includes(allPermissions)) return + let flag = false; + stores.permissions.map((val: string) => { + binding.value.map((v: string) => { + if (val === v) flag = true; + }); + }); + if (!flag) el.parentNode.removeChild(el); + }, + }); + // 多个权限验证,全部满足则显示(v-auth-all="[xxx,xxx]") + app.directive('auth-all', { + mounted(el, binding) { + if (stores.permissions.includes(allPermissions)) return + const flag = judementSameArr(binding.value, stores.permissions); + if (!flag) el.parentNode.removeChild(el); + }, + }); +} diff --git a/src/utils/authFunction.ts b/src/utils/authFunction.ts new file mode 100644 index 0000000..84c0ab4 --- /dev/null +++ b/src/utils/authFunction.ts @@ -0,0 +1,38 @@ +import { useUserInfo } from '/@/stores/userInfo'; +import { judementSameArr } from '/@/utils/arrayOperation'; + +/** + * 单个权限验证 + * @param value 权限值 + * @returns 有权限,返回 `true`,反之则反 + */ +export function auth(value: string): boolean { + const stores = useUserInfo(); + return stores.userInfos.authBtnList.some((v: string) => v === value); +} + +/** + * 多个权限验证,满足一个则为 true + * @param value 权限值 + * @returns 有权限,返回 `true`,反之则反 + */ +export function auths(value: Array): boolean { + let flag = false; + const stores = useUserInfo(); + stores.userInfos.authBtnList.map((val: string) => { + value.map((v: string) => { + if (val === v) flag = true; + }); + }); + return flag; +} + +/** + * 多个权限验证,全部满足则为 true + * @param value 权限值 + * @returns 有权限,返回 `true`,反之则反 + */ +export function authAll(value: Array): boolean { + const stores = useUserInfo(); + return judementSameArr(value, stores.userInfos.authBtnList); +} diff --git a/src/utils/commonFunction.ts b/src/utils/commonFunction.ts new file mode 100644 index 0000000..1c069e6 --- /dev/null +++ b/src/utils/commonFunction.ts @@ -0,0 +1,65 @@ +// 通用函数 +import useClipboard from 'vue-clipboard3'; +import { ElMessage } from 'element-plus'; +import { formatDate } from '/@/utils/formatTime'; +import { useI18n } from 'vue-i18n'; + +export default function () { + const { t } = useI18n(); + const { toClipboard } = useClipboard(); + //百分比格式化 + const percentFormat = (row: any, column: number, cellValue: any) => { + return cellValue ? `${cellValue}%` : '-'; + }; + //列表日期时间格式化 + const dateFormatYMD = (row: any, column: number, cellValue: any) => { + if (!cellValue) return '-'; + return formatDate(new Date(cellValue), 'YYYY-mm-dd'); + }; + //列表日期时间格式化 + const dateFormatYMDHMS = (row: any, column: number, cellValue: any) => { + if (!cellValue) return '-'; + return formatDate(new Date(cellValue), 'YYYY-mm-dd HH:MM:SS'); + }; + //列表日期时间格式化 + const dateFormatHMS = (row: any, column: number, cellValue: any) => { + if (!cellValue) return '-'; + let time = 0; + if (typeof row === 'number') time = row; + if (typeof cellValue === 'number') time = cellValue; + return formatDate(new Date(time * 1000), 'HH:MM:SS'); + }; + // 小数格式化 + const scaleFormat = (value: any = 0, scale: number = 4) => { + return Number.parseFloat(value).toFixed(scale); + }; + // 小数格式化 + const scale2Format = (value: any = 0) => { + return Number.parseFloat(value).toFixed(2); + }; + // 点击复制文本 + const copyText = (text: string) => { + return new Promise((resolve, reject) => { + try { + //复制 + toClipboard(text); + //下面可以设置复制成功的提示框等操作 + ElMessage.success(t('message.layout.copyTextSuccess')); + resolve(text); + } catch (e) { + //复制失败 + ElMessage.error(t('message.layout.copyTextError')); + reject(e); + } + }); + }; + return { + percentFormat, + dateFormatYMD, + dateFormatYMDHMS, + dateFormatHMS, + scaleFormat, + scale2Format, + copyText, + }; +} diff --git a/src/utils/customDirective.ts b/src/utils/customDirective.ts new file mode 100644 index 0000000..c67350f --- /dev/null +++ b/src/utils/customDirective.ts @@ -0,0 +1,178 @@ +import type { App } from 'vue'; + +/** + * 按钮波浪指令 + * @directive 默认方式:v-waves,如 `
    ` + * @directive 参数方式:v-waves=" |light|red|orange|purple|green|teal",如 `
    ` + */ +export function wavesDirective(app: App) { + app.directive('waves', { + mounted(el, binding) { + el.classList.add('waves-effect'); + binding.value && el.classList.add(`waves-${binding.value}`); + function setConvertStyle(obj: { [key: string]: unknown }) { + let style: string = ''; + for (let i in obj) { + if (obj.hasOwnProperty(i)) style += `${i}:${obj[i]};`; + } + return style; + } + function onCurrentClick(e: { [key: string]: unknown }) { + let elDiv = document.createElement('div'); + elDiv.classList.add('waves-ripple'); + el.appendChild(elDiv); + let styles = { + left: `${e.layerX}px`, + top: `${e.layerY}px`, + opacity: 1, + transform: `scale(${(el.clientWidth / 100) * 10})`, + 'transition-duration': `750ms`, + 'transition-timing-function': `cubic-bezier(0.250, 0.460, 0.450, 0.940)`, + }; + elDiv.setAttribute('style', setConvertStyle(styles)); + setTimeout(() => { + elDiv.setAttribute( + 'style', + setConvertStyle({ + opacity: 0, + transform: styles.transform, + left: styles.left, + top: styles.top, + }) + ); + setTimeout(() => { + elDiv && el.removeChild(elDiv); + }, 750); + }, 450); + } + el.addEventListener('mousedown', onCurrentClick, false); + }, + unmounted(el) { + el.addEventListener('mousedown', () => {}); + }, + }); +} + +/** + * 自定义拖动指令 + * @description 使用方式:v-drag="[dragDom,dragHeader]",如 `
    ` + * @description dragDom 要拖动的元素,dragHeader 要拖动的 Header 位置 + * @link 注意:https://github.com/element-plus/element-plus/issues/522 + * @lick 参考:https://blog.csdn.net/weixin_46391323/article/details/105228020?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-10&spm=1001.2101.3001.4242 + */ +export function dragDirective(app: App) { + app.directive('drag', { + mounted(el, binding) { + if (!binding.value) return false; + + const dragDom = document.querySelector(binding.value[0]) as HTMLElement; + const dragHeader = document.querySelector(binding.value[1]) as HTMLElement; + + dragHeader.onmouseover = () => (dragHeader.style.cursor = `move`); + + function down(e: any, type: string) { + // 鼠标按下,计算当前元素距离可视区的距离 + const disX = type === 'pc' ? e.clientX - dragHeader.offsetLeft : e.touches[0].clientX - dragHeader.offsetLeft; + const disY = type === 'pc' ? e.clientY - dragHeader.offsetTop : e.touches[0].clientY - dragHeader.offsetTop; + + // body当前宽度 + const screenWidth = document.body.clientWidth; + // 可见区域高度(应为body高度,可某些环境下无法获取) + const screenHeight = document.documentElement.clientHeight; + + // 对话框宽度 + const dragDomWidth = dragDom.offsetWidth; + // 对话框高度 + const dragDomheight = dragDom.offsetHeight; + + const minDragDomLeft = dragDom.offsetLeft; + const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth; + + const minDragDomTop = dragDom.offsetTop; + const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight; + + // 获取到的值带px 正则匹配替换 + let styL: any = getComputedStyle(dragDom).left; + let styT: any = getComputedStyle(dragDom).top; + + // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px + if (styL.includes('%')) { + styL = +document.body.clientWidth * (+styL.replace(/\%/g, '') / 100); + styT = +document.body.clientHeight * (+styT.replace(/\%/g, '') / 100); + } else { + styL = +styL.replace(/\px/g, ''); + styT = +styT.replace(/\px/g, ''); + } + + return { + disX, + disY, + minDragDomLeft, + maxDragDomLeft, + minDragDomTop, + maxDragDomTop, + styL, + styT, + }; + } + + function move(e: any, type: string, obj: any) { + let { disX, disY, minDragDomLeft, maxDragDomLeft, minDragDomTop, maxDragDomTop, styL, styT } = obj; + + // 通过事件委托,计算移动的距离 + let left = type === 'pc' ? e.clientX - disX : e.touches[0].clientX - disX; + let top = type === 'pc' ? e.clientY - disY : e.touches[0].clientY - disY; + + // 边界处理 + if (-left > minDragDomLeft) { + left = -minDragDomLeft; + } else if (left > maxDragDomLeft) { + left = maxDragDomLeft; + } + + if (-top > minDragDomTop) { + top = -minDragDomTop; + } else if (top > maxDragDomTop) { + top = maxDragDomTop; + } + + // 移动当前元素 + dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`; + } + + /** + * pc端 + * onmousedown 鼠标按下触发事件 + * onmousemove 鼠标按下时持续触发事件 + * onmouseup 鼠标抬起触发事件 + */ + dragHeader.onmousedown = (e) => { + const obj = down(e, 'pc'); + document.onmousemove = (e) => { + move(e, 'pc', obj); + }; + document.onmouseup = () => { + document.onmousemove = null; + document.onmouseup = null; + }; + }; + + /** + * 移动端 + * ontouchstart 当按下手指时,触发ontouchstart + * ontouchmove 当移动手指时,触发ontouchmove + * ontouchend 当移走手指时,触发ontouchend + */ + dragHeader.ontouchstart = (e) => { + const obj = down(e, 'app'); + document.ontouchmove = (e) => { + move(e, 'app', obj); + }; + document.ontouchend = () => { + document.ontouchmove = null; + document.ontouchend = null; + }; + }; + }, + }); +} diff --git a/src/utils/directive.ts b/src/utils/directive.ts new file mode 100644 index 0000000..a75b187 --- /dev/null +++ b/src/utils/directive.ts @@ -0,0 +1,18 @@ +import type { App } from 'vue'; +import { authDirective } from '/@/utils/authDirective'; +import { wavesDirective, dragDirective } from '/@/utils/customDirective'; + +/** + * 导出指令方法:v-xxx + * @methods authDirective 用户权限指令,用法:v-auth + * @methods wavesDirective 按钮波浪指令,用法:v-waves + * @methods dragDirective 自定义拖动指令,用法:v-drag + */ +export function directive(app: App) { + // 用户权限指令 + authDirective(app); + // 按钮波浪指令 + wavesDirective(app); + // 自定义拖动指令 + dragDirective(app); +} diff --git a/src/utils/formatTime.ts b/src/utils/formatTime.ts new file mode 100644 index 0000000..441e30c --- /dev/null +++ b/src/utils/formatTime.ts @@ -0,0 +1,137 @@ +/** + * 时间日期转换 + * @param date 当前时间,new Date() 格式 + * @param format 需要转换的时间格式字符串 + * @description format 字符串随意,如 `YYYY-mm、YYYY-mm-dd` + * @description format 季度:"YYYY-mm-dd HH:MM:SS QQQQ" + * @description format 星期:"YYYY-mm-dd HH:MM:SS WWW" + * @description format 几周:"YYYY-mm-dd HH:MM:SS ZZZ" + * @description format 季度 + 星期 + 几周:"YYYY-mm-dd HH:MM:SS WWW QQQQ ZZZ" + * @returns 返回拼接后的时间字符串 + */ +export function formatDate(date: Date, format: string): string { + let we = date.getDay(); // 星期 + let z = getWeek(date); // 周 + let qut = Math.floor((date.getMonth() + 3) / 3).toString(); // 季度 + const opt: { [key: string]: string } = { + 'Y+': date.getFullYear().toString(), // 年 + 'm+': (date.getMonth() + 1).toString(), // 月(月份从0开始,要+1) + 'd+': date.getDate().toString(), // 日 + 'H+': date.getHours().toString(), // 时 + 'M+': date.getMinutes().toString(), // 分 + 'S+': date.getSeconds().toString(), // 秒 + 'q+': qut, // 季度 + }; + // 中文数字 (星期) + const week: { [key: string]: string } = { + '0': '日', + '1': '一', + '2': '二', + '3': '三', + '4': '四', + '5': '五', + '6': '六', + }; + // 中文数字(季度) + const quarter: { [key: string]: string } = { + '1': '一', + '2': '二', + '3': '三', + '4': '四', + }; + if (/(W+)/.test(format)) + format = format.replace(RegExp.$1, RegExp.$1.length > 1 ? (RegExp.$1.length > 2 ? '星期' + week[we] : '周' + week[we]) : week[we]); + if (/(Q+)/.test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 4 ? '第' + quarter[qut] + '季度' : quarter[qut]); + if (/(Z+)/.test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 3 ? '第' + z + '周' : z + ''); + for (let k in opt) { + let r = new RegExp('(' + k + ')').exec(format); + // 若输入的长度不为1,则前面补零 + if (r) format = format.replace(r[1], RegExp.$1.length == 1 ? opt[k] : opt[k].padStart(RegExp.$1.length, '0')); + } + return format; +} + +/** + * 获取当前日期是第几周 + * @param dateTime 当前传入的日期值 + * @returns 返回第几周数字值 + */ +export function getWeek(dateTime: Date): number { + let temptTime = new Date(dateTime.getTime()); + // 周几 + let weekday = temptTime.getDay() || 7; + // 周1+5天=周六 + temptTime.setDate(temptTime.getDate() - weekday + 1 + 5); + let firstDay = new Date(temptTime.getFullYear(), 0, 1); + let dayOfWeek = firstDay.getDay(); + let spendDay = 1; + if (dayOfWeek != 0) spendDay = 7 - dayOfWeek + 1; + firstDay = new Date(temptTime.getFullYear(), 0, 1 + spendDay); + let d = Math.ceil((temptTime.valueOf() - firstDay.valueOf()) / 86400000); + let result = Math.ceil(d / 7); + return result; +} + +/** + * 将时间转换为 `几秒前`、`几分钟前`、`几小时前`、`几天前` + * @param param 当前时间,new Date() 格式或者字符串时间格式 + * @param format 需要转换的时间格式字符串 + * @description param 10秒: 10 * 1000 + * @description param 1分: 60 * 1000 + * @description param 1小时: 60 * 60 * 1000 + * @description param 24小时:60 * 60 * 24 * 1000 + * @description param 3天: 60 * 60* 24 * 1000 * 3 + * @returns 返回拼接后的时间字符串 + */ +export function formatPast(param: string | Date, format: string = 'YYYY-mm-dd'): string { + // 传入格式处理、存储转换值 + let t: any, s: number; + // 获取js 时间戳 + let time: number = new Date().getTime(); + // 是否是对象 + typeof param === 'string' || 'object' ? (t = new Date(param).getTime()) : (t = param); + // 当前时间戳 - 传入时间戳 + time = Number.parseInt(`${time - t}`); + if (time < 10000) { + // 10秒内 + return '刚刚'; + } else if (time < 60000 && time >= 10000) { + // 超过10秒少于1分钟内 + s = Math.floor(time / 1000); + return `${s}秒前`; + } else if (time < 3600000 && time >= 60000) { + // 超过1分钟少于1小时 + s = Math.floor(time / 60000); + return `${s}分钟前`; + } else if (time < 86400000 && time >= 3600000) { + // 超过1小时少于24小时 + s = Math.floor(time / 3600000); + return `${s}小时前`; + } else if (time < 259200000 && time >= 86400000) { + // 超过1天少于3天内 + s = Math.floor(time / 86400000); + return `${s}天前`; + } else { + // 超过3天 + let date = typeof param === 'string' || 'object' ? new Date(param) : param; + return formatDate(date, format); + } +} + +/** + * 时间问候语 + * @param param 当前时间,new Date() 格式 + * @description param 调用 `formatAxis(new Date())` 输出 `上午好` + * @returns 返回拼接后的时间字符串 + */ +export function formatAxis(param: Date): string { + let hour: number = new Date(param).getHours(); + if (hour < 6) return '凌晨好'; + else if (hour < 9) return '早上好'; + else if (hour < 12) return '上午好'; + else if (hour < 14) return '中午好'; + else if (hour < 17) return '下午好'; + else if (hour < 19) return '傍晚好'; + else if (hour < 22) return '晚上好'; + else return '夜里好'; +} diff --git a/src/utils/getStyleSheets.ts b/src/utils/getStyleSheets.ts new file mode 100644 index 0000000..90252c3 --- /dev/null +++ b/src/utils/getStyleSheets.ts @@ -0,0 +1,101 @@ +import { nextTick } from 'vue'; +import * as svg from '@element-plus/icons-vue'; + +// 获取阿里字体图标 +const getAlicdnIconfont = () => { + return new Promise((resolve, reject) => { + nextTick(() => { + const styles: any = document.styleSheets; + let sheetsList = []; + let sheetsIconList = []; + for (let i = 0; i < styles.length; i++) { + if (styles[i].href && styles[i].href.indexOf('at.alicdn.com') > -1) { + sheetsList.push(styles[i]); + } + } + for (let i = 0; i < sheetsList.length; i++) { + for (let j = 0; j < sheetsList[i].cssRules.length; j++) { + if (sheetsList[i].cssRules[j].selectorText && sheetsList[i].cssRules[j].selectorText.indexOf('.icon-') > -1) { + sheetsIconList.push( + `${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}` + ); + } + } + } + if (sheetsIconList.length > 0) resolve(sheetsIconList); + else reject('未获取到值,请刷新重试'); + }); + }); +}; + +// 初始化获取 css 样式,获取 element plus 自带 svg 图标,增加了 ele- 前缀,使用时:ele-Aim +const getElementPlusIconfont = () => { + return new Promise((resolve, reject) => { + nextTick(() => { + const icons = svg as any; + const sheetsIconList = []; + for (const i in icons) { + sheetsIconList.push(`ele-${icons[i].name}`); + } + if (sheetsIconList.length > 0) resolve(sheetsIconList); + else reject('未获取到值,请刷新重试'); + }); + }); +}; + +// 初始化获取 css 样式,这里使用 fontawesome 的图标 +const getAwesomeIconfont = () => { + return new Promise((resolve, reject) => { + nextTick(() => { + const styles: any = document.styleSheets; + let sheetsList = []; + let sheetsIconList = []; + for (let i = 0; i < styles.length; i++) { + if (styles[i].href && styles[i].href.indexOf('netdna.bootstrapcdn.com') > -1) { + sheetsList.push(styles[i]); + } + } + for (let i = 0; i < sheetsList.length; i++) { + for (let j = 0; j < sheetsList[i].cssRules.length; j++) { + if ( + sheetsList[i].cssRules[j].selectorText && + sheetsList[i].cssRules[j].selectorText.indexOf('.fa-') === 0 && + sheetsList[i].cssRules[j].selectorText.indexOf(',') === -1 + ) { + if (/::before/.test(sheetsList[i].cssRules[j].selectorText)) { + sheetsIconList.push( + `${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}` + ); + } + } + } + } + if (sheetsIconList.length > 0) resolve(sheetsIconList.reverse()); + else reject('未获取到值,请刷新重试'); + }); + }); +}; + +/** + * 获取字体图标 `document.styleSheets` + * @method ali 获取阿里字体图标 `` + * @method ele 获取 element plus 自带图标 `` + * @method ali 获取 fontawesome 的图标 `` + */ +const initIconfont = { + // iconfont + ali: () => { + return getAlicdnIconfont(); + }, + // element plus + ele: () => { + return getElementPlusIconfont(); + }, + // fontawesome + awe: () => { + return getAwesomeIconfont(); + }, +}; + +// 导出方法 +export default initIconfont; diff --git a/src/utils/gfast.ts b/src/utils/gfast.ts new file mode 100644 index 0000000..7902b71 --- /dev/null +++ b/src/utils/gfast.ts @@ -0,0 +1,108 @@ +import {Session} from "/@/utils/storage"; + +/** + * 通用js方法封装处理 + * Copyright (c) 2022 gfast + */ + +export const baseURL:string|undefined|boolean = import.meta.env.VITE_API_URL + + +export function getUpFileUrl(url:string){ + if(!url){ + return url + } + if (/^http|^blob/i.test(url)) { + return url + } + let reg = new RegExp('^/*' + baseURL + "/*"); + return baseURL+url.replace(reg,'') +} + + + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {*} id id字段 默认 'id' + * @param {*} parentId 父节点字段 默认 'parentId' + * @param {*} children 孩子节点字段 默认 'children' + * @param {*} rootId 根Id 默认 0 + */ +export function handleTree(data:any[], id:string, parentId:string, children:string, rootId:number):any[] { + id = id || 'id' + parentId = parentId || 'parentId' + children = children || 'children' + rootId = rootId || 0 + //对源数据深度克隆 + const cloneData = JSON.parse(JSON.stringify(data)) + //循环所有项 + const treeData = cloneData.filter((father:any) => { + let branchArr = cloneData.filter((child:any) => { + //返回每一项的子级数组 + return father[id] === child[parentId] + }); + branchArr.length > 0 ? father[children] = branchArr : ''; + //返回第一层 + return father[parentId] === rootId; + }); + return treeData != '' ? treeData : data; +} + + +// 回显数据字典 +export function selectDictLabel(data:any[], value:string):string { + let actions:string[]=[] + data.map((item) => { + if (item.value == value) { + actions.push(item.label); + return false; + } + }) + return actions.join(''); +} + +export function getToken():string{ + return Session.get('token') +} + +// 日期格式化 +export function parseTime(time:any, pattern:string) { + if (arguments.length === 0 || !time) { + return null + } + const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { + time = parseInt(time) + } else if (typeof time === 'string') { + time = time.replace(new RegExp(/-/gm), '/'); + } + if ((typeof time === 'number') && (time.toString().length === 10)) { + time = time * 1000 + } + date = new Date(time) + } + const formatObj:any = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + } + const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { + let value = formatObj[key] + // Note: getDay() returns 0 on Sunday + if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] } + if (result.length > 0 && value < 10) { + value = '0' + value + } + return value || 0 + }) + return time_str +} diff --git a/src/utils/loading.ts b/src/utils/loading.ts new file mode 100644 index 0000000..c23fb77 --- /dev/null +++ b/src/utils/loading.ts @@ -0,0 +1,42 @@ +import { nextTick } from 'vue'; +import '/@/theme/loading.scss'; + +/** + * 页面全局 Loading + * @method start 创建 loading + * @method done 移除 loading + */ +export const NextLoading = { + // 创建 loading + start: () => { + const bodys: Element = document.body; + const div = document.createElement('div'); + div.setAttribute('class', 'loading-next'); + const htmls = ` +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + `; + div.innerHTML = htmls; + bodys.insertBefore(div, bodys.childNodes[0]); + window.nextLoading = true; + }, + // 移除 loading + done: () => { + nextTick(() => { + window.nextLoading = false; + const el = document.querySelector('.loading-next'); + el?.parentNode?.removeChild(el); + }); + }, +}; diff --git a/src/utils/other.ts b/src/utils/other.ts new file mode 100644 index 0000000..6bb4fbd --- /dev/null +++ b/src/utils/other.ts @@ -0,0 +1,200 @@ +import { nextTick } from 'vue'; +import type { App } from 'vue'; +import * as svg from '@element-plus/icons-vue'; +import router from '/@/router/index'; +import pinia from '/@/stores/index'; +import { storeToRefs } from 'pinia'; +import { useThemeConfig } from '/@/stores/themeConfig'; +import { i18n } from '/@/i18n/index'; +import { Local } from '/@/utils/storage'; +import SvgIcon from '/@/components/svgIcon/index.vue'; + +/** + * 导出全局注册 element plus svg 图标 + * @param app vue 实例 + * @description 使用:https://element-plus.gitee.io/zh-CN/component/icon.html + */ +export function elSvg(app: App) { + const icons = svg as any; + for (const i in icons) { + app.component(`ele-${icons[i].name}`, icons[i]); + } + app.component('SvgIcon', SvgIcon); +} + +/** + * 设置浏览器标题国际化 + * @method const title = useTitle(); ==> title() + */ +export function useTitle() { + const stores = useThemeConfig(pinia); + const { themeConfig } = storeToRefs(stores); + nextTick(() => { + let webTitle = ''; + let globalTitle: string = themeConfig.value.globalTitle; + const { path, meta } = router.currentRoute.value; + if (path === '/login') { + webTitle = meta.title; + } else { + webTitle = setTagsViewNameI18n(router.currentRoute.value); + } + document.title = `${webTitle} - ${globalTitle}` || globalTitle; + }); +} + +/** + * 设置 自定义 tagsView 名称、 自定义 tagsView 名称国际化 + * @param params 路由 query、params 中的 tagsViewName + * @returns 返回当前 tagsViewName 名称 + */ +export function setTagsViewNameI18n(item: any) { + let tagsViewName: any = ''; + const { query, params, meta } = item; + if (query?.tagsViewName || params?.tagsViewName) { + if (/\/zh-cn|en|zh-tw\//.test(query?.tagsViewName) || /\/(zh-cn|en|zh-tw)\//.test(params?.tagsViewName)) { + // 国际化 + const urlTagsParams = (query?.tagsViewName && JSON.parse(query?.tagsViewName)) || (params?.tagsViewName && JSON.parse(params?.tagsViewName)); + tagsViewName = urlTagsParams[i18n.global.locale]; + } else { + // 非国际化 + tagsViewName = query?.tagsViewName || params?.tagsViewName; + } + } else { + // 非自定义 tagsView 名称 + tagsViewName = i18n.global.t(meta.title); + } + return tagsViewName; +} + +/** + * 图片懒加载 + * @param el dom 目标元素 + * @param arr 列表数据 + * @description data-xxx 属性用于存储页面或应用程序的私有自定义数据 + */ +export const lazyImg = (el: any, arr: any) => { + const io = new IntersectionObserver((res) => { + res.forEach((v: any) => { + if (v.isIntersecting) { + const { img, key } = v.target.dataset; + v.target.src = img; + v.target.onload = () => { + io.unobserve(v.target); + arr[key]['loading'] = false; + }; + } + }); + }); + nextTick(() => { + document.querySelectorAll(el).forEach((img) => io.observe(img)); + }); +}; + +/** + * 全局组件大小 + * @returns 返回 `window.localStorage` 中读取的缓存值 `globalComponentSize` + */ +export const globalComponentSize = (): string => { + const stores = useThemeConfig(pinia); + const { themeConfig } = storeToRefs(stores); + return Local.get('themeConfig')?.globalComponentSize || themeConfig.value?.globalComponentSize; +}; + +/** + * 对象深克隆 + * @param obj 源对象 + * @returns 克隆后的对象 + */ +export function deepClone(obj: any) { + let newObj: any; + try { + newObj = obj.push ? [] : {}; + } catch (error) { + newObj = {}; + } + for (let attr in obj) { + if (obj[attr] && typeof obj[attr] === 'object') { + newObj[attr] = deepClone(obj[attr]); + } else { + newObj[attr] = obj[attr]; + } + } + return newObj; +} + +/** + * 判断是否是移动端 + */ +export function isMobile() { + if ( + navigator.userAgent.match( + /('phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone')/i + ) + ) { + return true; + } else { + return false; + } +} + +/** + * 判断数组对象中所有属性是否为空,为空则删除当前行对象 + * @description @感谢大黄 + * @param list 数组对象 + * @returns 删除空值后的数组对象 + */ +export function handleEmpty(list: any) { + const arr = []; + for (const i in list) { + const d = []; + for (const j in list[i]) { + d.push(list[i][j]); + } + const leng = d.filter((item) => item === '').length; + if (leng !== d.length) { + arr.push(list[i]); + } + } + return arr; +} + +/** + * 统一批量导出 + * @method elSvg 导出全局注册 element plus svg 图标 + * @method useTitle 设置浏览器标题国际化 + * @method setTagsViewNameI18n 设置 自定义 tagsView 名称、 自定义 tagsView 名称国际化 + * @method lazyImg 图片懒加载 + * @method globalComponentSize() element plus 全局组件大小 + * @method deepClone 对象深克隆 + * @method isMobile 判断是否是移动端 + * @method handleEmpty 判断数组对象中所有属性是否为空,为空则删除当前行对象 + */ +const other = { + elSvg: (app: App) => { + elSvg(app); + }, + useTitle: () => { + useTitle(); + }, + setTagsViewNameI18n(route: any) { + return setTagsViewNameI18n(route); + }, + lazyImg: (el: any, arr: any) => { + lazyImg(el, arr); + }, + globalComponentSize: () => { + return globalComponentSize(); + }, + deepClone: (obj: any) => { + return deepClone(obj); + }, + isMobile: () => { + return isMobile(); + }, + handleEmpty: (list: any) => { + return handleEmpty(list); + }, +}; + +// 统一批量导出 +export default other; diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 0000000..2da0bda --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,62 @@ +import axios from 'axios'; +import { ElMessage, ElMessageBox } from 'element-plus'; +import { Session } from '/@/utils/storage'; + +// 配置新建一个 axios 实例 +const service = axios.create({ + baseURL: import.meta.env.VITE_API_URL as any, + timeout: 50000, + headers: { 'Content-Type': 'application/json' }, +}); + +// 添加请求拦截器 +service.interceptors.request.use( + (config) => { + // 在发送请求之前做些什么 token + if (Session.get('token')) { + (config.headers).common['Authorization'] = `Bearer ${Session.get('token')}`; + } + return config; + }, + (error) => { + // 对请求错误做些什么 + return Promise.reject(error); + } +); + +// 添加响应拦截器 +service.interceptors.response.use( + (response) => { + // 对响应数据做点什么 + const res = response.data; + const code = response.data.code + if (code === 401) { + ElMessageBox.alert('登录状态已过期,请重新登录', '提示', {confirmButtonText:'确定'}) + .then(() => { + Session.clear(); // 清除浏览器全部临时缓存 + window.location.href = '/'; // 去登录页 + }) + .catch(() => {}); + } else if (code !== 0) { + ElMessage.error(res.message) + return Promise.reject(new Error(res.message)) + } else { + return res + } + }, + (error) => { + // 对响应错误做点什么 + if (error.message.indexOf('timeout') != -1) { + ElMessage.error('网络超时'); + } else if (error.message == 'Network Error') { + ElMessage.error('网络连接错误'); + } else { + if (error.response.data) ElMessage.error(error.response.statusText); + else ElMessage.error('接口路径找不到'); + } + return Promise.reject(error); + } +); + +// 导出 axios 实例 +export default service; diff --git a/src/utils/setIconfont.ts b/src/utils/setIconfont.ts new file mode 100644 index 0000000..a6acf68 --- /dev/null +++ b/src/utils/setIconfont.ts @@ -0,0 +1,48 @@ +// 字体图标 url +const cssCdnUrlList: Array = [ + '//at.alicdn.com/t/font_2298093_y6u00apwst.css', + '//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css', +]; +// 第三方 js url +const jsCdnUrlList: Array = []; + +// 动态批量设置字体图标 +export function setCssCdn() { + if (cssCdnUrlList.length <= 0) return false; + cssCdnUrlList.map((v) => { + let link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = v; + link.crossOrigin = 'anonymous'; + document.getElementsByTagName('head')[0].appendChild(link); + }); +} + +// 动态批量设置第三方js +export function setJsCdn() { + if (jsCdnUrlList.length <= 0) return false; + jsCdnUrlList.map((v) => { + let link = document.createElement('script'); + link.src = v; + document.body.appendChild(link); + }); +} + +/** + * 批量设置字体图标、动态js + * @method cssCdn 动态批量设置字体图标 + * @method jsCdn 动态批量设置第三方js + */ +const setIntroduction = { + // 设置css + cssCdn: () => { + setCssCdn(); + }, + // 设置js + jsCdn: () => { + setJsCdn(); + }, +}; + +// 导出函数方法 +export default setIntroduction; diff --git a/src/utils/storage.ts b/src/utils/storage.ts new file mode 100644 index 0000000..a983f80 --- /dev/null +++ b/src/utils/storage.ts @@ -0,0 +1,59 @@ +import Cookies from 'js-cookie'; + +/** + * window.localStorage 浏览器永久缓存 + * @method set 设置永久缓存 + * @method get 获取永久缓存 + * @method remove 移除永久缓存 + * @method clear 移除全部永久缓存 + */ +export const Local = { + // 设置永久缓存 + set(key: string, val: any) { + window.localStorage.setItem(key, JSON.stringify(val)); + }, + // 获取永久缓存 + get(key: string) { + let json: any = window.localStorage.getItem(key); + return JSON.parse(json); + }, + // 移除永久缓存 + remove(key: string) { + window.localStorage.removeItem(key); + }, + // 移除全部永久缓存 + clear() { + window.localStorage.clear(); + }, +}; + +/** + * window.sessionStorage 浏览器临时缓存 + * @method set 设置临时缓存 + * @method get 获取临时缓存 + * @method remove 移除临时缓存 + * @method clear 移除全部临时缓存 + */ +export const Session = { + // 设置临时缓存 + set(key: string, val: any) { + if (key === 'token') return Cookies.set(key, val); + window.sessionStorage.setItem(key, JSON.stringify(val)); + }, + // 获取临时缓存 + get(key: string) { + if (key === 'token') return Cookies.get(key); + let json: any = window.sessionStorage.getItem(key); + return JSON.parse(json); + }, + // 移除临时缓存 + remove(key: string) { + if (key === 'token') return Cookies.remove(key); + window.sessionStorage.removeItem(key); + }, + // 移除全部临时缓存 + clear() { + Cookies.remove('token'); + window.sessionStorage.clear(); + }, +}; diff --git a/src/utils/theme.ts b/src/utils/theme.ts new file mode 100644 index 0000000..5561e64 --- /dev/null +++ b/src/utils/theme.ts @@ -0,0 +1,59 @@ +import { ElMessage } from 'element-plus'; + +/** + * hex颜色转rgb颜色 + * @param str 颜色值字符串 + * @returns 返回处理后的颜色值 + */ +export function hexToRgb(str: any) { + let hexs: any = ''; + let reg = /^\#?[0-9A-Fa-f]{6}$/; + if (!reg.test(str)) return ElMessage.warning('输入错误的hex'); + str = str.replace('#', ''); + hexs = str.match(/../g); + for (let i = 0; i < 3; i++) hexs[i] = parseInt(hexs[i], 16); + return hexs; +} + +/** + * rgb颜色转Hex颜色 + * @param r 代表红色 + * @param g 代表绿色 + * @param b 代表蓝色 + * @returns 返回处理后的颜色值 + */ +export function rgbToHex(r: any, g: any, b: any) { + let reg = /^\d{1,3}$/; + if (!reg.test(r) || !reg.test(g) || !reg.test(b)) return ElMessage.warning('输入错误的rgb颜色值'); + let hexs = [r.toString(16), g.toString(16), b.toString(16)]; + for (let i = 0; i < 3; i++) if (hexs[i].length == 1) hexs[i] = `0${hexs[i]}`; + return `#${hexs.join('')}`; +} + +/** + * 加深颜色值 + * @param color 颜色值字符串 + * @param level 加深的程度,限0-1之间 + * @returns 返回处理后的颜色值 + */ +export function getDarkColor(color: string, level: number) { + let reg = /^\#?[0-9A-Fa-f]{6}$/; + if (!reg.test(color)) return ElMessage.warning('输入错误的hex颜色值'); + let rgb = hexToRgb(color); + for (let i = 0; i < 3; i++) rgb[i] = Math.floor(rgb[i] * (1 - level)); + return rgbToHex(rgb[0], rgb[1], rgb[2]); +} + +/** + * 变浅颜色值 + * @param color 颜色值字符串 + * @param level 加深的程度,限0-1之间 + * @returns 返回处理后的颜色值 + */ +export function getLightColor(color: string, level: number) { + let reg = /^\#?[0-9A-Fa-f]{6}$/; + if (!reg.test(color)) return ElMessage.warning('输入错误的hex颜色值'); + let rgb = hexToRgb(color); + for (let i = 0; i < 3; i++) rgb[i] = Math.floor((255 - rgb[i]) * level + rgb[i]); + return rgbToHex(rgb[0], rgb[1], rgb[2]); +} diff --git a/src/utils/toolsValidate.ts b/src/utils/toolsValidate.ts new file mode 100644 index 0000000..f2cb9d6 --- /dev/null +++ b/src/utils/toolsValidate.ts @@ -0,0 +1,370 @@ +/** + * 2020.11.29 lyt 整理 + * 工具类集合,适用于平时开发 + * 新增多行注释信息,鼠标放到方法名即可查看 + */ + +/** + * 验证百分比(不可以小数) + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifyNumberPercentage(val: string): string { + // 匹配空格 + let v = val.replace(/(^\s*)|(\s*$)/g, ''); + // 只能是数字和小数点,不能是其他输入 + v = v.replace(/[^\d]/g, ''); + // 不能以0开始 + v = v.replace(/^0/g, ''); + // 数字超过100,赋值成最大值100 + v = v.replace(/^[1-9]\d\d{1,3}$/, '100'); + // 返回结果 + return v; +} + +/** + * 验证百分比(可以小数) + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifyNumberPercentageFloat(val: string): string { + let v = verifyNumberIntegerAndFloat(val); + // 数字超过100,赋值成最大值100 + v = v.replace(/^[1-9]\d\d{1,3}$/, '100'); + // 超过100之后不给再输入值 + v = v.replace(/^100\.$/, '100'); + // 返回结果 + return v; +} + +/** + * 小数或整数(不可以负数) + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifyNumberIntegerAndFloat(val: string) { + // 匹配空格 + let v = val.replace(/(^\s*)|(\s*$)/g, ''); + // 只能是数字和小数点,不能是其他输入 + v = v.replace(/[^\d.]/g, ''); + // 以0开始只能输入一个 + v = v.replace(/^0{2}$/g, '0'); + // 保证第一位只能是数字,不能是点 + v = v.replace(/^\./g, ''); + // 小数只能出现1位 + v = v.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.'); + // 小数点后面保留2位 + v = v.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); + // 返回结果 + return v; +} + +/** + * 正整数验证 + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifiyNumberInteger(val: string) { + // 匹配空格 + let v = val.replace(/(^\s*)|(\s*$)/g, ''); + // 去掉 '.' , 防止贴贴的时候出现问题 如 0.1.12.12 + v = v.replace(/[\.]*/g, ''); + // 去掉以 0 开始后面的数, 防止贴贴的时候出现问题 如 00121323 + v = v.replace(/(^0[\d]*)$/g, '0'); + // 首位是0,只能出现一次 + v = v.replace(/^0\d$/g, '0'); + // 只匹配数字 + v = v.replace(/[^\d]/g, ''); + // 返回结果 + return v; +} + +/** + * 去掉中文及空格 + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifyCnAndSpace(val: string) { + // 匹配中文与空格 + let v = val.replace(/[\u4e00-\u9fa5\s]+/g, ''); + // 匹配空格 + v = v.replace(/(^\s*)|(\s*$)/g, ''); + // 返回结果 + return v; +} + +/** + * 去掉英文及空格 + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifyEnAndSpace(val: string) { + // 匹配英文与空格 + let v = val.replace(/[a-zA-Z]+/g, ''); + // 匹配空格 + v = v.replace(/(^\s*)|(\s*$)/g, ''); + // 返回结果 + return v; +} + +/** + * 禁止输入空格 + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifyAndSpace(val: string) { + // 匹配空格 + let v = val.replace(/(^\s*)|(\s*$)/g, ''); + // 返回结果 + return v; +} + +/** + * 金额用 `,` 区分开 + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifyNumberComma(val: string) { + // 调用小数或整数(不可以负数)方法 + let v: any = verifyNumberIntegerAndFloat(val); + // 字符串转成数组 + v = v.toString().split('.'); + // \B 匹配非单词边界,两边都是单词字符或者两边都是非单词字符 + v[0] = v[0].replace(/\B(?=(\d{3})+(?!\d))/g, ','); + // 数组转字符串 + v = v.join('.'); + // 返回结果 + return v; +} + +/** + * 匹配文字变色(搜索时) + * @param val 当前值字符串 + * @param text 要处理的字符串值 + * @param color 搜索到时字体高亮颜色 + * @returns 返回处理后的字符串 + */ +export function verifyTextColor(val: string, text = '', color = 'red') { + // 返回内容,添加颜色 + let v = text.replace(new RegExp(val, 'gi'), `${val}`); + // 返回结果 + return v; +} + +/** + * 数字转中文大写 + * @param val 当前值字符串 + * @param unit 默认:仟佰拾亿仟佰拾万仟佰拾元角分 + * @returns 返回处理后的字符串 + */ +export function verifyNumberCnUppercase(val: any, unit = '仟佰拾亿仟佰拾万仟佰拾元角分', v = '') { + // 当前内容字符串添加 2个0,为什么?? + val += '00'; + // 返回某个指定的字符串值在字符串中首次出现的位置,没有出现,则该方法返回 -1 + let lookup = val.indexOf('.'); + // substring:不包含结束下标内容,substr:包含结束下标内容 + if (lookup >= 0) val = val.substring(0, lookup) + val.substr(lookup + 1, 2); + // 根据内容 val 的长度,截取返回对应大写 + unit = unit.substr(unit.length - val.length); + // 循环截取拼接大写 + for (let i = 0; i < val.length; i++) { + v += '零壹贰叁肆伍陆柒捌玖'.substr(val.substr(i, 1), 1) + unit.substr(i, 1); + } + // 正则处理 + v = v + .replace(/零角零分$/, '整') + .replace(/零[仟佰拾]/g, '零') + .replace(/零{2,}/g, '零') + .replace(/零([亿|万])/g, '$1') + .replace(/零+元/, '元') + .replace(/亿零{0,3}万/, '亿') + .replace(/^元/, '零元'); + // 返回结果 + return v; +} + +/** + * 手机号码 + * @param val 当前值字符串 + * @returns 返回 true: 手机号码正确 + */ +export function verifyPhone(val: string) { + // false: 手机号码不正确 + if (!/^((12[0-9])|(13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0|1,5-9]))\d{8}$/.test(val)) return false; + // true: 手机号码正确 + else return true; +} + +/** + * 国内电话号码 + * @param val 当前值字符串 + * @returns 返回 true: 国内电话号码正确 + */ +export function verifyTelPhone(val: string) { + // false: 国内电话号码不正确 + if (!/\d{3}-\d{8}|\d{4}-\d{7}/.test(val)) return false; + // true: 国内电话号码正确 + else return true; +} + +/** + * 登录账号 (字母开头,允许5-16字节,允许字母数字下划线) + * @param val 当前值字符串 + * @returns 返回 true: 登录账号正确 + */ +export function verifyAccount(val: string) { + // false: 登录账号不正确 + if (!/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/.test(val)) return false; + // true: 登录账号正确 + else return true; +} + +/** + * 密码 (以字母开头,长度在6~16之间,只能包含字母、数字和下划线) + * @param val 当前值字符串 + * @returns 返回 true: 密码正确 + */ +export function verifyPassword(val: string) { + // false: 密码不正确 + if (!/^[a-zA-Z]\w{5,15}$/.test(val)) return false; + // true: 密码正确 + else return true; +} + +/** + * 强密码 (字母+数字+特殊字符,长度在6-16之间) + * @param val 当前值字符串 + * @returns 返回 true: 强密码正确 + */ +export function verifyPasswordPowerful(val: string) { + // false: 强密码不正确 + if (!/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) + return false; + // true: 强密码正确 + else return true; +} + +/** + * 密码强度 + * @param val 当前值字符串 + * @description 弱:纯数字,纯字母,纯特殊字符 + * @description 中:字母+数字,字母+特殊字符,数字+特殊字符 + * @description 强:字母+数字+特殊字符 + * @returns 返回处理后的字符串:弱、中、强 + */ +export function verifyPasswordStrength(val: string) { + let v = ''; + // 弱:纯数字,纯字母,纯特殊字符 + if (/^(?:\d+|[a-zA-Z]+|[!@#$%^&\.*]+){6,16}$/.test(val)) v = '弱'; + // 中:字母+数字,字母+特殊字符,数字+特殊字符 + if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) v = '中'; + // 强:字母+数字+特殊字符 + if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) + v = '强'; + // 返回结果 + return v; +} + +/** + * IP地址 + * @param val 当前值字符串 + * @returns 返回 true: IP地址正确 + */ +export function verifyIPAddress(val: string) { + // false: IP地址不正确 + if ( + !/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/.test( + val + ) + ) + return false; + // true: IP地址正确 + else return true; +} + +/** + * 邮箱 + * @param val 当前值字符串 + * @returns 返回 true: 邮箱正确 + */ +export function verifyEmail(val: string) { + // false: 邮箱不正确 + if ( + !/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test( + val + ) + ) + return false; + // true: 邮箱正确 + else return true; +} + +/** + * 身份证 + * @param val 当前值字符串 + * @returns 返回 true: 身份证正确 + */ +export function verifyIdCard(val: string) { + // false: 身份证不正确 + if (!/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(val)) return false; + // true: 身份证正确 + else return true; +} + +/** + * 姓名 + * @param val 当前值字符串 + * @returns 返回 true: 姓名正确 + */ +export function verifyFullName(val: string) { + // false: 姓名不正确 + if (!/^[\u4e00-\u9fa5]{1,6}(·[\u4e00-\u9fa5]{1,6}){0,2}$/.test(val)) return false; + // true: 姓名正确 + else return true; +} + +/** + * 邮政编码 + * @param val 当前值字符串 + * @returns 返回 true: 邮政编码正确 + */ +export function verifyPostalCode(val: string) { + // false: 邮政编码不正确 + if (!/^[1-9][0-9]{5}$/.test(val)) return false; + // true: 邮政编码正确 + else return true; +} + +/** + * url 处理 + * @param val 当前值字符串 + * @returns 返回 true: url 正确 + */ +export function verifyUrl(val: string) { + // false: url不正确 + if ( + !/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( + val + ) + ) + return false; + // true: url正确 + else return true; +} + +/** + * 车牌号 + * @param val 当前值字符串 + * @returns 返回 true:车牌号正确 + */ +export function verifyCarNum(val: string) { + // false: 车牌号不正确 + if ( + !/^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/.test( + val + ) + ) + return false; + // true:车牌号正确 + else return true; +} diff --git a/src/utils/wartermark.ts b/src/utils/wartermark.ts new file mode 100644 index 0000000..b897ed1 --- /dev/null +++ b/src/utils/wartermark.ts @@ -0,0 +1,47 @@ +// 页面添加水印效果 +const setWatermark = (str: string) => { + const id = '1.23452384164.123412416'; + if (document.getElementById(id) !== null) document.body.removeChild(document.getElementById(id)); + const can = document.createElement('canvas'); + can.width = 200; + can.height = 130; + const cans: any = can.getContext('2d'); + cans.rotate((-20 * Math.PI) / 180); + cans.font = '12px Vedana'; + cans.fillStyle = 'rgba(200, 200, 200, 0.30)'; + cans.textBaseline = 'Middle'; + cans.fillText(str, can.width / 10, can.height / 2); + const div = document.createElement('div'); + div.id = id; + div.style.pointerEvents = 'none'; + div.style.top = '15px'; + div.style.left = '0px'; + div.style.position = 'fixed'; + div.style.zIndex = '10000000'; + div.style.width = `${document.documentElement.clientWidth}px`; + div.style.height = `${document.documentElement.clientHeight}px`; + div.style.background = `url(${can.toDataURL('image/png')}) left top repeat`; + document.body.appendChild(div); + return id; +}; + +/** + * 页面添加水印效果 + * @method set 设置水印 + * @method del 删除水印 + */ +const watermark = { + // 设置水印 + set: (str: string) => { + let id = setWatermark(str); + if (document.getElementById(id) === null) id = setWatermark(str); + }, + // 删除水印 + del: () => { + let id = '1.23452384164.123412416'; + if (document.getElementById(id) !== null) document.body.removeChild(document.getElementById(id)); + }, +}; + +// 导出方法 +export default watermark; diff --git a/src/views/bigUpload/component/editBigUpload.vue b/src/views/bigUpload/component/editBigUpload.vue new file mode 100644 index 0000000..d73b5df --- /dev/null +++ b/src/views/bigUpload/component/editBigUpload.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/src/views/bigUpload/index.vue b/src/views/bigUpload/index.vue new file mode 100644 index 0000000..1f9cb6b --- /dev/null +++ b/src/views/bigUpload/index.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/src/views/bigUpload/tableData.ts b/src/views/bigUpload/tableData.ts new file mode 100644 index 0000000..656ee59 --- /dev/null +++ b/src/views/bigUpload/tableData.ts @@ -0,0 +1,48 @@ +import {onMounted, reactive, ref} from "vue"; +import {getBigFileList as apiGetBigFileList} from "/@/api/system/bigFile"; +import {FormInstance} from "element-plus/es"; + +export default function () { + const tableData = ref([]) + let total = ref(0) + const queryParams = reactive({ + pageNum: 1, + pageSize: 10, + name: '', + orderBy:'created_at desc' + }) + const queryRef = ref(); + + const resetQuery = (formEl: FormInstance | undefined) => { + if (!formEl) return + formEl.resetFields() + getBigFileList() + } + + + const getBigFileList = async () => { + const result:any = await apiGetBigFileList(queryParams).then((res:any) => res.code === 0 ? res.data : {}) + tableData.value = Array.isArray(result.list) ? result.list : [] + total.value = result.total || 0 + } + + const resetBigFileList = async () => { + queryParams.pageNum = 1 + queryParams.pageSize = 10 + queryParams.name = '' + await getBigFileList() + } + + + onMounted(getBigFileList) + + return { + total, + queryParams, + tableData, + queryRef, + resetQuery, + getBigFileList, + resetBigFileList + } +} diff --git a/src/views/chart/chart.scss b/src/views/chart/chart.scss new file mode 100644 index 0000000..9ba92cb --- /dev/null +++ b/src/views/chart/chart.scss @@ -0,0 +1,434 @@ +.chart-scrollbar { + .chart-warp { + display: flex; + flex-direction: column; + height: 100%; + .chart-warp-bottom { + flex: 1; + overflow: hidden; + display: flex; + .big-data-down-left, + .big-data-down-right { + width: 30%; + display: flex; + flex-direction: column; + .flex-warp-item { + padding: 0 7.5px 15px 15px; + width: 100%; + height: 33.33%; + .flex-warp-item-box { + width: 100%; + height: 100%; + background: var(--el-color-white); + border: 1px solid var(--el-border-color-lighter); + border-radius: 4px; + display: flex; + flex-direction: column; + padding: 15px; + transition: all ease 0.3s; + &:hover { + box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%); + transition: all ease 0.3s; + } + .flex-title { + margin-bottom: 15px; + display: flex; + justify-content: space-between; + .flex-title-small { + font-size: 12px; + } + } + .flex-content { + flex: 1; + font-size: 12px; + } + .flex-content-overflow { + overflow: hidden; + } + } + } + } + .big-data-down-left { + color: var(--el-text-color-primary); + .sky { + display: flex; + align-items: center; + .sky-left { + font-size: 30px; + } + .sky-center { + flex: 1; + overflow: hidden; + padding: 0 10px; + font { + margin-right: 15px; + } + .span { + background: #22bc76; + border-radius: 2px; + padding: 0 5px; + color: var(--el-color-white); + } + } + .sky-right { + span { + font-size: 30px; + } + font { + font-size: 20px; + } + } + } + .sky-dd { + .sky-dl { + display: flex; + align-items: center; + height: 28px; + overflow: hidden; + div { + flex: 1; + overflow: hidden; + i { + font-size: 14px; + } + } + .tip { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + } + .sky-dl-first { + color: var(--el-color-primary); + } + } + .d-states { + display: flex; + .d-states-item { + flex: 1; + display: flex; + align-items: center; + overflow: hidden; + i { + font-size: 20px; + height: 33px; + width: 33px; + line-height: 33px; + text-align: center; + border-radius: 100%; + flex-shrink: 1; + color: var(--el-color-white); + display: flex; + align-items: center; + justify-content: center; + } + .i-bg1 { + background: #22bc76; + } + .i-bg2 { + background: #e2356d; + } + .i-bg3 { + background: #43bbef; + } + .d-states-flex { + overflow: hidden; + padding: 0 10px 0; + .d-states-item-label { + color: var(--el-color-primary); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + .d-states-item-value { + font-size: 14px; + text-align: center; + margin-top: 3px; + color: var(--el-color-primary); + } + } + } + } + .d-btn { + margin-top: 5px; + .d-btn-item { + border: 1px solid var(--el-color-primary); + display: flex; + width: 100%; + border-radius: 35px; + align-items: center; + padding: 5px; + margin-top: 15px; + cursor: pointer; + transition: all ease 0.3s; + color: var(--el-color-primary); + .d-btn-item-left { + font-size: 20px; + border: 1px solid var(--el-color-primary); + width: 25px; + height: 25px; + line-height: 25px; + border-radius: 100%; + text-align: center; + font-size: 14px; + } + .d-btn-item-center { + padding: 0 10px; + flex: 1; + } + .d-btn-item-eight { + text-align: right; + padding-right: 10px; + } + } + } + } + .big-data-down-center { + width: 40%; + display: flex; + flex-direction: column; + .big-data-down-center-one { + height: 66.67%; + padding: 0 7.5px 15px; + .big-data-down-center-one-content { + height: 100%; + background: var(--el-color-white); + padding: 15px; + border: 1px solid var(--el-border-color-lighter); + border-radius: 4px; + transition: all ease 0.3s; + &:hover { + box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%); + transition: all ease 0.3s; + } + } + } + .big-data-down-center-two { + padding: 0 7.5px 15px; + height: 33.33%; + .flex-warp-item-box { + width: 100%; + height: 100%; + background: var(--el-color-white); + display: flex; + flex-direction: column; + padding: 15px; + border: 1px solid var(--el-border-color-lighter); + border-radius: 4px; + transition: all ease 0.3s; + &:hover { + box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%); + transition: all ease 0.3s; + } + .flex-title { + margin-bottom: 15px; + color: var(--el-text-color-primary); + display: flex; + justify-content: space-between; + .flex-title-small { + font-size: 12px; + } + } + .flex-content { + flex: 1; + font-size: 12px; + display: flex; + height: calc(100% - 30px); + .flex-content-left { + display: flex; + flex-wrap: wrap; + width: 120px; + height: 100%; + .monitor-item { + width: 50%; + display: flex; + align-items: center; + .monitor-wave { + cursor: pointer; + width: 40px; + height: 40px; + position: relative; + background-color: var(--el-color-primary); + border-radius: 50%; + overflow: hidden; + text-align: center; + &::before, + &::after { + content: ''; + position: absolute; + left: 50%; + width: 40px; + height: 40px; + background: #f4f4f4; + animation: roateOne 10s linear infinite; + transform: translateX(-50%); + z-index: 1; + } + &::before { + bottom: 10px; + border-radius: 60%; + } + &::after { + bottom: 8px; + opacity: 0.7; + border-radius: 37%; + } + .monitor-z-index { + position: relative; + z-index: 2; + color: var(--el-color-primary); + display: flex; + align-items: center; + height: 100%; + justify-content: center; + } + } + @keyframes roateOne { + 0% { + transform: translate(-50%, 0) rotateZ(0deg); + } + 50% { + transform: translate(-50%, -2%) rotateZ(180deg); + } + 100% { + transform: translate(-50%, 0%) rotateZ(360deg); + } + } + .monitor-active { + background-color: #22bc76; + .monitor-z-index { + color: #22bc76; + } + } + } + } + .flex-content-right { + flex: 1; + } + } + } + } + } + .big-data-down-right { + .flex-warp-item { + padding: 0 15px 15px 7.5px; + .flex-title { + color: var(--el-text-color-primary); + } + .flex-content { + display: flex; + flex-direction: column; + .task { + display: flex; + height: 45px; + .task-item { + flex: 1; + color: var(--el-color-white); + display: flex; + justify-content: center; + .task-item-box { + position: relative; + width: 45px; + height: 45px; + overflow: hidden; + border-radius: 100%; + z-index: 0; + display: flex; + align-items: center; + flex-direction: column; + justify-content: center; + box-shadow: 0 10px 12px 0 rgba(0, 0, 0, 0.3); + &::before { + content: ''; + position: absolute; + z-index: -2; + left: -50%; + top: -50%; + width: 200%; + height: 200%; + background-repeat: no-repeat; + background-size: 50% 50%, 50% 50%; + background-position: 0 0, 100% 0, 100% 100%, 0 100%; + background-image: linear-gradient(#19d4ae, #19d4ae), linear-gradient(#5ab1ef, #5ab1ef), linear-gradient(#fa6e86, #fa6e86), + linear-gradient(#ffb980, #ffb980); + animation: rotate 2s linear infinite; + } + &::after { + content: ''; + position: absolute; + z-index: -1; + left: 1px; + top: 1px; + width: calc(100% - 2px); + height: calc(100% - 2px); + border-radius: 100%; + } + .task-item-value { + text-align: center; + font-size: 14px; + font-weight: bold; + } + .task-item-label { + text-align: center; + } + } + .task1 { + &::after { + background: #5492be; + } + } + .task2 { + &::after { + background: #43a177; + } + } + .task3 { + &::after { + background: #a76077; + } + } + } + .task-first-item { + flex-direction: column; + text-align: center; + color: var(--el-color-primary); + .task-first { + font-size: 20px; + } + } + } + .progress { + color: var(--el-text-color-primary); + display: flex; + flex-direction: column; + flex: 1; + justify-content: space-between; + margin-top: 15px; + .progress-item { + height: 33.33%; + display: flex; + align-items: center; + .progress-box { + flex: 1; + width: 100%; + margin-left: 10px; + :deep(.el-progress__text) { + color: var(--el-text-color-primary); + font-size: 12px !important; + text-align: right; + } + :deep(.el-progress-bar__outer) { + background-color: rgba(0, 0, 0, 0.1) !important; + } + :deep(.el-progress-bar) { + margin-right: -22px !important; + } + } + } + } + } + } + } + } + } +} diff --git a/src/views/chart/chart.ts b/src/views/chart/chart.ts new file mode 100644 index 0000000..6d10fd6 --- /dev/null +++ b/src/views/chart/chart.ts @@ -0,0 +1,59 @@ +/** + * sky 天气 + * @returns 返回模拟数据 + */ +export const skyList = [ + { + v1: '时间', + v2: '天气', + v3: '温度', + v5: '降水', + v7: '风力', + type: 'title', + }, + { + v1: '今天', + v2: 'ele-Sunny', + v3: '20°/26°', + v5: '50%', + v7: '13m/s', + }, + { + v1: '明天', + v2: 'ele-Lightning', + v3: '20°/26°', + v5: '50%', + v7: '13m/s', + }, +]; + +/** + * 当前设置状态 + * @returns 返回模拟数据 + */ +export const dBtnList = [ + { + v2: '阳光玫瑰种植', + v3: '126天', + v4: '设备在线', + }, +]; + +/** + * 当前设备监测 + * @returns 返回模拟数据 + */ +export const chartData4List = [ + { + label: '温度', + }, + { + label: '光照', + }, + { + label: '湿度', + }, + { + label: '风力', + }, +]; diff --git a/src/views/chart/head.vue b/src/views/chart/head.vue new file mode 100644 index 0000000..82842e8 --- /dev/null +++ b/src/views/chart/head.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/views/chart/index.vue b/src/views/chart/index.vue new file mode 100644 index 0000000..6e1c431 --- /dev/null +++ b/src/views/chart/index.vue @@ -0,0 +1,492 @@ + + + + + diff --git a/src/views/demo/map2.ts b/src/views/demo/map2.ts new file mode 100644 index 0000000..fcd7490 --- /dev/null +++ b/src/views/demo/map2.ts @@ -0,0 +1,16 @@ +import {defineComponent,h} from "vue"; + +export default defineComponent({ + name:"baiduMap", + props:{ + src:{ + type:String, + default:'', + } + }, + setup(prop){ + return ()=>{ + return h('script',{src:prop.src,type:'text/javascript'}) + } + }, +}) diff --git a/src/views/error/401.vue b/src/views/error/401.vue new file mode 100644 index 0000000..711fa25 --- /dev/null +++ b/src/views/error/401.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/views/error/404.vue b/src/views/error/404.vue new file mode 100644 index 0000000..3a7ce22 --- /dev/null +++ b/src/views/error/404.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/src/views/fun/clipboard/index.vue b/src/views/fun/clipboard/index.vue new file mode 100644 index 0000000..a92eed0 --- /dev/null +++ b/src/views/fun/clipboard/index.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/views/fun/codemirror/index.vue b/src/views/fun/codemirror/index.vue new file mode 100644 index 0000000..1e0385a --- /dev/null +++ b/src/views/fun/codemirror/index.vue @@ -0,0 +1,58 @@ + + + diff --git a/src/views/fun/countup/index.vue b/src/views/fun/countup/index.vue new file mode 100644 index 0000000..267570c --- /dev/null +++ b/src/views/fun/countup/index.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/src/views/fun/cropper/index.vue b/src/views/fun/cropper/index.vue new file mode 100644 index 0000000..83ebfc7 --- /dev/null +++ b/src/views/fun/cropper/index.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/src/views/fun/echartsMap/index.vue b/src/views/fun/echartsMap/index.vue new file mode 100644 index 0000000..633c673 --- /dev/null +++ b/src/views/fun/echartsMap/index.vue @@ -0,0 +1,141 @@ + + + diff --git a/src/views/fun/echartsMap/mock.ts b/src/views/fun/echartsMap/mock.ts new file mode 100644 index 0000000..16623c7 --- /dev/null +++ b/src/views/fun/echartsMap/mock.ts @@ -0,0 +1,387 @@ +// 地图模拟数据 +export const echartsMapList = [ + { name: '海门', value: 9 }, + { name: '鄂尔多斯', value: 12 }, + { name: '招远', value: 12 }, + { name: '舟山', value: 12 }, + { name: '齐齐哈尔', value: 14 }, + { name: '盐城', value: 15 }, + { name: '赤峰', value: 16 }, + { name: '青岛', value: 18 }, + { name: '乳山', value: 18 }, + { name: '金昌', value: 19 }, + { name: '泉州', value: 21 }, + { name: '莱西', value: 21 }, + { name: '日照', value: 21 }, + { name: '胶南', value: 22 }, + { name: '南通', value: 23 }, + { name: '拉萨', value: 24 }, + { name: '云浮', value: 24 }, + { name: '梅州', value: 25 }, + { name: '文登', value: 25 }, + { name: '上海', value: 25 }, + { name: '攀枝花', value: 25 }, + { name: '威海', value: 25 }, + { name: '承德', value: 25 }, + { name: '厦门', value: 26 }, + { name: '汕尾', value: 26 }, + { name: '潮州', value: 26 }, + { name: '丹东', value: 27 }, + { name: '太仓', value: 27 }, + { name: '曲靖', value: 27 }, + { name: '烟台', value: 28 }, + { name: '福州', value: 29 }, + { name: '瓦房店', value: 30 }, + { name: '即墨', value: 30 }, + { name: '抚顺', value: 31 }, + { name: '玉溪', value: 31 }, + { name: '张家口', value: 31 }, + { name: '阳泉', value: 31 }, + { name: '莱州', value: 32 }, + { name: '湖州', value: 32 }, + { name: '汕头', value: 32 }, + { name: '昆山', value: 33 }, + { name: '宁波', value: 33 }, + { name: '湛江', value: 33 }, + { name: '揭阳', value: 34 }, + { name: '荣成', value: 34 }, + { name: '连云港', value: 35 }, + { name: '葫芦岛', value: 35 }, + { name: '常熟', value: 36 }, + { name: '东莞', value: 36 }, + { name: '河源', value: 36 }, + { name: '淮安', value: 36 }, + { name: '泰州', value: 36 }, + { name: '南宁', value: 37 }, + { name: '营口', value: 37 }, + { name: '惠州', value: 37 }, + { name: '江阴', value: 37 }, + { name: '蓬莱', value: 37 }, + { name: '韶关', value: 38 }, + { name: '嘉峪关', value: 38 }, + { name: '广州', value: 38 }, + { name: '延安', value: 38 }, + { name: '太原', value: 39 }, + { name: '清远', value: 39 }, + { name: '中山', value: 39 }, + { name: '昆明', value: 39 }, + { name: '寿光', value: 40 }, + { name: '盘锦', value: 40 }, + { name: '长治', value: 41 }, + { name: '深圳', value: 360 }, + { name: '珠海', value: 42 }, + { name: '宿迁', value: 43 }, + { name: '咸阳', value: 43 }, + { name: '铜川', value: 44 }, + { name: '平度', value: 44 }, + { name: '佛山', value: 44 }, + { name: '海口', value: 44 }, + { name: '江门', value: 45 }, + { name: '章丘', value: 45 }, + { name: '肇庆', value: 46 }, + { name: '大连', value: 47 }, + { name: '临汾', value: 47 }, + { name: '吴江', value: 47 }, + { name: '石嘴山', value: 49 }, + { name: '沈阳', value: 50 }, + { name: '苏州', value: 50 }, + { name: '茂名', value: 50 }, + { name: '嘉兴', value: 51 }, + { name: '长春', value: 51 }, + { name: '胶州', value: 52 }, + { name: '银川', value: 52 }, + { name: '张家港', value: 52 }, + { name: '三门峡', value: 53 }, + { name: '锦州', value: 54 }, + { name: '南昌', value: 54 }, + { name: '柳州', value: 54 }, + { name: '三亚', value: 54 }, + { name: '自贡', value: 56 }, + { name: '吉林', value: 56 }, + { name: '阳江', value: 57 }, + { name: '泸州', value: 57 }, + { name: '西宁', value: 57 }, + { name: '宜宾', value: 58 }, + { name: '呼和浩特', value: 58 }, + { name: '成都', value: 58 }, + { name: '大同', value: 58 }, + { name: '镇江', value: 59 }, + { name: '桂林', value: 59 }, + { name: '张家界', value: 59 }, + { name: '宜兴', value: 59 }, + { name: '北海', value: 60 }, + { name: '西安', value: 61 }, + { name: '金坛', value: 62 }, + { name: '东营', value: 62 }, + { name: '牡丹江', value: 63 }, + { name: '遵义', value: 63 }, + { name: '绍兴', value: 63 }, + { name: '扬州', value: 64 }, + { name: '常州', value: 64 }, + { name: '潍坊', value: 65 }, + { name: '重庆', value: 66 }, + { name: '台州', value: 67 }, + { name: '南京', value: 67 }, + { name: '滨州', value: 70 }, + { name: '贵阳', value: 71 }, + { name: '无锡', value: 71 }, + { name: '本溪', value: 71 }, + { name: '克拉玛依', value: 72 }, + { name: '渭南', value: 72 }, + { name: '马鞍山', value: 72 }, + { name: '宝鸡', value: 72 }, + { name: '焦作', value: 75 }, + { name: '句容', value: 75 }, + { name: '北京', value: 79 }, + { name: '徐州', value: 79 }, + { name: '衡水', value: 80 }, + { name: '包头', value: 80 }, + { name: '绵阳', value: 80 }, + { name: '乌鲁木齐', value: 84 }, + { name: '枣庄', value: 84 }, + { name: '杭州', value: 84 }, + { name: '淄博', value: 85 }, + { name: '鞍山', value: 86 }, + { name: '溧阳', value: 86 }, + { name: '库尔勒', value: 86 }, + { name: '安阳', value: 90 }, + { name: '开封', value: 90 }, + { name: '济南', value: 92 }, + { name: '德阳', value: 93 }, + { name: '温州', value: 95 }, + { name: '九江', value: 96 }, + { name: '邯郸', value: 98 }, + { name: '临安', value: 99 }, + { name: '兰州', value: 99 }, + { name: '沧州', value: 100 }, + { name: '临沂', value: 103 }, + { name: '南充', value: 104 }, + { name: '天津', value: 105 }, + { name: '富阳', value: 106 }, + { name: '泰安', value: 112 }, + { name: '诸暨', value: 112 }, + { name: '郑州', value: 113 }, + { name: '哈尔滨', value: 114 }, + { name: '聊城', value: 116 }, + { name: '芜湖', value: 117 }, + { name: '唐山', value: 119 }, + { name: '平顶山', value: 119 }, + { name: '邢台', value: 119 }, + { name: '德州', value: 120 }, + { name: '济宁', value: 120 }, + { name: '荆州', value: 127 }, + { name: '宜昌', value: 130 }, + { name: '义乌', value: 132 }, + { name: '丽水', value: 133 }, + { name: '洛阳', value: 134 }, + { name: '秦皇岛', value: 136 }, + { name: '株洲', value: 143 }, + { name: '石家庄', value: 147 }, + { name: '莱芜', value: 148 }, + { name: '常德', value: 152 }, + { name: '保定', value: 153 }, + { name: '湘潭', value: 154 }, + { name: '金华', value: 157 }, + { name: '岳阳', value: 169 }, + { name: '长沙', value: 175 }, + { name: '衢州', value: 177 }, + { name: '廊坊', value: 93 }, + { name: '菏泽', value: 194 }, + { name: '合肥', value: 229 }, + { name: '武汉', value: 273 }, + { name: '大庆', value: 279 }, +]; + +// 地图经纬度数据 +export const echartsMapData = { + 海门: [121.15, 31.89], + 鄂尔多斯: [109.781327, 39.608266], + 招远: [120.38, 37.35], + 舟山: [122.207216, 29.985295], + 齐齐哈尔: [123.97, 47.33], + 盐城: [120.13, 33.38], + 赤峰: [118.87, 42.28], + 青岛: [120.33, 36.07], + 乳山: [121.52, 36.89], + 金昌: [102.188043, 38.520089], + 泉州: [118.58, 24.93], + 莱西: [120.53, 36.86], + 日照: [119.46, 35.42], + 胶南: [119.97, 35.88], + 南通: [121.05, 32.08], + 拉萨: [91.11, 29.97], + 云浮: [112.02, 22.93], + 梅州: [116.1, 24.55], + 文登: [122.05, 37.2], + 上海: [121.48, 31.22], + 攀枝花: [101.718637, 26.582347], + 威海: [122.1, 37.5], + 承德: [117.93, 40.97], + 厦门: [118.1, 24.46], + 汕尾: [115.375279, 22.786211], + 潮州: [116.63, 23.68], + 丹东: [124.37, 40.13], + 太仓: [121.1, 31.45], + 曲靖: [103.79, 25.51], + 烟台: [121.39, 37.52], + 福州: [119.3, 26.08], + 瓦房店: [121.979603, 39.627114], + 即墨: [120.45, 36.38], + 抚顺: [123.97, 41.97], + 玉溪: [102.52, 24.35], + 张家口: [114.87, 40.82], + 阳泉: [113.57, 37.85], + 莱州: [119.942327, 37.177017], + 湖州: [120.1, 30.86], + 汕头: [116.69, 23.39], + 昆山: [120.95, 31.39], + 宁波: [121.56, 29.86], + 湛江: [110.359377, 21.270708], + 揭阳: [116.35, 23.55], + 荣成: [122.41, 37.16], + 连云港: [119.16, 34.59], + 葫芦岛: [120.836932, 40.711052], + 常熟: [120.74, 31.64], + 东莞: [113.75, 23.04], + 河源: [114.68, 23.73], + 淮安: [119.15, 33.5], + 泰州: [119.9, 32.49], + 南宁: [108.33, 22.84], + 营口: [122.18, 40.65], + 惠州: [114.4, 23.09], + 江阴: [120.26, 31.91], + 蓬莱: [120.75, 37.8], + 韶关: [113.62, 24.84], + 嘉峪关: [98.289152, 39.77313], + 广州: [113.23, 23.16], + 延安: [109.47, 36.6], + 太原: [112.53, 37.87], + 清远: [113.01, 23.7], + 中山: [113.38, 22.52], + 昆明: [102.73, 25.04], + 寿光: [118.73, 36.86], + 盘锦: [122.070714, 41.119997], + 长治: [113.08, 36.18], + 深圳: [114.07, 22.62], + 珠海: [113.52, 22.3], + 宿迁: [118.3, 33.96], + 咸阳: [108.72, 34.36], + 铜川: [109.11, 35.09], + 平度: [119.97, 36.77], + 佛山: [113.11, 23.05], + 海口: [110.35, 20.02], + 江门: [113.06, 22.61], + 章丘: [117.53, 36.72], + 肇庆: [112.44, 23.05], + 大连: [121.62, 38.92], + 临汾: [111.5, 36.08], + 吴江: [120.63, 31.16], + 石嘴山: [106.39, 39.04], + 沈阳: [123.38, 41.8], + 苏州: [120.62, 31.32], + 茂名: [110.88, 21.68], + 嘉兴: [120.76, 30.77], + 长春: [125.35, 43.88], + 胶州: [120.03336, 36.264622], + 银川: [106.27, 38.47], + 张家港: [120.555821, 31.875428], + 三门峡: [111.19, 34.76], + 锦州: [121.15, 41.13], + 南昌: [115.89, 28.68], + 柳州: [109.4, 24.33], + 三亚: [109.511909, 18.252847], + 自贡: [104.778442, 29.33903], + 吉林: [126.57, 43.87], + 阳江: [111.95, 21.85], + 泸州: [105.39, 28.91], + 西宁: [101.74, 36.56], + 宜宾: [104.56, 29.77], + 呼和浩特: [111.65, 40.82], + 成都: [104.06, 30.67], + 大同: [113.3, 40.12], + 镇江: [119.44, 32.2], + 桂林: [110.28, 25.29], + 张家界: [110.479191, 29.117096], + 宜兴: [119.82, 31.36], + 北海: [109.12, 21.49], + 西安: [108.95, 34.27], + 金坛: [119.56, 31.74], + 东营: [118.49, 37.46], + 牡丹江: [129.58, 44.6], + 遵义: [106.9, 27.7], + 绍兴: [120.58, 30.01], + 扬州: [119.42, 32.39], + 常州: [119.95, 31.79], + 潍坊: [119.1, 36.62], + 重庆: [106.54, 29.59], + 台州: [121.420757, 28.656386], + 南京: [118.78, 32.04], + 滨州: [118.03, 37.36], + 贵阳: [106.71, 26.57], + 无锡: [120.29, 31.59], + 本溪: [123.73, 41.3], + 克拉玛依: [84.77, 45.59], + 渭南: [109.5, 34.52], + 马鞍山: [118.48, 31.56], + 宝鸡: [107.15, 34.38], + 焦作: [113.21, 35.24], + 句容: [119.16, 31.95], + 北京: [116.46, 39.92], + 徐州: [117.2, 34.26], + 衡水: [115.72, 37.72], + 包头: [110, 40.58], + 绵阳: [104.73, 31.48], + 乌鲁木齐: [87.68, 43.77], + 枣庄: [117.57, 34.86], + 杭州: [120.19, 30.26], + 淄博: [118.05, 36.78], + 鞍山: [122.85, 41.12], + 溧阳: [119.48, 31.43], + 库尔勒: [86.06, 41.68], + 安阳: [114.35, 36.1], + 开封: [114.35, 34.79], + 济南: [117, 36.65], + 德阳: [104.37, 31.13], + 温州: [120.65, 28.01], + 九江: [115.97, 29.71], + 邯郸: [114.47, 36.6], + 临安: [119.72, 30.23], + 兰州: [103.73, 36.03], + 沧州: [116.83, 38.33], + 临沂: [118.35, 35.05], + 南充: [106.110698, 30.837793], + 天津: [117.2, 39.13], + 富阳: [119.95, 30.07], + 泰安: [117.13, 36.18], + 诸暨: [120.23, 29.71], + 郑州: [113.65, 34.76], + 哈尔滨: [126.63, 45.75], + 聊城: [115.97, 36.45], + 芜湖: [118.38, 31.33], + 唐山: [118.02, 39.63], + 平顶山: [113.29, 33.75], + 邢台: [114.48, 37.05], + 德州: [116.29, 37.45], + 济宁: [116.59, 35.38], + 荆州: [112.239741, 30.335165], + 宜昌: [111.3, 30.7], + 义乌: [120.06, 29.32], + 丽水: [119.92, 28.45], + 洛阳: [112.44, 34.7], + 秦皇岛: [119.57, 39.95], + 株洲: [113.16, 27.83], + 石家庄: [114.48, 38.03], + 莱芜: [117.67, 36.19], + 常德: [111.69, 29.05], + 保定: [115.48, 38.85], + 湘潭: [112.91, 27.87], + 金华: [119.64, 29.12], + 岳阳: [113.09, 29.37], + 长沙: [113, 28.21], + 衢州: [118.88, 28.97], + 廊坊: [116.7, 39.53], + 菏泽: [115.480656, 35.23375], + 合肥: [117.27, 31.86], + 武汉: [114.31, 30.52], + 大庆: [125.03, 46.58], +}; diff --git a/src/views/fun/gridLayout/index.vue b/src/views/fun/gridLayout/index.vue new file mode 100644 index 0000000..2a8c666 --- /dev/null +++ b/src/views/fun/gridLayout/index.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/src/views/fun/printJs/index.vue b/src/views/fun/printJs/index.vue new file mode 100644 index 0000000..0340612 --- /dev/null +++ b/src/views/fun/printJs/index.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/views/fun/qrcode/index.vue b/src/views/fun/qrcode/index.vue new file mode 100644 index 0000000..e4a36e5 --- /dev/null +++ b/src/views/fun/qrcode/index.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/src/views/fun/splitpanes/index.vue b/src/views/fun/splitpanes/index.vue new file mode 100644 index 0000000..eb70c61 --- /dev/null +++ b/src/views/fun/splitpanes/index.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/views/fun/tagsView/index.vue b/src/views/fun/tagsView/index.vue new file mode 100644 index 0000000..7c65fc6 --- /dev/null +++ b/src/views/fun/tagsView/index.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/views/fun/ueditor/index.vue b/src/views/fun/ueditor/index.vue new file mode 100644 index 0000000..09791cd --- /dev/null +++ b/src/views/fun/ueditor/index.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/views/home/index.vue b/src/views/home/index.vue new file mode 100644 index 0000000..6475fba --- /dev/null +++ b/src/views/home/index.vue @@ -0,0 +1,643 @@ + + + + + diff --git a/src/views/login/component/account.vue b/src/views/login/component/account.vue new file mode 100644 index 0000000..0b234e3 --- /dev/null +++ b/src/views/login/component/account.vue @@ -0,0 +1,258 @@ + + + + + + diff --git a/src/views/login/component/mobile.vue b/src/views/login/component/mobile.vue new file mode 100644 index 0000000..9664bb0 --- /dev/null +++ b/src/views/login/component/mobile.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/views/login/component/scan.vue b/src/views/login/component/scan.vue new file mode 100644 index 0000000..27a93f9 --- /dev/null +++ b/src/views/login/component/scan.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/src/views/login/index.vue b/src/views/login/index.vue new file mode 100644 index 0000000..9361370 --- /dev/null +++ b/src/views/login/index.vue @@ -0,0 +1,201 @@ + + + + + + diff --git a/src/views/make/noticeBar/index.vue b/src/views/make/noticeBar/index.vue new file mode 100644 index 0000000..2bb8730 --- /dev/null +++ b/src/views/make/noticeBar/index.vue @@ -0,0 +1,164 @@ + + + diff --git a/src/views/make/selector/index.vue b/src/views/make/selector/index.vue new file mode 100644 index 0000000..db7c34a --- /dev/null +++ b/src/views/make/selector/index.vue @@ -0,0 +1,126 @@ + + + diff --git a/src/views/make/svgDemo/index.vue b/src/views/make/svgDemo/index.vue new file mode 100644 index 0000000..36fd320 --- /dev/null +++ b/src/views/make/svgDemo/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/views/menu/menu1/menu11/index.vue b/src/views/menu/menu1/menu11/index.vue new file mode 100644 index 0000000..944beb8 --- /dev/null +++ b/src/views/menu/menu1/menu11/index.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/views/menu/menu1/menu12/menu121/index.vue b/src/views/menu/menu1/menu12/menu121/index.vue new file mode 100644 index 0000000..791130b --- /dev/null +++ b/src/views/menu/menu1/menu12/menu121/index.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/views/menu/menu1/menu12/menu122/index.vue b/src/views/menu/menu1/menu12/menu122/index.vue new file mode 100644 index 0000000..3db8096 --- /dev/null +++ b/src/views/menu/menu1/menu12/menu122/index.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/views/menu/menu1/menu13/index.vue b/src/views/menu/menu1/menu13/index.vue new file mode 100644 index 0000000..f984dcc --- /dev/null +++ b/src/views/menu/menu1/menu13/index.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/views/menu/menu2/index.vue b/src/views/menu/menu2/index.vue new file mode 100644 index 0000000..0081506 --- /dev/null +++ b/src/views/menu/menu2/index.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/views/pages/awesome/index.vue b/src/views/pages/awesome/index.vue new file mode 100644 index 0000000..52b53bb --- /dev/null +++ b/src/views/pages/awesome/index.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/views/pages/drag/index.vue b/src/views/pages/drag/index.vue new file mode 100644 index 0000000..1b79498 --- /dev/null +++ b/src/views/pages/drag/index.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/src/views/pages/dynamicForm/index.vue b/src/views/pages/dynamicForm/index.vue new file mode 100644 index 0000000..d6a7a68 --- /dev/null +++ b/src/views/pages/dynamicForm/index.vue @@ -0,0 +1,204 @@ + + + diff --git a/src/views/pages/dynamicForm/mock.ts b/src/views/pages/dynamicForm/mock.ts new file mode 100644 index 0000000..2293fe9 --- /dev/null +++ b/src/views/pages/dynamicForm/mock.ts @@ -0,0 +1,119 @@ +// 表单数据选项(自行扩展) +export const formData = [ + { + label: '姓名', + prop: 'name', + placeholder: '请输入姓名', + clearable: true, + disabled: false, + required: true, + type: 'input', + i18n: false, + i18nText: '', + isShow: true, + xs: 24, + sm: 12, + md: 8, + lg: 6, + xl: 4, + }, + { + label: '邮箱', + prop: 'email', + placeholder: '请输入用户邮箱', + clearable: true, + disabled: false, + required: true, + type: 'input', + i18n: false, + i18nText: '', + isShow: true, + xs: 24, + sm: 12, + md: 8, + lg: 6, + xl: 4, + }, + { + label: '登陆时间', + prop: 'autograph', + placeholder: '选择时间', + clearable: true, + disabled: false, + required: true, + type: 'date', + i18n: false, + i18nText: '', + isShow: true, + xs: 24, + sm: 12, + md: 8, + lg: 6, + xl: 4, + }, + { + label: '职务', + prop: 'occupation', + placeholder: '请选择职务', + clearable: true, + disabled: false, + required: true, + type: 'select', + i18n: false, + i18nText: '', + options: [ + { + label: '计算机 / 互联网 / 通信', + value: '1', + }, + { + label: '生产 / 工艺 / 制造', + value: '2', + }, + { + label: '医疗 / 护理 / 制药', + value: '3', + }, + ], + isShow: true, + xs: 24, + sm: 12, + md: 8, + lg: 6, + xl: 4, + }, + { + label: '', + prop: '', + placeholder: '', + clearable: true, + disabled: false, + required: true, + type: '', + i18n: false, + i18nText: '', + isShow: true, + xs: 24, + sm: 24, + md: 24, + lg: 24, + xl: 24, + }, + { + label: '备注', + prop: 'remarks', + placeholder: '请输入', + clearable: true, + disabled: false, + required: true, + type: 'textarea', + i18n: false, + i18nText: '', + isShow: true, + xs: 24, + sm: 24, + md: 24, + lg: 24, + xl: 24, + }, +]; diff --git a/src/views/pages/element/index.vue b/src/views/pages/element/index.vue new file mode 100644 index 0000000..0bb2454 --- /dev/null +++ b/src/views/pages/element/index.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/views/pages/filtering/details.vue b/src/views/pages/filtering/details.vue new file mode 100644 index 0000000..a2e5417 --- /dev/null +++ b/src/views/pages/filtering/details.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/views/pages/filtering/details1.vue b/src/views/pages/filtering/details1.vue new file mode 100644 index 0000000..2fde1b4 --- /dev/null +++ b/src/views/pages/filtering/details1.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/views/pages/filtering/index.vue b/src/views/pages/filtering/index.vue new file mode 100644 index 0000000..82ea3fd --- /dev/null +++ b/src/views/pages/filtering/index.vue @@ -0,0 +1,355 @@ + + + + + diff --git a/src/views/pages/filtering/mock.ts b/src/views/pages/filtering/mock.ts new file mode 100644 index 0000000..22e0f38 --- /dev/null +++ b/src/views/pages/filtering/mock.ts @@ -0,0 +1,201 @@ +// 导航数据 +export const filtering = [ + { + title: '权限', + isMore: false, + isShowMore: false, + id: 0, + children: [ + { + id: '01', + label: '全部', + active: true, + }, + { + id: '02', + label: '普通用户', + active: false, + }, + { + id: '03', + label: '管理员', + active: false, + }, + ], + }, + { + title: '布局', + isMore: false, + isShowMore: false, + id: 1, + children: [ + { + id: 11, + label: '全部', + active: true, + }, + { + id: 12, + label: '默认', + active: false, + }, + { + id: 13, + label: '经典', + active: false, + }, + { + id: 14, + label: '横向', + active: false, + }, + { + id: 15, + label: '分栏', + active: false, + }, + ], + }, + { + title: '配置', + isMore: false, + isShowMore: false, + id: 2, + children: [ + { + id: 21, + label: '全部', + active: true, + }, + { + id: 22, + label: '开启 Breadcrumb', + active: false, + }, + { + id: 23, + label: '开启 Tags-View', + active: false, + }, + { + id: 24, + label: '固定 Header', + active: false, + }, + { + id: 25, + label: '侧边栏 Logo', + active: false, + }, + { + id: 26, + label: '开启折叠 NavMenu', + active: false, + }, + { + id: 27, + label: '开启一个 NavMenu 展开', + active: false, + }, + { + id: 28, + label: '登录用户头像', + active: false, + }, + ], + }, +]; + +// 列表数据 +export const filterList = [ + { + img: 'http://news.sznews.com/pic/2020-08/14/9d9c9a60-f0af-41aa-b617-683b07c87642.jpg', + title: '嘉陵江2020年第1号洪水”在嘉陵江支流涪江形成', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 1, + }, + { + img: 'http://www.sznews.com/news/pic/2020-08/13/0ea47d3c-feb9-4bd7-8597-a8a373aa6340c6ec12c7-3b33-4528-91a6-85ec8ca1df67_watermark.png', + title: '让《民法典》走近群众 盐田街道开展人民调解宣传活动', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 2, + }, + { + img: 'http://www.sznews.com/photo/pic/2020-08/12/a08d6eb0-1d53-4f76-a313-ad3e5d701f98.jpg', + title: '记者手记:可可西里,“挪”向“藏羚羊大产房”的14个半小时', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 3, + }, + { + img: 'http://www.sznews.com/photo/pic/2020-08/11/43cc0e14-9bca-45b9-9a8b-342e09d6a4c7.jpg', + title: '以优异成绩庆祝深圳经济特区建立40周年', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 4, + }, + { + img: 'http://www.sznews.com/photo/pic/2020-08/11/a4dc322b-68ec-40e6-8906-3124142c3e49.jpg', + title: '草原上的“太阳姑娘”', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 5, + }, + { + img: 'http://www.sznews.com/zhuanti/pic/2020-08/07/57f087b4-4812-46cc-adb9-ead73621284e.png', + title: '奇观天下|带你走进非洲野生动物观光第一目的地', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 6, + }, + { + img: 'http://news.sznews.com/pic/2020-09/02/t2_(101X54X600X335)7cd39301-d9cf-45f1-91c3-9575b1e5ce0e.jpg.2', + title: '五角大楼发布“中国军力报告” 华春莹: 罔顾事实,充满偏见', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 7, + }, + { + img: 'http://news.sznews.com/pic/2020-09/02/b8b41d9c-0508-4498-8d37-6e597493769f.jpg', + title: '最新地铁消息汇总:4号线北延、2号线三期、8号线一期等今年通车', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 8, + }, + { + img: 'http://www.sznews.com/photo/pic/2020-08/10/1635374c-f4d6-475c-ac47-1334176f365d.png', + title: '9月1日深圳新增5例无症状感染者!钟南山这段话冲上热搜!', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 9, + }, + { + img: 'http://www.sznews.com/news/pic/2020-08/13/646e5458-92b7-4636-9940-9b0799babfe1.png', + title: '全能“小福宝” 为文明社区建设添砖加瓦', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 10, + }, +]; diff --git a/src/views/pages/formAdapt/index.vue b/src/views/pages/formAdapt/index.vue new file mode 100644 index 0000000..3bbfe04 --- /dev/null +++ b/src/views/pages/formAdapt/index.vue @@ -0,0 +1,114 @@ + + + diff --git a/src/views/pages/formI18n/index.vue b/src/views/pages/formI18n/index.vue new file mode 100644 index 0000000..b9fe6b8 --- /dev/null +++ b/src/views/pages/formI18n/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/views/pages/formRules/component/formRulesOne.vue b/src/views/pages/formRules/component/formRulesOne.vue new file mode 100644 index 0000000..ff9e568 --- /dev/null +++ b/src/views/pages/formRules/component/formRulesOne.vue @@ -0,0 +1,68 @@ + + + diff --git a/src/views/pages/formRules/component/formRulesThree.vue b/src/views/pages/formRules/component/formRulesThree.vue new file mode 100644 index 0000000..145aed4 --- /dev/null +++ b/src/views/pages/formRules/component/formRulesThree.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/views/pages/formRules/component/formRulesTwo.vue b/src/views/pages/formRules/component/formRulesTwo.vue new file mode 100644 index 0000000..fcb0604 --- /dev/null +++ b/src/views/pages/formRules/component/formRulesTwo.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/views/pages/formRules/index.vue b/src/views/pages/formRules/index.vue new file mode 100644 index 0000000..9c24343 --- /dev/null +++ b/src/views/pages/formRules/index.vue @@ -0,0 +1,80 @@ + + + diff --git a/src/views/pages/iocnfont/index.vue b/src/views/pages/iocnfont/index.vue new file mode 100644 index 0000000..48a44f9 --- /dev/null +++ b/src/views/pages/iocnfont/index.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/views/pages/lazyImg/index.vue b/src/views/pages/lazyImg/index.vue new file mode 100644 index 0000000..ad63f8a --- /dev/null +++ b/src/views/pages/lazyImg/index.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/src/views/pages/lazyImg/mock.ts b/src/views/pages/lazyImg/mock.ts new file mode 100644 index 0000000..4eb3d29 --- /dev/null +++ b/src/views/pages/lazyImg/mock.ts @@ -0,0 +1,313 @@ +// 列表数据 +export const filterList = [ + { + img: 'https://news.sznews.com/pic/2021-03/09/e37326cc-4583-48f3-aa00-ecc2392d319d.jpg', + title: '36分钟,深圳平均通勤时间出炉!GDP10强城市中仅输杭州', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 1, + loading: true, + }, + { + img: 'http://news.sznews.com/pic/2021-03/09/78cf72b6-e2d9-459d-a368-470414a027f4679cf4ea-26fa-48c8-9fee-c2d092a91400.png', + title: '为爱而动,“红色鹊桥”三八妇女节交友联谊活动助力深圳女孩脱单', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 2, + loading: true, + }, + { + img: 'http://news.sznews.com/pic/2021-03/09/1faf3c6e-1250-4e6b-b072-4a331553e027.jpg', + title: '粤桂协作“背水一战” 解决广西大化县3.7万人饮水难题', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 3, + loading: true, + }, + { + img: 'https://news.sznews.com/pic/2021-03/09/9fcf6dd4-1e80-4497-bdc9-83dc7246d170.jpg.2', + title: '城镇就业女性平均薪酬6847元 女性职场渗透率提升', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 4, + loading: true, + }, + { + img: 'https://news.sznews.com/pic/2021-03/09/1bd78227-4126-4a43-bdf6-48ead6edd1bf.jpg.2', + title: '深圳:实现“从0到1”源头创新,推进大湾区综合性国家科学中心建设!', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 5, + loading: true, + }, + { + img: 'http://news.sznews.com/pic/2021-03/08/9ea943a3-3ae8-4f49-8296-711ec36ef8c6_watermark.png', + title: '煖声音第126期|愿你有诗酒趁年华的洒脱,也有岁月沉淀后的坚定从容', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 6, + loading: true, + }, + { + img: 'https://news.sznews.com/pic/2021-03/08/a95ba232-1422-4f7e-b85f-c61d486c8659.jpg.2', + title: '姐妹们一起来吐槽,最不能接受男人的缺点!', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 7, + loading: true, + }, + { + img: 'http://news.sznews.com/pic/2021-03/08/76816bf0-3899-4c7e-bc6e-079b5ba8725e.jpg', + title: '民生小事 | 手机遗落出租车 热心民警帮找回', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 8, + loading: true, + }, + { + img: 'https://news.sznews.com/pic/2021-03/08/28ed70d4-71f5-4abb-bf7b-0294bece9e43.jpg.2', + title: '“十三五”:深圳交上靓丽答卷 发展动力加快转换', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 9, + loading: true, + }, + { + img: 'http://news.sznews.com/pic/2021-03/05/d13ae31f-fd45-431a-b48e-c5895bbc193e.png', + title: '深圳湾公园一女子落水,三名男子接力及时施救', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 10, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210704/653/w930h523/20210704/d5d2-krwipas6444058.jpg', + title: '36分钟,深圳平均通勤时间出炉!GDP10强城市中仅输杭州', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 1, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210704/766/w930h636/20210704/b1ae-krwipas6332914.jpg', + title: '为爱而动,“红色鹊桥”三八妇女节交友联谊活动助力深圳女孩脱单', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 2, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210704/750/w930h620/20210704/2886-krwipas6264821.jpg', + title: '粤桂协作“背水一战” 解决广西大化县3.7万人饮水难题', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 3, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210704/750/w930h620/20210704/767c-krwipas6387862.jpg', + title: '城镇就业女性平均薪酬6847元 女性职场渗透率提升', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 4, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210704/111/w1024h687/20210704/1f65-krwipas5871436.jpg', + title: '盛夏的那考河湿地公园!', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 5, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210704/657/w930h527/20210704/7eae-krwipas5866609.jpg', + title: '煖声音第126期|愿你有诗酒趁年华的洒脱,也有岁月沉淀后的坚定从容', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 6, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210703/760/w930h630/20210703/124e-krwipas5596390.jpg', + title: '姐妹们一起来吐槽,最不能接受男人的缺点!', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 7, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210703/27/w930h697/20210703/9630-krwipas5514972.jpg', + title: '民生小事 | 手机遗落出租车 热心民警帮找回', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 8, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210703/750/w930h620/20210703/2fe3-krwipas5388050.jpg', + title: '“十三五”:深圳交上靓丽答卷 发展动力加快转换', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 9, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210703/724/w930h594/20210703/98b6-krwipas5234060.jpg', + title: '深圳湾公园一女子落水,三名男子接力及时施救', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 10, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210703/750/w930h620/20210703/f765-krwipas5194727.jpg', + title: '36分钟,深圳平均通勤时间出炉!GDP10强城市中仅输杭州', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 1, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210702/750/w930h620/20210702/5dde-krwipas4724976.jpg', + title: '为爱而动,“红色鹊桥”三八妇女节交友联谊活动助力深圳女孩脱单', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 2, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210702/750/w930h620/20210702/f45e-krwipas4566804.jpg', + title: '粤桂协作“背水一战” 解决广西大化县3.7万人饮水难题', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 3, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210702/750/w930h620/20210702/5579-krwipas4551382.jpg', + title: '城镇就业女性平均薪酬6847元 女性职场渗透率提升', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 4, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210702/750/w930h620/20210702/7c75-krwipas4543661.jpg', + title: '深圳:实现“从0到1”源头创新,推进大湾区综合性国家科学中心建设!', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 5, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210702/653/w930h523/20210702/ece2-krwipas4411140.jpg', + title: '煖声音第126期|愿你有诗酒趁年华的洒脱,也有岁月沉淀后的坚定从容', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 6, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210702/750/w930h620/20210702/f5c2-krwipas4215211.jpg', + title: '姐妹们一起来吐槽,最不能接受男人的缺点!', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 7, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210701/720/w930h590/20210701/eabc-krwipas3509204.jpg', + title: '民生小事 | 手机遗落出租车 热心民警帮找回', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 8, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210701/797/w930h667/20210701/4667-krwipas3365057.jpg', + title: '“十三五”:深圳交上靓丽答卷 发展动力加快转换', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 9, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210701/750/w930h620/20210701/baea-krwipas2976622.jpg', + title: '民众前往中共一大纪念馆参观', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 10, + loading: true, + }, + { + img: 'http://z0.sinaimg.cn/auto/resize?size=235_156&img=http://n.sinaimg.cn/spider20210630/617/w850h567/20210630/5c96-krwipas1819108.jpg', + title: '延吉灯光秀美轮美奂 市民徜徉璀璨夜景', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 10, + loading: true, + }, +]; diff --git a/src/views/pages/listAdapt/index.vue b/src/views/pages/listAdapt/index.vue new file mode 100644 index 0000000..15e27bc --- /dev/null +++ b/src/views/pages/listAdapt/index.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/src/views/pages/listAdapt/mock.ts b/src/views/pages/listAdapt/mock.ts new file mode 100644 index 0000000..a31e9e3 --- /dev/null +++ b/src/views/pages/listAdapt/mock.ts @@ -0,0 +1,93 @@ +// 列表数据 +export const filterList = [ + { + img: 'https://news.sznews.com/pic/2021-03/09/e37326cc-4583-48f3-aa00-ecc2392d319d.jpg', + title: '36分钟,深圳平均通勤时间出炉!GDP10强城市中仅输杭州', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 1, + }, + { + img: 'http://news.sznews.com/pic/2021-03/09/78cf72b6-e2d9-459d-a368-470414a027f4679cf4ea-26fa-48c8-9fee-c2d092a91400.png', + title: '为爱而动,“红色鹊桥”三八妇女节交友联谊活动助力深圳女孩脱单', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 2, + }, + { + img: 'http://news.sznews.com/pic/2021-03/09/1faf3c6e-1250-4e6b-b072-4a331553e027.jpg', + title: '粤桂协作“背水一战” 解决广西大化县3.7万人饮水难题', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 3, + }, + { + img: 'https://news.sznews.com/pic/2021-03/09/9fcf6dd4-1e80-4497-bdc9-83dc7246d170.jpg.2', + title: '城镇就业女性平均薪酬6847元 女性职场渗透率提升', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 4, + }, + { + img: 'https://news.sznews.com/pic/2021-03/09/1bd78227-4126-4a43-bdf6-48ead6edd1bf.jpg.2', + title: '深圳:实现“从0到1”源头创新,推进大湾区综合性国家科学中心建设!', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 5, + }, + { + img: 'http://news.sznews.com/pic/2021-03/08/9ea943a3-3ae8-4f49-8296-711ec36ef8c6_watermark.png', + title: '煖声音第126期|愿你有诗酒趁年华的洒脱,也有岁月沉淀后的坚定从容', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 6, + }, + { + img: 'https://news.sznews.com/pic/2021-03/08/a95ba232-1422-4f7e-b85f-c61d486c8659.jpg.2', + title: '姐妹们一起来吐槽,最不能接受男人的缺点!', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 7, + }, + { + img: 'http://news.sznews.com/pic/2021-03/08/76816bf0-3899-4c7e-bc6e-079b5ba8725e.jpg', + title: '民生小事 | 手机遗落出租车 热心民警帮找回', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 8, + }, + { + img: 'https://news.sznews.com/pic/2021-03/08/28ed70d4-71f5-4abb-bf7b-0294bece9e43.jpg.2', + title: '“十三五”:深圳交上靓丽答卷 发展动力加快转换', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 9, + }, + { + img: 'http://news.sznews.com/pic/2021-03/05/d13ae31f-fd45-431a-b48e-c5895bbc193e.png', + title: '深圳湾公园一女子落水,三名男子接力及时施救', + evaluate: (Math.random() * 10).toFixed(2), + collection: (Math.random() * 100).toFixed(2), + price: (Math.random() * 10).toFixed(2), + monSales: (Math.random() * 20).toFixed(2), + id: 10, + }, +]; diff --git a/src/views/pages/preview/index.vue b/src/views/pages/preview/index.vue new file mode 100644 index 0000000..c52baee --- /dev/null +++ b/src/views/pages/preview/index.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/views/pages/steps/index.vue b/src/views/pages/steps/index.vue new file mode 100644 index 0000000..becc196 --- /dev/null +++ b/src/views/pages/steps/index.vue @@ -0,0 +1,51 @@ + + + diff --git a/src/views/pages/tableRules/index.vue b/src/views/pages/tableRules/index.vue new file mode 100644 index 0000000..2e17cde --- /dev/null +++ b/src/views/pages/tableRules/index.vue @@ -0,0 +1,129 @@ + + + diff --git a/src/views/pages/tree/index.vue b/src/views/pages/tree/index.vue new file mode 100644 index 0000000..c079f84 --- /dev/null +++ b/src/views/pages/tree/index.vue @@ -0,0 +1,258 @@ + + + + + diff --git a/src/views/pages/waterfall/index.vue b/src/views/pages/waterfall/index.vue new file mode 100644 index 0000000..48b48ea --- /dev/null +++ b/src/views/pages/waterfall/index.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/src/views/pages/waves/index.vue b/src/views/pages/waves/index.vue new file mode 100644 index 0000000..405c71a --- /dev/null +++ b/src/views/pages/waves/index.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/src/views/pages/workflow/component/contextmenu/index.vue b/src/views/pages/workflow/component/contextmenu/index.vue new file mode 100644 index 0000000..f55e06f --- /dev/null +++ b/src/views/pages/workflow/component/contextmenu/index.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/views/pages/workflow/component/drawer/index.vue b/src/views/pages/workflow/component/drawer/index.vue new file mode 100644 index 0000000..74478a2 --- /dev/null +++ b/src/views/pages/workflow/component/drawer/index.vue @@ -0,0 +1,73 @@ + + + diff --git a/src/views/pages/workflow/component/drawer/line.vue b/src/views/pages/workflow/component/drawer/line.vue new file mode 100644 index 0000000..a19c92a --- /dev/null +++ b/src/views/pages/workflow/component/drawer/line.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/views/pages/workflow/component/drawer/node.vue b/src/views/pages/workflow/component/drawer/node.vue new file mode 100644 index 0000000..8270d2d --- /dev/null +++ b/src/views/pages/workflow/component/drawer/node.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/views/pages/workflow/component/tool/help.vue b/src/views/pages/workflow/component/tool/help.vue new file mode 100644 index 0000000..09198b5 --- /dev/null +++ b/src/views/pages/workflow/component/tool/help.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/views/pages/workflow/component/tool/index.vue b/src/views/pages/workflow/component/tool/index.vue new file mode 100644 index 0000000..2cb9940 --- /dev/null +++ b/src/views/pages/workflow/component/tool/index.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/src/views/pages/workflow/index.vue b/src/views/pages/workflow/index.vue new file mode 100644 index 0000000..8a2a687 --- /dev/null +++ b/src/views/pages/workflow/index.vue @@ -0,0 +1,693 @@ + + + + + diff --git a/src/views/pages/workflow/js/config.ts b/src/views/pages/workflow/js/config.ts new file mode 100644 index 0000000..3784c02 --- /dev/null +++ b/src/views/pages/workflow/js/config.ts @@ -0,0 +1,99 @@ +// jsplumb 默认配置 +export const jsplumbDefaults = { + // 多个锚点 [源锚点,目标锚点] + Anchors: [ + 'Top', + 'TopCenter', + 'TopRight', + 'TopLeft', + 'Right', + 'RightMiddle', + 'Bottom', + 'BottomCenter', + 'BottomRight', + 'BottomLeft', + 'Left', + 'LeftMiddle', + ], + // 连线的容器id + Container: 'workflow-right', + // 设置链接线的形状,如直线或者曲线之类的。anchor可以去设置锚点的位置。可选值"" + Connector: ['Bezier', { curviness: 100 }], + // 节点是否可以用鼠标拖动使其断开,默认为true。即用鼠标链接上的连线,也可以使用鼠标拖动让其断开。设置成false,可以让其拖动也不会自动断开 + ConnectionsDetachable: false, + // 删除线的时候节点不删除 + DeleteEndpointsOnDetach: false, + // 每当添加或以其他方式创建 Endpoint 并且 jsPlumb 尚未给出任何明确的 Endpoint 定义时将使用 + Endpoint: ['Blank', { Overlays: '' }], + // 连接中源和目标端点的默认外观 + EndpointStyle: { fill: '#1879ffa1', outlineWidth: 1 }, + // jsPlumb 的内部日志记录是否打开 + LogEnabled: true, + // 连接器的默认外观 + PaintStyle: { + stroke: '#E0E3E7', + strokeWidth: 1, + outlineStroke: 'transparent', + outlineWidth: 10, + }, + // 用于配置任何可拖动元素的默认选项jsPlumb.draggable + DragOptions: { cursor: 'pointer', zIndex: 2000 }, + // 添加到连接器和端点的默认叠加层。已弃用:从 4.x 开始,将不支持此功能。并非所有叠加层都可以连接到连接器和端点。 + Overlays: [ + [ + 'Arrow', + { + width: 10, // 箭头尾部的宽度 + length: 8, // 从箭头的尾部到头部的距离 + location: 1, // 位置,建议使用0~1之间 + direction: 1, // 方向,默认值为1(表示向前),可选-1(表示向后) + foldback: 0.623, // 折回,也就是尾翼的角度,默认0.623,当为1时,为正三角 + }, + ], + [ + 'Label', + { + label: '', + location: 0.5, + cssClass: 'aLabel', + }, + ], + ], + // 默认渲染模式 svg、canvas + RenderMode: 'svg', + // 悬停状态下连接的默认外观 + HoverPaintStyle: { stroke: '#b0b2b5', strokeWidth: 1 }, + // 悬停状态下端点的默认外观 + EndpointHoverStyle: { fill: 'red' }, + // 端点和连接的默认范围。范围提供了对哪些端点可以连接到哪些其他端点的基本控制 + Scope: 'jsPlumb_DefaultScope', +}; + +// 整个节点作为source或者target +export const jsplumbMakeSource = { + // 设置可以拖拽的类名,只要鼠标移动到该类名上的DOM,就可以拖拽连线 + filter: '.workflow-icon-drag', + filterExclude: false, + anchor: 'Continuous', + // 是否允许自己连接自己 + allowLoopback: true, + maxConnections: -1, +}; + +// 整个节点作为source或者target +export const jsplumbMakeTarget = { + filter: '.workflow-icon-drag', + filterExclude: false, + // 是否允许自己连接自己 + anchor: 'Continuous', + allowLoopback: true, + dropOptions: { hoverClass: 'ef-drop-hover' }, +}; + +// 连线参数 +export const jsplumbConnect = { + isSource: true, + isTarget: true, + // 动态锚点、提供了4个方向 Continuous、AutoDefault + anchor: 'Continuous', +}; diff --git a/src/views/pages/workflow/js/mock.ts b/src/views/pages/workflow/js/mock.ts new file mode 100644 index 0000000..151c3ac --- /dev/null +++ b/src/views/pages/workflow/js/mock.ts @@ -0,0 +1,262 @@ +// 左侧菜单导航数据 +export const leftNavList = [ + { + title: '工作流', + icon: 'iconfont icon-shouye', + isOpen: true, + id: '1', + children: [ + { + icon: 'iconfont icon-gongju', + name: '引擎', + id: '11', + form: [ + { + type: 'input', + label: '客户姓名', + prop: 'name', + placeholder: '请输入客户姓名', + required: true, + disabled: false, + }, + { + type: 'select', + label: '性别', + prop: 'sex', + placeholder: '请选择性别', + required: true, + disabled: false, + options: [ + { + value: '0', + label: '女', + }, + { + value: '1', + label: '男', + }, + ], + }, + { + type: 'input', + label: '员工编号', + prop: 'number', + placeholder: '请输入员工编号', + required: true, + disabled: false, + }, + { + type: 'input', + label: '办公电话', + prop: 'mobile', + placeholder: '请输入办公电话', + required: true, + disabled: false, + }, + { + type: 'select', + label: '权限分配', + prop: 'role', + placeholder: '请选择性别', + required: true, + disabled: false, + options: [ + { + value: '0', + label: '编辑权限', + }, + { + value: '1', + label: '删除权限', + }, + ], + }, + { + type: 'checkbox', + label: '模块选择', + prop: 'module', + placeholder: '请选择模块', + required: true, + disabled: false, + }, + ], + }, + { + icon: 'iconfont icon-shouye_dongtaihui', + name: '模版', + id: '12', + form: [ + { + type: 'input', + label: '等级', + prop: 'grade', + placeholder: '请输入等级', + required: true, + disabled: false, + }, + { + type: 'input', + label: '登记密码', + prop: 'password', + placeholder: '请输入登记密码', + required: true, + disabled: false, + }, + ], + }, + { + icon: 'iconfont icon-zhongduancanshuchaxun', + name: '名称', + id: '13', + form: [ + { + type: 'input', + label: '数据表', + prop: 'dataSheet', + placeholder: '请输入数据表', + required: true, + disabled: false, + }, + { + type: 'input', + label: '字段配置', + prop: 'field', + placeholder: '请输入字段配置', + required: true, + disabled: false, + }, + ], + }, + { + icon: 'iconfont icon-zhongduancanshu', + name: '版本', + id: '14', + form: [ + { + type: 'input', + label: '发布模板', + prop: 'publish', + placeholder: '请输入发布模板', + required: true, + disabled: false, + }, + ], + }, + { + icon: 'iconfont icon-bolangnengshiyanchang', + name: '建模', + id: '15', + form: [ + { + type: 'input', + label: '内容模板', + prop: 'content', + placeholder: '请输入内容模板', + required: true, + disabled: false, + }, + ], + }, + { + icon: 'iconfont icon-xingqiu', + name: '节点', + id: '16', + form: [ + { + type: 'input', + label: '活动名称6', + prop: 'name16', + }, + ], + }, + ], + }, + { + title: '流程', + isOpen: true, + icon: 'iconfont icon-caijian', + id: '2', + children: [ + { + icon: 'iconfont icon-fuwenben', + name: '实例', + id: '21', + form: [ + { + type: 'input', + label: '活动名称7', + prop: 'name21', + }, + ], + }, + { + icon: 'iconfont icon-fuwenbenkuang', + name: '轨迹', + id: '22', + form: [ + { + type: 'input', + label: '活动名称8', + prop: 'name22', + }, + ], + }, + { + icon: 'iconfont icon-shangchuan', + name: '数据', + id: '23', + form: [ + { + type: 'input', + label: '活动名称9', + prop: 'name23', + }, + ], + }, + ], + }, + { + title: '任务', + isOpen: true, + icon: 'iconfont icon-shuju', + id: '3', + children: [ + { + icon: 'iconfont icon-icon-', + name: '参与人', + id: '31', + form: [ + { + type: 'input', + label: '活动名称1', + prop: 'name31', + }, + ], + }, + { + icon: 'iconfont icon-gerenzhongxin', + name: '执行人', + id: '32', + form: [ + { + type: 'input', + label: '活动名称2', + prop: 'name32', + }, + ], + }, + { + icon: 'iconfont icon-fangkuang', + name: '工单', + id: '33', + form: [ + { + type: 'input', + label: '活动名称3', + prop: 'name33', + }, + ], + }, + ], + }, +]; diff --git a/src/views/params/common/details.vue b/src/views/params/common/details.vue new file mode 100644 index 0000000..9ba885e --- /dev/null +++ b/src/views/params/common/details.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/views/params/common/index.vue b/src/views/params/common/index.vue new file mode 100644 index 0000000..733156c --- /dev/null +++ b/src/views/params/common/index.vue @@ -0,0 +1,100 @@ + + + diff --git a/src/views/params/dynamic/details.vue b/src/views/params/dynamic/details.vue new file mode 100644 index 0000000..7283ba1 --- /dev/null +++ b/src/views/params/dynamic/details.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/views/params/dynamic/index.vue b/src/views/params/dynamic/index.vue new file mode 100644 index 0000000..e5246fe --- /dev/null +++ b/src/views/params/dynamic/index.vue @@ -0,0 +1,102 @@ + + + diff --git a/src/views/personal/index.vue b/src/views/personal/index.vue new file mode 100644 index 0000000..baa4639 --- /dev/null +++ b/src/views/personal/index.vue @@ -0,0 +1,387 @@ + + + + + diff --git a/src/views/personal/mock.ts b/src/views/personal/mock.ts new file mode 100644 index 0000000..ff57575 --- /dev/null +++ b/src/views/personal/mock.ts @@ -0,0 +1,66 @@ +/** + * 消息通知 + * @returns 返回模拟数据 + */ +export const newsInfoList: Array = [ + { + title: '[发布] 2021年02月28日发布基于 vue3.x + vite v1.0.0 版本', + date: '02/28', + link: 'https://gitee.com/lyt-top/vue-next-admin', + }, + { + title: '[发布] 2021年04月15日发布 vue2.x + webpack 重构版本', + date: '04/15', + link: 'https://gitee.com/lyt-top/vue-next-admin/tree/vue-prev-admin/', + }, + { + title: '[重构] 2021年04月10日 重构 vue2.x + webpack v1.0.0 版本', + date: '04/10', + link: 'https://gitee.com/lyt-top/vue-next-admin/tree/vue-prev-admin/', + }, + { + title: '[预览] 2020年12月08日,基于 vue3.x 版本后台模板的预览', + date: '12/08', + link: 'http://lyt-top.gitee.io/vue-next-admin-preview/#/login', + }, + { + title: '[预览] 2020年11月15日,基于 vue2.x 版本后台模板的预览', + date: '11/15', + link: 'https://lyt-top.gitee.io/vue-prev-admin-preview/#/login', + }, +]; + +/** + * 营销推荐 + * @returns 返回模拟数据 + */ +export const recommendList: Array = [ + { + title: '优惠券', + msg: '现金券、折扣券、营销必备', + icon: 'ele-Food', + bg: '#48D18D', + iconColor: '#64d89d', + }, + { + title: '多人拼团', + msg: '社交电商、开辟流量', + icon: 'ele-ShoppingCart', + bg: '#F95959', + iconColor: '#F86C6B', + }, + { + title: '分销中心', + msg: '轻松招募分销员,成功推广奖励', + icon: 'ele-School', + bg: '#8595F4', + iconColor: '#92A1F4', + }, + { + title: '秒杀', + msg: '超低价抢购引导更多销量', + icon: 'ele-AlarmClock', + bg: '#FEBB50', + iconColor: '#FDC566', + }, +]; diff --git a/src/views/system/config/component/editConfig.vue b/src/views/system/config/component/editConfig.vue new file mode 100644 index 0000000..6aa6f86 --- /dev/null +++ b/src/views/system/config/component/editConfig.vue @@ -0,0 +1,152 @@ + + + diff --git a/src/views/system/config/index.vue b/src/views/system/config/index.vue new file mode 100644 index 0000000..e758f31 --- /dev/null +++ b/src/views/system/config/index.vue @@ -0,0 +1,243 @@ + + + diff --git a/src/views/system/dept/component/editDept.vue b/src/views/system/dept/component/editDept.vue new file mode 100644 index 0000000..23fa4bf --- /dev/null +++ b/src/views/system/dept/component/editDept.vue @@ -0,0 +1,185 @@ + + + diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue new file mode 100644 index 0000000..931b861 --- /dev/null +++ b/src/views/system/dept/index.vue @@ -0,0 +1,153 @@ + + + diff --git a/src/views/system/dict/component/editDic.vue b/src/views/system/dict/component/editDic.vue new file mode 100644 index 0000000..7b93641 --- /dev/null +++ b/src/views/system/dict/component/editDic.vue @@ -0,0 +1,134 @@ + + + diff --git a/src/views/system/dict/component/editDicData.vue b/src/views/system/dict/component/editDicData.vue new file mode 100644 index 0000000..8b90f37 --- /dev/null +++ b/src/views/system/dict/component/editDicData.vue @@ -0,0 +1,166 @@ + + + diff --git a/src/views/system/dict/dataList.vue b/src/views/system/dict/dataList.vue new file mode 100644 index 0000000..96351bf --- /dev/null +++ b/src/views/system/dict/dataList.vue @@ -0,0 +1,231 @@ + + + diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue new file mode 100644 index 0000000..fd47b00 --- /dev/null +++ b/src/views/system/dict/index.vue @@ -0,0 +1,245 @@ + + + diff --git a/src/views/system/menu/component/editMenu.vue b/src/views/system/menu/component/editMenu.vue new file mode 100644 index 0000000..e817728 --- /dev/null +++ b/src/views/system/menu/component/editMenu.vue @@ -0,0 +1,334 @@ + + + diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue new file mode 100644 index 0000000..228558f --- /dev/null +++ b/src/views/system/menu/index.vue @@ -0,0 +1,157 @@ + + + diff --git a/src/views/system/monitor/loginLog/index.vue b/src/views/system/monitor/loginLog/index.vue new file mode 100644 index 0000000..002564c --- /dev/null +++ b/src/views/system/monitor/loginLog/index.vue @@ -0,0 +1,262 @@ + + + diff --git a/src/views/system/monitor/operLog/component/detail.vue b/src/views/system/monitor/operLog/component/detail.vue new file mode 100644 index 0000000..120bfa0 --- /dev/null +++ b/src/views/system/monitor/operLog/component/detail.vue @@ -0,0 +1,194 @@ + + + diff --git a/src/views/system/monitor/operLog/component/model.ts b/src/views/system/monitor/operLog/component/model.ts new file mode 100644 index 0000000..4b04ae3 --- /dev/null +++ b/src/views/system/monitor/operLog/component/model.ts @@ -0,0 +1,68 @@ +export interface SysOperLogTableColumns { + operId:number; // 日志编号 + title:string; // 系统模块 + requestMethod:string; // 请求方式 + operName:string; // 操作人员 + deptName:string; // 部门名称 + operUrl:string; // 请求URL + operIp:string; // 主机地址 + operLocation:string; // 操作地点 + operParam:string; // 请求参数 + status:number; // 操作状态(0正常 1异常) + operTime:string; // 操作时间 + linkedSysOperLogSysDept:LinkedSysOperLogSysDept; +} + + +export interface SysOperLogInfoData { + operId:number|undefined; // 日志编号 + title:string|undefined; // 系统模块 + businessType:number|undefined; // 操作类型 + method:string|undefined; // 操作方法 + requestMethod:string|undefined; // 请求方式 + operatorType:number|undefined; // 操作类别 + operName:string|undefined; // 操作人员 + deptName:string|undefined; // 部门名称 + operUrl:string|undefined; // 请求URL + operIp:string|undefined; // 主机地址 + operLocation:string|undefined; // 操作地点 + operParam:string|undefined; // 请求参数 + jsonResult:string|undefined; // 返回参数 + status:boolean; // 操作状态(0正常 1异常) + errorMsg:string|undefined; // 错误消息 + operTime:string|undefined; // 操作时间 + linkedSysOperLogSysDept:LinkedSysOperLogSysDept; +} + + +export interface LinkedSysOperLogSysDept { + deptId:number|undefined; // 部门id + deptName:string|undefined; // 部门名称 +} + + +export interface SysOperLogTableDataState { + operIds:any[]; + tableData: { + data: Array; + total: number; + loading: boolean; + param: { + pageNum: number; + pageSize: number; + title: string|undefined; + requestMethod: string|undefined; + operName: string|undefined; + status: number|undefined; + dateRange: string[]; + }; + }; +} + + +export interface SysOperLogEditState{ + loading:boolean; + isShowDialog: boolean; + formData:SysOperLogInfoData; + rules: object; +} diff --git a/src/views/system/monitor/operLog/index.vue b/src/views/system/monitor/operLog/index.vue new file mode 100644 index 0000000..4db5728 --- /dev/null +++ b/src/views/system/monitor/operLog/index.vue @@ -0,0 +1,361 @@ + + + diff --git a/src/views/system/monitor/server/index.vue b/src/views/system/monitor/server/index.vue new file mode 100644 index 0000000..d4bd9e8 --- /dev/null +++ b/src/views/system/monitor/server/index.vue @@ -0,0 +1,508 @@ + + + + + + diff --git a/src/views/system/monitor/userOnline/index.vue b/src/views/system/monitor/userOnline/index.vue new file mode 100644 index 0000000..6743f2e --- /dev/null +++ b/src/views/system/monitor/userOnline/index.vue @@ -0,0 +1,179 @@ + + + diff --git a/src/views/system/personal/index.vue b/src/views/system/personal/index.vue new file mode 100644 index 0000000..7eb6270 --- /dev/null +++ b/src/views/system/personal/index.vue @@ -0,0 +1,508 @@ + + + + + diff --git a/src/views/system/personal/mock.ts b/src/views/system/personal/mock.ts new file mode 100644 index 0000000..ff57575 --- /dev/null +++ b/src/views/system/personal/mock.ts @@ -0,0 +1,66 @@ +/** + * 消息通知 + * @returns 返回模拟数据 + */ +export const newsInfoList: Array = [ + { + title: '[发布] 2021年02月28日发布基于 vue3.x + vite v1.0.0 版本', + date: '02/28', + link: 'https://gitee.com/lyt-top/vue-next-admin', + }, + { + title: '[发布] 2021年04月15日发布 vue2.x + webpack 重构版本', + date: '04/15', + link: 'https://gitee.com/lyt-top/vue-next-admin/tree/vue-prev-admin/', + }, + { + title: '[重构] 2021年04月10日 重构 vue2.x + webpack v1.0.0 版本', + date: '04/10', + link: 'https://gitee.com/lyt-top/vue-next-admin/tree/vue-prev-admin/', + }, + { + title: '[预览] 2020年12月08日,基于 vue3.x 版本后台模板的预览', + date: '12/08', + link: 'http://lyt-top.gitee.io/vue-next-admin-preview/#/login', + }, + { + title: '[预览] 2020年11月15日,基于 vue2.x 版本后台模板的预览', + date: '11/15', + link: 'https://lyt-top.gitee.io/vue-prev-admin-preview/#/login', + }, +]; + +/** + * 营销推荐 + * @returns 返回模拟数据 + */ +export const recommendList: Array = [ + { + title: '优惠券', + msg: '现金券、折扣券、营销必备', + icon: 'ele-Food', + bg: '#48D18D', + iconColor: '#64d89d', + }, + { + title: '多人拼团', + msg: '社交电商、开辟流量', + icon: 'ele-ShoppingCart', + bg: '#F95959', + iconColor: '#F86C6B', + }, + { + title: '分销中心', + msg: '轻松招募分销员,成功推广奖励', + icon: 'ele-School', + bg: '#8595F4', + iconColor: '#92A1F4', + }, + { + title: '秒杀', + msg: '超低价抢购引导更多销量', + icon: 'ele-AlarmClock', + bg: '#FEBB50', + iconColor: '#FDC566', + }, +]; diff --git a/src/views/system/post/component/editPost.vue b/src/views/system/post/component/editPost.vue new file mode 100644 index 0000000..4c9cab7 --- /dev/null +++ b/src/views/system/post/component/editPost.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/src/views/system/post/index.vue b/src/views/system/post/index.vue new file mode 100644 index 0000000..3362714 --- /dev/null +++ b/src/views/system/post/index.vue @@ -0,0 +1,200 @@ + + + diff --git a/src/views/system/role/component/dataScope.vue b/src/views/system/role/component/dataScope.vue new file mode 100644 index 0000000..21555ea --- /dev/null +++ b/src/views/system/role/component/dataScope.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/src/views/system/role/component/editRole.vue b/src/views/system/role/component/editRole.vue new file mode 100644 index 0000000..bb89e24 --- /dev/null +++ b/src/views/system/role/component/editRole.vue @@ -0,0 +1,263 @@ + + + + + diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue new file mode 100644 index 0000000..68067c5 --- /dev/null +++ b/src/views/system/role/index.vue @@ -0,0 +1,193 @@ + + + diff --git a/src/views/system/sysJob/list/component/detail.vue b/src/views/system/sysJob/list/component/detail.vue new file mode 100644 index 0000000..c5bc48f --- /dev/null +++ b/src/views/system/sysJob/list/component/detail.vue @@ -0,0 +1,286 @@ + + + diff --git a/src/views/system/sysJob/list/component/edit.vue b/src/views/system/sysJob/list/component/edit.vue new file mode 100644 index 0000000..bd51c63 --- /dev/null +++ b/src/views/system/sysJob/list/component/edit.vue @@ -0,0 +1,251 @@ + + + diff --git a/src/views/system/sysJob/list/component/model.ts b/src/views/system/sysJob/list/component/model.ts new file mode 100644 index 0000000..a31a6d3 --- /dev/null +++ b/src/views/system/sysJob/list/component/model.ts @@ -0,0 +1,71 @@ +export interface SysJobTableColumns { + jobId:number; // 任务ID + jobName:string; // 任务名称 + jobGroup:string; // 任务组名 + invokeTarget:string; // 任务方法 + cronExpression:string; // cron执行表达式 + misfirePolicy:number; // 计划执行策略 + status:number; // 状态 +} + + +export interface SysJobInfoData { + jobId:number|undefined; // 任务ID + jobName:string|undefined; // 任务名称 + jobParams:string|undefined; // 参数 + jobGroup:string|undefined; // 任务组名 + invokeTarget:string|undefined; // 任务方法 + cronExpression:string|undefined; // cron执行表达式 + misfirePolicy:boolean; // 计划执行策略 + concurrent:number|undefined; // 是否并发执行 + status:boolean; // 状态 + createdBy:number|undefined; // 创建者 + updatedBy:number|undefined; // 更新者 + remark:string|undefined; // 备注信息 + createdAt:string|undefined; // 创建时间 + updatedAt:string|undefined; // 更新时间 +} + + +export interface SysJobTableDataState { + jobIds:any[]; + tableData: { + data: Array; + total: number; + loading: boolean; + param: { + pageNum: number; + pageSize: number; + jobName: string|undefined; + jobGroup: string|undefined; + status: number|undefined; + }; + }; +} + + +export interface SysJobEditState{ + loading:boolean; + isShowDialog: boolean; + formData:SysJobInfoData; + rules: object; +} + +export interface SysJobLog{ + logIds:Array; + data:Array; + total: number; + loading: boolean; + param: { + pageNum: number; + pageSize: number; + targetName: string|undefined; + }; +} + +export interface SysJobLogData{ + id: number; + targetName: string; + createdAt: string; + result: string +} diff --git a/src/views/system/sysJob/list/index.vue b/src/views/system/sysJob/list/index.vue new file mode 100644 index 0000000..4269dbc --- /dev/null +++ b/src/views/system/sysJob/list/index.vue @@ -0,0 +1,342 @@ + + + diff --git a/src/views/system/tools/gen/component/basicInfo.vue b/src/views/system/tools/gen/component/basicInfo.vue new file mode 100644 index 0000000..1ede471 --- /dev/null +++ b/src/views/system/tools/gen/component/basicInfo.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/views/system/tools/gen/component/edit.vue b/src/views/system/tools/gen/component/edit.vue new file mode 100644 index 0000000..b9c396d --- /dev/null +++ b/src/views/system/tools/gen/component/edit.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/src/views/system/tools/gen/component/genInfoForm.vue b/src/views/system/tools/gen/component/genInfoForm.vue new file mode 100644 index 0000000..6a611a2 --- /dev/null +++ b/src/views/system/tools/gen/component/genInfoForm.vue @@ -0,0 +1,204 @@ + + + + + diff --git a/src/views/system/tools/gen/component/importTable.vue b/src/views/system/tools/gen/component/importTable.vue new file mode 100644 index 0000000..773561e --- /dev/null +++ b/src/views/system/tools/gen/component/importTable.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/src/views/system/tools/gen/component/model.ts b/src/views/system/tools/gen/component/model.ts new file mode 100644 index 0000000..ee81dcc --- /dev/null +++ b/src/views/system/tools/gen/component/model.ts @@ -0,0 +1,116 @@ +// 定义接口来定义对象的类型 + +export interface TableData { + tableId:number; + tableName:string; + tableComment:string; + className:string; + createTime:string; + updateTime:string; +} + +export interface TableColumns { + columnId: number; + tableId: number; + columnName: string; + columnComment: string; + columnType: string; + goType: string; + tsType:string; + goField: string; + htmlField: string; + isPk: boolean; + isIncrement: boolean; + isRequired: boolean; + isInsert: boolean; + isEdit: boolean; + isList: boolean; + isDetail: boolean; + isQuery: boolean; + sortOrderEdit: number; + sortOrderList: number; + sortOrderDetail: number; + sortOrderQuery: number; + queryType: string; + htmlType: string; + dictType: string; + linkTableName: string; + linkTableClass: string; + linkTableModuleName: string; + linkTableBusinessName: string; + linkTablePackage: string; + linkLabelId: string; + linkLabelName: string; + colSpan: number; + rowSpan: number; + isRowStart: boolean; + minWidth: number; + isFixed: boolean; + isOverflowTooltip: boolean; + isCascade: boolean; + parentColumnName: string; + cascadeColumnName: string; +} + +export interface TableDataInfo extends TableData{ + treeCode:string; + treeName:string; + treeParentCode:string; + functionAuthor:string; + sortColumn:string; + sortType:string; + remark:string; + overwrite:boolean; + showDetail:boolean; + tplCategory:string; + packageName:string; + moduleName:string; + businessName:string; + functionName:string; + linkTableName:string; + columns:TableColumns[] +} +export interface TableDataState { + ids:number[]; + // 非单个禁用 + single: boolean, + // 非多个禁用 + multiple: boolean, + // 选中表数组 + tableNames: string[], + tableData: { + data: Array; + total: number; + loading: boolean; + param: { + tableName:string; + tableComment:string; + pageNum: number; + pageSize: number; + dateRange: string[]; + }; + }; +} + +export interface ImportTableDataState{ + tableData:{ + data:Array; + total:number; + loading:boolean; + param:{ + pageNum: number; + pageSize: number; + tableName: string; + tableComment: string; + } + } +} + +export interface previewState{ + flush: boolean; + fullscreen: boolean; + open: boolean; + title: string; + data: object; + activeName: string; +} diff --git a/src/views/system/tools/gen/component/preview.vue b/src/views/system/tools/gen/component/preview.vue new file mode 100644 index 0000000..d114777 --- /dev/null +++ b/src/views/system/tools/gen/component/preview.vue @@ -0,0 +1,85 @@ + + + + + + diff --git a/src/views/system/tools/gen/component/tableColumns.vue b/src/views/system/tools/gen/component/tableColumns.vue new file mode 100644 index 0000000..784eb91 --- /dev/null +++ b/src/views/system/tools/gen/component/tableColumns.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/src/views/system/tools/gen/index.vue b/src/views/system/tools/gen/index.vue new file mode 100644 index 0000000..9e09585 --- /dev/null +++ b/src/views/system/tools/gen/index.vue @@ -0,0 +1,268 @@ + + + diff --git a/src/views/system/user/component/editUser.vue b/src/views/system/user/component/editUser.vue new file mode 100644 index 0000000..de132fe --- /dev/null +++ b/src/views/system/user/component/editUser.vue @@ -0,0 +1,285 @@ + + + diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue new file mode 100644 index 0000000..d79521e --- /dev/null +++ b/src/views/system/user/index.vue @@ -0,0 +1,362 @@ + + + diff --git a/src/views/tools/index.vue b/src/views/tools/index.vue new file mode 100644 index 0000000..a17308b --- /dev/null +++ b/src/views/tools/index.vue @@ -0,0 +1,499 @@ + + + + + diff --git a/src/views/visualizing/demo1.vue b/src/views/visualizing/demo1.vue new file mode 100644 index 0000000..ab78763 --- /dev/null +++ b/src/views/visualizing/demo1.vue @@ -0,0 +1,1288 @@ + + + + + diff --git a/src/views/visualizing/demo2.vue b/src/views/visualizing/demo2.vue new file mode 100644 index 0000000..71dbd99 --- /dev/null +++ b/src/views/visualizing/demo2.vue @@ -0,0 +1,1344 @@ + + + + + diff --git a/src/views/visualizing/images/bathymetry.jpg b/src/views/visualizing/images/bathymetry.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f9eebe397dbaca0bb4ff9970e08dd17161abfef GIT binary patch literal 621596 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 }ZGENB%E8(a+W<&XJnBZ;{gp~c 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�) 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 literal 0 HcmV?d00001 diff --git a/src/views/visualizing/images/world.jpg b/src/views/visualizing/images/world.jpg new file mode 100644 index 0000000000000000000000000000000000000000..22c75661293226fe9ebec4a2240a22096418362c GIT binary patch literal 801762 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

    O16t+nSrAYAp;<+S}SkZwWwwqD{dR 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%0AXiP&@AW%N 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 z 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 z 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�Cj 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 )){*yQ?wD@-+%134lLd4=Ca(V1L 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 z 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

    %xx{5yuK$^ABHzB@u6xh6mG{PD=TZu%4> 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 literal 0 HcmV?d00001 diff --git a/src/views/visualizing/mock/demo1.ts b/src/views/visualizing/mock/demo1.ts new file mode 100644 index 0000000..60fd944 --- /dev/null +++ b/src/views/visualizing/mock/demo1.ts @@ -0,0 +1,51 @@ +// 地图模拟数据 +export const echartsMapList: Array = [ + { name: '深圳市人民政府', value: '100' }, + { name: '莲花山公园', value: '100' }, + { name: '世界之窗', value: '100' }, + { name: '华侨城欢乐谷', value: '100' }, + { name: '宝安区西乡', value: '100' }, +]; + +// 地图经纬度数据 +export const echartsMapData: object = { + 深圳市人民政府: [114.064524, 22.549225], + 莲花山公园: [114.0658, 22.560072], + 世界之窗: [113.979419, 22.540579], + 华侨城欢乐谷: [113.986066, 22.548056], + 宝安区西乡: [113.869053, 22.581714], +}; + +// 地图图片显示 +export const echartsMapImgs: Array = [ + { + url: 'https://img1.baidu.com/it/u=4244861097,3561366422&fm=11&fmt=auto&gp=0.jpg', + name: '深圳市人民政府', + add: '深圳市福田区福中三路市民中心C区', + dec: '深圳市人民政府是根据《中华人民共和国地方各级人民代表大会和地方各级人民政府组织法》设立的,是深圳市人民代表大会的执行机关,是深圳市的国家行政机关。', + }, + { + url: 'https://img1.baidu.com/it/u=3793608028,4006842751&fm=26&fmt=auto&gp=0.jpg', + name: '莲花山公园', + add: '广东省深圳市福田区莲花街道莲花北社区红荔路6030号', + dec: '莲花山公园筹建于1992年10月10日 ,1997年6月23日正式对外局部开放。', + }, + { + url: 'https://img0.baidu.com/it/u=1406340112,1927292660&fm=26&fmt=auto&gp=0.jpg', + name: '世界之窗', + add: '深圳市南山区深南大道9037号', + dec: '这里,世界首座实景拍摄悬空式球幕影院“飞跃美利坚””,为游客提供集休闲放松于一体的都市时尚生活空间。', + }, + { + url: 'https://img0.baidu.com/it/u=3042342330,902556630&fm=26&fmt=auto&gp=0.jpg', + name: '华侨城欢乐谷', + add: '广东省深圳市南山区沙河街道星河街社区侨城西街1号', + dec: '深圳欢乐谷注重满足人们参与、体验的新型诱游需求,营造出自然、清新、活泼、惊奇、热烈、刺激的休闲旅游氛围。', + }, + { + url: 'https://img2.baidu.com/it/u=1075072079,1229283519&fm=11&fmt=auto&gp=0.jpg', + name: '宝安区西乡', + add: '西乡街道下辖25个社区', + dec: '西乡街道,隶属于广东省深圳市宝安区,位于宝安区西南部,东接石岩街道,南接新安街道,西至珠江口岸边,北接航城街道。', + }, +]; diff --git a/src/views/visualizing/mock/demo2.ts b/src/views/visualizing/mock/demo2.ts new file mode 100644 index 0000000..6b302b4 --- /dev/null +++ b/src/views/visualizing/mock/demo2.ts @@ -0,0 +1,131 @@ +// 顶部下来菜单 +export const dropdownList: Array = [ + { + label: '广东省农业农村厅', + }, + { + label: '广西省农业农村厅', + }, + { + label: '四川省农业农村厅', + }, + { + label: '湖北省农业农村厅', + }, + { + label: '福建省农业农村厅', + }, + { + label: '山东省农业农村厅', + }, + { + label: '江西省农业农村厅', + }, +]; + +// sky 天气 +export const skyList: Array = [ + { + v1: '时间', + v2: '天气', + v3: '温度', + v4: '湿度', + v5: '降水概率', + v6: '风向', + v7: '风力', + type: 'title', + }, + { + v1: '今天', + v2: 'ele-Sunny', + v3: '20°/26°', + v4: '80%', + v5: '50%', + v6: '东南风', + v7: '13m/s', + }, + { + v1: '明天', + v2: 'ele-Lightning', + v3: '20°/26°', + v4: '80%', + v5: '50%', + v6: '东南风', + v7: '13m/s', + }, + { + v1: '后天', + v2: 'ele-Sunny', + v3: '20°/26°', + v4: '80%', + v5: '50%', + v6: '东南风', + v7: '13m/s', + }, +]; + +// 当前设置状态 +export const dBtnList: Array = [ + { + v1: '地块A-灌溉', + v2: '阳光玫瑰种植', + v3: '126天', + v4: '设备在线', + }, + { + v1: '地块B-收割', + v2: '阳光玫瑰种植', + v3: '360天', + v4: '设备预警', + }, +]; + +// 当前设备监测 +export const chartData4List: Array = [ + { + label: '温度', + }, + { + label: '光照', + }, + { + label: '湿度', + }, + { + label: '风力', + }, + { + label: '张力', + }, + { + label: '气压', + }, +]; + +// 3DEarth 地图周围按钮组 +export const earth3DBtnList: Array = [ + { + topLevelClass: 'fixed-top', + icon: 'ele-MagicStick', + label: '环境监测', + type: 0, + }, + { + topLevelClass: 'fixed-right', + icon: 'ele-MoonNight', + label: '精准管理', + type: 1, + }, + { + topLevelClass: 'fixed-bottom', + icon: 'ele-TrendCharts', + label: '数据报表', + type: 2, + }, + { + topLevelClass: 'fixed-left', + icon: 'ele-Van', + label: '产品追溯', + type: 3, + }, +]; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..9d62054 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,72 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "esnext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "esnext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "lib": ["esnext", "dom", "dom.iterable", "scripthost"] /* Specify library files to be included in the compilation. */, + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + "jsx": "preserve" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */, + // "declaration": true /* Generates corresponding '.d.ts' file. */, + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + // "outDir": "./", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true /* Import emit helpers from 'tslib'. */, + // "downlevelIteration": true /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */, + // "isolatedModules": true /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */, + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + + /* Module Resolution Options */ + "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + "baseUrl": "." /* Base directory to resolve non-absolute module names. */, + "paths": { + "/@/*": ["src/*"] + } /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */, + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + "types": ["vite/client"] /* Type declaration files to be included in compilation. */, + "allowSyntheticDefaultImports": true /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */, + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + "experimentalDecorators": true /* Enables experimental support for ES7 decorators. */, + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + } +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..c8a6fc0 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,64 @@ +import vue from '@vitejs/plugin-vue'; +import { resolve } from 'path'; +import { defineConfig, loadEnv, ConfigEnv } from 'vite'; + +const pathResolve = (dir: string): any => { + return resolve(__dirname, '.', dir); +}; + +const alias: Record = { + '/@': pathResolve('./src/'), + 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js', +}; + +const viteConfig = defineConfig((mode: ConfigEnv) => { + const env = loadEnv(mode.mode, process.cwd()); + return { + plugins: [vue()], + root: process.cwd(), + resolve: { alias }, + base: mode.command === 'serve' ? './' : env.VITE_PUBLIC_PATH, + hmr: true, + optimizeDeps: { + include: ['element-plus/lib/locale/lang/zh-cn', 'element-plus/lib/locale/lang/en', 'element-plus/lib/locale/lang/zh-tw'], + }, + server: { + host: '0.0.0.0', + port: env.VITE_PORT as unknown as number, + open: env.VITE_OPEN, + proxy: { + '/gitee': { + target: 'https://gitee.com', + ws: true, + changeOrigin: true, + rewrite: (path) => path.replace(/^\/gitee/, ''), + }, + }, + }, + build: { + outDir: 'dist', + sourcemap: false, + chunkSizeWarningLimit: 1500, + rollupOptions: { + output: { + entryFileNames: `assets/[name].${new Date().getTime()}.js`, + chunkFileNames: `assets/[name].${new Date().getTime()}.js`, + assetFileNames: `assets/[name].${new Date().getTime()}.[ext]`, + compact: true, + manualChunks: { + vue: ['vue', 'vue-router', 'pinia'], + echarts: ['echarts'], + }, + }, + }, + }, + css: { preprocessorOptions: { css: { charset: false } } }, + define: { + __VUE_I18N_LEGACY_API__: JSON.stringify(false), + __VUE_I18N_FULL_INSTALL__: JSON.stringify(false), + __INTLIFY_PROD_DEVTOOLS__: JSON.stringify(false), + }, + }; +}); + +export default viteConfig;

    A#f+ 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�MPajU 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 K!GcB$$rE#6 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