From b16dd30f0b07bba0ceb644a7bfdf0927dde254c4 Mon Sep 17 00:00:00 2001 From: hupeng Date: Sun, 2 Jun 2024 10:52:34 +0800 Subject: [PATCH] update V3.0.0 --- .DS_Store | Bin 10244 -> 0 bytes .gitignore | 6 +- yshop-drink-vue3 | 1 - yshop-drink-vue3/.editorconfig | 12 + yshop-drink-vue3/.env | 23 + yshop-drink-vue3/.env.dev | 36 + yshop-drink-vue3/.env.prod | 33 + yshop-drink-vue3/.env.stage | 33 + yshop-drink-vue3/.env.test | 33 + yshop-drink-vue3/.eslintignore | 8 + yshop-drink-vue3/.eslintrc-auto-import.json | 259 + yshop-drink-vue3/.eslintrc.js | 75 + yshop-drink-vue3/.gitignore | 10 + yshop-drink-vue3/.prettierignore | 11 + yshop-drink-vue3/.stylelintignore | 6 + yshop-drink-vue3/.vscode/extensions.json | 18 + yshop-drink-vue3/.vscode/launch.json | 16 + yshop-drink-vue3/.vscode/settings.json | 144 + yshop-drink-vue3/README.md | 3 + yshop-drink-vue3/build/vite/index.ts | 100 + yshop-drink-vue3/build/vite/optimize.ts | 112 + yshop-drink-vue3/index.html | 151 + yshop-drink-vue3/package.json | 146 + yshop-drink-vue3/pnpm-lock.yaml | 9674 +++++ yshop-drink-vue3/postcss.config.js | 5 + yshop-drink-vue3/prettier.config.js | 22 + .../public/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 | 56 + .../UEditor/dialogs/background/background.js | 376 + .../UEditor/dialogs/background/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/background/images/success.png | Bin 0 -> 1621 bytes .../UEditor/dialogs/charts/chart.config.js | 65 + .../public/UEditor/dialogs/charts/charts.css | 165 + .../public/UEditor/dialogs/charts/charts.html | 89 + .../public/UEditor/dialogs/charts/charts.js | 519 + .../UEditor/dialogs/charts/images/charts0.png | Bin 0 -> 25306 bytes .../UEditor/dialogs/charts/images/charts1.png | Bin 0 -> 19263 bytes .../UEditor/dialogs/charts/images/charts2.png | Bin 0 -> 23016 bytes .../UEditor/dialogs/charts/images/charts3.png | Bin 0 -> 7823 bytes .../UEditor/dialogs/charts/images/charts4.png | Bin 0 -> 8344 bytes .../UEditor/dialogs/charts/images/charts5.png | Bin 0 -> 47084 bytes .../UEditor/dialogs/emotion/emotion.css | 43 + .../UEditor/dialogs/emotion/emotion.html | 54 + .../public/UEditor/dialogs/emotion/emotion.js | 186 + .../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 .../public/UEditor/dialogs/gmap/gmap.html | 89 + .../public/UEditor/dialogs/help/help.css | 7 + .../public/UEditor/dialogs/help/help.html | 82 + .../public/UEditor/dialogs/help/help.js | 56 + .../public/UEditor/dialogs/image/image.css | 894 + .../public/UEditor/dialogs/image/image.html | 120 + .../public/UEditor/dialogs/image/image.js | 1148 + .../dialogs/image/images/alignicon.jpg | Bin 0 -> 16101 bytes .../UEditor/dialogs/image/images/bg.png | Bin 0 -> 2810 bytes .../UEditor/dialogs/image/images/icons.gif | Bin 0 -> 453 bytes .../UEditor/dialogs/image/images/icons.png | Bin 0 -> 2678 bytes .../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 | 98 + .../public/UEditor/dialogs/internal.js | 80 + .../public/UEditor/dialogs/link/link.html | 126 + .../public/UEditor/dialogs/map/map.html | 135 + .../public/UEditor/dialogs/map/show.html | 118 + .../public/UEditor/dialogs/music/music.css | 30 + .../public/UEditor/dialogs/music/music.html | 32 + .../public/UEditor/dialogs/music/music.js | 192 + .../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 .../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 .../UEditor/dialogs/scrawl/images/size.png | Bin 0 -> 775 bytes .../UEditor/dialogs/scrawl/images/undo.png | Bin 0 -> 444 bytes .../UEditor/dialogs/scrawl/images/undoH.png | Bin 0 -> 511 bytes .../public/UEditor/dialogs/scrawl/scrawl.css | 72 + .../public/UEditor/dialogs/scrawl/scrawl.html | 95 + .../public/UEditor/dialogs/scrawl/scrawl.js | 671 + .../dialogs/searchreplace/searchreplace.html | 102 + .../dialogs/searchreplace/searchreplace.js | 164 + .../dialogs/snapscreen/snapscreen.html | 58 + .../UEditor/dialogs/spechars/spechars.html | 21 + .../UEditor/dialogs/spechars/spechars.js | 57 + .../public/UEditor/dialogs/table/dragicon.png | Bin 0 -> 304 bytes .../UEditor/dialogs/table/edittable.css | 84 + .../UEditor/dialogs/table/edittable.html | 64 + .../public/UEditor/dialogs/table/edittable.js | 237 + .../public/UEditor/dialogs/table/edittd.html | 61 + .../public/UEditor/dialogs/table/edittip.html | 33 + .../public/UEditor/dialogs/template/config.js | 42 + .../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 .../UEditor/dialogs/template/template.css | 18 + .../UEditor/dialogs/template/template.html | 26 + .../UEditor/dialogs/template/template.js | 53 + .../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 .../UEditor/dialogs/video/images/icons.gif | Bin 0 -> 453 bytes .../UEditor/dialogs/video/images/icons.png | Bin 0 -> 2678 bytes .../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/UEditor/dialogs/video/video.css | 635 + .../public/UEditor/dialogs/video/video.html | 86 + .../public/UEditor/dialogs/video/video.js | 797 + .../public/UEditor/dialogs/webapp/webapp.html | 53 + .../UEditor/dialogs/wordimage/tangram.js | 1495 + .../UEditor/dialogs/wordimage/wordimage.html | 111 + .../UEditor/dialogs/wordimage/wordimage.js | 157 + yshop-drink-vue3/public/UEditor/index.html | 175 + yshop-drink-vue3/public/UEditor/lang/en/en.js | 755 + .../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 .../UEditor/lang/en/images/background.png | Bin 0 -> 3854 bytes .../public/UEditor/lang/en/images/button.png | Bin 0 -> 4929 bytes .../public/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 .../UEditor/lang/en/images/localimage.png | Bin 0 -> 3083 bytes .../public/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/UEditor/lang/en/images/upload.png | Bin 0 -> 3941 bytes .../public/UEditor/lang/zh-cn/images/copy.png | Bin 0 -> 4319 bytes .../UEditor/lang/zh-cn/images/localimage.png | Bin 0 -> 6979 bytes .../UEditor/lang/zh-cn/images/music.png | Bin 0 -> 23106 bytes .../UEditor/lang/zh-cn/images/upload.png | Bin 0 -> 6608 bytes .../public/UEditor/lang/zh-cn/zh-cn.js | 669 + .../UEditor/themes/default/css/ueditor.css | 1904 + .../themes/default/css/ueditor.min.css | 8 + .../UEditor/themes/default/dialogbase.css | 100 + .../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/loaderror.png | Bin 0 -> 3209 bytes .../UEditor/themes/default/images/loading.gif | Bin 0 -> 734 bytes .../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 .../UEditor/themes/default/images/word.gif | Bin 0 -> 1019 bytes .../themes/default/images/wordpaste.png | Bin 0 -> 6467 bytes .../public/UEditor/themes/iframe.css | 1 + .../third-party/SyntaxHighlighter/shCore.js | 3655 ++ .../SyntaxHighlighter/shCoreDefault.css | 1 + .../third-party/codemirror/codemirror.css | 104 + .../third-party/codemirror/codemirror.js | 3581 ++ .../highcharts/adapters/mootools-adapter.js | 13 + .../adapters/mootools-adapter.src.js | 313 + .../highcharts/adapters/prototype-adapter.js | 15 + .../adapters/prototype-adapter.src.js | 316 + .../adapters/standalone-framework.js | 17 + .../adapters/standalone-framework.src.js | 583 + .../third-party/highcharts/highcharts-more.js | 50 + .../highcharts/highcharts-more.src.js | 2430 ++ .../third-party/highcharts/highcharts.js | 283 + .../third-party/highcharts/highcharts.src.js | 16974 +++++++++ .../highcharts/modules/annotations.js | 7 + .../highcharts/modules/annotations.src.js | 401 + .../highcharts/modules/canvas-tools.js | 133 + .../highcharts/modules/canvas-tools.src.js | 3113 ++ .../third-party/highcharts/modules/data.js | 17 + .../highcharts/modules/data.src.js | 582 + .../highcharts/modules/drilldown.js | 11 + .../highcharts/modules/drilldown.src.js | 447 + .../highcharts/modules/exporting.js | 22 + .../highcharts/modules/exporting.src.js | 709 + .../third-party/highcharts/modules/funnel.js | 12 + .../highcharts/modules/funnel.src.js | 289 + .../third-party/highcharts/modules/heatmap.js | 1 + .../highcharts/modules/heatmap.src.js | 53 + .../third-party/highcharts/modules/map.js | 27 + .../third-party/highcharts/modules/map.src.js | 1002 + .../highcharts/modules/no-data-to-display.js | 12 + .../modules/no-data-to-display.src.js | 128 + .../highcharts/themes/dark-blue.js | 254 + .../highcharts/themes/dark-green.js | 255 + .../third-party/highcharts/themes/gray.js | 257 + .../third-party/highcharts/themes/grid.js | 103 + .../third-party/highcharts/themes/skies.js | 89 + .../UEditor/third-party/jquery-1.10.2.js | 9789 +++++ .../UEditor/third-party/jquery-1.10.2.min.js | 6 + .../UEditor/third-party/jquery-1.10.2.min.map | 1 + .../snapscreen/UEditorSnapscreen.exe | Bin 0 -> 519936 bytes .../UEditor/third-party/video-js/font/vjs.eot | Bin 0 -> 3536 bytes .../UEditor/third-party/video-js/font/vjs.svg | 65 + .../UEditor/third-party/video-js/font/vjs.ttf | Bin 0 -> 3372 bytes .../third-party/video-js/font/vjs.woff | Bin 0 -> 4228 bytes .../UEditor/third-party/video-js/video-js.css | 766 + .../third-party/video-js/video-js.min.css | 5 + .../UEditor/third-party/video-js/video.dev.js | 7108 ++++ .../UEditor/third-party/video-js/video.js | 129 + .../third-party/webuploader/webuploader.css | 28 + .../webuploader/webuploader.custom.js | 5670 +++ .../webuploader/webuploader.custom.min.js | 2 + .../webuploader/webuploader.flashonly.js | 4176 +++ .../webuploader/webuploader.flashonly.min.js | 2 + .../webuploader/webuploader.html5only.js | 5559 +++ .../webuploader/webuploader.html5only.min.js | 2 + .../third-party/webuploader/webuploader.js | 6733 ++++ .../webuploader/webuploader.min.js | 2 + .../webuploader/webuploader.withoutimage.js | 4593 +++ .../webuploader.withoutimage.min.js | 2 + .../public/UEditor/third-party/xss.min.js | 1 + .../zeroclipboard/ZeroClipboard.js | 1256 + .../zeroclipboard/ZeroClipboard.min.js | 9 + .../public/UEditor/ueditor.all.js | 29559 ++++++++++++++++ .../public/UEditor/ueditor.all.min.js | 18 + .../public/UEditor/ueditor.config.js | 473 + .../public/UEditor/ueditor.parse.js | 1022 + .../public/UEditor/ueditor.parse.min.js | 7 + .../UEditor22/dialogs/anchor/anchor.html | 40 + .../dialogs/attachment/attachment.css | 681 + .../dialogs/attachment/attachment.html | 60 + .../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 .../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 .../dialogs/background/background.css | 94 + .../dialogs/background/background.html | 56 + .../dialogs/background/background.js | 376 + .../dialogs/background/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/background/images/success.png | Bin 0 -> 1621 bytes .../UEditor22/dialogs/charts/chart.config.js | 65 + .../UEditor22/dialogs/charts/charts.css | 165 + .../UEditor22/dialogs/charts/charts.html | 89 + .../public/UEditor22/dialogs/charts/charts.js | 519 + .../dialogs/charts/images/charts0.png | Bin 0 -> 25306 bytes .../dialogs/charts/images/charts1.png | Bin 0 -> 19263 bytes .../dialogs/charts/images/charts2.png | Bin 0 -> 23016 bytes .../dialogs/charts/images/charts3.png | Bin 0 -> 7823 bytes .../dialogs/charts/images/charts4.png | Bin 0 -> 8344 bytes .../dialogs/charts/images/charts5.png | Bin 0 -> 47084 bytes .../UEditor22/dialogs/emotion/emotion.css | 43 + .../UEditor22/dialogs/emotion/emotion.html | 54 + .../UEditor22/dialogs/emotion/emotion.js | 186 + .../UEditor22/dialogs/emotion/images/0.gif | Bin 0 -> 43 bytes .../dialogs/emotion/images/bface.gif | Bin 0 -> 27167 bytes .../dialogs/emotion/images/cface.gif | Bin 0 -> 8603 bytes .../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 .../dialogs/emotion/images/tface.gif | Bin 0 -> 19805 bytes .../dialogs/emotion/images/wface.gif | Bin 0 -> 49850 bytes .../dialogs/emotion/images/yface.gif | Bin 0 -> 28409 bytes .../public/UEditor22/dialogs/gmap/gmap.html | 89 + .../public/UEditor22/dialogs/help/help.css | 7 + .../public/UEditor22/dialogs/help/help.html | 82 + .../public/UEditor22/dialogs/help/help.js | 56 + .../public/UEditor22/dialogs/image/image.css | 894 + .../public/UEditor22/dialogs/image/image.html | 120 + .../public/UEditor22/dialogs/image/image.js | 1148 + .../dialogs/image/images/alignicon.jpg | Bin 0 -> 16101 bytes .../UEditor22/dialogs/image/images/bg.png | Bin 0 -> 2810 bytes .../UEditor22/dialogs/image/images/icons.gif | Bin 0 -> 453 bytes .../UEditor22/dialogs/image/images/icons.png | Bin 0 -> 2678 bytes .../UEditor22/dialogs/image/images/image.png | Bin 0 -> 1672 bytes .../dialogs/image/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/image/images/success.gif | Bin 0 -> 445 bytes .../dialogs/image/images/success.png | Bin 0 -> 1621 bytes .../dialogs/insertframe/insertframe.html | 98 + .../public/UEditor22/dialogs/internal.js | 81 + .../public/UEditor22/dialogs/link/link.html | 126 + .../public/UEditor22/dialogs/map/map.html | 135 + .../public/UEditor22/dialogs/map/show.html | 118 + .../public/UEditor22/dialogs/music/music.css | 30 + .../public/UEditor22/dialogs/music/music.html | 32 + .../public/UEditor22/dialogs/music/music.js | 192 + .../UEditor22/dialogs/preview/preview.html | 40 + .../dialogs/scrawl/images/addimg.png | Bin 0 -> 628 bytes .../UEditor22/dialogs/scrawl/images/brush.png | Bin 0 -> 608 bytes .../dialogs/scrawl/images/delimg.png | Bin 0 -> 516 bytes .../dialogs/scrawl/images/delimgH.png | Bin 0 -> 578 bytes .../UEditor22/dialogs/scrawl/images/empty.png | Bin 0 -> 519 bytes .../dialogs/scrawl/images/emptyH.png | Bin 0 -> 657 bytes .../dialogs/scrawl/images/eraser.png | Bin 0 -> 43271 bytes .../UEditor22/dialogs/scrawl/images/redo.png | Bin 0 -> 454 bytes .../UEditor22/dialogs/scrawl/images/redoH.png | Bin 0 -> 536 bytes .../UEditor22/dialogs/scrawl/images/scale.png | Bin 0 -> 435 bytes .../dialogs/scrawl/images/scaleH.png | Bin 0 -> 330 bytes .../UEditor22/dialogs/scrawl/images/size.png | Bin 0 -> 775 bytes .../UEditor22/dialogs/scrawl/images/undo.png | Bin 0 -> 444 bytes .../UEditor22/dialogs/scrawl/images/undoH.png | Bin 0 -> 511 bytes .../UEditor22/dialogs/scrawl/scrawl.css | 72 + .../UEditor22/dialogs/scrawl/scrawl.html | 95 + .../public/UEditor22/dialogs/scrawl/scrawl.js | 671 + .../dialogs/searchreplace/searchreplace.html | 102 + .../dialogs/searchreplace/searchreplace.js | 164 + .../dialogs/snapscreen/snapscreen.html | 58 + .../UEditor22/dialogs/spechars/spechars.html | 21 + .../UEditor22/dialogs/spechars/spechars.js | 57 + .../UEditor22/dialogs/table/dragicon.png | Bin 0 -> 304 bytes .../UEditor22/dialogs/table/edittable.css | 84 + .../UEditor22/dialogs/table/edittable.html | 64 + .../UEditor22/dialogs/table/edittable.js | 237 + .../UEditor22/dialogs/table/edittd.html | 61 + .../UEditor22/dialogs/table/edittip.html | 33 + .../UEditor22/dialogs/template/config.js | 42 + .../UEditor22/dialogs/template/images/bg.gif | Bin 0 -> 84 bytes .../dialogs/template/images/pre0.png | Bin 0 -> 250 bytes .../dialogs/template/images/pre1.png | Bin 0 -> 291 bytes .../dialogs/template/images/pre2.png | Bin 0 -> 394 bytes .../dialogs/template/images/pre3.png | Bin 0 -> 485 bytes .../dialogs/template/images/pre4.png | Bin 0 -> 393 bytes .../UEditor22/dialogs/template/template.css | 18 + .../UEditor22/dialogs/template/template.html | 26 + .../UEditor22/dialogs/template/template.js | 53 + .../UEditor22/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 .../UEditor22/dialogs/video/images/icons.gif | Bin 0 -> 453 bytes .../UEditor22/dialogs/video/images/icons.png | Bin 0 -> 2678 bytes .../UEditor22/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 .../dialogs/video/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/video/images/right_focus.jpg | Bin 0 -> 11334 bytes .../dialogs/video/images/success.gif | Bin 0 -> 445 bytes .../dialogs/video/images/success.png | Bin 0 -> 1621 bytes .../public/UEditor22/dialogs/video/video.css | 635 + .../public/UEditor22/dialogs/video/video.html | 86 + .../public/UEditor22/dialogs/video/video.js | 797 + .../UEditor22/dialogs/webapp/webapp.html | 53 + .../dialogs/wordimage/fClipboard_ueditor.swf | Bin 0 -> 1908 bytes .../dialogs/wordimage/imageUploader.swf | Bin 0 -> 62857 bytes .../UEditor22/dialogs/wordimage/tangram.js | 1495 + .../dialogs/wordimage/wordimage.html | 111 + .../UEditor22/dialogs/wordimage/wordimage.js | 157 + yshop-drink-vue3/public/UEditor22/index.html | 175 + .../public/UEditor22/lang/en/en.js | 684 + .../UEditor22/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 .../UEditor22/lang/en/images/background.png | Bin 0 -> 3854 bytes .../UEditor22/lang/en/images/button.png | Bin 0 -> 4929 bytes .../public/UEditor22/lang/en/images/copy.png | Bin 0 -> 1222 bytes .../lang/en/images/deletedisable.png | Bin 0 -> 649 bytes .../UEditor22/lang/en/images/deleteenable.png | Bin 0 -> 664 bytes .../lang/en/images/listbackground.png | Bin 0 -> 3750 bytes .../UEditor22/lang/en/images/localimage.png | Bin 0 -> 3083 bytes .../public/UEditor22/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 .../UEditor22/lang/en/images/upload.png | Bin 0 -> 3941 bytes .../UEditor22/lang/zh-cn/images/copy.png | Bin 0 -> 4319 bytes .../lang/zh-cn/images/localimage.png | Bin 0 -> 6979 bytes .../UEditor22/lang/zh-cn/images/music.png | Bin 0 -> 23106 bytes .../UEditor22/lang/zh-cn/images/upload.png | Bin 0 -> 6608 bytes .../public/UEditor22/lang/zh-cn/zh-cn.js | 669 + .../public/UEditor22/php/Uploader.class.php | 372 + .../public/UEditor22/php/action_crawler.php | 44 + .../public/UEditor22/php/action_list.php | 92 + .../public/UEditor22/php/action_upload.php | 66 + .../public/UEditor22/php/config.json | 94 + .../public/UEditor22/php/controller.php | 59 + .../UEditor22/themes/default/css/ueditor.css | 1903 + .../themes/default/css/ueditor.min.css | 8 + .../UEditor22/themes/default/dialogbase.css | 100 + .../themes/default/images/anchor.gif | Bin 0 -> 184 bytes .../UEditor22/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 .../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 .../UEditor22/themes/default/images/icons.gif | Bin 0 -> 20947 bytes .../UEditor22/themes/default/images/icons.png | Bin 0 -> 19694 bytes .../themes/default/images/loaderror.png | Bin 0 -> 3209 bytes .../themes/default/images/loading.gif | Bin 0 -> 734 bytes .../UEditor22/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 .../UEditor22/themes/default/images/scale.png | Bin 0 -> 167 bytes .../themes/default/images/sortable.png | Bin 0 -> 2851 bytes .../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 .../themes/default/images/upload.png | Bin 0 -> 6608 bytes .../themes/default/images/videologo.gif | Bin 0 -> 1604 bytes .../UEditor22/themes/default/images/word.gif | Bin 0 -> 1019 bytes .../themes/default/images/wordpaste.png | Bin 0 -> 6467 bytes .../public/UEditor22/themes/iframe.css | 1 + .../third-party/SyntaxHighlighter/shCore.js | 3655 ++ .../SyntaxHighlighter/shCoreDefault.css | 1 + .../third-party/codemirror/codemirror.css | 104 + .../third-party/codemirror/codemirror.js | 3581 ++ .../highcharts/adapters/mootools-adapter.js | 13 + .../adapters/mootools-adapter.src.js | 313 + .../highcharts/adapters/prototype-adapter.js | 15 + .../adapters/prototype-adapter.src.js | 316 + .../adapters/standalone-framework.js | 17 + .../adapters/standalone-framework.src.js | 583 + .../third-party/highcharts/highcharts-more.js | 50 + .../highcharts/highcharts-more.src.js | 2430 ++ .../third-party/highcharts/highcharts.js | 283 + .../third-party/highcharts/highcharts.src.js | 16974 +++++++++ .../highcharts/modules/annotations.js | 7 + .../highcharts/modules/annotations.src.js | 401 + .../highcharts/modules/canvas-tools.js | 133 + .../highcharts/modules/canvas-tools.src.js | 3113 ++ .../third-party/highcharts/modules/data.js | 17 + .../highcharts/modules/data.src.js | 582 + .../highcharts/modules/drilldown.js | 11 + .../highcharts/modules/drilldown.src.js | 447 + .../highcharts/modules/exporting.js | 22 + .../highcharts/modules/exporting.src.js | 709 + .../third-party/highcharts/modules/funnel.js | 12 + .../highcharts/modules/funnel.src.js | 289 + .../third-party/highcharts/modules/heatmap.js | 1 + .../highcharts/modules/heatmap.src.js | 53 + .../third-party/highcharts/modules/map.js | 27 + .../third-party/highcharts/modules/map.src.js | 1002 + .../highcharts/modules/no-data-to-display.js | 12 + .../modules/no-data-to-display.src.js | 128 + .../highcharts/themes/dark-blue.js | 254 + .../highcharts/themes/dark-green.js | 255 + .../third-party/highcharts/themes/gray.js | 257 + .../third-party/highcharts/themes/grid.js | 103 + .../third-party/highcharts/themes/skies.js | 89 + .../UEditor22/third-party/jquery-1.10.2.js | 9789 +++++ .../third-party/jquery-1.10.2.min.js | 6 + .../third-party/jquery-1.10.2.min.map | 1 + .../snapscreen/UEditorSnapscreen.exe | Bin 0 -> 519936 bytes .../third-party/video-js/font/vjs.eot | Bin 0 -> 3536 bytes .../third-party/video-js/font/vjs.svg | 65 + .../third-party/video-js/font/vjs.ttf | Bin 0 -> 3372 bytes .../third-party/video-js/font/vjs.woff | Bin 0 -> 4228 bytes .../third-party/video-js/video-js.css | 766 + .../third-party/video-js/video-js.min.css | 5 + .../third-party/video-js/video-js.swf | Bin 0 -> 16745 bytes .../third-party/video-js/video.dev.js | 7108 ++++ .../UEditor22/third-party/video-js/video.js | 129 + .../third-party/webuploader/Uploader.swf | Bin 0 -> 49382 bytes .../third-party/webuploader/webuploader.css | 28 + .../webuploader/webuploader.custom.js | 5670 +++ .../webuploader/webuploader.custom.min.js | 2 + .../webuploader/webuploader.flashonly.js | 4176 +++ .../webuploader/webuploader.flashonly.min.js | 2 + .../webuploader/webuploader.html5only.js | 5559 +++ .../webuploader/webuploader.html5only.min.js | 2 + .../third-party/webuploader/webuploader.js | 6733 ++++ .../webuploader/webuploader.min.js | 2 + .../webuploader/webuploader.withoutimage.js | 4593 +++ .../webuploader.withoutimage.min.js | 2 + .../public/UEditor22/third-party/xss.min.js | 1 + .../zeroclipboard/ZeroClipboard.js | 1256 + .../zeroclipboard/ZeroClipboard.min.js | 9 + .../zeroclipboard/ZeroClipboard.swf | Bin 0 -> 3933 bytes .../public/UEditor22/ueditor.all.js | 29559 ++++++++++++++++ .../public/UEditor22/ueditor.all.min.js | 18 + .../public/UEditor22/ueditor.config.js | 497 + .../public/UEditor22/ueditor.parse.js | 1022 + .../public/UEditor22/ueditor.parse.min.js | 7 + yshop-drink-vue3/public/card01.jpg | Bin 0 -> 411857 bytes yshop-drink-vue3/public/card02.jpg | Bin 0 -> 139459 bytes yshop-drink-vue3/public/card03.jpg | Bin 0 -> 523516 bytes yshop-drink-vue3/public/favicon.ico | Bin 0 -> 1250 bytes yshop-drink-vue3/public/logo.gif | Bin 0 -> 8984 bytes yshop-drink-vue3/public/voice_new_order.mp3 | Bin 0 -> 16128 bytes yshop-drink-vue3/src/App.vue | 57 + yshop-drink-vue3/src/api/express/index.ts | 53 + .../src/api/infra/apiAccessLog/index.ts | 34 + .../src/api/infra/apiErrorLog/index.ts | 48 + .../src/api/infra/codegen/index.ts | 122 + .../src/api/infra/config/index.ts | 48 + .../src/api/infra/dataSourceConfig/index.ts | 35 + .../src/api/infra/demo/demo01/index.ts | 40 + .../src/api/infra/demo/demo02/index.ts | 37 + .../src/api/infra/demo/demo03/erp/index.ts | 91 + .../src/api/infra/demo/demo03/inner/index.ts | 57 + .../src/api/infra/demo/demo03/normal/index.ts | 57 + yshop-drink-vue3/src/api/infra/file/index.ts | 45 + .../src/api/infra/fileConfig/index.ts | 61 + yshop-drink-vue3/src/api/infra/job/index.ts | 63 + .../src/api/infra/jobLog/index.ts | 33 + yshop-drink-vue3/src/api/infra/redis/index.ts | 8 + yshop-drink-vue3/src/api/infra/redis/types.ts | 176 + yshop-drink-vue3/src/api/login/index.ts | 81 + .../src/api/login/oauth2/index.ts | 41 + yshop-drink-vue3/src/api/login/types.ts | 31 + yshop-drink-vue3/src/api/mall/coupon/index.ts | 55 + .../src/api/mall/coupon/user/index.ts | 54 + .../src/api/mall/order/storeOrder/index.ts | 120 + .../src/api/mall/product/brand.ts | 56 + .../src/api/mall/product/category.ts | 60 + .../src/api/mall/product/product.ts | 86 + .../product/storeProductRelation/index.ts | 39 + .../mall/product/storeProductReply/index.ts | 47 + .../src/api/mall/shop/ads/index.ts | 39 + .../src/api/mall/shop/materialGroup/index.ts | 36 + .../src/api/mall/shop/recharge/index.ts | 41 + .../src/api/mall/shop/service/index.ts | 45 + .../api/mall/shop/storeProductRule/index.ts | 37 + .../src/api/mall/store/shop/index.ts | 56 + yshop-drink-vue3/src/api/member/user/index.ts | 69 + .../src/api/member/userAddress/index.ts | 47 + .../src/api/member/userBill/index.ts | 45 + .../src/api/message/wechatTemplate/index.ts | 41 + yshop-drink-vue3/src/api/mp/account/index.ts | 51 + yshop-drink-vue3/src/api/mp/account2/index.ts | 36 + .../src/api/mp/autoReply/index.ts | 39 + yshop-drink-vue3/src/api/mp/draft/index.ts | 35 + .../src/api/mp/freePublish/index.ts | 23 + yshop-drink-vue3/src/api/mp/material/index.ts | 16 + yshop-drink-vue3/src/api/mp/menu/index.ts | 26 + yshop-drink-vue3/src/api/mp/message/index.ts | 17 + .../src/api/mp/statistics/index.ts | 33 + yshop-drink-vue3/src/api/mp/tag/index.ts | 60 + yshop-drink-vue3/src/api/mp/user/index.ts | 31 + .../src/api/pay/merchantDetails/index.ts | 51 + yshop-drink-vue3/src/api/score/order/index.ts | 59 + .../src/api/score/product/index.ts | 44 + yshop-drink-vue3/src/api/system/area/index.ts | 11 + yshop-drink-vue3/src/api/system/dept/index.ts | 43 + .../src/api/system/dict/dict.data.ts | 49 + .../src/api/system/dict/dict.type.ts | 44 + .../src/api/system/loginLog/index.ts | 25 + .../src/api/system/mail/account/index.ts | 42 + .../src/api/system/mail/log/index.ts | 30 + .../src/api/system/mail/template/index.ts | 50 + yshop-drink-vue3/src/api/system/menu/index.ts | 49 + .../src/api/system/notice/index.ts | 42 + .../src/api/system/notify/message/index.ts | 49 + .../src/api/system/notify/template/index.ts | 49 + .../src/api/system/oauth2/client.ts | 47 + .../src/api/system/oauth2/token.ts | 22 + .../src/api/system/operatelog/index.ts | 30 + .../src/api/system/permission/index.ts | 42 + yshop-drink-vue3/src/api/system/post/index.ts | 46 + yshop-drink-vue3/src/api/system/role/index.ts | 61 + .../src/api/system/sms/smsChannel/index.ts | 43 + .../src/api/system/sms/smsLog/index.ts | 37 + .../src/api/system/sms/smsTemplate/index.ts | 60 + .../src/api/system/social/client/index.ts | 37 + .../src/api/system/social/user/index.ts | 24 + .../src/api/system/tenant/index.ts | 62 + .../src/api/system/tenantPackage/index.ts | 42 + yshop-drink-vue3/src/api/system/user/index.ts | 81 + .../src/api/system/user/profile.ts | 65 + .../src/api/system/user/socialUser.ts | 31 + yshop-drink-vue3/src/api/tools/material.js | 46 + .../src/api/tools/materialgroup.js | 52 + yshop-drink-vue3/src/assets/imgs/avatar.gif | Bin 0 -> 6334 bytes yshop-drink-vue3/src/assets/imgs/avatar.jpg | Bin 0 -> 6264 bytes yshop-drink-vue3/src/assets/imgs/card01.jpg | Bin 0 -> 411857 bytes yshop-drink-vue3/src/assets/imgs/card02.jpg | Bin 0 -> 139459 bytes yshop-drink-vue3/src/assets/imgs/card03.jpg | Bin 0 -> 523516 bytes .../src/assets/imgs/diy/app-nav-bar-mp.png | Bin 0 -> 3595 bytes .../src/assets/imgs/diy/statusBar.png | Bin 0 -> 8917 bytes yshop-drink-vue3/src/assets/imgs/icons.png | Bin 0 -> 19694 bytes yshop-drink-vue3/src/assets/imgs/login_bg.png | Bin 0 -> 1543364 bytes yshop-drink-vue3/src/assets/imgs/logo.png | Bin 0 -> 8984 bytes yshop-drink-vue3/src/assets/imgs/profile.jpg | Bin 0 -> 7885 bytes yshop-drink-vue3/src/assets/imgs/wechat.png | Bin 0 -> 1881 bytes .../src/assets/map/json/china.json | 856 + yshop-drink-vue3/src/assets/svgs/403.svg | 1 + yshop-drink-vue3/src/assets/svgs/404.svg | 1 + yshop-drink-vue3/src/assets/svgs/500.svg | 1 + yshop-drink-vue3/src/assets/svgs/icon.svg | 1 + yshop-drink-vue3/src/assets/svgs/login-bg.svg | 1 + .../src/assets/svgs/login-box-bg.svg | 1 + .../src/assets/svgs/member_balance.svg | 1 + .../svgs/member_expenditure_balance.svg | 1 + .../src/assets/svgs/member_level.svg | 1 + .../src/assets/svgs/member_point.svg | 1 + .../assets/svgs/member_recharge_balance.svg | 1 + yshop-drink-vue3/src/assets/svgs/message.svg | 1 + yshop-drink-vue3/src/assets/svgs/money.svg | 1 + .../src/assets/svgs/pay/icon/alipay_app.svg | 1 + .../src/assets/svgs/pay/icon/alipay_bar.svg | 2 + .../src/assets/svgs/pay/icon/alipay_pc.svg | 1 + .../src/assets/svgs/pay/icon/alipay_qr.svg | 2 + .../src/assets/svgs/pay/icon/alipay_wap.svg | 1 + .../src/assets/svgs/pay/icon/mock.svg | 1 + .../src/assets/svgs/pay/icon/wx_app.svg | 2 + .../src/assets/svgs/pay/icon/wx_bar.svg | 1 + .../src/assets/svgs/pay/icon/wx_lite.svg | 1 + .../src/assets/svgs/pay/icon/wx_native.svg | 1 + .../src/assets/svgs/pay/icon/wx_pub.svg | 2 + yshop-drink-vue3/src/assets/svgs/peoples.svg | 1 + yshop-drink-vue3/src/assets/svgs/shopping.svg | 1 + .../AppLinkInput/AppLinkSelectDialog.vue | 207 + .../src/components/AppLinkInput/data.ts | 228 + .../src/components/AppLinkInput/index.vue | 43 + .../src/components/Backtop/index.ts | 3 + .../src/components/Backtop/src/Backtop.vue | 17 + yshop-drink-vue3/src/components/Card/index.ts | 3 + .../src/components/Card/src/CardTitle.vue | 37 + .../src/components/ColorInput/index.vue | 34 + .../src/components/ConfigGlobal/index.ts | 3 + .../ConfigGlobal/src/ConfigGlobal.vue | 62 + .../src/components/ContentDetailWrap/index.ts | 3 + .../src/ContentDetailWrap.vue | 58 + .../src/components/ContentWrap/index.ts | 3 + .../ContentWrap/src/ContentWrap.vue | 37 + .../src/components/CountTo/index.ts | 3 + .../src/components/CountTo/src/CountTo.vue | 182 + .../src/components/Crontab/index.ts | 2 + .../src/components/Crontab/src/Crontab.vue | 1015 + .../src/components/Cropper/index.ts | 4 + .../components/Cropper/src/CopperModal.vue | 261 + .../src/components/Cropper/src/Cropper.vue | 183 + .../components/Cropper/src/CropperAvatar.vue | 142 + .../src/components/Cropper/src/types.ts | 8 + .../src/components/Descriptions/index.ts | 4 + .../Descriptions/src/Descriptions.vue | 167 + .../src/DescriptionsItemLabel.vue | 29 + .../src/components/Dialog/index.ts | 3 + .../src/components/Dialog/src/Dialog.vue | 140 + .../src/components/DictTag/index.ts | 3 + .../src/components/DictTag/src/DictTag.vue | 60 + .../src/components/DocAlert/index.vue | 34 + .../src/components/Draggable/index.vue | 77 + .../src/components/Echart/index.ts | 3 + .../src/components/Echart/src/Echart.vue | 115 + .../src/components/Editor/index.ts | 8 + .../src/components/Editor/src/Editor.vue | 202 + .../src/components/Error/index.ts | 3 + .../src/components/Error/src/Error.vue | 58 + yshop-drink-vue3/src/components/Form/index.ts | 15 + .../src/components/Form/src/Form.vue | 307 + .../src/components/Form/src/componentMap.ts | 55 + .../Form/src/components/useRenderCheckbox.tsx | 26 + .../Form/src/components/useRenderRadio.tsx | 26 + .../Form/src/components/useRenderSelect.tsx | 57 + .../src/components/Form/src/helper.ts | 148 + .../src/components/Form/src/types.ts | 17 + .../src/components/FormCreate/index.ts | 4 + .../FormCreate/src/components/DictSelect.vue | 59 + .../src/components/useApiSelect.tsx | 143 + .../components/FormCreate/src/config/index.ts | 15 + .../FormCreate/src/config/selectRule.ts | 147 + .../src/config/useDictSelectRule.ts | 62 + .../FormCreate/src/config/useEditorRule.ts | 32 + .../FormCreate/src/config/useSelectRule.ts | 34 + .../src/config/useUploadFileRule.ts | 80 + .../FormCreate/src/config/useUploadImgRule.ts | 89 + .../src/config/useUploadImgsRule.ts | 84 + .../components/FormCreate/src/type/index.ts | 50 + .../FormCreate/src/useFormCreateDesigner.ts | 100 + .../components/FormCreate/src/utils/index.ts | 79 + .../src/components/Highlight/index.ts | 3 + .../components/Highlight/src/Highlight.vue | 65 + .../src/components/IFrame/index.ts | 3 + .../src/components/IFrame/src/IFrame.vue | 32 + yshop-drink-vue3/src/components/Icon/index.ts | 4 + .../src/components/Icon/src/Icon.vue | 86 + .../src/components/Icon/src/IconSelect.vue | 229 + .../src/components/Icon/src/data.ts | 1961 + .../src/components/ImageViewer/index.ts | 33 + .../ImageViewer/src/ImageViewer.vue | 35 + .../src/components/ImageViewer/src/types.ts | 9 + .../src/components/Infotip/index.ts | 3 + .../src/components/Infotip/src/Infotip.vue | 54 + .../src/components/InputPassword/index.ts | 3 + .../InputPassword/src/InputPassword.vue | 152 + .../src/components/InputWithColor/index.vue | 59 + .../src/components/MagicCubeEditor/index.vue | 270 + .../src/components/MagicCubeEditor/util.ts | 72 + .../src/components/Materials/index.ts | 10 + .../components/Materials/src/Materials.vue | 514 + .../Materials/src/editorMaterials.vue | 411 + .../src/components/OperateLogV2/index.ts | 3 + .../OperateLogV2/src/OperateLogV2.vue | 105 + .../src/components/Pagination/index.vue | 87 + .../src/components/Qrcode/index.ts | 3 + .../src/components/Qrcode/src/Qrcode.vue | 253 + .../src/components/RouterSearch/index.vue | 111 + .../src/components/Search/index.ts | 3 + .../src/components/Search/src/Search.vue | 153 + .../ShortcutDateRangePicker/index.vue | 84 + .../SimpleProcessDesigner/src/addNode.vue | 237 + .../SimpleProcessDesigner/src/nodeWrap.vue | 297 + .../SimpleProcessDesigner/src/util.ts | 165 + .../SimpleProcessDesigner/theme/workflow.css | 1292 + .../src/components/Sticky/index.ts | 3 + .../src/components/Sticky/src/Sticky.vue | 143 + .../src/components/SummaryCard/index.vue | 52 + .../src/components/Table/index.ts | 13 + .../src/components/Table/src/Table.vue | 311 + .../components/Table/src/TableSelectForm.vue | 91 + .../src/components/Table/src/helper.ts | 8 + .../src/components/Table/src/types.ts | 26 + .../src/components/Tooltip/index.ts | 3 + .../src/components/Tooltip/src/Tooltip.vue | 17 + .../src/components/UploadFile/index.ts | 5 + .../components/UploadFile/src/UploadFile.vue | 213 + .../components/UploadFile/src/UploadImg.vue | 271 + .../components/UploadFile/src/UploadImgs.vue | 323 + .../components/UploadFile/src/useUpload.ts | 97 + .../src/components/Verifition/index.ts | 3 + .../src/components/Verifition/src/Verify.vue | 441 + .../Verifition/src/Verify/VerifyPoints.vue | 250 + .../Verifition/src/Verify/VerifySlide.vue | 376 + .../components/Verifition/src/Verify/index.ts | 4 + .../components/Verifition/src/utils/ase.ts | 14 + .../components/Verifition/src/utils/util.ts | 97 + .../components/VerticalButtonGroup/index.vue | 44 + .../src/components/XButton/index.ts | 4 + .../src/components/XButton/src/XButton.vue | 50 + .../components/XButton/src/XTextButton.vue | 49 + yshop-drink-vue3/src/components/index.ts | 6 + yshop-drink-vue3/src/config/axios/config.ts | 28 + .../src/config/axios/errorCode.ts | 6 + yshop-drink-vue3/src/config/axios/index.ts | 51 + yshop-drink-vue3/src/config/axios/service.ts | 230 + yshop-drink-vue3/src/directives/index.ts | 13 + .../src/directives/permission/hasPermi.ts | 27 + .../src/directives/permission/hasRole.ts | 27 + .../src/hooks/event/useScrollTo.ts | 60 + yshop-drink-vue3/src/hooks/web/useCache.ts | 39 + .../src/hooks/web/useConfigGlobal.ts | 9 + .../src/hooks/web/useCrudSchemas.ts | 326 + yshop-drink-vue3/src/hooks/web/useDesign.ts | 18 + yshop-drink-vue3/src/hooks/web/useEmitt.ts | 22 + yshop-drink-vue3/src/hooks/web/useForm.ts | 94 + yshop-drink-vue3/src/hooks/web/useGuide.ts | 49 + yshop-drink-vue3/src/hooks/web/useI18n.ts | 53 + yshop-drink-vue3/src/hooks/web/useIcon.ts | 8 + yshop-drink-vue3/src/hooks/web/useLocale.ts | 35 + yshop-drink-vue3/src/hooks/web/useMessage.ts | 95 + .../src/hooks/web/useNProgress.ts | 33 + yshop-drink-vue3/src/hooks/web/useNetwork.ts | 21 + yshop-drink-vue3/src/hooks/web/useNow.ts | 60 + .../src/hooks/web/usePageLoading.ts | 18 + yshop-drink-vue3/src/hooks/web/useTable.ts | 223 + yshop-drink-vue3/src/hooks/web/useTagsView.ts | 63 + yshop-drink-vue3/src/hooks/web/useTimeAgo.ts | 49 + yshop-drink-vue3/src/hooks/web/useTitle.ts | 24 + .../src/hooks/web/useValidator.ts | 60 + .../src/hooks/web/useWatermark.ts | 55 + yshop-drink-vue3/src/layout/Layout.vue | 78 + .../src/layout/components/AppView.vue | 72 + .../src/layout/components/Breadcrumb/index.ts | 3 + .../components/Breadcrumb/src/Breadcrumb.vue | 130 + .../components/Breadcrumb/src/helper.ts | 31 + .../src/layout/components/Collapse/index.ts | 3 + .../components/Collapse/src/Collapse.vue | 35 + .../layout/components/ContextMenu/index.ts | 10 + .../ContextMenu/src/ContextMenu.vue | 76 + .../src/layout/components/Footer/index.ts | 3 + .../layout/components/Footer/src/Footer.vue | 24 + .../layout/components/LocaleDropdown/index.ts | 3 + .../LocaleDropdown/src/LocaleDropdown.vue | 52 + .../src/layout/components/Logo/index.ts | 3 + .../src/layout/components/Logo/src/Logo.vue | 88 + .../src/layout/components/Menu/index.ts | 3 + .../src/layout/components/Menu/src/Menu.vue | 257 + .../Menu/src/components/useRenderMenuItem.tsx | 50 + .../src/components/useRenderMenuTitle.tsx | 27 + .../src/layout/components/Menu/src/helper.ts | 54 + .../src/layout/components/Message/index.ts | 3 + .../layout/components/Message/src/Message.vue | 126 + .../src/layout/components/Screenfull/index.ts | 3 + .../components/Screenfull/src/Screenfull.vue | 32 + .../src/layout/components/Setting/index.ts | 3 + .../layout/components/Setting/src/Setting.vue | 299 + .../src/components/ColorRadioPicker.vue | 67 + .../src/components/InterfaceDisplay.vue | 224 + .../src/components/LayoutRadioPicker.vue | 172 + .../layout/components/SizeDropdown/index.ts | 3 + .../SizeDropdown/src/SizeDropdown.vue | 40 + .../src/layout/components/TabMenu/index.ts | 3 + .../layout/components/TabMenu/src/TabMenu.vue | 240 + .../layout/components/TabMenu/src/helper.ts | 51 + .../src/layout/components/TagsView/index.ts | 3 + .../components/TagsView/src/TagsView.vue | 585 + .../layout/components/TagsView/src/helper.ts | 21 + .../layout/components/ThemeSwitch/index.ts | 3 + .../ThemeSwitch/src/ThemeSwitch.vue | 46 + .../src/layout/components/ToolHeader.vue | 95 + .../src/layout/components/UserInfo/index.ts | 3 + .../components/UserInfo/src/UserInfo.vue | 113 + .../UserInfo/src/components/LockDialog.vue | 98 + .../UserInfo/src/components/LockPage.vue | 270 + .../src/layout/components/useRenderLayout.tsx | 306 + yshop-drink-vue3/src/locales/en.ts | 457 + yshop-drink-vue3/src/locales/zh-CN.ts | 452 + yshop-drink-vue3/src/main.ts | 74 + yshop-drink-vue3/src/permission.ts | 106 + .../src/plugins/animate.css/index.ts | 1 + yshop-drink-vue3/src/plugins/echarts/index.ts | 49 + .../src/plugins/elementPlus/index.ts | 17 + .../src/plugins/formCreate/index.ts | 74 + yshop-drink-vue3/src/plugins/svgIcon/index.ts | 3 + yshop-drink-vue3/src/plugins/tongji/index.ts | 23 + yshop-drink-vue3/src/plugins/unocss/index.ts | 1 + .../src/plugins/vueI18n/helper.ts | 3 + yshop-drink-vue3/src/plugins/vueI18n/index.ts | 42 + yshop-drink-vue3/src/router/index.ts | 28 + .../src/router/modules/remaining.ts | 252 + yshop-drink-vue3/src/store/index.ts | 12 + yshop-drink-vue3/src/store/modules/app.ts | 277 + yshop-drink-vue3/src/store/modules/dict.ts | 104 + yshop-drink-vue3/src/store/modules/locale.ts | 59 + yshop-drink-vue3/src/store/modules/lock.ts | 48 + .../src/store/modules/permission.ts | 68 + .../src/store/modules/simpleWorkflow.ts | 55 + .../src/store/modules/tagsView.ts | 141 + yshop-drink-vue3/src/store/modules/user.ts | 103 + .../src/styles/FormCreate/fonts/fontello.woff | Bin 0 -> 4252 bytes .../src/styles/FormCreate/index.scss | 22 + .../src/styles/global.module.scss | 6 + yshop-drink-vue3/src/styles/index.scss | 36 + yshop-drink-vue3/src/styles/theme.scss | 6 + yshop-drink-vue3/src/styles/var.css | 66 + yshop-drink-vue3/src/styles/variables.scss | 4 + yshop-drink-vue3/src/types/components.d.ts | 56 + yshop-drink-vue3/src/types/configGlobal.d.ts | 4 + yshop-drink-vue3/src/types/contextMenu.d.ts | 7 + yshop-drink-vue3/src/types/descriptions.d.ts | 14 + yshop-drink-vue3/src/types/elementPlus.d.ts | 3 + yshop-drink-vue3/src/types/form.d.ts | 44 + yshop-drink-vue3/src/types/icon.d.ts | 5 + yshop-drink-vue3/src/types/infoTip.d.ts | 4 + yshop-drink-vue3/src/types/layout.d.ts | 1 + .../src/types/localeDropdown.d.ts | 10 + yshop-drink-vue3/src/types/qrcode.d.ts | 9 + yshop-drink-vue3/src/types/table.d.ts | 44 + yshop-drink-vue3/src/types/theme.d.ts | 16 + yshop-drink-vue3/src/utils/Logger.ts | 100 + yshop-drink-vue3/src/utils/auth.ts | 71 + yshop-drink-vue3/src/utils/color.ts | 174 + yshop-drink-vue3/src/utils/constants.ts | 431 + yshop-drink-vue3/src/utils/dateUtil.ts | 18 + yshop-drink-vue3/src/utils/dict.ts | 213 + yshop-drink-vue3/src/utils/domUtils.ts | 289 + yshop-drink-vue3/src/utils/download.ts | 38 + yshop-drink-vue3/src/utils/filt.ts | 157 + yshop-drink-vue3/src/utils/formCreate.ts | 57 + yshop-drink-vue3/src/utils/formRules.ts | 7 + yshop-drink-vue3/src/utils/formatTime.ts | 332 + yshop-drink-vue3/src/utils/formatter.ts | 7 + yshop-drink-vue3/src/utils/index.ts | 451 + yshop-drink-vue3/src/utils/is.ts | 117 + yshop-drink-vue3/src/utils/jsencrypt.ts | 31 + yshop-drink-vue3/src/utils/permission.ts | 45 + yshop-drink-vue3/src/utils/propTypes.ts | 24 + yshop-drink-vue3/src/utils/routerHelper.ts | 253 + yshop-drink-vue3/src/utils/tree.ts | 400 + yshop-drink-vue3/src/utils/tsxHelper.ts | 16 + yshop-drink-vue3/src/views/Error/403.vue | 8 + yshop-drink-vue3/src/views/Error/404.vue | 7 + yshop-drink-vue3/src/views/Error/500.vue | 7 + yshop-drink-vue3/src/views/Home/Index.vue | 318 + yshop-drink-vue3/src/views/Home/Index2.vue | 319 + .../src/views/Home/PanelGroupT.vue | 180 + .../src/views/Home/echarts-data.ts | 308 + yshop-drink-vue3/src/views/Home/types.ts | 55 + yshop-drink-vue3/src/views/Login/Login.vue | 101 + .../src/views/Login/SocialLogin.vue | 343 + .../src/views/Login/components/LoginForm.vue | 266 + .../views/Login/components/LoginFormTitle.vue | 26 + .../src/views/Login/components/MobileForm.vue | 226 + .../src/views/Login/components/QrCodeForm.vue | 30 + .../views/Login/components/RegisterForm.vue | 142 + .../src/views/Login/components/SSOLogin.vue | 199 + .../src/views/Login/components/index.ts | 8 + .../src/views/Login/components/useLogin.ts | 42 + yshop-drink-vue3/src/views/Profile/Index.vue | 65 + .../views/Profile/components/BasicInfo.vue | 96 + .../views/Profile/components/ProfileUser.vue | 99 + .../src/views/Profile/components/ResetPwd.vue | 73 + .../views/Profile/components/UserAvatar.vue | 45 + .../views/Profile/components/UserSocial.vue | 107 + .../src/views/Profile/components/index.ts | 7 + .../src/views/Redirect/Redirect.vue | 28 + .../src/views/express/ExpressForm.vue | 103 + .../src/views/express/ExpressSet.vue | 96 + yshop-drink-vue3/src/views/express/index.vue | 182 + .../infra/apiAccessLog/ApiAccessLogDetail.vue | 79 + .../src/views/infra/apiAccessLog/index.vue | 224 + .../infra/apiErrorLog/ApiErrorLogDetail.vue | 81 + .../src/views/infra/apiErrorLog/index.vue | 250 + .../src/views/infra/build/index.vue | 142 + .../src/views/infra/codegen/EditTable.vue | 87 + .../src/views/infra/codegen/ImportTable.vue | 151 + .../src/views/infra/codegen/PreviewCode.vue | 222 + .../codegen/components/BasicInfoForm.vue | 87 + .../codegen/components/ColumInfoForm.vue | 153 + .../codegen/components/GenerateInfoForm.vue | 374 + .../views/infra/codegen/components/index.ts | 4 + .../src/views/infra/codegen/index.vue | 253 + .../src/views/infra/config/ConfigForm.vue | 131 + .../src/views/infra/config/index.vue | 226 + .../dataSourceConfig/DataSourceConfigForm.vue | 111 + .../views/infra/dataSourceConfig/index.vue | 106 + .../infra/demo/demo01/Demo01ContactForm.vue | 126 + .../src/views/infra/demo/demo01/index.vue | 212 + .../infra/demo/demo02/Demo02CategoryForm.vue | 114 + .../src/views/infra/demo/demo02/index.vue | 205 + .../demo/demo03/erp/Demo03StudentForm.vue | 121 + .../erp/components/Demo03CourseForm.vue | 99 + .../erp/components/Demo03CourseList.vue | 130 + .../demo03/erp/components/Demo03GradeForm.vue | 99 + .../demo03/erp/components/Demo03GradeList.vue | 130 + .../src/views/infra/demo/demo03/erp/index.vue | 246 + .../demo/demo03/inner/Demo03StudentForm.vue | 153 + .../inner/components/Demo03CourseForm.vue | 100 + .../inner/components/Demo03CourseList.vue | 51 + .../inner/components/Demo03GradeForm.vue | 72 + .../inner/components/Demo03GradeList.vue | 55 + .../views/infra/demo/demo03/inner/index.vue | 227 + .../demo/demo03/normal/Demo03StudentForm.vue | 153 + .../normal/components/Demo03CourseForm.vue | 100 + .../normal/components/Demo03GradeForm.vue | 72 + .../views/infra/demo/demo03/normal/index.vue | 212 + .../src/views/infra/druid/index.vue | 25 + .../src/views/infra/file/FileForm.vue | 99 + .../src/views/infra/file/index.vue | 188 + .../views/infra/fileConfig/FileConfigForm.vue | 196 + .../src/views/infra/fileConfig/index.vue | 215 + .../src/views/infra/job/JobDetail.vue | 73 + .../src/views/infra/job/JobForm.vue | 137 + .../src/views/infra/job/index.vue | 303 + .../views/infra/job/logger/JobLogDetail.vue | 59 + .../src/views/infra/job/logger/index.vue | 196 + .../src/views/infra/redis/index.vue | 266 + .../src/views/infra/server/index.vue | 25 + .../src/views/infra/skywalking/index.vue | 25 + .../src/views/infra/swagger/index.vue | 26 + .../src/views/infra/webSocket/index.vue | 181 + .../src/views/mall/coupon/Form.vue | 210 + .../src/views/mall/coupon/index.vue | 243 + .../views/mall/coupon/user/OrderRecord.vue | 81 + .../src/views/mall/member/user/UserDetail.vue | 149 + .../src/views/mall/member/user/UserForm.vue | 182 + .../src/views/mall/member/user/index.vue | 216 + .../src/views/mall/member/user/yue.vue | 104 + .../member/userAddress/UserAddressForm.vue | 140 + .../views/mall/member/userAddress/index.vue | 168 + .../mall/order/storeOrder/OrderDetail.vue | 127 + .../mall/order/storeOrder/OrderRecord.vue | 30 + .../views/mall/order/storeOrder/OrderSend.vue | 206 + .../mall/order/storeOrder/OrderSendInfo.vue | 221 + .../mall/order/storeOrder/StoreOrderForm.vue | 194 + .../order/storeOrder/StoreOrderRefund.vue | 190 + .../order/storeOrder/StoreOrderRemark.vue | 184 + .../src/views/mall/order/storeOrder/index.vue | 448 + .../src/views/mall/order/storeOrder/work.vue | 292 + .../mall/product/category/CategoryForm.vue | 172 + .../src/views/mall/product/category/index.vue | 150 + .../mall/product/storeProduct/CateTree.vue | 56 + .../product/storeProduct/StoreProductForm.vue | 960 + .../views/mall/product/storeProduct/index.vue | 291 + .../product/storeProductRelation/index.vue | 124 + .../mall/product/storeProductReply/index.vue | 145 + .../src/views/mall/shop/ads/AdsForm.vue | 142 + .../src/views/mall/shop/ads/index.vue | 177 + .../views/mall/shop/recharge/RechargeForm.vue | 119 + .../src/views/mall/shop/recharge/index.vue | 186 + .../views/mall/shop/service/ServiceForm.vue | 144 + .../src/views/mall/shop/service/index.vue | 199 + .../storeProductRule/StoreProductRuleForm.vue | 246 + .../mall/shop/storeProductRule/index.vue | 177 + .../src/views/mall/store/shop/ShopForm.vue | 254 + .../src/views/mall/store/shop/index.vue | 232 + .../src/views/mall/store/shop/map.vue | 144 + .../wechatTemplate/WechatTemplateForm.vue | 124 + .../views/message/wechatTemplate/index.vue | 185 + .../src/views/mp/account/AccountForm.vue | 160 + .../src/views/mp/account/index.vue | 215 + .../src/views/mp/account2/AccountForm.vue | 136 + .../src/views/mp/account2/index.vue | 160 + .../mp/autoReply/components/ReplyForm.vue | 80 + .../mp/autoReply/components/ReplyTable.vue | 115 + .../views/mp/autoReply/components/types.ts | 7 + .../src/views/mp/autoReply/index.vue | 239 + .../mp/components/wx-account-select/index.ts | 3 + .../mp/components/wx-account-select/main.vue | 47 + .../views/mp/components/wx-location/index.ts | 3 + .../views/mp/components/wx-location/main.vue | 73 + .../mp/components/wx-material-select/index.ts | 6 + .../mp/components/wx-material-select/main.vue | 279 + .../mp/components/wx-material-select/types.ts | 11 + .../src/views/mp/components/wx-msg/card.scss | 116 + .../views/mp/components/wx-msg/comment.scss | 126 + .../mp/components/wx-msg/components/Msg.vue | 69 + .../components/wx-msg/components/MsgEvent.vue | 49 + .../components/wx-msg/components/MsgList.vue | 62 + .../src/views/mp/components/wx-msg/index.ts | 6 + .../src/views/mp/components/wx-msg/main.vue | 192 + .../src/views/mp/components/wx-msg/types.ts | 17 + .../src/views/mp/components/wx-music/index.ts | 3 + .../src/views/mp/components/wx-music/main.vue | 62 + .../src/views/mp/components/wx-news/index.ts | 3 + .../src/views/mp/components/wx-news/main.vue | 119 + .../wx-reply/components/TabImage.vue | 171 + .../wx-reply/components/TabMusic.vue | 116 + .../wx-reply/components/TabNews.vue | 76 + .../wx-reply/components/TabText.vue | 22 + .../wx-reply/components/TabVideo.vue | 128 + .../wx-reply/components/TabVoice.vue | 160 + .../components/wx-reply/components/types.ts | 54 + .../src/views/mp/components/wx-reply/index.ts | 7 + .../src/views/mp/components/wx-reply/main.vue | 208 + .../mp/components/wx-video-play/index.ts | 3 + .../mp/components/wx-video-play/main.vue | 73 + .../mp/components/wx-voice-play/index.ts | 3 + .../mp/components/wx-voice-play/main.vue | 105 + .../views/mp/draft/components/CoverSelect.vue | 166 + .../views/mp/draft/components/DraftTable.vue | 87 + .../views/mp/draft/components/NewsForm.vue | 304 + .../src/views/mp/draft/components/index.ts | 7 + .../src/views/mp/draft/components/types.ts | 40 + .../src/views/mp/draft/editor-config.ts | 75 + yshop-drink-vue3/src/views/mp/draft/index.vue | 200 + yshop-drink-vue3/src/views/mp/draft/mock.js | 151 + .../src/views/mp/freePublish/index.vue | 334 + .../src/views/mp/hooks/useUpload.ts | 50 + .../mp/material/components/ImageTable.vue | 83 + .../mp/material/components/UploadFile.vue | 77 + .../mp/material/components/UploadVideo.vue | 129 + .../mp/material/components/VideoTable.vue | 59 + .../mp/material/components/VoiceTable.vue | 51 + .../views/mp/material/components/upload.ts | 32 + .../src/views/mp/material/index.vue | 158 + .../views/mp/menu/assets/iphone_backImg.png | Bin 0 -> 34272 bytes .../src/views/mp/menu/assets/menu_foot.png | Bin 0 -> 1348 bytes .../src/views/mp/menu/assets/menu_head.png | Bin 0 -> 12673 bytes .../views/mp/menu/components/MenuEditor.vue | 244 + .../mp/menu/components/MenuPreviewer.vue | 226 + .../views/mp/menu/components/menuOptions.ts | 42 + .../src/views/mp/menu/components/types.ts | 73 + yshop-drink-vue3/src/views/mp/menu/index.vue | 400 + .../src/views/mp/message/MessageTable.vue | 145 + .../src/views/mp/message/index.vue | 152 + .../src/views/mp/statistics/index.vue | 368 + yshop-drink-vue3/src/views/mp/tag/TagForm.vue | 98 + yshop-drink-vue3/src/views/mp/tag/index.vue | 152 + .../src/views/mp/user/UserForm.vue | 102 + yshop-drink-vue3/src/views/mp/user/index.vue | 179 + .../merchantDetails/MerchantDetailsForm.vue | 201 + .../src/views/pay/merchantDetails/index.vue | 146 + .../src/views/score/order/OrderDetail.vue | 90 + .../src/views/score/order/OrderForm.vue | 148 + .../src/views/score/order/index.vue | 290 + .../src/views/score/product/ProductForm.vue | 220 + .../src/views/score/product/index.vue | 195 + .../src/views/system/area/AreaForm.vue | 72 + .../src/views/system/area/index.vue | 73 + .../src/views/system/dept/DeptForm.vue | 174 + .../src/views/system/dept/index.vue | 189 + .../src/views/system/dict/DictTypeForm.vue | 124 + .../views/system/dict/data/DictDataForm.vue | 183 + .../src/views/system/dict/data/index.vue | 210 + .../src/views/system/dict/index.vue | 231 + .../views/system/loginlog/LoginLogDetail.vue | 51 + .../src/views/system/loginlog/index.vue | 178 + .../system/mail/account/MailAccountDetail.vue | 28 + .../system/mail/account/MailAccountForm.vue | 68 + .../views/system/mail/account/account.data.ts | 85 + .../src/views/system/mail/account/index.vue | 103 + .../views/system/mail/log/MailLogDetail.vue | 33 + .../src/views/system/mail/log/index.vue | 60 + .../src/views/system/mail/log/log.data.ts | 132 + .../system/mail/template/MailTemplateForm.vue | 74 + .../mail/template/MailTemplateSendForm.vue | 115 + .../src/views/system/mail/template/index.vue | 104 + .../system/mail/template/template.data.ts | 112 + .../src/views/system/menu/MenuForm.vue | 256 + .../src/views/system/menu/index.vue | 212 + .../src/views/system/notice/NoticeForm.vue | 132 + .../src/views/system/notice/index.vue | 189 + .../notify/message/NotifyMessageDetail.vue | 66 + .../src/views/system/notify/message/index.vue | 210 + .../notify/my/MyNotifyMessageDetail.vue | 48 + .../src/views/system/notify/my/index.vue | 216 + .../notify/template/NotifyTemplateForm.vue | 141 + .../template/NotifyTemplateSendForm.vue | 146 + .../views/system/notify/template/index.vue | 233 + .../views/system/oauth2/client/ClientForm.vue | 261 + .../src/views/system/oauth2/client/index.vue | 189 + .../src/views/system/oauth2/token/index.vue | 162 + .../system/operatelog/OperateLogDetail.vue | 68 + .../src/views/system/operatelog/index.vue | 210 + .../src/views/system/post/PostForm.vue | 125 + .../src/views/system/post/index.vue | 201 + .../views/system/role/RoleAssignMenuForm.vue | 160 + .../system/role/RoleDataPermissionForm.vue | 169 + .../src/views/system/role/RoleForm.vue | 126 + .../src/views/system/role/index.vue | 266 + .../system/sms/channel/SmsChannelForm.vue | 144 + .../src/views/system/sms/channel/index.vue | 200 + .../src/views/system/sms/log/SmsLogDetail.vue | 86 + .../src/views/system/sms/log/index.vue | 266 + .../system/sms/template/SmsTemplateForm.vue | 163 + .../sms/template/SmsTemplateSendForm.vue | 120 + .../src/views/system/sms/template/index.vue | 314 + .../system/social/client/SocialClientForm.vue | 154 + .../src/views/system/social/client/index.vue | 225 + .../system/social/user/SocialUserDetail.vue | 60 + .../src/views/system/social/user/index.vue | 185 + .../src/views/system/tenant/TenantForm.vue | 183 + .../src/views/system/tenant/index.vue | 264 + .../tenantPackage/TenantPackageForm.vue | 194 + .../src/views/system/tenantPackage/index.vue | 178 + .../src/views/system/user/DeptTree.vue | 63 + .../views/system/user/UserAssignRoleForm.vue | 96 + .../src/views/system/user/UserForm.vue | 219 + .../src/views/system/user/UserImportForm.vue | 138 + .../src/views/system/user/index.vue | 358 + yshop-drink-vue3/stylelint.config.js | 235 + yshop-drink-vue3/tsconfig.json | 43 + yshop-drink-vue3/types/components.d.ts | 8 + yshop-drink-vue3/types/custom-types.d.ts | 27 + yshop-drink-vue3/types/env.d.ts | 32 + yshop-drink-vue3/types/global.d.ts | 53 + yshop-drink-vue3/types/router.d.ts | 81 + yshop-drink-vue3/uno.config.ts | 108 + yshop-drink-vue3/vite.config.ts | 78 + 1227 files changed, 337804 insertions(+), 4 deletions(-) delete mode 100644 .DS_Store delete mode 160000 yshop-drink-vue3 create mode 100644 yshop-drink-vue3/.editorconfig create mode 100644 yshop-drink-vue3/.env create mode 100644 yshop-drink-vue3/.env.dev create mode 100644 yshop-drink-vue3/.env.prod create mode 100644 yshop-drink-vue3/.env.stage create mode 100644 yshop-drink-vue3/.env.test create mode 100644 yshop-drink-vue3/.eslintignore create mode 100644 yshop-drink-vue3/.eslintrc-auto-import.json create mode 100644 yshop-drink-vue3/.eslintrc.js create mode 100644 yshop-drink-vue3/.gitignore create mode 100644 yshop-drink-vue3/.prettierignore create mode 100644 yshop-drink-vue3/.stylelintignore create mode 100644 yshop-drink-vue3/.vscode/extensions.json create mode 100644 yshop-drink-vue3/.vscode/launch.json create mode 100644 yshop-drink-vue3/.vscode/settings.json create mode 100644 yshop-drink-vue3/README.md create mode 100644 yshop-drink-vue3/build/vite/index.ts create mode 100644 yshop-drink-vue3/build/vite/optimize.ts create mode 100644 yshop-drink-vue3/index.html create mode 100644 yshop-drink-vue3/package.json create mode 100644 yshop-drink-vue3/pnpm-lock.yaml create mode 100644 yshop-drink-vue3/postcss.config.js create mode 100644 yshop-drink-vue3/prettier.config.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/anchor/anchor.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/attachment.css create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/attachment.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/attachment.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_chm.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_default.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_doc.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_exe.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_jpg.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_mp3.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_mv.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_pdf.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_ppt.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_psd.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_rar.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_txt.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_xls.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/images/alignicon.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/images/alignicon.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/images/bg.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/images/file-icons.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/images/file-icons.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/images/icons.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/images/icons.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/images/image.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/images/progress.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/images/success.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/attachment/images/success.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/background/background.css create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/background/background.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/background/background.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/background/images/bg.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/background/images/success.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/charts/chart.config.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/charts/charts.css create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/charts/charts.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/charts/charts.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts0.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts1.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts2.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts3.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts4.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts5.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/emotion/emotion.css create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/emotion/emotion.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/emotion/emotion.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/emotion/images/0.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/emotion/images/bface.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/emotion/images/cface.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/emotion/images/fface.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/emotion/images/jxface2.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/emotion/images/neweditor-tab-bg.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/emotion/images/tface.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/emotion/images/wface.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/emotion/images/yface.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/gmap/gmap.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/help/help.css create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/help/help.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/help/help.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/image/image.css create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/image/image.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/image/image.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/image/images/alignicon.jpg create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/image/images/bg.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/image/images/icons.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/image/images/icons.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/image/images/image.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/image/images/progress.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/image/images/success.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/image/images/success.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/insertframe/insertframe.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/internal.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/link/link.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/map/map.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/map/show.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/music/music.css create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/music/music.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/music/music.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/preview/preview.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/addimg.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/brush.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/delimg.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/delimgH.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/empty.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/emptyH.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/eraser.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/redo.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/redoH.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/scale.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/scaleH.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/size.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/undo.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/undoH.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/scrawl.css create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/scrawl.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/scrawl/scrawl.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/searchreplace/searchreplace.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/searchreplace/searchreplace.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/snapscreen/snapscreen.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/spechars/spechars.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/spechars/spechars.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/table/dragicon.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/table/edittable.css create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/table/edittable.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/table/edittable.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/table/edittd.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/table/edittip.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/template/config.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/template/images/bg.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/template/images/pre0.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/template/images/pre1.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/template/images/pre2.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/template/images/pre3.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/template/images/pre4.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/template/template.css create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/template/template.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/template/template.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/bg.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/center_focus.jpg create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/file-icons.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/file-icons.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/icons.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/icons.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/image.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/left_focus.jpg create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/none_focus.jpg create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/progress.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/right_focus.jpg create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/success.gif create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/images/success.png create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/video.css create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/video.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/video/video.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/webapp/webapp.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/wordimage/tangram.js create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/wordimage/wordimage.html create mode 100644 yshop-drink-vue3/public/UEditor/dialogs/wordimage/wordimage.js create mode 100644 yshop-drink-vue3/public/UEditor/index.html create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/en.js create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/addimage.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/alldeletebtnhoverskin.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/alldeletebtnupskin.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/background.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/button.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/copy.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/deletedisable.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/deleteenable.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/listbackground.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/localimage.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/music.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/rotateleftdisable.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/rotateleftenable.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/rotaterightdisable.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/rotaterightenable.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/en/images/upload.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/zh-cn/images/copy.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/zh-cn/images/localimage.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/zh-cn/images/music.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/zh-cn/images/upload.png create mode 100644 yshop-drink-vue3/public/UEditor/lang/zh-cn/zh-cn.js create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/css/ueditor.css create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/css/ueditor.min.css create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/dialogbase.css create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/anchor.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/arrow.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/arrow_down.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/arrow_up.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/button-bg.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/cancelbutton.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/charts.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/cursor_h.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/cursor_h.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/cursor_v.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/cursor_v.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/dialog-title-bg.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/filescan.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/highlighted.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/icons-all.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/icons.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/icons.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/loaderror.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/loading.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/lock.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/neweditor-tab-bg.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/pagebreak.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/scale.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/sortable.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/spacer.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/sparator_v.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/table-cell-align.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/tangram-colorpicker.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/toolbar_bg.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/unhighlighted.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/upload.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/videologo.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/word.gif create mode 100644 yshop-drink-vue3/public/UEditor/themes/default/images/wordpaste.png create mode 100644 yshop-drink-vue3/public/UEditor/themes/iframe.css create mode 100644 yshop-drink-vue3/public/UEditor/third-party/SyntaxHighlighter/shCore.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/SyntaxHighlighter/shCoreDefault.css create mode 100644 yshop-drink-vue3/public/UEditor/third-party/codemirror/codemirror.css create mode 100644 yshop-drink-vue3/public/UEditor/third-party/codemirror/codemirror.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/adapters/mootools-adapter.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/adapters/mootools-adapter.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/adapters/prototype-adapter.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/adapters/prototype-adapter.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/adapters/standalone-framework.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/adapters/standalone-framework.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/highcharts-more.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/highcharts-more.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/highcharts.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/highcharts.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/annotations.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/annotations.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/canvas-tools.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/canvas-tools.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/data.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/data.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/drilldown.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/drilldown.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/exporting.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/exporting.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/funnel.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/funnel.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/heatmap.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/heatmap.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/map.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/map.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/no-data-to-display.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/modules/no-data-to-display.src.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/themes/dark-blue.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/themes/dark-green.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/themes/gray.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/themes/grid.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/highcharts/themes/skies.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/jquery-1.10.2.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/jquery-1.10.2.min.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/jquery-1.10.2.min.map create mode 100644 yshop-drink-vue3/public/UEditor/third-party/snapscreen/UEditorSnapscreen.exe create mode 100644 yshop-drink-vue3/public/UEditor/third-party/video-js/font/vjs.eot create mode 100644 yshop-drink-vue3/public/UEditor/third-party/video-js/font/vjs.svg create mode 100644 yshop-drink-vue3/public/UEditor/third-party/video-js/font/vjs.ttf create mode 100644 yshop-drink-vue3/public/UEditor/third-party/video-js/font/vjs.woff create mode 100644 yshop-drink-vue3/public/UEditor/third-party/video-js/video-js.css create mode 100644 yshop-drink-vue3/public/UEditor/third-party/video-js/video-js.min.css create mode 100644 yshop-drink-vue3/public/UEditor/third-party/video-js/video.dev.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/video-js/video.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/webuploader/webuploader.css create mode 100644 yshop-drink-vue3/public/UEditor/third-party/webuploader/webuploader.custom.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/webuploader/webuploader.custom.min.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/webuploader/webuploader.flashonly.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/webuploader/webuploader.flashonly.min.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/webuploader/webuploader.html5only.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/webuploader/webuploader.html5only.min.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/webuploader/webuploader.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/webuploader/webuploader.min.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/webuploader/webuploader.withoutimage.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/webuploader/webuploader.withoutimage.min.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/xss.min.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/zeroclipboard/ZeroClipboard.js create mode 100644 yshop-drink-vue3/public/UEditor/third-party/zeroclipboard/ZeroClipboard.min.js create mode 100644 yshop-drink-vue3/public/UEditor/ueditor.all.js create mode 100644 yshop-drink-vue3/public/UEditor/ueditor.all.min.js create mode 100644 yshop-drink-vue3/public/UEditor/ueditor.config.js create mode 100644 yshop-drink-vue3/public/UEditor/ueditor.parse.js create mode 100644 yshop-drink-vue3/public/UEditor/ueditor.parse.min.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/anchor/anchor.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/attachment.css create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/attachment.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/attachment.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_chm.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_default.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_doc.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_exe.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_jpg.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_mp3.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_mv.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_pdf.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_ppt.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_psd.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_rar.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_txt.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_xls.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/alignicon.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/alignicon.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/bg.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/file-icons.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/file-icons.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/icons.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/icons.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/image.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/progress.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/success.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/success.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/background/background.css create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/background/background.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/background/background.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/background/images/bg.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/background/images/success.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/charts/chart.config.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/charts/charts.css create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/charts/charts.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/charts/charts.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts0.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts1.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts2.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts3.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts4.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts5.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/emotion/emotion.css create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/emotion/emotion.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/emotion/emotion.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/0.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/bface.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/cface.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/fface.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/jxface2.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/neweditor-tab-bg.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/tface.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/wface.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/yface.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/gmap/gmap.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/help/help.css create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/help/help.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/help/help.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/image/image.css create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/image/image.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/image/image.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/image/images/alignicon.jpg create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/image/images/bg.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/image/images/icons.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/image/images/icons.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/image/images/image.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/image/images/progress.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/image/images/success.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/image/images/success.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/insertframe/insertframe.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/internal.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/link/link.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/map/map.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/map/show.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/music/music.css create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/music/music.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/music/music.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/preview/preview.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/addimg.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/brush.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/delimg.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/delimgH.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/empty.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/emptyH.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/eraser.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/redo.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/redoH.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/scale.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/scaleH.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/size.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/undo.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/undoH.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/scrawl.css create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/scrawl.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/scrawl/scrawl.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/searchreplace/searchreplace.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/searchreplace/searchreplace.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/snapscreen/snapscreen.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/spechars/spechars.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/spechars/spechars.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/table/dragicon.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/table/edittable.css create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/table/edittable.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/table/edittable.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/table/edittd.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/table/edittip.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/template/config.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/template/images/bg.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/template/images/pre0.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/template/images/pre1.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/template/images/pre2.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/template/images/pre3.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/template/images/pre4.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/template/template.css create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/template/template.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/template/template.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/bg.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/center_focus.jpg create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/file-icons.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/file-icons.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/icons.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/icons.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/image.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/left_focus.jpg create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/none_focus.jpg create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/progress.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/right_focus.jpg create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/success.gif create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/images/success.png create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/video.css create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/video.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/video/video.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/webapp/webapp.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/wordimage/fClipboard_ueditor.swf create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/wordimage/imageUploader.swf create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/wordimage/tangram.js create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/wordimage/wordimage.html create mode 100644 yshop-drink-vue3/public/UEditor22/dialogs/wordimage/wordimage.js create mode 100644 yshop-drink-vue3/public/UEditor22/index.html create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/en.js create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/addimage.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/alldeletebtnhoverskin.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/alldeletebtnupskin.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/background.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/button.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/copy.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/deletedisable.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/deleteenable.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/listbackground.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/localimage.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/music.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/rotateleftdisable.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/rotateleftenable.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/rotaterightdisable.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/rotaterightenable.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/en/images/upload.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/zh-cn/images/copy.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/zh-cn/images/localimage.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/zh-cn/images/music.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/zh-cn/images/upload.png create mode 100644 yshop-drink-vue3/public/UEditor22/lang/zh-cn/zh-cn.js create mode 100644 yshop-drink-vue3/public/UEditor22/php/Uploader.class.php create mode 100644 yshop-drink-vue3/public/UEditor22/php/action_crawler.php create mode 100644 yshop-drink-vue3/public/UEditor22/php/action_list.php create mode 100644 yshop-drink-vue3/public/UEditor22/php/action_upload.php create mode 100644 yshop-drink-vue3/public/UEditor22/php/config.json create mode 100644 yshop-drink-vue3/public/UEditor22/php/controller.php create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/css/ueditor.css create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/css/ueditor.min.css create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/dialogbase.css create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/anchor.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/arrow.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/arrow_down.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/arrow_up.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/button-bg.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/cancelbutton.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/charts.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/cursor_h.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/cursor_h.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/cursor_v.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/cursor_v.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/dialog-title-bg.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/filescan.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/highlighted.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/icons-all.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/icons.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/icons.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/loaderror.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/loading.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/lock.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/neweditor-tab-bg.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/pagebreak.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/scale.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/sortable.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/spacer.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/sparator_v.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/table-cell-align.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/tangram-colorpicker.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/toolbar_bg.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/unhighlighted.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/upload.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/videologo.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/word.gif create mode 100644 yshop-drink-vue3/public/UEditor22/themes/default/images/wordpaste.png create mode 100644 yshop-drink-vue3/public/UEditor22/themes/iframe.css create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/SyntaxHighlighter/shCore.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/SyntaxHighlighter/shCoreDefault.css create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/codemirror/codemirror.css create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/codemirror/codemirror.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/adapters/mootools-adapter.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/adapters/mootools-adapter.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/adapters/prototype-adapter.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/adapters/prototype-adapter.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/adapters/standalone-framework.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/adapters/standalone-framework.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/highcharts-more.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/highcharts-more.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/highcharts.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/highcharts.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/annotations.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/annotations.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/canvas-tools.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/canvas-tools.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/data.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/data.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/drilldown.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/drilldown.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/exporting.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/exporting.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/funnel.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/funnel.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/heatmap.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/heatmap.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/map.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/map.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/no-data-to-display.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/modules/no-data-to-display.src.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/themes/dark-blue.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/themes/dark-green.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/themes/gray.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/themes/grid.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/highcharts/themes/skies.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/jquery-1.10.2.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/jquery-1.10.2.min.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/jquery-1.10.2.min.map create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/snapscreen/UEditorSnapscreen.exe create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/video-js/font/vjs.eot create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/video-js/font/vjs.svg create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/video-js/font/vjs.ttf create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/video-js/font/vjs.woff create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/video-js/video-js.css create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/video-js/video-js.min.css create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/video-js/video-js.swf create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/video-js/video.dev.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/video-js/video.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/webuploader/Uploader.swf create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/webuploader/webuploader.css create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/webuploader/webuploader.custom.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/webuploader/webuploader.custom.min.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/webuploader/webuploader.flashonly.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/webuploader/webuploader.flashonly.min.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/webuploader/webuploader.html5only.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/webuploader/webuploader.html5only.min.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/webuploader/webuploader.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/webuploader/webuploader.min.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/webuploader/webuploader.withoutimage.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/webuploader/webuploader.withoutimage.min.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/xss.min.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/zeroclipboard/ZeroClipboard.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/zeroclipboard/ZeroClipboard.min.js create mode 100644 yshop-drink-vue3/public/UEditor22/third-party/zeroclipboard/ZeroClipboard.swf create mode 100644 yshop-drink-vue3/public/UEditor22/ueditor.all.js create mode 100644 yshop-drink-vue3/public/UEditor22/ueditor.all.min.js create mode 100644 yshop-drink-vue3/public/UEditor22/ueditor.config.js create mode 100644 yshop-drink-vue3/public/UEditor22/ueditor.parse.js create mode 100644 yshop-drink-vue3/public/UEditor22/ueditor.parse.min.js create mode 100644 yshop-drink-vue3/public/card01.jpg create mode 100644 yshop-drink-vue3/public/card02.jpg create mode 100644 yshop-drink-vue3/public/card03.jpg create mode 100644 yshop-drink-vue3/public/favicon.ico create mode 100644 yshop-drink-vue3/public/logo.gif create mode 100644 yshop-drink-vue3/public/voice_new_order.mp3 create mode 100644 yshop-drink-vue3/src/App.vue create mode 100644 yshop-drink-vue3/src/api/express/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/apiAccessLog/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/apiErrorLog/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/codegen/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/config/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/dataSourceConfig/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/demo/demo01/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/demo/demo02/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/demo/demo03/erp/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/demo/demo03/inner/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/demo/demo03/normal/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/file/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/fileConfig/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/job/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/jobLog/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/redis/index.ts create mode 100644 yshop-drink-vue3/src/api/infra/redis/types.ts create mode 100644 yshop-drink-vue3/src/api/login/index.ts create mode 100644 yshop-drink-vue3/src/api/login/oauth2/index.ts create mode 100644 yshop-drink-vue3/src/api/login/types.ts create mode 100644 yshop-drink-vue3/src/api/mall/coupon/index.ts create mode 100644 yshop-drink-vue3/src/api/mall/coupon/user/index.ts create mode 100644 yshop-drink-vue3/src/api/mall/order/storeOrder/index.ts create mode 100644 yshop-drink-vue3/src/api/mall/product/brand.ts create mode 100644 yshop-drink-vue3/src/api/mall/product/category.ts create mode 100644 yshop-drink-vue3/src/api/mall/product/product.ts create mode 100644 yshop-drink-vue3/src/api/mall/product/storeProductRelation/index.ts create mode 100644 yshop-drink-vue3/src/api/mall/product/storeProductReply/index.ts create mode 100644 yshop-drink-vue3/src/api/mall/shop/ads/index.ts create mode 100644 yshop-drink-vue3/src/api/mall/shop/materialGroup/index.ts create mode 100644 yshop-drink-vue3/src/api/mall/shop/recharge/index.ts create mode 100644 yshop-drink-vue3/src/api/mall/shop/service/index.ts create mode 100644 yshop-drink-vue3/src/api/mall/shop/storeProductRule/index.ts create mode 100644 yshop-drink-vue3/src/api/mall/store/shop/index.ts create mode 100644 yshop-drink-vue3/src/api/member/user/index.ts create mode 100644 yshop-drink-vue3/src/api/member/userAddress/index.ts create mode 100644 yshop-drink-vue3/src/api/member/userBill/index.ts create mode 100644 yshop-drink-vue3/src/api/message/wechatTemplate/index.ts create mode 100644 yshop-drink-vue3/src/api/mp/account/index.ts create mode 100644 yshop-drink-vue3/src/api/mp/account2/index.ts create mode 100644 yshop-drink-vue3/src/api/mp/autoReply/index.ts create mode 100644 yshop-drink-vue3/src/api/mp/draft/index.ts create mode 100644 yshop-drink-vue3/src/api/mp/freePublish/index.ts create mode 100644 yshop-drink-vue3/src/api/mp/material/index.ts create mode 100644 yshop-drink-vue3/src/api/mp/menu/index.ts create mode 100644 yshop-drink-vue3/src/api/mp/message/index.ts create mode 100644 yshop-drink-vue3/src/api/mp/statistics/index.ts create mode 100644 yshop-drink-vue3/src/api/mp/tag/index.ts create mode 100644 yshop-drink-vue3/src/api/mp/user/index.ts create mode 100644 yshop-drink-vue3/src/api/pay/merchantDetails/index.ts create mode 100644 yshop-drink-vue3/src/api/score/order/index.ts create mode 100644 yshop-drink-vue3/src/api/score/product/index.ts create mode 100644 yshop-drink-vue3/src/api/system/area/index.ts create mode 100644 yshop-drink-vue3/src/api/system/dept/index.ts create mode 100644 yshop-drink-vue3/src/api/system/dict/dict.data.ts create mode 100644 yshop-drink-vue3/src/api/system/dict/dict.type.ts create mode 100644 yshop-drink-vue3/src/api/system/loginLog/index.ts create mode 100644 yshop-drink-vue3/src/api/system/mail/account/index.ts create mode 100644 yshop-drink-vue3/src/api/system/mail/log/index.ts create mode 100644 yshop-drink-vue3/src/api/system/mail/template/index.ts create mode 100644 yshop-drink-vue3/src/api/system/menu/index.ts create mode 100644 yshop-drink-vue3/src/api/system/notice/index.ts create mode 100644 yshop-drink-vue3/src/api/system/notify/message/index.ts create mode 100644 yshop-drink-vue3/src/api/system/notify/template/index.ts create mode 100644 yshop-drink-vue3/src/api/system/oauth2/client.ts create mode 100644 yshop-drink-vue3/src/api/system/oauth2/token.ts create mode 100644 yshop-drink-vue3/src/api/system/operatelog/index.ts create mode 100644 yshop-drink-vue3/src/api/system/permission/index.ts create mode 100644 yshop-drink-vue3/src/api/system/post/index.ts create mode 100644 yshop-drink-vue3/src/api/system/role/index.ts create mode 100644 yshop-drink-vue3/src/api/system/sms/smsChannel/index.ts create mode 100644 yshop-drink-vue3/src/api/system/sms/smsLog/index.ts create mode 100644 yshop-drink-vue3/src/api/system/sms/smsTemplate/index.ts create mode 100644 yshop-drink-vue3/src/api/system/social/client/index.ts create mode 100644 yshop-drink-vue3/src/api/system/social/user/index.ts create mode 100644 yshop-drink-vue3/src/api/system/tenant/index.ts create mode 100644 yshop-drink-vue3/src/api/system/tenantPackage/index.ts create mode 100644 yshop-drink-vue3/src/api/system/user/index.ts create mode 100644 yshop-drink-vue3/src/api/system/user/profile.ts create mode 100644 yshop-drink-vue3/src/api/system/user/socialUser.ts create mode 100644 yshop-drink-vue3/src/api/tools/material.js create mode 100644 yshop-drink-vue3/src/api/tools/materialgroup.js create mode 100644 yshop-drink-vue3/src/assets/imgs/avatar.gif create mode 100644 yshop-drink-vue3/src/assets/imgs/avatar.jpg create mode 100644 yshop-drink-vue3/src/assets/imgs/card01.jpg create mode 100644 yshop-drink-vue3/src/assets/imgs/card02.jpg create mode 100644 yshop-drink-vue3/src/assets/imgs/card03.jpg create mode 100644 yshop-drink-vue3/src/assets/imgs/diy/app-nav-bar-mp.png create mode 100644 yshop-drink-vue3/src/assets/imgs/diy/statusBar.png create mode 100644 yshop-drink-vue3/src/assets/imgs/icons.png create mode 100644 yshop-drink-vue3/src/assets/imgs/login_bg.png create mode 100644 yshop-drink-vue3/src/assets/imgs/logo.png create mode 100644 yshop-drink-vue3/src/assets/imgs/profile.jpg create mode 100644 yshop-drink-vue3/src/assets/imgs/wechat.png create mode 100644 yshop-drink-vue3/src/assets/map/json/china.json create mode 100644 yshop-drink-vue3/src/assets/svgs/403.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/404.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/500.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/icon.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/login-bg.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/login-box-bg.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/member_balance.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/member_expenditure_balance.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/member_level.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/member_point.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/member_recharge_balance.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/message.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/money.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_app.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_bar.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_pc.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_qr.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_wap.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/pay/icon/mock.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/pay/icon/wx_app.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/pay/icon/wx_bar.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/pay/icon/wx_lite.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/pay/icon/wx_native.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/pay/icon/wx_pub.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/peoples.svg create mode 100644 yshop-drink-vue3/src/assets/svgs/shopping.svg create mode 100644 yshop-drink-vue3/src/components/AppLinkInput/AppLinkSelectDialog.vue create mode 100644 yshop-drink-vue3/src/components/AppLinkInput/data.ts create mode 100644 yshop-drink-vue3/src/components/AppLinkInput/index.vue create mode 100644 yshop-drink-vue3/src/components/Backtop/index.ts create mode 100644 yshop-drink-vue3/src/components/Backtop/src/Backtop.vue create mode 100644 yshop-drink-vue3/src/components/Card/index.ts create mode 100644 yshop-drink-vue3/src/components/Card/src/CardTitle.vue create mode 100644 yshop-drink-vue3/src/components/ColorInput/index.vue create mode 100644 yshop-drink-vue3/src/components/ConfigGlobal/index.ts create mode 100644 yshop-drink-vue3/src/components/ConfigGlobal/src/ConfigGlobal.vue create mode 100644 yshop-drink-vue3/src/components/ContentDetailWrap/index.ts create mode 100644 yshop-drink-vue3/src/components/ContentDetailWrap/src/ContentDetailWrap.vue create mode 100644 yshop-drink-vue3/src/components/ContentWrap/index.ts create mode 100644 yshop-drink-vue3/src/components/ContentWrap/src/ContentWrap.vue create mode 100644 yshop-drink-vue3/src/components/CountTo/index.ts create mode 100644 yshop-drink-vue3/src/components/CountTo/src/CountTo.vue create mode 100644 yshop-drink-vue3/src/components/Crontab/index.ts create mode 100644 yshop-drink-vue3/src/components/Crontab/src/Crontab.vue create mode 100644 yshop-drink-vue3/src/components/Cropper/index.ts create mode 100644 yshop-drink-vue3/src/components/Cropper/src/CopperModal.vue create mode 100644 yshop-drink-vue3/src/components/Cropper/src/Cropper.vue create mode 100644 yshop-drink-vue3/src/components/Cropper/src/CropperAvatar.vue create mode 100644 yshop-drink-vue3/src/components/Cropper/src/types.ts create mode 100644 yshop-drink-vue3/src/components/Descriptions/index.ts create mode 100644 yshop-drink-vue3/src/components/Descriptions/src/Descriptions.vue create mode 100644 yshop-drink-vue3/src/components/Descriptions/src/DescriptionsItemLabel.vue create mode 100644 yshop-drink-vue3/src/components/Dialog/index.ts create mode 100644 yshop-drink-vue3/src/components/Dialog/src/Dialog.vue create mode 100644 yshop-drink-vue3/src/components/DictTag/index.ts create mode 100644 yshop-drink-vue3/src/components/DictTag/src/DictTag.vue create mode 100644 yshop-drink-vue3/src/components/DocAlert/index.vue create mode 100644 yshop-drink-vue3/src/components/Draggable/index.vue create mode 100644 yshop-drink-vue3/src/components/Echart/index.ts create mode 100644 yshop-drink-vue3/src/components/Echart/src/Echart.vue create mode 100644 yshop-drink-vue3/src/components/Editor/index.ts create mode 100644 yshop-drink-vue3/src/components/Editor/src/Editor.vue create mode 100644 yshop-drink-vue3/src/components/Error/index.ts create mode 100644 yshop-drink-vue3/src/components/Error/src/Error.vue create mode 100644 yshop-drink-vue3/src/components/Form/index.ts create mode 100644 yshop-drink-vue3/src/components/Form/src/Form.vue create mode 100644 yshop-drink-vue3/src/components/Form/src/componentMap.ts create mode 100644 yshop-drink-vue3/src/components/Form/src/components/useRenderCheckbox.tsx create mode 100644 yshop-drink-vue3/src/components/Form/src/components/useRenderRadio.tsx create mode 100644 yshop-drink-vue3/src/components/Form/src/components/useRenderSelect.tsx create mode 100644 yshop-drink-vue3/src/components/Form/src/helper.ts create mode 100644 yshop-drink-vue3/src/components/Form/src/types.ts create mode 100644 yshop-drink-vue3/src/components/FormCreate/index.ts create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/components/DictSelect.vue create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/components/useApiSelect.tsx create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/config/index.ts create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/config/selectRule.ts create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/config/useDictSelectRule.ts create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/config/useEditorRule.ts create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/config/useSelectRule.ts create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/config/useUploadFileRule.ts create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/config/useUploadImgRule.ts create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/config/useUploadImgsRule.ts create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/type/index.ts create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/useFormCreateDesigner.ts create mode 100644 yshop-drink-vue3/src/components/FormCreate/src/utils/index.ts create mode 100644 yshop-drink-vue3/src/components/Highlight/index.ts create mode 100644 yshop-drink-vue3/src/components/Highlight/src/Highlight.vue create mode 100644 yshop-drink-vue3/src/components/IFrame/index.ts create mode 100644 yshop-drink-vue3/src/components/IFrame/src/IFrame.vue create mode 100644 yshop-drink-vue3/src/components/Icon/index.ts create mode 100644 yshop-drink-vue3/src/components/Icon/src/Icon.vue create mode 100644 yshop-drink-vue3/src/components/Icon/src/IconSelect.vue create mode 100644 yshop-drink-vue3/src/components/Icon/src/data.ts create mode 100644 yshop-drink-vue3/src/components/ImageViewer/index.ts create mode 100644 yshop-drink-vue3/src/components/ImageViewer/src/ImageViewer.vue create mode 100644 yshop-drink-vue3/src/components/ImageViewer/src/types.ts create mode 100644 yshop-drink-vue3/src/components/Infotip/index.ts create mode 100644 yshop-drink-vue3/src/components/Infotip/src/Infotip.vue create mode 100644 yshop-drink-vue3/src/components/InputPassword/index.ts create mode 100644 yshop-drink-vue3/src/components/InputPassword/src/InputPassword.vue create mode 100644 yshop-drink-vue3/src/components/InputWithColor/index.vue create mode 100644 yshop-drink-vue3/src/components/MagicCubeEditor/index.vue create mode 100644 yshop-drink-vue3/src/components/MagicCubeEditor/util.ts create mode 100644 yshop-drink-vue3/src/components/Materials/index.ts create mode 100644 yshop-drink-vue3/src/components/Materials/src/Materials.vue create mode 100644 yshop-drink-vue3/src/components/Materials/src/editorMaterials.vue create mode 100644 yshop-drink-vue3/src/components/OperateLogV2/index.ts create mode 100644 yshop-drink-vue3/src/components/OperateLogV2/src/OperateLogV2.vue create mode 100644 yshop-drink-vue3/src/components/Pagination/index.vue create mode 100644 yshop-drink-vue3/src/components/Qrcode/index.ts create mode 100644 yshop-drink-vue3/src/components/Qrcode/src/Qrcode.vue create mode 100644 yshop-drink-vue3/src/components/RouterSearch/index.vue create mode 100644 yshop-drink-vue3/src/components/Search/index.ts create mode 100644 yshop-drink-vue3/src/components/Search/src/Search.vue create mode 100644 yshop-drink-vue3/src/components/ShortcutDateRangePicker/index.vue create mode 100644 yshop-drink-vue3/src/components/SimpleProcessDesigner/src/addNode.vue create mode 100644 yshop-drink-vue3/src/components/SimpleProcessDesigner/src/nodeWrap.vue create mode 100644 yshop-drink-vue3/src/components/SimpleProcessDesigner/src/util.ts create mode 100644 yshop-drink-vue3/src/components/SimpleProcessDesigner/theme/workflow.css create mode 100644 yshop-drink-vue3/src/components/Sticky/index.ts create mode 100644 yshop-drink-vue3/src/components/Sticky/src/Sticky.vue create mode 100644 yshop-drink-vue3/src/components/SummaryCard/index.vue create mode 100644 yshop-drink-vue3/src/components/Table/index.ts create mode 100644 yshop-drink-vue3/src/components/Table/src/Table.vue create mode 100644 yshop-drink-vue3/src/components/Table/src/TableSelectForm.vue create mode 100644 yshop-drink-vue3/src/components/Table/src/helper.ts create mode 100644 yshop-drink-vue3/src/components/Table/src/types.ts create mode 100644 yshop-drink-vue3/src/components/Tooltip/index.ts create mode 100644 yshop-drink-vue3/src/components/Tooltip/src/Tooltip.vue create mode 100644 yshop-drink-vue3/src/components/UploadFile/index.ts create mode 100644 yshop-drink-vue3/src/components/UploadFile/src/UploadFile.vue create mode 100644 yshop-drink-vue3/src/components/UploadFile/src/UploadImg.vue create mode 100644 yshop-drink-vue3/src/components/UploadFile/src/UploadImgs.vue create mode 100644 yshop-drink-vue3/src/components/UploadFile/src/useUpload.ts create mode 100644 yshop-drink-vue3/src/components/Verifition/index.ts create mode 100644 yshop-drink-vue3/src/components/Verifition/src/Verify.vue create mode 100644 yshop-drink-vue3/src/components/Verifition/src/Verify/VerifyPoints.vue create mode 100644 yshop-drink-vue3/src/components/Verifition/src/Verify/VerifySlide.vue create mode 100644 yshop-drink-vue3/src/components/Verifition/src/Verify/index.ts create mode 100644 yshop-drink-vue3/src/components/Verifition/src/utils/ase.ts create mode 100644 yshop-drink-vue3/src/components/Verifition/src/utils/util.ts create mode 100644 yshop-drink-vue3/src/components/VerticalButtonGroup/index.vue create mode 100644 yshop-drink-vue3/src/components/XButton/index.ts create mode 100644 yshop-drink-vue3/src/components/XButton/src/XButton.vue create mode 100644 yshop-drink-vue3/src/components/XButton/src/XTextButton.vue create mode 100644 yshop-drink-vue3/src/components/index.ts create mode 100644 yshop-drink-vue3/src/config/axios/config.ts create mode 100644 yshop-drink-vue3/src/config/axios/errorCode.ts create mode 100644 yshop-drink-vue3/src/config/axios/index.ts create mode 100644 yshop-drink-vue3/src/config/axios/service.ts create mode 100644 yshop-drink-vue3/src/directives/index.ts create mode 100644 yshop-drink-vue3/src/directives/permission/hasPermi.ts create mode 100644 yshop-drink-vue3/src/directives/permission/hasRole.ts create mode 100644 yshop-drink-vue3/src/hooks/event/useScrollTo.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useCache.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useConfigGlobal.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useCrudSchemas.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useDesign.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useEmitt.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useForm.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useGuide.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useI18n.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useIcon.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useLocale.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useMessage.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useNProgress.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useNetwork.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useNow.ts create mode 100644 yshop-drink-vue3/src/hooks/web/usePageLoading.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useTable.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useTagsView.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useTimeAgo.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useTitle.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useValidator.ts create mode 100644 yshop-drink-vue3/src/hooks/web/useWatermark.ts create mode 100644 yshop-drink-vue3/src/layout/Layout.vue create mode 100644 yshop-drink-vue3/src/layout/components/AppView.vue create mode 100644 yshop-drink-vue3/src/layout/components/Breadcrumb/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/Breadcrumb/src/Breadcrumb.vue create mode 100644 yshop-drink-vue3/src/layout/components/Breadcrumb/src/helper.ts create mode 100644 yshop-drink-vue3/src/layout/components/Collapse/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/Collapse/src/Collapse.vue create mode 100644 yshop-drink-vue3/src/layout/components/ContextMenu/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/ContextMenu/src/ContextMenu.vue create mode 100644 yshop-drink-vue3/src/layout/components/Footer/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/Footer/src/Footer.vue create mode 100644 yshop-drink-vue3/src/layout/components/LocaleDropdown/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue create mode 100644 yshop-drink-vue3/src/layout/components/Logo/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/Logo/src/Logo.vue create mode 100644 yshop-drink-vue3/src/layout/components/Menu/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/Menu/src/Menu.vue create mode 100644 yshop-drink-vue3/src/layout/components/Menu/src/components/useRenderMenuItem.tsx create mode 100644 yshop-drink-vue3/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx create mode 100644 yshop-drink-vue3/src/layout/components/Menu/src/helper.ts create mode 100644 yshop-drink-vue3/src/layout/components/Message/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/Message/src/Message.vue create mode 100644 yshop-drink-vue3/src/layout/components/Screenfull/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/Screenfull/src/Screenfull.vue create mode 100644 yshop-drink-vue3/src/layout/components/Setting/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/Setting/src/Setting.vue create mode 100644 yshop-drink-vue3/src/layout/components/Setting/src/components/ColorRadioPicker.vue create mode 100644 yshop-drink-vue3/src/layout/components/Setting/src/components/InterfaceDisplay.vue create mode 100644 yshop-drink-vue3/src/layout/components/Setting/src/components/LayoutRadioPicker.vue create mode 100644 yshop-drink-vue3/src/layout/components/SizeDropdown/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/SizeDropdown/src/SizeDropdown.vue create mode 100644 yshop-drink-vue3/src/layout/components/TabMenu/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/TabMenu/src/TabMenu.vue create mode 100644 yshop-drink-vue3/src/layout/components/TabMenu/src/helper.ts create mode 100644 yshop-drink-vue3/src/layout/components/TagsView/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/TagsView/src/TagsView.vue create mode 100644 yshop-drink-vue3/src/layout/components/TagsView/src/helper.ts create mode 100644 yshop-drink-vue3/src/layout/components/ThemeSwitch/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue create mode 100644 yshop-drink-vue3/src/layout/components/ToolHeader.vue create mode 100644 yshop-drink-vue3/src/layout/components/UserInfo/index.ts create mode 100644 yshop-drink-vue3/src/layout/components/UserInfo/src/UserInfo.vue create mode 100644 yshop-drink-vue3/src/layout/components/UserInfo/src/components/LockDialog.vue create mode 100644 yshop-drink-vue3/src/layout/components/UserInfo/src/components/LockPage.vue create mode 100644 yshop-drink-vue3/src/layout/components/useRenderLayout.tsx create mode 100644 yshop-drink-vue3/src/locales/en.ts create mode 100644 yshop-drink-vue3/src/locales/zh-CN.ts create mode 100644 yshop-drink-vue3/src/main.ts create mode 100644 yshop-drink-vue3/src/permission.ts create mode 100644 yshop-drink-vue3/src/plugins/animate.css/index.ts create mode 100644 yshop-drink-vue3/src/plugins/echarts/index.ts create mode 100644 yshop-drink-vue3/src/plugins/elementPlus/index.ts create mode 100644 yshop-drink-vue3/src/plugins/formCreate/index.ts create mode 100644 yshop-drink-vue3/src/plugins/svgIcon/index.ts create mode 100644 yshop-drink-vue3/src/plugins/tongji/index.ts create mode 100644 yshop-drink-vue3/src/plugins/unocss/index.ts create mode 100644 yshop-drink-vue3/src/plugins/vueI18n/helper.ts create mode 100644 yshop-drink-vue3/src/plugins/vueI18n/index.ts create mode 100644 yshop-drink-vue3/src/router/index.ts create mode 100644 yshop-drink-vue3/src/router/modules/remaining.ts create mode 100644 yshop-drink-vue3/src/store/index.ts create mode 100644 yshop-drink-vue3/src/store/modules/app.ts create mode 100644 yshop-drink-vue3/src/store/modules/dict.ts create mode 100644 yshop-drink-vue3/src/store/modules/locale.ts create mode 100644 yshop-drink-vue3/src/store/modules/lock.ts create mode 100644 yshop-drink-vue3/src/store/modules/permission.ts create mode 100644 yshop-drink-vue3/src/store/modules/simpleWorkflow.ts create mode 100644 yshop-drink-vue3/src/store/modules/tagsView.ts create mode 100644 yshop-drink-vue3/src/store/modules/user.ts create mode 100644 yshop-drink-vue3/src/styles/FormCreate/fonts/fontello.woff create mode 100644 yshop-drink-vue3/src/styles/FormCreate/index.scss create mode 100644 yshop-drink-vue3/src/styles/global.module.scss create mode 100644 yshop-drink-vue3/src/styles/index.scss create mode 100644 yshop-drink-vue3/src/styles/theme.scss create mode 100644 yshop-drink-vue3/src/styles/var.css create mode 100644 yshop-drink-vue3/src/styles/variables.scss create mode 100644 yshop-drink-vue3/src/types/components.d.ts create mode 100644 yshop-drink-vue3/src/types/configGlobal.d.ts create mode 100644 yshop-drink-vue3/src/types/contextMenu.d.ts create mode 100644 yshop-drink-vue3/src/types/descriptions.d.ts create mode 100644 yshop-drink-vue3/src/types/elementPlus.d.ts create mode 100644 yshop-drink-vue3/src/types/form.d.ts create mode 100644 yshop-drink-vue3/src/types/icon.d.ts create mode 100644 yshop-drink-vue3/src/types/infoTip.d.ts create mode 100644 yshop-drink-vue3/src/types/layout.d.ts create mode 100644 yshop-drink-vue3/src/types/localeDropdown.d.ts create mode 100644 yshop-drink-vue3/src/types/qrcode.d.ts create mode 100644 yshop-drink-vue3/src/types/table.d.ts create mode 100644 yshop-drink-vue3/src/types/theme.d.ts create mode 100644 yshop-drink-vue3/src/utils/Logger.ts create mode 100644 yshop-drink-vue3/src/utils/auth.ts create mode 100644 yshop-drink-vue3/src/utils/color.ts create mode 100644 yshop-drink-vue3/src/utils/constants.ts create mode 100644 yshop-drink-vue3/src/utils/dateUtil.ts create mode 100644 yshop-drink-vue3/src/utils/dict.ts create mode 100644 yshop-drink-vue3/src/utils/domUtils.ts create mode 100644 yshop-drink-vue3/src/utils/download.ts create mode 100644 yshop-drink-vue3/src/utils/filt.ts create mode 100644 yshop-drink-vue3/src/utils/formCreate.ts create mode 100644 yshop-drink-vue3/src/utils/formRules.ts create mode 100644 yshop-drink-vue3/src/utils/formatTime.ts create mode 100644 yshop-drink-vue3/src/utils/formatter.ts create mode 100644 yshop-drink-vue3/src/utils/index.ts create mode 100644 yshop-drink-vue3/src/utils/is.ts create mode 100644 yshop-drink-vue3/src/utils/jsencrypt.ts create mode 100644 yshop-drink-vue3/src/utils/permission.ts create mode 100644 yshop-drink-vue3/src/utils/propTypes.ts create mode 100644 yshop-drink-vue3/src/utils/routerHelper.ts create mode 100644 yshop-drink-vue3/src/utils/tree.ts create mode 100644 yshop-drink-vue3/src/utils/tsxHelper.ts create mode 100644 yshop-drink-vue3/src/views/Error/403.vue create mode 100644 yshop-drink-vue3/src/views/Error/404.vue create mode 100644 yshop-drink-vue3/src/views/Error/500.vue create mode 100644 yshop-drink-vue3/src/views/Home/Index.vue create mode 100644 yshop-drink-vue3/src/views/Home/Index2.vue create mode 100644 yshop-drink-vue3/src/views/Home/PanelGroupT.vue create mode 100644 yshop-drink-vue3/src/views/Home/echarts-data.ts create mode 100644 yshop-drink-vue3/src/views/Home/types.ts create mode 100644 yshop-drink-vue3/src/views/Login/Login.vue create mode 100644 yshop-drink-vue3/src/views/Login/SocialLogin.vue create mode 100644 yshop-drink-vue3/src/views/Login/components/LoginForm.vue create mode 100644 yshop-drink-vue3/src/views/Login/components/LoginFormTitle.vue create mode 100644 yshop-drink-vue3/src/views/Login/components/MobileForm.vue create mode 100644 yshop-drink-vue3/src/views/Login/components/QrCodeForm.vue create mode 100644 yshop-drink-vue3/src/views/Login/components/RegisterForm.vue create mode 100644 yshop-drink-vue3/src/views/Login/components/SSOLogin.vue create mode 100644 yshop-drink-vue3/src/views/Login/components/index.ts create mode 100644 yshop-drink-vue3/src/views/Login/components/useLogin.ts create mode 100644 yshop-drink-vue3/src/views/Profile/Index.vue create mode 100644 yshop-drink-vue3/src/views/Profile/components/BasicInfo.vue create mode 100644 yshop-drink-vue3/src/views/Profile/components/ProfileUser.vue create mode 100644 yshop-drink-vue3/src/views/Profile/components/ResetPwd.vue create mode 100644 yshop-drink-vue3/src/views/Profile/components/UserAvatar.vue create mode 100644 yshop-drink-vue3/src/views/Profile/components/UserSocial.vue create mode 100644 yshop-drink-vue3/src/views/Profile/components/index.ts create mode 100644 yshop-drink-vue3/src/views/Redirect/Redirect.vue create mode 100644 yshop-drink-vue3/src/views/express/ExpressForm.vue create mode 100644 yshop-drink-vue3/src/views/express/ExpressSet.vue create mode 100644 yshop-drink-vue3/src/views/express/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue create mode 100644 yshop-drink-vue3/src/views/infra/apiAccessLog/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue create mode 100644 yshop-drink-vue3/src/views/infra/apiErrorLog/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/build/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/codegen/EditTable.vue create mode 100644 yshop-drink-vue3/src/views/infra/codegen/ImportTable.vue create mode 100644 yshop-drink-vue3/src/views/infra/codegen/PreviewCode.vue create mode 100644 yshop-drink-vue3/src/views/infra/codegen/components/BasicInfoForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/codegen/components/ColumInfoForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/codegen/components/GenerateInfoForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/codegen/components/index.ts create mode 100644 yshop-drink-vue3/src/views/infra/codegen/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/config/ConfigForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/config/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/dataSourceConfig/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo01/Demo01ContactForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo01/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo02/Demo02CategoryForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo02/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/erp/Demo03StudentForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03CourseForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03GradeForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/erp/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/inner/Demo03StudentForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03CourseForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03CourseList.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03GradeForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03GradeList.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/inner/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/normal/Demo03StudentForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/normal/components/Demo03CourseForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/demo/demo03/normal/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/druid/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/file/FileForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/file/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/fileConfig/FileConfigForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/fileConfig/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/job/JobDetail.vue create mode 100644 yshop-drink-vue3/src/views/infra/job/JobForm.vue create mode 100644 yshop-drink-vue3/src/views/infra/job/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/job/logger/JobLogDetail.vue create mode 100644 yshop-drink-vue3/src/views/infra/job/logger/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/redis/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/server/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/skywalking/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/swagger/index.vue create mode 100644 yshop-drink-vue3/src/views/infra/webSocket/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/coupon/Form.vue create mode 100644 yshop-drink-vue3/src/views/mall/coupon/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/coupon/user/OrderRecord.vue create mode 100644 yshop-drink-vue3/src/views/mall/member/user/UserDetail.vue create mode 100644 yshop-drink-vue3/src/views/mall/member/user/UserForm.vue create mode 100644 yshop-drink-vue3/src/views/mall/member/user/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/member/user/yue.vue create mode 100644 yshop-drink-vue3/src/views/mall/member/userAddress/UserAddressForm.vue create mode 100644 yshop-drink-vue3/src/views/mall/member/userAddress/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/order/storeOrder/OrderDetail.vue create mode 100644 yshop-drink-vue3/src/views/mall/order/storeOrder/OrderRecord.vue create mode 100644 yshop-drink-vue3/src/views/mall/order/storeOrder/OrderSend.vue create mode 100644 yshop-drink-vue3/src/views/mall/order/storeOrder/OrderSendInfo.vue create mode 100644 yshop-drink-vue3/src/views/mall/order/storeOrder/StoreOrderForm.vue create mode 100644 yshop-drink-vue3/src/views/mall/order/storeOrder/StoreOrderRefund.vue create mode 100644 yshop-drink-vue3/src/views/mall/order/storeOrder/StoreOrderRemark.vue create mode 100644 yshop-drink-vue3/src/views/mall/order/storeOrder/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/order/storeOrder/work.vue create mode 100644 yshop-drink-vue3/src/views/mall/product/category/CategoryForm.vue create mode 100644 yshop-drink-vue3/src/views/mall/product/category/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/product/storeProduct/CateTree.vue create mode 100644 yshop-drink-vue3/src/views/mall/product/storeProduct/StoreProductForm.vue create mode 100644 yshop-drink-vue3/src/views/mall/product/storeProduct/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/product/storeProductRelation/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/product/storeProductReply/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/shop/ads/AdsForm.vue create mode 100644 yshop-drink-vue3/src/views/mall/shop/ads/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/shop/recharge/RechargeForm.vue create mode 100644 yshop-drink-vue3/src/views/mall/shop/recharge/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/shop/service/ServiceForm.vue create mode 100644 yshop-drink-vue3/src/views/mall/shop/service/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/shop/storeProductRule/StoreProductRuleForm.vue create mode 100644 yshop-drink-vue3/src/views/mall/shop/storeProductRule/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/store/shop/ShopForm.vue create mode 100644 yshop-drink-vue3/src/views/mall/store/shop/index.vue create mode 100644 yshop-drink-vue3/src/views/mall/store/shop/map.vue create mode 100644 yshop-drink-vue3/src/views/message/wechatTemplate/WechatTemplateForm.vue create mode 100644 yshop-drink-vue3/src/views/message/wechatTemplate/index.vue create mode 100644 yshop-drink-vue3/src/views/mp/account/AccountForm.vue create mode 100644 yshop-drink-vue3/src/views/mp/account/index.vue create mode 100644 yshop-drink-vue3/src/views/mp/account2/AccountForm.vue create mode 100644 yshop-drink-vue3/src/views/mp/account2/index.vue create mode 100644 yshop-drink-vue3/src/views/mp/autoReply/components/ReplyForm.vue create mode 100644 yshop-drink-vue3/src/views/mp/autoReply/components/ReplyTable.vue create mode 100644 yshop-drink-vue3/src/views/mp/autoReply/components/types.ts create mode 100644 yshop-drink-vue3/src/views/mp/autoReply/index.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-account-select/index.ts create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-account-select/main.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-location/index.ts create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-location/main.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-material-select/index.ts create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-material-select/main.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-material-select/types.ts create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-msg/card.scss create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-msg/comment.scss create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-msg/components/Msg.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-msg/components/MsgEvent.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-msg/components/MsgList.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-msg/index.ts create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-msg/main.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-msg/types.ts create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-music/index.ts create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-music/main.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-news/index.ts create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-news/main.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-reply/components/TabImage.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-reply/components/TabMusic.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-reply/components/TabNews.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-reply/components/TabText.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-reply/components/TabVideo.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-reply/components/TabVoice.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-reply/components/types.ts create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-reply/index.ts create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-reply/main.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-video-play/index.ts create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-video-play/main.vue create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-voice-play/index.ts create mode 100644 yshop-drink-vue3/src/views/mp/components/wx-voice-play/main.vue create mode 100644 yshop-drink-vue3/src/views/mp/draft/components/CoverSelect.vue create mode 100644 yshop-drink-vue3/src/views/mp/draft/components/DraftTable.vue create mode 100644 yshop-drink-vue3/src/views/mp/draft/components/NewsForm.vue create mode 100644 yshop-drink-vue3/src/views/mp/draft/components/index.ts create mode 100644 yshop-drink-vue3/src/views/mp/draft/components/types.ts create mode 100644 yshop-drink-vue3/src/views/mp/draft/editor-config.ts create mode 100644 yshop-drink-vue3/src/views/mp/draft/index.vue create mode 100644 yshop-drink-vue3/src/views/mp/draft/mock.js create mode 100644 yshop-drink-vue3/src/views/mp/freePublish/index.vue create mode 100644 yshop-drink-vue3/src/views/mp/hooks/useUpload.ts create mode 100644 yshop-drink-vue3/src/views/mp/material/components/ImageTable.vue create mode 100644 yshop-drink-vue3/src/views/mp/material/components/UploadFile.vue create mode 100644 yshop-drink-vue3/src/views/mp/material/components/UploadVideo.vue create mode 100644 yshop-drink-vue3/src/views/mp/material/components/VideoTable.vue create mode 100644 yshop-drink-vue3/src/views/mp/material/components/VoiceTable.vue create mode 100644 yshop-drink-vue3/src/views/mp/material/components/upload.ts create mode 100644 yshop-drink-vue3/src/views/mp/material/index.vue create mode 100644 yshop-drink-vue3/src/views/mp/menu/assets/iphone_backImg.png create mode 100644 yshop-drink-vue3/src/views/mp/menu/assets/menu_foot.png create mode 100644 yshop-drink-vue3/src/views/mp/menu/assets/menu_head.png create mode 100644 yshop-drink-vue3/src/views/mp/menu/components/MenuEditor.vue create mode 100644 yshop-drink-vue3/src/views/mp/menu/components/MenuPreviewer.vue create mode 100644 yshop-drink-vue3/src/views/mp/menu/components/menuOptions.ts create mode 100644 yshop-drink-vue3/src/views/mp/menu/components/types.ts create mode 100644 yshop-drink-vue3/src/views/mp/menu/index.vue create mode 100644 yshop-drink-vue3/src/views/mp/message/MessageTable.vue create mode 100644 yshop-drink-vue3/src/views/mp/message/index.vue create mode 100644 yshop-drink-vue3/src/views/mp/statistics/index.vue create mode 100644 yshop-drink-vue3/src/views/mp/tag/TagForm.vue create mode 100644 yshop-drink-vue3/src/views/mp/tag/index.vue create mode 100644 yshop-drink-vue3/src/views/mp/user/UserForm.vue create mode 100644 yshop-drink-vue3/src/views/mp/user/index.vue create mode 100644 yshop-drink-vue3/src/views/pay/merchantDetails/MerchantDetailsForm.vue create mode 100644 yshop-drink-vue3/src/views/pay/merchantDetails/index.vue create mode 100644 yshop-drink-vue3/src/views/score/order/OrderDetail.vue create mode 100644 yshop-drink-vue3/src/views/score/order/OrderForm.vue create mode 100644 yshop-drink-vue3/src/views/score/order/index.vue create mode 100644 yshop-drink-vue3/src/views/score/product/ProductForm.vue create mode 100644 yshop-drink-vue3/src/views/score/product/index.vue create mode 100644 yshop-drink-vue3/src/views/system/area/AreaForm.vue create mode 100644 yshop-drink-vue3/src/views/system/area/index.vue create mode 100644 yshop-drink-vue3/src/views/system/dept/DeptForm.vue create mode 100644 yshop-drink-vue3/src/views/system/dept/index.vue create mode 100644 yshop-drink-vue3/src/views/system/dict/DictTypeForm.vue create mode 100644 yshop-drink-vue3/src/views/system/dict/data/DictDataForm.vue create mode 100644 yshop-drink-vue3/src/views/system/dict/data/index.vue create mode 100644 yshop-drink-vue3/src/views/system/dict/index.vue create mode 100644 yshop-drink-vue3/src/views/system/loginlog/LoginLogDetail.vue create mode 100644 yshop-drink-vue3/src/views/system/loginlog/index.vue create mode 100644 yshop-drink-vue3/src/views/system/mail/account/MailAccountDetail.vue create mode 100644 yshop-drink-vue3/src/views/system/mail/account/MailAccountForm.vue create mode 100644 yshop-drink-vue3/src/views/system/mail/account/account.data.ts create mode 100644 yshop-drink-vue3/src/views/system/mail/account/index.vue create mode 100644 yshop-drink-vue3/src/views/system/mail/log/MailLogDetail.vue create mode 100644 yshop-drink-vue3/src/views/system/mail/log/index.vue create mode 100644 yshop-drink-vue3/src/views/system/mail/log/log.data.ts create mode 100644 yshop-drink-vue3/src/views/system/mail/template/MailTemplateForm.vue create mode 100644 yshop-drink-vue3/src/views/system/mail/template/MailTemplateSendForm.vue create mode 100644 yshop-drink-vue3/src/views/system/mail/template/index.vue create mode 100644 yshop-drink-vue3/src/views/system/mail/template/template.data.ts create mode 100644 yshop-drink-vue3/src/views/system/menu/MenuForm.vue create mode 100644 yshop-drink-vue3/src/views/system/menu/index.vue create mode 100644 yshop-drink-vue3/src/views/system/notice/NoticeForm.vue create mode 100644 yshop-drink-vue3/src/views/system/notice/index.vue create mode 100644 yshop-drink-vue3/src/views/system/notify/message/NotifyMessageDetail.vue create mode 100644 yshop-drink-vue3/src/views/system/notify/message/index.vue create mode 100644 yshop-drink-vue3/src/views/system/notify/my/MyNotifyMessageDetail.vue create mode 100644 yshop-drink-vue3/src/views/system/notify/my/index.vue create mode 100644 yshop-drink-vue3/src/views/system/notify/template/NotifyTemplateForm.vue create mode 100644 yshop-drink-vue3/src/views/system/notify/template/NotifyTemplateSendForm.vue create mode 100644 yshop-drink-vue3/src/views/system/notify/template/index.vue create mode 100644 yshop-drink-vue3/src/views/system/oauth2/client/ClientForm.vue create mode 100644 yshop-drink-vue3/src/views/system/oauth2/client/index.vue create mode 100644 yshop-drink-vue3/src/views/system/oauth2/token/index.vue create mode 100644 yshop-drink-vue3/src/views/system/operatelog/OperateLogDetail.vue create mode 100644 yshop-drink-vue3/src/views/system/operatelog/index.vue create mode 100644 yshop-drink-vue3/src/views/system/post/PostForm.vue create mode 100644 yshop-drink-vue3/src/views/system/post/index.vue create mode 100644 yshop-drink-vue3/src/views/system/role/RoleAssignMenuForm.vue create mode 100644 yshop-drink-vue3/src/views/system/role/RoleDataPermissionForm.vue create mode 100644 yshop-drink-vue3/src/views/system/role/RoleForm.vue create mode 100644 yshop-drink-vue3/src/views/system/role/index.vue create mode 100644 yshop-drink-vue3/src/views/system/sms/channel/SmsChannelForm.vue create mode 100644 yshop-drink-vue3/src/views/system/sms/channel/index.vue create mode 100644 yshop-drink-vue3/src/views/system/sms/log/SmsLogDetail.vue create mode 100644 yshop-drink-vue3/src/views/system/sms/log/index.vue create mode 100644 yshop-drink-vue3/src/views/system/sms/template/SmsTemplateForm.vue create mode 100644 yshop-drink-vue3/src/views/system/sms/template/SmsTemplateSendForm.vue create mode 100644 yshop-drink-vue3/src/views/system/sms/template/index.vue create mode 100644 yshop-drink-vue3/src/views/system/social/client/SocialClientForm.vue create mode 100644 yshop-drink-vue3/src/views/system/social/client/index.vue create mode 100644 yshop-drink-vue3/src/views/system/social/user/SocialUserDetail.vue create mode 100644 yshop-drink-vue3/src/views/system/social/user/index.vue create mode 100644 yshop-drink-vue3/src/views/system/tenant/TenantForm.vue create mode 100644 yshop-drink-vue3/src/views/system/tenant/index.vue create mode 100644 yshop-drink-vue3/src/views/system/tenantPackage/TenantPackageForm.vue create mode 100644 yshop-drink-vue3/src/views/system/tenantPackage/index.vue create mode 100644 yshop-drink-vue3/src/views/system/user/DeptTree.vue create mode 100644 yshop-drink-vue3/src/views/system/user/UserAssignRoleForm.vue create mode 100644 yshop-drink-vue3/src/views/system/user/UserForm.vue create mode 100644 yshop-drink-vue3/src/views/system/user/UserImportForm.vue create mode 100644 yshop-drink-vue3/src/views/system/user/index.vue create mode 100644 yshop-drink-vue3/stylelint.config.js create mode 100644 yshop-drink-vue3/tsconfig.json create mode 100644 yshop-drink-vue3/types/components.d.ts create mode 100644 yshop-drink-vue3/types/custom-types.d.ts create mode 100644 yshop-drink-vue3/types/env.d.ts create mode 100644 yshop-drink-vue3/types/global.d.ts create mode 100644 yshop-drink-vue3/types/router.d.ts create mode 100644 yshop-drink-vue3/uno.config.ts create mode 100644 yshop-drink-vue3/vite.config.ts diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 1ae72877dfe6a886d06f5e17a1394de2267cf033..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10244 zcmeHMTWl0n82qWoLFv zSxah&Q4@^D7)5=+OVkHmjDl}?djj>v*u)4i!OM#=@$#T1^~L|pnI*fW3r|Ku&PnF{ z=lqv*=6w5|`E$+!0Cr^bW`HOFNc1qNDpbu;n4LY>lu)3lB8e0aFb1nYhcuXAU*jzl z0s(=5KtLcM5D*C53^&!{Z9u~{thm$?Z+)2g*ImIOp2jt;^!OR$(P|%;9;-bDg zV4O=)3j_oL*CN1je-%uC3&Y?Po!>{2-RajdItExE@u#)s6pPRI5%(>Bt6u&Ep5a$vx; zb!WW8$=JH+nt3 zSVU3FXdB4Bb5pYtQ7ee?+}hfvC~7%v32t4#fvoe0{M@=JOjZbNoy%z;qz~#1seD}` ze+8G|XZRClh`<%N0BbRVD~P-;xDmG!b$4Pn_TU~I#C^CQ51@gEiNuc)jXlibQJf$u zpTH;aDSR5A!58pFBJ#_43f~|izm4zUyZ9cyj~@`F&l90P!B6osqVzO=hd<0BaCb3* z@yF5x&L+~f<=BVGgVDcc?vzK@*Gby84tTJpFdx*HbkERDw+R|$PImX5g$x+Qq17cr zedmHCdm+EE{;wokpUbth#G;;BM5vAuK zJ*+UlDK7mGs+bGY``7W*Vb}5gH3{j0ODEqR5B#RM^usC64=2fQ^Z)Zd1H}3N3d0{t QU1f>$fAK-`7Cis|3)C$U4gdfE diff --git a/.gitignore b/.gitignore index 1111f48..3fb8bd6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,6 @@ /.idea *.log *.DS_Store -/yshop-drink/target/ -/yshop-drink-vue/node_modules -/yshop-drink-uniapp-vue3/node_modules \ No newline at end of file +/yshop-drink-boot3/target/ +/yshop-drink-vue3/node_modules +/yshop-drink-uniapp-vue3/node_moduls diff --git a/yshop-drink-vue3 b/yshop-drink-vue3 deleted file mode 160000 index a5131dd..0000000 --- a/yshop-drink-vue3 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a5131dd88349d7fb3121a94d568b240054046289 diff --git a/yshop-drink-vue3/.editorconfig b/yshop-drink-vue3/.editorconfig new file mode 100644 index 0000000..79a12ff --- /dev/null +++ b/yshop-drink-vue3/.editorconfig @@ -0,0 +1,12 @@ +root = true +[*.{js,ts,vue}] +charset = utf-8 # 设置文件字符集为 utf-8 +end_of_line = lf # 控制换行类型(lf | cr | crlf) +insert_final_newline = true # 始终在文件末尾插入一个新行 +indent_style = space # 缩进风格(tab | space) +indent_size = 2 # 缩进大小 +max_line_length = 100 # 最大行长度 + +[*.md] # 仅 md 文件适用以下规则 +max_line_length = off # 关闭最大行长度限制 +trim_trailing_whitespace = false # 关闭末尾空格修剪 diff --git a/yshop-drink-vue3/.env b/yshop-drink-vue3/.env new file mode 100644 index 0000000..4c066a6 --- /dev/null +++ b/yshop-drink-vue3/.env @@ -0,0 +1,23 @@ +# 标题 +VITE_APP_TITLE=意象点餐管理系统 + +# 项目本地运行端口号 +VITE_PORT=80 + +# open 运行 npm run dev 时自动打开浏览器 +VITE_OPEN=true + +# 租户开关 +VITE_APP_TENANT_ENABLE=false + +# 验证码的开关 +VITE_APP_CAPTCHA_ENABLE=true + +# 文档地址的开关 +VITE_APP_DOCALERT_ENABLE=true + +# 百度统计 +VITE_APP_BAIDU_CODE = a1ff8825baa73c3a78eb96aa40325abc + +# 百度地图ak +VITE_BAIDU_MAP_AK = m1YRfvvQt9dPVNuPSieTEDgRhZkIznSn diff --git a/yshop-drink-vue3/.env.dev b/yshop-drink-vue3/.env.dev new file mode 100644 index 0000000..bd361b7 --- /dev/null +++ b/yshop-drink-vue3/.env.dev @@ -0,0 +1,36 @@ +# 开发环境:本地只启动前端项目,依赖开发环境(后端、APP) +NODE_ENV=production + +VITE_DEV=true + +# 请求路径 +VITE_BASE_URL='https://apidc.dayouqiantu.cn' + +# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 +VITE_UPLOAD_TYPE=server +# 上传路径 +VITE_UPLOAD_URL='https://apidc.dayouqiantu.cn/admin-api/infra/file/upload' + +# 接口地址 +VITE_API_URL=/admin-api + +# 是否删除debugger +VITE_DROP_DEBUGGER=false + +# 是否删除console.log +VITE_DROP_CONSOLE=false + +# 是否sourcemap +VITE_SOURCEMAP=true + +# 打包路径 +VITE_BASE_PATH=/ + +# 输出路径 +VITE_OUT_DIR=dist + +# 商城H5会员端域名 +VITE_MALL_H5_DOMAIN='http://mall.yudao.yixiang.co' + +# 验证码的开关 +VITE_APP_CAPTCHA_ENABLE=true diff --git a/yshop-drink-vue3/.env.prod b/yshop-drink-vue3/.env.prod new file mode 100644 index 0000000..8feca4f --- /dev/null +++ b/yshop-drink-vue3/.env.prod @@ -0,0 +1,33 @@ +# 生产环境:只在打包时使用 +NODE_ENV=production + +VITE_DEV=false + +# 请求路径 +VITE_BASE_URL='http://localhost:48081' + +# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 +VITE_UPLOAD_TYPE=server +# 上传路径 +VITE_UPLOAD_URL='http://localhost:48081/admin-api/infra/file/upload' + +# 接口地址 +VITE_API_URL=/admin-api + +# 是否删除debugger +VITE_DROP_DEBUGGER=true + +# 是否删除console.log +VITE_DROP_CONSOLE=true + +# 是否sourcemap +VITE_SOURCEMAP=false + +# 打包路径 +VITE_BASE_PATH=/ + +# 输出路径 +VITE_OUT_DIR=dist-prod + +# 商城H5会员端域名 +VITE_MALL_H5_DOMAIN='https://apidc.dayouqiantu.cn' diff --git a/yshop-drink-vue3/.env.stage b/yshop-drink-vue3/.env.stage new file mode 100644 index 0000000..74c5081 --- /dev/null +++ b/yshop-drink-vue3/.env.stage @@ -0,0 +1,33 @@ +# 预发布环境:只在打包时使用 +NODE_ENV=production + +VITE_DEV=false + +# 请求路径 +VITE_BASE_URL='https://apidc.dayouqiantu.cn' + +# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 +VITE_UPLOAD_TYPE=server +# 上传路径 +VITE_UPLOAD_URL='https://apidc.dayouqiantu.cn/admin-api/infra/file/upload' + +# 接口地址 +VITE_API_URL=/admin-api + +# 是否删除debugger +VITE_DROP_DEBUGGER=true + +# 是否删除console.log +VITE_DROP_CONSOLE=true + +# 是否sourcemap +VITE_SOURCEMAP=false + +# 打包路径 +VITE_BASE_PATH='https://apidc.dayouqiantu.cn' + +# 输出路径 +VITE_OUT_DIR=dist-stage + +# 商城H5会员端域名 +VITE_MALL_H5_DOMAIN='https://apidc.dayouqiantu.cn' diff --git a/yshop-drink-vue3/.env.test b/yshop-drink-vue3/.env.test new file mode 100644 index 0000000..d404b6e --- /dev/null +++ b/yshop-drink-vue3/.env.test @@ -0,0 +1,33 @@ +# 测试环境:只在打包时使用 +NODE_ENV=production + +VITE_DEV=false + +# 请求路径 +VITE_BASE_URL='http://localhost:48081' + +# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 +VITE_UPLOAD_TYPE=server +# 上传路径 +VITE_UPLOAD_URL='http://localhost:48081/admin-api/infra/file/upload' + +# 接口地址 +VITE_API_URL=/admin-api + +# 是否删除debugger +VITE_DROP_DEBUGGER=true + +# 是否删除console.log +VITE_DROP_CONSOLE=true + +# 是否sourcemap +VITE_SOURCEMAP=false + +# 打包路径 +VITE_BASE_PATH=/admin-ui-vue3/ + +# 输出路径 +VITE_OUT_DIR=dist-test + +# 商城H5会员端域名 +VITE_MALL_H5_DOMAIN='https://apidc.dayouqiantu.cn' diff --git a/yshop-drink-vue3/.eslintignore b/yshop-drink-vue3/.eslintignore new file mode 100644 index 0000000..1e85c0f --- /dev/null +++ b/yshop-drink-vue3/.eslintignore @@ -0,0 +1,8 @@ +/build/ +/config/ +/dist/ +/*.js +/test/unit/coverage/ +/node_modules/* +/dist* +/src/main.ts diff --git a/yshop-drink-vue3/.eslintrc-auto-import.json b/yshop-drink-vue3/.eslintrc-auto-import.json new file mode 100644 index 0000000..024c96a --- /dev/null +++ b/yshop-drink-vue3/.eslintrc-auto-import.json @@ -0,0 +1,259 @@ +{ + "globals": { + "EffectScope": true, + "ElMessage": true, + "ElMessageBox": true, + "ElTag": true, + "asyncComputed": true, + "autoResetRef": true, + "computed": true, + "computedAsync": true, + "computedEager": true, + "computedInject": true, + "computedWithControl": true, + "controlledComputed": true, + "controlledRef": true, + "createApp": true, + "createEventHook": true, + "createGlobalState": true, + "createInjectionState": true, + "createReactiveFn": true, + "createSharedComposable": true, + "createUnrefFn": true, + "customRef": true, + "debouncedRef": true, + "debouncedWatch": true, + "defineAsyncComponent": true, + "defineComponent": true, + "eagerComputed": true, + "effectScope": true, + "extendRef": true, + "getCurrentInstance": true, + "getCurrentScope": true, + "h": true, + "ignorableWatch": true, + "inject": true, + "isDefined": true, + "isProxy": true, + "isReactive": true, + "isReadonly": true, + "isRef": true, + "makeDestructurable": true, + "markRaw": true, + "nextTick": true, + "onActivated": true, + "onBeforeMount": true, + "onBeforeUnmount": true, + "onBeforeUpdate": true, + "onClickOutside": true, + "onDeactivated": true, + "onErrorCaptured": true, + "onKeyStroke": true, + "onLongPress": true, + "onMounted": true, + "onRenderTracked": true, + "onRenderTriggered": true, + "onScopeDispose": true, + "onServerPrefetch": true, + "onStartTyping": true, + "onUnmounted": true, + "onUpdated": true, + "pausableWatch": true, + "provide": true, + "reactify": true, + "reactifyObject": true, + "reactive": true, + "reactiveComputed": true, + "reactiveOmit": true, + "reactivePick": true, + "readonly": true, + "ref": true, + "refAutoReset": true, + "refDebounced": true, + "refDefault": true, + "refThrottled": true, + "refWithControl": true, + "resolveComponent": true, + "resolveRef": true, + "resolveUnref": true, + "shallowReactive": true, + "shallowReadonly": true, + "shallowRef": true, + "syncRef": true, + "syncRefs": true, + "templateRef": true, + "throttledRef": true, + "throttledWatch": true, + "toRaw": true, + "toReactive": true, + "toRef": true, + "toRefs": true, + "triggerRef": true, + "tryOnBeforeMount": true, + "tryOnBeforeUnmount": true, + "tryOnMounted": true, + "tryOnScopeDispose": true, + "tryOnUnmounted": true, + "unref": true, + "unrefElement": true, + "until": true, + "useActiveElement": true, + "useArrayEvery": true, + "useArrayFilter": true, + "useArrayFind": true, + "useArrayFindIndex": true, + "useArrayJoin": true, + "useArrayMap": true, + "useArrayReduce": true, + "useArraySome": true, + "useAsyncQueue": true, + "useAsyncState": true, + "useAttrs": true, + "useBase64": true, + "useBattery": true, + "useBluetooth": true, + "useBreakpoints": true, + "useBroadcastChannel": true, + "useBrowserLocation": true, + "useCached": true, + "useClipboard": true, + "useColorMode": true, + "useConfirmDialog": true, + "useCounter": true, + "useCssModule": true, + "useCssVar": true, + "useCssVars": true, + "useCurrentElement": true, + "useCycleList": true, + "useDark": true, + "useDateFormat": true, + "useDebounce": true, + "useDebounceFn": true, + "useDebouncedRefHistory": true, + "useDeviceMotion": true, + "useDeviceOrientation": true, + "useDevicePixelRatio": true, + "useDevicesList": true, + "useDisplayMedia": true, + "useDocumentVisibility": true, + "useDraggable": true, + "useDropZone": true, + "useElementBounding": true, + "useElementByPoint": true, + "useElementHover": true, + "useElementSize": true, + "useElementVisibility": true, + "useEventBus": true, + "useEventListener": true, + "useEventSource": true, + "useEyeDropper": true, + "useFavicon": true, + "useFetch": true, + "useFileDialog": true, + "useFileSystemAccess": true, + "useFocus": true, + "useFocusWithin": true, + "useFps": true, + "useFullscreen": true, + "useGamepad": true, + "useGeolocation": true, + "useIdle": true, + "useImage": true, + "useInfiniteScroll": true, + "useIntersectionObserver": true, + "useInterval": true, + "useIntervalFn": true, + "useKeyModifier": true, + "useLastChanged": true, + "useLocalStorage": true, + "useMagicKeys": true, + "useManualRefHistory": true, + "useMediaControls": true, + "useMediaQuery": true, + "useMemoize": true, + "useMemory": true, + "useMounted": true, + "useMouse": true, + "useMouseInElement": true, + "useMousePressed": true, + "useMutationObserver": true, + "useNavigatorLanguage": true, + "useNetwork": true, + "useNow": true, + "useObjectUrl": true, + "useOffsetPagination": true, + "useOnline": true, + "usePageLeave": true, + "useParallax": true, + "usePermission": true, + "usePointer": true, + "usePointerSwipe": true, + "usePreferredColorScheme": true, + "usePreferredDark": true, + "usePreferredLanguages": true, + "useRafFn": true, + "useRefHistory": true, + "useResizeObserver": true, + "useRoute": true, + "useRouter": true, + "useScreenOrientation": true, + "useScreenSafeArea": true, + "useScriptTag": true, + "useScroll": true, + "useScrollLock": true, + "useSessionStorage": true, + "useShare": true, + "useSlots": true, + "useSpeechRecognition": true, + "useSpeechSynthesis": true, + "useStepper": true, + "useStorage": true, + "useStorageAsync": true, + "useStyleTag": true, + "useSupported": true, + "useSwipe": true, + "useTemplateRefsList": true, + "useTextDirection": true, + "useTextSelection": true, + "useTextareaAutosize": true, + "useThrottle": true, + "useThrottleFn": true, + "useThrottledRefHistory": true, + "useTimeAgo": true, + "useTimeout": true, + "useTimeoutFn": true, + "useTimeoutPoll": true, + "useTimestamp": true, + "useTitle": true, + "useToggle": true, + "useTransition": true, + "useUrlSearchParams": true, + "useUserMedia": true, + "useVModel": true, + "useVModels": true, + "useVibrate": true, + "useVirtualList": true, + "useWakeLock": true, + "useWebNotification": true, + "useWebSocket": true, + "useWebWorker": true, + "useWebWorkerFn": true, + "useWindowFocus": true, + "useWindowScroll": true, + "useWindowSize": true, + "watch": true, + "watchArray": true, + "watchAtMost": true, + "watchDebounced": true, + "watchEffect": true, + "watchIgnorable": true, + "watchOnce": true, + "watchPausable": true, + "watchPostEffect": true, + "watchSyncEffect": true, + "watchThrottled": true, + "watchTriggerable": true, + "watchWithFilter": true, + "whenever": true + } +} diff --git a/yshop-drink-vue3/.eslintrc.js b/yshop-drink-vue3/.eslintrc.js new file mode 100644 index 0000000..b28255c --- /dev/null +++ b/yshop-drink-vue3/.eslintrc.js @@ -0,0 +1,75 @@ +// @ts-check +const { defineConfig } = require('eslint-define-config') +module.exports = defineConfig({ + root: true, + env: { + browser: true, + node: true, + es6: true + }, + parser: 'vue-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser', + ecmaVersion: 2020, + sourceType: 'module', + jsxPragma: 'React', + ecmaFeatures: { + jsx: true + } + }, + extends: [ + 'plugin:vue/vue3-recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier', + 'plugin:prettier/recommended', + '@unocss' + ], + rules: { + 'vue/no-setup-props-destructure': 'off', + 'vue/script-setup-uses-vars': 'error', + 'vue/no-reserved-component-names': 'off', + '@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', + 'vue/custom-event-name-casing': 'off', + 'no-use-before-define': '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', + '@typescript-eslint/no-unused-vars': 'off', + 'no-unused-vars': 'off', + 'space-before-function-paren': '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/require-default-prop': 'off', + 'vue/require-explicit-emits': 'off', + 'vue/require-toggle-inside-transition': 'off', + 'vue/html-self-closing': [ + 'error', + { + html: { + void: 'always', + normal: 'never', + component: 'always' + }, + svg: 'always', + math: 'always' + } + ], + 'vue/multi-word-component-names': 'off', + 'vue/no-v-html': 'off', + 'prettier/prettier': 'off', // 芋艿:默认关闭 prettier 的 ESLint 校验,因为我们使用的是 IDE 的 Prettier 插件 + '@unocss/order': 'off', // 芋艿:禁用 unocss 【css】顺序的提示,因为暂时不需要这么严格,警告也有点繁琐 + '@unocss/order-attributify': 'off' // 芋艿:禁用 unocss 【属性】顺序的提示,因为暂时不需要这么严格,警告也有点繁琐 + } +}) diff --git a/yshop-drink-vue3/.gitignore b/yshop-drink-vue3/.gitignore new file mode 100644 index 0000000..868a1cb --- /dev/null +++ b/yshop-drink-vue3/.gitignore @@ -0,0 +1,10 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local +/dist* +pnpm-debug +auto-*.d.ts +.idea +.history diff --git a/yshop-drink-vue3/.prettierignore b/yshop-drink-vue3/.prettierignore new file mode 100644 index 0000000..f68ea86 --- /dev/null +++ b/yshop-drink-vue3/.prettierignore @@ -0,0 +1,11 @@ +/node_modules/** +/dist/ +/dist* +/public/* +/docs/* +/vite.config.ts +/src/types/env.d.ts +/src/types/auto-components.d.ts +/src/types/auto-imports.d.ts +/docs/**/* +CHANGELOG diff --git a/yshop-drink-vue3/.stylelintignore b/yshop-drink-vue3/.stylelintignore new file mode 100644 index 0000000..aa605b4 --- /dev/null +++ b/yshop-drink-vue3/.stylelintignore @@ -0,0 +1,6 @@ +/dist/* +/public/* +public/* +/dist* +/src/types/env.d.ts +/docs/**/* diff --git a/yshop-drink-vue3/.vscode/extensions.json b/yshop-drink-vue3/.vscode/extensions.json new file mode 100644 index 0000000..65288b5 --- /dev/null +++ b/yshop-drink-vue3/.vscode/extensions.json @@ -0,0 +1,18 @@ +{ + "recommendations": [ + "christian-kohler.path-intellisense", + "vscode-icons-team.vscode-icons", + "davidanson.vscode-markdownlint", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "mrmlnc.vscode-less", + "lokalise.i18n-ally", + "redhat.vscode-yaml", + "csstools.postcss", + "mikestead.dotenv", + "eamodio.gitlens", + "antfu.iconify", + "antfu.unocss", + "Vue.volar" + ] +} diff --git a/yshop-drink-vue3/.vscode/launch.json b/yshop-drink-vue3/.vscode/launch.json new file mode 100644 index 0000000..f43edc0 --- /dev/null +++ b/yshop-drink-vue3/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "msedge", + "request": "launch", + "name": "Launch Edge against localhost", + "url": "http://localhost", + "webRoot": "${workspaceFolder}/src", + "sourceMaps": true + } + ] +} diff --git a/yshop-drink-vue3/.vscode/settings.json b/yshop-drink-vue3/.vscode/settings.json new file mode 100644 index 0000000..54be7d8 --- /dev/null +++ b/yshop-drink-vue3/.vscode/settings.json @@ -0,0 +1,144 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib", + "npm.packageManager": "pnpm", + "editor.tabSize": 2, + "prettier.printWidth": 100, // 超过最大值换行 + "editor.defaultFormatter": "esbenp.prettier-vscode", + "files.eol": "\n", + "search.exclude": { + "**/node_modules": true, + "**/*.log": true, + "**/*.log*": true, + "**/bower_components": true, + "**/dist": true, + "**/elehukouben": true, + "**/.git": true, + "**/.gitignore": true, + "**/.svn": true, + "**/.DS_Store": true, + "**/.idea": true, + "**/.vscode": false, + "**/yarn.lock": true, + "**/tmp": true, + "out": true, + "dist": true, + "node_modules": true, + "CHANGELOG.md": true, + "examples": true, + "res": true, + "screenshots": true, + "yarn-error.log": true, + "**/.yarn": true + }, + "files.exclude": { + "**/.cache": true, + "**/.editorconfig": true, + "**/.eslintcache": true, + "**/bower_components": true, + "**/.idea": true, + "**/tmp": true, + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true + }, + "files.watcherExclude": { + "**/.git/objects/**": true, + "**/.git/subtree-cache/**": true, + "**/.vscode/**": true, + "**/node_modules/**": true, + "**/tmp/**": true, + "**/bower_components/**": true, + "**/dist/**": true, + "**/yarn.lock": true + }, + "stylelint.enable": true, + "stylelint.validate": ["css", "less", "postcss", "scss", "vue", "sass"], + "path-intellisense.mappings": { + "@/": "${workspaceRoot}/src" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" + }, + "[html]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[css]": { + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" + }, + "[less]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[scss]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[markdown]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit" + }, + "[vue]": { + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" + }, + "i18n-ally.localesPaths": ["src/locales"], + "i18n-ally.keystyle": "nested", + "i18n-ally.sortKeys": true, + "i18n-ally.namespace": false, + "i18n-ally.enabledParsers": ["ts"], + "i18n-ally.sourceLanguage": "en", + "i18n-ally.displayLanguage": "zh-CN", + "i18n-ally.enabledFrameworks": ["vue", "react"], + "cSpell.words": [ + "brotli", + "browserslist", + "codemirror", + "commitlint", + "cropperjs", + "echart", + "echarts", + "esnext", + "esno", + "iconify", + "INTLIFY", + "lintstagedrc", + "logicflow", + "nprogress", + "pinia", + "pnpm", + "qrcode", + "sider", + "sortablejs", + "stylelint", + "svgs", + "unocss", + "unplugin", + "unref", + "videojs", + "VITE", + "vitejs", + "vueuse", + "wangeditor", + "xingyu", + "yudao", + "zxcvbn" + ], + // 控制相关文件嵌套展示 + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.expand": false, + "explorer.fileNesting.patterns": { + "*.ts": "$(capture).test.ts, $(capture).test.tsx", + "*.tsx": "$(capture).test.ts, $(capture).test.tsx", + "*.env": "$(capture).env.*", + "package.json": "pnpm-lock.yaml,yarn.lock,LICENSE,README*,CHANGELOG*,CNAME,.gitattributes,.eslintrc-auto-import.json,.gitignore,prettier.config.js,stylelint.config.js,commitlint.config.js,.stylelintignore,.prettierignore,.gitpod.yml,.eslintrc.js,.eslintignore" + }, + "terminal.integrated.scrollback": 10000, + "nuxt.isNuxtApp": false +} diff --git a/yshop-drink-vue3/README.md b/yshop-drink-vue3/README.md new file mode 100644 index 0000000..ae7a985 --- /dev/null +++ b/yshop-drink-vue3/README.md @@ -0,0 +1,3 @@ +意向订餐系统,类似肯德基点餐小程序模式,支持多门店模式,基础技术Java,uniapp(支持H5、微信小程序) +采用当前流行技术组合的前后端分离点餐系统: SpringBoot3+jdk17+vue3、Spring Security OAuth2、MybatisPlus、SpringSecurity、jwt、redis、Vue3的前后端分离的系统, +包含店铺管理、积分兑换、云小票打印、图片素材库、订单管理、多规格sku、积分、优惠券、充值、多门店、微信公众号等功能,更适合企业或个人二次开发. \ No newline at end of file diff --git a/yshop-drink-vue3/build/vite/index.ts b/yshop-drink-vue3/build/vite/index.ts new file mode 100644 index 0000000..585759f --- /dev/null +++ b/yshop-drink-vue3/build/vite/index.ts @@ -0,0 +1,100 @@ +import { resolve } from 'path' +import Vue from '@vitejs/plugin-vue' +import VueJsx from '@vitejs/plugin-vue-jsx' +import progress from 'vite-plugin-progress' +import EslintPlugin from 'vite-plugin-eslint' +import PurgeIcons from 'vite-plugin-purge-icons' +import { ViteEjsPlugin } from 'vite-plugin-ejs' +// @ts-ignore +import ElementPlus from 'unplugin-element-plus/vite' +import AutoImport from 'unplugin-auto-import/vite' +import Components from 'unplugin-vue-components/vite' +import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' +import viteCompression from 'vite-plugin-compression' +import topLevelAwait from 'vite-plugin-top-level-await' +import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite' +import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' +import UnoCSS from 'unocss/vite' + +export function createVitePlugins() { + const root = process.cwd() + + // 路径查找 + function pathResolve(dir: string) { + return resolve(root, '.', dir) + } + + return [ + Vue(), + VueJsx(), + UnoCSS(), + progress(), + PurgeIcons(), + ElementPlus({}), + AutoImport({ + include: [ + /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx + /\.vue$/, + /\.vue\?vue/, // .vue + /\.md$/ // .md + ], + imports: [ + 'vue', + 'vue-router', + // 可额外添加需要 autoImport 的组件 + { + '@/hooks/web/useI18n': ['useI18n'], + '@/hooks/web/useMessage': ['useMessage'], + '@/hooks/web/useTable': ['useTable'], + '@/hooks/web/useCrudSchemas': ['useCrudSchemas'], + '@/utils/formRules': ['required'], + '@/utils/dict': ['DICT_TYPE'] + } + ], + dts: 'src/types/auto-imports.d.ts', + resolvers: [ElementPlusResolver()], + eslintrc: { + enabled: false, // Default `false` + filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json` + globalsPropValue: true // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable') + } + }), + Components({ + // 生成自定义 `auto-components.d.ts` 全局声明 + dts: 'src/types/auto-components.d.ts', + // 自定义组件的解析器 + resolvers: [ElementPlusResolver()], + globs: ["src/components/**/**.{vue, md}", '!src/components/DiyEditor/components/mobile/**'] + }), + EslintPlugin({ + cache: false, + include: ['src/**/*.vue', 'src/**/*.ts', 'src/**/*.tsx'] // 检查的文件 + }), + VueI18nPlugin({ + runtimeOnly: true, + compositionOnly: true, + include: [resolve(__dirname, 'src/locales/**')] + }), + createSvgIconsPlugin({ + iconDirs: [pathResolve('src/assets/svgs')], + symbolId: 'icon-[dir]-[name]', + svgoOptions: true + }), + viteCompression({ + verbose: true, // 是否在控制台输出压缩结果 + disable: false, // 是否禁用 + threshold: 10240, // 体积大于 threshold 才会被压缩,单位 b + algorithm: 'gzip', // 压缩算法,可选 [ 'gzip' , 'brotliCompress' ,'deflate' , 'deflateRaw'] + ext: '.gz', // 生成的压缩包后缀 + deleteOriginFile: false //压缩后是否删除源文件 + }), + ViteEjsPlugin(), + topLevelAwait({ + // https://juejin.cn/post/7152191742513512485 + // The export name of top-level await promise for each chunk module + promiseExportName: '__tla', + // The function to generate import names of top-level await promise in each chunk module + promiseImportName: (i) => `__tla_${i}` + }) + ] +} diff --git a/yshop-drink-vue3/build/vite/optimize.ts b/yshop-drink-vue3/build/vite/optimize.ts new file mode 100644 index 0000000..3dda50b --- /dev/null +++ b/yshop-drink-vue3/build/vite/optimize.ts @@ -0,0 +1,112 @@ +const include = [ + 'qs', + 'url', + 'vue', + 'sass', + 'mitt', + 'axios', + 'pinia', + 'dayjs', + 'qrcode', + 'unocss', + 'vue-router', + 'vue-types', + 'vue-i18n', + 'crypto-js', + 'cropperjs', + 'lodash-es', + 'nprogress', + 'web-storage-cache', + '@iconify/iconify', + '@vueuse/core', + '@zxcvbn-ts/core', + 'echarts/core', + 'echarts/charts', + 'echarts/components', + 'echarts/renderers', + 'echarts-wordcloud', + '@wangeditor/editor', + '@wangeditor/editor-for-vue', + 'element-plus', + 'element-plus/es', + 'element-plus/es/locale/lang/zh-cn', + 'element-plus/es/locale/lang/en', + 'element-plus/es/components/avatar/style/css', + 'element-plus/es/components/space/style/css', + 'element-plus/es/components/backtop/style/css', + 'element-plus/es/components/form/style/css', + 'element-plus/es/components/radio-group/style/css', + 'element-plus/es/components/radio/style/css', + 'element-plus/es/components/checkbox/style/css', + 'element-plus/es/components/checkbox-group/style/css', + 'element-plus/es/components/switch/style/css', + 'element-plus/es/components/time-picker/style/css', + 'element-plus/es/components/date-picker/style/css', + 'element-plus/es/components/descriptions/style/css', + 'element-plus/es/components/descriptions-item/style/css', + 'element-plus/es/components/link/style/css', + 'element-plus/es/components/tooltip/style/css', + 'element-plus/es/components/drawer/style/css', + 'element-plus/es/components/dialog/style/css', + 'element-plus/es/components/checkbox-button/style/css', + 'element-plus/es/components/option-group/style/css', + 'element-plus/es/components/radio-button/style/css', + 'element-plus/es/components/cascader/style/css', + 'element-plus/es/components/color-picker/style/css', + 'element-plus/es/components/input-number/style/css', + 'element-plus/es/components/rate/style/css', + 'element-plus/es/components/select-v2/style/css', + 'element-plus/es/components/tree-select/style/css', + 'element-plus/es/components/slider/style/css', + 'element-plus/es/components/time-select/style/css', + 'element-plus/es/components/autocomplete/style/css', + 'element-plus/es/components/image-viewer/style/css', + 'element-plus/es/components/upload/style/css', + 'element-plus/es/components/col/style/css', + 'element-plus/es/components/form-item/style/css', + 'element-plus/es/components/alert/style/css', + 'element-plus/es/components/breadcrumb/style/css', + 'element-plus/es/components/select/style/css', + 'element-plus/es/components/input/style/css', + 'element-plus/es/components/breadcrumb-item/style/css', + 'element-plus/es/components/tag/style/css', + 'element-plus/es/components/pagination/style/css', + 'element-plus/es/components/table/style/css', + 'element-plus/es/components/table-v2/style/css', + 'element-plus/es/components/table-column/style/css', + 'element-plus/es/components/card/style/css', + 'element-plus/es/components/row/style/css', + 'element-plus/es/components/button/style/css', + 'element-plus/es/components/menu/style/css', + 'element-plus/es/components/sub-menu/style/css', + 'element-plus/es/components/menu-item/style/css', + 'element-plus/es/components/option/style/css', + 'element-plus/es/components/dropdown/style/css', + 'element-plus/es/components/dropdown-menu/style/css', + 'element-plus/es/components/dropdown-item/style/css', + 'element-plus/es/components/skeleton/style/css', + 'element-plus/es/components/skeleton/style/css', + 'element-plus/es/components/backtop/style/css', + 'element-plus/es/components/menu/style/css', + 'element-plus/es/components/sub-menu/style/css', + 'element-plus/es/components/menu-item/style/css', + 'element-plus/es/components/dropdown/style/css', + 'element-plus/es/components/tree/style/css', + 'element-plus/es/components/dropdown-menu/style/css', + 'element-plus/es/components/dropdown-item/style/css', + 'element-plus/es/components/badge/style/css', + 'element-plus/es/components/breadcrumb/style/css', + 'element-plus/es/components/breadcrumb-item/style/css', + 'element-plus/es/components/image/style/css', + 'element-plus/es/components/collapse-transition/style/css', + 'element-plus/es/components/timeline/style/css', + 'element-plus/es/components/timeline-item/style/css', + 'element-plus/es/components/collapse/style/css', + 'element-plus/es/components/collapse-item/style/css', + 'element-plus/es/components/button-group/style/css', + 'element-plus/es/components/text/style/css' +] + +const exclude = ['@iconify/json'] + +export { include, exclude } diff --git a/yshop-drink-vue3/index.html b/yshop-drink-vue3/index.html new file mode 100644 index 0000000..8cfcbef --- /dev/null +++ b/yshop-drink-vue3/index.html @@ -0,0 +1,151 @@ + + + + + + + + + + %VITE_APP_TITLE% + + +
+ +
+
+
+ +
%VITE_APP_TITLE%
+
+
+
+
+
+
+
+
+ + + diff --git a/yshop-drink-vue3/package.json b/yshop-drink-vue3/package.json new file mode 100644 index 0000000..055d9ba --- /dev/null +++ b/yshop-drink-vue3/package.json @@ -0,0 +1,146 @@ +{ + "name": "yshop-drink-vue3", + "version": "3.0.0", + "description": "基于vue3、vite4、element-plus、typesScript", + "author": "yshop", + "private": false, + "scripts": { + "i": "pnpm install", + "dev": "vite", + "dev-server": "vite --mode dev", + "ts:check": "vue-tsc --noEmit", + "build:local": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build", + "build:dev": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode dev", + "build:test": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode test", + "build:stage": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode stage", + "build:prod": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode prod", + "serve:dev": "vite preview --mode dev", + "serve:prod": "vite preview --mode prod", + "preview": "pnpm build:local && vite preview", + "clean": "npx rimraf node_modules", + "clean:cache": "npx rimraf node_modules/.cache", + "lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src", + "lint:format": "prettier --write --loglevel warn \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"", + "lint:style": "stylelint --fix \"./src/**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/", + "lint:lint-staged": "lint-staged -c " + }, + "dependencies": { + "@element-plus/icons-vue": "^2.1.0", + "@form-create/designer": "^3.1.3", + "@form-create/element-ui": "^3.1.24", + "@iconify/iconify": "^3.1.1", + "@videojs-player/vue": "^1.0.0", + "@vueuse/core": "^10.9.0", + "@wangeditor/editor": "^5.1.23", + "@wangeditor/editor-for-vue": "^5.1.10", + "@zxcvbn-ts/core": "^3.0.4", + "animate.css": "^4.1.1", + "axios": "^1.6.8", + "benz-amr-recorder": "^1.1.5", + "bpmn-js-token-simulation": "^0.10.0", + "camunda-bpmn-moddle": "^7.0.1", + "cropperjs": "^1.6.1", + "crypto-js": "^4.2.0", + "dayjs": "^1.11.10", + "diagram-js": "^12.8.0", + "driver.js": "^1.3.1", + "echarts": "^5.5.0", + "echarts-wordcloud": "^2.1.0", + "element-plus": "2.6.1", + "fast-xml-parser": "^4.3.2", + "highlight.js": "^11.9.0", + "jsencrypt": "^3.3.2", + "lodash-es": "^4.17.21", + "min-dash": "^4.1.1", + "mitt": "^3.0.1", + "nprogress": "^0.2.0", + "pinia": "^2.1.7", + "pinia-plugin-persistedstate": "^3.2.1", + "qrcode": "^1.5.3", + "qs": "^6.12.0", + "steady-xml": "^0.1.0", + "url": "^0.11.3", + "video.js": "^7.21.5", + "vue": "3.4.21", + "vue-dompurify-html": "^4.1.4", + "vue-i18n": "9.10.2", + "vue-router": "^4.3.0", + "vue-types": "^5.1.1", + "vuedraggable": "^4.1.0", + "web-storage-cache": "^1.1.1", + "xml-js": "^1.6.11", + "vue-ueditor-wrap": "^3.0.8", + "vue-baidu-map-3x": "^1.0.34" + }, + "devDependencies": { + "@commitlint/cli": "^19.0.1", + "@commitlint/config-conventional": "^19.0.0", + "@iconify/json": "^2.2.187", + "@intlify/unplugin-vue-i18n": "^2.0.0", + "@purge-icons/generated": "^0.9.0", + "@types/lodash-es": "^4.17.12", + "@types/node": "^20.11.21", + "@types/nprogress": "^0.2.3", + "@types/qrcode": "^1.5.5", + "@types/qs": "^6.9.12", + "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/parser": "^7.1.0", + "@unocss/transformer-variant-group": "^0.58.5", + "@unocss/eslint-config": "^0.57.4", + "@vitejs/plugin-legacy": "^5.3.1", + "@vitejs/plugin-vue": "^5.0.4", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "autoprefixer": "^10.4.17", + "bpmn-js": "8.9.0", + "bpmn-js-properties-panel": "0.46.0", + "consola": "^3.2.3", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-define-config": "^2.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-vue": "^9.22.0", + "lint-staged": "^15.2.2", + "postcss": "^8.4.35", + "postcss-html": "^1.6.0", + "postcss-scss": "^4.0.9", + "prettier": "^3.2.5", + "prettier-eslint": "^16.3.0", + "rimraf": "^5.0.5", + "rollup": "^4.12.0", + "sass": "^1.69.5", + "stylelint": "^16.2.1", + "stylelint-config-html": "^1.1.0", + "stylelint-config-recommended": "^14.0.0", + "stylelint-config-standard": "^36.0.0", + "stylelint-order": "^6.0.4", + "terser": "^5.28.1", + "typescript": "5.3.3", + "unocss": "^0.58.5", + "unplugin-auto-import": "^0.16.7", + "unplugin-element-plus": "^0.8.0", + "unplugin-vue-components": "^0.25.2", + "vite": "5.1.4", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-ejs": "^1.7.0", + "vite-plugin-eslint": "^1.8.1", + "vite-plugin-progress": "^0.0.7", + "vite-plugin-purge-icons": "^0.10.0", + "vite-plugin-svg-icons": "^2.0.1", + "vite-plugin-top-level-await": "^1.3.1", + "vue-eslint-parser": "^9.3.2", + "vue-tsc": "^1.8.27" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://gitee.com/guchengwuyue/yshop-drink" + }, + "bugs": { + "url": "https://gitee.com/guchengwuyue/yshop-drink" + }, + "homepage": "https://gitee.com/guchengwuyue/yshop-drink", + "engines": { + "node": ">= 16.0.0", + "pnpm": ">=8.6.0" + } +} diff --git a/yshop-drink-vue3/pnpm-lock.yaml b/yshop-drink-vue3/pnpm-lock.yaml new file mode 100644 index 0000000..ba3ff2f --- /dev/null +++ b/yshop-drink-vue3/pnpm-lock.yaml @@ -0,0 +1,9674 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@element-plus/icons-vue': + specifier: ^2.1.0 + version: 2.3.1(vue@3.4.21) + '@form-create/designer': + specifier: ^3.1.3 + version: 3.1.5(vue@3.4.21) + '@form-create/element-ui': + specifier: ^3.1.24 + version: 3.1.29(vue@3.4.21) + '@iconify/iconify': + specifier: ^3.1.1 + version: 3.1.1 + '@videojs-player/vue': + specifier: ^1.0.0 + version: 1.0.0(@types/video.js@7.3.58)(video.js@7.21.5)(vue@3.4.21) + '@vueuse/core': + specifier: ^10.9.0 + version: 10.9.0(vue@3.4.21) + '@wangeditor/editor': + specifier: ^5.1.23 + version: 5.1.23 + '@wangeditor/editor-for-vue': + specifier: ^5.1.10 + version: 5.1.12(@wangeditor/editor@5.1.23)(vue@3.4.21) + '@zxcvbn-ts/core': + specifier: ^3.0.4 + version: 3.0.4 + animate.css: + specifier: ^4.1.1 + version: 4.1.1 + axios: + specifier: ^1.6.8 + version: 1.6.8 + benz-amr-recorder: + specifier: ^1.1.5 + version: 1.1.5 + bpmn-js-token-simulation: + specifier: ^0.10.0 + version: 0.10.0 + camunda-bpmn-moddle: + specifier: ^7.0.1 + version: 7.0.1 + cropperjs: + specifier: ^1.6.1 + version: 1.6.2 + crypto-js: + specifier: ^4.2.0 + version: 4.2.0 + dayjs: + specifier: ^1.11.10 + version: 1.11.11 + diagram-js: + specifier: ^12.8.0 + version: 12.8.1 + driver.js: + specifier: ^1.3.1 + version: 1.3.1 + echarts: + specifier: ^5.5.0 + version: 5.5.0 + echarts-wordcloud: + specifier: ^2.1.0 + version: 2.1.0(echarts@5.5.0) + element-plus: + specifier: 2.6.1 + version: 2.6.1(vue@3.4.21) + fast-xml-parser: + specifier: ^4.3.2 + version: 4.3.6 + highlight.js: + specifier: ^11.9.0 + version: 11.9.0 + jsencrypt: + specifier: ^3.3.2 + version: 3.3.2 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + min-dash: + specifier: ^4.1.1 + version: 4.2.1 + mitt: + specifier: ^3.0.1 + version: 3.0.1 + nprogress: + specifier: ^0.2.0 + version: 0.2.0 + pinia: + specifier: ^2.1.7 + version: 2.1.7(typescript@5.3.3)(vue@3.4.21) + pinia-plugin-persistedstate: + specifier: ^3.2.1 + version: 3.2.1(pinia@2.1.7) + qrcode: + specifier: ^1.5.3 + version: 1.5.3 + qs: + specifier: ^6.12.0 + version: 6.12.1 + steady-xml: + specifier: ^0.1.0 + version: 0.1.0 + url: + specifier: ^0.11.3 + version: 0.11.3 + video.js: + specifier: ^7.21.5 + version: 7.21.5 + vue: + specifier: 3.4.21 + version: 3.4.21(typescript@5.3.3) + vue-baidu-map-3x: + specifier: ^1.0.34 + version: 1.0.38(vue@3.4.21) + vue-dompurify-html: + specifier: ^4.1.4 + version: 4.1.4(vue@3.4.21) + vue-i18n: + specifier: 9.10.2 + version: 9.10.2(vue@3.4.21) + vue-router: + specifier: ^4.3.0 + version: 4.3.2(vue@3.4.21) + vue-types: + specifier: ^5.1.1 + version: 5.1.1(vue@3.4.21) + vue-ueditor-wrap: + specifier: ^3.0.8 + version: 3.0.8(vue@3.4.21) + vuedraggable: + specifier: ^4.1.0 + version: 4.1.0(vue@3.4.21) + web-storage-cache: + specifier: ^1.1.1 + version: 1.1.1 + xml-js: + specifier: ^1.6.11 + version: 1.6.11 + +devDependencies: + '@commitlint/cli': + specifier: ^19.0.1 + version: 19.3.0(@types/node@20.12.7)(typescript@5.3.3) + '@commitlint/config-conventional': + specifier: ^19.0.0 + version: 19.2.2 + '@iconify/json': + specifier: ^2.2.187 + version: 2.2.205 + '@intlify/unplugin-vue-i18n': + specifier: ^2.0.0 + version: 2.0.0(rollup@4.17.1)(vue-i18n@9.10.2) + '@purge-icons/generated': + specifier: ^0.9.0 + version: 0.9.0 + '@types/lodash-es': + specifier: ^4.17.12 + version: 4.17.12 + '@types/node': + specifier: ^20.11.21 + version: 20.12.7 + '@types/nprogress': + specifier: ^0.2.3 + version: 0.2.3 + '@types/qrcode': + specifier: ^1.5.5 + version: 1.5.5 + '@types/qs': + specifier: ^6.9.12 + version: 6.9.15 + '@typescript-eslint/eslint-plugin': + specifier: ^7.1.0 + version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/parser': + specifier: ^7.1.0 + version: 7.7.1(eslint@8.57.0)(typescript@5.3.3) + '@unocss/eslint-config': + specifier: ^0.57.4 + version: 0.57.7(eslint@8.57.0)(typescript@5.3.3) + '@unocss/transformer-variant-group': + specifier: ^0.58.5 + version: 0.58.9 + '@vitejs/plugin-legacy': + specifier: ^5.3.1 + version: 5.3.2(terser@5.30.4)(vite@5.1.4) + '@vitejs/plugin-vue': + specifier: ^5.0.4 + version: 5.0.4(vite@5.1.4)(vue@3.4.21) + '@vitejs/plugin-vue-jsx': + specifier: ^3.1.0 + version: 3.1.0(vite@5.1.4)(vue@3.4.21) + autoprefixer: + specifier: ^10.4.17 + version: 10.4.19(postcss@8.4.38) + bpmn-js: + specifier: 8.9.0 + version: 8.9.0 + bpmn-js-properties-panel: + specifier: 0.46.0 + version: 0.46.0(bpmn-js@8.9.0) + consola: + specifier: ^3.2.3 + version: 3.2.3 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-define-config: + specifier: ^2.1.0 + version: 2.1.0 + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) + eslint-plugin-vue: + specifier: ^9.22.0 + version: 9.25.0(eslint@8.57.0) + lint-staged: + specifier: ^15.2.2 + version: 15.2.2 + postcss: + specifier: ^8.4.35 + version: 8.4.38 + postcss-html: + specifier: ^1.6.0 + version: 1.6.0 + postcss-scss: + specifier: ^4.0.9 + version: 4.0.9(postcss@8.4.38) + prettier: + specifier: ^3.2.5 + version: 3.2.5 + prettier-eslint: + specifier: ^16.3.0 + version: 16.3.0 + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + rollup: + specifier: ^4.12.0 + version: 4.17.1 + sass: + specifier: ^1.69.5 + version: 1.75.0 + stylelint: + specifier: ^16.2.1 + version: 16.4.0(typescript@5.3.3) + stylelint-config-html: + specifier: ^1.1.0 + version: 1.1.0(postcss-html@1.6.0)(stylelint@16.4.0) + stylelint-config-recommended: + specifier: ^14.0.0 + version: 14.0.0(stylelint@16.4.0) + stylelint-config-standard: + specifier: ^36.0.0 + version: 36.0.0(stylelint@16.4.0) + stylelint-order: + specifier: ^6.0.4 + version: 6.0.4(stylelint@16.4.0) + terser: + specifier: ^5.28.1 + version: 5.30.4 + typescript: + specifier: 5.3.3 + version: 5.3.3 + unocss: + specifier: ^0.58.5 + version: 0.58.9(postcss@8.4.38)(rollup@4.17.1)(vite@5.1.4) + unplugin-auto-import: + specifier: ^0.16.7 + version: 0.16.7(@vueuse/core@10.9.0)(rollup@4.17.1) + unplugin-element-plus: + specifier: ^0.8.0 + version: 0.8.0(rollup@4.17.1) + unplugin-vue-components: + specifier: ^0.25.2 + version: 0.25.2(rollup@4.17.1)(vue@3.4.21) + vite: + specifier: 5.1.4 + version: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + vite-plugin-compression: + specifier: ^0.5.1 + version: 0.5.1(vite@5.1.4) + vite-plugin-ejs: + specifier: ^1.7.0 + version: 1.7.0(vite@5.1.4) + vite-plugin-eslint: + specifier: ^1.8.1 + version: 1.8.1(eslint@8.57.0)(vite@5.1.4) + vite-plugin-progress: + specifier: ^0.0.7 + version: 0.0.7(vite@5.1.4) + vite-plugin-purge-icons: + specifier: ^0.10.0 + version: 0.10.0(vite@5.1.4) + vite-plugin-svg-icons: + specifier: ^2.0.1 + version: 2.0.1(vite@5.1.4) + vite-plugin-top-level-await: + specifier: ^1.3.1 + version: 1.4.1(rollup@4.17.1)(vite@5.1.4) + vue-eslint-parser: + specifier: ^9.3.2 + version: 9.4.2(eslint@8.57.0) + vue-tsc: + specifier: ^1.8.27 + version: 1.8.27(typescript@5.3.3) + +packages: + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@antfu/install-pkg@0.1.1: + resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + dev: true + + /@antfu/utils@0.7.7: + resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} + dev: true + + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 + dev: true + + /@babel/compat-data@7.24.4: + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.24.4: + resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helpers': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.24.4: + resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.4): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: true + + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.4): + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-plugin-utils@7.24.0: + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.4): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + dev: true + + /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-string-parser@7.24.1: + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + dev: true + + /@babel/helpers@7.24.4: + resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.24.2: + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + dev: true + + /@babel/parser@7.24.4: + resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.0 + + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.4) + dev: true + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.4): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.4): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.4): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.4): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.4): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.4): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.4): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.4): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.4): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.4): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.4): + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-block-scoping@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: true + + /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/template': 7.24.0 + dev: true + + /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.4): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + regenerator-transform: 0.15.2 + dev: true + + /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-typescript@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/preset-env@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.4(@babel/core@7.24.4) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.4) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.4) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.4) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.4) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.4) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.4) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-block-scoping': 7.24.4(@babel/core@7.24.4) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.4) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.4) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.4) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.4) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.4) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.4) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.4) + core-js-compat: 3.37.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.4): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/types': 7.24.0 + esutils: 2.0.3 + dev: true + + /@babel/preset-typescript@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.4) + dev: true + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true + + /@babel/runtime-corejs3@7.24.4: + resolution: {integrity: sha512-VOQOexSilscN24VEY810G/PqtpFvx/z6UqDIjIWbDe2368HhDLkYN5TYwaEz/+eRCUkhJ2WaNLLmQAlxzfWj4w==} + engines: {node: '>=6.9.0'} + dependencies: + core-js-pure: 3.37.0 + regenerator-runtime: 0.14.1 + dev: false + + /@babel/runtime@7.24.4: + resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + dev: true + + /@babel/traverse@7.24.1: + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + /@bpmn-io/diagram-js-ui@0.2.3: + resolution: {integrity: sha512-OGyjZKvGK8tHSZ0l7RfeKhilGoOGtFDcoqSGYkX0uhFlo99OVZ9Jn1K7TJGzcE9BdKwvA5Y5kGqHEhdTxHvFfw==} + dependencies: + htm: 3.1.1 + preact: 10.20.2 + dev: false + + /@bpmn-io/element-templates-validator@0.2.0: + resolution: {integrity: sha512-/ogp0+6zUFdoiY09NYaHL5JtapB8zN1spG8hpML96qetXDCODRxnsqlHTvSwxtZHUDcgun+lxcK8b4wgtCP+6Q==} + dependencies: + '@camunda/element-templates-json-schema': 0.4.0 + json-source-map: 0.6.1 + min-dash: 3.8.1 + dev: true + + /@bpmn-io/extract-process-variables@0.4.5: + resolution: {integrity: sha512-LtHx5b9xqS8avRLrq/uTlKhWzMeV3bWQKIdDic2bdo5n9roitX13GRb01u2S0hSsKDWEhXQtydFYN2b6G7bqfw==} + dependencies: + min-dash: 3.8.1 + dev: true + + /@camunda/element-templates-json-schema@0.4.0: + resolution: {integrity: sha512-M5xW61ba7z2maBxfoT4c1bjuLD8OIL7863et/hULiNG6+R/B9CZ4Qze1juuIfXv4zpF2fYSuUsTPkTtiZrcspQ==} + dev: true + + /@commitlint/cli@19.3.0(@types/node@20.12.7)(typescript@5.3.3): + resolution: {integrity: sha512-LgYWOwuDR7BSTQ9OLZ12m7F/qhNY+NpAyPBgo4YNMkACE7lGuUnuQq1yi9hz1KA4+3VqpOYl8H1rY/LYK43v7g==} + engines: {node: '>=v18'} + hasBin: true + dependencies: + '@commitlint/format': 19.3.0 + '@commitlint/lint': 19.2.2 + '@commitlint/load': 19.2.0(@types/node@20.12.7)(typescript@5.3.3) + '@commitlint/read': 19.2.1 + '@commitlint/types': 19.0.3 + execa: 8.0.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + dev: true + + /@commitlint/config-conventional@19.2.2: + resolution: {integrity: sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 19.0.3 + conventional-changelog-conventionalcommits: 7.0.2 + dev: true + + /@commitlint/config-validator@19.0.3: + resolution: {integrity: sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 19.0.3 + ajv: 8.12.0 + dev: true + + /@commitlint/ensure@19.0.3: + resolution: {integrity: sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 19.0.3 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + dev: true + + /@commitlint/execute-rule@19.0.0: + resolution: {integrity: sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==} + engines: {node: '>=v18'} + dev: true + + /@commitlint/format@19.3.0: + resolution: {integrity: sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 19.0.3 + chalk: 5.3.0 + dev: true + + /@commitlint/is-ignored@19.2.2: + resolution: {integrity: sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 19.0.3 + semver: 7.6.0 + dev: true + + /@commitlint/lint@19.2.2: + resolution: {integrity: sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/is-ignored': 19.2.2 + '@commitlint/parse': 19.0.3 + '@commitlint/rules': 19.0.3 + '@commitlint/types': 19.0.3 + dev: true + + /@commitlint/load@19.2.0(@types/node@20.12.7)(typescript@5.3.3): + resolution: {integrity: sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/config-validator': 19.0.3 + '@commitlint/execute-rule': 19.0.0 + '@commitlint/resolve-extends': 19.1.0 + '@commitlint/types': 19.0.3 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.3.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.12.7)(cosmiconfig@9.0.0)(typescript@5.3.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + dev: true + + /@commitlint/message@19.0.0: + resolution: {integrity: sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==} + engines: {node: '>=v18'} + dev: true + + /@commitlint/parse@19.0.3: + resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 19.0.3 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + dev: true + + /@commitlint/read@19.2.1: + resolution: {integrity: sha512-qETc4+PL0EUv7Q36lJbPG+NJiBOGg7SSC7B5BsPWOmei+Dyif80ErfWQ0qXoW9oCh7GTpTNRoaVhiI8RbhuaNw==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/top-level': 19.0.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + dev: true + + /@commitlint/resolve-extends@19.1.0: + resolution: {integrity: sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/config-validator': 19.0.3 + '@commitlint/types': 19.0.3 + global-directory: 4.0.1 + import-meta-resolve: 4.0.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + dev: true + + /@commitlint/rules@19.0.3: + resolution: {integrity: sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/ensure': 19.0.3 + '@commitlint/message': 19.0.0 + '@commitlint/to-lines': 19.0.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 + dev: true + + /@commitlint/to-lines@19.0.0: + resolution: {integrity: sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==} + engines: {node: '>=v18'} + dev: true + + /@commitlint/top-level@19.0.0: + resolution: {integrity: sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==} + engines: {node: '>=v18'} + dependencies: + find-up: 7.0.0 + dev: true + + /@commitlint/types@19.0.3: + resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} + engines: {node: '>=v18'} + dependencies: + '@types/conventional-commits-parser': 5.0.0 + chalk: 5.3.0 + dev: true + + /@csstools/css-parser-algorithms@2.6.1(@csstools/css-tokenizer@2.2.4): + resolution: {integrity: sha512-ubEkAaTfVZa+WwGhs5jbo5Xfqpeaybr/RvWzvFxRs4jfq16wH8l8Ty/QEEpINxll4xhuGfdMbipRyz5QZh9+FA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-tokenizer': ^2.2.4 + dependencies: + '@csstools/css-tokenizer': 2.2.4 + dev: true + + /@csstools/css-tokenizer@2.2.4: + resolution: {integrity: sha512-PuWRAewQLbDhGeTvFuq2oClaSCKPIBmHyIobCV39JHRYN0byDcUWJl5baPeNUcqrjtdMNqFooE0FGl31I3JOqw==} + engines: {node: ^14 || ^16 || >=18} + dev: true + + /@csstools/media-query-list-parser@2.1.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4): + resolution: {integrity: sha512-qqGuFfbn4rUmyOB0u8CVISIp5FfJ5GAR3mBrZ9/TKndHakdnm6pY0L/fbLcpPnrzwCyyTEZl1nUcXAYHEWneTA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.6.1 + '@csstools/css-tokenizer': ^2.2.4 + dependencies: + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + dev: true + + /@csstools/selector-specificity@3.0.3(postcss-selector-parser@6.0.16): + resolution: {integrity: sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 + dependencies: + postcss-selector-parser: 6.0.16 + dev: true + + /@ctrl/tinycolor@3.6.1: + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + dev: false + + /@dual-bundle/import-meta-resolve@4.0.0: + resolution: {integrity: sha512-ZKXyJeFAzcpKM2kk8ipoGIPUqx9BX52omTGnfwjJvxOCaZTM2wtDK7zN0aIgPRbT9XYAlha0HtmZ+XKteuh0Gw==} + dev: true + + /@element-plus/icons-vue@2.3.1(vue@3.4.21): + resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==} + peerDependencies: + vue: ^3.2.0 + dependencies: + vue: 3.4.21(typescript@5.3.3) + dev: false + + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@floating-ui/core@1.6.1: + resolution: {integrity: sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==} + dependencies: + '@floating-ui/utils': 0.2.2 + dev: false + + /@floating-ui/dom@1.6.4: + resolution: {integrity: sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==} + dependencies: + '@floating-ui/core': 1.6.1 + '@floating-ui/utils': 0.2.2 + dev: false + + /@floating-ui/utils@0.2.2: + resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} + dev: false + + /@form-create/component-elm-checkbox@3.1.29: + resolution: {integrity: sha512-tzqpwg+lq1X/V1wEsOkHBC9QxZyUsoymFRrWiEdqvstRcTQKQjntt/3gl8MQ3Tcq22dP2xJbQxjTeu1J8o6NCA==} + dependencies: + '@form-create/utils': 3.1.29 + dev: false + + /@form-create/component-elm-frame@3.1.29: + resolution: {integrity: sha512-PqOQLvGwxvOssT/IHFrTVcptVvWYYwA5OCMUfoaXqSf9HBQk++EwLd5sdsvAY6ILJMSIa9zHU8tuvSXFOWbg3w==} + dependencies: + '@form-create/utils': 3.1.29 + dev: false + + /@form-create/component-elm-group@3.1.29: + resolution: {integrity: sha512-Hn4l0k1A/noqX3OWgPOnYV7OAAOlH/vNQFwxS9a/18QKuCpLU03MNeanPxwSQY1NL6Fk8NPQGBDcgeOBAcP9hg==} + dependencies: + '@form-create/utils': 3.1.29 + dev: false + + /@form-create/component-elm-radio@3.1.29: + resolution: {integrity: sha512-AGAOb/T02uDaRPUhDUBe4iSM5uR24TftiOjxHjG1nGtfjRtP1WMsSpH5JcFrRTDMnSmw/YO6/5j7QiYyzpoj6g==} + dependencies: + '@form-create/utils': 3.1.29 + dev: false + + /@form-create/component-elm-select@3.1.29: + resolution: {integrity: sha512-3oSj5zpDIpdtBD53EOMgFsz5+DE7zRuSLHjaRjiQaYhn7HwZeq02TNQ+t+d5vMjtcc/CfDlPEckbBwg2YNIGFA==} + dependencies: + '@form-create/utils': 3.1.29 + dev: false + + /@form-create/component-elm-tree@3.1.29: + resolution: {integrity: sha512-aEu62P7VrgzVOuOigRGral8k5PsNQbtbJxZ6dd8cdbHxTsVVyh1rYTMAtNceR84DZYuRfth1H/lxU0JHRJT0rQ==} + dependencies: + '@form-create/utils': 3.1.29 + dev: false + + /@form-create/component-elm-upload@3.1.29: + resolution: {integrity: sha512-drYhUf7yRBKzAzPp5Mgb1A3Ik+vBmzGD9gGf61wsD7+iiQR9vC6LIF8bGUrzX99DqXLrGP++Xxb9Iii63srmKA==} + dependencies: + '@form-create/utils': 3.1.29 + dev: false + + /@form-create/component-subform@3.1.5: + resolution: {integrity: sha512-JHNEFGuwpnjGvCJ0I0GCqPL5al0qXoN4ymnRBpm+oL+6MMo5bz1kUyoqMX1MutuC96gHTqpeqc67hssi8g2mIw==} + dev: false + + /@form-create/component-wangeditor@3.1.20: + resolution: {integrity: sha512-lAjpltmYfr3a2AeXasCehGsZNL/1WB6vWqqV9TIsJ4pleTr0/D/oPwEYQjfv+gG+NoB2Sa25SRGhtlnephjyhg==} + dependencies: + wangeditor: 4.7.15 + dev: false + + /@form-create/core@3.1.29(vue@3.4.21): + resolution: {integrity: sha512-nPFFdiEmATIKeocnP8pubKSwMSegc+tcN5PU+cSuXl5RJ1w3k0UZr80Dx2yPUmw8sv4XwSMmMUkHUojz10hqFg==} + peerDependencies: + vue: ^3.1.0 + dependencies: + '@form-create/utils': 3.1.29 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /@form-create/designer@3.1.5(vue@3.4.21): + resolution: {integrity: sha512-OSBXW8PfL9OpckCHA7VQ87HR1WOlzfJMz9mnDiMLjbb8Pkh6oYfAohZCuMCs+S68jW8eKaDjw977wBrKXqiylA==} + dependencies: + '@form-create/component-wangeditor': 3.1.20 + '@form-create/element-ui': 3.1.29(vue@3.4.21) + '@form-create/utils': 3.1.29 + vuedraggable: 4.1.0(vue@3.4.21) + transitivePeerDependencies: + - vue + dev: false + + /@form-create/element-ui@3.1.29(vue@3.4.21): + resolution: {integrity: sha512-gG6RViw8/ZY72COHB2soNfiaoS55Il3gJ9C3lQ/J/8VccR3u6DtcK43ZoP5salQYxjQOFLyQmQidFQtmyphpgg==} + peerDependencies: + vue: ^3.1.0 + dependencies: + '@form-create/component-elm-checkbox': 3.1.29 + '@form-create/component-elm-frame': 3.1.29 + '@form-create/component-elm-group': 3.1.29 + '@form-create/component-elm-radio': 3.1.29 + '@form-create/component-elm-select': 3.1.29 + '@form-create/component-elm-tree': 3.1.29 + '@form-create/component-elm-upload': 3.1.29 + '@form-create/component-subform': 3.1.5 + '@form-create/core': 3.1.29(vue@3.4.21) + '@form-create/utils': 3.1.29 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /@form-create/utils@3.1.29: + resolution: {integrity: sha512-CsD3htq2qyuvqc3kJipUk2OFZA5eg+Fwna9zZPoi8T8UuEKBkfgR5fp2s0AgZ87i2a5NgwCk87kfVntijnxvPw==} + dev: false + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + dev: true + + /@iconify/iconify@2.1.2: + resolution: {integrity: sha512-QcUzFeEWkE/mW+BVtEGmcWATClcCOIJFiYUD/PiCWuTcdEA297o8D4oN6Ra44WrNOHu1wqNW4J0ioaDIiqaFOQ==} + deprecated: no longer maintained, switch to modern iconify-icon web component + dependencies: + cross-fetch: 3.1.8 + transitivePeerDependencies: + - encoding + dev: true + + /@iconify/iconify@3.1.1: + resolution: {integrity: sha512-1nemfyD/OJzh9ALepH7YfuuP8BdEB24Skhd8DXWh0hzcOxImbb1ZizSZkpCzAwSZSGcJFmscIBaBQu+yLyWaxQ==} + deprecated: no longer maintained, switch to modern iconify-icon web component + dependencies: + '@iconify/types': 2.0.0 + + /@iconify/json@2.2.205: + resolution: {integrity: sha512-79DbcI0U40w6jCYADjhSheJ6SVB/FJG/z0ltnqdHF/uRi6/MLroqe7y9Qy+99Ebb6F2WZgVV+TXfFMMORMPXFw==} + dependencies: + '@iconify/types': 2.0.0 + pathe: 1.1.2 + dev: true + + /@iconify/types@2.0.0: + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + /@iconify/utils@2.1.23: + resolution: {integrity: sha512-YGNbHKM5tyDvdWZ92y2mIkrfvm5Fvhe6WJSkWu7vvOFhMtYDP0casZpoRz0XEHZCrYsR4stdGT3cZ52yp5qZdQ==} + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.7 + '@iconify/types': 2.0.0 + debug: 4.3.4 + kolorist: 1.8.0 + local-pkg: 0.5.0 + mlly: 1.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@intlify/bundle-utils@7.5.1(vue-i18n@9.10.2): + resolution: {integrity: sha512-UovJl10oBIlmYEcWw+VIHdKY5Uv5sdPG0b/b6bOYxGLln3UwB75+2dlc0F3Fsa0RhoznQ5Rp589/BZpABpE4Xw==} + engines: {node: '>= 14.16'} + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + dependencies: + '@intlify/message-compiler': 9.13.1 + '@intlify/shared': 9.13.1 + acorn: 8.11.3 + escodegen: 2.1.0 + estree-walker: 2.0.2 + jsonc-eslint-parser: 2.4.0 + magic-string: 0.30.10 + mlly: 1.6.1 + source-map-js: 1.2.0 + vue-i18n: 9.10.2(vue@3.4.21) + yaml-eslint-parser: 1.2.2 + dev: true + + /@intlify/core-base@9.10.2: + resolution: {integrity: sha512-HGStVnKobsJL0DoYIyRCGXBH63DMQqEZxDUGrkNI05FuTcruYUtOAxyL3zoAZu/uDGO6mcUvm3VXBaHG2GdZCg==} + engines: {node: '>= 16'} + dependencies: + '@intlify/message-compiler': 9.10.2 + '@intlify/shared': 9.10.2 + + /@intlify/message-compiler@9.10.2: + resolution: {integrity: sha512-ntY/kfBwQRtX5Zh6wL8cSATujPzWW2ZQd1QwKyWwAy5fMqJyyixHMeovN4fmEyCqSu+hFfYOE63nU94evsy4YA==} + engines: {node: '>= 16'} + dependencies: + '@intlify/shared': 9.10.2 + source-map-js: 1.2.0 + + /@intlify/message-compiler@9.13.1: + resolution: {integrity: sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==} + engines: {node: '>= 16'} + dependencies: + '@intlify/shared': 9.13.1 + source-map-js: 1.2.0 + dev: true + + /@intlify/shared@9.10.2: + resolution: {integrity: sha512-ttHCAJkRy7R5W2S9RVnN9KYQYPIpV2+GiS79T4EE37nrPyH6/1SrOh3bmdCRC1T3ocL8qCDx7x2lBJ0xaITU7Q==} + engines: {node: '>= 16'} + + /@intlify/shared@9.13.1: + resolution: {integrity: sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==} + engines: {node: '>= 16'} + dev: true + + /@intlify/unplugin-vue-i18n@2.0.0(rollup@4.17.1)(vue-i18n@9.10.2): + resolution: {integrity: sha512-1oKvm92L9l2od2H9wKx2ZvR4tzn7gUtd7bPLI7AWUmm7U9H1iEypndt5d985ypxGsEs0gToDaKTrytbBIJwwSg==} + engines: {node: '>= 14.16'} + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + vue-i18n-bridge: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + vue-i18n-bridge: + optional: true + dependencies: + '@intlify/bundle-utils': 7.5.1(vue-i18n@9.10.2) + '@intlify/shared': 9.13.1 + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) + '@vue/compiler-sfc': 3.4.26 + debug: 4.3.4 + fast-glob: 3.3.2 + js-yaml: 4.1.0 + json5: 2.2.3 + pathe: 1.1.2 + picocolors: 1.0.0 + source-map-js: 1.2.0 + unplugin: 1.10.1 + vue-i18n: 9.10.2(vue@3.4.21) + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@pkgr/core@0.1.1: + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true + + /@polka/url@1.0.0-next.25: + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + dev: true + + /@purge-icons/core@0.10.0: + resolution: {integrity: sha512-AtJbZv5Yy+vWX5v32DPTr+CW7AkSK8HJx52orDbrYt/9s4lGM2t4KKAmwaTQEH2HYr2HVh1mlqs54/S1s3WT1g==} + dependencies: + '@iconify/iconify': 2.1.2 + axios: 0.26.1(debug@4.3.4) + debug: 4.3.4 + fast-glob: 3.3.2 + fs-extra: 10.1.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@purge-icons/generated@0.10.0: + resolution: {integrity: sha512-I+1yN7/yDy/eZzfhAZqKF8Z6FM8D/O1vempbPrHJ0m9HlZwvf8sWXOArPJ2qRQGB6mJUVSpaXkoGBuoz1GQX5A==} + dependencies: + '@iconify/iconify': 3.1.1 + dev: true + + /@purge-icons/generated@0.9.0: + resolution: {integrity: sha512-s2t+1oVtGDV6KtqfCXtUOhxfeYvOdDF90IVm+nMs/6bUP0HeGZLslguuL/AibpwtfL4FA/oCsIu/RhwapgAdJw==} + dependencies: + '@iconify/iconify': 3.1.1 + dev: true + + /@rollup/plugin-virtual@3.0.2(rollup@4.17.1): + resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + rollup: 4.17.1 + dev: true + + /@rollup/pluginutils@4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@rollup/pluginutils@5.1.0(rollup@4.17.1): + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 4.17.1 + dev: true + + /@rollup/rollup-android-arm-eabi@4.17.1: + resolution: {integrity: sha512-P6Wg856Ou/DLpR+O0ZLneNmrv7QpqBg+hK4wE05ijbC/t349BRfMfx+UFj5Ha3fCFopIa6iSZlpdaB4agkWp2Q==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.17.1: + resolution: {integrity: sha512-piwZDjuW2WiHr05djVdUkrG5JbjnGbtx8BXQchYCMfib/nhjzWoiScelZ+s5IJI7lecrwSxHCzW026MWBL+oJQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.17.1: + resolution: {integrity: sha512-LsZXXIsN5Q460cKDT4Y+bzoPDhBmO5DTr7wP80d+2EnYlxSgkwdPfE3hbE+Fk8dtya+8092N9srjBTJ0di8RIA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.17.1: + resolution: {integrity: sha512-S7TYNQpWXB9APkxu/SLmYHezWwCoZRA9QLgrDeml+SR2A1LLPD2DBUdUlvmCF7FUpRMKvbeeWky+iizQj65Etw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.17.1: + resolution: {integrity: sha512-Lq2JR5a5jsA5um2ZoLiXXEaOagnVyCpCW7xvlcqHC7y46tLwTEgUSTM3a2TfmmTMmdqv+jknUioWXlmxYxE9Yw==} + cpu: [arm] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.17.1: + resolution: {integrity: sha512-9BfzwyPNV0IizQoR+5HTNBGkh1KXE8BqU0DBkqMngmyFW7BfuIZyMjQ0s6igJEiPSBvT3ZcnIFohZ19OqjhDPg==} + cpu: [arm] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.17.1: + resolution: {integrity: sha512-e2uWaoxo/rtzA52OifrTSXTvJhAXb0XeRkz4CdHBK2KtxrFmuU/uNd544Ogkpu938BzEfvmWs8NZ8Axhw33FDw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.17.1: + resolution: {integrity: sha512-ekggix/Bc/d/60H1Mi4YeYb/7dbal1kEDZ6sIFVAE8pUSx7PiWeEh+NWbL7bGu0X68BBIkgF3ibRJe1oFTksQQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.17.1: + resolution: {integrity: sha512-UGV0dUo/xCv4pkr/C8KY7XLFwBNnvladt8q+VmdKrw/3RUd3rD0TptwjisvE2TTnnlENtuY4/PZuoOYRiGp8Gw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.17.1: + resolution: {integrity: sha512-gEYmYYHaehdvX46mwXrU49vD6Euf1Bxhq9pPb82cbUU9UT2NV+RSckQ5tKWOnNXZixKsy8/cPGtiUWqzPuAcXQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.17.1: + resolution: {integrity: sha512-xeae5pMAxHFp6yX5vajInG2toST5lsCTrckSRUFwNgzYqnUjNBcQyqk1bXUxX5yhjWFl2Mnz3F8vQjl+2FRIcw==} + cpu: [s390x] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.17.1: + resolution: {integrity: sha512-AsdnINQoDWfKpBzCPqQWxSPdAWzSgnYbrJYtn6W0H2E9It5bZss99PiLA8CgmDRfvKygt20UpZ3xkhFlIfX9zQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.17.1: + resolution: {integrity: sha512-KoB4fyKXTR+wYENkIG3fFF+5G6N4GFvzYx8Jax8BR4vmddtuqSb5oQmYu2Uu067vT/Fod7gxeQYKupm8gAcMSQ==} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.17.1: + resolution: {integrity: sha512-J0d3NVNf7wBL9t4blCNat+d0PYqAx8wOoY+/9Q5cujnafbX7BmtYk3XvzkqLmFECaWvXGLuHmKj/wrILUinmQg==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.17.1: + resolution: {integrity: sha512-xjgkWUwlq7IbgJSIxvl516FJ2iuC/7ttjsAxSPpC9kkI5iQQFHKyEN5BjbhvJ/IXIZ3yIBcW5QDlWAyrA+TFag==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.17.1: + resolution: {integrity: sha512-0QbCkfk6cnnVKWqqlC0cUrrUMDMfu5ffvYMTUHf+qMN2uAb3MKP31LPcwiMXBNsvoFGs/kYdFOsuLmvppCopXA==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@swc/core-darwin-arm64@1.4.17: + resolution: {integrity: sha512-HVl+W4LezoqHBAYg2JCqR+s9ife9yPfgWSj37iIawLWzOmuuJ7jVdIB7Ee2B75bEisSEKyxRlTl6Y1Oq3owBgw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-darwin-x64@1.4.17: + resolution: {integrity: sha512-WYRO9Fdzq4S/he8zjW5I95G1zcvyd9yyD3Tgi4/ic84P5XDlSMpBDpBLbr/dCPjmSg7aUXxNQqKqGkl6dQxYlA==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm-gnueabihf@1.4.17: + resolution: {integrity: sha512-cgbvpWOvtMH0XFjvwppUCR+Y+nf6QPaGu6AQ5hqCP+5Lv2zO5PG0RfasC4zBIjF53xgwEaaWmGP5/361P30X8Q==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-gnu@1.4.17: + resolution: {integrity: sha512-l7zHgaIY24cF9dyQ/FOWbmZDsEj2a9gRFbmgx2u19e3FzOPuOnaopFj0fRYXXKCmtdx+anD750iBIYnTR+pq/Q==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-musl@1.4.17: + resolution: {integrity: sha512-qhH4gr9gAlVk8MBtzXbzTP3BJyqbAfUOATGkyUtohh85fPXQYuzVlbExix3FZXTwFHNidGHY8C+ocscI7uDaYw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-gnu@1.4.17: + resolution: {integrity: sha512-vRDFATL1oN5oZMImkwbgSHEkp8xG1ofEASBypze01W1Tqto8t+yo6gsp69wzCZBlxldsvPpvFZW55Jq0Rn+UnA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-musl@1.4.17: + resolution: {integrity: sha512-zQNPXAXn3nmPqv54JVEN8k2JMEcMTQ6veVuU0p5O+A7KscJq+AGle/7ZQXzpXSfUCXlLMX4wvd+rwfGhh3J4cw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-arm64-msvc@1.4.17: + resolution: {integrity: sha512-z86n7EhOwyzxwm+DLE5NoLkxCTme2lq7QZlDjbQyfCxOt6isWz8rkW5QowTX8w9Rdmk34ncrjSLvnHOeLY17+w==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-ia32-msvc@1.4.17: + resolution: {integrity: sha512-JBwuSTJIgiJJX6wtr4wmXbfvOswHFj223AumUrK544QV69k60FJ9q2adPW9Csk+a8wm1hLxq4HKa2K334UHJ/g==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-x64-msvc@1.4.17: + resolution: {integrity: sha512-jFkOnGQamtVDBm3MF5Kq1lgW8vx4Rm1UvJWRUfg+0gx7Uc3Jp3QMFeMNw/rDNQYRDYPG3yunCC+2463ycd5+dg==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core@1.4.17: + resolution: {integrity: sha512-tq+mdWvodMBNBBZbwFIMTVGYHe9N7zvEaycVVjfvAx20k1XozHbHhRv+9pEVFJjwRxLdXmtvFZd3QZHRAOpoNQ==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.6 + optionalDependencies: + '@swc/core-darwin-arm64': 1.4.17 + '@swc/core-darwin-x64': 1.4.17 + '@swc/core-linux-arm-gnueabihf': 1.4.17 + '@swc/core-linux-arm64-gnu': 1.4.17 + '@swc/core-linux-arm64-musl': 1.4.17 + '@swc/core-linux-x64-gnu': 1.4.17 + '@swc/core-linux-x64-musl': 1.4.17 + '@swc/core-win32-arm64-msvc': 1.4.17 + '@swc/core-win32-ia32-msvc': 1.4.17 + '@swc/core-win32-x64-msvc': 1.4.17 + dev: true + + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: true + + /@swc/types@0.1.6: + resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==} + dependencies: + '@swc/counter': 0.1.3 + dev: true + + /@sxzz/popperjs-es@2.11.7: + resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} + dev: false + + /@transloadit/prettier-bytes@0.0.7: + resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==} + dev: false + + /@trysound/sax@0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: true + + /@types/conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} + dependencies: + '@types/node': 20.12.7 + dev: true + + /@types/eslint@8.56.10: + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/event-emitter@0.3.5: + resolution: {integrity: sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==} + dev: false + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/lodash-es@4.17.12: + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + dependencies: + '@types/lodash': 4.17.0 + + /@types/lodash@4.17.0: + resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} + + /@types/node@10.17.60: + resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + dev: true + + /@types/node@20.12.7: + resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/nprogress@0.2.3: + resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} + dev: true + + /@types/qrcode@1.5.5: + resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==} + dependencies: + '@types/node': 20.12.7 + dev: true + + /@types/qs@6.9.15: + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + dev: true + + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true + + /@types/svgo@2.6.4: + resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} + dependencies: + '@types/node': 20.12.7 + dev: true + + /@types/video.js@7.3.58: + resolution: {integrity: sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ==} + dev: false + + /@types/web-bluetooth@0.0.16: + resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + dev: false + + /@types/web-bluetooth@0.0.20: + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + + /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/type-utils': 7.7.1(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.7.1 + debug: 4.3.4 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + eslint: 8.57.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.7.1 + debug: 4.3.4 + eslint: 8.57.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + dev: true + + /@typescript-eslint/scope-manager@7.7.1: + resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 + dev: true + + /@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.3.3) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.3.3) + debug: 4.3.4 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/types@7.7.1: + resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true + + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@7.7.1(typescript@5.3.3): + resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + eslint: 8.57.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@7.7.1(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.3.3) + eslint: 8.57.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@7.7.1: + resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.7.1 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@unocss/astro@0.58.9(rollup@4.17.1)(vite@5.1.4): + resolution: {integrity: sha512-VWfHNC0EfawFxLfb3uI+QcMGBN+ju+BYtutzeZTjilLKj31X2UpqIh8fepixL6ljgZzB3fweqg2xtUMC0gMnoQ==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + '@unocss/core': 0.58.9 + '@unocss/reset': 0.58.9 + '@unocss/vite': 0.58.9(rollup@4.17.1)(vite@5.1.4) + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + transitivePeerDependencies: + - rollup + dev: true + + /@unocss/cli@0.58.9(rollup@4.17.1): + resolution: {integrity: sha512-q7qlwX3V6UaqljWUQ5gMj36yTA9eLuuRywahdQWt1ioy4aPF/MEEfnMBZf/ntrqf5tIT5TO8fE11nvCco2Q/sA==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/preset-uno': 0.58.9 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.2.3 + fast-glob: 3.3.2 + magic-string: 0.30.10 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + dev: true + + /@unocss/config@0.57.7: + resolution: {integrity: sha512-UG8G9orWEdk/vyDvGUToXYn/RZy/Qjpx66pLsaf5wQK37hkYsBoReAU5v8Ia/6PL1ueJlkcNXLaNpN6/yVoJvg==} + engines: {node: '>=14'} + dependencies: + '@unocss/core': 0.57.7 + unconfig: 0.3.13 + dev: true + + /@unocss/config@0.58.9: + resolution: {integrity: sha512-90wRXIyGNI8UenWxvHUcH4l4rgq813MsTzYWsf6ZKyLLvkFjV2b2EfGXI27GPvZ7fVE1OAqx+wJNTw8CyQxwag==} + engines: {node: '>=14'} + dependencies: + '@unocss/core': 0.58.9 + unconfig: 0.3.13 + dev: true + + /@unocss/core@0.57.7: + resolution: {integrity: sha512-1d36M0CV3yC80J0pqOa5rH1BX6g2iZdtKmIb3oSBN4AWnMCSrrJEPBrUikyMq2TEQTrYWJIVDzv5A9hBUat3TA==} + dev: true + + /@unocss/core@0.58.9: + resolution: {integrity: sha512-wYpPIPPsOIbIoMIDuH8ihehJk5pAZmyFKXIYO/Kro98GEOFhz6lJoLsy6/PZuitlgp2/TSlubUuWGjHWvp5osw==} + dev: true + + /@unocss/eslint-config@0.57.7(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-EJlI6rV0ZfDCphIiddHSWZVeoHdYDTVohVXGo+NfNOuRuvYWGna3n4hY3VEAiT3mWLK0/0anzHF7X0PNzCR5lQ==} + engines: {node: '>=14'} + dependencies: + '@unocss/eslint-plugin': 0.57.7(eslint@8.57.0)(typescript@5.3.3) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + dev: true + + /@unocss/eslint-plugin@0.57.7(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-nwj7UJF7wCfPVl5B7cUB0xrSk6yuVMdMgABnsy4N5xBlds8cclrUO+boaTB9qzh8Lg9nfJVLB3+cW3po2SJoew==} + engines: {node: '>=14'} + dependencies: + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@unocss/config': 0.57.7 + '@unocss/core': 0.57.7 + magic-string: 0.30.10 + synckit: 0.8.8 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + dev: true + + /@unocss/extractor-arbitrary-variants@0.58.9: + resolution: {integrity: sha512-M/BvPdbEEMdhcFQh/z2Bf9gylO1Ky/ZnpIvKWS1YJPLt4KA7UWXSUf+ZNTFxX+X58Is5qAb5hNh/XBQmL3gbXg==} + dependencies: + '@unocss/core': 0.58.9 + dev: true + + /@unocss/inspector@0.58.9: + resolution: {integrity: sha512-uRzqkCNeBmEvFePXcfIFcQPMlCXd9/bLwa5OkBthiOILwQdH1uRIW3GWAa2SWspu+kZLP0Ly3SjZ9Wqi+5ZtTw==} + dependencies: + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + gzip-size: 6.0.0 + sirv: 2.0.4 + dev: true + + /@unocss/postcss@0.58.9(postcss@8.4.38): + resolution: {integrity: sha512-PnKmH6Qhimw35yO6u6yx9SHaX2NmvbRNPDvMDHA/1xr3M8L0o8U88tgKbWfm65NEGF3R1zJ9A8rjtZn/LPkgPA==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + dependencies: + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + css-tree: 2.3.1 + fast-glob: 3.3.2 + magic-string: 0.30.10 + postcss: 8.4.38 + dev: true + + /@unocss/preset-attributify@0.58.9: + resolution: {integrity: sha512-ucP+kXRFcwmBmHohUVv31bE/SejMAMo7Hjb0QcKVLyHlzRWUJsfNR+jTAIGIUSYxN7Q8MeigYsongGo3nIeJnQ==} + dependencies: + '@unocss/core': 0.58.9 + dev: true + + /@unocss/preset-icons@0.58.9: + resolution: {integrity: sha512-9dS48+yAunsbS0ylOW2Wisozwpn3nGY1CqTiidkUnrMnrZK3al579A7srUX9NyPWWDjprO7eU/JkWbdDQSmFFA==} + dependencies: + '@iconify/utils': 2.1.23 + '@unocss/core': 0.58.9 + ofetch: 1.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@unocss/preset-mini@0.58.9: + resolution: {integrity: sha512-m4aDGYtueP8QGsU3FsyML63T/w5Mtr4htme2jXy6m50+tzC1PPHaIBstMTMQfLc6h8UOregPJyGHB5iYQZGEvQ==} + dependencies: + '@unocss/core': 0.58.9 + '@unocss/extractor-arbitrary-variants': 0.58.9 + '@unocss/rule-utils': 0.58.9 + dev: true + + /@unocss/preset-tagify@0.58.9: + resolution: {integrity: sha512-obh75XrRmxYwrQMflzvhQUMeHwd/R9bEDhTWUW9aBTolBy4eNypmQwOhHCKh5Xi4Dg6o0xj6GWC/jcCj1SPLog==} + dependencies: + '@unocss/core': 0.58.9 + dev: true + + /@unocss/preset-typography@0.58.9: + resolution: {integrity: sha512-hrsaqKlcZni3Vh4fwXC+lP9e92FQYbqtmlZw2jpxlVwwH5aLzwk4d4MiFQGyhCfzuSDYm0Zd52putFVV02J7bA==} + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + dev: true + + /@unocss/preset-uno@0.58.9: + resolution: {integrity: sha512-Fze+X2Z/EegCkRdDRgwwvFBmXBenNR1AG8KxAyz8iPeWbhOBaRra2sn2ScryrfH6SbJHpw26ZyJXycAdS0Fq3A==} + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/preset-wind': 0.58.9 + '@unocss/rule-utils': 0.58.9 + dev: true + + /@unocss/preset-web-fonts@0.58.9: + resolution: {integrity: sha512-XtiO+Z+RYnNYomNkS2XxaQiY++CrQZKOfNGw5htgIrb32QtYVQSkyYQ3jDw7JmMiCWlZ4E72cV/zUb++WrZLxg==} + dependencies: + '@unocss/core': 0.58.9 + ofetch: 1.3.4 + dev: true + + /@unocss/preset-wind@0.58.9: + resolution: {integrity: sha512-7l+7Vx5UoN80BmJKiqDXaJJ6EUqrnUQYv8NxCThFi5lYuHzxsYWZPLU3k3XlWRUQt8XL+6rYx7mMBmD7EUSHyw==} + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/rule-utils': 0.58.9 + dev: true + + /@unocss/reset@0.58.9: + resolution: {integrity: sha512-nA2pg3tnwlquq+FDOHyKwZvs20A6iBsKPU7Yjb48JrNnzoaXqE+O9oN6782IG2yKVW4AcnsAnAnM4cxXhGzy1w==} + dev: true + + /@unocss/rule-utils@0.58.9: + resolution: {integrity: sha512-45bDa+elmlFLthhJmKr2ltKMAB0yoXnDMQ6Zp5j3OiRB7dDMBkwYRPvHLvIe+34Ey7tDt/kvvDPtWMpPl2quUQ==} + engines: {node: '>=14'} + dependencies: + '@unocss/core': 0.58.9 + magic-string: 0.30.10 + dev: true + + /@unocss/scope@0.58.9: + resolution: {integrity: sha512-BIwcpx0R3bE0rYa9JVDJTk0GX32EBvnbvufBpNkWfC5tb7g+B7nMkVq9ichanksYCCxrIQQo0mrIz5PNzu9sGA==} + dev: true + + /@unocss/transformer-attributify-jsx-babel@0.58.9: + resolution: {integrity: sha512-UGaQoGZg+3QrsPtnGHPECmsGn4EQb2KSdZ4eGEn2YssjKv+CcQhzRvpEUgnuF/F+jGPkCkS/G/YEQBHRWBY54Q==} + dependencies: + '@babel/core': 7.24.4 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.4) + '@unocss/core': 0.58.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@unocss/transformer-attributify-jsx@0.58.9: + resolution: {integrity: sha512-jpL3PRwf8t43v1agUdQn2EHGgfdWfvzsMxFtoybO88xzOikzAJaaouteNtojc/fQat2T9iBduDxVj5egdKmhdQ==} + dependencies: + '@unocss/core': 0.58.9 + dev: true + + /@unocss/transformer-compile-class@0.58.9: + resolution: {integrity: sha512-l2VpCqelJ6Tgc1kfSODxBtg7fCGPVRr2EUzTg1LrGYKa2McbKuc/wV/2DWKHGxL6+voWi7a2C9XflqGDXXutuQ==} + dependencies: + '@unocss/core': 0.58.9 + dev: true + + /@unocss/transformer-directives@0.58.9: + resolution: {integrity: sha512-pLOUsdoY2ugVntJXg0xuGjO9XZ2xCiMxTPRtpZ4TsEzUtdEzMswR06Y8VWvNciTB/Zqxcz9ta8rD0DKePOfSuw==} + dependencies: + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + css-tree: 2.3.1 + dev: true + + /@unocss/transformer-variant-group@0.58.9: + resolution: {integrity: sha512-3A6voHSnFcyw6xpcZT6oxE+KN4SHRnG4z862tdtWvRGcN+jGyNr20ylEZtnbk4xj0VNMeGHHQRZ0WLvmrAwvOQ==} + dependencies: + '@unocss/core': 0.58.9 + dev: true + + /@unocss/vite@0.58.9(rollup@4.17.1)(vite@5.1.4): + resolution: {integrity: sha512-mmppBuulAHCal+sC0Qz36Y99t0HicAmznpj70Kzwl7g/yvXwm58/DW2OnpCWw+uA8/JBft/+z3zE+XvrI+T1HA==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/inspector': 0.58.9 + '@unocss/scope': 0.58.9 + '@unocss/transformer-directives': 0.58.9 + chokidar: 3.6.0 + fast-glob: 3.3.2 + magic-string: 0.30.10 + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + transitivePeerDependencies: + - rollup + dev: true + + /@uppy/companion-client@2.2.2: + resolution: {integrity: sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==} + dependencies: + '@uppy/utils': 4.1.3 + namespace-emitter: 2.0.1 + dev: false + + /@uppy/core@2.3.4: + resolution: {integrity: sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==} + dependencies: + '@transloadit/prettier-bytes': 0.0.7 + '@uppy/store-default': 2.1.1 + '@uppy/utils': 4.1.3 + lodash.throttle: 4.1.1 + mime-match: 1.0.2 + namespace-emitter: 2.0.1 + nanoid: 3.3.7 + preact: 10.20.2 + dev: false + + /@uppy/store-default@2.1.1: + resolution: {integrity: sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==} + dev: false + + /@uppy/utils@4.1.3: + resolution: {integrity: sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==} + dependencies: + lodash.throttle: 4.1.1 + dev: false + + /@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4): + resolution: {integrity: sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==} + peerDependencies: + '@uppy/core': ^2.3.3 + dependencies: + '@uppy/companion-client': 2.2.2 + '@uppy/core': 2.3.4 + '@uppy/utils': 4.1.3 + nanoid: 3.3.7 + dev: false + + /@videojs-player/vue@1.0.0(@types/video.js@7.3.58)(video.js@7.21.5)(vue@3.4.21): + resolution: {integrity: sha512-WonTezRfKu3fYdQLt/ta+nuKH6gMZUv8l40Jke/j4Lae7IqeO/+lLAmBnh3ni88bwR+vkFXIlZ2Ci7VKInIYJg==} + peerDependencies: + '@types/video.js': 7.x + video.js: 7.x + vue: 3.x + dependencies: + '@types/video.js': 7.3.58 + video.js: 7.21.5 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /@videojs/http-streaming@2.16.2(video.js@7.21.5): + resolution: {integrity: sha512-etPTUdCFu7gUWc+1XcbiPr+lrhOcBu3rV5OL1M+3PDW89zskScAkkcdqYzP4pFodBPye/ydamQoTDScOnElw5A==} + engines: {node: '>=8', npm: '>=5'} + peerDependencies: + video.js: ^6 || ^7 + dependencies: + '@babel/runtime': 7.24.4 + '@videojs/vhs-utils': 3.0.5 + aes-decrypter: 3.1.3 + global: 4.4.0 + m3u8-parser: 4.8.0 + mpd-parser: 0.22.1 + mux.js: 6.0.1 + video.js: 7.21.5 + dev: false + + /@videojs/vhs-utils@3.0.5: + resolution: {integrity: sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==} + engines: {node: '>=8', npm: '>=5'} + dependencies: + '@babel/runtime': 7.24.4 + global: 4.4.0 + url-toolkit: 2.2.5 + dev: false + + /@videojs/xhr@2.6.0: + resolution: {integrity: sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q==} + dependencies: + '@babel/runtime': 7.24.4 + global: 4.4.0 + is-function: 1.0.2 + dev: false + + /@vitejs/plugin-legacy@5.3.2(terser@5.30.4)(vite@5.1.4): + resolution: {integrity: sha512-8moCOrIMaZ/Rjln0Q6GsH6s8fAt1JOI3k8nmfX4tXUxE5KAExVctSyOBk+A25GClsdSWqIk2yaUthH3KJ2X4tg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + terser: ^5.4.0 + vite: ^5.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/preset-env': 7.24.4(@babel/core@7.24.4) + browserslist: 4.23.0 + browserslist-to-esbuild: 2.1.1(browserslist@4.23.0) + core-js: 3.37.0 + magic-string: 0.30.10 + regenerator-runtime: 0.14.1 + systemjs: 6.15.1 + terser: 5.30.4 + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + transitivePeerDependencies: + - supports-color + dev: true + + /@vitejs/plugin-vue-jsx@3.1.0(vite@5.1.4)(vue@3.4.21): + resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.4) + '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.4) + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + vue: 3.4.21(typescript@5.3.3) + transitivePeerDependencies: + - supports-color + dev: true + + /@vitejs/plugin-vue@5.0.4(vite@5.1.4)(vue@3.4.21): + resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + dependencies: + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + vue: 3.4.21(typescript@5.3.3) + dev: true + + /@volar/language-core@1.11.1: + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + dependencies: + '@volar/source-map': 1.11.1 + dev: true + + /@volar/source-map@1.11.1: + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + dependencies: + muggle-string: 0.3.1 + dev: true + + /@volar/typescript@1.11.1: + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} + dependencies: + '@volar/language-core': 1.11.1 + path-browserify: 1.0.1 + dev: true + + /@vue/babel-helper-vue-transform-on@1.2.2: + resolution: {integrity: sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==} + dev: true + + /@vue/babel-plugin-jsx@1.2.2(@babel/core@7.24.4): + resolution: {integrity: sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + '@vue/babel-helper-vue-transform-on': 1.2.2 + '@vue/babel-plugin-resolve-type': 1.2.2(@babel/core@7.24.4) + camelcase: 6.3.0 + html-tags: 3.3.1 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/babel-plugin-resolve-type@1.2.2(@babel/core@7.24.4): + resolution: {integrity: sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/core': 7.24.4 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/parser': 7.24.4 + '@vue/compiler-sfc': 3.4.26 + dev: true + + /@vue/compiler-core@3.4.21: + resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + dependencies: + '@babel/parser': 7.24.4 + '@vue/shared': 3.4.21 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + /@vue/compiler-core@3.4.26: + resolution: {integrity: sha512-N9Vil6Hvw7NaiyFUFBPXrAyETIGlQ8KcFMkyk6hW1Cl6NvoqvP+Y8p1Eqvx+UdqsnrnI9+HMUEJegzia3mhXmQ==} + dependencies: + '@babel/parser': 7.24.4 + '@vue/shared': 3.4.26 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + dev: true + + /@vue/compiler-dom@3.4.21: + resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + dependencies: + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + + /@vue/compiler-dom@3.4.26: + resolution: {integrity: sha512-4CWbR5vR9fMg23YqFOhr6t6WB1Fjt62d6xdFPyj8pxrYub7d+OgZaObMsoxaF9yBUHPMiPFK303v61PwAuGvZA==} + dependencies: + '@vue/compiler-core': 3.4.26 + '@vue/shared': 3.4.26 + dev: true + + /@vue/compiler-sfc@3.4.21: + resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + dependencies: + '@babel/parser': 7.24.4 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + magic-string: 0.30.10 + postcss: 8.4.38 + source-map-js: 1.2.0 + + /@vue/compiler-sfc@3.4.26: + resolution: {integrity: sha512-It1dp+FAOCgluYSVYlDn5DtZBxk1NCiJJfu2mlQqa/b+k8GL6NG/3/zRbJnHdhV2VhxFghaDq5L4K+1dakW6cw==} + dependencies: + '@babel/parser': 7.24.4 + '@vue/compiler-core': 3.4.26 + '@vue/compiler-dom': 3.4.26 + '@vue/compiler-ssr': 3.4.26 + '@vue/shared': 3.4.26 + estree-walker: 2.0.2 + magic-string: 0.30.10 + postcss: 8.4.38 + source-map-js: 1.2.0 + dev: true + + /@vue/compiler-ssr@3.4.21: + resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + + /@vue/compiler-ssr@3.4.26: + resolution: {integrity: sha512-FNwLfk7LlEPRY/g+nw2VqiDKcnDTVdCfBREekF8X74cPLiWHUX6oldktf/Vx28yh4STNy7t+/yuLoMBBF7YDiQ==} + dependencies: + '@vue/compiler-dom': 3.4.26 + '@vue/shared': 3.4.26 + dev: true + + /@vue/devtools-api@6.6.1: + resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} + + /@vue/language-core@1.8.27(typescript@5.3.3): + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.4.26 + '@vue/shared': 3.4.26 + computeds: 0.0.1 + minimatch: 9.0.4 + muggle-string: 0.3.1 + path-browserify: 1.0.1 + typescript: 5.3.3 + vue-template-compiler: 2.7.16 + dev: true + + /@vue/reactivity@3.4.21: + resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==} + dependencies: + '@vue/shared': 3.4.21 + + /@vue/runtime-core@3.4.21: + resolution: {integrity: sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==} + dependencies: + '@vue/reactivity': 3.4.21 + '@vue/shared': 3.4.21 + + /@vue/runtime-dom@3.4.21: + resolution: {integrity: sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==} + dependencies: + '@vue/runtime-core': 3.4.21 + '@vue/shared': 3.4.21 + csstype: 3.1.3 + + /@vue/server-renderer@3.4.21(vue@3.4.21): + resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} + peerDependencies: + vue: 3.4.21 + dependencies: + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + vue: 3.4.21(typescript@5.3.3) + + /@vue/shared@3.4.21: + resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + + /@vue/shared@3.4.26: + resolution: {integrity: sha512-Fg4zwR0GNnjzodMt3KRy2AWGMKQXByl56+4HjN87soxLNU9P5xcJkstAlIeEF3cU6UYOzmJl1tV0dVPGIljCnQ==} + dev: true + + /@vueuse/core@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.9.0 + '@vueuse/shared': 10.9.0(vue@3.4.21) + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + /@vueuse/core@9.13.0(vue@3.4.21): + resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} + dependencies: + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.13.0 + '@vueuse/shared': 9.13.0(vue@3.4.21) + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/metadata@10.9.0: + resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==} + + /@vueuse/metadata@9.13.0: + resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} + dev: false + + /@vueuse/shared@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} + dependencies: + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + /@vueuse/shared@9.13.0(vue@3.4.21): + resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + dependencies: + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.throttle: ^4.1.1 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + is-url: 1.2.4 + lodash.throttle: 4.1.1 + nanoid: 3.3.7 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + prismjs: 1.29.0 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==} + peerDependencies: + '@uppy/core': ^2.1.1 + '@uppy/xhr-upload': ^2.0.3 + dom7: ^3.0.0 + is-hotkey: ^0.2.0 + lodash.camelcase: ^4.3.0 + lodash.clonedeep: ^4.5.0 + lodash.debounce: ^4.0.8 + lodash.foreach: ^4.5.0 + lodash.isequal: ^4.5.0 + lodash.throttle: ^4.1.1 + lodash.toarray: ^4.4.0 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@types/event-emitter': 0.3.5 + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + dom7: 3.0.0 + event-emitter: 0.3.5 + html-void-elements: 2.0.1 + i18next: 20.6.1 + is-hotkey: 0.2.0 + lodash.camelcase: 4.3.0 + lodash.clonedeep: 4.5.0 + lodash.debounce: 4.0.8 + lodash.foreach: 4.5.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + lodash.toarray: 4.4.0 + nanoid: 3.3.7 + scroll-into-view-if-needed: 2.2.31 + slate: 0.72.8 + slate-history: 0.66.0(slate@0.72.8) + snabbdom: 3.6.2 + dev: false + + /@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.4.21): + resolution: {integrity: sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==} + peerDependencies: + '@wangeditor/editor': '>=5.1.0' + vue: ^3.0.5 + dependencies: + '@wangeditor/editor': 5.1.23 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /@wangeditor/editor@5.1.23: + resolution: {integrity: sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==} + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/code-highlight': 1.0.3(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/list-module': 1.0.5(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/table-module': 1.1.4(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/upload-image-module': 1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/basic-modules@1.1.7)(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/video-module': 1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/core@1.1.19)(dom7@3.0.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + is-hotkey: 0.2.0 + lodash.camelcase: 4.3.0 + lodash.clonedeep: 4.5.0 + lodash.debounce: 4.0.8 + lodash.foreach: 4.5.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + lodash.toarray: 4.4.0 + nanoid: 3.3.7 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.isequal: ^4.5.0 + lodash.throttle: ^4.1.1 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + nanoid: 3.3.7 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@wangeditor/upload-image-module@1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/basic-modules@1.1.7)(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==} + peerDependencies: + '@uppy/core': ^2.0.3 + '@uppy/xhr-upload': ^2.0.3 + '@wangeditor/basic-modules': 1.x + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.foreach: ^4.5.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + lodash.foreach: 4.5.0 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@wangeditor/video-module@1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/core@1.1.19)(dom7@3.0.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==} + peerDependencies: + '@uppy/core': ^2.1.4 + '@uppy/xhr-upload': ^2.0.7 + '@wangeditor/core': 1.x + dom7: ^3.0.0 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + nanoid: 3.3.7 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@xmldom/xmldom@0.8.10: + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + dev: false + + /@yangjianfei/bmaplib.lushu@1.0.0: + resolution: {integrity: sha512-qZVijbgUgNs6tsP1muS67x0XzE5fJ3kFireouDvXO3bUYVV6XbpjZXksQTsggihLMIEvC1DO9GS9vVF8CnEeqQ==} + dev: false + + /@zxcvbn-ts/core@3.0.4: + resolution: {integrity: sha512-aQeiT0F09FuJaAqNrxynlAwZ2mW/1MdXakKWNmGM1Qp/VaY6CnB/GfnMS2T8gB2231Esp1/maCWd8vTG4OuShw==} + dependencies: + fastest-levenshtein: 1.0.16 + dev: false + + /JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /aes-decrypter@3.1.3: + resolution: {integrity: sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A==} + dependencies: + '@babel/runtime': 7.24.4 + '@videojs/vhs-utils': 3.0.5 + global: 4.4.0 + pkcs7: 1.0.4 + dev: false + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /animate.css@4.1.1: + resolution: {integrity: sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==} + dev: false + + /ansi-escapes@6.2.1: + resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} + engines: {node: '>=14.16'} + dev: true + + /ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + dev: true + + /arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + dev: true + + /arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: true + + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + dev: true + + /array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + dev: true + + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + dev: true + + /assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: true + + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + dev: false + + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + + /atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: true + + /autoprefixer@10.4.19(postcss@8.4.38): + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001614 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + dev: true + + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: true + + /axios@0.26.1(debug@4.3.4): + resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} + dependencies: + follow-redirects: 1.15.6(debug@4.3.4) + transitivePeerDependencies: + - debug + dev: true + + /axios@1.6.8: + resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + dependencies: + follow-redirects: 1.15.6(debug@4.3.4) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.4): + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.4 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.4): + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4) + core-js-compat: 3.37.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.4): + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4) + transitivePeerDependencies: + - supports-color + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + dev: true + + /base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.1 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: true + + /benz-amr-recorder@1.1.5: + resolution: {integrity: sha512-NepctcNTsZHK8NxBb5uKO5p8S+xkbm+vD6GLSkCYdJeEsriexvgumLHpDkanX4QJBcLRMVtg16buWMs+gUPB3g==} + dependencies: + benz-recorderjs: 1.0.5 + dev: false + + /benz-recorderjs@1.0.5: + resolution: {integrity: sha512-EwedOQo9KLti7HxDi/eZY51PSRbAXnOdEZmLvJ6ro3QQSoF9Y3AXBt57MIllGvVz5vtFYMeikG+GD7qTm3+p9w==} + dev: false + + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: true + + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: true + + /bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true + + /bmaplib.curveline@1.0.0: + resolution: {integrity: sha512-9wcFMVhiYxNPqpvsLDAADn3qDhNzXp2mA6VyHSHg2XOAgSooC7ZiujdFhy0sp+0QYjTfJ/MjmLuNoUg2HHxH4Q==} + dev: false + + /bmaplib.distancetool@1.0.2: + resolution: {integrity: sha512-EvxMnQRH6xM036zx5OLPyTg5tMCTbFBuGTTHOtExLy2/T0X6v5Va0YE7c3IPm/a/Eo5V/ynYpOLOLZbRY8ccyA==} + dev: false + + /bmaplib.heatmap@1.0.4: + resolution: {integrity: sha512-rmhqUARBpUSJ9jXzUI2j7dIOqnc38bqubkx/8a349U2qtw/ulLUwyzRD535OrA8G7w5cz4aPKm6/rNvUAarg/Q==} + dev: false + + /bmaplib.markerclusterer@1.0.13: + resolution: {integrity: sha512-VrLyWSiuDEVNi0yUfwOhFQ6z1oEEHS4w36GNu3iASu6p52QIx9uAXMUkuSCHReNR0bj2Cp9SA1dSx5RpojXajQ==} + dependencies: + bmaplib.texticonoverlay: 1.0.2 + dev: false + + /bmaplib.texticonoverlay@1.0.2: + resolution: {integrity: sha512-4ZTWr4ZP3B6qEWput5Tut16CfZgII38YwM3bpyb4gFTQyORlKYryFp9WHWrwZZaHlOyYDAXG9SX0hka43jTADg==} + dev: false + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /bpmn-js-properties-panel@0.46.0(bpmn-js@8.9.0): + resolution: {integrity: sha512-8MlNvHklIZZQH9vtoKf0A0A1v0sHO4Iz19jGhHeX15czOOiCfdavjo+q23GHWNKzQA9347F91XYFcrnM6FO8zw==} + peerDependencies: + bpmn-js: ^3.x || ^4.x || ^5.x || ^6.x || ^7.x || ^8.x + dependencies: + '@bpmn-io/element-templates-validator': 0.2.0 + '@bpmn-io/extract-process-variables': 0.4.5 + bpmn-js: 8.9.0 + ids: 1.0.5 + inherits: 2.0.4 + lodash: 4.17.21 + min-dom: 3.2.1 + scroll-tabs: 1.0.1 + selection-update: 0.1.2 + semver: 6.3.1 + dev: true + + /bpmn-js-token-simulation@0.10.0: + resolution: {integrity: sha512-QuZQ/KVXKt9Vl+XENyOBoTW2Aw+uKjuBlKdCJL6El7AyM7DkJ5bZkSYURshId1SkBDdYg2mJ1flSmsrhGuSfwg==} + dependencies: + min-dash: 3.8.1 + min-dom: 0.2.0 + svg.js: 2.7.1 + dev: false + + /bpmn-js@8.9.0: + resolution: {integrity: sha512-cthSxiJUpEHspiUKiL0YA8/mRCYngNKwALWieLKPtFo42n+vWTFgmxnASNRwhxpPEbSXjYuTah1lZ0lSyLWPpw==} + dependencies: + bpmn-moddle: 7.1.3 + css.escape: 1.5.1 + diagram-js: 7.9.0 + diagram-js-direct-editing: 1.8.0(diagram-js@7.9.0) + ids: 1.0.5 + inherits: 2.0.4 + min-dash: 3.8.1 + min-dom: 3.2.1 + object-refs: 0.3.0 + tiny-svg: 2.2.4 + dev: true + + /bpmn-moddle@7.1.3: + resolution: {integrity: sha512-ZcBfw0NSOdYTSXFKEn7MOXHItz7VfLZTrFYKO8cK6V8ZzGjCcdiLIOiw7Lctw1PJsihhLiZQS8Htj2xKf+NwCg==} + dependencies: + min-dash: 3.8.1 + moddle: 5.0.4 + moddle-xml: 9.0.6 + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist-to-esbuild@2.1.1(browserslist@4.23.0): + resolution: {integrity: sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + browserslist: '*' + dependencies: + browserslist: 4.23.0 + meow: 13.2.0 + dev: true + + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001614 + electron-to-chromium: 1.4.750 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.1 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: true + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: false + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /camunda-bpmn-moddle@7.0.1: + resolution: {integrity: sha512-Br8Diu6roMpziHdpl66Dhnm0DTnCFMrSD9zwLV08LpD52QA0UsXxU87XfHf08HjuB7ly0Hd1bvajZRpf9hbmYQ==} + dev: false + + /caniuse-lite@1.0.30001614: + resolution: {integrity: sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==} + dev: true + + /chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: true + + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + restore-cursor: 4.0.0 + dev: true + + /cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + dependencies: + slice-ansi: 5.0.0 + string-width: 7.1.0 + dev: true + + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: false + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + dev: true + + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + dev: false + + /collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + + /common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + dev: true + + /compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + + /component-classes@1.2.6: + resolution: {integrity: sha512-hPFGULxdwugu1QWW3SvVOCUHLzO34+a2J6Wqy0c5ASQkfi9/8nZcBB0ZohaEbXOQlCflMAEMmEWk7u7BVs4koA==} + dependencies: + component-indexof: 0.0.3 + dev: false + + /component-closest@0.1.4: + resolution: {integrity: sha512-NF9hMj6JKGM5sb6wP/dg7GdJOttaIH9PcTsUNdWcrvu7Kw/5R5swQAFpgaYEHlARrNMyn4Wf7O1PlRej+pt76Q==} + dependencies: + component-matches-selector: 0.1.7 + dev: false + + /component-delegate@0.2.4: + resolution: {integrity: sha512-OlpcB/6Fi+kXQPh/TfXnSvvmrU04ghz7vcJh/jgLF0Ni+I+E3WGlKJQbBGDa5X+kVUG8WxOgjP+8iWbz902fPg==} + dependencies: + component-closest: 0.1.4 + component-event: 0.1.4 + dev: false + + /component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + dev: true + + /component-event@0.1.4: + resolution: {integrity: sha512-GMwOG8MnUHP1l8DZx1ztFO0SJTFnIzZnBDkXAj8RM2ntV2A6ALlDxgbMY1Fvxlg6WPQ+5IM/a6vg4PEYbjg/Rw==} + + /component-event@0.2.1: + resolution: {integrity: sha512-wGA++isMqiDq1jPYeyv2as/Bt/u+3iLW0rEa+8NQ82jAv3TgqMiCM+B2SaBdn2DfLilLjjq736YcezihRYhfxw==} + dev: false + + /component-indexof@0.0.3: + resolution: {integrity: sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw==} + dev: false + + /component-matches-selector@0.1.7: + resolution: {integrity: sha512-Yb2+pVBvrqkQVpPaDBF0DYXRreBveXJNrpJs9FnFu8PF6/5IIcz5oDZqiH9nB5hbD2/TmFVN5ZCxBzqu7yFFYQ==} + dependencies: + component-query: 0.0.3 + global-object: 1.0.0 + dev: false + + /component-query@0.0.3: + resolution: {integrity: sha512-VgebQseT1hz1Ps7vVp2uaSg+N/gsI5ts3AZUSnN6GMA2M82JH7o+qYifWhmVE/e8w/H48SJuA3nA9uX8zRe95Q==} + dev: false + + /compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + dev: false + + /computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + dev: true + + /consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + dev: true + + /conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + dev: true + + /core-js-compat@3.37.0: + resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} + dependencies: + browserslist: 4.23.0 + dev: true + + /core-js-pure@3.37.0: + resolution: {integrity: sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ==} + requiresBuild: true + dev: false + + /core-js@3.37.0: + resolution: {integrity: sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==} + requiresBuild: true + dev: true + + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + + /cosmiconfig-typescript-loader@5.0.0(@types/node@20.12.7)(cosmiconfig@9.0.0)(typescript@5.3.3): + resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} + engines: {node: '>=v16'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=8.2' + typescript: '>=4' + dependencies: + '@types/node': 20.12.7 + cosmiconfig: 9.0.0(typescript@5.3.3) + jiti: 1.21.0 + typescript: 5.3.3 + dev: true + + /cosmiconfig@9.0.0(typescript@5.3.3): + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + typescript: 5.3.3 + dev: true + + /cropperjs@1.6.2: + resolution: {integrity: sha512-nhymn9GdnV3CqiEHJVai54TULFAE3VshJTXSqSJKa8yXAKyBKDWdhHarnlIPrshJ0WMFTGuFvG02YjLXfPiuOA==} + dev: false + + /cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: false + + /css-functions-list@3.2.2: + resolution: {integrity: sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==} + engines: {node: '>=12 || >=16'} + dev: true + + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + + /css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.0 + dev: true + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: true + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + dependencies: + es5-ext: 0.10.64 + type: 2.7.2 + dev: false + + /dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + dev: true + + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} + dev: false + + /de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: false + + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + dev: true + + /define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 0.1.7 + dev: true + + /define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.3 + dev: true + + /define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 + dev: true + + /defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + + /destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + dev: true + + /diagram-js-direct-editing@1.8.0(diagram-js@7.9.0): + resolution: {integrity: sha512-B4Xj+PJfgBjbPEzT3uZQEkZI5xHFB0Izc+7BhDFuHidzrEMzQKZrFGdA3PqfWhReHf3dp+iB6Tt11G9eGNjKMw==} + peerDependencies: + diagram-js: '*' + dependencies: + diagram-js: 7.9.0 + min-dash: 3.8.1 + min-dom: 3.2.1 + dev: true + + /diagram-js@12.8.1: + resolution: {integrity: sha512-LF9BiwjbOPpZd0ez5VSlYRbdbEA59YQX43bWvNDp1rLMv0xwZ5yIg4oaYDK82nIQ0kH1tjvoQRpNevMTCgQVyw==} + dependencies: + '@bpmn-io/diagram-js-ui': 0.2.3 + clsx: 2.1.1 + didi: 9.0.2 + hammerjs: 2.0.8 + inherits-browser: 0.1.0 + min-dash: 4.2.1 + min-dom: 4.1.0 + object-refs: 0.3.0 + path-intersection: 2.2.1 + tiny-svg: 3.0.1 + dev: false + + /diagram-js@7.9.0: + resolution: {integrity: sha512-o1yUtX5TXV1pmpevP55gxU/AEG6nCidOXGs/HLuxNXG0zMZ3jQta7kMqRxTK93rNw/XuHmP1eMOwdvdJ2RP5qA==} + dependencies: + css.escape: 1.5.1 + didi: 5.2.1 + hammerjs: 2.0.8 + inherits: 2.0.4 + min-dash: 3.8.1 + min-dom: 3.2.1 + object-refs: 0.3.0 + path-intersection: 2.2.1 + tiny-svg: 2.2.4 + dev: true + + /didi@5.2.1: + resolution: {integrity: sha512-IKNnajUlD4lWMy/Q9Emkk7H1qnzREgY4UyE3IhmOi/9IKua0JYtYldk928bOdt1yNxN8EiOy1sqtSozEYsmjCg==} + dev: true + + /didi@9.0.2: + resolution: {integrity: sha512-q2+aj+lnJcUweV7A9pdUrwFr4LHVmRPwTmQLtHPFz4aT7IBoryN6Iy+jmFku+oIzr5ebBkvtBCOb87+dJhb7bg==} + dev: false + + /dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + dev: false + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + dev: true + + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: true + + /dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + dev: false + + /dom7@3.0.0: + resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==} + dependencies: + ssr-window: 3.0.0 + dev: false + + /domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + dev: true + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler@2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + dependencies: + domelementtype: 1.3.1 + dev: true + + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domify@1.4.2: + resolution: {integrity: sha512-m4yreHcUWHBncGVV7U+yQzc12vIlq0jMrtHZ5mW6dQMiL/7skSYNVX9wqKwOtyO9SGCgevrAFEgOCAHmamHTUA==} + + /dompurify@3.1.1: + resolution: {integrity: sha512-tVP8C/GJwnABOn/7cx/ymx/hXpmBfWIPihC1aOEvS8GbMqy3pgeYtJk1HXN3CO7tu+8bpY18f6isjR5Cymj0TQ==} + dev: false + + /domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: true + + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + + /dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dependencies: + is-obj: 2.0.0 + dev: true + + /driver.js@1.3.1: + resolution: {integrity: sha512-MvUdXbqSgEsgS/H9KyWb5Rxy0aE6BhOVT4cssi2x2XjmXea6qQfgdx32XKVLLSqTaIw7q/uxU5Xl3NV7+cN6FQ==} + dev: false + + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /echarts-wordcloud@2.1.0(echarts@5.5.0): + resolution: {integrity: sha512-Kt1JmbcROgb+3IMI48KZECK2AP5lG6bSsOEs+AsuwaWJxQom31RTNd6NFYI01E/YaI1PFZeueaupjlmzSQasjQ==} + peerDependencies: + echarts: ^5.0.1 + dependencies: + echarts: 5.5.0 + dev: false + + /echarts@5.5.0: + resolution: {integrity: sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==} + dependencies: + tslib: 2.3.0 + zrender: 5.5.0 + dev: false + + /ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.7 + dev: true + + /electron-to-chromium@1.4.750: + resolution: {integrity: sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==} + dev: true + + /element-plus@2.6.1(vue@3.4.21): + resolution: {integrity: sha512-6VRpLjwtIVdtUuITJPPKtpOH1NM6nuAkRE3q5O4Lrx0N1bYMhTkiqb2Jy7zfQuDPbOIkkF2OABTzegpNnzgsnQ==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@ctrl/tinycolor': 3.6.1 + '@element-plus/icons-vue': 2.3.1(vue@3.4.21) + '@floating-ui/dom': 1.6.4 + '@popperjs/core': /@sxzz/popperjs-es@2.11.7 + '@types/lodash': 4.17.0 + '@types/lodash-es': 4.17.12 + '@vueuse/core': 9.13.0(vue@3.4.21) + async-validator: 4.2.5 + dayjs: 1.11.11 + escape-html: 1.0.3 + lodash: 4.17.21 + lodash-es: 4.17.21 + lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21) + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.4.21(typescript@5.3.3) + transitivePeerDependencies: + - '@vue/composition-api' + dev: false + + /emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: true + + /encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + dev: false + + /entities@1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + dev: true + + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + /es-module-lexer@1.5.2: + resolution: {integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==} + dev: true + + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: true + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + dev: false + + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + dev: false + + /es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + dependencies: + d: 1.0.2 + ext: 1.7.0 + dev: false + + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: false + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: true + + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-define-config@2.1.0: + resolution: {integrity: sha512-QUp6pM9pjKEVannNAbSJNeRuYwW3LshejfyBBpjeMGaJjaDUpVps4C6KVR8R7dWZnD3i0synmrE36znjTkJvdQ==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} + dev: true + + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.57.0 + eslint-config-prettier: 9.1.0(eslint@8.57.0) + prettier: 3.2.5 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.8 + dev: true + + /eslint-plugin-vue@9.25.0(eslint@8.57.0): + resolution: {integrity: sha512-tDWlx14bVe6Bs+Nnh3IGrD+hb11kf2nukfm6jLsmJIhmiRQ1SUaksvwY9U5MvPB0pcrg0QK0xapQkfITs3RKOA==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + eslint: 8.57.0 + globals: 13.24.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.16 + semver: 7.6.0 + vue-eslint-parser: 9.4.2(eslint@8.57.0) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + 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.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.2 + dev: false + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + dev: false + + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + dependencies: + type: 2.7.2 + dev: false + + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: true + + /extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: true + + /extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-xml-parser@4.3.6: + resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false + + /fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + dependencies: + flat-cache: 4.0.1 + dev: true + + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: true + + /fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: false + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + dev: true + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: true + + /follow-redirects@1.15.6(debug@4.3.4): + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.3.4 + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + + /fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + dependencies: + map-cache: 0.2.2 + dev: true + + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + /get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: true + + /get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + dev: true + + /git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@10.3.12: + resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.4 + minipass: 7.0.4 + path-scurry: 1.10.2 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + dependencies: + ini: 4.1.1 + dev: true + + /global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + dev: true + + /global-object@1.0.0: + resolution: {integrity: sha512-mSPSkY6UsHv6hgW0V2dfWBWTS8TnPnLx3ECVNoWp6rBI2Bg66VYoqGoTFlH/l7XhAZ/l+StYlntXlt87BEeCcg==} + dev: false + + /global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: true + + /global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + dependencies: + min-document: 2.19.0 + process: 0.11.10 + dev: false + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: true + + /hammerjs@2.0.8: + resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==} + engines: {node: '>=0.8.0'} + + /has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: true + + /has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: true + + /has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + dev: true + + /has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: true + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /highlight.js@11.9.0: + resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==} + engines: {node: '>=12.0.0'} + dev: false + + /htm@3.1.1: + resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} + dev: false + + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + dev: true + + /html-void-elements@2.0.1: + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + dev: false + + /htmlparser2@3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + + /i18next@20.6.1: + resolution: {integrity: sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==} + dependencies: + '@babel/runtime': 7.24.4 + dev: false + + /ids@1.0.5: + resolution: {integrity: sha512-XQ0yom/4KWTL29sLG+tyuycy7UmeaM/79GRtSJq6IG9cJGIPeBz5kwDCguie3TwxaMNIc3WtPi0cTa1XYHicpw==} + dev: true + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dev: true + + /immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + dev: false + + /immutable@4.3.5: + resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-meta-resolve@4.0.0: + resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /indexof@0.0.1: + resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==} + dev: true + + /individual@2.0.0: + resolution: {integrity: sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g==} + dev: false + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits-browser@0.1.0: + resolution: {integrity: sha512-CJHHvW3jQ6q7lzsXPpapLdMx5hDpSF3FSh45pwsj6bKxJJ8Nl8v43i5yXnr3BdfOimGHKyniewQtnAIp3vyJJw==} + dev: false + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + dev: true + + /is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + dependencies: + hasown: 2.0.2 + dev: true + + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.3.0 + dev: true + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.2 + dev: true + + /is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.2 + dev: true + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + dev: true + + /is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + dev: true + + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: true + + /is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true + + /is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + dependencies: + get-east-asian-width: 1.2.0 + dev: true + + /is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + dev: false + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-hotkey@0.2.0: + resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==} + dev: false + + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + dependencies: + text-extensions: 2.4.0 + dev: true + + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.15 + dev: true + + /is-url@1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + dev: false + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + dependencies: + isarray: 1.0.0 + dev: true + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.5 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: true + + /js-base64@2.6.4: + resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-tokens@8.0.3: + resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsencrypt@3.3.2: + resolution: {integrity: sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==} + dev: false + + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-source-map@0.6.1: + resolution: {integrity: sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.6.0 + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true + + /keycode@2.2.1: + resolution: {integrity: sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==} + dev: false + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of@5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /known-css-properties@0.30.0: + resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} + dev: true + + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig@3.0.0: + resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + engines: {node: '>=14'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /lint-staged@15.2.2: + resolution: {integrity: sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==} + engines: {node: '>=18.12.0'} + hasBin: true + dependencies: + chalk: 5.3.0 + commander: 11.1.0 + debug: 4.3.4 + execa: 8.0.1 + lilconfig: 3.0.0 + listr2: 8.0.1 + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /listr2@8.0.1: + resolution: {integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==} + engines: {node: '>=18.0.0'} + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.0.0 + rfdc: 1.3.1 + wrap-ansi: 9.0.0 + dev: true + + /loader-utils@1.4.2: + resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} + engines: {node: '>=4.0.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.2 + dev: true + + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true + + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.6.1 + pkg-types: 1.1.0 + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: false + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + + /lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21): + resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} + peerDependencies: + '@types/lodash-es': '*' + lodash: '*' + lodash-es: '*' + dependencies: + '@types/lodash-es': 4.17.12 + lodash: 4.17.21 + lodash-es: 4.17.21 + dev: false + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + /lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + dev: false + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + /lodash.foreach@4.5.0: + resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} + dev: false + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: false + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + dev: true + + /lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: true + + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: true + + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: false + + /lodash.toarray@4.4.0: + resolution: {integrity: sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==} + dev: false + + /lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + + /lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + + /lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log-update@6.0.0: + resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} + engines: {node: '>=18'} + dependencies: + ansi-escapes: 6.2.1 + cli-cursor: 4.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + dev: true + + /loglevel-colored-level-prefix@1.0.0: + resolution: {integrity: sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==} + dependencies: + chalk: 1.1.3 + loglevel: 1.9.1 + dev: true + + /loglevel@1.9.1: + resolution: {integrity: sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==} + engines: {node: '>= 0.6.0'} + dev: true + + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /m3u8-parser@4.8.0: + resolution: {integrity: sha512-UqA2a/Pw3liR6Df3gwxrqghCP17OpPlQj6RBPLYygf/ZSQ4MoSgvdvhvt35qV+3NaaA0FSZx93Ix+2brT1U7cA==} + dependencies: + '@babel/runtime': 7.24.4 + '@videojs/vhs-utils': 3.0.5 + global: 4.4.0 + dev: false + + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + /map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + dependencies: + object-visit: 1.0.1 + dev: true + + /matches-selector@1.2.0: + resolution: {integrity: sha512-c4vLwYWyl+Ji+U43eU/G5FwxWd4ZH0ePUsFs5y0uwD9HUEFBXUQ1zUUan+78IpRD+y4pUfG0nAzNM292K7ItvA==} + dev: true + + /mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + dev: true + + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true + + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: true + + /memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + dev: false + + /meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + dev: true + + /meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + dev: true + + /merge-options@1.0.1: + resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==} + engines: {node: '>=4'} + dependencies: + is-plain-obj: 1.1.0 + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@3.1.0: + resolution: {integrity: sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 1.0.0 + extend-shallow: 2.0.1 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 5.1.0 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-match@1.0.2: + resolution: {integrity: sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==} + dependencies: + wildcard: 1.1.2 + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /min-dash@3.8.1: + resolution: {integrity: sha512-evumdlmIlg9mbRVPbC4F5FuRhNmcMS5pvuBUbqb1G9v09Ro0ImPEgz5n3khir83lFok1inKqVDjnKEg3GpDxQg==} + + /min-dash@4.2.1: + resolution: {integrity: sha512-to+unsToePnm7cUeR9TrMzFlETHd/UXmU+ELTRfWZj5XGT41KF6X3L233o3E/GdEs3sk2Tbw/lOLD1avmWkg8A==} + dev: false + + /min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + dependencies: + dom-walk: 0.1.2 + dev: false + + /min-dom@0.2.0: + resolution: {integrity: sha512-VmxugbnAcVZGqvepjhOA4d4apmrpX8mMaRS+/jo0dI5Yorzrr4Ru9zc9KVALlY/+XakVCb8iQ+PYXljihQcsNw==} + dependencies: + component-classes: 1.2.6 + component-closest: 0.1.4 + component-delegate: 0.2.4 + component-event: 0.1.4 + component-matches-selector: 0.1.7 + component-query: 0.0.3 + domify: 1.4.2 + dev: false + + /min-dom@3.2.1: + resolution: {integrity: sha512-v6YCmnDzxk4rRJntWTUiwggLupPw/8ZSRqUq0PDaBwVZEO/wYzCH4SKVBV+KkEvf3u0XaWHly5JEosPtqRATZA==} + dependencies: + component-event: 0.1.4 + domify: 1.4.2 + indexof: 0.0.1 + matches-selector: 1.2.0 + min-dash: 3.8.1 + dev: true + + /min-dom@4.1.0: + resolution: {integrity: sha512-1lj1EyoSwY/UmTeT/hhPiZTsq+vK9D+8FAJ/53iK5jT1otkG9rJTixSKdjmTieEvdfES+sKbbTptzaQJhnacjA==} + dependencies: + component-event: 0.2.1 + domify: 1.4.2 + min-dash: 4.2.1 + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /mitt@1.2.0: + resolution: {integrity: sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==} + dev: true + + /mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + dev: false + + /mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: true + + /mlly@1.6.1: + resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.1.0 + ufo: 1.5.3 + dev: true + + /moddle-xml@9.0.6: + resolution: {integrity: sha512-tl0reHpsY/aKlLGhXeFlQWlYAQHFxTkFqC8tq8jXRYpQSnLVw13T6swMaourLd7EXqHdWsc+5ggsB+fEep6xZQ==} + dependencies: + min-dash: 3.8.1 + moddle: 5.0.4 + saxen: 8.1.2 + dev: true + + /moddle@5.0.4: + resolution: {integrity: sha512-Kjb+hjuzO+YlojNGxEUXvdhLYTHTtAABDlDcJTtTcn5MbJF9Zkv4I1Fyvp3Ypmfgg1EfHDZ3PsCQTuML9JD6wg==} + dependencies: + min-dash: 3.8.1 + dev: true + + /mpd-parser@0.22.1: + resolution: {integrity: sha512-fwBebvpyPUU8bOzvhX0VQZgSohncbgYwUyJJoTSNpmy7ccD2ryiCvM7oRkn/xQH5cv73/xU7rJSNCLjdGFor0Q==} + hasBin: true + dependencies: + '@babel/runtime': 7.24.4 + '@videojs/vhs-utils': 3.0.5 + '@xmldom/xmldom': 0.8.10 + global: 4.4.0 + dev: false + + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + dev: true + + /mux.js@6.0.1: + resolution: {integrity: sha512-22CHb59rH8pWGcPGW5Og7JngJ9s+z4XuSlYvnxhLuc58cA1WqGDQPzuG8I+sPm1/p0CdgpzVTaKW408k5DNn8w==} + engines: {node: '>=8', npm: '>=5'} + hasBin: true + dependencies: + '@babel/runtime': 7.24.4 + global: 4.4.0 + dev: false + + /namespace-emitter@2.0.1: + resolution: {integrity: sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==} + dev: false + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: false + + /node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + dev: true + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-wheel-es@1.2.0: + resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} + dev: false + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + dev: false + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: true + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object-refs@0.3.0: + resolution: {integrity: sha512-eP0ywuoWOaDoiake/6kTJlPJhs+k0qNm4nYRzXLNHj6vh+5M3i9R1epJTdxIPGlhWc4fNRQ7a6XJNCX+/L4FOQ==} + + /object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.4 + ufo: 1.5.3 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: false + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: false + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: false + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.24.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + dev: true + + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /path-intersection@2.2.1: + resolution: {integrity: sha512-9u8xvMcSfuOiStv9bPdnRJQhGQXLKurew94n4GPQCdH1nj9QKC9ObbNoIpiRq8skiOBxKkt277PgOoFgAt3/rA==} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-scurry@1.10.2: + resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.2.2 + minipass: 7.0.4 + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /pathe@0.2.0: + resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} + dev: true + + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + + /perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + + /pinia-plugin-persistedstate@3.2.1(pinia@2.1.7): + resolution: {integrity: sha512-MK++8LRUsGF7r45PjBFES82ISnPzyO6IZx3CH5vyPseFLZCk1g2kgx6l/nW8pEBKxxd4do0P6bJw+mUSZIEZUQ==} + peerDependencies: + pinia: ^2.0.0 + dependencies: + pinia: 2.1.7(typescript@5.3.3)(vue@3.4.21) + dev: false + + /pinia@2.1.7(typescript@5.3.3)(vue@3.4.21): + resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + dependencies: + '@vue/devtools-api': 6.6.1 + typescript: 5.3.3 + vue: 3.4.21(typescript@5.3.3) + vue-demi: 0.14.7(vue@3.4.21) + dev: false + + /pkcs7@1.0.4: + resolution: {integrity: sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==} + hasBin: true + dependencies: + '@babel/runtime': 7.24.4 + dev: false + + /pkg-types@1.1.0: + resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} + dependencies: + confbox: 0.1.7 + mlly: 1.6.1 + pathe: 1.1.2 + dev: true + + /pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + dev: false + + /posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + dev: true + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + + /postcss-html@1.6.0: + resolution: {integrity: sha512-OWgQ9/Pe23MnNJC0PL4uZp8k0EDaUvqpJFSiwFxOLClAhmD7UEisyhO3x5hVsD4xFrjReVTXydlrMes45dJ71w==} + engines: {node: ^12 || >=14} + dependencies: + htmlparser2: 8.0.2 + js-tokens: 8.0.3 + postcss: 8.4.38 + postcss-safe-parser: 6.0.0(postcss@8.4.38) + dev: true + + /postcss-prefix-selector@1.16.1(postcss@5.2.18): + resolution: {integrity: sha512-Umxu+FvKMwlY6TyDzGFoSUnzW+NOfMBLyC1tAkIjgX+Z/qGspJeRjVC903D7mx7TuBpJlwti2ibXtWuA7fKMeQ==} + peerDependencies: + postcss: '>4 <9' + dependencies: + postcss: 5.2.18 + dev: true + + /postcss-resolve-nested-selector@0.1.1: + resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} + dev: true + + /postcss-safe-parser@6.0.0(postcss@8.4.38): + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.38 + dev: true + + /postcss-safe-parser@7.0.0(postcss@8.4.38): + resolution: {integrity: sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.38 + dev: true + + /postcss-scss@4.0.9(postcss@8.4.38): + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + dependencies: + postcss: 8.4.38 + dev: true + + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-sorting@8.0.2(postcss@8.4.38): + resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} + peerDependencies: + postcss: ^8.4.20 + dependencies: + postcss: 8.4.38 + dev: true + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss@5.2.18: + resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==} + engines: {node: '>=0.12'} + dependencies: + chalk: 1.1.3 + js-base64: 2.6.4 + source-map: 0.5.7 + supports-color: 3.2.3 + dev: true + + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + + /posthtml-parser@0.2.1: + resolution: {integrity: sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==} + dependencies: + htmlparser2: 3.10.1 + isobject: 2.1.0 + dev: true + + /posthtml-rename-id@1.0.12: + resolution: {integrity: sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /posthtml-render@1.4.0: + resolution: {integrity: sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==} + engines: {node: '>=10'} + dev: true + + /posthtml-svg-mode@1.0.3: + resolution: {integrity: sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==} + dependencies: + merge-options: 1.0.1 + posthtml: 0.9.2 + posthtml-parser: 0.2.1 + posthtml-render: 1.4.0 + dev: true + + /posthtml@0.9.2: + resolution: {integrity: sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==} + engines: {node: '>=0.10.0'} + dependencies: + posthtml-parser: 0.2.1 + posthtml-render: 1.4.0 + dev: true + + /preact@10.20.2: + resolution: {integrity: sha512-S1d1ernz3KQ+Y2awUxKakpfOg2CEmJmwOP+6igPx6dgr6pgDvenqYviyokWso2rhHvGtTlWWnJDa7RaPbQerTg==} + dev: false + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-eslint@16.3.0: + resolution: {integrity: sha512-Lh102TIFCr11PJKUMQ2kwNmxGhTsv/KzUg9QYF2Gkw259g/kPgndZDWavk7/ycbRvj2oz4BPZ1gCU8bhfZH/Xg==} + engines: {node: '>=16.10.0'} + peerDependencies: + prettier-plugin-svelte: ^3.0.0 + svelte-eslint-parser: '*' + peerDependenciesMeta: + prettier-plugin-svelte: + optional: true + svelte-eslint-parser: + optional: true + dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + common-tags: 1.8.2 + dlv: 1.1.3 + eslint: 8.57.0 + indent-string: 4.0.0 + lodash.merge: 4.6.2 + loglevel-colored-level-prefix: 1.0.0 + prettier: 3.2.5 + pretty-format: 29.7.0 + require-relative: 0.8.7 + typescript: 5.3.3 + vue-eslint-parser: 9.4.2(eslint@8.57.0) + transitivePeerDependencies: + - supports-color + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + dev: true + + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: false + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: false + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + dijkstrajs: 1.0.3 + encode-utf8: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + dev: false + + /qs@6.12.1: + resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.6 + dev: false + + /query-string@4.3.4: + resolution: {integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==} + engines: {node: '>=0.10.0'} + dependencies: + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /rd@2.0.1: + resolution: {integrity: sha512-/XdKU4UazUZTXFmI0dpABt8jSXPWcEyaGdk340KdHnsEOdkTctlX23aAK7ChQDn39YGNlAJr1M5uvaKt4QnpNw==} + dependencies: + '@types/node': 10.17.60 + dev: true + + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.24.4 + dev: true + + /regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: true + + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + dev: true + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: true + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + dev: true + + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: false + + /require-relative@0.8.7: + resolution: {integrity: sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==} + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.12 + dev: true + + /rollup-plugin-purge-icons@0.10.0: + resolution: {integrity: sha512-GD2ftg4L9G/sagIhtCmBn5vdyzePOisniythubpbywP0Q3ix9rZuDeFvgXTPemOsc22pvH7t22ryYQIl0rwGog==} + engines: {node: '>= 12'} + dependencies: + '@purge-icons/core': 0.10.0 + '@purge-icons/generated': 0.10.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /rollup@4.17.1: + resolution: {integrity: sha512-0gG94inrUtg25sB2V/pApwiv1lUb0bQ25FPNuzO89Baa+B+c0ccaaBKM5zkZV/12pUUdH+lWCSm9wmHqyocuVQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.17.1 + '@rollup/rollup-android-arm64': 4.17.1 + '@rollup/rollup-darwin-arm64': 4.17.1 + '@rollup/rollup-darwin-x64': 4.17.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.17.1 + '@rollup/rollup-linux-arm-musleabihf': 4.17.1 + '@rollup/rollup-linux-arm64-gnu': 4.17.1 + '@rollup/rollup-linux-arm64-musl': 4.17.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.17.1 + '@rollup/rollup-linux-riscv64-gnu': 4.17.1 + '@rollup/rollup-linux-s390x-gnu': 4.17.1 + '@rollup/rollup-linux-x64-gnu': 4.17.1 + '@rollup/rollup-linux-x64-musl': 4.17.1 + '@rollup/rollup-win32-arm64-msvc': 4.17.1 + '@rollup/rollup-win32-ia32-msvc': 4.17.1 + '@rollup/rollup-win32-x64-msvc': 4.17.1 + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rust-result@1.0.0: + resolution: {integrity: sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA==} + dependencies: + individual: 2.0.0 + dev: false + + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safe-json-parse@4.0.0: + resolution: {integrity: sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ==} + dependencies: + rust-result: 1.0.0 + dev: false + + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: true + + /safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + dependencies: + ret: 0.1.15 + dev: true + + /sass@1.75.0: + resolution: {integrity: sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.6.0 + immutable: 4.3.5 + source-map-js: 1.2.0 + dev: true + + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: false + + /saxen@8.1.2: + resolution: {integrity: sha512-xUOiiFbc3Ow7p8KMxwsGICPx46ZQvy3+qfNVhrkwfz3Vvq45eGt98Ft5IQaA1R/7Tb5B5MKh9fUR9x3c3nDTxw==} + dev: true + + /scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + dependencies: + compute-scroll-into-view: 1.0.20 + dev: false + + /scroll-tabs@1.0.1: + resolution: {integrity: sha512-W4xjEwNS4QAyQnaJ450vQTcKpbnalBAfsTDV926WrxEMOqjyj2To8uv2d0Cp0oxMdk5TkygtzXmctPNc2zgBcg==} + dependencies: + min-dash: 3.8.1 + min-dom: 3.2.1 + mitt: 1.2.0 + dev: true + + /scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + dev: true + + /selection-update@0.1.2: + resolution: {integrity: sha512-4jzoJNh7VT2s2tvm/kUSskSw7pD0BVcrrGccbfOMK+3AXLBPz6nIy1yo+pbXgvNoTNII96Pq92+sAY+rF0LUAA==} + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: false + + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: true + + /set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slate-history@0.66.0(slate@0.72.8): + resolution: {integrity: sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==} + peerDependencies: + slate: '>=0.65.3' + dependencies: + is-plain-object: 5.0.0 + slate: 0.72.8 + dev: false + + /slate@0.72.8: + resolution: {integrity: sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==} + dependencies: + immer: 9.0.21 + is-plain-object: 5.0.0 + tiny-warning: 1.0.3 + dev: false + + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: true + + /slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + dev: true + + /snabbdom@3.6.2: + resolution: {integrity: sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q==} + engines: {node: '>=12.17.0'} + dev: false + + /snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: true + + /snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /sortablejs@1.14.0: + resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==} + dev: false + + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + /source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: true + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + dev: true + + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: true + + /ssr-window@3.0.0: + resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==} + dev: false + + /stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + + /static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: true + + /steady-xml@0.1.0: + resolution: {integrity: sha512-5sk17qO2wWRtonTNoBhoKAB35OSsGJOa3+NEa6D+1GS+de+ujDWxnflMkXBrviOfkNrPTUqduAdXhrMJs89nAw==} + engines: {node: '>=12.0.0'} + dev: false + + /strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + dev: true + + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /string-width@7.1.0: + resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} + engines: {node: '>=18'} + dependencies: + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + dev: true + + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: true + + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + dependencies: + acorn: 8.11.3 + dev: true + + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false + + /stylelint-config-html@1.1.0(postcss-html@1.6.0)(stylelint@16.4.0): + resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} + engines: {node: ^12 || >=14} + peerDependencies: + postcss-html: ^1.0.0 + stylelint: '>=14.0.0' + dependencies: + postcss-html: 1.6.0 + stylelint: 16.4.0(typescript@5.3.3) + dev: true + + /stylelint-config-recommended@14.0.0(stylelint@16.4.0): + resolution: {integrity: sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.0.0 + dependencies: + stylelint: 16.4.0(typescript@5.3.3) + dev: true + + /stylelint-config-standard@36.0.0(stylelint@16.4.0): + resolution: {integrity: sha512-3Kjyq4d62bYFp/Aq8PMKDwlgUyPU4nacXsjDLWJdNPRUgpuxALu1KnlAHIj36cdtxViVhXexZij65yM0uNIHug==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.1.0 + dependencies: + stylelint: 16.4.0(typescript@5.3.3) + stylelint-config-recommended: 14.0.0(stylelint@16.4.0) + dev: true + + /stylelint-order@6.0.4(stylelint@16.4.0): + resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==} + peerDependencies: + stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 + dependencies: + postcss: 8.4.38 + postcss-sorting: 8.0.2(postcss@8.4.38) + stylelint: 16.4.0(typescript@5.3.3) + dev: true + + /stylelint@16.4.0(typescript@5.3.3): + resolution: {integrity: sha512-uSx7VMuXwLuYcNSIg+0/fFNv0WinsfLAqsVVy7h7p80clKOHiGE8pfY6UjqwylTHiJrRIahTl6a8FPxGezhWoA==} + engines: {node: '>=18.12.0'} + hasBin: true + dependencies: + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/media-query-list-parser': 2.1.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/selector-specificity': 3.0.3(postcss-selector-parser@6.0.16) + '@dual-bundle/import-meta-resolve': 4.0.0 + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 9.0.0(typescript@5.3.3) + css-functions-list: 3.2.2 + css-tree: 2.3.1 + debug: 4.3.4 + fast-glob: 3.3.2 + fastest-levenshtein: 1.0.16 + file-entry-cache: 8.0.0 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.30.0 + mathml-tag-names: 2.1.3 + meow: 13.2.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-resolve-nested-selector: 0.1.1 + postcss-safe-parser: 7.0.0(postcss@8.4.38) + postcss-selector-parser: 6.0.16 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + strip-ansi: 7.1.0 + supports-hyperlinks: 3.0.0 + svg-tags: 1.0.0 + table: 6.8.2 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + dev: true + + /supports-color@3.2.3: + resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} + engines: {node: '>=0.8.0'} + dependencies: + has-flag: 1.0.0 + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-hyperlinks@3.0.0: + resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} + engines: {node: '>=14.18'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /svg-baker@1.7.0: + resolution: {integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==} + dependencies: + bluebird: 3.7.2 + clone: 2.1.2 + he: 1.2.0 + image-size: 0.5.5 + loader-utils: 1.4.2 + merge-options: 1.0.1 + micromatch: 3.1.0 + postcss: 5.2.18 + postcss-prefix-selector: 1.16.1(postcss@5.2.18) + posthtml-rename-id: 1.0.12 + posthtml-svg-mode: 1.0.3 + query-string: 4.3.4 + traverse: 0.6.9 + transitivePeerDependencies: + - supports-color + dev: true + + /svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + dev: true + + /svg.js@2.7.1: + resolution: {integrity: sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==} + dev: false + + /svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: true + + /synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.6.2 + dev: true + + /systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} + dev: true + + /table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.12.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /terser@5.30.4: + resolution: {integrity: sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /tiny-emitter@2.1.0: + resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} + dev: false + + /tiny-svg@2.2.4: + resolution: {integrity: sha512-NOi39lBknf4UdDEahNkbEAJnzhu1ZcN2j75IS2vLRmIhsfxdZpTChfLKBcN1ShplVmPIXJAIafk6YY5/Aa80lQ==} + dev: true + + /tiny-svg@3.0.1: + resolution: {integrity: sha512-P8T4iwiW1t95vpHVHqrD36Brn7TqFYCPSHIWk9WLJtYK1X4aDd+5cgqcAADIWSjf1/i5idKnpCh9mim8hEdRBg==} + dev: false + + /tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + dev: false + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: true + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true + + /traverse@0.6.9: + resolution: {integrity: sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==} + engines: {node: '>= 0.4'} + dependencies: + gopd: 1.0.1 + typedarray.prototype.slice: 1.0.3 + which-typed-array: 1.1.15 + dev: true + + /ts-api-utils@1.3.0(typescript@5.3.3): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.3.3 + dev: true + + /tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + dev: false + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + dev: false + + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + dev: true + + /typedarray.prototype.slice@1.0.3: + resolution: {integrity: sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + typed-array-buffer: 1.0.2 + typed-array-byte-offset: 1.0.2 + dev: true + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + dev: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /unconfig@0.3.13: + resolution: {integrity: sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==} + dependencies: + '@antfu/utils': 0.7.7 + defu: 6.1.4 + jiti: 1.21.0 + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: true + + /unimport@3.7.1(rollup@4.17.1): + resolution: {integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==} + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) + acorn: 8.11.3 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.10 + mlly: 1.6.1 + pathe: 1.1.2 + pkg-types: 1.1.0 + scule: 1.3.0 + strip-literal: 1.3.0 + unplugin: 1.10.1 + transitivePeerDependencies: + - rollup + dev: true + + /union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: true + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + + /unocss@0.58.9(postcss@8.4.38)(rollup@4.17.1)(vite@5.1.4): + resolution: {integrity: sha512-aqANXXP0RrtN4kSaTLn/7I6wh8o45LUdVgPzGu7Fan2DfH2+wpIs6frlnlHlOymnb+52dp6kXluQinddaUKW1A==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.58.9 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + dependencies: + '@unocss/astro': 0.58.9(rollup@4.17.1)(vite@5.1.4) + '@unocss/cli': 0.58.9(rollup@4.17.1) + '@unocss/core': 0.58.9 + '@unocss/extractor-arbitrary-variants': 0.58.9 + '@unocss/postcss': 0.58.9(postcss@8.4.38) + '@unocss/preset-attributify': 0.58.9 + '@unocss/preset-icons': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/preset-tagify': 0.58.9 + '@unocss/preset-typography': 0.58.9 + '@unocss/preset-uno': 0.58.9 + '@unocss/preset-web-fonts': 0.58.9 + '@unocss/preset-wind': 0.58.9 + '@unocss/reset': 0.58.9 + '@unocss/transformer-attributify-jsx': 0.58.9 + '@unocss/transformer-attributify-jsx-babel': 0.58.9 + '@unocss/transformer-compile-class': 0.58.9 + '@unocss/transformer-directives': 0.58.9 + '@unocss/transformer-variant-group': 0.58.9 + '@unocss/vite': 0.58.9(rollup@4.17.1)(vite@5.1.4) + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + dev: true + + /unplugin-auto-import@0.16.7(@vueuse/core@10.9.0)(rollup@4.17.1): + resolution: {integrity: sha512-w7XmnRlchq6YUFJVFGSvG1T/6j8GrdYN6Em9Wf0Ye+HXgD/22kont+WnuCAA0UaUoxtuvRR1u/mXKy63g/hfqQ==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + dependencies: + '@antfu/utils': 0.7.7 + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) + '@vueuse/core': 10.9.0(vue@3.4.21) + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.10 + minimatch: 9.0.4 + unimport: 3.7.1(rollup@4.17.1) + unplugin: 1.10.1 + transitivePeerDependencies: + - rollup + dev: true + + /unplugin-element-plus@0.8.0(rollup@4.17.1): + resolution: {integrity: sha512-jByUGY3FG2B8RJKFryqxx4eNtSTj+Hjlo8edcOdJymewndDQjThZ1pRUQHRjQsbKhTV2jEctJV7t7RJ405UL4g==} + engines: {node: '>=14.19.0'} + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) + es-module-lexer: 1.5.2 + magic-string: 0.30.10 + unplugin: 1.10.1 + transitivePeerDependencies: + - rollup + dev: true + + /unplugin-vue-components@0.25.2(rollup@4.17.1)(vue@3.4.21): + resolution: {integrity: sha512-OVmLFqILH6w+eM8fyt/d/eoJT9A6WO51NZLf1vC5c1FZ4rmq2bbGxTy8WP2Jm7xwFdukaIdv819+UI7RClPyCA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + '@nuxt/kit': ^3.2.2 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + '@nuxt/kit': + optional: true + dependencies: + '@antfu/utils': 0.7.7 + '@rollup/pluginutils': 5.1.0(rollup@4.17.1) + chokidar: 3.6.0 + debug: 4.3.4 + fast-glob: 3.3.2 + local-pkg: 0.4.3 + magic-string: 0.30.10 + minimatch: 9.0.4 + resolve: 1.22.8 + unplugin: 1.10.1 + vue: 3.4.21(typescript@5.3.3) + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /unplugin@1.10.1: + resolution: {integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==} + engines: {node: '>=14.0.0'} + dependencies: + acorn: 8.11.3 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + dev: true + + /unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: true + + /url-toolkit@2.2.5: + resolution: {integrity: sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==} + dev: false + + /url@0.11.3: + resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} + dependencies: + punycode: 1.4.1 + qs: 6.12.1 + dev: false + + /use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: true + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /video.js@7.21.5: + resolution: {integrity: sha512-WRq86tXZKrThA9mK+IR+v4tIQVVvnb5LhvL71fD2AX7TxVOPdaeK1X/wyuUruBqWaOG3w2sZXoMY6HF2Jlo9qA==} + dependencies: + '@babel/runtime': 7.24.4 + '@videojs/http-streaming': 2.16.2(video.js@7.21.5) + '@videojs/vhs-utils': 3.0.5 + '@videojs/xhr': 2.6.0 + aes-decrypter: 3.1.3 + global: 4.4.0 + keycode: 2.2.1 + m3u8-parser: 4.8.0 + mpd-parser: 0.22.1 + mux.js: 6.0.1 + safe-json-parse: 4.0.0 + videojs-font: 3.2.0 + videojs-vtt.js: 0.15.5 + dev: false + + /videojs-font@3.2.0: + resolution: {integrity: sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA==} + dev: false + + /videojs-vtt.js@0.15.5: + resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} + dependencies: + global: 4.4.0 + dev: false + + /vite-plugin-compression@0.5.1(vite@5.1.4): + resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} + peerDependencies: + vite: '>=2.0.0' + dependencies: + chalk: 4.1.2 + debug: 4.3.4 + fs-extra: 10.1.0 + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + transitivePeerDependencies: + - supports-color + dev: true + + /vite-plugin-ejs@1.7.0(vite@5.1.4): + resolution: {integrity: sha512-JNP3zQDC4mSbfoJ3G73s5mmZITD8NGjUmLkq4swxyahy/W0xuokK9U9IJGXw7KCggq6UucT6hJ0p+tQrNtqTZw==} + peerDependencies: + vite: '>=5.0.0' + dependencies: + ejs: 3.1.10 + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + dev: true + + /vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@5.1.4): + resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} + peerDependencies: + eslint: '>=7' + vite: '>=2' + dependencies: + '@rollup/pluginutils': 4.2.1 + '@types/eslint': 8.56.10 + eslint: 8.57.0 + rollup: 2.79.1 + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + dev: true + + /vite-plugin-progress@0.0.7(vite@5.1.4): + resolution: {integrity: sha512-zyvKdcc/X+6hnw3J1HVV1TKrlFKC4Rh8GnDnWG/2qhRXjqytTcM++xZ+SAPnoDsSyWl8O93ymK0wZRgHAoglEQ==} + engines: {node: '>=14', pnpm: '>=7.0.0'} + peerDependencies: + vite: '>2.0.0-0' + dependencies: + picocolors: 1.0.0 + progress: 2.0.3 + rd: 2.0.1 + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + dev: true + + /vite-plugin-purge-icons@0.10.0(vite@5.1.4): + resolution: {integrity: sha512-4fMJKQuBu9lAPJWjqGEytRaxty1pP9bWgQLA68dwbbaCXu6NBrOUb/3kMaUc7TP09kerEk+qTriCk05OZXpjwA==} + engines: {node: '>= 12'} + peerDependencies: + vite: '>=2' + dependencies: + '@purge-icons/core': 0.10.0 + '@purge-icons/generated': 0.10.0 + rollup-plugin-purge-icons: 0.10.0 + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /vite-plugin-svg-icons@2.0.1(vite@5.1.4): + resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==} + peerDependencies: + vite: '>=2.0.0' + dependencies: + '@types/svgo': 2.6.4 + cors: 2.8.5 + debug: 4.3.4 + etag: 1.8.1 + fs-extra: 10.1.0 + pathe: 0.2.0 + svg-baker: 1.7.0 + svgo: 2.8.0 + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + transitivePeerDependencies: + - supports-color + dev: true + + /vite-plugin-top-level-await@1.4.1(rollup@4.17.1)(vite@5.1.4): + resolution: {integrity: sha512-hogbZ6yT7+AqBaV6lK9JRNvJDn4/IJvHLu6ET06arNfo0t2IsyCaon7el9Xa8OumH+ESuq//SDf8xscZFE0rWw==} + peerDependencies: + vite: '>=2.8' + dependencies: + '@rollup/plugin-virtual': 3.0.2(rollup@4.17.1) + '@swc/core': 1.4.17 + uuid: 9.0.1 + vite: 5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4) + transitivePeerDependencies: + - '@swc/helpers' + - rollup + dev: true + + /vite@5.1.4(@types/node@20.12.7)(sass@1.75.0)(terser@5.30.4): + resolution: {integrity: sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.12.7 + esbuild: 0.19.12 + postcss: 8.4.38 + rollup: 4.17.1 + sass: 1.75.0 + terser: 5.30.4 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vue-baidu-map-3x@1.0.38(vue@3.4.21): + resolution: {integrity: sha512-EXjO+EAjrvx9z8hVBCgeFQ7+tEQMJzY6LC6nytsfnMLNqDMWjbJU8o5zsbBCcIPuONMPZnw+BdekAF2+lXA4eQ==} + peerDependencies: + vue: ^3.2.25 + dependencies: + '@yangjianfei/bmaplib.lushu': 1.0.0 + bmaplib.curveline: 1.0.0 + bmaplib.distancetool: 1.0.2 + bmaplib.heatmap: 1.0.4 + bmaplib.markerclusterer: 1.0.13 + tiny-emitter: 2.1.0 + vue: 3.4.21(typescript@5.3.3) + vue-router: 4.3.2(vue@3.4.21) + dev: false + + /vue-demi@0.14.7(vue@3.4.21): + resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.4.21(typescript@5.3.3) + + /vue-dompurify-html@4.1.4(vue@3.4.21): + resolution: {integrity: sha512-K0XDSZA4dmMMvAgW8yaCx1kAYQldmgXeHJaLPS0mlSKOu8B+onE06X4KfB5LGyX4jR3rlVosyWJczRBzR0sZ/g==} + peerDependencies: + vue: ^2.7.0 || ^3.0.0 + dependencies: + dompurify: 3.1.1 + vue: 3.4.21(typescript@5.3.3) + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + dev: false + + /vue-eslint-parser@9.4.2(eslint@8.57.0): + resolution: {integrity: sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: 8.57.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + lodash: 4.17.21 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-i18n@9.10.2(vue@3.4.21): + resolution: {integrity: sha512-ECJ8RIFd+3c1d3m1pctQ6ywG5Yj8Efy1oYoAKQ9neRdkLbuKLVeW4gaY5HPkD/9ssf1pOnUrmIFjx2/gkGxmEw==} + engines: {node: '>= 16'} + peerDependencies: + vue: ^3.0.0 + dependencies: + '@intlify/core-base': 9.10.2 + '@intlify/shared': 9.10.2 + '@vue/devtools-api': 6.6.1 + vue: 3.4.21(typescript@5.3.3) + + /vue-router@4.3.2(vue@3.4.21): + resolution: {integrity: sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.6.1 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-tsc@1.8.27(typescript@5.3.3): + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.3.3) + semver: 7.6.0 + typescript: 5.3.3 + dev: true + + /vue-types@5.1.1(vue@3.4.21): + resolution: {integrity: sha512-FMY/JCLWePXgGIcMDqYdJsQm1G0CDxEjq6W0+tZMJZlX37q/61eSGSIa/XFRwa9T7kkKXuxxl94/2kgxyWQqKw==} + engines: {node: '>=14.0.0'} + peerDependencies: + vue: ^2.0.0 || ^3.0.0 + peerDependenciesMeta: + vue: + optional: true + dependencies: + is-plain-object: 5.0.0 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /vue-ueditor-wrap@3.0.8(vue@3.4.21): + resolution: {integrity: sha512-U1s30pKcz8rr6v2F2ivnomOf1vF1N+n+aNClas4jXfiEf4E5FEtNwkFJBugcyf2VTRFK0UVpx5WspX5nwmImYw==} + peerDependencies: + vue: ^3.0.0 + dependencies: + '@babel/runtime': 7.24.4 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /vue@3.4.21(typescript@5.3.3): + resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/runtime-dom': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21) + '@vue/shared': 3.4.21 + typescript: 5.3.3 + + /vuedraggable@4.1.0(vue@3.4.21): + resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==} + peerDependencies: + vue: ^3.0.1 + dependencies: + sortablejs: 1.14.0 + vue: 3.4.21(typescript@5.3.3) + dev: false + + /wangeditor@4.7.15: + resolution: {integrity: sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==} + dependencies: + '@babel/runtime': 7.24.4 + '@babel/runtime-corejs3': 7.24.4 + tslib: 2.6.2 + dev: false + + /web-storage-cache@1.1.1: + resolution: {integrity: sha512-D0MieGooOs8RpsrK+vnejXnvh4OOv/+lTFB35JRkJJQt+uOjPE08XpaE0QBLMTRu47B1KGT/Nq3Gbag3Orinzw==} + dev: false + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + dev: true + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: true + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: false + + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: true + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wildcard@1.1.2: + resolution: {integrity: sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==} + dev: false + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + string-width: 7.1.0 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + dev: true + + /xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} + hasBin: true + dependencies: + sax: 1.3.0 + dev: false + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: false + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml-eslint-parser@1.2.2: + resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} + engines: {node: ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.4.3 + lodash: 4.17.21 + yaml: 2.4.2 + dev: true + + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + dev: true + + /yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} + engines: {node: '>= 14'} + hasBin: true + dev: true + + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: false + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: false + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + + /zrender@5.5.0: + resolution: {integrity: sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==} + dependencies: + tslib: 2.3.0 + dev: false diff --git a/yshop-drink-vue3/postcss.config.js b/yshop-drink-vue3/postcss.config.js new file mode 100644 index 0000000..961986e --- /dev/null +++ b/yshop-drink-vue3/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {} + } +} diff --git a/yshop-drink-vue3/prettier.config.js b/yshop-drink-vue3/prettier.config.js new file mode 100644 index 0000000..b014bbf --- /dev/null +++ b/yshop-drink-vue3/prettier.config.js @@ -0,0 +1,22 @@ +module.exports = { + printWidth: 100, // 每行代码长度(默认80) + tabWidth: 2, // 每个tab相当于多少个空格(默认2)ab进行缩进(默认false) + useTabs: false, // 是否使用tab + semi: false, // 声明结尾使用分号(默认true) + vueIndentScriptAndStyle: false, + singleQuote: true, // 使用单引号(默认false) + quoteProps: 'as-needed', + bracketSpacing: true, // 对象字面量的大括号间使用空格(默认true) + trailingComma: 'none', // 多行使用拖尾逗号(默认none) + jsxSingleQuote: false, + // 箭头函数参数括号 默认avoid 可选 avoid| always + // avoid 能省略括号的时候就省略 例如x => x + // always 总是有括号 + arrowParens: 'always', + insertPragma: false, + requirePragma: false, + proseWrap: 'never', + htmlWhitespaceSensitivity: 'strict', + endOfLine: 'auto', + rangeStart: 0 +} diff --git a/yshop-drink-vue3/public/UEditor/dialogs/anchor/anchor.html b/yshop-drink-vue3/public/UEditor/dialogs/anchor/anchor.html new file mode 100644 index 0000000..a6c4066 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/anchor/anchor.html @@ -0,0 +1,40 @@ + + + + + + + + +
+ +
+ + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/attachment/attachment.css b/yshop-drink-vue3/public/UEditor/dialogs/attachment/attachment.css new file mode 100644 index 0000000..e9d11af --- /dev/null +++ b/yshop-drink-vue3/public/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: 13px; + 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; +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/attachment/attachment.html b/yshop-drink-vue3/public/UEditor/dialogs/attachment/attachment.html new file mode 100644 index 0000000..1a52bb9 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/attachment/attachment.html @@ -0,0 +1,60 @@ + + + + + ueditor图片对话框 + + + + + + + + + + + + + + +
+
+ + +
+
+ +
+
+
+
+ 0% + +
+
+
+
+
+
+
+
+
+
+
+
    +
  • +
+
+
+ + +
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/attachment/attachment.js b/yshop-drink-vue3/public/UEditor/dialogs/attachment/attachment.js new file mode 100644 index 0000000..30c3706 --- /dev/null +++ b/yshop-drink-vue3/public/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) { + 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参数 + header['X_Requested_With'] = 'XMLHttpRequest'; + // HaoChuan9421 + if(editor.options.headers && Object.prototype.toString.apply(editor.options.headers) === "[object Object]"){ + for(var key in editor.options.headers){ + header[key] = editor.options.headers[key] + } + } + }); + + 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; + } + }; + + +})(); \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_chm.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_default.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_doc.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_mp3.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_mv.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_pdf.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_ppt.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_psd.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/fileTypeImages/icon_xls.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/images/alignicon.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/images/file-icons.png b/yshop-drink-vue3/public/UEditor/dialogs/attachment/images/file-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff82c8c488f53a7aff67fbe39742e3321183eca GIT binary patch literal 44070 zcmZ^KWl-E~*!AM>P>MrwcXtZK-6>A7;_lYs?(XjHUK|#8celk|zJ1<*pUvFaWG0i$ zZgMU==WLjgf+PweJ|X}BK#`UbR{;Q^4Z+7h;9z&iwcDQzbJ014~A4FZs! z`4s>_l(+o;T}jEp&e_h%!p@#l`ulfMdq+DnOKVdAzmRmnE#@0+#a$%isY~5P&oqNeW1j4uGM0 zfC>X-ZyzAHQsf&GbZ<3;zjia5B&2^A48S#7D;7<}5a6FC#xM>b<$(lzC&rq9B9(*6 zWtr{SE;FzXYL$Wj^a7J6QegB4jBshu%@Fp#Wu|11V@VxB z$xR{y0Qk={|2}wxV~-B^cMi>ttU-5!`5#tScHe}^uD3oqBO##y=n7MyRfB_rMJW4W zh+3B(tFoVfRSkf}*0Ub_8bYoP;;ga^-?2yu3v(ue>NAtDme1*LIb7t3CR&?ozj z-FAfU1NiL6n&%b3AzdV`s<+_pyMvLfYqd)B5fEC8)%Nj-{9`!C?>(A!W|yN*mjNgI zS}Uwo>6`qpN1IBVIN4~@F6N0J+cin@J3@jR3ZODru~(rPt_f(}>w5_S8G))b>k1I@ zy=9EVM~VZWn{%*vJOTg-JnfAf6jQS1SsK{13ab z7d7)AQD-kMq!FyR2r@;l0J<3LzCR&i-q&PNJhfiFW$30_DEwTE^d0oZf2=$xN86aX z0cZBOu!di=`@VJtBS4Fez+)Ma@r7a-M=yVygvU*bhW=(G#S!mcNO}^At^93p#IX>v zOzd}@o)q~Fqa!wNl&;82?Aiz^TliaerzC4)K)o{5Jfw?ATPX>C_)xCXj57zCo_}(_ z)eL?kv7mo*e#wmNv5PanCp_B3e})y+EONz2H!?)RFiZ=dYWR!EfflDm45tZ^7Pl)7 zL2tGZ2%Z8m!XN7#UOy1M&-zbntfZEl*7s7%bMi*ac6d#Mzk#fM)ZY?H6&oo%F`ozA zjrr>o26eeQIaGDAqKo{k(iKXS1D^HYV z&%>98^5y7A+vK_`F{_4@VR5*mQ%+=j`3@{(ELfOMw=}nWv|v7QZb#VoODvHxoib~6 z40m#L^7qaS86_Cy@353H4W1RA7hcKN7Ch!Oxnh{Pl(Z2wmL)cVH1kxnR6BJox(7OM zoVYQ}B)%k#B;TZ?ay4})b>Rh%awN41b+ih74WHs4>J3VJWeD?MDi+F!)H}+!swY+4 zRAQ8-lnn~H4c`B}n4r`L2mQzmmMTy)X&J(cBKtDLW_qn9w&=E?rxXKd(H=KoQ7|K2K;24p z8DhT2>5eO8R%u6QT*!mwVsTse9k z&AX6km2K3$(z*5)6;vdVIVcms6)~K=n(PgPNtRE3tW4Dq((ur@*I25QUerBfII~&Q zv{oX}%s|fI%K$c)R%KKTxMtXFVeewc(9Y7{tJ_4J866qxRVz008{>k5J{7O>Oc?~Ddi{bR(YvchtzC!ly{wXqlD^y6 zBW8V9eQo{ME@H)oOsecf7Mqc^fuGx5Krcf+AwkoZ$rC7{AtA^d&zz9%;_h!-g5Bi4 zi@s^TaBtbK{4c=wn5Ui{kDD*o3NVHc{~!(^x&rV68lbG8NTAc8i{Ln6qF_2;nURHX z#E=nCv`HKj?0Ru;2%b&Y*UcHyXK=>gvv70>URcJdrIGZ& zv%&B4{ly|!@rTP0JA$GLy+<5gd>i?#yoUJVX64k1!wMsBVrF7yfeMOcawGi`OAAel zq8UAX0?NL}q0JaULde+TKKZlL?HZ1Cklai`qe`_B>K8fYQhN8FUw^u{N_9!;%(HKq zeVjg%BmMc}-4$D_)LPrH-0H4sBgetBZ6RVy|`!9FPt63kQ1+YH(U1?WK zMg8Wt$NEjQ%HP?dqVM#7G&z#W5=Viy)pt5=COAe(ztlm$Qx<+|_|f4e8C2R=mR3L2 z{%Aei)l@K8@V@u3SzXy)y$&5}pXk9q>aAjLuRW#XyvhFc{)w$Lzm|LWGbs=HS-u{Z zO2z`4T*169&~aoz7Lh)YWOvJ_FNk%|#ATQ>Ml(A%i$?JJdH+wsUdgYL>?{Rg!TGdx zk4L$;G%G!2y)N_bQ`y3}&X;m629Kk+n@2HvSDp5E-yV(EC|hK!1gixleeK_Oq-uWJ zotZuYFEjw2Cs?lo`StM8|9FKDNJjURQUy*ArVhP{SU{n}_CRD_W1kHpWpkeyk{amfYpALLOn zStKL`DEM7Bza|rQO6p6nrpA0VK0VHyDvq|^cVA_vwBDAlke(x^da6CjZXH1tWi@=m zQ2W+!7fBk;o5+XK?aYhGaLKgdqtKD}#~brw;O#5rYz{lP z+axuSQjrG$JShPH|Gxmh^Cx(J0sy$M005_k003Vq0Dx;3Z!q`+0LW9778g}>Up>!q z%OqA`818X9JXv!~I4^#bp$o+HlteG2h5Qo^BVl{OZ~WH1JfHK(hG9m1m#ofNC7fMOo#WHM)(*226BPQ zaDC!@gNgYF}!A`uuC>TWxPZHV#!u5FBMP#9J^f4_MCmzH-Q z+(+T2mSZHryXo&f?X0YcLvv`#GDg~8iY-+%G=?lovbeVSUdt2Q!hOxM-=EjBCi`yd zAKpDD-2hMf&CL7j#4_4fZwIL}eHR-CjOKIY!e7*Lo)?9epSK@x&kpDZdv0?`?zc;u z@k+W9lan1^PD&mtvWv{Ut4bZW+8#pP0)+tSOv25_^~?ruK~O)Kp)NEhJwX!^DereU zz%5o!Z9Q%6H5?*?W2#Nq>_~}ofFqa978DqUr|$6 zXZ3kO9vd5b>L>BdxfMhpQK)&| zGB3FJ=Lj%!Eq;U-lQ4YK``O zObWhQH(xCOqa7xhN>CJ@NGr)6>sJ(*@$&23xy|)LPY-76&&95{Ld*K}NxtDtdWSL` z`X#DX6$(Mo(WLK!zg)&F=YE;IzF5eQclNa5irB zxviEL`_%#Kee`H*N<&iie(Q}v$sLab$-0-%8$mHWjZx)#dAma{9A{%XyWwTeh5_8) zI4!aPV#lrCNu;|qO71E>Nk*TPzOo4-6AWD3m0bu=5YxPJQyeYHV&M=OB`I%d=ua|1&%51A@JT(ZSPI z+QZz|tWe-B5}V@~0|FC>MG)!|#UL;xv~-S%aea5-uyMo`liB4HE-!8USiTCp45%uu zb$gtBnd2Bg@@KCLC?JC~83LsKO8^1pYL!J`#$o9?anxJ87Fs)n1Sk{G(+OJq2$}3q z0GGWyftR9ldKT3xaG{t`rbB*fq%w=X1u(xLEm&1^Wvi3-Gs0TD>xnN``Ky}fJG*<( zRwTLm5)^n3=9TZ`6IH$ji<+CmMMXtr50m)4O;}a89frzha9xNq0-I*J{PNMrF8U^kN+K9C7Pp5zDV+I~Esd3d>XnZ&^q6&+BU%;`H1 zxn!trdi&_HK9)dGL-{3%si~=}De3D+5ATIRF`>s}A_b`-B4|k!s*HY8V#>z7Rr#|` z$lIvnsH>}MB}>p?JG!{KW?xN{qrv_Cw{2k8difGFaA7o}A`t_@;xRx%Lrr*8M5`ji zecQ_1VN-(*eskoB2xIkIIpIToP_qctfugQ!vY*G<^B@00hyfCkig!^@(Wu+Zy_&VW z#^E}KIWCLZmHJ)n%%Lc+8LK~V04Ca0$ruoM4)e;A^4<4~KMk}S%qB*;H=O4VKRBA* zdR{kt=A>m5_`pvaQORW)u#liA)OG?i__(<_%JJ*=q2bSG9c9$)vFGa1x>stSi2SC+ zZp3V3W5dC5o^i8m5>wT6Jwy*fOVIpRDHI6SwFkoHQf1Voh}OJxy{YVbk3=)x5u8(_w3s# z;ZK!ZE1K7o86nhz`m|wUFYEWFC4H}brIqmjV|u&`i+;`}U8g54etcgqJfk$6&kQ(1 z0=S=M04$-~v?*|*a9h8ID}WQnWu0F{9`3UrW zd=)m@8n$lG%9-|15GY{y_d&{0 z1jlR17#XhS$`VFG1c>Azh?YdoU^I{ydiM?9)w6-q@A3IL_Qk~o=ymX-#bA12;rVaP z#$AvdL|)#p!7w0I3}yaYm0*57pMY^O4N?yiBwKcOfssfVfxC0<$tqvrxb-olsQbdy zaQ;#9picnzD|i5C#NlAK5~%jaex4LF%uxGF2#N2Lc+1*5=oQrSS%9nWzSIBip{$T! zzFD19XRZdNCQ0ZpFi-Nf4QJQ+e3(J)dy|l}E(F_$+~fW7>{g=aD~VB>R*PF0M48n5 zd!d}SW!({2VYO5(c;9|jy~c)}{3WI!FqzRa33q za9H>OxivU81=30ZpE?;#mSvWQGa9;s?8W_DOzn0j3?hm9T|Sn|XVY$*HiV}ra6J&Q z^}6{O?frH=9D*H)H?bExXI6+ON~hKIdm#~A5bqCg4ZN@S32a-9fJ(=QBDFX`HdYgi zz~cWwF#a*z@LzfEeoN->410UMV~B=Kt|QaPhR>ZIw{4d%QxpM-x@<11$i7$oKSRaO z2e=V~n3aZjLA)Ub?>Cy69*f$%Q@8G2-q%Pud)zIX|K_GDA$mz@vhvS7%S^Q|y_e1g zUnSsd>1mmJ@(UXi%gf6Phh-0CR#go1&p(sGKQ+F}80WJj4X9y84198t79a)uw0H_s zfKHgGa|L`+Q&Uz}7WMM#sAf1T&iS}W(PRdP9HsD6&*vKZvemvZL~0&~IIB(-FFFl5 z_Bq1`ZzW5sE&>Zv5ntYHi)7j!Xf;m%T?FcW6}stu z?5Z*7b@LNVW$oIB1*0I|>zZd3lZ>;aSyffFzuU*_o;*gt@k6ucWnqcA^QuqP%F3#R z@(Z2F>Q}}h3d}I%(ips|{{SI|@mGr>xi(FjIOb^Uam(*>*js4pbO5ea%&EgpaMovf zSw@UHE>)B#^W)!j_v_{BF@GBoN^%!+L!$AVZYJTUpD5w4vgd0>TZe`D`74m$XNd5Y z3tD<@mlnsy#9>v(^SHTCKT*#+qx!-EFTH-F1;p0VD(=&yo1eI3NY~}P$9tu~o4e5a zNyYP96u13BQqD+M@hnI6%l>d_dF6i2r%n{`z(o;UhGMh$-E65%By`7TUzg_;v7`L;)DQY!U5SSk4cFcSAt#4uFjQ|sZ4x4+;+?DSQfScf<5;qb9nSd$i) zm6hF@kbFKp^lMZLfOaF8eFH_2mFZ#ql>@@dpy`SW+B(aqC+_!0eGt`xWiUwt(WS`4 zjU+H;2SS}op&%k@zZBKaSyT{e0pb6$I9OdoKilsWjbn+yql>u*$mH&1LDnJ2=XN-I z`;t`I*vv01=AZH19!=FeyuNR(w!6^xUi7;P!vRE^tXJx#g>pbsUXPdW0#|FSQonwQ zrq29gNAN;;5RZST_kO+!^X>Um>~I5pyeTzNQp2+s$E<@9F)s^yrAGh{{qa`g_kMQU zUcHqJD9()d(Zc^uzDo3HP0RxC#Bv%G<73@RI{vRTrJJeLiIG?`0ZbT5aft1FO)oY{ zr=r)a&b)N(_*|QwzGB_paogodoHE<>0g;@Yo!JqVce^#N$^^Ko9X-B&-t|JEdFz9r zAMlHRj2iAIKfbgVt=U(&=zpktX;2JM#YkjBdQY1XPxcV#_v^QlMP}>Jwmt8U4%1TL zAeEMt#WK%wp>q2?&@WcVO21tnRi(PUuki~Y`M5GaUop9DKW-lyBac3y7H$jL=y1D@ z`g}LrwCVxnBbAm{?}FQd{PJ?o=gBO7l9)Z@!9QOPz~$n1m#~r!S6Mk?&sL1QL(&M1 z&04IK7;7%s?sR1RQlrB;87@a0GwPsHyaLX5%|C1tu(jNSt7-X~Dw>)h#g?n}2f)w! zJHOA@tUX1Z9fD;ebtwH2+yjWcn$$njoQWK>xC`az%}Kr@2mzrXmhkfZRdDDu>zizl zNvbE7D>9`OqEXEUp1Fm8>|3>%zV5hN?_7C@fe4iqzrK3ba1#B|XA832)J#*Ur*@dm zYP=-t)gPdF^)9r;Z?E3FeX+2#{mw5gOPs-Fqf@nZ@$mxA#yBt^Ja^l`K z!QlU1{b={;j_wclaSw3Y@A zyS$!Pru>o~SE;j{zp1M)c)y<+=m%xpb0hhWV);5RvzBDts7PC;aT)bNJL?%aJ+%{B zY2oI^lghmT4(uXAFefxFFyRYh`* z*2g6e8%J)CcMTviyg+)EjWAR;PokT~e%?bjkI)oKogD!0dP(9!8d;3X8MR>j*$xd~ zz$TI!*i`yd7Y8spZyi>z(5O4ydQCm|^U|v3T?N3_D(kfj%dc%lQyj;}wzs#B7F+t- z^arD0KHZY)b5UcxS*XSoBRK2zAKlNcuBXE)$!GC3Egm@fnA{#t4A}$J;0n&)ij5C7 zJ$+6zi9F{qaN4V5mVG|<+P0i@SKy}gs`X#7`&o`H?D{op>h@zLMos35)t%=ULz$S$vc zx-K`$lIpELY7IQjvpY)PcT+;-nGJk3wOI{7HR&x+rHD4r_w_GDN3Az{NS+I_V%$tA zNG-$Py`qCmSR+oMED75$k24|`Wl#5Xtg2(Iw%pIET8x7ZnIx8h5a#sKS&fA)1p{!y zQ3TvW{`^~E7Z$k>Dus;zuK+4TI+mWIqNK@cCZ_JY`bIZM!$HBgNxs*ONCM%2HQSE< z2Q%gH6{jz?b|BkHVG!ZR)o@2?dHI;fKabnPn?dHykr=-_)z!5N7X=S(7$n^4?Y`To zJb>T*%k3gu1BJ^Remjhx&FA}Xx05@UJ?oOv(w3_parUY5 z8Qe3=%Tjt5`_F};?)_cI=Gm9m-MY%kl)tU4l%1h4ta||LsOqiKPhIfPV*bS{rQZ=l zM}JUeey##ReO93B^5D>-s}soYq9L^4%K2~ay0)bIW1z`uNyzy)FC@Dk&_IE606|{0 zT+2ad@JtbSm|xP>&77zAok>3?qEs3BQGw~RSX@eF@neVTps5BYOnkY=Pgv$pVt=f* zR-^)0Ge&7y`wJ*cv`7ywwjA}!Vly4H?q{jqYIP{kkURRh&t7aQ=y?-HjjHDVJ3R5G z;%upg#M=M2T;|_eO36+nT@E`gQ&Urqn4X)L3^`$ItYV{?&DH+Ptg7BuM~HL-pS>t< zhTN^3e~Ixcc~$)kK&rIFq-QTULpcenikK{Z0>`Et(HY4b&!G`&>re^uE=ZO#gqn;l zueA_e=Hx_p-ueg3uphL*+oD>u_lw-q!9>RaqYL^;floyG?{A<8-$LsPyF zvVBGb!>K$T_*IPZnO+ZRZzq>MET%HqvH7D3ttUu1N69~ZMSb4&0RloK^cuwd>N&0P z%)Tc;UB?r+n+MjMrvY$pRlXZ1Ni2Jr!)8PE-)&rmED7D-5IDHF>TT9ETrZau6cy2Y z{Sb&_LL9KD_9?0+cHUL0JJt!tfb@IYvRH-#?^=DRsePzC-_j;V@WOwYb30y=|3#tr zhgYy$O&YZ1bnOuZofp8AJEx+Sn8fNbh7E4DopxoJyPVH3Bnht_U}MS3+yFlU8uKkN zB-^eE#2EO~hHq?;dM|2n#|#26E(b!PL$LC`Ucr+G)@~)ow^IpXA&;vwrOX*8k|B>VZ z77C>k4hM|u&Ne;I7+Jq2Y`LXl-`>x#RW|+#^%GvA;uQMKk=)-%sfbj?9Cnhfc47cB zj0pvyx32RUk`@xn9`gDd&r`kb3AJu;48T29x;K7#EG`*tkam8;KX zyG}y`@W$PPF-c{c06q*=Tri++y*{6IzGAMm6}GTVdWMYYd(O$S>azr!7ESQUkoa)e ztz@%L(r8gRbS`_w+pIK(@BW<*43>2(K!=)@1!uV;(<1rd%hz=>4`4SagkW}zqS@(! zzBoIO!*wV$eDf&K_2-}J)X7U9o6J;_%=n<8qkzcoK|`_KiL@Nq_f14NE6JYkt&165 zk+47UY_pIXiS7^ZUh_lNb9b)JiYprI`;vWLAIQX^K)kQWs0JQ1pHD~M$1{0Tf`dJo z1U?1VpO1R>AI;K)QwZ$d2wT=~kXCgr?!U`VxC;=Yfv;ik^*hSZ>ilIn=~Q7=4juq< z_Hcz?aWc5qdShglc&!guy+6ISO6nYhm-IhZemyTHe>pun^RU{3O;5*XMGo6KDyXW0 z>1Sb)|7*b!Xe9IT(9)Bq9ymv^&0ZTJ_);tmgzsSqKYFKaS10hEewDS zfs2$8`A#dQN1#iZg+>J-Y)T9qAkMs!4c2##A=$thLEFGaRCC-kXQCmk+xJ5N!DhsOXjB}Oyj=>pm)cn;|YeK#}3x#?o1b_keH^Yxs{ z7JLmDenBOs4;)z>o*{XWy?IO*?#wawd+cuXX&a*eWOXOgYLE;9I-wRMRhW&ijDCfX z27Ne7-?(kpcU;tyH5{{rnS{Nk9fYVb>*?uff;PK497sJ`+5LmDSxoNRK|h5(a+hAR zOuN0`dDq?VwY86;esq0JmSD;$;|g&zb6MwSPrl~lZ;(4Fh$+4RGN@W0GkjTIa3M-5 zMr+eAH1bcL9S_>_LGgdJ)5&gPK5FxLxG&1SF2Ywg?FzwK1w=+`dY;&hAt_8S!DgO< zc=idu6T5@jGxro&O)=NP_S%MuyCc7YO)OPkf1X@)eX*kVDKigszB&0gE#%(7_8byl zJ623HnwJ;#YTN%yvVX}BVgMj&J3BkqTFz0?(b2W;e#gDNsj$0RPsg>iu{=CyS3H_> z+Zt{>nRCh(w!Hae`}B77v@+#8y4lJtYYDFJU#hofBbW~*g`a7ubK*Nd_s?&-k7-uV z@1V>5L0p?yRSSF|nqWM*B&7JgUHEe7nfGU$&2SLKEJbV`!O3sWxa%?!7R9{8tX7$Bc*(LyD!9lL}%-nBMhsMWqV*3IA<2e|9dg|v@;ft(4T6{l2DGh*X=fSx)d{|SAV_t}d{tTKXDFC-< zY#&|{Kbf;k26bIUCQ+@_=*k~2ilRXp9ahxC!(;KC5|AE9=rXT7EO0-s+LBi6f%-SL zd`3zFj(ta)-LHmA+Zi-k0H|xRZRVyLR$*a_KkZcZ#*r2CM z@W|&V{^E8Lwp$o$nHL=}#3q-RbV@MUX@!7h&@RNQ>~cAk&M}NwA~#-1ZXlRulNT#U zJ%*Tf(3Aq6SV(5TVWjHhbjxHYYo-^}X;^4V=IBi{d2o~2R#Rgd-F{yE$Ht@R~q?;S?ZD)h$Ej{(~s+<{<+?yfsgL_Ib1JkxDrG^3R*C(Cy=O| z2lzn|V> zD;U)GOvuhA_Vo00-wmVIsxyY+cRk+@C6C@tSM-VW6S{&Y;Bxoaf;qZ5Tk{2me@6pq zOUlcm(ABx768U?t0eS+@25 zFj?h5DmoN^a{|!u)EoKuNa=C5)&COqm0B)?3qf8rwH$>KJ3gAHa@P?VHyz4d`kfby z>!)Gs0I3eF1Mu*~Qux+VMk$ILz|?EwvWsNfi&G`Zy^3Csv_mK1Nq3zR{kPmQ_ZKfs zC}+O$#E7Aw)^#a`C8;x+V*s-R1WOp_%f5-9yV4(Kubg+?Ri{HZOi#OUZB#}CyRS)c z$)3=ihVfd4kp7|vZ{@6NNG~(+y;8I%m#2r5!W$A4n4+|U>nl!xR8|vw9GnAaNQh4T z8oQI(qK2iapO1ob9K!D(k3GV6T@{)&Ops}~aDl#o=!q#fFiJ$P^Qwv)zta!B*dXXk zP0^A;d>;CX-Pi0^d&4r0wrB_xWfZe)&!7VPhcciigyBcO<*;Ji%CW=_bE0sM8`AP+ z$URh>Fu7SiFBO}jw>uV~ysj*$|NL^pg%KhJppSo!xK^oxn&b^yBe0>JZhI0Hvmz;s^eL{V}p- z^?Fhx6z_S$s^s~=fBLfH(UtvEE{%ie{;S9Ea6WaX4|F#pkgr3y*Nwp}|4e7{eenFO zN{;nD@<*4rJQgDypy75|A0a1fA7IG#h@(0+e{HI!p7f|Q$${MN)yq7L(x%VQFCL~3 zNR1S_39utZ>E$)hPG|;^81M?%7}(w40rkV*r0T)c8aW?7zn!(6-4v3-y(!@sXYxM5 zcgHC1=hIQ{L=^=hgF?+0!pz z&N;SnUe}LWcY+C6k$04L(mb^t~=zI;uK!8TjvLx<9)>P8*y#eS6nnR^s{<3Lb)KBk0nx&d-mWxCWQ( zSTsyfrmPD7)JN!(c#cCKbaLYBwY4dTvj6Z4Z`zm>%6kT7uHEGA2_Z2l$w(_h6sm|% zxi1omA=(2Daw5*1F9kO;A&`3xif-^d{`28Ta`jqrahEH7#*{x@30{%6PY^=JoXnY@ zK_Lx1qp;I;5-rqGnRM0EFMbUwq(MvFq~nd1pyhQJ2_%&)w>;PmkPfsh<57%s{3U_^ z8=Z=uP_}F*40h%RUT zow0tW$72?}c{HK!YZ8aPj8G`L=@g6N8> zeL-GZ8I|UTB_xyOUj5PMjhBK8F~c!g$xdEU=e-=Y`43$joGZlkDl)#0k4;~L2Zy&h zFgM~P4klXCXSygu^+$db@$wWN{1_iG9-e|r{B_B0{G+Ej#V+4qegGKX=)!rEAnX&a zMG>r0Yw@5AV94~vTu@gBN20e-j`?UjCDLNG-Ye93Vv;41vJmrEAlt>%PTRv{y>PyurV0F{Hi#$Spk2 zYbL#R=gHM3s~(c5AHpsxrYWWiZi`-aOjoE33?Xpi<~_b>!Y?m_-jA{;nZh~mFM_;& z)ccYKJ*Z>>}(4+({V2$x1vh_l#YYazOH`C#od=09l>k@v@-%Isxfp-)-V^ z?@#+cK3c9`5$$tYR$?0={_SWV(gVrkAM!nq+BmPzf-H$}^~C6-17l9tegjTJ=n>

    *vGSxI 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 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor/dialogs/attachment/images/icons.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/images/icons.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/images/progress.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/images/success.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/attachment/images/success.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/background/background.js b/yshop-drink-vue3/public/UEditor/dialogs/background/background.js new file mode 100644 index 0000000..9d63bad --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/background/background.js @@ -0,0 +1,376 @@ +(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"; + if(contentId == 'imgManager') { + initImagePanel(); + } + }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 initImagePanel() { + onlineImage = onlineImage || new OnlineImage('imageList'); + } + + /* 更新背景色设置面板 */ + 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); + }; + +})(); \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/background/images/bg.png b/yshop-drink-vue3/public/UEditor/dialogs/background/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..580be0a01dff4c70c72f78a3f40186660ee8eee0 GIT binary patch literal 2810 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'+ this.point.name +': '+ ( Math.round( this.point.percentage*100 ) / 100 ) +' %'; + } + } + } + } + } +]; diff --git a/yshop-drink-vue3/public/UEditor/dialogs/charts/charts.css b/yshop-drink-vue3/public/UEditor/dialogs/charts/charts.css new file mode 100644 index 0000000..cec35c7 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/charts/charts.css @@ -0,0 +1,165 @@ +html, body { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + overflow-x: hidden; +} + +.main { + width: 100%; + overflow: hidden; +} + +.table-view { + height: 100%; + float: left; + margin: 20px; + width: 40%; +} + +.table-view .table-container { + width: 100%; + margin-bottom: 50px; + overflow: scroll; +} + +.table-view th { + padding: 5px 10px; + background-color: #F7F7F7; +} + +.table-view td { + width: 50px; + text-align: center; + padding:0; +} + +.table-container input { + width: 40px; + padding: 5px; + border: none; + outline: none; +} + +.table-view caption { + font-size: 18px; + text-align: left; +} + +.charts-view { + /*margin-left: 49%!important;*/ + width: 50%; + margin-left: 49%; + height: 400px; +} + +.charts-container { + border-left: 1px solid #c3c3c3; +} + +.charts-format fieldset { + padding-left: 20px; + margin-bottom: 50px; +} + +.charts-format legend { + padding-left: 10px; + padding-right: 10px; +} + +.format-item-container { + padding: 20px; +} + +.format-item-container label { + display: block; + margin: 10px 0; +} + +.charts-format .data-item { + border: 1px solid black; + outline: none; + padding: 2px 3px; +} + +/* 图表类型 */ + +.charts-type { + margin-top: 50px; + height: 300px; +} + +.scroll-view { + border: 1px solid #c3c3c3; + border-left: none; + border-right: none; + overflow: hidden; +} + +.scroll-container { + margin: 20px; + width: 100%; + overflow: hidden; +} + +.scroll-bed { + width: 10000px; + _margin-top: 20px; + -webkit-transition: margin-left .5s ease; + -moz-transition: margin-left .5s ease; + transition: margin-left .5s ease; +} + +.view-box { + display: inline-block; + *display: inline; + *zoom: 1; + margin-right: 20px; + border: 2px solid white; + line-height: 0; + overflow: hidden; + cursor: pointer; +} + +.view-box img { + border: 1px solid #cecece; +} + +.view-box.selected { + border-color: #7274A7; +} + +.button-container { + margin-bottom: 20px; + text-align: center; +} + +.button-container a { + display: inline-block; + width: 100px; + height: 25px; + line-height: 25px; + border: 1px solid #c2ccd1; + margin-right: 30px; + text-decoration: none; + color: black; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} + +.button-container a:HOVER { + background: #fcfcfc; +} + +.button-container a:ACTIVE { + border-top-color: #c2ccd1; + box-shadow:inset 0 5px 4px -4px rgba(49, 49, 64, 0.1); +} + +.edui-charts-not-data { + height: 100px; + line-height: 100px; + text-align: center; +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/charts/charts.html b/yshop-drink-vue3/public/UEditor/dialogs/charts/charts.html new file mode 100644 index 0000000..735274f --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/charts/charts.html @@ -0,0 +1,89 @@ + + + + chart + + + + + +
    +
    +

    +
    +

    +
    +
    +
    + +
    + + +
    +
    +
    +
    + +
    + + + + +
    +
    +
    + +
    + +

    +
    +
    +
    + +
    + +

    +
    +
    +
    +
    +
    +
    +
    +
    +

    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + + + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/charts/charts.js b/yshop-drink-vue3/public/UEditor/dialogs/charts/charts.js new file mode 100644 index 0000000..29c0c03 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/charts/charts.js @@ -0,0 +1,519 @@ +/* + * 图片转换对话框脚本 + **/ + +var tableData = [], + //编辑器页面table + editorTable = null, + chartsConfig = window.typeConfig, + resizeTimer = null, + //初始默认图表类型 + currentChartType = 0; + +window.onload = function () { + + editorTable = domUtils.findParentByTagName( editor.selection.getRange().startContainer, 'table', true); + + //未找到表格, 显示错误页面 + if ( !editorTable ) { + document.body.innerHTML = "
    未找到数据
    "; + return; + } + + //初始化图表类型选择 + initChartsTypeView(); + renderTable( editorTable ); + initEvent(); + initUserConfig( editorTable.getAttribute( "data-chart" ) ); + $( "#scrollBed .view-box:eq("+ currentChartType +")" ).trigger( "click" ); + updateViewType( currentChartType ); + + dialog.addListener( "resize", function () { + + if ( resizeTimer != null ) { + window.clearTimeout( resizeTimer ); + } + + resizeTimer = window.setTimeout( function () { + + resizeTimer = null; + + renderCharts(); + + }, 500 ); + + } ); + +}; + +function initChartsTypeView () { + + var contents = []; + + for ( var i = 0, len = chartsConfig.length; i
    ' ); + + } + + $( "#scrollBed" ).html( contents.join( "" ) ); + +} + +//渲染table, 以便用户修改数据 +function renderTable ( table ) { + + var tableHtml = []; + + //构造数据 + for ( var i = 0, row; row = table.rows[ i ]; i++ ) { + + tableData[ i ] = []; + tableHtml[ i ] = []; + + for ( var j = 0, cell; cell = row.cells[ j ]; j++ ) { + + var value = getCellValue( cell ); + + if ( i > 0 && j > 0 ) { + value = +value; + } + + if ( i === 0 || j === 0 ) { + tableHtml[ i ].push( ''+ value +'' ); + } else { + tableHtml[ i ].push( '' ); + } + + tableData[ i ][ j ] = value; + + } + + tableHtml[ i ] = tableHtml[ i ].join( "" ); + + } + + //draw 表格 + $( "#tableContainer" ).html( ''+ tableHtml.join( "" ) +'
    ' ); + +} + +/* + * 根据表格已有的图表属性初始化当前图表属性 + */ +function initUserConfig ( config ) { + + var parsedConfig = {}; + + if ( !config ) { + return; + } + + config = config.split( ";" ); + + $.each( config, function ( index, item ) { + + item = item.split( ":" ); + parsedConfig[ item[ 0 ] ] = item[ 1 ]; + + } ); + + setUserConfig( parsedConfig ); + +} + +function initEvent () { + + var cacheValue = null, + //图表类型数 + typeViewCount = chartsConfig.length- 1, + $chartsTypeViewBox = $( '#scrollBed .view-box' ); + + $( ".charts-format" ).delegate( ".format-ctrl", "change", function () { + + renderCharts(); + + } ) + + $( ".table-view" ).delegate( ".data-item", "focus", function () { + + cacheValue = this.value; + + } ).delegate( ".data-item", "blur", function () { + + if ( this.value !== cacheValue ) { + renderCharts(); + } + + cacheValue = null; + + } ); + + $( "#buttonContainer" ).delegate( "a", "click", function (e) { + + e.preventDefault(); + + if ( this.getAttribute( "data-title" ) === 'prev' ) { + + if ( currentChartType > 0 ) { + currentChartType--; + updateViewType( currentChartType ); + } + + } else { + + if ( currentChartType < typeViewCount ) { + currentChartType++; + updateViewType( currentChartType ); + } + + } + + } ); + + //图表类型变化 + $( '#scrollBed' ).delegate( ".view-box", "click", function (e) { + + var index = $( this ).attr( "data-chart-type" ); + $chartsTypeViewBox.removeClass( "selected" ); + $( $chartsTypeViewBox[ index ] ).addClass( "selected" ); + + currentChartType = index | 0; + + //饼图, 禁用部分配置 + if ( currentChartType === chartsConfig.length - 1 ) { + + disableNotPieConfig(); + + //启用完整配置 + } else { + + enableNotPieConfig(); + + } + + renderCharts(); + + } ); + +} + +function renderCharts () { + + var data = collectData(); + + $('#chartsContainer').highcharts( $.extend( {}, chartsConfig[ currentChartType ], { + + credits: { + enabled: false + }, + exporting: { + enabled: false + }, + title: { + text: data.title, + x: -20 //center + }, + subtitle: { + text: data.subTitle, + x: -20 + }, + xAxis: { + title: { + text: data.xTitle + }, + categories: data.categories + }, + yAxis: { + title: { + text: data.yTitle + }, + plotLines: [{ + value: 0, + width: 1, + color: '#808080' + }] + }, + tooltip: { + enabled: true, + valueSuffix: data.suffix + }, + legend: { + layout: 'vertical', + align: 'right', + verticalAlign: 'middle', + borderWidth: 1 + }, + series: data.series + + } )); + +} + +function updateViewType ( index ) { + + $( "#scrollBed" ).css( 'marginLeft', -index*324+'px' ); + +} + +function collectData () { + + var form = document.forms[ 'data-form' ], + data = null; + + if ( currentChartType !== chartsConfig.length - 1 ) { + + data = getSeriesAndCategories(); + $.extend( data, getUserConfig() ); + + //饼图数据格式 + } else { + data = getSeriesForPieChart(); + data.title = form[ 'title' ].value; + data.suffix = form[ 'unit' ].value; + } + + return data; + +} + +/** + * 获取用户配置信息 + */ +function getUserConfig () { + + var form = document.forms[ 'data-form' ], + info = { + title: form[ 'title' ].value, + subTitle: form[ 'sub-title' ].value, + xTitle: form[ 'x-title' ].value, + yTitle: form[ 'y-title' ].value, + suffix: form[ 'unit' ].value, + //数据对齐方式 + tableDataFormat: getTableDataFormat (), + //饼图提示文字 + tip: $( "#tipInput" ).val() + }; + + return info; + +} + +function setUserConfig ( config ) { + + var form = document.forms[ 'data-form' ]; + + config.title && ( form[ 'title' ].value = config.title ); + config.subTitle && ( form[ 'sub-title' ].value = config.subTitle ); + config.xTitle && ( form[ 'x-title' ].value = config.xTitle ); + config.yTitle && ( form[ 'y-title' ].value = config.yTitle ); + config.suffix && ( form[ 'unit' ].value = config.suffix ); + config.dataFormat == "-1" && ( form[ 'charts-format' ][ 1 ].checked = true ); + config.tip && ( form[ 'tip' ].value = config.tip ); + currentChartType = config.chartType || 0; + +} + +function getSeriesAndCategories () { + + var form = document.forms[ 'data-form' ], + series = [], + categories = [], + tmp = [], + tableData = getTableData(); + + //反转数据 + if ( getTableDataFormat() === "-1" ) { + + for ( var i = 0, len = tableData.length; i < len; i++ ) { + + for ( var j = 0, jlen = tableData[ i ].length; j < jlen; j++ ) { + + if ( !tmp[ j ] ) { + tmp[ j ] = []; + } + + tmp[ j ][ i ] = tableData[ i ][ j ]; + + } + + } + + tableData = tmp; + + } + + categories = tableData[0].slice( 1 ); + + for ( var i = 1, data; data = tableData[ i ]; i++ ) { + + series.push( { + name: data[ 0 ], + data: data.slice( 1 ) + } ); + + } + + return { + series: series, + categories: categories + }; + +} + +/* + * 获取数据源数据对齐方式 + */ +function getTableDataFormat () { + + var form = document.forms[ 'data-form' ], + items = form['charts-format']; + + return items[ 0 ].checked ? items[ 0 ].value : items[ 1 ].value; + +} + +/* + * 禁用非饼图类型的配置项 + */ +function disableNotPieConfig() { + + updateConfigItem( 'disable' ); + +} + +/* + * 启用非饼图类型的配置项 + */ +function enableNotPieConfig() { + + updateConfigItem( 'enable' ); + +} + +function updateConfigItem ( value ) { + + var table = $( "#showTable" )[ 0 ], + isDisable = value === 'disable' ? true : false; + + //table中的input处理 + for ( var i = 2 , row; row = table.rows[ i ]; i++ ) { + + for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { + + $( "input", cell ).attr( "disabled", isDisable ); + + } + + } + + //其他项处理 + $( "input.not-pie-item" ).attr( "disabled", isDisable ); + $( "#tipInput" ).attr( "disabled", !isDisable ) + +} + +/* + * 获取饼图数据 + * 饼图的数据只取第一行的 + **/ +function getSeriesForPieChart () { + + var series = { + type: 'pie', + name: $("#tipInput").val(), + data: [] + }, + tableData = getTableData(); + + + for ( var j = 1, jlen = tableData[ 0 ].length; j < jlen; j++ ) { + + var title = tableData[ 0 ][ j ], + val = tableData[ 1 ][ j ]; + + series.data.push( [ title, val ] ); + + } + + return { + series: [ series ] + }; + +} + +function getTableData () { + + var table = document.getElementById( "showTable" ), + xCount = table.rows[0].cells.length - 1, + values = getTableInputValue(); + + for ( var i = 0, value; value = values[ i ]; i++ ) { + + tableData[ Math.floor( i / xCount ) + 1 ][ i % xCount + 1 ] = values[ i ]; + + } + + return tableData; + +} + +function getTableInputValue () { + + var table = document.getElementById( "showTable" ), + inputs = table.getElementsByTagName( "input" ), + values = []; + + for ( var i = 0, input; input = inputs[ i ]; i++ ) { + values.push( input.value | 0 ); + } + + return values; + +} + +function getCellValue ( cell ) { + + var value = utils.trim( ( cell.innerText || cell.textContent || '' ) ); + + return value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\s+|\s+$/g, '' ); + +} + + +//dialog确认事件 +dialog.onok = function () { + + //收集信息 + var form = document.forms[ 'data-form' ], + info = getUserConfig(); + + //添加图表类型 + info.chartType = currentChartType; + + //同步表格数据到编辑器 + syncTableData(); + + //执行图表命令 + editor.execCommand( 'charts', info ); + +}; + +/* + * 同步图表编辑视图的表格数据到编辑器里的原始表格 + */ +function syncTableData () { + + var tableData = getTableData(); + + for ( var i = 1, row; row = editorTable.rows[ i ]; i++ ) { + + for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { + + cell.innerHTML = tableData[ i ] [ j ]; + + } + + } + +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts0.png b/yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts0.png new file mode 100644 index 0000000000000000000000000000000000000000..9485e5ed8f83888e782eafae6f7505c79671a985 GIT binary patch literal 25306 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 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts2.png b/yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts2.png new file mode 100644 index 0000000000000000000000000000000000000000..7c91a39ffac43e0867bec1df89b73e10e0b28c43 GIT binary patch literal 23016 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 PFatGZEv0+~v#0+BCDM7e literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts4.png b/yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts4.png new file mode 100644 index 0000000000000000000000000000000000000000..742006adc9cee3c07b1a390da6991a84d1da99d6 GIT binary patch literal 8344 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 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts5.png b/yshop-drink-vue3/public/UEditor/dialogs/charts/images/charts5.png new file mode 100644 index 0000000000000000000000000000000000000000..c49a29609d8e8f9bdf101e91021d40c1cb3d4175 GIT binary patch literal 47084 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'*4h4^s0#X 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 g*Z&=uhxp + + + + + + + + + +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/emotion/emotion.js b/yshop-drink-vue3/public/UEditor/dialogs/emotion/emotion.js new file mode 100644 index 0000000..aa01380 --- /dev/null +++ b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/emotion/images/0.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/emotion/images/bface.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/emotion/images/cface.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/emotion/images/fface.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/emotion/images/jxface2.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/emotion/images/neweditor-tab-bg.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/emotion/images/tface.gif b/yshop-drink-vue3/public/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 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℞!!p z_Z1>dsi7dm6Rd{4R3F7@(Wp*~*7M%cCmAFpAdRZ8|cn2lHIr8j56i z%K)ZY6+DhNq`--`BsL{-(F>4&%-T{!_T{b4n&w8o3C~jE$Sebx8PRhuwMl~ipk-`S z99sSZ^zJ(RtB(4W1@q0f-S`4@GeVMEOTV85ZryNPz$tsTi$m!-_y`D@S&TQBUT8Q9 zH&mkKg3`Uy;PTCOyD8Xv={rnC;fvX7WGhiq-eCR#=}94HDyxqEKzr5CJ9&)y zLxRr)6c0ArHV(P%hDckX-Ko?2%~Zgpf~qm!S_%NmlX)3vshcS9N#)#Esp~01RF4UM zQ0Zr&J8S{dpUm(F$L3PE5Z}|Vb(IaZ_oz((k|~D&EZ-AavFB~y?o(<&Dk0gN!5WC+ zJ&3^QVz2kngiXrR_Gj=0kU`sG^^YHaf#B9Sh~!Qc9D)p3qwt%-)Z@a1Hf#dYbgil8 zjP)7h=J>pO)5v#9`yrgaqaI$SDDU&(#7xA2FU#g^J?m1^W&%4q&!B_t)&c%&*acxZ znQ^NiWckfKR3>2`#s9u=*5D+6qoI_=PX)SkdDo#1!@;xmY*bbWd6gR11)>s^z^)(E zA`CrpxiUcgiUrKbWv2tO28q_??3I2CXckBT%uJcPw<-GHQX)21tg!iOavoLEd606_Ofipbt6-WyxN= z6NxT_GQ=9%2h^>6vR>SOIndyn8Znoz$zTvHYO5cMyS}-FRsO)fNMbl8 zGJyVqonxDb(~iUpHFkxYv!#R-_UQQ2eB!yESs4@}V;6NF2>T!*NyTBn(YY$hu?%fc z^pmpBjZ`J8N-Ej&s(4Q-5WKp&A&dgAV&z$~VK4C;8!PslR-l#Rh&vMqCm}LHOEm*w zRnu7=95+c_gI;Cr03l!eOFd5^u3DR$QE{tEe94{-%V41=)j+b69IBip2Uhj{JWiEJ zSdsq_Yk=F;O2OIK+h;8o+l-S-ia2XOvQk`2zbOL zmjdV@H5{wGlc*g?RKPFjsD*>3h2D3tYWRQ(Nm6R(E8r9j^}IM{oA+H8G3@PI zNaO^<{Dm-u8rdp_Ic&QIDbYu@kvI@9D4eAZgT%gU;#YlKq{O$fh73-&1RO(!fOwG* z$q%JAQ4V7%sA~{fwin?d#3zc8uWIqD)~|ArkU~?bN(ku}U7Wd}D0_poTkil(-wzRz zx9G4BB@Ydy_)ki`8I%z|W9!n&`Nkr(PA9i2;9K;JI0!!#_`py~iq_$$oa7%7ZObll zq7(>`LT~GS+^Uo5ZK#p_sKa8+p_6z{pkw`&$6Pc41E9MnfG{QDoguYwE@qgI3(ct{ zeg+FE_Vs}M4k-C)GWx@ffAp60UD_v^l4EVoB)|A_kOM!xouqGB4-?{OD8w<4h-Dm4 z>8c`ABDOxrBq?T3l`tBqe5!;6``~e0v-tVt^r1-|B1inhSoILT!@-NILneSz6fEK> zp~`|P(!m{(wOKJ2fl7A5MS=uK1!guLIkeQHux#2J+;bodQ8nGgAsdLY59 zcDE9V?>^}>#bQ6ZMPr|Qef_3Og+rbsxJ2=+PvZ54v7>kY7o6h5SbepLP;FLPLqy8bk)G1@L?n_1vSGgz9A^zU}6K52X{ zMHjpd9(3K2@x39Ig~{Wi!_<*hY=ho2zK#OIAP_!tnC%)lONhKE9f#%%mYA+7+91Stc*!8juo5D1}u zD<8Q4$UFx5pD=1N1L>eZ462b&d+_(Qh*kzNK>^@d@B{{u!-A8p#|AURcUIo{t<~RL zV7tJ9Ca^hziEU+IKb^W?D#X6f(=4FBLfvjo8A#EO5u%*GufX{7HwQv^Jow+6XNXS& zs2Bx&%`3v|-LPR0o5w(gDv|JMWPI(L0m-!SDq_<5kDs35R|z+<8{XWO10*G~^8TIo zINTNm;5HAjgpKdNo-9-RH)rFf0R^x{Ybpmm`J6`nLE;J&F!sDz1Wt({ucEj!unBhL zz(pt)pr8D7hj;q3t;5GOC*(=>CmDm>pN2gFe6~FRxTwFZAS0gk=lPRYi%uf~8Cdmi z;uZ+rDg+V~7|}e$hDE6NPY?y#JLXVffq2^XH0Fc?F4GyXrim^PT#pvaazB{qOj)Oq zzt!z|N~9^+91Q(uA->=)2DT_j&&8MoGWyT(qQW!NxJtAONSsxW9E3yWV&jN7;^}Qb zv^M;U7}m5Oj%FCA#t~oh(Um!{_7A9!5c0JUy+{G`S1&-aS1RW)}XEV{qY0v=xGC)>ufzlx@G-6p=OrK0uU|?avnfn1C&R|b|&4P7Z6?l=1hzN zv^Hnd{#nq<^JY8v$93H4`#PbYhx7=P^#{DYb2p8ala#T~hAVfu zitZo#GWqW^ULOH&aDP`jGTp@o$9ArloY?U1Gu7>wy_P|4U*az>wl%+WP2#oSs?nQ) zw3U}lKIiUA@s0?M^mDee3aEe1AIv`#b&s*#aw#=zX~$~rqiCB8fBh6_m2CO0jMh7c zolnBNhTN!|rfvnx++e2Vv$u74>7iLHRdFe4OXoQUzsr;p*=3uzrKI@FYl-j`F95am=3eZqKmx~1>O*Zm|X^^Sv5dq#s#@rHiTeG<@iKD z`D%_UsRPCdAwaF+*yV8!4KVMx>nNN{Ygsda&vv--`zrrX-9m!0%(#&8NRG>U;@yQ! zcz34EW=v3BVk2znhu07Tpzz{#C&X)O(pw&d@1-mRBTfsN^|ID#gfvh8#fs80od5XRUWVhw7=3X zd{TQ?L*duFbTAn_-9>kOKZrlGj*$Pg3Z+Ot5_Mz zxxd6D=xOAY30i&h(UE4y*njTBoJ8rb@(g_Yd5hga?V5` z0-pJ+QP8u~TNV>*KKqxuXf?=xa$^JRE1*)bD^~`=V7@b`LR)_FjBj!GikyG4d+l}? z=JZ*eD95`tC|}ti1dNxP;swxMU}0Noli{#aiwtG>>+Sr{f5$dr!z+(@gI{0sUeA{< zk~18f6QlDoaHFPgU**5}soHO7VI*j=wTPs&R%1|ad5A>E28b)rKpox=3HVe}q z#*`OnZ8Sh(7@JzR$gktN1j+pVqNj-d@c033=znVw7Ly>`j>Y};V-Szc79o>`5$Hd~ zCh_#Kf{|`(<4JE@gqV#-wex`s5Xz!Z#;*F_R4kW3nUkPAm@Xv-``N~(^I<>i7TPz1 z#YADsEE4%k4*Q|0T$GTC{LMms%My`4snU$g^WjcLAQ|AKARBpQt|MhQLy!aeDJZc3 zye;N1IK*Ro3CwR8Z&)ZJzgBiRA!l%|g-k0fi29PuDPA(-jN{F4c1`UjWfz7cU-tqN zZR*N(mqpf*fZU^g5}nYGz`3RG3cV_++_?Iq#kvkru;T?;=sS^hY-6}Q<7sTDHp^)f`^2Ls9#+dF=ZfRnl;Sh24n5%NDGwJm~l+A<|_?DBq%|_{L|QODvvH zYO;q~cTW-=y&isdNNZ)U4r?rTZIj}W44BKtwkR*FV+*C1MJBsP5LxD|9cl4gEY*aouYh z^%wnW4d#$DN_1h^!G@Qb(4PSuFgc4|*?-W;E$G-9)9lA+)>?<7SB}lDM0=MCBaXp4@Rr9+@u_#37bXBP_~=M?H>Z>zTk-v`yE1g@C>N zdkVthmojqOnuCCgeW&?(3Ct}(yDCvoj*BX%l}NpH?-oW#re1Q3rS%LLUPL1c7S{)B z$VG+Ou4ulbWLiJbB1&}a*L{kqBULUx;exBpDK1!Hi*(5nMutDT={U(m5l6#e<`j*J z3+(hiDMTG(ysTNLea^_>VI*3OA7QZATFkWC!x`p1m~GXs#ZiNK0Z^%-yuw_q!DsdK zIKGRkDKNq>wq>lLIjRT=$oDs2#;{C}X>bAdW3ZF$T~yMcwXt8e(44T+Q?mBa3|+Xf zo%Jo1O!BHgSV`NYUiX*k807A6k)`eIH{2^R){SVkihTLZ%!+3WS zV38!yc;)^E6z|Ly+cEvU&#}v&2)a<7I9R|F)*Ce$#JF(M4iHYWT>iYLzXA~V?G5T&4Oeix5{It*SDV?59~1!4 zigrwq625odom*$5$B2J_v`)H=k*uJ?HhFNi=+2 z{oSYJ;=X%Vrt0T@Sq(d_=Kl4scdg;{;3TtgzF)c&=|QpBi#k$moK7X4v2!Ha@FTE^ zx(`1JA!FXfDpyA#KNBl?8_^QMyfJM)qMxv)=Q*c+Ldrr{-;DGG{zG_@92mfe6aV2qYy$)m+D>}e3g_Jrg%i2ETL`%IY@Wvv+lbG=XTE{Y#mlsN1QP8 z2+k+n4*E~FrC;<;m$`kbyT<%M?Cie|Xx&w2B!Jw}4WK=N9!wZy{k0IlR$(7}ADp{# z=H{wDpN`Dt?hI5;#J%_f_-M9$O9j%MDKI}^xd27b0VGg=M4BsMB1-8`g>2Cb5*OlU znh!_zLY^Z?p0X@6kcw?0#Yzq^a-=lnMceE$%pj#eKO;$5Mq%#AXk@!$w;MucP_NYN zEo9D;+S%>rDa+raz|64V&a=YZZ zh0-q1avGP;yuyN+oGr;Nw^%ye#h)pW=XY?nNLEcE=RlHl9k4`j^-mx0_)W#;8H2!% zb6g%)G20f-6%zD2CaIFH|aIZYN3^G_<3R zw6u3Szq53eBz#SHh3B%8C7q3xZ4|3EMfezD%lE2ftbi4ljv55Q>;xsDm;DUR=;v9$ z1{CNttemgDkm%=c(`#&}y{c3~aVO9gYLxg9AwwJqja05m#~iaOy?L}eD_Jo=%NkEN zPD__=c1DVus@Ij1s>cAt@$!rrx!Jp$xK`Ox$xX0#`s5D52?qb;CE~E?doa zSD?!0ugidCG@5$#^KwCyUQ`)<0xb{;Ir?j)~Nq9T~3 z*CB}kwj|;*IYn2pDY<$9HfC%@{_Xg@j@X!U$uZ}%ZvPD+24RR>x90DLnm_o+VYduW zlhR%@7$p@Inr`{(wHL2k4P}+4_8a`>N%X{EmmHa|^XVdJehFon3b-MJItN=kFtJokVN}O6==o>FEcPr!_|yX%w2}Gna!2v@?@CD|*qMuz)K%ph)5Kv*}!c63HGb z=I%Sk{f@#q%PHk|k4_dZESIf!JIAF+`S;`n09wJo2Jp(ZQng1JtnC76{H430pU$t? zRMsDlzQU6GMakv_!dLimO`o2dBZ*r&g19mXYh5n2>#g|90#~$Y&gHsNL#+WzjL4lV z4&xp2XFA$1h+pP{Og1BR00?-vLs9xJOZwp)*K>7^4%M4b$r%!}my)pZIy-I8;la{5 z&c(qcyS8SRq-%#R^@c_wOTrqFr$1qXXSeUV-AD9af}ZymZgV3hM2!h)#N>|LI$RLk zhjmEfo$N`kIm*Lq7V;cH%q7>Ihh6W-zYjVD+Z`&rrz|hC)S^~k?;miNr}Nl(6p8I4 zL_ySjEC@Uj;~XVRk|ESqfqZFW*}s#xrwos5+$prOBx3r`-&zD*i%Qm_P&`S9r0hVe zMUOV&R2(K~MiS9E7k?5P?tCyqi3wL=@>tit@z{WFbQ*% zNbEaH-?8T9hk7_tO0Dxz(Y+==0fA1x@y;iSDl`>B89Tq^7fZf*g&Yf=&}wg*^1uf#w?gIy;Q_c`l*u>B;JK;z`L`=LLWH< zMn(#fu3jlw(MVdTpcFczd1}eE6>uvFg??GabY5}p_oGMZ2<&UGP?l7Czy11(f6tvu zHf|*TdE;fplAgLQe^}ye(EE5fcIEB;L@Q_X6BL346$=1_r?&sjNtlkfa_@d({}aY4 z3B`1lh2lX-*2v0O9rB6;;=?(~<2!xkZ95%UutI^%m;uvXm;dQP5 zp*l*P%k|ez#MBQAkp;KrIoRw-a^5l4_Is4xSr+AtO3N=fN~ladbiuh?YNbf=ZXR=O zmiO;0^*CH!AAJtji)C4-x|E^>Bho@vNq4$5UW^L?QE4B?<}{=Rt^tB(cSwUb?1%?Z z7hhb?R$j2|Eh`*>1(l+_8^&##kx3M{rTI>aXDljN6vy%k%g(a-e@1zpFN2;*>8z4; z9nl7huvj+ww-9N{FQzogqv&b89jloGWlJWiFR5-<@(=_pEKi*_zf_d41Exp#ueKXZ z%@7Q=!FJ9Q&W-Y|oonI-Fu{U$Po}|*z1t(y+c&qMuDY(t!@`IVqHk<(+%iBw!iQoJ ztBLe6^RfsnVpY0i>GVXi@cttmYFiQNQhH$T;(ITrxA*Pck)1A$U=RnCR}R#bJ}57> zbgp?+j!Nr=EuJQh0;Z$pp2stURe!1}!b_#Us?n|gYv^43ncn|6{@r&MV`FodTO(#z zp+3ep}JP$Doqb} z$6WW?S6iDt*co3Z29t>Sm&F1r(ue9^fmIiOx4ZaGFCu9UuIknPjly^$(pe67_X=Vs z_6_uYa3y}2(~r~b;u~-f9$1WNq<8~XtTGUDNv}2xP7dDtP@xZ3_aI)xPHpJoZpjmFchF&A&6tpN-4xuay{(V%z-}Z@v3)J?_9)uMc;;#Jjte z3Rg15c20GgE`I3+S9vy4&T0VVSTDBXUDvT7nb_v?e;;TG) zcmfR2F}4KY<+?1AlW^4Ze<^ZcviUQ3XH^Ot3^OkAZnB=}JD>O-ly2m%)P#}t_~_(~>=s`E$I zU;Z=v%HHZu_+IU)1SuS+DNw!4VigEjPj;`5-2KCIT-@ESt&tdAX-;M^ZrstpgCj~l zXC0rnH|K{Vhl2ldct#-bQBV1zM2a|uF4e&q`Kv`gJ(pSnQn$2x-9q;uHEMT8{?)ex z8#%%ltL?KCBuWOqgG5xwH7XB*Q=sg8bN^+Zwv-ik0iqr3eBU&2stmEW^K=Y^I-!Ak zs1Rt##{T3kG9DHrw(xaSG5(TrQ}zwAYq@u^4sJrnl0H9>3$ArXJ4icgUzGN$1wJ$q_u|kD+P-Ru{z!{h;+zBv*5F(W4G#V zi}3HzYa!894OrfxvzCOqF?vg(EgO-*JJb<5HVCcoHwD188f^ahTtMNTZ|sgb_6-VKIeD=AxLW`= zWp(JI00^rq@;x$cSQOD#ej95T+PeG8fi=IK694?g{p>=Y&WWROhTr5|en*Abk1=;r zPaBqsVu3eq$c80<%7?rWi`be z0{tl}^~JT+C-vL@IbCL(Ydqfew635*AI%$??D5^nukE(UoNs!#rJ&?Eym3-JUKFCv zt0c_`cToG<@(!OgO&SPsb7I%pz3#hs(bRR&XKqCEx^WkxdH9UoJWQ+a*fUuL!CXYYU2!y72;CrMz{DWNb(2tW`{Epp#j-Y;Jnl> zWf^_ush{ttNmDBIOu;gizrFknb~S-q+K(i3pF#P|?PxZ2`f8C@N6wHl3dvP9x%I*- z&b3*q11;hA>CrC&m`{xrVcPNm zaQh`y(>ZRHcT;(4x@y)cxCPM=*3DCB7=H1pEf-}~_`mN_y+ue?*jLe*t`56Ad`>1X z@IKkJL@C3#S+}l#Oy8e|Xl=UQPMjaX*p9Sm#vsW$M*uYj4@Jyb-7@o8piZW3IOAiSuSJ>Cx;O$WY)b;VbKGZli`Qt$ zhZ5QYi|_!qmK<7%nL2L0)`vRlyX495zSf%JeaQ&a!A=}K(EBa!bqV1LrLAlNOE z&v9a|Iv>F&7CH)1vta}0y0Qyg4Jk-r*#9Woiwu#%8YamhD%sG|;iX5N?@Z(8BEs3h z24j7wdlW*RB?@5QrlAat$(A(P=QbMEQx4b#houlKMU93AcDs#dOPr!+u!fnGuI!2SvS$Jh-#U5y+7$npY5HG*Q<9j^-qmG z4tKr8D_5Fd+rt%r-;(Q}SZewYo+Hw8l3{IcZv@i%mpMD@rPNEH1V`fz`|-ZO*X|jS z8&hyzB-xdLPnwoeMCyevyR80B4L96kJ|~3r4e0#>gh9JWABrsd&1pH|_Vr3a9!afq zahE%Ay8z_8Ov6tlCGh|Lmx;}kpv;>=y`wdRj0j)-D>cqipJR6SX_9o&VNFY1)HN7?MA=Ul(0@^5Pn>YLQI#?Yz zjL9nS&?ZKCTba5g=9T+glJNJ2F4AaUeJrJmnU-VP8YyCMPrp6r#A7beBTf}1(i*s} zVgMbfUvjvk!Dgl<8kGi1>&F318lD~QGI}zd*1Z0_^R|8IW7V^?i$3RLH~zdZR;x0w zJV6prlRe-dS|Wgy4y>+P*m1F>p1Na2=ubYBCdF;zhgOiQ21yFv1qcNa8J81cgN?s)bS^(oTW=pMG+E${Z^kPK+bKG9 zEL?n$C^Oi;EKIYyI)wBv*P7<22>=dWz;-nuiJ)Y%fK|H-6kSn{a% zHR0ysLgH9kv_1Z?&3%YLF1{0!U3>&!4YJn!ZYLyvud{wj;_ZAjQxIC-VED`6B_}_= z?$U6B)slak_hUQc#|J-RZXVYu7|~1m`&)zVdkYug3t#jxO-{qFhaO!nR)*t$__(X% z9SKglxo@}q_XfX3Di0=`@^itDp-_<)HibG!7a-FVzCCK0MrSVdl_Bjj&UJ-k=_$1_oz6nJ zS}3s#QoWCfBPY!w?PkTU`GjSeSwg?PnJTi+Jah)|9^~&hkXAtG$SOQs!#$qzQvj8A z9kst>jnzetfKZ>}renf|lJCPr{PHSx#;noL<4>(x0zF(!xVFhx2kzt<=x&fRtY;NZ zrS}f$>QEK4(RHA6s5*x&vky+Hx_!QA|3TM|HTuiXirg!fSA|+|k#k&OjcSK;!&rdL zSL{RcXGE)G77E(~ir4mwo7R>UBqnTcRboZTQ^mh&_X-IygUcgd-^T>EDYbX((^brn+;|{pc5UsBS4ID569uTiVbyQ+I-C!@ww3v4L`5p@>&YMJ z8xbH`G3G%rCT0Q77LPT^?*f3T(8-O986!R zQC=UN0dAz~IP|N?tVrbu!*6FBZ*fts76SKxy4&W6E1Qs;U zSd+o)TPr}@wzD$W41yfCpo@0oO-=}HCu$@R{6{)lkq1{ZNWp4oO_he57 zq+6p%`d)*RymIRhKAT55(X^K!1hg3_7HG;YSYxX+973AbMC$wTfg#m>Q@|q)?e|rN ztT}1)k?%jjG^0Z$)_i9XfZ-&2QD;NkYr@og>;6}`O$uccV}3r)U(Sg5T3x5UfGk!{ zz7^S;z?|P77WrME*Tns?>OqSM{B6G9dIcJg;%bQR?6;hkMm}(RQxldE!0@u`v@Ycq zF-^CTPqLbf1{u)@wM^7UAouMpKb-v*o3zrG(qUCd2ZT=LYpgq9qi*hXzmw!{a*^nr zR2GY%FsS$oE}}lXnV=^!WYypA_H4pBN`$ss9^$_N-4-L*5{4ZIzsI1EJNtV{yQGQp z5Z%Z?bPoho2AH)6_~yL7McdlSA}@qDkDOQNR;n~9kSmXw1SVwHKFHp5;j$F^R43bf z2xa^I?a}{{9mkpe%M4KvrOo0zvKx#)*l)QkAczD>wGR;`T*(c{cgKU7OSM|Y8I;N= z_-M6pa}y21WsG9IAVhR5W$pr!#SH6!t%3N0-iux=g=6_kWHIGk6k;tT`|r=$&D{Zp zH=2^-0+2-K1HJrW+qhD*IszTCe8Zx`(?y`@0?;+biI|@`kJAros(2i4cx|d4zTjgL zaPrw!3Jp>Y39QnYlw+^HJGLGjkGmRa5X|iqcw6Ezn09+VRJ@a+_a{bAdP@fe5rmy7Bo&UVg zM2s1jzfaqF?O^(y7DdbW_suQYV}Jkq_`9cjU8EEW`?RyE|LeOWu}t~k6`f8uwa;?$ z{lMgzr}=Fuy5q;ko*ZfPu`6yn(K7z@__Mss=CZzt>x#F^zomR#Z?EL^u9)kr-rnAC zNr~rAA1Uq4`e=yyp?jyharsO~)4!(Cl9+|>=AV2G@Ow6Ly6h2K`n>)X9NfP&^h#3v zt^d@+_O|C<%Fmh;-onsZu1IuygrYmilWSLBdvWf{)BCe~x60mq=Ru)^A9}jxKX-n5 zJe_u1JR9F4n=x5#2x$jpl zeR(v}@%)IUOp*HJto-?hUoWN;5C3oOHuF#r z0?+~O!2jz1ZvsH-03FIALM~GZkwn+{9(hfBVN2+rUpI;#)`sl87qVjRGRwv_Iwj$t z10%F1#2i26GIM41S;nn_TPZ(B;vNbLxviJ&4OWydJJ;aRwp2TM#O#~~illWOcF}K= z{M-9Ht^d@eV*%xF7G_CaktVWyI87HPTp?#Lq@L-Elb2R{nVn7fUdMY2zCdce{bB0$ z4ZQUS`PTlVWbXi#LARMNLXaFIwF^A>MT(#XB&r%-182j=o=S(Keg~FejuhTU%cm75 zuA6sP*g0+JpEyur^+I94BBSgEBGH^e<3L`o^$Gktg&CfK3`vEyj{Cjgp=&S4Ds2pl z4q{X#mLXJ-&btd`O3!=IlIa~rms$qVL>>yw!}22wvc7HLr&X`;g@=d|dmS7x{f{?m z8*LR=n+PGc#B|W2lb%|LZW@Rt_&?@>R(ZpQ z2HEaA(-Cn6s~7aVNLhLz@ka-1$7kn{o3|_UN9g;a*YqY< zd3;EymxXwD+onv&9^FSAm$xg5OsADik33h1v27D_h-v9qn;L`=5W7eudoVtDFwCHM z6JdL3Cr%0NTj6_JBCCu>@cRv)(hwdq>QIvq0?tCi6FviHYf8N$x``Ei%MpM5{9@vV zA3^YA!uGz^Yai25abH#RMd62ml_>UkKZw4Cc2x3OJ*QfQT0N@B3wAl8qjUyWK(8t= z?^X<#gC(nKs3WYPTnwdR&i84s#7)*3Shbhg@!=gu5y*T3_~Py2=e|q8*&Ry!;(6+5 z+ZTt9(|*kP2;2%X&pJ7B;s|Z@_SYc#_npi?6rTke^w{Wcqx;FH{J-DMf1>uTvwO1V z`#|7RJ~N!MW5wrrXZ+*HvD@}{yl(rAl^TavjsBZ@>Ra(Qa81lzH72_%r{muf`CmWW z{qL{4+nJ>G}!=okTrkNEszH_I4AJAYnMX15kiZC-0Qf1&g zDfk&Ao|<`epU~AVqO#xhGT+Dnym>u1FhaOrf=@0<>U>#yz@OsIA_aCvqX^iF=Pe(48=#bTgmNqPr_*Slr} zlh2o8_So$Y=kfxZ$@i{(x&ocA;uF#o{%QS{)_bEh`Uj>}H|7}`(R*zXsZzXXVg&R@ zA~gGX9!AG`=RHogdTy}e!HNun9DEhX;(E)SxnhGt#B?XdqOz@j8q6JQx5C!7NS(Wq zcW&8x+VhMUk7HdaYpe!+88^Ot&Gb;l>fu6Ti%NXldcq0jBd||zdvn&F?ClM&Y3<+pW>OcIGAu+FO!H+&0)@85Sko&Q%eSN+j(XyL2DM29Zt& zz#F}x3HBqXw)8NG!82htas=nrxa;}Z(%t_?X)iu0Lt)PmPSjyb&c1GHf%cdayMfV8>LT`V5X34O zqKkEe^m19DO=e-l#Vy?=M|!DQKN}XuiM9SEmjrca%toRLE%TxYdxpnDo$Bx&O;T83 zzbvs-`vrG#huvBuUOmh-%$v3IRIF|Y>=UP<+XbJ~qqu`{%{HH@1R@+Asv@gDKZYOO zTbdG_sNWO|CCxUX{*>HiY4?Mo8YwA>+K4h}tXSpYm?4)iuUNK*Z!98yNmf=QdK$VeqAk@KX&jJ2^|*QmbJxHp$lI4SWyY za-+ll+M$&VF|Ml<5ovnWfk|^laXFH5jVt3r#<35&x5t?nrE?{OVaT&QxSk6e*{gM`mWm!9FQ@RuN z*pr!a_{sgbDQ3@48wYL*ChnuJad4ZT24*Hz6|1wmKKFFpG37qrwe2>F!pknRE1Rqg z@=HZ6Oz%0&9o2{MhU`d*3p(fDa^BHW86)gFG)>mm(&a<%7b2DyQb)Ic*Dy?h?p@o< zDvPd^Cg{@08K%7iN+r`d)eb^Awzb&VXV!LY%cEB?{`KV%(B*RvkvL`jAa_E zQ3l5(#`(;AL12*hvKJ0*5i-~|7m-N;Z4r1y;I|g%4{kdExp$p6d*e*_M#>m+y&_rn zTiddau!mxm)eP9I-F;ts{($udHalRTMa)HNOB12@?NT}S-`!vQZ-7^zrZFMoK~H!A zd+T9QMTCVjAxm?iJ4gK=y$YrR1$VpgZQ+Cin*B@bVRtl`-=lljhw*q>&>wOLoDVs` z!R$J`5H*fX7~S)C4S2ma$L5RZy3)zwj z*M-Y+q4Q*c@?(%+$_l;V1-KrjEi$Z;xwFe~AEa^7=AO{|b$;stC4o`ka2-1@T$cYd zw2&@@L{TAY#&S=z7FW0G|EDc}8y&>~GQ8P-Eo8lZHu#(Z=gl(sY-~IQMLd-gC!~6H z1c>{AnNh`iRC$z}G zN6xus%0W{a9E%5nKggb+2K|nR3elRY0B9n|{?W+)h#+Z|9I`NwPzvC9?p*?lb!sez4aouU!?lD;9eZ=1inNY}eZc|qYV-nl?o%8< z?*iei9M;!FN(K&hjNk$^v2J$Wn9BIeHW;@BaF!N?{m40Bgj@Shl-1_xgt zxE`oP4(>=gc+mQR1_uLh>o|l}ER29=?_`TKWJ9NT?!!t{H4EEqikcfnUspq1f#a}7 zB+{fpz_HY;t*(}$om6m04md?eam-QgKsF+a5)tVDxa4`I=}p)R4z^&a5ju>J!m-O_ z0TTZ$cfVQX$zh#rNS1U*boL=A9k!5#xnocf`Yq#gBW#VTnmmZtQtUW1mhb}jTELb? zsnA+Ab{!j{)p%a#VE?6>na-#GRsf5or<}SruVR@60f@&0NU*dP-iUm`_UT><7ioOF zZc zll7MEA}+95+`>U6vB3v6g9BWR?!e*aD3~KRP$%X1LhyMG&9FyS#w|I&O=)cNKB}!z z-`wTEs00ev@!(%M2Yh}Qzh#|4>#zNqXhK$?(kU@(e4xL173(y(sLuqa3$9DNF9&&UV)l zP`#~?N*TDQjo``xxL}LgHb|XR@0bF>$iORFklu29#6`k?Jm*a#AgnFAlCUbKrtG&I zAKQq!r9O|YNeES?U0`9AN7vY*@smENds6t14^WI2dd>&;-N;(ShQ0+5r+JvXwKkQF zdiSKrPKDznm#~Y1yFkJAkufKyK|S&V}_NdX|gk6QhU-tm@5r!Dh2J~z~7CaSuE^HY1+th$gg>;34IH}QR{^= z#7{DQ4}gl_Vo}RM9Nj^9#WEpNa9_4yzT23KXy_;o-js$msk5A-U4VctW%5!tuz);r z%9%unR0{e@fJtfa>m$bz&#)k{^*#MtT{ZS;GK5gpcKMR!bxj*Q8+?G}I#+B^X8TRAt< zIH)?Uw}-U0lw-a@0pBwc?>~re<-pTq;K(Bej%q}R9A^9-6rk~`lv#Xx2=pH}h}P)Oz#OffyvJ8iTTiN1n%&8bRzLz@*9SR8T6wG3dx_*kFq`9B*RnMgt%5#7x=Qt| zVMs3p?mtTOCQcUgn1L67TlT#E{x(3zZux1#^CwuXj-@aCg7#pO=}MJEg8K@rdNEM5OoCoL6y3GcMP{0 zgW%Kz#b7OcJTA(C90~#f;H@`OYjvqsLL(?_aRnjNTpD%Sj!w3C>ER+$xS)7QSfAoT!GKVoMR-d{c z1EZs`U$!8M=_VQ$hGP5pMV151Bl?JNeZo*^e_ zFyUWbiRw_G1s$wqVIAy3uN_vN@E-n)=Ga5Vv5 zJPb-yV@!CsaT!w8>UA?y&zplf#sL+vH^n`7d!YsYdJEMzF`b`2V$H%bDQNuy!gZR0DRmBGdx};<=c?dxK1*B`33@;0>u!ndC3hYG_gO1;fJ(2zb-)@9z^musAxGR zVk5y(@hw%9&$_qAO%rtrpjJL!%fgQ3 z0cm9H{wL_e_dcxUz_n_`MU2%VI5bmTb!Mk+^)Ollpq|S=WO(8)dSV}5(v$zi4<9+G zQYYN6cFE*yW&xmuQe2e!%f$jTUE21EgFU>2uufxjS&3S}0{Xr0zG#Bilkv;g$o*I0 zbOJO=irYuS!rLG>hoR0CoYWoDCwCsw|0L&3?ze(waL~_b=r-vmI31oD>=1LDM3a+p z2%o-jCh5Qg9ng!Sp|{fD_m&ejPCYXXzssWNRh~wi2efqg=ePnyKptUQFSd%m{i4~Y zR@vvf@4kF~v*FrCf_G7J2-9>}1`#i9E@ejl_=EX|C2}0&*w2FS{$6n6aXu08` zXUO<723C#4Rb==vX_hkYTLmDHrR`Ut)yZ5$x%V9ahyIR zNxfqefZRT9{8DoMsg3c85-6w8IQs`KLW>$2fH-juW0b(5b->Vqm=}uiN?s|i5t8-v zdZ)%FQ4S;%NI7gblCQ<5AA|$FX7EwVUn;NJhlKw)rnXxtzXTx4!+DevLfMLF1YkFV zdz$cWgFCQGVrJns;AI!$9xX-$$slby8nRTj&0w{e=k-4Hw4Q*VX`~>mHJ{J1ay@A0 z{5h~_4&pIKd)dVUzXi%tBfX{mlly&v>B$loV$-jg`D3hMMxiV8!fIGbJHniOHQM0W z<+wA(M>P3&#M0piZpZ|!`8ueid`Zl`Pi8OD!tK_yH2kQ2}?U8Rd7G6F>C z8X)X^vAxKXVLfyih#$RX&b8f@S0^_LO(0KFS`8+`zNI|4>i%?acs4YNUdDIlx(_s6 zO0iy4)-tr}*axdj8Vdkt({(=mSBGMwhM$ygR=DM9IPlZO3Le)o0N7qW__`;CBiy z>b5ByH{U?6J8?xtV&0$3SpK2d=|k)_JoR4XS8Maod6)Yi9lv~pa5cr~1D2|$vntWm zr4C2_kU7b?5+uK|V(WT}vg6cxiECRb+9ec<-sU%Lt{*DXkFcu<^;zn0EZCqdDwqE) z+|l$k(>TwyvG5dQU@#e<*HHD%ntGtEc7=BbFS&xD0S+vU%cP?(tn~D*5u4rPGbka_J8uJR4Jp%iSLgAF|lE`~9Jq4^aCDOQ`I#$m^Y`vmt3 z7Gl(0i5*&Ac}7Z9is=%=xV!@kek~PABXY@5SBhIEe^bE5bd}+n6Vy<{@{?Z>r3wb}a+7W|wlE#pO>vC)HUxH)G!% zfjLKX7N0sD@dn5FTx)!-HDR77u%57bAbL3ymb@NstoE8R`=uXB;1sOv;RH2>)$z7y zg+SJMhrWl!0VaED5y@m9xCs2Z;POp5%Crb{X^&>?Ui4?QFx&Xq&Ou9~)Z>TZ7db0MXTFDn$k2?gM2h;J8rR~z`}u$2DJ;zqrA_7Sj4U1V=6h$HH`%_>+NgPma>`r@~(>RE#rmPA=60^$t zwk%G~F0YtKG|d|1qYrQ|Jwic3{`=HTkwqgD7-eRi()E`w-@JVPGMg0C+U^{xStVHl zuG{>Zw{8AH=_2jRh?brd{Kd*Q5ejDE)55IWvq1@;*S%_cRqkmtE60b$jhrGk!$?Ww zQnsIvb^N$N&@T$w$uGltS8Io*LPoIivju*_4z8@0Z~7v$LBL!4EjLOxgeD{zf+&^9 z+$c=sWiVFNBsA|%Yzi+PHu$ZrEbftkFPydAdC@LCXehBTIbjr+ctbzYrJZ$!5Cq*rE)>^|0DG1&Ty23I6XQ13xD6%DKtIwvL+h2lIn6v>>-o#-T{*sr;-P zu*9`nF?wBn0F8SfRgh&HX)!O>9)Cv2^Zzz2axT<|(+B9JWVv$X zkI`FWWf6;3wF(=Tx?nQA*n8ofR;J(5ja;LduP@4GE4nGYPx%q`u7H5j3#p8)g1;Hq zTe4w21?qk^NdG2g1Ga}F_= zI?|@!W#*94RZh{HRX!_i+Pw-IB`>Es`U=Bt>A$X&gwC{MAFyv>ZTW|mkajse)f{wR zR4a%YqT4lTS0fWzk@9|v+u`ARP#5$8-!56W7;R%Dm@Wi(|MSafho7!(u|K#b*_uaE z6~0;^TDmRCkWJ~VoD02|{l^5g{cEj_zP5Pf1OyWh)3bb!Mr6%Xtcee0n5--WO^WX5HQl!1m$!--zgo`TvDAbZbm14> zdYj|b*9&qtGAo?cHK5;`Xx)mrD)&eLiB{Q-8Lj4z^b*Bm8~7khPwtjTnP92=mzHn4 z!@T?P`bY9MVY=V9{C@s;Uorem6LQ0D-PRimq31i1)S) zR{W!s2GRIYth<%zA`dzKJNNGWY~fZKKf3|G`7?wFMQ2=ccOD4&5yux4i`EZ|J|rU( zCx~K!{5YYH zc35WSK+-M|7}VyBSXhAO-px4B*zVSRhS$8Jq{e+YTNQY1wFy#&9XV8yL4jxNEdoct z>=XdZ+qr7_0b7AV`v(sBAUMm~YG@6k2Jlc8!ajdg$iqxJR6#xH{mvX|ZlQN8o(tM*LO; zr%Kq*U9m0hD0oNV0@+D0i+@VP*Yw_nr59OIpFAR59_vwppWg>-AK(2IoWVz$m_y!k zq(?cZZs~QQM~$rVHZVe=%g6GdQTQ~rpDnC$@k{~HD zR@^2}i#BPYmDSygVg2=eo>tRq98C{0kJRedf&+?)WV7Nl=ji!ZXdI=Gx`oe(K<1@G zsp?y(r3V?ZeyR)7c@O_+6O5{ewyzOHQG=|a?u0jrmeX!0AbDSX4B({tz!BRhZy;LV zkS5^=_*X`i8m%%d+9iLmN`BY^fCiQKL#zE6GmjW`vMkLiZdGCCTaer2osQW1FvY5! zbZpSAMdpK$0X1#&_h-){M2`+vu$3WGYh2DN%Yy$Fu?HRvEtkIIoXSnC+|;bknYPRD z6>L}?mg-IV+W<0W_ne|w3_oE7YmadQXN{B0Ap;^1yvDx{j;sm- z&1weF{G#lL6*bb>2OPws<@gfCq9{cD{RiUs!nnkc$Tw5ww zDazs@j$JPss9Wts1!)>fqG-gK?%rKXI?ff1|RWwYb-ys71FmMl1mo-L*hfgMbYCyiN%GK0l~iUc(W_zc(P~# z8M7-vg7}3RX(){z0PF0=ji3IxICzB*;W%89pYR|Z#gB?INJ3-K#&=xsqYcoEIs4Ho zVh8sY52O%6cpN%V1iE9AC$IA&Rf<=-B}mL}Rh9pX9m-62YAG!YQ-_n|pl}V8KEV66 zp~5DjeQT`DWebQpCkPrBrg?92tPvPHAEa&8z|VQQ4s`8TAN1V4&U{$ks>UuubFi@b z;P!O*0lz{M02(JDdNjsdB7i6j{89G_{7QJ*Nq3(#=`6yj%3F^IMOU1T4>;J*AXqd#Uc;kYFX%6S-6}HcnzUkr7npC zQLn!Ep&4Y|+T*Ee5La8X?27Hbouwq8=uiWbP$hntQFNYxUK4xO3xE(c{}Te>hifGy z3Mxp;d*jj)ODMEy=-JM_7DcwJuqgCd2U;De$dJ-yyvB&D-Rtj)7V(Ocri3<4~dJhz(rh__nFkZ0u1-O;|UqG89kr@&*8U$T@WV59j@lB zi@*TFVly&>RMf@_RODBT%fu5R%==ircLXewR9K^Q-t_IHaK!QvPoTI0e-hMcSAxaI zZs~U}-@5mJYiVSk|D)|~pU!6&5hEg>Q&$!wOR^}+#pur)uYx)rD#J=oYk9gP6!&ZO*Gq3my(1U69a9MjV}>3LL+tRFFmsB{J2g~a>%VQTZ!AE$Z{;cBqQz%+GkItdX~?+mi#&HPQBP5BSC z$$5u!1;j!=OHJIlsfy2fx^wC@_>x*+dq4M8OCG|Dm_7j8=CpH<0(6NZS{}G#_x{P< zh-U^IQ8+@J&nYbk++m5I<$2}lUccm|kN-eO@qPDZ#9p)1PcuFstpR!aycQPDfpWLc z;m-U_P=NBsGl@$6e+9cf8_y+ZVNW9sEF^gagggrcpL%U#U)n(f&39@A0!I}*2>4YO zzURyH`ISyJ?mZJL!*}7FwF$CcC#6` zlHU&de^NDw91ZN(?6y@^$Ie#bZMl0VKV*eTApI?~2t?E-#h+el)VX>0G(}cx46ubs{Gkf6R9=KyH{M@sB?N9%F z>@Gr(vYi)$SFr`}pTghhrVZo(SPtYX{uU~#cGvui{#f+*2_m1%nMxC2UVWQ%(w#Z@ zk5^N$-8mTb{73D7P0W=?kNXsUjjb*-y}o&a_$l!a zAKH{y+U;$%DF2ZaBhx2)u!&3Z@7hgc+b=pe)TA%hYLsP&L2YC1_`#$V1%8i@x98<( zAX)31;>fj~)q%Ft9K+3X-#{x1{w&j$Fh!C;kM(yF`@bp7-yoipEEE;vFLx!s>z(#F zzbXh(mwn z`}A;Zf60;s8bS{F`9WAxbN?v8qnVo0Rc5;Sd7_lOLpxG*C|+!r;s0-RZ1Ytb540R- zIB0#?%4hdkov2xqLq_y^7mxAVLi`*Le)&7vgBf{|EM|uP^Ihs=$&d_Ub~L4=`eda? zST4p*+nr`MCwwT|+%OI91t369FJz4~=VhEYv8M*Cpn!Yr4mG`hy<>hL&n0O-cecl_ zEErt2^P6Rwwcj+iJ?`j|PDf+A@{dpaA*e&EjQk35aJ<`wJfn*y0(c#9mU-&=9CK>#%q)-R@75I2N4ZXz1MS zQakmsh;0_*jO&;8VMk==#q*hYBIRw;d9RzPS?L*JPwb1BJHp*RKFa@`9Wj05y=k|6 zPuK1{iMs8k?{h5uEJz=lvTw{D`*!2oS|4k~10|-s_i?59x7|n7VQ;cSzUH~L$S-#D zJF#ZvX1KfF`KS8K@Ao{#bWS!6>Ceyot}R$~XhFc>?OWhZ=$7*#U}HOZISiZMT*+H# znIvm@lX<^+a42BFf_%yzWh>~q6k?y%?Fa5#8dL=xWcY#MhV(H^-7`~{UO1&mS1RVuTA%$^Rj zg!Fs!Ur*_+D#NefRE0t6-EHy_FJr&o3XpKW-nDMXud@jNs=gN4zdvjTvidwa{qHw8 zUAS8(HU`Kr+c(I@{Yb{l{lx&Y5gVP}Q?Od93K&A%|9Rn>g^e=;b2(dxnb#B`hv4uR zCTJVcRjiG4lTkArjkX2DDFb3?y}oMOALV}hP#7YMfQy$g*7sIgFdfnx56my%|6p?BAG(0|^U=-zUXIsw;17ht;baL^}*UrEWj*Z2z zGsN1;xp?R0I^uf*V*$WJua-~q0PSh$N>RjDC2gNUEW)~@=H9ky7O-EJZevx?zDFDR zdPo8QF77<^hND`1je?16Ni1Kvo{e1|Q3Nn#D?rkwy(gfwpIKX!kYzT<{}K~JsM3|& zG9dWh$se3h$8omggD1B6C6ZyleaOA3odyGN07@v?WD7Q&Z3YfJS3de0)o8Jwd&b<` zS%@n;ei47+k)_Z7L>U6O@-r6e7p|-V=Ny-C-v*@6aN88L-zK28}}R$0$Q*;+Z!31 zZpZ)bUKHTSJzf#ef8=4u*x%QKA(*z+1!iwEn14|;P}Q}@5AFZ0y1_4D&mhcii$1yO zw6}86G(go1cgZ4qpw99SNz`G8s;ENO^oqTf*fk$Em!j+`X#j^?s{(s5-l0gXfrxyS4U!DFI z^;M)_KgN3kj&mPm+I5_?$%{?0ZrBpGe}G>2HZzH+lzwG~Y75_QgyU|>p#tKHW6R?i zx1R0e04e&yM;$cG|46pjq$aUV!oMp?47c&rwX;zkVAw7SC?SQ;KFUiZ-jWxJGQC9> zv9->}xSejK{NkWHG|W)~B*?G1!s1Tt{iBL$H?eHYdizMvNm{lzj{=R1uCqk6b}c&b z43iK)YPOG}^t#8AtmM&|n>Yg3=tjObL4fh6iE+8wLgSS4ttVSW;#_Yiet>QiMpY88 zvcRr#JCljlL8BGfMNup}rj{f4->Wi|EKwN;UQ*hU{+3NNE6`f)RZ*(`r<@f_oC8Zaf^D8}$KloJ};Oh!MdGaYl2T$vUpUd?*p-mQOY%w01eRf!;szW57lM z(ABm2;=I;6eJ!us!hkN(5gRlZ5l>+e@JyH?9rj5X2f4ea$IUe6qsz=A1yO+Saq!_0a z$z}_jmwA^ZBItkE#IA^(`gRK3nKtsVw{@X2lK<5sQ;Awq(@KF3i(>v~2ru}l=yy|a z&YZ6{)i>#+DzeLK#{r8Ab0BnBg0{LM5%Y-+caN+rYCO%ba^1zW-pH%kFBB4YKmAc3 zLMXkb(^(qRkzhB^{rDq4N6p+k(MFnVY$S(4+7kJFY%zdJ?HTm0Q1L^&&;rW@p4$KT!E}ElnA`=n ziLS*)prEY+x0&`MY}y7Sm1{Qrc42<7Z4i-)i>{W!MwI z{<*f~GKO!NYOB=e6yGaPPC%1Q~#=Hzm}AAsw`%ois0; z(s>}so-)vs05>XAQ8}u<DU4I-x*mPVTvXzgZ{TA)$hPGkVh;kVtuh) z9LlCzNGxOGWI$*DDX2lQB|(2bI)lA&RFwJiPvDHh6_uJGhLGBM7hqHI9x< z+X>*j3*#Ehzv5T2j3VRwIrzAXWA_k!XPUk$il&?K`;nXQX9q` z#!uR>tLr}U7M!oZNq8&^)MexC+IeR1f{=fOY}{S`+@aNfP?bsKo!r!5Nwf>Ud&-T^wW?Z z7{1ZE4l4zH&ygN~3UJ7{-8oZ090K`sKA6lo7fsN-c@SzQoz%))oX<1EokTk~EK2RM zHEcIlSC5q|(Pd8ZTS|*wIwq81ml;7p$3OAlIcAJlFB6t~WU_7n1hRHX|Bh&Q*LWW?=k43uO>eF#RNh zK5|z9yDSnl&}fcnq)-N?K7$zh8co`Ol`}8a3hkOiwoqE&Yk}<_nk&zV5TA^3W?&~S zG%w=YN|6c8z^;r>&K-ami)Xn)=*p$}#|u5G7$=u)^=TEDlTDH)Xm~>%&yob8Qt3Cr zwU!;=;Oa}wZ7Sl>FsOlMuP*fDwO;{&%z2O}YwcKKC1PT$RRPVOqy$?i2vjA`u<+6; zn*HinBZvkbk;VHTYDH~~k5W{55LCv%=GBYd!qvs*5to9f{HAkYYFRs; z3JQ)7)0^RS^LY=zpp}t~o^M+MbJIZ8sjh?uD!BSP$d=H|Tui;}##XqClztZlmNT^a zMWRQG63#|$Y)jf^<+%+%!^6dkJ^B+!RhG9`TD_k7gve!j=Q8zVT?#a#^+R>fEs!nF zbC|(159Xhr?4oG4dCU1jPplmsC)dxmyU&1@$Dx88} zvJoB>%J4=C`W;+D4qOciQ{kjaTTI4&DV=#W(M|!fm;i$R_Z7LPCu5e5iTxz8^7`g@ z?VG39_kY64f6N%;#9|i6!uj}*tK0BY8-rMtLxvnP&T<88#E`4y0GM0GLej zN~%)eNuR+4fr-s}tU{?b!E{Jb=J&sL)Wq!1S5h@YBq<;Hhd~+8INYK6{!y7t2t0U7 z2fsK}U#BexdzC5&C?k;dMXOhrE9?hRDa)lQ1Q|;dE zDAHB^2wQ4{?lLn}Kt>9^W8b?m`R2`AysL8B6W*fIlY;6$;ak5i&TTj5ZX=-??rh-i zE&3we(4xAWlN*_B{C1Q))Y|==YdzSE#B^Vw3UOlkA3np}lwcp~2QySqdo7pegQ(mz zSc810Z7rGtaf@JD_0Zy#U^fagFyAwHOl7h{8}PfvMCAwXY4&S==OR~y#Gm$SRiN^- zLXy5Q2f+TwWX9JE=m<#Mrx^ z{~4OAY^Tq-!0OJs^~|+scY5G}BKXOV&7lIfr%J~IO3NVuT*LS=%rF!Qu|u}+|20xS z>log>;79r@OAM2mLW9@S&}t?$MOl53H?BXsIUm9g_>P)j+FS;1PB5^|E=KWS5|C*v z^7!0Tw;}bS5Bz7Xx2;8dR*{7d)@j#{FAU!ae(B|On`o1re5EaG=XWbFd@S3p+VkLq zqgcR)tOglu?eUV(@_0(UGPa#W!L>$auLbXRJmWr~%Cdcs@lONU_5Rp#aQ?m?z28+1 zGbZHRSkE!ASJJVfSP<2a*L{Uyc<$P-0+kb4=|I|5R<6PW^gI7(c&XK=niSj}2)aSh zSu5slw;|=GDGSe^Vem_tbeHpa;??x~o14rtE}#tsE~MFpW$${7Jli(vghwyX@I2xF zHFO?+Nv>}gXYVB{A}&CjIdEoa#&Vltj;yo;uFOoyEJtOaxUF!Nd9)xcM`qeOX8k%~ zW@ZbmOv^f;w##T)+3@E-@V@Wo{XFA-?(4d~4{AcWdP>so_n0IT;zf3E%yvHQAMofp z{q%LZM;|xG|7iDKA-m0Z_L=a`+}0fz-A#CpmwfLoT`RtC$>ryZUq5U$=}D%?z2AVF zh8q;+WB~7f1?)VesF{o>{}MZtZVl*GI>f4wu_{yLmcOkyu4EOyio2!LGG6qu^?KGZ zN0#gPEv{8NmYa$l#|o|cxqILHGf7ip#;0@h=isqyMian?n&7JBQa-?z*E-sbzdX8W zv(={eFAG@Mmj2K6j(g{}91~}(KL7gVe34V^H*ORc6}fHA__l+s$DQ_Mq9@|BUc4S& z@h;#^(o*ff*yBut#AO}bWF}Yy^p$e0uXuM@K6|#Q1eMfhKgelB7O7XfV?4NK^2@tp zHJfq!=Y>v|OX!Av^z=)P^1|1m!@qu-bV)8>V!IK1;@^qe2lBE;^6tEGrM-%QT>0rZ zHDER`xqiRcu*`nI`Q=ex_OSvn$N$93#y$I5eN@*6`airiBh9_E2H*KGr2kIb|1jz0 z__lN3fFw(QM%0m2Pg2e+ z^H%zfS1rIFFO&;MeSiA5Y9hrmFXDho-yc`OM78hFf&uIHKfZ62pPQTE?+VCti8Le^ zmp(wKqfr^uga;Smjy}at#CtGb6XFJdUrw3u3Q;WY?O~3DS<}R@r)JjIB)jYrY>GDe zQbW!wgNTj~JB`P!ubD-GR~;xsW-VvMy_InIKyPy&g#Lq!u>F*7YJb+uP~H9zqc!gp z^9L;h^lkEg1wsdL1S;ZM-;RKk()}wkUQAHGJf9+joN?OwWBlW>(-9g-uP~AtZ7(&4 z=xyM=2n8FoXt1YTMiy(V3~Yx~Ge0unUWqJ}n6Pa8K(pi1&?Cp^tqz}vD<-M*KBJH( z?i=!A5)<116v9S;$vOR#6PI>e(zJWEg%sm0vH}!6m4|2OB5QWnf^e+0G&XVg)pyY5 zfa8W98yq%#Nh0@I%uqfuuHB3!C#L#m!OjA?`)zPG-LWnoZ&oDP^D&dbe#OI%wj(I- ze(L04S$9o*spf_B)9J;DjtOZY=w*%Y4U50H@q5Kv!p&E%Uw~ zdDCXGoGNa&h$krywgi59dm9}6rePQh*7gom;AFPrV+%TAd?Tsj;Or)qUz4x(3K z@lJY5Sna%lzbHe=QkUJry`k1H`?OQJ2_0rvH7f4LuB9DZRIx#>{1*4R4Vt^4PA>It z*NK)5i3diNyx1|n5n<=~nyY@D3S}AIms~_}{t387a?$=Og?klBxQDzx-j2Mt>c?!k zS$yNAbKx#K?W7bhjmYgb`=7LvHNg-1Au{hd*>#A&ci~J#pmPPy(yKuA<(SdLrD>G@ zT&~c7sVvhT;5?hHMY)#r%^rv-85Ukymo==dU$dz!Iy^p~{L#g-U&)Cz=(U@G%$A1Aw{f51E2l^RCSGklFrbV@%G%C?m8i z35eO?l+P+{n@fyr%)*UAs98o_qYG1r3RAL{Mf=dm!g=HM9hv4I?iXC#m z=JuAnv)73z0*GD@vh9I#7?#GHV+*Y(Zd|qcl~KSa2mCc~qt@R`Xh`id;Y>Y0P!Pp6 zj@N16mIR4`gAntGaP7rK&VF+~%i%AVa_YsU9*0N!uk3a1a9+-lYc1 z-$4=YUzLie0wqEwKJZW9b$F1da^(YU$wp)U<;vdTGv{YkLwt(N7uSlB$y1;;d%kGM zLvn7YAR%=9lR~|P2(arO0i2GRp<5as5KW987~$WrGfb)oBzy!rs;_$_^nl=AV#u0z z9MV~4`NnK@WoT<_Ju1S+Yf!m)Z<+L7odgLF4rX!~qNkmjmIk9B7X6Si2Jtm#6?@a~iIhE~w!7h~gx>y8c+YI=H9K2Xo zi286}lc0+!jVLv|t=a@vUpLnc;%xX|@)Bs>%ppQG2+K8klyxUo6cB??2cRCkjxC+$ zA><7Y{%U&ND4phdx>PI3w8!`MzGW$G7M0gR)P|?^3#bN9WrMhh=Ns#MOWHQa4IrBc z^f_B~chR09*k8>nnC>=JM~dXDM0@E)s3s;3 zOa=^|jpd;?5Wth4kmiMD%MgL+?wl|7a7>wM$#jVjmcO5AAYT&CUI8cgOj6y6W31e9voz=@2UipZ<4F?<2 z6<`7Yc)yVZ$$Q9Eu8(V3#B)U)d_UU8@XuC?Az{$HN*2FA9**Kui{xGIm%a^k z=G73{NeRj}ohGbF1)*`hh8w#!mO(v(^1qYjY<#p}9YT5O=lc)V?{*veDBk1MBAK#; zcG=|G-G701GqbCjpldYc$+3M-R6f-(Q9!Ou-!7@X*E9?KP?pSE8sF{5_jK5vxl#Ku zv$6Kdtj{FaE9>g#qqll^`Y4nBZ+j8P?;W9Nm>H5{$>oIeGk~z=&MW1(UE;r+Y@$C@ zx*SM=v%d%slZ(O{yGD^-_Br|VMn$Z>?g})Tx{f@g8DvcTF<;IbKpyHFJTVl7k?v3K zt4|TfUpUoUAfvS){~SPeO6HkgijOxDt^<7vnkg8|7Su`=spsfvkipCr=YwU^1s6=N zIFc>3E$L6_{k(IV92eSHme#IP_&ZFeogI}_gNzLl4Nk1Q_8RU(Q7P;U|6>1_3M6-b zbTj-S{^_ZU{gT5fA-YwdD&_ue3oPu4#fIPSb5^&c17YSm)>u(O08O{}WS{#CbieH& zn%^Ft%ObT)j-G_vOxH#PzS zp^HlDLL(cKB|xMVL)K`Zcdf$5l*oy9vE*&He6{-7$@(d<@K8DYG4xIh4e_7w7R7M` zDHyr{`1q;|et_h(8TMo57b+;>&Al%LtZ(z(TREAyZZ;I8=8o@g`y;{~Rj#Dd zjbA7^PBf#T+uSHQVEn|sDuCZwUfP1ntX~0d)GoC*1`MQT{c3!%3gNHCHH2a^iYdyD zo<<3!Uxm8ZlaK(^d!nVxiOrNO(i$=4cq?9`MfR(ZtrfnV8Op3%L5rPglvV-z?$5I3 z7z_y!^F5Xe$^zM~r)RmzB|<-5Ch76gimXBgR@;Orm%Y&~d&4@>kOUBH!2n|CxZPN1s&XP|;fZHBxX-~8q2E@Ed4*$eG7bPISDneDT zX?CpVe@cG>ZX-KYJ72J%2;wD{z;x{6i$N5GM_ZRf#5Ht7FCil9{Zb;5(ZqKUwe1>z4zCchy0xmCVm6#>4y;=K zpYzIZQuw@lrD6yF*BL^mKJH6+^V}IiyC&kO5Pu-Dd7cWJf2KM3A7$@&+6;RoWIzZ#X2?j!7_|{6d6=mZ2QK3!U4XVjX67dFpA2P(n#r2Y?X!< z4O*j~1*8Bm*^*U@iZ?tr5+-Z8oE1PnzA6-eQ?6yhh=^Uz-zf0p$1}nE6ZO=$f*WUS zJ*nS3StS`X^wpEy_R{e|UjIda-;J%n$0}IHSYsETrO`tAfrsVXrrMIRk3HfDR)sCn)i@=Y^~P(H5l_N>Vl`Z zLiDm`u|kEY0h;p%t*jGp6%zdl+L>R{NGQ!VLAwtH2&mLj7=@Ib5Jq~0zriWmUw8bs zT4FkBm7XckE)CBAi}zV;ziZULK3^brDYrdNA@35eGM-Hk+1PeU2!ndBe5|pC;kHxH z;}Jrf6pTMc{pBNFkVUNls#cCSH)u+T?7=ZWX`Kp~Dj`iEjnm7?fo$AjCyO#J zMvmKo`US|9ER*v>6UbrXagD`Ufbm%YZb3>oq(uK>nf#(=EyX3rw3sLjh7QoLk%XtS z@DL*rG$+fOg+D2zB(RM~V!}<8P~UY~-qfuB36Ll(F+&_)LNog_j$h(sv1nQUsPJ)A zGnT~QkT`r(Cy=GxnfC~7YLrU@8rW+v`RSbnOX3UGpeHAb&BjrI#JehFloB@IYV64+ z>%s`3*7WEBGm;9DE(rO^W8~VCe8qbICE^f@O{WJ9cuTqxjZ~14IHg1-ef6fWjp#HO zD7~Q8ApM!8@h(lovhtsvLe|Ti)b}|d4&%XNua<(*g^Q1@NOG9DuV#~Az^qG?tU2u4 z&t{mWvwj3bCp-F90;mW==oS-!iK5&6`~*jkmmpux@6Y$>-& z?3i(nz4pti)!2s(IZFx)1)6u#oK}mi7F)xAweLcok}v|;zrXymwd2w+Mnf|X5J4zL zr3)M2&rLQtI7U5(%DM;_Y&gyuk2yv`$0Xp^jTRY36M^Y|Bku(_u^z zKvn}pAlzjc4MT8K{w2_FQ`NX>(Mp-TZ9_3B2@vH zg3}fxn%<@Xth^PUR!vzfSW1urp=qVgDDjmrDS@uQEfNRqkc1&F1Mb>(h5m2g2+<2%$sAhGMHPB zDsub2YD!h4x0da%uywk8#v`U~n z-w^Pof)GU|9@Tg?iLv>?&_fFrBt=JcW!rFN^lBD-`m}VnoH86}aMZQ9Q-w&kp-I25 z@|ByUNC;CZZ0bu259n2&d$mpSA&QplF{FP?$%zq=azmg|nx>!1q^#{9q_L0bg&p!i zGbxv~NTi_+li;B#z$(C{liDj!hEV=&qY`cKQ{|%1{g8f@*<)dU#ILUd`Q$0(^13{D zTK)=(7QN&tD0;uzx-i65-#lGo_6&n0}^OGk4yp;9dzwyLB&EsF$79%Q6vGTty@y`|k z_$$p%DgpSRrDtv;(tQnT;-|T63r4{-7cgz+3mJ(=JO)hukR$3=K_1IZQ~!q;X?{{H zcw)uYXq)j2!OP5e#IOXil1*d)XFkfY0P~kz`HMu~*Tr)EJ`MIA@Qt?w&)Z@Kk()l2 zW2Jw_y@4cw1U4d>`my(kH_O!PDq@66IW8uqN=!jQ=qs)H;yBxaaun7_MLpAO+oCf6 z1Rw?|Yf z&3@L^ljFxJi(JOQ^m78@+LrHH9H8om8O218?%?emysc(O`R*SzF5FY&h8`vP?+5$} z4-sh3QzzCxlt+455jn}PqFc;Qixj$Fqot+yY7uYK)LAo{U{{RZmtq7B*>Q|NO((5L zb-ro0A&rVsMW*?k=6AtP*TUBzn^$uee{IqD9bZG+_GUXWy1U8JZJX4%t)$QtIkPT4vWcJH^db|M|VUUG%VejZMVoq55Ug zWvO4s44_`GwYhgM9xMTE8`I{dj%fgmm zGCqF|e@cOj)!8bgk00zP_U`U?yQQDeCsB80ymCdAp63z#6yL1a_j8}{L{P}k<4#k~ z+6~)rwEwmCX!e#YV!u7{q?B1DyWR}U3xU|##vUuGA;iY-+pMr=!PX&+p>AbL{xQh+ z{Q=LCrwvocZtC-W8&*teX*YA4PS^}uwEhmD?wc&0hC7Z$M?cGHTZ7Q>3$j^=&9U2e z#n_rI`fD;fw4*Syn(R0pc=xjlf7l!l zO*16tArDW?`x{s1Nmw-lOJ&BInGzP<=)dwWS$2%ju_o{=`4G=BGndAO2Tnw^(A>Yj zoVS?062aSdqOO{U$Ws&VP>Uw?%P51XW4BOW$siPpH6bir)$@y{Vz2`R!zQ4({(k+dWQ6R55Vv!h_M7%EBht1x$3X6;33K z1Q+%I2Uq$9u061-TO5B)msUpyt_TcB416VROF3vg-yqbtrB2X7z4k2W0d^;(i4Q+L zZ>kz!HTobj#PNuReZ%oB`79^~vF-CfcaoJS1 zIfDQs)`9VU-@&WijUv~0X}mnOTx_bw)ki&Gn2eAB9&nP>GLE3}kVyNJWs< z0w*yMB@PV9hFR*3l~S2>6Vs|Vu8)Haj*w;@0g`C8lmT@EkXD5*7=0x`3~K?tQh?C~ zH!00pcyMRctt7_A@ZIke2brBT3Q-;4wIqTv>bS6EW{Z#&m zGkLE#@KECiGRAAVF~)J#__5C049KGuA$q_3nBoSG>}NW<&>13ZJ{ z(I`a&gS@gICd0}zt`;rjdj<0SI3^dYo#1=Xdmvu}+m__>BEY*AERV^>>kUI3r)B}k zvk`y~`T+Aod12&S71XZ18MQ#@z`7I}k2To3@rC=dS&N0u-K;|Y z2Aavmgl^_|P`nE~XNqP-H|x0A4k_Libkppo2t;(~JxKnwrIqK{8F8?&c;gfcOi~sb z{SrlCBaWLt8w0xqO3QK-!@f@d4>QhBC z!Ot_#R+RnI_?7){UCONy8g9eLI|rQWnml{|M$foX+h$v^(I+bIx4{eVn)V7vNy4Gk zQRB?Ffq{_~v7l6ucK0%73-ykN8*NIqsUq))FP)FXC4t}!O_`lRDhfW_;!V>%%EU-Z z!ypp8Gy3|@@BIE{>f^*;!#ped-b$AHiIt1b5q`v1RLRby8j@K#4DzQ<6$nAA|G_B33;}h$3-@*okM+!D9=~3 zeS%~v6rI03Xjo}Z5G?8p37pE%hBa2xXbrf&2{hOI;G#ln1qG9YnqHug!`ZvgQp3IL62jWASXS`mz#Oj2JxHR|f9 zP5M-_M_mMarv)q<#iVq2+)f^$0rDW*Tep!Js=2FJXNNjYvhADo?~oSA?+Se<@gVUe z5F!k)*9`FDSvSaw|q?dZtI} z?GC|*q)&sFip$Ez-i7gVM-4XzaXi8V#akKI%&xy0a_HX<+jvP5n8T9j)>}aDFCCSa z@AO-p^7Xf!-_BnFcOZpp`4RscyWxuk*BReEQ)-{9J^gmMUgb#d5dD?T;=@5PZ2GT7 z=$9NiQ$t<)xJov;kmuAy!+n)w6E76(_T#r{Nker3s9X}U2u@M1o7+x${n4xqfUYk# zbk_szlL6^7=C|Dpf_iXU4S+Z`%isYL_7&bGH}7Tuo<|sN)4}ruu!b+jb_DO=8h}LS zTEL!QM zW{Oa)C6om|u34;~Ou$`cq4U0P(vQH=ticLaNgM&EWr5a9ka{dikUAW(9r|H2{sJp$ zAHn#E0@5u&I4EGt>)-?eM5{slJ1@xrqnG#auu`;hi@AC2B4m#arjCZiR6~F<;H*~2 z^=#7jmw-W$(ck{?ww)5^`&%XQ4YLFsj_(EMq4&sRE3AM!*kHF&q^CcjDg_zFw-`e{wOa+2m3_8rBH)Dd^XkvQYZ@8IsiHdu=V66Ho$ zKGFlQW557G5besV4Z3{}mno7i2ukzhl(UxLnYFNyWZ1tzv?FkH5P+HsKr;ZrJr7{6 zgpiF!A^QY~6h68eU|~bvA14Ej>Vk5r7b)%nL^G4dW0SA?g&wLm%BX|4@zJnPutpJT z4>i;+BK#rEB}Zj}T4!7%!;A`GvRR6Vgqm3!uMiuyKXkc%LKG4}PE|oAJ-BI>6Ts5V zoXh(dW9&zWou&dKn%;= ziM0e7=C^L|SirJnOh|uE(-0$flc+FA6Th~mIljrGtEsx8_4NXR5$S`-8?s}aD*`Bk+5Pc2-^gm|;C8T@=30q7|o z(>t~{gMid2o1b;i9v!yi(g68P*tt(@UjHHc@@EY?Dz6VvwJmO~J+SQPuSjcPdi%cxfLv{XPZJ zqdc>mfnP7j?-8Nca@ZyI680phS%ey;7QT!{pAZE%${|4l#8cFcTrqmR#^r|)5hwD! zp1r)d99}}eHRuWY?6*BQO$nV96}m5Z-$kxR7=gx2r#87qpfOet*c2FvP8%|madFxFkeOMtR2udz z6?}r3y1+zi;8J#;>&sTc<(K}p*%Z@Ya9Ni51#MlV}^tp(e z-Q%+$itDvE+nH>>c@#+!A=Zeo#w>jOvhd>VGzjDJmxP>VG1`s*Skr?k?V)YUGdk_j z5o1a0B0xq7z)TjBu7>>c5VA&2JFJ)4s#s)hrV%xl*XZq9N{xUoGXHn)0%rCn{$W31 ze_rUc2&L!W6xV6$AxD(-f6d?o1jIl%Ompv{Ap66e!5TH)-uinz( z`$Tw(JmNkTA>Ry_@p);2rgLL^cZiQaWujU{i2J+$r4;IytHFf;$dJZL#&jwIK$m!= z9%gBX9P~F6vVd@9H>{hz$#6~S;kc%5CffBZ z*fa}1BUZ@&@j~)(3;e}_Ay;Ha*GOl&!w%iaFhB&w71acQET@m`B0&AJQ3Tlt!n-Ux zKkYmKNT#B~me|aMwnaJUd^#Mev@(~W*eq%fQ;B1iJ@P5*e1}4dK^;t7!U85tfRS&; zd{`1{moU7nVpkR@I~eoU zN51a4x2OdFyv;CQq7w@+odh(JigP6t;rMD;d=;+8@i!B)#LfNgQ&6w_Yq@5hVLfp6 zTiaG~!EJyfFWTY>6{_bKZ6}CkfF#?m(`yi$Qgrkj)cy5_lDKHxM`2J(tg*#6dUbxx zzv#s^DpetffOU55SP|gdf8?rXgnLw?@v`5|vx?YR7lS+&`~(X~EO0~x+i5R_1Q2N0Nut`V94jO-jSezFis%T($fI|%nepwECD~C86#Xf!*ZCZ1f zmo0Q<;Y_vYs{rg}C3FoNeEu=Au)X*p3CE@azA9-)SpEtY{9|m{*)9>n_q+-$>o~FOubdo z7&FekxuwLOnwjBALAf*km68 zYLf6ISwKo z9DWKkaRxhl;8Jy#ragLo+;fzd-UfOK%A~^F(Q8rvxf<4MkZD8*KGDF(W zW>JsvgovTDAY{exh;Vpq&F;(uIP^{JDhKNf0{D;^bVddig(|Ey*0Z&M%``AUhFF5h zA9cNPr3oA+0(7t4`%?ouq{L+mFq~wPhfK&4vO8RZ+ss1jP-9oB@skPQIT>apYm7Gy z?9|M4L;xQFbiaEXZ!+PZ!#?ivA*pRaCk+6Ao2> zf}1WYn}~z$|6kvkza^C>=6k4M-;M8~mOx28WZ@AjrT40*wP_jtL0`FOIEtC&rTL&2 z+L3K!w5o5{J(F$YjmzMxQ>qWS_nK8)KlGBwTvzI@>rF2C3Hv5S{|MG^R%i6-;O>GA zIjUdGme+?=@O_qBg4NsG#P0RiO!5SHJ<-;y2A8Ec)61t|&FV|pV)gX_om*;P;c z+++ISUz@-)Q-Q&Jn0Yc`5qm)ntaQfD^IMObVPjwi?7OyZ@!+A=T-BVWUdR z*8M(Cl9kWP33GQ=N^?2Cs|joNOBpDxZ1?Ar`pqRJ!LRQJSO&T~wYhHzRK0m%BGM@>%rDn6yaclM zL>~_^kag-|7^jruM-Em?~Ulr(9P&pB{*QVZia7oo&tsqYq$`~4*gvIPmhI63^b%bN0QhXy-e*w=wsx&%hV#Vu;(m>-RnXAng1 zC2Fa`zb+q-ogc5(EDMSg3Cj&v?0I3lYi(S$)T&bqA)*SqKJv^fqI$WUyOSJ(draQu zVO%6{l((ydY*WAGWDs;jKf*v#y4g#5qdc0$ti46~*KRGuy6_`J<&LtOHFUo}%a#hp Yl`jGz%R9~u(Lcw{+`;~ZL;$@14{R%g2><{9 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor/dialogs/gmap/gmap.html b/yshop-drink-vue3/public/UEditor/dialogs/gmap/gmap.html new file mode 100644 index 0000000..4319a6f --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/gmap/gmap.html @@ -0,0 +1,89 @@ + + + + + + + + + + +
    + + + + + + +
    +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/help/help.css b/yshop-drink-vue3/public/UEditor/dialogs/help/help.css new file mode 100644 index 0000000..39ade49 --- /dev/null +++ b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/help/help.html b/yshop-drink-vue3/public/UEditor/dialogs/help/help.html new file mode 100644 index 0000000..0d6f9ef --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/help/help.html @@ -0,0 +1,82 @@ + + + + 帮助 + + + + + +
    +
    + + +
    +
    +
    +

    UEditor

    +

    +

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ctrl+b
    ctrl+c
    ctrl+x
    ctrl+v
    ctrl+y
    ctrl+z
    ctrl+i
    ctrl+u
    ctrl+a
    shift+enter
    alt+z
    +
    +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/help/help.js b/yshop-drink-vue3/public/UEditor/dialogs/help/help.js new file mode 100644 index 0000000..4ad9e76 --- /dev/null +++ b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/image/image.css b/yshop-drink-vue3/public/UEditor/dialogs/image/image.css new file mode 100644 index 0000000..33310ac --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/image/image.css @@ -0,0 +1,894 @@ +@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 { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); +} +#remote #url{ + width: 500px; + margin-bottom: 2px; +} +#remote #width, +#remote #height{ + width: 20px; + margin-left: 2px; + margin-right: 2px; +} +#remote #border, +#remote #vhSpace, +#remote #title{ + width: 180px; + margin-right: 5px; +} +#remote #lock{ +} +#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; +} + + +/* 图片搜索样式 */ +#search .searchBar { + width: 100%; + height: 30px; + margin: 10px 0 5px 0; + padding: 0; +} + +#search 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; +} +#search input.text:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); +} +#search input.searchTxt { + margin-left:5px; + padding-left: 5px; + background: #FFF; + width: 300px; + *width: 260px; + height: 21px; + line-height: 21px; + float: left; + dislay: block; +} + +#search .searchType { + width: 65px; + height: 28px; + padding:0; + line-height: 28px; + border: 1px solid #d7d7d7; + border-radius: 0; + vertical-align: top; + margin-left: 5px; + float: left; + dislay: block; +} + +#search #searchBtn, +#search #searchReset { + display: inline-block; + margin-bottom: 0; + margin-right: 5px; + padding: 4px 10px; + font-weight: 400; + text-align: center; + vertical-align: middle; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + font-size: 14px; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: top; + float: right; +} + +#search #searchBtn { + color: white; + border-color: #285e8e; + background-color: #3b97d7; +} +#search #searchReset { + color: #333; + border-color: #ccc; + background-color: #fff; +} +#search #searchBtn:hover { + background-color: #3276b1; +} +#search #searchReset:hover { + background-color: #eee; +} + +#search .msg { + margin-left: 5px; +} + +#search .searchList{ + width: 100%; + height: 300px; + overflow: hidden; + clear: both; +} +#search .searchList ul{ + margin:0; + padding:0; + list-style:none; + clear: both; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + zoom: 1; + position: relative; +} + +#search .searchList li { + list-style:none; + float: left; + display: block; + width: 115px; + margin: 5px 10px 5px 20px; + *margin: 5px 10px 5px 15px; + padding:0; + font-size: 12px; + box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + position: relative; + vertical-align: top; + text-align: center; + overflow: hidden; + cursor: pointer; + filter: alpha(Opacity=100); + -moz-opacity: 1; + opacity: 1; + border: 2px solid #eee; +} + +#search .searchList li.selected { + filter: alpha(Opacity=40); + -moz-opacity: 0.4; + opacity: 0.4; + border: 2px solid #00a0e9; +} + +#search .searchList li p { + background-color: #eee; + margin: 0; + padding: 0; + position: relative; + width:100%; + height:115px; + overflow: hidden; +} + +#search .searchList li p img { + cursor: pointer; + border: 0; +} + +#search .searchList li a { + color: #999; + border-top: 1px solid #F2F2F2; + background: #FAFAFA; + text-align: center; + display: block; + padding: 0 5px; + width: 105px; + height:32px; + line-height:32px; + white-space:nowrap; + text-overflow:ellipsis; + text-decoration: none; + overflow: hidden; + word-break: break-all; +} + +#search .searchList a:hover { + text-decoration: underline; + color: #333; +} +#search .searchList .clearFloat{ + clear: both; +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/image/image.html b/yshop-drink-vue3/public/UEditor/dialogs/image/image.html new file mode 100644 index 0000000..81f45ad --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/image/image.html @@ -0,0 +1,120 @@ + + + + + ueditor图片对话框 + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    + + +
    +
    +
    +
    + +   px +   px + +
    +
    + + px +
    +
    + + px +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + 0% + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
      +
    • +
    +
    +
    + + +
    +
    +
    + + + + +
    +
    + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/image/image.js b/yshop-drink-vue3/public/UEditor/dialogs/image/image.js new file mode 100644 index 0000000..b078d6a --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/image/image.js @@ -0,0 +1,1148 @@ +/** + * User: Jinqn + * Date: 14-04-08 + * Time: 下午16:34 + * 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片 + */ + +(function () { + + var remoteImage, + uploadImage, + onlineImage, + searchImage; + + window.onload = function () { + 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')); + }); + } + + var img = editor.selection.getRange().getClosedNode(); + if (img && img.tagName && img.tagName.toLowerCase() == 'img') { + setTabFocus('remote'); + } else { + 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 '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; + case 'search': + setAlign(editor.getOpt('imageManagerInsertAlign')); + searchImage = searchImage || new SearchImage(); + 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; + case 'search': + list = searchImage.getInsertList(); + remote = true; + 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(){ + updatePreview(); + if(locker.checked) { + var proportion =locker.getAttribute('data-proportion'); + $G('height').value = Math.round(this.value / proportion); + } else { + _this.updateLocker(); + } + }); + domUtils.on($G("height"), 'keyup', function(){ + updatePreview(); + if(locker.checked) { + var proportion =locker.getAttribute('data-proportion'); + $G('width').value = Math.round(this.value * proportion); + } else { + _this.updateLocker(); + } + }); + 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("word_img"), + 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 = parseInt($G('width').value, 10) || 0, + oh = parseInt($G('height').value, 10) || 0, + border = parseInt($G('border').value, 10) || 0, + title = $G('title').value, + preview = $G('preview'), + width, + height; + + url = utils.unhtmlForUrl(url); + title = utils.unhtml(title); + + 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']) { + return [{ + src: data['url'], + _src: data['url'], + width: data['width'] || '', + height: data['height'] || '', + border: data['border'] || '', + floatStyle: data['align'] || '', + vspace: data['vhSpace'] || '', + title: data['title'] || '', + alt: data['title'] || '', + style: "width:" + data['width'] + "px;height:" + data['height'] + "px;" + }]; + } 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 + 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) { + 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参数 + header['X_Requested_With'] = 'XMLHttpRequest'; + // HaoChuan9421 + if(editor.options.headers && Object.prototype.toString.apply(editor.options.headers) === "[object Object]"){ + for(var key in editor.options.headers){ + header[key] = editor.options.headers[key] + } + } + }); + + 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, + title: data.title, + 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; + } + }; + + /*搜索图片 */ + function SearchImage() { + this.init(); + } + SearchImage.prototype = { + init: function () { + this.initEvents(); + }, + initEvents: function(){ + var _this = this; + + /* 点击搜索按钮 */ + domUtils.on($G('searchBtn'), 'click', function(){ + var key = $G('searchTxt').value; + if(key && key != lang.searchRemind) { + _this.getImageData(); + } + }); + /* 点击清除妞 */ + domUtils.on($G('searchReset'), 'click', function(){ + $G('searchTxt').value = lang.searchRemind; + $G('searchListUl').innerHTML = ''; + $G('searchType').selectedIndex = 0; + }); + /* 搜索框聚焦 */ + domUtils.on($G('searchTxt'), 'focus', function(){ + var key = $G('searchTxt').value; + if(key && key == lang.searchRemind) { + $G('searchTxt').value = ''; + } + }); + /* 搜索框回车键搜索 */ + domUtils.on($G('searchTxt'), 'keydown', function(e){ + var keyCode = e.keyCode || e.which; + if (keyCode == 13) { + $G('searchBtn').click(); + } + }); + + /* 选中图片 */ + domUtils.on($G('searchList'), 'click', function(e){ + var target = e.target || e.srcElement, + li = target.parentNode.parentNode; + + if (li.tagName.toLowerCase() == 'li') { + if (domUtils.hasClass(li, 'selected')) { + domUtils.removeClasses(li, 'selected'); + } else { + domUtils.addClass(li, 'selected'); + } + } + }); + }, + encodeToGb2312:function (str){ + if(!str) return ''; + var strOut = "", + z = 'D2BBB6A18140C6DF814181428143CDF2D5C9C8FDC9CFCFC2D8A2B2BBD3EB8144D8A4B3F38145D7A8C7D2D8A7CAC08146C7F0B1FBD2B5B4D4B6ABCBBFD8A9814781488149B6AA814AC1BDD1CF814BC9A5D8AD814CB8F6D1BEE3DCD6D0814D814EB7E1814FB4AE8150C1D98151D8BC8152CDE8B5A4CEAAD6F78153C0F6BED9D8AF815481558156C4CB8157BEC38158D8B1C3B4D2E58159D6AECEDAD5A7BAF5B7A6C0D6815AC6B9C5D2C7C7815BB9D4815CB3CBD2D2815D815ED8BFBEC5C6F2D2B2CFB0CFE7815F816081618162CAE981638164D8C081658166816781688169816AC2F2C2D2816BC8E9816C816D816E816F817081718172817381748175C7AC8176817781788179817A817B817CC1CB817DD3E8D5F9817ECAC2B6FED8A1D3DABFF78180D4C6BBA5D8C1CEE5BEAE81818182D8A88183D1C7D0A9818481858186D8BDD9EFCDF6BFBA8187BDBBBAA5D2E0B2FABAE0C4B68188CFEDBEA9CDA4C1C18189818A818BC7D7D9F1818CD9F4818D818E818F8190C8CBD8E9819181928193D2DACAB2C8CAD8ECD8EAD8C6BDF6C6CDB3F08194D8EBBDF1BDE98195C8D4B4D381968197C2D88198B2D6D7D0CACBCBFBD5CCB8B6CFC98199819A819BD9DAD8F0C7AA819CD8EE819DB4FAC1EED2D4819E819FD8ED81A0D2C7D8EFC3C781A181A281A3D1F681A4D6D9D8F281A5D8F5BCFEBCDB81A681A781A8C8CE81A9B7DD81AAB7C281ABC6F381AC81AD81AE81AF81B081B181B2D8F8D2C181B381B4CEE9BCBFB7FCB7A5D0DD81B581B681B781B881B9D6DAD3C5BBEFBBE1D8F181BA81BBC9A1CEB0B4AB81BCD8F381BDC9CBD8F6C2D7D8F781BE81BFCEB1D8F981C081C181C2B2AEB9C081C3D9A381C4B0E981C5C1E681C6C9EC81C7CBC581C8CBC6D9A481C981CA81CB81CC81CDB5E881CE81CFB5AB81D081D181D281D381D481D5CEBBB5CDD7A1D7F4D3D381D6CCE581D7BACE81D8D9A2D9DCD3E0D8FDB7F0D7F7D8FED8FAD9A1C4E381D981DAD3B6D8F4D9DD81DBD8FB81DCC5E581DD81DEC0D081DF81E0D1F0B0DB81E181E2BCD1D9A681E3D9A581E481E581E681E7D9ACD9AE81E8D9ABCAB981E981EA81EBD9A9D6B681EC81ED81EEB3DED9A881EFC0FD81F0CACC81F1D9AA81F2D9A781F381F4D9B081F581F6B6B181F781F881F9B9A981FAD2C081FB81FCCFC081FD81FEC2C28240BDC4D5ECB2E0C7C8BFEBD9AD8241D9AF8242CEEABAEE82438244824582468247C7D682488249824A824B824C824D824E824F8250B1E3825182528253B4D9B6EDD9B48254825582568257BFA182588259825AD9DEC7CEC0FED9B8825B825C825D825E825FCBD7B7FD8260D9B58261D9B7B1A3D3E1D9B98262D0C58263D9B682648265D9B18266D9B2C1A9D9B382678268BCF3D0DEB8A98269BEE3826AD9BD826B826C826D826ED9BA826FB0B3827082718272D9C28273827482758276827782788279827A827B827C827D827E8280D9C4B1B68281D9BF82828283B5B98284BEF3828582868287CCC8BAF2D2D08288D9C38289828ABDE8828BB3AB828C828D828ED9C5BEEB828FD9C6D9BBC4DF8290D9BED9C1D9C0829182928293829482958296829782988299829A829BD5AE829CD6B5829DC7E3829E829F82A082A1D9C882A282A382A4BCD9D9CA82A582A682A7D9BC82A8D9CBC6AB82A982AA82AB82AC82ADD9C982AE82AF82B082B1D7F682B2CDA382B382B482B582B682B782B882B982BABDA182BB82BC82BD82BE82BF82C0D9CC82C182C282C382C482C582C682C782C882C9C5BCCDB582CA82CB82CCD9CD82CD82CED9C7B3A5BFFE82CF82D082D182D2B8B582D382D4C0FC82D582D682D782D8B0F882D982DA82DB82DC82DD82DE82DF82E082E182E282E382E482E582E682E782E882E982EA82EB82EC82EDB4F682EED9CE82EFD9CFB4A2D9D082F082F1B4DF82F282F382F482F582F6B0C182F782F882F982FA82FB82FC82FDD9D1C9B582FE8340834183428343834483458346834783488349834A834B834C834D834E834F83508351CFF1835283538354835583568357D9D283588359835AC1C5835B835C835D835E835F836083618362836383648365D9D6C9AE8366836783688369D9D5D9D4D9D7836A836B836C836DCBDB836EBDA9836F8370837183728373C6A7837483758376837783788379837A837B837C837DD9D3D9D8837E83808381D9D9838283838384838583868387C8E583888389838A838B838C838D838E838F839083918392839383948395C0DC8396839783988399839A839B839C839D839E839F83A083A183A283A383A483A583A683A783A883A983AA83AB83AC83AD83AE83AF83B083B183B2B6F9D8A3D4CA83B3D4AAD0D6B3E4D5D783B4CFC8B9E283B5BFCB83B6C3E283B783B883B9B6D283BA83BBCDC3D9EED9F083BC83BD83BEB5B383BFB6B583C083C183C283C383C4BEA483C583C6C8EB83C783C8C8AB83C983CAB0CBB9ABC1F9D9E283CBC0BCB9B283CCB9D8D0CBB1F8C6E4BEDFB5E4D7C883CDD1F8BCE6CADE83CE83CFBCBDD9E6D8E783D083D1C4DA83D283D3B8D4C8BD83D483D5B2E1D4D983D683D783D883D9C3B083DA83DBC3E1DAA2C8DF83DCD0B483DDBEFCC5A983DE83DF83E0B9DA83E1DAA383E2D4A9DAA483E383E483E583E683E7D9FBB6AC83E883E9B7EBB1F9D9FCB3E5BEF683EABFF6D2B1C0E483EB83EC83EDB6B3D9FED9FD83EE83EFBEBB83F083F183F2C6E083F3D7BCDAA183F4C1B983F5B5F2C1E883F683F7BCF583F8B4D583F983FA83FB83FC83FD83FE844084418442C1DD8443C4FD84448445BCB8B7B284468447B7EF84488449844A844B844C844DD9EC844EC6BE844FBFADBBCB84508451B5CA8452DBC9D0D78453CDB9B0BCB3F6BBF7DBCABAAF8454D4E4B5B6B5F3D8D6C8D084558456B7D6C7D0D8D78457BFAF84588459DBBBD8D8845A845BD0CCBBAE845C845D845EEBBEC1D0C1F5D4F2B8D5B4B4845FB3F584608461C9BE846284638464C5D0846584668467C5D9C0FB8468B1F08469D8D9B9CE846AB5BD846B846CD8DA846D846ED6C6CBA2C8AFC9B2B4CCBFCC846FB9F48470D8DBD8DCB6E7BCC1CCEA847184728473847484758476CFF78477D8DDC7B084788479B9D0BDA3847A847BCCDE847CC6CA847D847E848084818482D8E08483D8DE84848485D8DF848684878488B0FE8489BEE7848ACAA3BCF4848B848C848D848EB8B1848F8490B8EE849184928493849484958496849784988499849AD8E2849BBDCB849CD8E4D8E3849D849E849F84A084A1C5FC84A284A384A484A584A684A784A8D8E584A984AAD8E684AB84AC84AD84AE84AF84B084B1C1A684B2C8B0B0ECB9A6BCD3CEF1DBBDC1D384B384B484B584B6B6AFD6FAC5ACBDD9DBBEDBBF84B784B884B9C0F8BEA2C0CD84BA84BB84BC84BD84BE84BF84C084C184C284C3DBC0CAC684C484C584C6B2AA84C784C884C9D3C284CAC3E384CBD1AB84CC84CD84CE84CFDBC284D0C0D584D184D284D3DBC384D4BFB184D584D684D784D884D984DAC4BC84DB84DC84DD84DEC7DA84DF84E084E184E284E384E484E584E684E784E884E9DBC484EA84EB84EC84ED84EE84EF84F084F1D9E8C9D784F284F384F4B9B4CEF0D4C884F584F684F784F8B0FCB4D284F9D0D984FA84FB84FC84FDD9E984FEDECBD9EB8540854185428543D8B0BBAFB1B18544B3D7D8CE85458546D4D185478548BDB3BFEF8549CFBB854A854BD8D0854C854D854EB7CB854F85508551D8D185528553855485558556855785588559855A855BC6A5C7F8D2BD855C855DD8D2C4E4855ECAAE855FC7A78560D8A68561C9FDCEE7BBDCB0EB856285638564BBAAD0AD8565B1B0D7E4D7BF8566B5A5C2F4C4CF85678568B2A98569B2B7856AB1E5DFB2D5BCBFA8C2ACD8D5C2B1856BD8D4CED4856CDAE0856DCEC0856E856FD8B4C3AED3A1CEA38570BCB4C8B4C2D18571BEEDD0B68572DAE18573857485758576C7E485778578B3A78579B6F2CCFCC0FA857A857BC0F7857CD1B9D1E1D8C7857D857E85808581858285838584B2DE85858586C0E58587BAF185888589D8C8858AD4AD858B858CCFE1D8C9858DD8CACFC3858EB3F8BEC7858F859085918592D8CB8593859485958596859785988599DBCC859A859B859C859DC8A5859E859F85A0CFD885A1C8FEB2CE85A285A385A485A585A6D3D6B2E6BCB0D3D1CBABB7B485A785A885A9B7A285AA85ABCAE585ACC8A1CADCB1E4D0F085ADC5D185AE85AF85B0DBC5B5FE85B185B2BFDAB9C5BEE4C1ED85B3DFB6DFB5D6BBBDD0D5D9B0C8B6A3BFC9CCA8DFB3CAB7D3D285B4D8CFD2B6BAC5CBBECCBE85B5DFB7B5F0DFB485B685B785B8D3F585B9B3D4B8F785BADFBA85BBBACFBCAAB5F585BCCDACC3FBBAF3C0F4CDC2CFF2DFB8CFC585BDC2C0DFB9C2F085BE85BF85C0BEFD85C1C1DFCDCCD2F7B7CDDFC185C2DFC485C385C4B7F1B0C9B6D6B7D485C5BAACCCFDBFD4CBB1C6F485C6D6A8DFC585C7CEE2B3B385C885C9CEFCB4B585CACEC7BAF085CBCEE185CCD1BD85CD85CEDFC085CF85D0B4F485D1B3CA85D2B8E6DFBB85D385D485D585D6C4C585D7DFBCDFBDDFBEC5BBDFBFDFC2D4B1DFC385D8C7BACED885D985DA85DB85DC85DDC4D885DEDFCA85DFDFCF85E0D6DC85E185E285E385E485E585E685E785E8DFC9DFDACEB685E9BAC7DFCEDFC8C5DE85EA85EBC9EBBAF4C3FC85EC85EDBED785EEDFC685EFDFCD85F0C5D885F185F285F385F4D5A6BACD85F5BECCD3BDB8C085F6D6E485F7DFC7B9BEBFA785F885F9C1FCDFCBDFCC85FADFD085FB85FC85FD85FE8640DFDBDFE58641DFD7DFD6D7C9DFE3DFE4E5EBD2A7DFD28642BFA98643D4DB8644BFC8DFD4864586468647CFCC86488649DFDD864AD1CA864BDFDEB0A7C6B7DFD3864CBAE5864DB6DFCDDBB9FED4D5864E864FDFDFCFECB0A5DFE7DFD1D1C6DFD5DFD8DFD9DFDC8650BBA98651DFE0DFE18652DFE2DFE6DFE8D3B486538654865586568657B8E7C5B6DFEAC9DAC1A8C4C486588659BFDECFF8865A865B865CD5DCDFEE865D865E865F866086618662B2B88663BADFDFEC8664DBC18665D1E48666866786688669CBF4B4BD866AB0A6866B866C866D866E866FDFF1CCC6DFF286708671DFED867286738674867586768677DFE986788679867A867BDFEB867CDFEFDFF0BBBD867D867EDFF386808681DFF48682BBA38683CADBCEA8E0A7B3AA8684E0A6868586868687E0A186888689868A868BDFFE868CCDD9DFFC868DDFFA868EBFD0D7C4868FC9CC86908691DFF8B0A186928693869486958696DFFD869786988699869ADFFBE0A2869B869C869D869E869FE0A886A086A186A286A3B7C886A486A5C6A1C9B6C0B2DFF586A686A7C5BE86A8D8C4DFF9C4F686A986AA86AB86AC86AD86AEE0A3E0A4E0A5D0A586AF86B0E0B4CCE486B1E0B186B2BFA6E0AFCEB9E0ABC9C686B386B4C0AEE0AEBAEDBAB0E0A986B586B686B7DFF686B8E0B386B986BAE0B886BB86BC86BDB4ADE0B986BE86BFCFB2BAC886C0E0B086C186C286C386C486C586C686C7D0FA86C886C986CA86CB86CC86CD86CE86CF86D0E0AC86D1D4FB86D2DFF786D3C5E786D4E0AD86D5D3F786D6E0B6E0B786D786D886D986DA86DBE0C4D0E186DC86DD86DEE0BC86DF86E0E0C9E0CA86E186E286E3E0BEE0AAC9A4E0C186E4E0B286E586E686E786E886E9CAC8E0C386EAE0B586EBCECB86ECCBC3E0CDE0C6E0C286EDE0CB86EEE0BAE0BFE0C086EF86F0E0C586F186F2E0C7E0C886F3E0CC86F4E0BB86F586F686F786F886F9CBD4E0D586FAE0D6E0D286FB86FC86FD86FE87408741E0D0BCCE87428743E0D18744B8C2D8C587458746874787488749874A874B874CD0EA874D874EC2EF874F8750E0CFE0BD875187528753E0D4E0D387548755E0D78756875787588759E0DCE0D8875A875B875CD6F6B3B0875DD7EC875ECBBB875F8760E0DA8761CEFB876287638764BAD987658766876787688769876A876B876C876D876E876F8770E0E1E0DDD2AD87718772877387748775E0E287768777E0DBE0D9E0DF87788779E0E0877A877B877C877D877EE0DE8780E0E4878187828783C6F7D8ACD4EBE0E6CAC98784878587868787E0E587888789878A878BB8C1878C878D878E878FE0E7E0E887908791879287938794879587968797E0E9E0E387988799879A879B879C879D879EBABFCCE7879F87A087A1E0EA87A287A387A487A587A687A787A887A987AA87AB87AC87AD87AE87AF87B0CFF987B187B287B387B487B587B687B787B887B987BA87BBE0EB87BC87BD87BE87BF87C087C187C2C8C287C387C487C587C6BDC087C787C887C987CA87CB87CC87CD87CE87CF87D087D187D287D3C4D287D487D587D687D787D887D987DA87DB87DCE0EC87DD87DEE0ED87DF87E0C7F4CBC487E1E0EEBBD8D8B6D2F2E0EFCDC587E2B6DA87E387E487E587E687E787E8E0F187E9D4B087EA87EBC0A7B4D187EC87EDCEA7E0F087EE87EF87F0E0F2B9CC87F187F2B9FACDBCE0F387F387F487F5C6D4E0F487F6D4B287F7C8A6E0F6E0F587F887F987FA87FB87FC87FD87FE8840884188428843884488458846884788488849E0F7884A884BCDC1884C884D884ECAA5884F885088518852D4DADBD7DBD98853DBD8B9E7DBDCDBDDB5D888548855DBDA8856885788588859885ADBDBB3A1DBDF885B885CBBF8885DD6B7885EDBE0885F886088618862BEF988638864B7BB8865DBD0CCAEBFB2BBB5D7F8BFD38866886788688869886ABFE9886B886CBCE1CCB3DBDEB0D3CEEBB7D8D7B9C6C2886D886EC0A4886FCCB98870DBE7DBE1C6BADBE38871DBE88872C5F7887388748875DBEA88768877DBE9BFC088788879887ADBE6DBE5887B887C887D887E8880B4B9C0ACC2A2DBE2DBE48881888288838884D0CDDBED88858886888788888889C0DDDBF2888A888B888C888D888E888F8890B6E28891889288938894DBF3DBD2B9B8D4ABDBEC8895BFD1DBF08896DBD18897B5E68898DBEBBFE58899889A889BDBEE889CDBF1889D889E889FDBF988A088A188A288A388A488A588A688A788A8B9A1B0A388A988AA88AB88AC88AD88AE88AFC2F188B088B1B3C7DBEF88B288B3DBF888B4C6D2DBF488B588B6DBF5DBF7DBF688B788B8DBFE88B9D3F2B2BA88BA88BB88BCDBFD88BD88BE88BF88C088C188C288C388C4DCA488C5DBFB88C688C788C888C9DBFA88CA88CB88CCDBFCC5E0BBF988CD88CEDCA388CF88D0DCA588D1CCC388D288D388D4B6D1DDC088D588D688D7DCA188D8DCA288D988DA88DBC7B588DC88DD88DEB6E988DF88E088E1DCA788E288E388E488E5DCA688E6DCA9B1A488E788E8B5CC88E988EA88EB88EC88EDBFB088EE88EF88F088F188F2D1DF88F388F488F588F6B6C288F788F888F988FA88FB88FC88FD88FE894089418942894389448945DCA88946894789488949894A894B894CCBFAEBF3894D894E894FCBDC89508951CBFE895289538954CCC189558956895789588959C8FB895A895B895C895D895E895FDCAA89608961896289638964CCEEDCAB89658966896789688969896A896B896C896D896E896F897089718972897389748975DBD38976DCAFDCAC8977BEB38978CAFB8979897A897BDCAD897C897D897E89808981898289838984C9CAC4B989858986898789888989C7BDDCAE898A898B898CD4F6D0E6898D898E898F89908991899289938994C4ABB6D589958996899789988999899A899B899C899D899E899F89A089A189A289A389A489A589A6DBD489A789A889A989AAB1DA89AB89AC89ADDBD589AE89AF89B089B189B289B389B489B589B689B789B8DBD689B989BA89BBBABE89BC89BD89BE89BF89C089C189C289C389C489C589C689C789C889C9C8C089CA89CB89CC89CD89CE89CFCABFC8C989D0D7B389D1C9F989D289D3BFC789D489D5BAF889D689D7D2BC89D889D989DA89DB89DC89DD89DE89DFE2BA89E0B4A689E189E2B1B889E389E489E589E689E7B8B489E8CFC489E989EA89EB89ECD9E7CFA6CDE289ED89EED9EDB6E089EFD2B989F089F1B9BB89F289F389F489F5E2B9E2B789F6B4F389F7CCECCCABB7F289F8D8B2D1EBBABB89F9CAA789FA89FBCDB789FC89FDD2C4BFE4BCD0B6E189FEDEC58A408A418A428A43DEC6DBBC8A44D1D98A458A46C6E6C4CEB7EE8A47B7DC8A488A49BFFCD7E08A4AC6F58A4B8A4CB1BCDEC8BDB1CCD7DECA8A4DDEC98A4E8A4F8A508A518A52B5EC8A53C9DD8A548A55B0C28A568A578A588A598A5A8A5B8A5C8A5D8A5E8A5F8A608A618A62C5AEC5AB8A63C4CC8A64BCE9CBFD8A658A668A67BAC38A688A698A6AE5F9C8E7E5FACDFD8A6BD7B1B8BEC2E88A6CC8D18A6D8A6EE5FB8A6F8A708A718A72B6CABCCB8A738A74D1FDE6A18A75C3EE8A768A778A788A79E6A48A7A8A7B8A7C8A7DE5FEE6A5CDD78A7E8A80B7C1E5FCE5FDE6A38A818A82C4DDE6A88A838A84E6A78A858A868A878A888A898A8AC3C38A8BC6DE8A8C8A8DE6AA8A8E8A8F8A908A918A928A938A94C4B78A958A968A97E6A2CABC8A988A998A9A8A9BBDE3B9C3E6A6D0D5CEAF8A9C8A9DE6A9E6B08A9ED2A68A9FBDAAE6AD8AA08AA18AA28AA38AA4E6AF8AA5C0D18AA68AA7D2CC8AA88AA98AAABCA78AAB8AAC8AAD8AAE8AAF8AB08AB18AB28AB38AB48AB58AB6E6B18AB7D2F68AB88AB98ABAD7CB8ABBCDFE8ABCCDDEC2A6E6ABE6ACBDBFE6AEE6B38ABD8ABEE6B28ABF8AC08AC18AC2E6B68AC3E6B88AC48AC58AC68AC7C4EF8AC88AC98ACAC4C88ACB8ACCBEEAC9EF8ACD8ACEE6B78ACFB6F08AD08AD18AD2C3E48AD38AD48AD58AD68AD78AD88AD9D3E9E6B48ADAE6B58ADBC8A28ADC8ADD8ADE8ADF8AE0E6BD8AE18AE28AE3E6B98AE48AE58AE68AE78AE8C6C58AE98AEACDF1E6BB8AEB8AEC8AED8AEE8AEF8AF08AF18AF28AF38AF4E6BC8AF58AF68AF78AF8BBE98AF98AFA8AFB8AFC8AFD8AFE8B40E6BE8B418B428B438B44E6BA8B458B46C0B78B478B488B498B4A8B4B8B4C8B4D8B4E8B4FD3A4E6BFC9F4E6C38B508B51E6C48B528B538B548B55D0F68B568B578B588B598B5A8B5B8B5C8B5D8B5E8B5F8B608B618B628B638B648B658B668B67C3BD8B688B698B6A8B6B8B6C8B6D8B6EC3C4E6C28B6F8B708B718B728B738B748B758B768B778B788B798B7A8B7B8B7CE6C18B7D8B7E8B808B818B828B838B84E6C7CFB18B85EBF48B868B87E6CA8B888B898B8A8B8B8B8CE6C58B8D8B8EBCDEC9A98B8F8B908B918B928B938B94BCB58B958B96CFD38B978B988B998B9A8B9BE6C88B9CE6C98B9DE6CE8B9EE6D08B9F8BA08BA1E6D18BA28BA38BA4E6CBB5D58BA5E6CC8BA68BA7E6CF8BA88BA9C4DB8BAAE6C68BAB8BAC8BAD8BAE8BAFE6CD8BB08BB18BB28BB38BB48BB58BB68BB78BB88BB98BBA8BBB8BBC8BBD8BBE8BBF8BC08BC18BC28BC38BC48BC58BC6E6D28BC78BC88BC98BCA8BCB8BCC8BCD8BCE8BCF8BD08BD18BD2E6D4E6D38BD38BD48BD58BD68BD78BD88BD98BDA8BDB8BDC8BDD8BDE8BDF8BE08BE18BE28BE38BE48BE58BE68BE78BE88BE98BEA8BEB8BECE6D58BEDD9F88BEE8BEFE6D68BF08BF18BF28BF38BF48BF58BF68BF7E6D78BF88BF98BFA8BFB8BFC8BFD8BFE8C408C418C428C438C448C458C468C47D7D3E6DD8C48E6DEBFD7D4D08C49D7D6B4E6CBEFE6DAD8C3D7CED0A28C4AC3CF8C4B8C4CE6DFBCBEB9C2E6DBD1A78C4D8C4EBAA2C2CF8C4FD8AB8C508C518C52CAEBE5EE8C53E6DC8C54B7F58C558C568C578C58C8E68C598C5AC4F58C5B8C5CE5B2C4FE8C5DCBFCE5B3D5AC8C5ED3EECAD8B0B28C5FCBCECDEA8C608C61BAEA8C628C638C64E5B58C65E5B48C66D7DAB9D9D6E6B6A8CDF0D2CBB1A6CAB58C67B3E8C9F3BFCDD0FBCAD2E5B6BBC28C688C698C6ACFDCB9AC8C6B8C6C8C6D8C6ED4D78C6F8C70BAA6D1E7CFFCBCD28C71E5B7C8DD8C728C738C74BFEDB1F6CBDE8C758C76BCC58C77BCC4D2FAC3DCBFDC8C788C798C7A8C7BB8BB8C7C8C7D8C7EC3C28C80BAAED4A28C818C828C838C848C858C868C878C888C89C7DEC4AFB2EC8C8AB9D18C8B8C8CE5BBC1C88C8D8C8ED5AF8C8F8C908C918C928C93E5BC8C94E5BE8C958C968C978C988C998C9A8C9BB4E7B6D4CBC2D1B0B5BC8C9C8C9DCAD98C9EB7E28C9F8CA0C9E48CA1BDAB8CA28CA3CEBED7F08CA48CA58CA68CA7D0A18CA8C9D98CA98CAAB6FBE6D8BCE28CABB3BE8CACC9D08CADE6D9B3A28CAE8CAF8CB08CB1DECC8CB2D3C8DECD8CB3D2A28CB48CB58CB68CB7DECE8CB88CB98CBA8CBBBECD8CBC8CBDDECF8CBE8CBF8CC0CAACD2FCB3DFE5EAC4E1BEA1CEB2C4F2BED6C6A8B2E38CC18CC2BED38CC38CC4C7FCCCEBBDECCEDD8CC58CC6CABAC6C1E5ECD0BC8CC78CC88CC9D5B98CCA8CCB8CCCE5ED8CCD8CCE8CCF8CD0CAF48CD1CDC0C2C58CD2E5EF8CD3C2C4E5F08CD48CD58CD68CD78CD88CD98CDAE5F8CDCD8CDBC9BD8CDC8CDD8CDE8CDF8CE08CE18CE2D2D9E1A88CE38CE48CE58CE6D3EC8CE7CBEAC6F18CE88CE98CEA8CEB8CECE1AC8CED8CEE8CEFE1A7E1A98CF08CF1E1AAE1AF8CF28CF3B2ED8CF4E1ABB8DAE1ADE1AEE1B0B5BAE1B18CF58CF68CF78CF88CF9E1B3E1B88CFA8CFB8CFC8CFD8CFED1D28D40E1B6E1B5C1EB8D418D428D43E1B78D44D4C08D45E1B28D46E1BAB0B68D478D488D498D4AE1B48D4BBFF98D4CE1B98D4D8D4EE1BB8D4F8D508D518D528D538D54E1BE8D558D568D578D588D598D5AE1BC8D5B8D5C8D5D8D5E8D5F8D60D6C58D618D628D638D648D658D668D67CFBF8D688D69E1BDE1BFC2CD8D6AB6EB8D6BD3F88D6C8D6DC7CD8D6E8D6FB7E58D708D718D728D738D748D758D768D778D788D79BEFE8D7A8D7B8D7C8D7D8D7E8D80E1C0E1C18D818D82E1C7B3E78D838D848D858D868D878D88C6E98D898D8A8D8B8D8C8D8DB4DE8D8ED1C28D8F8D908D918D92E1C88D938D94E1C68D958D968D978D988D99E1C58D9AE1C3E1C28D9BB1C08D9C8D9D8D9ED5B8E1C48D9F8DA08DA18DA28DA3E1CB8DA48DA58DA68DA78DA88DA98DAA8DABE1CCE1CA8DAC8DAD8DAE8DAF8DB08DB18DB28DB3EFFA8DB48DB5E1D3E1D2C7B68DB68DB78DB88DB98DBA8DBB8DBC8DBD8DBE8DBF8DC0E1C98DC18DC2E1CE8DC3E1D08DC48DC58DC68DC78DC88DC98DCA8DCB8DCC8DCD8DCEE1D48DCFE1D1E1CD8DD08DD1E1CF8DD28DD38DD48DD5E1D58DD68DD78DD88DD98DDA8DDB8DDC8DDD8DDE8DDF8DE08DE18DE2E1D68DE38DE48DE58DE68DE78DE88DE98DEA8DEB8DEC8DED8DEE8DEF8DF08DF18DF28DF38DF48DF58DF68DF78DF8E1D78DF98DFA8DFBE1D88DFC8DFD8DFE8E408E418E428E438E448E458E468E478E488E498E4A8E4B8E4C8E4D8E4E8E4F8E508E518E528E538E548E55E1DA8E568E578E588E598E5A8E5B8E5C8E5D8E5E8E5F8E608E618E62E1DB8E638E648E658E668E678E688E69CEA18E6A8E6B8E6C8E6D8E6E8E6F8E708E718E728E738E748E758E76E7DD8E77B4A8D6DD8E788E79D1B2B3B28E7A8E7BB9A4D7F3C7C9BEDEB9AE8E7CCED78E7D8E7EB2EEDBCF8E80BCBAD2D1CBC8B0CD8E818E82CFEF8E838E848E858E868E87D9E3BDED8E888E89B1D2CAD0B2BC8E8ACBA7B7AB8E8BCAA68E8C8E8D8E8ECFA38E8F8E90E0F8D5CAE0FB8E918E92E0FAC5C1CCFB8E93C1B1E0F9D6E3B2AFD6C4B5DB8E948E958E968E978E988E998E9A8E9BB4F8D6A18E9C8E9D8E9E8E9F8EA0CFAFB0EF8EA18EA2E0FC8EA38EA48EA58EA68EA7E1A1B3A38EA88EA9E0FDE0FEC3B18EAA8EAB8EAC8EADC3DD8EAEE1A2B7F98EAF8EB08EB18EB28EB38EB4BBCF8EB58EB68EB78EB88EB98EBA8EBBE1A3C4BB8EBC8EBD8EBE8EBF8EC0E1A48EC18EC2E1A58EC38EC4E1A6B4B18EC58EC68EC78EC88EC98ECA8ECB8ECC8ECD8ECE8ECF8ED08ED18ED28ED3B8C9C6BDC4EA8ED4B2A28ED5D0D28ED6E7DBBBC3D3D7D3C48ED7B9E3E2CF8ED88ED98EDAD7AF8EDBC7ECB1D38EDC8EDDB4B2E2D18EDE8EDF8EE0D0F2C2AEE2D08EE1BFE2D3A6B5D7E2D2B5EA8EE2C3EDB8FD8EE3B8AE8EE4C5D3B7CFE2D48EE58EE68EE78EE8E2D3B6C8D7F98EE98EEA8EEB8EEC8EEDCDA58EEE8EEF8EF08EF18EF2E2D88EF3E2D6CAFCBFB5D3B9E2D58EF48EF58EF68EF7E2D78EF88EF98EFA8EFB8EFC8EFD8EFE8F408F418F42C1AEC0C88F438F448F458F468F478F48E2DBE2DAC0AA8F498F4AC1CE8F4B8F4C8F4D8F4EE2DC8F4F8F508F518F528F538F548F558F568F578F588F598F5AE2DD8F5BE2DE8F5C8F5D8F5E8F5F8F608F618F628F638F64DBC88F65D1D3CDA28F668F67BDA88F688F698F6ADEC3D8A5BFAADBCDD2ECC6FAC5AA8F6B8F6C8F6DDEC48F6EB1D7DFAE8F6F8F708F71CABD8F72DFB18F73B9AD8F74D2FD8F75B8A5BAEB8F768F77B3DA8F788F798F7AB5DCD5C58F7B8F7C8F7D8F7EC3D6CFD2BBA18F80E5F3E5F28F818F82E5F48F83CDE48F84C8F58F858F868F878F888F898F8A8F8BB5AFC7BF8F8CE5F68F8D8F8E8F8FECB08F908F918F928F938F948F958F968F978F988F998F9A8F9B8F9C8F9D8F9EE5E68F9FB9E9B5B18FA0C2BCE5E8E5E7E5E98FA18FA28FA38FA4D2CD8FA58FA68FA7E1EAD0CE8FA8CDAE8FA9D1E58FAA8FABB2CAB1EB8FACB1F2C5ED8FAD8FAED5C3D3B08FAFE1DC8FB08FB18FB2E1DD8FB3D2DB8FB4B3B9B1CB8FB58FB68FB7CDF9D5F7E1DE8FB8BEB6B4FD8FB9E1DFBADCE1E0BBB2C2C9E1E18FBA8FBB8FBCD0EC8FBDCDBD8FBE8FBFE1E28FC0B5C3C5C7E1E38FC18FC2E1E48FC38FC48FC58FC6D3F98FC78FC88FC98FCA8FCB8FCCE1E58FCDD1AD8FCE8FCFE1E6CEA28FD08FD18FD28FD38FD48FD5E1E78FD6B5C28FD78FD88FD98FDAE1E8BBD58FDB8FDC8FDD8FDE8FDFD0C4E2E0B1D8D2E48FE08FE1E2E18FE28FE3BCC9C8CC8FE4E2E3ECFEECFDDFAF8FE58FE68FE7E2E2D6BECDFCC3A68FE88FE98FEAE3C38FEB8FECD6D2E2E78FED8FEEE2E88FEF8FF0D3C78FF18FF2E2ECBFEC8FF3E2EDE2E58FF48FF5B3C08FF68FF78FF8C4EE8FF98FFAE2EE8FFB8FFCD0C38FFDBAF6E2E9B7DEBBB3CCACCBCBE2E4E2E6E2EAE2EB8FFE90409041E2F790429043E2F4D4F5E2F390449045C5AD9046D5FAC5C2B2C090479048E2EF9049E2F2C1AFCBBC904A904BB5A1E2F9904C904D904EBCB1E2F1D0D4D4B9E2F5B9D6E2F6904F90509051C7D390529053905490559056E2F0905790589059905A905BD7DCEDA1905C905DE2F8905EEDA5E2FECAD1905F906090619062906390649065C1B59066BBD090679068BFD69069BAE3906A906BCBA1906C906D906EEDA6EDA3906F9070EDA29071907290739074BBD6EDA7D0F490759076EDA4BADEB6F7E3A1B6B2CCF1B9A79077CFA2C7A190789079BFD2907A907BB6F1907CE2FAE2FBE2FDE2FCC4D5E3A2907DD3C1907E90809081E3A7C7C49082908390849085CFA490869087E3A9BAB790889089908A908BE3A8908CBBDA908DE3A3908E908F9090E3A4E3AA9091E3A69092CEF2D3C690939094BBBC90959096D4C39097C4FA90989099EDA8D0FCE3A5909AC3F5909BE3ADB1AF909CE3B2909D909E909FBCC290A090A1E3ACB5BF90A290A390A490A590A690A790A890A9C7E9E3B090AA90AB90ACBEAACDEF90AD90AE90AF90B090B1BBF390B290B390B4CCE890B590B6E3AF90B7E3B190B8CFA7E3AE90B9CEA9BBDD90BA90BB90BC90BD90BEB5EBBEE5B2D2B3CD90BFB1B9E3ABB2D1B5ACB9DFB6E890C090C1CFEBE3B790C2BBCC90C390C4C8C7D0CA90C590C690C790C890C9E3B8B3EE90CA90CB90CC90CDEDA990CED3FAD3E490CF90D090D1EDAAE3B9D2E290D290D390D490D590D6E3B590D790D890D990DAD3DE90DB90DC90DD90DEB8D0E3B390DF90E0E3B6B7DF90E1E3B4C0A290E290E390E4E3BA90E590E690E790E890E990EA90EB90EC90ED90EE90EF90F090F190F290F390F490F590F690F7D4B890F890F990FA90FB90FC90FD90FE9140B4C89141E3BB9142BBC59143C9F791449145C9E5914691479148C4BD9149914A914B914C914D914E914FEDAB9150915191529153C2FD9154915591569157BBDBBFAE91589159915A915B915C915D915ECEBF915F916091619162E3BC9163BFB6916491659166916791689169916A916B916C916D916E916F9170917191729173917491759176B1EF91779178D4F79179917A917B917C917DE3BE917E9180918191829183918491859186EDAD918791889189918A918B918C918D918E918FE3BFBAA9EDAC91909191E3BD91929193919491959196919791989199919A919BE3C0919C919D919E919F91A091A1BAB691A291A391A4B6AE91A591A691A791A891A9D0B891AAB0C3EDAE91AB91AC91AD91AE91AFEDAFC0C191B0E3C191B191B291B391B491B591B691B791B891B991BA91BB91BC91BD91BE91BF91C091C1C5B391C291C391C491C591C691C791C891C991CA91CB91CC91CD91CE91CFE3C291D091D191D291D391D491D591D691D791D8DCB291D991DA91DB91DC91DD91DEEDB091DFB8EA91E0CEECEAA7D0E7CAF9C8D6CFB7B3C9CED2BDE491E191E2E3DEBBF2EAA8D5BD91E3C6DDEAA991E491E591E6EAAA91E7EAACEAAB91E8EAAEEAAD91E991EA91EB91ECBDD891EDEAAF91EEC2BE91EF91F091F191F2B4C1B4F791F391F4BBA791F591F691F791F891F9ECE6ECE5B7BFCBF9B1E291FAECE791FB91FC91FDC9C8ECE8ECE991FECAD6DED0B2C5D4FA92409241C6CBB0C7B4F2C8D3924292439244CDD092459246BFB8924792489249924A924B924C924DBFDB924E924FC7A4D6B49250C0A9DED1C9A8D1EFC5A4B0E7B3B6C8C592519252B0E292539254B7F692559256C5FA92579258B6F39259D5D2B3D0BCBC925A925B925CB3AD925D925E925F9260BEF1B0D1926192629263926492659266D2D6CAE3D7A59267CDB6B6B6BFB9D5DB9268B8A7C5D79269926A926BDED2BFD9C2D5C7C0926CBBA4B1A8926D926EC5EA926F9270C5FBCCA79271927292739274B1A7927592769277B5D692789279927AC4A8927BDED3D1BAB3E9927CC3F2927D927EB7F79280D6F4B5A3B2F0C4B4C4E9C0ADDED49281B0E8C5C4C1E09282B9D59283BEDCCDD8B0CE9284CDCFDED6BED0D7BEDED5D5D0B0DD92859286C4E292879288C2A3BCF09289D3B5C0B9C5A1B2A6D4F1928A928BC0A8CAC3DED7D5FC928CB9B0928DC8ADCBA9928EDED9BFBD928F929092919292C6B4D7A7CAB0C4C39293B3D6B9D29294929592969297D6B8EAFCB0B492989299929A929BBFE6929C929DCCF4929E929F92A092A1CDDA92A292A392A4D6BFC2CE92A5CECECCA2D0AEC4D3B5B2DED8D5F5BCB7BBD392A692A7B0A492A8C5B2B4EC92A992AA92ABD5F192AC92ADEAFD92AE92AF92B092B192B292B3DEDACDA692B492B5CDEC92B692B792B892B9CEE6DEDC92BACDB1C0A692BB92BCD7BD92BDDEDBB0C6BAB4C9D3C4F3BEE892BE92BF92C092C1B2B692C292C392C492C592C692C792C892C9C0CCCBF092CABCF1BBBBB5B792CB92CC92CDC5F592CEDEE692CF92D092D1DEE3BEDD92D292D3DEDF92D492D592D692D7B4B7BDDD92D892D9DEE0C4ED92DA92DB92DC92DDCFC692DEB5E092DF92E092E192E2B6DECADAB5F4DEE592E3D5C692E4DEE1CCCDC6FE92E5C5C592E692E792E8D2B492E9BEF292EA92EB92EC92ED92EE92EF92F0C2D392F1CCBDB3B892F2BDD392F3BFD8CDC6D1DAB4EB92F4DEE4DEDDDEE792F5EAFE92F692F7C2B0DEE292F892F9D6C0B5A792FAB2F492FBDEE892FCDEF292FD92FE934093419342DEED9343DEF193449345C8E0934693479348D7E1DEEFC3E8CCE19349B2E5934A934B934CD2BE934D934E934F9350935193529353DEEE9354DEEBCED59355B4A79356935793589359935ABFABBEBE935B935CBDD2935D935E935F9360DEE99361D4AE9362DEDE9363DEEA9364936593669367C0BF9368DEECB2F3B8E9C2A79369936ABDC1936B936C936D936E936FDEF5DEF893709371B2ABB4A493729373B4EAC9A6937493759376937793789379DEF6CBD1937AB8E3937BDEF7DEFA937C937D937E9380DEF9938193829383CCC29384B0E1B4EE93859386938793889389938AE5BA938B938C938D938E938FD0AF93909391B2EB9392EBA19393DEF493949395C9E3DEF3B0DAD2A1B1F79396CCAF939793989399939A939B939C939DDEF0939ECBA4939F93A093A1D5AA93A293A393A493A593A6DEFB93A793A893A993AA93AB93AC93AD93AEB4DD93AFC4A693B093B193B2DEFD93B393B493B593B693B793B893B993BA93BB93BCC3FEC4A1DFA193BD93BE93BF93C093C193C293C3C1CC93C4DEFCBEEF93C5C6B293C693C793C893C993CA93CB93CC93CD93CEB3C5C8F693CF93D0CBBADEFE93D193D2DFA493D393D493D593D6D7B293D793D893D993DA93DBB3B793DC93DD93DE93DFC1C393E093E1C7CBB2A5B4E993E2D7AB93E393E493E593E6C4EC93E7DFA2DFA393E8DFA593E9BAB393EA93EB93ECDFA693EDC0DE93EE93EFC9C393F093F193F293F393F493F593F6B2D9C7E693F7DFA793F8C7DC93F993FA93FB93FCDFA8EBA293FD93FE944094419442CBD3944394449445DFAA9446DFA99447B2C194489449944A944B944C944D944E944F9450945194529453945494559456945794589459945A945B945C945D945E945F9460C5CA94619462946394649465946694679468DFAB9469946A946B946C946D946E946F9470D4DC94719472947394749475C8C19476947794789479947A947B947C947D947E948094819482DFAC94839484948594869487BEF094889489DFADD6A7948A948B948C948DEAB7EBB6CAD5948ED8FCB8C4948FB9A594909491B7C5D5FE94929493949494959496B9CA94979498D0A7F4CD9499949AB5D0949B949CC3F4949DBEC8949E949F94A0EBB7B0BD94A194A2BDCC94A3C1B294A4B1D6B3A894A594A694A7B8D2C9A294A894A9B6D894AA94AB94AC94ADEBB8BEB494AE94AF94B0CAFD94B1C7C394B2D5FB94B394B4B7F394B594B694B794B894B994BA94BB94BC94BD94BE94BF94C094C194C294C3CEC494C494C594C6D5ABB1F394C794C894C9ECB3B0DF94CAECB594CB94CC94CDB6B794CEC1CF94CFF5FAD0B194D094D1D5E594D2CED394D394D4BDEFB3E294D5B8AB94D6D5B694D7EDBD94D8B6CF94D9CBB9D0C294DA94DB94DC94DD94DE94DF94E094E1B7BD94E294E3ECB6CAA994E494E594E6C5D494E7ECB9ECB8C2C3ECB794E894E994EA94EBD0FDECBA94ECECBBD7E594ED94EEECBC94EF94F094F1ECBDC6EC94F294F394F494F594F694F794F894F9CEDE94FABCC894FB94FCC8D5B5A9BEC9D6BCD4E794FD94FED1AED0F1EAB8EAB9EABABAB59540954195429543CAB1BFF595449545CDFA9546954795489549954AEAC0954BB0BAEABE954C954DC0A5954E954F9550EABB9551B2FD9552C3F7BBE8955395549555D2D7CEF4EABF955695579558EABC9559955A955BEAC3955CD0C7D3B3955D955E955F9560B4BA9561C3C1D7F29562956395649565D5D19566CAC79567EAC595689569EAC4EAC7EAC6956A956B956C956D956ED6E7956FCFD495709571EACB9572BBCE9573957495759576957795789579BDFAC9CE957A957BEACC957C957DC9B9CFFEEACAD4CEEACDEACF957E9580CDED9581958295839584EAC99585EACE95869587CEEE9588BBDE9589B3BF958A958B958C958D958EC6D5BEB0CEFA958F95909591C7E79592BEA7EAD095939594D6C7959595969597C1C095989599959AD4DD959BEAD1959C959DCFBE959E959F95A095A1EAD295A295A395A495A5CAEE95A695A795A895A9C5AFB0B595AA95AB95AC95AD95AEEAD495AF95B095B195B295B395B495B595B695B7EAD3F4DF95B895B995BA95BB95BCC4BA95BD95BE95BF95C095C1B1A995C295C395C495C5E5DF95C695C795C895C9EAD595CA95CB95CC95CD95CE95CF95D095D195D295D395D495D595D695D795D895D995DA95DB95DC95DD95DE95DF95E095E195E295E3CAEF95E4EAD6EAD7C6D895E595E695E795E895E995EA95EB95ECEAD895ED95EEEAD995EF95F095F195F295F395F4D4BB95F5C7FAD2B7B8FC95F695F7EAC295F8B2DC95F995FAC2FC95FBD4F8CCE6D7EE95FC95FD95FE9640964196429643D4C2D3D0EBC3C5F39644B7FE96459646EBD4964796489649CBB7EBDE964AC0CA964B964C964DCDFB964EB3AF964FC6DA965096519652965396549655EBFC9656C4BE9657CEB4C4A9B1BED4FD9658CAF59659D6EC965A965BC6D3B6E4965C965D965E965FBBFA96609661D0E096629663C9B19664D4D3C8A896659666B8CB9667E8BEC9BC96689669E8BB966AC0EED0D3B2C4B4E5966BE8BC966C966DD5C8966E966F967096719672B6C59673E8BDCAF8B8DCCCF5967496759676C0B496779678D1EEE8BFE8C29679967ABABC967BB1ADBDDC967CEABDE8C3967DE8C6967EE8CB9680968196829683E8CC9684CBC9B0E59685BCAB96869687B9B996889689E8C1968ACDF7968BE8CA968C968D968E968FCEF69690969196929693D5ED9694C1D6E8C49695C3B69696B9FBD6A6E8C8969796989699CAE0D4E6969AE8C0969BE8C5E8C7969CC7B9B7E3969DE8C9969EBFDDE8D2969F96A0E8D796A1E8D5BCDCBCCFE8DB96A296A396A496A596A696A796A896A9E8DE96AAE8DAB1FA96AB96AC96AD96AE96AF96B096B196B296B396B4B0D8C4B3B8CCC6E2C8BEC8E196B596B696B7E8CFE8D4E8D696B8B9F1E8D8D7F596B9C4FB96BAE8DC96BB96BCB2E996BD96BE96BFE8D196C096C1BCED96C296C3BFC2E8CDD6F996C4C1F8B2F196C596C696C796C896C996CA96CB96CCE8DF96CDCAC1E8D996CE96CF96D096D1D5A496D2B1EAD5BBE8CEE8D0B6B0E8D396D3E8DDC0B896D4CAF796D5CBA896D696D7C6DCC0F596D896D996DA96DB96DCE8E996DD96DE96DFD0A396E096E196E296E396E496E596E6E8F2D6EA96E796E896E996EA96EB96EC96EDE8E0E8E196EE96EF96F0D1F9BACBB8F996F196F2B8F1D4D4E8EF96F3E8EEE8ECB9F0CCD2E8E6CEA6BFF296F4B0B8E8F1E8F096F5D7C096F6E8E496F7CDA9C9A396F8BBB8BDDBE8EA96F996FA96FB96FC96FD96FE9740974197429743E8E2E8E3E8E5B5B5E8E7C7C5E8EBE8EDBDB0D7AE9744E8F897459746974797489749974A974B974CE8F5974DCDB0E8F6974E974F9750975197529753975497559756C1BA9757E8E89758C3B7B0F09759975A975B975C975D975E975F9760E8F4976197629763E8F7976497659766B9A3976797689769976A976B976C976D976E976F9770C9D2977197729773C3CECEE0C0E69774977597769777CBF39778CCDDD0B59779977ACAE1977BE8F3977C977D977E9780978197829783978497859786BCEC9787E8F997889789978A978B978C978DC3DE978EC6E5978FB9F79790979197929793B0F497949795D7D897969797BCAC9798C5EF9799979A979B979C979DCCC4979E979FE9A697A097A197A297A397A497A597A697A797A897A9C9AD97AAE9A2C0E297AB97AC97ADBFC397AE97AF97B0E8FEB9D797B1E8FB97B297B397B497B5E9A497B697B797B8D2CE97B997BA97BB97BC97BDE9A397BED6B2D7B597BFE9A797C0BDB797C197C297C397C497C597C697C797C897C997CA97CB97CCE8FCE8FD97CD97CE97CFE9A197D097D197D297D397D497D597D697D7CDD697D897D9D2AC97DA97DB97DCE9B297DD97DE97DF97E0E9A997E197E297E3B4AA97E4B4BB97E597E6E9AB97E797E897E997EA97EB97EC97ED97EE97EF97F097F197F297F397F497F597F697F7D0A897F897F9E9A597FA97FBB3FE97FC97FDE9ACC0E397FEE9AA98409841E9B998429843E9B89844984598469847E9AE98489849E8FA984A984BE9A8984C984D984E984F9850BFACE9B1E9BA98519852C2A5985398549855E9AF9856B8C59857E9AD9858D3DCE9B4E9B5E9B79859985A985BE9C7985C985D985E985F98609861C0C6E9C598629863E9B098649865E9BBB0F19866986798689869986A986B986C986D986E986FE9BCD5A598709871E9BE9872E9BF987398749875E9C198769877C1F198789879C8B6987A987B987CE9BD987D987E988098819882E9C29883988498859886988798889889988AE9C3988BE9B3988CE9B6988DBBB1988E988F9890E9C0989198929893989498959896BCF7989798989899E9C4E9C6989A989B989C989D989E989F98A098A198A298A398A498A5E9CA98A698A798A898A9E9CE98AA98AB98AC98AD98AE98AF98B098B198B298B3B2DB98B4E9C898B598B698B798B898B998BA98BB98BC98BD98BEB7AE98BF98C098C198C298C398C498C598C698C798C898C998CAE9CBE9CC98CB98CC98CD98CE98CF98D0D5C198D1C4A398D298D398D498D598D698D7E9D898D8BAE198D998DA98DB98DCE9C998DDD3A398DE98DF98E0E9D498E198E298E398E498E598E698E7E9D7E9D098E898E998EA98EB98ECE9CF98ED98EEC7C198EF98F098F198F298F398F498F598F6E9D298F798F898F998FA98FB98FC98FDE9D9B3C898FEE9D399409941994299439944CFF0994599469947E9CD99489949994A994B994C994D994E994F995099519952B3F79953995499559956995799589959E9D6995A995BE9DA995C995D995ECCB4995F99609961CFAD99629963996499659966996799689969996AE9D5996BE9DCE9DB996C996D996E996F9970E9DE99719972997399749975997699779978E9D19979997A997B997C997D997E99809981E9DD9982E9DFC3CA9983998499859986998799889989998A998B998C998D998E998F9990999199929993999499959996999799989999999A999B999C999D999E999F99A099A199A299A399A499A599A699A799A899A999AA99AB99AC99AD99AE99AF99B099B199B299B399B499B599B699B799B899B999BA99BB99BC99BD99BE99BF99C099C199C299C399C499C599C699C799C899C999CA99CB99CC99CD99CE99CF99D099D199D299D399D499D599D699D799D899D999DA99DB99DC99DD99DE99DF99E099E199E299E399E499E599E699E799E899E999EA99EB99EC99ED99EE99EF99F099F199F299F399F499F5C7B7B4CEBBB6D0C0ECA399F699F7C5B799F899F999FA99FB99FC99FD99FE9A409A419A42D3FB9A439A449A459A46ECA49A47ECA5C6DB9A489A499A4ABFEE9A4B9A4C9A4D9A4EECA69A4F9A50ECA7D0AA9A51C7B89A529A53B8E89A549A559A569A579A589A599A5A9A5B9A5C9A5D9A5E9A5FECA89A609A619A629A639A649A659A669A67D6B9D5FDB4CBB2BDCEE4C6E79A689A69CDE19A6A9A6B9A6C9A6D9A6E9A6F9A709A719A729A739A749A759A769A77B4F59A78CBC0BCDF9A799A7A9A7B9A7CE9E2E9E3D1EAE9E59A7DB4F9E9E49A7ED1B3CAE2B2D09A80E9E89A819A829A839A84E9E6E9E79A859A86D6B39A879A889A89E9E9E9EA9A8A9A8B9A8C9A8D9A8EE9EB9A8F9A909A919A929A939A949A959A96E9EC9A979A989A999A9A9A9B9A9C9A9D9A9EECAFC5B9B6CE9A9FD2F39AA09AA19AA29AA39AA49AA59AA6B5EE9AA7BBD9ECB19AA89AA9D2E39AAA9AAB9AAC9AAD9AAECEE39AAFC4B89AB0C3BF9AB19AB2B6BED8B9B1C8B1CFB1D1C5FE9AB3B1D09AB4C3AB9AB59AB69AB79AB89AB9D5B19ABA9ABB9ABC9ABD9ABE9ABF9AC09AC1EBA4BAC19AC29AC39AC4CCBA9AC59AC69AC7EBA59AC8EBA79AC99ACA9ACBEBA89ACC9ACD9ACEEBA69ACF9AD09AD19AD29AD39AD49AD5EBA9EBABEBAA9AD69AD79AD89AD99ADAEBAC9ADBCACFD8B5C3F19ADCC3A5C6F8EBADC4CA9ADDEBAEEBAFEBB0B7D59ADE9ADF9AE0B7FA9AE1EBB1C7E29AE2EBB39AE3BAA4D1F5B0B1EBB2EBB49AE49AE59AE6B5AAC2C8C7E89AE7EBB59AE8CBAEE3DF9AE99AEAD3C09AEB9AEC9AED9AEED9DB9AEF9AF0CDA1D6ADC7F39AF19AF29AF3D9E0BBE39AF4BABAE3E29AF59AF69AF79AF89AF9CFAB9AFA9AFB9AFCE3E0C9C79AFDBAB99AFE9B409B41D1B4E3E1C8EAB9AFBDADB3D8CEDB9B429B43CCC09B449B459B46E3E8E3E9CDF49B479B489B499B4A9B4BCCAD9B4CBCB39B4DE3EA9B4EE3EB9B4F9B50D0DA9B519B529B53C6FBB7DA9B549B55C7DFD2CACED69B56E3E4E3EC9B57C9F2B3C19B589B59E3E79B5A9B5BC6E3E3E59B5C9B5DEDB3E3E69B5E9B5F9B609B61C9B39B62C5E69B639B649B65B9B59B66C3BB9B67E3E3C5BDC1A4C2D9B2D79B68E3EDBBA6C4AD9B69E3F0BEDA9B6A9B6BE3FBE3F5BAD39B6C9B6D9B6E9B6FB7D0D3CD9B70D6CED5D3B9C1D5B4D1D89B719B729B739B74D0B9C7F69B759B769B77C8AAB2B49B78C3DA9B799B7A9B7BE3EE9B7C9B7DE3FCE3EFB7A8E3F7E3F49B7E9B809B81B7BA9B829B83C5A29B84E3F6C5DDB2A8C6FC9B85C4E09B869B87D7A29B88C0E1E3F99B899B8AE3FAE3FDCCA9E3F39B8BD3BE9B8CB1C3EDB4E3F1E3F29B8DE3F8D0BAC6C3D4F3E3FE9B8E9B8FBDE09B909B91E4A79B929B93E4A69B949B959B96D1F3E4A39B97E4A99B989B999B9AC8F79B9B9B9C9B9D9B9ECFB49B9FE4A8E4AEC2E59BA09BA1B6B49BA29BA39BA49BA59BA69BA7BDF29BA8E4A29BA99BAABAE9E4AA9BAB9BACE4AC9BAD9BAEB6FDD6DEE4B29BAFE4AD9BB09BB19BB2E4A19BB3BBEECDDDC7A2C5C99BB49BB5C1F79BB6E4A49BB7C7B3BDACBDBDE4A59BB8D7C7B2E29BB9E4ABBCC3E4AF9BBABBEBE4B0C5A8E4B19BBB9BBC9BBD9BBED5E3BFA39BBFE4BA9BC0E4B79BC1E4BB9BC29BC3E4BD9BC49BC5C6D69BC69BC7BAC6C0CB9BC89BC99BCAB8A1E4B49BCB9BCC9BCD9BCED4A19BCF9BD0BAA3BDFE9BD19BD29BD3E4BC9BD49BD59BD69BD79BD8CDBF9BD99BDAC4F99BDB9BDCCFFBC9E69BDD9BDED3BF9BDFCFD19BE09BE1E4B39BE2E4B8E4B9CCE99BE39BE49BE59BE69BE7CCCE9BE8C0D4E4B5C1B0E4B6CED09BE9BBC1B5D39BEAC8F3BDA7D5C7C9ACB8A2E4CA9BEB9BECE4CCD1C49BED9BEED2BA9BEF9BF0BAAD9BF19BF2BAD49BF39BF49BF59BF69BF79BF8E4C3B5ED9BF99BFA9BFBD7CDE4C0CFFDE4BF9BFC9BFD9BFEC1DCCCCA9C409C419C429C43CAE79C449C459C469C47C4D79C48CCD4E4C89C499C4A9C4BE4C7E4C19C4CE4C4B5AD9C4D9C4ED3D99C4FE4C69C509C519C529C53D2F9B4E39C54BBB49C559C56C9EE9C57B4BE9C589C599C5ABBEC9C5BD1CD9C5CCCEDEDB59C5D9C5E9C5F9C609C619C629C639C64C7E59C659C669C679C68D4A89C69E4CBD7D5E4C29C6ABDA5E4C59C6B9C6CD3E69C6DE4C9C9F89C6E9C6FE4BE9C709C71D3E59C729C73C7FEB6C99C74D4FCB2B3E4D79C759C769C77CEC29C78E4CD9C79CEBC9C7AB8DB9C7B9C7CE4D69C7DBFCA9C7E9C809C81D3CE9C82C3EC9C839C849C859C869C879C889C899C8AC5C8E4D89C8B9C8C9C8D9C8E9C8F9C909C919C92CDC4E4CF9C939C949C959C96E4D4E4D59C97BAFE9C98CFE69C999C9AD5BF9C9B9C9C9C9DE4D29C9E9C9F9CA09CA19CA29CA39CA49CA59CA69CA79CA8E4D09CA99CAAE4CE9CAB9CAC9CAD9CAE9CAF9CB09CB19CB29CB39CB49CB59CB69CB79CB89CB9CDE5CAAA9CBA9CBB9CBCC0A39CBDBDA6E4D39CBE9CBFB8C89CC09CC19CC29CC39CC4E4E7D4B49CC59CC69CC79CC89CC99CCA9CCBE4DB9CCC9CCD9CCEC1EF9CCF9CD0E4E99CD19CD2D2E79CD39CD4E4DF9CD5E4E09CD69CD7CFAA9CD89CD99CDA9CDBCBDD9CDCE4DAE4D19CDDE4E59CDEC8DCE4E39CDF9CE0C4E7E4E29CE1E4E19CE29CE39CE4B3FCE4E89CE59CE69CE79CE8B5E19CE99CEA9CEBD7CC9CEC9CED9CEEE4E69CEFBBAC9CF0D7D2CCCFEBF89CF1E4E49CF29CF3B9F69CF49CF59CF6D6CDE4D9E4DCC2FAE4DE9CF7C2CBC0C4C2D09CF8B1F5CCB29CF99CFA9CFB9CFC9CFD9CFE9D409D419D429D43B5CE9D449D459D469D47E4EF9D489D499D4A9D4B9D4C9D4D9D4E9D4FC6AF9D509D519D52C6E19D539D54E4F59D559D569D579D589D59C2A99D5A9D5B9D5CC0ECD1DDE4EE9D5D9D5E9D5F9D609D619D629D639D649D659D66C4AE9D679D689D69E4ED9D6A9D6B9D6C9D6DE4F6E4F4C2FE9D6EE4DD9D6FE4F09D70CAFE9D71D5C49D729D73E4F19D749D759D769D779D789D799D7AD1FA9D7B9D7C9D7D9D7E9D809D819D82E4EBE4EC9D839D849D85E4F29D86CEAB9D879D889D899D8A9D8B9D8C9D8D9D8E9D8F9D90C5CB9D919D929D93C7B19D94C2BA9D959D969D97E4EA9D989D999D9AC1CA9D9B9D9C9D9D9D9E9D9F9DA0CCB6B3B19DA19DA29DA3E4FB9DA4E4F39DA59DA69DA7E4FA9DA8E4FD9DA9E4FC9DAA9DAB9DAC9DAD9DAE9DAF9DB0B3CE9DB19DB29DB3B3BAE4F79DB49DB5E4F9E4F8C5EC9DB69DB79DB89DB99DBA9DBB9DBC9DBD9DBE9DBF9DC09DC19DC2C0BD9DC39DC49DC59DC6D4E89DC79DC89DC99DCA9DCBE5A29DCC9DCD9DCE9DCF9DD09DD19DD29DD39DD49DD59DD6B0C49DD79DD8E5A49DD99DDAE5A39DDB9DDC9DDD9DDE9DDF9DE0BCA49DE1E5A59DE29DE39DE49DE59DE69DE7E5A19DE89DE99DEA9DEB9DEC9DED9DEEE4FEB1F49DEF9DF09DF19DF29DF39DF49DF59DF69DF79DF89DF9E5A89DFAE5A9E5A69DFB9DFC9DFD9DFE9E409E419E429E439E449E459E469E47E5A7E5AA9E489E499E4A9E4B9E4C9E4D9E4E9E4F9E509E519E529E539E549E559E569E579E589E599E5A9E5B9E5C9E5D9E5E9E5F9E609E619E629E639E649E659E669E679E68C6D99E699E6A9E6B9E6C9E6D9E6E9E6F9E70E5ABE5AD9E719E729E739E749E759E769E77E5AC9E789E799E7A9E7B9E7C9E7D9E7E9E809E819E829E839E849E859E869E879E889E89E5AF9E8A9E8B9E8CE5AE9E8D9E8E9E8F9E909E919E929E939E949E959E969E979E989E999E9A9E9B9E9C9E9D9E9EB9E09E9F9EA0E5B09EA19EA29EA39EA49EA59EA69EA79EA89EA99EAA9EAB9EAC9EAD9EAEE5B19EAF9EB09EB19EB29EB39EB49EB59EB69EB79EB89EB99EBABBF0ECE1C3F09EBBB5C6BBD29EBC9EBD9EBE9EBFC1E9D4EE9EC0BEC49EC19EC29EC3D7C69EC4D4D6B2D3ECBE9EC59EC69EC79EC8EAC19EC99ECA9ECBC2AFB4B69ECC9ECD9ECED1D79ECF9ED09ED1B3B49ED2C8B2BFBBECC09ED39ED4D6CB9ED59ED6ECBFECC19ED79ED89ED99EDA9EDB9EDC9EDD9EDE9EDF9EE09EE19EE29EE3ECC5BEE6CCBFC5DABEBC9EE4ECC69EE5B1FE9EE69EE79EE8ECC4D5A8B5E39EE9ECC2C1B6B3E39EEA9EEBECC3CBB8C0C3CCFE9EEC9EED9EEE9EEFC1D29EF0ECC89EF19EF29EF39EF49EF59EF69EF79EF89EF99EFA9EFB9EFC9EFDBAE6C0D39EFED6F29F409F419F42D1CC9F439F449F459F46BFBE9F47B7B3C9D5ECC7BBE29F48CCCCBDFDC8C89F49CFA99F4A9F4B9F4C9F4D9F4E9F4F9F50CDE99F51C5EB9F529F539F54B7E99F559F569F579F589F599F5A9F5B9F5C9F5D9F5E9F5FD1C9BAB89F609F619F629F639F64ECC99F659F66ECCA9F67BBC0ECCB9F68ECE2B1BAB7D99F699F6A9F6B9F6C9F6D9F6E9F6F9F709F719F729F73BDB99F749F759F769F779F789F799F7A9F7BECCCD1E6ECCD9F7C9F7D9F7E9F80C8BB9F819F829F839F849F859F869F879F889F899F8A9F8B9F8C9F8D9F8EECD19F8F9F909F919F92ECD39F93BBCD9F94BCE59F959F969F979F989F999F9A9F9B9F9C9F9D9F9E9F9F9FA09FA1ECCF9FA2C9B79FA39FA49FA59FA69FA7C3BA9FA8ECE3D5D5ECD09FA99FAA9FAB9FAC9FADD6F39FAE9FAF9FB0ECD2ECCE9FB19FB29FB39FB4ECD49FB5ECD59FB69FB7C9BF9FB89FB99FBA9FBB9FBC9FBDCFA89FBE9FBF9FC09FC19FC2D0DC9FC39FC49FC59FC6D1AC9FC79FC89FC99FCAC8DB9FCB9FCC9FCDECD6CEF59FCE9FCF9FD09FD19FD2CAECECDA9FD39FD49FD59FD69FD79FD89FD9ECD99FDA9FDB9FDCB0BE9FDD9FDE9FDF9FE09FE19FE2ECD79FE3ECD89FE49FE59FE6ECE49FE79FE89FE99FEA9FEB9FEC9FED9FEE9FEFC8BC9FF09FF19FF29FF39FF49FF59FF69FF79FF89FF9C1C79FFA9FFB9FFC9FFD9FFEECDCD1E0A040A041A042A043A044A045A046A047A048A049ECDBA04AA04BA04CA04DD4EFA04EECDDA04FA050A051A052A053A054DBC6A055A056A057A058A059A05AA05BA05CA05DA05EECDEA05FA060A061A062A063A064A065A066A067A068A069A06AB1ACA06BA06CA06DA06EA06FA070A071A072A073A074A075A076A077A078A079A07AA07BA07CA07DA07EA080A081ECDFA082A083A084A085A086A087A088A089A08AA08BECE0A08CD7A6A08DC5C0A08EA08FA090EBBCB0AEA091A092A093BEF4B8B8D2AFB0D6B5F9A094D8B3A095CBACA096E3DDA097A098A099A09AA09BA09CA09DC6ACB0E6A09EA09FA0A0C5C6EBB9A0A1A0A2A0A3A0A4EBBAA0A5A0A6A0A7EBBBA0A8A0A9D1C0A0AAC5A3A0ABEAF2A0ACC4B2A0ADC4B5C0CEA0AEA0AFA0B0EAF3C4C1A0B1CEEFA0B2A0B3A0B4A0B5EAF0EAF4A0B6A0B7C9FCA0B8A0B9C7A3A0BAA0BBA0BCCCD8CEFEA0BDA0BEA0BFEAF5EAF6CFACC0E7A0C0A0C1EAF7A0C2A0C3A0C4A0C5A0C6B6BFEAF8A0C7EAF9A0C8EAFAA0C9A0CAEAFBA0CBA0CCA0CDA0CEA0CFA0D0A0D1A0D2A0D3A0D4A0D5A0D6EAF1A0D7A0D8A0D9A0DAA0DBA0DCA0DDA0DEA0DFA0E0A0E1A0E2C8AEE1EBA0E3B7B8E1ECA0E4A0E5A0E6E1EDA0E7D7B4E1EEE1EFD3CCA0E8A0E9A0EAA0EBA0ECA0EDA0EEE1F1BFF1E1F0B5D2A0EFA0F0A0F1B1B7A0F2A0F3A0F4A0F5E1F3E1F2A0F6BAFCA0F7E1F4A0F8A0F9A0FAA0FBB9B7A0FCBED1A0FDA0FEAA40AA41C4FCAA42BADDBDC6AA43AA44AA45AA46AA47AA48E1F5E1F7AA49AA4AB6C0CFC1CAA8E1F6D5F8D3FCE1F8E1FCE1F9AA4BAA4CE1FAC0EAAA4DE1FEE2A1C0C7AA4EAA4FAA50AA51E1FBAA52E1FDAA53AA54AA55AA56AA57AA58E2A5AA59AA5AAA5BC1D4AA5CAA5DAA5EAA5FE2A3AA60E2A8B2FEE2A2AA61AA62AA63C3CDB2C2E2A7E2A6AA64AA65E2A4E2A9AA66AA67E2ABAA68AA69AA6AD0C9D6EDC3A8E2ACAA6BCFD7AA6CAA6DE2AEAA6EAA6FBAEFAA70AA71E9E0E2ADE2AAAA72AA73AA74AA75BBABD4B3AA76AA77AA78AA79AA7AAA7BAA7CAA7DAA7EAA80AA81AA82AA83E2B0AA84AA85E2AFAA86E9E1AA87AA88AA89AA8AE2B1AA8BAA8CAA8DAA8EAA8FAA90AA91AA92E2B2AA93AA94AA95AA96AA97AA98AA99AA9AAA9BAA9CAA9DE2B3CCA1AA9EE2B4AA9FAAA0AB40AB41AB42AB43AB44AB45AB46AB47AB48AB49AB4AAB4BE2B5AB4CAB4DAB4EAB4FAB50D0FEAB51AB52C2CAAB53D3F1AB54CDF5AB55AB56E7E0AB57AB58E7E1AB59AB5AAB5BAB5CBEC1AB5DAB5EAB5FAB60C2EAAB61AB62AB63E7E4AB64AB65E7E3AB66AB67AB68AB69AB6AAB6BCDE6AB6CC3B5AB6DAB6EE7E2BBB7CFD6AB6FC1E1E7E9AB70AB71AB72E7E8AB73AB74E7F4B2A3AB75AB76AB77AB78E7EAAB79E7E6AB7AAB7BAB7CAB7DAB7EE7ECE7EBC9BAAB80AB81D5E4AB82E7E5B7A9E7E7AB83AB84AB85AB86AB87AB88AB89E7EEAB8AAB8BAB8CAB8DE7F3AB8ED6E9AB8FAB90AB91AB92E7EDAB93E7F2AB94E7F1AB95AB96AB97B0E0AB98AB99AB9AAB9BE7F5AB9CAB9DAB9EAB9FABA0AC40AC41AC42AC43AC44AC45AC46AC47AC48AC49AC4AC7F2AC4BC0C5C0EDAC4CAC4DC1F0E7F0AC4EAC4FAC50AC51E7F6CBF6AC52AC53AC54AC55AC56AC57AC58AC59AC5AE8A2E8A1AC5BAC5CAC5DAC5EAC5FAC60D7C1AC61AC62E7FAE7F9AC63E7FBAC64E7F7AC65E7FEAC66E7FDAC67E7FCAC68AC69C1D5C7D9C5FDC5C3AC6AAC6BAC6CAC6DAC6EC7EDAC6FAC70AC71AC72E8A3AC73AC74AC75AC76AC77AC78AC79AC7AAC7BAC7CAC7DAC7EAC80AC81AC82AC83AC84AC85AC86E8A6AC87E8A5AC88E8A7BAF7E7F8E8A4AC89C8F0C9AAAC8AAC8BAC8CAC8DAC8EAC8FAC90AC91AC92AC93AC94AC95AC96E8A9AC97AC98B9E5AC99AC9AAC9BAC9CAC9DD1FEE8A8AC9EAC9FACA0AD40AD41AD42E8AAAD43E8ADE8AEAD44C1A7AD45AD46AD47E8AFAD48AD49AD4AE8B0AD4BAD4CE8ACAD4DE8B4AD4EAD4FAD50AD51AD52AD53AD54AD55AD56AD57AD58E8ABAD59E8B1AD5AAD5BAD5CAD5DAD5EAD5FAD60AD61E8B5E8B2E8B3AD62AD63AD64AD65AD66AD67AD68AD69AD6AAD6BAD6CAD6DAD6EAD6FAD70AD71E8B7AD72AD73AD74AD75AD76AD77AD78AD79AD7AAD7BAD7CAD7DAD7EAD80AD81AD82AD83AD84AD85AD86AD87AD88AD89E8B6AD8AAD8BAD8CAD8DAD8EAD8FAD90AD91AD92B9CFAD93F0ACAD94F0ADAD95C6B0B0EAC8BFAD96CDDFAD97AD98AD99AD9AAD9BAD9CAD9DCECDEAB1AD9EAD9FADA0AE40EAB2AE41C6BFB4C9AE42AE43AE44AE45AE46AE47AE48EAB3AE49AE4AAE4BAE4CD5E7AE4DAE4EAE4FAE50AE51AE52AE53AE54DDF9AE55EAB4AE56EAB5AE57EAB6AE58AE59AE5AAE5BB8CADFB0C9F5AE5CCCF0AE5DAE5EC9FAAE5FAE60AE61AE62AE63C9FBAE64AE65D3C3CBA6AE66B8A6F0AEB1C2AE67E5B8CCEFD3C9BCD7C9EAAE68B5E7AE69C4D0B5E9AE6AEEAEBBADAE6BAE6CE7DEAE6DEEAFAE6EAE6FAE70AE71B3A9AE72AE73EEB2AE74AE75EEB1BDE7AE76EEB0CEB7AE77AE78AE79AE7AC5CFAE7BAE7CAE7DAE7EC1F4DBCEEEB3D0F3AE80AE81AE82AE83AE84AE85AE86AE87C2D4C6E8AE88AE89AE8AB7ACAE8BAE8CAE8DAE8EAE8FAE90AE91EEB4AE92B3EBAE93AE94AE95BBFBEEB5AE96AE97AE98AE99AE9AE7DCAE9BAE9CAE9DEEB6AE9EAE9FBDAEAEA0AF40AF41AF42F1E2AF43AF44AF45CAE8AF46D2C9F0DAAF47F0DBAF48F0DCC1C6AF49B8EDBECEAF4AAF4BF0DEAF4CC5B1F0DDD1F1AF4DF0E0B0CCBDEAAF4EAF4FAF50AF51AF52D2DFF0DFAF53B4AFB7E8F0E6F0E5C6A3F0E1F0E2B4C3AF54AF55F0E3D5EEAF56AF57CCDBBED2BCB2AF58AF59AF5AF0E8F0E7F0E4B2A1AF5BD6A2D3B8BEB7C8ACAF5CAF5DF0EAAF5EAF5FAF60AF61D1F7AF62D6CCBADBF0E9AF63B6BBAF64AF65CDB4AF66AF67C6A6AF68AF69AF6AC1A1F0EBF0EEAF6BF0EDF0F0F0ECAF6CBBBEF0EFAF6DAF6EAF6FAF70CCB5F0F2AF71AF72B3D5AF73AF74AF75AF76B1D4AF77AF78F0F3AF79AF7AF0F4F0F6B4E1AF7BF0F1AF7CF0F7AF7DAF7EAF80AF81F0FAAF82F0F8AF83AF84AF85F0F5AF86AF87AF88AF89F0FDAF8AF0F9F0FCF0FEAF8BF1A1AF8CAF8DAF8ECEC1F1A4AF8FF1A3AF90C1F6F0FBCADDAF91AF92B4F1B1F1CCB1AF93F1A6AF94AF95F1A7AF96AF97F1ACD5CEF1A9AF98AF99C8B3AF9AAF9BAF9CF1A2AF9DF1ABF1A8F1A5AF9EAF9FF1AAAFA0B040B041B042B043B044B045B046B0A9F1ADB047B048B049B04AB04BB04CF1AFB04DF1B1B04EB04FB050B051B052F1B0B053F1AEB054B055B056B057D1A2B058B059B05AB05BB05CB05DB05EF1B2B05FB060B061F1B3B062B063B064B065B066B067B068B069B9EFB06AB06BB5C7B06CB0D7B0D9B06DB06EB06FD4EDB070B5C4B071BDD4BBCAF0A7B072B073B8DEB074B075F0A8B076B077B0A8B078F0A9B079B07ACDEEB07BB07CF0AAB07DB07EB080B081B082B083B084B085B086B087F0ABB088B089B08AB08BB08CB08DB08EB08FB090C6A4B091B092D6E5F1E4B093F1E5B094B095B096B097B098B099B09AB09BB09CB09DC3F3B09EB09FD3DBB0A0B140D6D1C5E8B141D3AFB142D2E6B143B144EEC1B0BBD5B5D1CEBCE0BAD0B145BFF8B146B8C7B5C1C5CCB147B148CAA2B149B14AB14BC3CBB14CB14DB14EB14FB150EEC2B151B152B153B154B155B156B157B158C4BFB6A2B159EDECC3A4B15AD6B1B15BB15CB15DCFE0EDEFB15EB15FC5CEB160B6DCB161B162CAA1B163B164EDEDB165B166EDF0EDF1C3BCB167BFB4B168EDEEB169B16AB16BB16CB16DB16EB16FB170B171B172B173EDF4EDF2B174B175B176B177D5E6C3DFB178EDF3B179B17AB17BEDF6B17CD5A3D1A3B17DB17EB180EDF5B181C3D0B182B183B184B185B186EDF7BFF4BEECEDF8B187CCF7B188D1DBB189B18AB18BD7C5D5F6B18CEDFCB18DB18EB18FEDFBB190B191B192B193B194B195B196B197EDF9EDFAB198B199B19AB19BB19CB19DB19EB19FEDFDBEA6B1A0B240B241B242B243CBAFEEA1B6BDB244EEA2C4C0B245EDFEB246B247BDDEB2C7B248B249B24AB24BB24CB24DB24EB24FB250B251B252B253B6C3B254B255B256EEA5D8BAEEA3EEA6B257B258B259C3E9B3F2B25AB25BB25CB25DB25EB25FEEA7EEA4CFB9B260B261EEA8C2F7B262B263B264B265B266B267B268B269B26AB26BB26CB26DEEA9EEAAB26EDEABB26FB270C6B3B271C7C6B272D6F5B5C9B273CBB2B274B275B276EEABB277B278CDABB279EEACB27AB27BB27CB27DB27ED5B0B280EEADB281F6C4B282B283B284B285B286B287B288B289B28AB28BB28CB28DB28EDBC7B28FB290B291B292B293B294B295B296B297B4A3B298B299B29AC3ACF1E6B29BB29CB29DB29EB29FCAB8D2D3B2A0D6AAB340EFF2B341BED8B342BDC3EFF3B6CCB0ABB343B344B345B346CAAFB347B348EDB6B349EDB7B34AB34BB34CB34DCEF9B7AFBFF3EDB8C2EBC9B0B34EB34FB350B351B352B353EDB9B354B355C6F6BFB3B356B357B358EDBCC5F8B359D1D0B35AD7A9EDBAEDBBB35BD1E2B35CEDBFEDC0B35DEDC4B35EB35FB360EDC8B361EDC6EDCED5E8B362EDC9B363B364EDC7EDBEB365B366C5E9B367B368B369C6C6B36AB36BC9E9D4D2EDC1EDC2EDC3EDC5B36CC0F9B36DB4A1B36EB36FB370B371B9E8B372EDD0B373B374B375B376EDD1B377EDCAB378EDCFB379CEF8B37AB37BCBB6EDCCEDCDB37CB37DB37EB380B381CFF5B382B383B384B385B386B387B388B389B38AB38BB38CB38DEDD2C1F2D3B2EDCBC8B7B38EB38FB390B391B392B393B394B395BCEFB396B397B398B399C5F0B39AB39BB39CB39DB39EB39FB3A0B440B441B442EDD6B443B5EFB444B445C2B5B0ADCBE9B446B447B1AEB448EDD4B449B44AB44BCDEBB5E2B44CEDD5EDD3EDD7B44DB44EB5FAB44FEDD8B450EDD9B451EDDCB452B1CCB453B454B455B456B457B458B459B45AC5F6BCEEEDDACCBCB2EAB45BB45CB45DB45EEDDBB45FB460B461B462C4EBB463B464B4C5B465B466B467B0F5B468B469B46AEDDFC0DAB4E8B46BB46CB46DB46EC5CDB46FB470B471EDDDBFC4B472B473B474EDDEB475B476B477B478B479B47AB47BB47CB47DB47EB480B481B482B483C4A5B484B485B486EDE0B487B488B489B48AB48BEDE1B48CEDE3B48DB48EC1D7B48FB490BBC7B491B492B493B494B495B496BDB8B497B498B499EDE2B49AB49BB49CB49DB49EB49FB4A0B540B541B542B543B544B545EDE4B546B547B548B549B54AB54BB54CB54DB54EB54FEDE6B550B551B552B553B554EDE5B555B556B557B558B559B55AB55BB55CB55DB55EB55FB560B561B562B563EDE7B564B565B566B567B568CABEECEAC0F1B569C9E7B56AECEBC6EEB56BB56CB56DB56EECECB56FC6EDECEDB570B571B572B573B574B575B576B577B578ECF0B579B57AD7E6ECF3B57BB57CECF1ECEEECEFD7A3C9F1CBEEECF4B57DECF2B57EB580CFE9B581ECF6C6B1B582B583B584B585BCC0B586ECF5B587B588B589B58AB58BB58CB58DB5BBBBF6B58EECF7B58FB590B591B592B593D9F7BDFBB594B595C2BBECF8B596B597B598B599ECF9B59AB59BB59CB59DB8A3B59EB59FB5A0B640B641B642B643B644B645B646ECFAB647B648B649B64AB64BB64CB64DB64EB64FB650B651B652ECFBB653B654B655B656B657B658B659B65AB65BB65CB65DECFCB65EB65FB660B661B662D3EDD8AEC0EBB663C7DDBACCB664D0E3CBBDB665CDBAB666B667B8D1B668B669B1FCB66AC7EFB66BD6D6B66CB66DB66EBFC6C3EBB66FB670EFF5B671B672C3D8B673B674B675B676B677B678D7E2B679B67AB67BEFF7B3D3B67CC7D8D1EDB67DD6C8B67EEFF8B680EFF6B681BBFDB3C6B682B683B684B685B686B687B688BDD5B689B68AD2C6B68BBBE0B68CB68DCFA1B68EEFFCEFFBB68FB690EFF9B691B692B693B694B3CCB695C9D4CBB0B696B697B698B699B69AEFFEB69BB69CB0DEB69DB69ED6C9B69FB6A0B740EFFDB741B3EDB742B743F6D5B744B745B746B747B748B749B74AB74BB74CB74DB74EB74FB750B751B752CEC8B753B754B755F0A2B756F0A1B757B5BEBCDABBFCB758B8E5B759B75AB75BB75CB75DB75EC4C2B75FB760B761B762B763B764B765B766B767B768F0A3B769B76AB76BB76CB76DCBEBB76EB76FB770B771B772B773B774B775B776B777B778B779B77AB77BB77CB77DB77EB780B781B782B783B784B785B786F0A6B787B788B789D1A8B78ABEBFC7EEF1B6F1B7BFD5B78BB78CB78DB78EB4A9F1B8CDBBB78FC7D4D5ADB790F1B9B791F1BAB792B793B794B795C7CFB796B797B798D2A4D6CFB799B79AF1BBBDD1B4B0BEBDB79BB79CB79DB4DCCED1B79EBFDFF1BDB79FB7A0B840B841BFFAF1BCB842F1BFB843B844B845F1BEF1C0B846B847B848B849B84AF1C1B84BB84CB84DB84EB84FB850B851B852B853B854B855C1FEB856B857B858B859B85AB85BB85CB85DB85EB85FB860C1A2B861B862B863B864B865B866B867B868B869B86ACAFAB86BB86CD5BEB86DB86EB86FB870BEBABEB9D5C2B871B872BFA2B873CDAFF1B5B874B875B876B877B878B879BDDFB87AB6CBB87BB87CB87DB87EB880B881B882B883B884D6F1F3C3B885B886F3C4B887B8CDB888B889B88AF3C6F3C7B88BB0CAB88CF3C5B88DF3C9CBF1B88EB88FB890F3CBB891D0A6B892B893B1CAF3C8B894B895B896F3CFB897B5D1B898B899F3D7B89AF3D2B89BB89CB89DF3D4F3D3B7FBB89EB1BFB89FF3CEF3CAB5DAB8A0F3D0B940B941F3D1B942F3D5B943B944B945B946F3CDB947BCE3B948C1FDB949F3D6B94AB94BB94CB94DB94EB94FF3DAB950F3CCB951B5C8B952BDEEF3DCB953B954B7A4BFF0D6FECDB2B955B4F0B956B2DFB957F3D8B958F3D9C9B8B959F3DDB95AB95BF3DEB95CF3E1B95DB95EB95FB960B961B962B963B964B965B966B967F3DFB968B969F3E3F3E2B96AB96BF3DBB96CBFEAB96DB3EFB96EF3E0B96FB970C7A9B971BCF2B972B973B974B975F3EBB976B977B978B979B97AB97BB97CB9BFB97DB97EF3E4B980B981B982B2ADBBFEB983CBE3B984B985B986B987F3EDF3E9B988B989B98AB9DCF3EEB98BB98CB98DF3E5F3E6F3EAC2E1F3ECF3EFF3E8BCFDB98EB98FB990CFE4B991B992F3F0B993B994B995F3E7B996B997B998B999B99AB99BB99CB99DF3F2B99EB99FB9A0BA40D7ADC6AABA41BA42BA43BA44F3F3BA45BA46BA47BA48F3F1BA49C2A8BA4ABA4BBA4CBA4DBA4EB8DDF3F5BA4FBA50F3F4BA51BA52BA53B4DBBA54BA55BA56F3F6F3F7BA57BA58BA59F3F8BA5ABA5BBA5CC0BABA5DBA5EC0E9BA5FBA60BA61BA62BA63C5F1BA64BA65BA66BA67F3FBBA68F3FABA69BA6ABA6BBA6CBA6DBA6EBA6FBA70B4D8BA71BA72BA73F3FEF3F9BA74BA75F3FCBA76BA77BA78BA79BA7ABA7BF3FDBA7CBA7DBA7EBA80BA81BA82BA83BA84F4A1BA85BA86BA87BA88BA89BA8AF4A3BBC9BA8BBA8CF4A2BA8DBA8EBA8FBA90BA91BA92BA93BA94BA95BA96BA97BA98BA99F4A4BA9ABA9BBA9CBA9DBA9EBA9FB2BEF4A6F4A5BAA0BB40BB41BB42BB43BB44BB45BB46BB47BB48BB49BCAEBB4ABB4BBB4CBB4DBB4EBB4FBB50BB51BB52BB53BB54BB55BB56BB57BB58BB59BB5ABB5BBB5CBB5DBB5EBB5FBB60BB61BB62BB63BB64BB65BB66BB67BB68BB69BB6ABB6BBB6CBB6DBB6EC3D7D9E1BB6FBB70BB71BB72BB73BB74C0E0F4CCD7D1BB75BB76BB77BB78BB79BB7ABB7BBB7CBB7DBB7EBB80B7DBBB81BB82BB83BB84BB85BB86BB87F4CEC1A3BB88BB89C6C9BB8AB4D6D5B3BB8BBB8CBB8DF4D0F4CFF4D1CBDABB8EBB8FF4D2BB90D4C1D6E0BB91BB92BB93BB94B7E0BB95BB96BB97C1B8BB98BB99C1BBF4D3BEACBB9ABB9BBB9CBB9DBB9EB4E2BB9FBBA0F4D4F4D5BEABBC40BC41F4D6BC42BC43BC44F4DBBC45F4D7F4DABC46BAFDBC47F4D8F4D9BC48BC49BC4ABC4BBC4CBC4DBC4EB8E2CCC7F4DCBC4FB2DABC50BC51C3D3BC52BC53D4E3BFB7BC54BC55BC56BC57BC58BC59BC5AF4DDBC5BBC5CBC5DBC5EBC5FBC60C5B4BC61BC62BC63BC64BC65BC66BC67BC68F4E9BC69BC6ACFB5BC6BBC6CBC6DBC6EBC6FBC70BC71BC72BC73BC74BC75BC76BC77BC78CEC9BC79BC7ABC7BBC7CBC7DBC7EBC80BC81BC82BC83BC84BC85BC86BC87BC88BC89BC8ABC8BBC8CBC8DBC8ECBD8BC8FCBF7BC90BC91BC92BC93BDF4BC94BC95BC96D7CFBC97BC98BC99C0DBBC9ABC9BBC9CBC9DBC9EBC9FBCA0BD40BD41BD42BD43BD44BD45BD46BD47BD48BD49BD4ABD4BBD4CBD4DBD4EBD4FBD50BD51BD52BD53BD54BD55BD56BD57BD58BD59BD5ABD5BBD5CBD5DBD5EBD5FBD60BD61BD62BD63BD64BD65BD66BD67BD68BD69BD6ABD6BBD6CBD6DBD6EBD6FBD70BD71BD72BD73BD74BD75BD76D0F5BD77BD78BD79BD7ABD7BBD7CBD7DBD7EF4EABD80BD81BD82BD83BD84BD85BD86BD87BD88BD89BD8ABD8BBD8CBD8DBD8EBD8FBD90BD91BD92BD93BD94BD95BD96BD97BD98BD99BD9ABD9BBD9CBD9DBD9EBD9FBDA0BE40BE41BE42BE43BE44BE45BE46BE47BE48BE49BE4ABE4BBE4CF4EBBE4DBE4EBE4FBE50BE51BE52BE53F4ECBE54BE55BE56BE57BE58BE59BE5ABE5BBE5CBE5DBE5EBE5FBE60BE61BE62BE63BE64BE65BE66BE67BE68BE69BE6ABE6BBE6CBE6DBE6EBE6FBE70BE71BE72BE73BE74BE75BE76BE77BE78BE79BE7ABE7BBE7CBE7DBE7EBE80BE81BE82BE83BE84BE85BE86BE87BE88BE89BE8ABE8BBE8CBE8DBE8EBE8FBE90BE91BE92BE93BE94BE95BE96BE97BE98BE99BE9ABE9BBE9CBE9DBE9EBE9FBEA0BF40BF41BF42BF43BF44BF45BF46BF47BF48BF49BF4ABF4BBF4CBF4DBF4EBF4FBF50BF51BF52BF53BF54BF55BF56BF57BF58BF59BF5ABF5BBF5CBF5DBF5EBF5FBF60BF61BF62BF63BF64BF65BF66BF67BF68BF69BF6ABF6BBF6CBF6DBF6EBF6FBF70BF71BF72BF73BF74BF75BF76BF77BF78BF79BF7ABF7BBF7CBF7DBF7EBF80F7E3BF81BF82BF83BF84BF85B7B1BF86BF87BF88BF89BF8AF4EDBF8BBF8CBF8DBF8EBF8FBF90BF91BF92BF93BF94BF95BF96BF97BF98BF99BF9ABF9BBF9CBF9DBF9EBF9FBFA0C040C041C042C043C044C045C046C047C048C049C04AC04BC04CC04DC04EC04FC050C051C052C053C054C055C056C057C058C059C05AC05BC05CC05DC05EC05FC060C061C062C063D7EBC064C065C066C067C068C069C06AC06BC06CC06DC06EC06FC070C071C072C073C074C075C076C077C078C079C07AC07BF4EEC07CC07DC07EE6F9BEC0E6FABAECE6FBCFCBE6FCD4BCBCB6E6FDE6FEBCCDC8D2CEB3E7A1C080B4BFE7A2C9B4B8D9C4C9C081D7DDC2DAB7D7D6BDCEC6B7C4C082C083C5A6E7A3CFDFE7A4E7A5E7A6C1B7D7E9C9F0CFB8D6AFD6D5E7A7B0EDE7A8E7A9C9DCD2EFBEADE7AAB0F3C8DEBDE1E7ABC8C6C084E7ACBBE6B8F8D1A4E7ADC2E7BEF8BDCACDB3E7AEE7AFBEEED0E5C085CBE7CCD0BCCCE7B0BCA8D0F7E7B1C086D0F8E7B2E7B3B4C2E7B4E7B5C9FECEACC3E0E7B7B1C1B3F1C087E7B8E7B9D7DBD5C0E7BAC2CCD7BAE7BBE7BCE7BDBCEAC3E5C0C2E7BEE7BFBCA9C088E7C0E7C1E7B6B6D0E7C2C089E7C3E7C4BBBAB5DEC2C6B1E0E7C5D4B5E7C6B8BFE7C8E7C7B7ECC08AE7C9B2F8E7CAE7CBE7CCE7CDE7CEE7CFE7D0D3A7CBF5E7D1E7D2E7D3E7D4C9C9E7D5E7D6E7D7E7D8E7D9BDC9E7DAF3BEC08BB8D7C08CC8B1C08DC08EC08FC090C091C092C093F3BFC094F3C0F3C1C095C096C097C098C099C09AC09BC09CC09DC09EB9DECDF8C09FC0A0D8E8BAB1C140C2DEEEB7C141B7A3C142C143C144C145EEB9C146EEB8B0D5C147C148C149C14AC14BEEBBD5D6D7EFC14CC14DC14ED6C3C14FC150EEBDCAF0C151EEBCC152C153C154C155EEBEC156C157C158C159EEC0C15AC15BEEBFC15CC15DC15EC15FC160C161C162C163D1F2C164C7BCC165C3C0C166C167C168C169C16AB8E1C16BC16CC16DC16EC16FC1E7C170C171F4C6D0DFF4C7C172CFDBC173C174C8BAC175C176F4C8C177C178C179C17AC17BC17CC17DF4C9F4CAC17EF4CBC180C181C182C183C184D9FAB8FEC185C186E5F1D3F0C187F4E0C188CECCC189C18AC18BB3E1C18CC18DC18EC18FF1B4C190D2EEC191F4E1C192C193C194C195C196CFE8F4E2C197C198C7CCC199C19AC19BC19CC19DC19EB5D4B4E4F4E4C19FC1A0C240F4E3F4E5C241C242F4E6C243C244C245C246F4E7C247BAB2B0BFC248F4E8C249C24AC24BC24CC24DC24EC24FB7ADD2EDC250C251C252D2ABC0CFC253BFBCEBA3D5DFEAC8C254C255C256C257F1F3B6F8CBA3C258C259C4CDC25AF1E7C25BF1E8B8FBF1E9BAC4D4C5B0D2C25CC25DF1EAC25EC25FC260F1EBC261F1ECC262C263F1EDF1EEF1EFF1F1F1F0C5D5C264C265C266C267C268C269F1F2C26AB6FAC26BF1F4D2AEDEC7CBCAC26CC26DB3DCC26EB5A2C26FB9A2C270C271C4F4F1F5C272C273F1F6C274C275C276C1C4C1FBD6B0F1F7C277C278C279C27AF1F8C27BC1AAC27CC27DC27EC6B8C280BEDBC281C282C283C284C285C286C287C288C289C28AC28BC28CC28DC28EF1F9B4CFC28FC290C291C292C293C294F1FAC295C296C297C298C299C29AC29BC29CC29DC29EC29FC2A0C340EDB2EDB1C341C342CBE0D2DEC343CBC1D5D8C344C8E2C345C0DFBCA1C346C347C348C349C34AC34BEBC1C34CC34DD0A4C34ED6E2C34FB6C7B8D8EBC0B8CEC350EBBFB3A6B9C9D6ABC351B7F4B7CAC352C353C354BCE7B7BEEBC6C355EBC7B0B9BFCFC356EBC5D3FDC357EBC8C358C359EBC9C35AC35BB7CEC35CEBC2EBC4C9F6D6D7D5CDD0B2EBCFCEB8EBD0C35DB5A8C35EC35FC360C361C362B1B3EBD2CCA5C363C364C365C366C367C368C369C5D6EBD3C36AEBD1C5DFEBCECAA4EBD5B0FBC36BC36CBAFAC36DC36ED8B7F1E3C36FEBCAEBCBEBCCEBCDEBD6E6C0EBD9C370BFE8D2C8EBD7EBDCB8ECEBD8C371BDBAC372D0D8C373B0B7C374EBDDC4DCC375C376C377C378D6ACC379C37AC37BB4E0C37CC37DC2F6BCB9C37EC380EBDAEBDBD4E0C6EAC4D4EBDFC5A7D9F5C381B2B1C382EBE4C383BDC5C384C385C386EBE2C387C388C389C38AC38BC38CC38DC38EC38FC390C391C392C393EBE3C394C395B8ACC396CDD1EBE5C397C398C399EBE1C39AC1B3C39BC39CC39DC39EC39FC6A2C3A0C440C441C442C443C444C445CCF3C446EBE6C447C0B0D2B8EBE7C448C449C44AB8AFB8ADC44BEBE8C7BBCDF3C44CC44DC44EEBEAEBEBC44FC450C451C452C453EBEDC454C455C456C457D0C8C458EBF2C459EBEEC45AC45BC45CEBF1C8F9C45DD1FCEBECC45EC45FEBE9C460C461C462C463B8B9CFD9C4E5EBEFEBF0CCDACDC8B0F2C464EBF6C465C466C467C468C469EBF5C46AB2B2C46BC46CC46DC46EB8E0C46FEBF7C470C471C472C473C474C475B1ECC476C477CCC5C4A4CFA5C478C479C47AC47BC47CEBF9C47DC47EECA2C480C5F2C481EBFAC482C483C484C485C486C487C488C489C9C5C48AC48BC48CC48DC48EC48FE2DFEBFEC490C491C492C493CDCEECA1B1DBD3B7C494C495D2DCC496C497C498EBFDC499EBFBC49AC49BC49CC49DC49EC49FC4A0C540C541C542C543C544C545C546C547C548C549C54AC54BC54CC54DC54EB3BCC54FC550C551EAB0C552C553D7D4C554F4ABB3F4C555C556C557C558C559D6C1D6C2C55AC55BC55CC55DC55EC55FD5E9BECAC560F4A7C561D2A8F4A8F4A9C562F4AABECBD3DFC563C564C565C566C567C9E0C9E1C568C569F3C2C56ACAE6C56BCCF2C56CC56DC56EC56FC570C571E2B6CBB4C572CEE8D6DBC573F4ADF4AEF4AFC574C575C576C577F4B2C578BABDF4B3B0E3F4B0C579F4B1BDA2B2D5C57AF4B6F4B7B6E6B2B0CFCFF4B4B4ACC57BF4B5C57CC57DF4B8C57EC580C581C582C583F4B9C584C585CDA7C586F4BAC587F4BBC588C589C58AF4BCC58BC58CC58DC58EC58FC590C591C592CBD2C593F4BDC594C595C596C597F4BEC598C599C59AC59BC59CC59DC59EC59FF4BFC5A0C640C641C642C643F4DEC1BCBCE8C644C9ABD1DEE5F5C645C646C647C648DCB3D2D5C649C64ADCB4B0ACDCB5C64BC64CBDDAC64DDCB9C64EC64FC650D8C2C651DCB7D3F3C652C9D6DCBADCB6C653DCBBC3A2C654C655C656C657DCBCDCC5DCBDC658C659CEDFD6A5C65ADCCFC65BDCCDC65CC65DDCD2BDE6C2ABC65EDCB8DCCBDCCEDCBEB7D2B0C5DCC7D0BEDCC1BBA8C65FB7BCDCCCC660C661DCC6DCBFC7DBC662C663C664D1BFDCC0C665C666DCCAC667C668DCD0C669C66ACEADDCC2C66BDCC3DCC8DCC9B2D4DCD1CBD5C66CD4B7DCDBDCDFCCA6DCE6C66DC3E7DCDCC66EC66FBFC1DCD9C670B0FAB9B6DCE5DCD3C671DCC4DCD6C8F4BFE0C672C673C674C675C9BBC676C677C678B1BDC679D3A2C67AC67BDCDAC67CC67DDCD5C67EC6BBC680DCDEC681C682C683C684C685D7C2C3AFB7B6C7D1C3A9DCE2DCD8DCEBDCD4C686C687DCDDC688BEA5DCD7C689DCE0C68AC68BDCE3DCE4C68CDCF8C68DC68EDCE1DDA2DCE7C68FC690C691C692C693C694C695C696C697C698BCEBB4C4C699C69AC3A3B2E7DCFAC69BDCF2C69CDCEFC69DDCFCDCEED2F0B2E8C69EC8D7C8E3DCFBC69FDCEDC6A0C740C741DCF7C742C743DCF5C744C745BEA3DCF4C746B2DDC747C748C749C74AC74BDCF3BCF6DCE8BBC4C74CC0F3C74DC74EC74FC750C751BCD4DCE9DCEAC752DCF1DCF6DCF9B5B4C753C8D9BBE7DCFEDCFDD3ABDDA1DDA3DDA5D2F1DDA4DDA6DDA7D2A9C754C755C756C757C758C759C75ABAC9DDA9C75BC75CDDB6DDB1DDB4C75DC75EC75FC760C761C762C763DDB0C6CEC764C765C0F2C766C767C768C769C9AFC76AC76BC76CDCECDDAEC76DC76EC76FC770DDB7C771C772DCF0DDAFC773DDB8C774DDACC775C776C777C778C779C77AC77BDDB9DDB3DDADC4AAC77CC77DC77EC780DDA8C0B3C1ABDDAADDABC781DDB2BBF1DDB5D3A8DDBAC782DDBBC3A7C783C784DDD2DDBCC785C786C787DDD1C788B9BDC789C78ABED5C78BBEFAC78CC78DBACAC78EC78FC790C791DDCAC792DDC5C793DDBFC794C795C796B2CBDDC3C797DDCBB2A4DDD5C798C799C79ADDBEC79BC79CC79DC6D0DDD0C79EC79FC7A0C840C841DDD4C1E2B7C6C842C843C844C845C846DDCEDDCFC847C848C849DDC4C84AC84BC84CDDBDC84DDDCDCCD1C84EDDC9C84FC850C851C852DDC2C3C8C6BCCEAEDDCCC853DDC8C854C855C856C857C858C859DDC1C85AC85BC85CDDC6C2DCC85DC85EC85FC860C861C862D3A9D3AADDD3CFF4C8F8C863C864C865C866C867C868C869C86ADDE6C86BC86CC86DC86EC86FC870DDC7C871C872C873DDE0C2E4C874C875C876C877C878C879C87AC87BDDE1C87CC87DC87EC880C881C882C883C884C885C886DDD7C887C888C889C88AC88BD6F8C88CDDD9DDD8B8F0DDD6C88DC88EC88FC890C6CFC891B6ADC892C893C894C895C896DDE2C897BAF9D4E1DDE7C898C899C89AB4D0C89BDDDAC89CBFFBDDE3C89DDDDFC89EDDDDC89FC8A0C940C941C942C943C944B5D9C945C946C947C948DDDBDDDCDDDEC949BDAFDDE4C94ADDE5C94BC94CC94DC94EC94FC950C951C952DDF5C953C3C9C954C955CBE2C956C957C958C959DDF2C95AC95BC95CC95DC95EC95FC960C961C962C963C964C965C966D8E1C967C968C6D1C969DDF4C96AC96BC96CD5F4DDF3DDF0C96DC96EDDECC96FDDEFC970DDE8C971C972D0EEC973C974C975C976C8D8DDEEC977C978DDE9C979C97ADDEACBF2C97BDDEDC97CC97DB1CDC97EC980C981C982C983C984C0B6C985BCBBDDF1C986C987DDF7C988DDF6DDEBC989C98AC98BC98CC98DC5EEC98EC98FC990DDFBC991C992C993C994C995C996C997C998C999C99AC99BDEA4C99CC99DDEA3C99EC99FC9A0CA40CA41CA42CA43CA44CA45CA46CA47CA48DDF8CA49CA4ACA4BCA4CC3EFCA4DC2FBCA4ECA4FCA50D5E1CA51CA52CEB5CA53CA54CA55CA56DDFDCA57B2CCCA58CA59CA5ACA5BCA5CCA5DCA5ECA5FCA60C4E8CADFCA61CA62CA63CA64CA65CA66CA67CA68CA69CA6AC7BEDDFADDFCDDFEDEA2B0AAB1CECA6BCA6CCA6DCA6ECA6FDEACCA70CA71CA72CA73DEA6BDB6C8EFCA74CA75CA76CA77CA78CA79CA7ACA7BCA7CCA7DCA7EDEA1CA80CA81DEA5CA82CA83CA84CA85DEA9CA86CA87CA88CA89CA8ADEA8CA8BCA8CCA8DDEA7CA8ECA8FCA90CA91CA92CA93CA94CA95CA96DEADCA97D4CCCA98CA99CA9ACA9BDEB3DEAADEAECA9CCA9DC0D9CA9ECA9FCAA0CB40CB41B1A1DEB6CB42DEB1CB43CB44CB45CB46CB47CB48CB49DEB2CB4ACB4BCB4CCB4DCB4ECB4FCB50CB51CB52CB53CB54D1A6DEB5CB55CB56CB57CB58CB59CB5ACB5BDEAFCB5CCB5DCB5EDEB0CB5FD0BDCB60CB61CB62DEB4CAEDDEB9CB63CB64CB65CB66CB67CB68DEB8CB69DEB7CB6ACB6BCB6CCB6DCB6ECB6FCB70DEBBCB71CB72CB73CB74CB75CB76CB77BDE5CB78CB79CB7ACB7BCB7CB2D8C3EACB7DCB7EDEBACB80C5BACB81CB82CB83CB84CB85CB86DEBCCB87CB88CB89CB8ACB8BCB8CCB8DCCD9CB8ECB8FCB90CB91B7AACB92CB93CB94CB95CB96CB97CB98CB99CB9ACB9BCB9CCB9DCB9ECB9FCBA0CC40CC41D4E5CC42CC43CC44DEBDCC45CC46CC47CC48CC49DEBFCC4ACC4BCC4CCC4DCC4ECC4FCC50CC51CC52CC53CC54C4A2CC55CC56CC57CC58DEC1CC59CC5ACC5BCC5CCC5DCC5ECC5FCC60CC61CC62CC63CC64CC65CC66CC67CC68DEBECC69DEC0CC6ACC6BCC6CCC6DCC6ECC6FCC70CC71CC72CC73CC74CC75CC76CC77D5BACC78CC79CC7ADEC2CC7BCC7CCC7DCC7ECC80CC81CC82CC83CC84CC85CC86CC87CC88CC89CC8ACC8BF2AEBBA2C2B2C5B0C2C7CC8CCC8DF2AFCC8ECC8FCC90CC91CC92D0E9CC93CC94CC95D3DDCC96CC97CC98EBBDCC99CC9ACC9BCC9CCC9DCC9ECC9FCCA0B3E6F2B0CD40F2B1CD41CD42CAADCD43CD44CD45CD46CD47CD48CD49BAE7F2B3F2B5F2B4CBE4CFBAF2B2CAB4D2CFC2ECCD4ACD4BCD4CCD4DCD4ECD4FCD50CEC3F2B8B0F6F2B7CD51CD52CD53CD54CD55F2BECD56B2CFCD57CD58CD59CD5ACD5BCD5CD1C1F2BACD5DCD5ECD5FCD60CD61F2BCD4E9CD62CD63F2BBF2B6F2BFF2BDCD64F2B9CD65CD66F2C7F2C4F2C6CD67CD68F2CAF2C2F2C0CD69CD6ACD6BF2C5CD6CCD6DCD6ECD6FCD70D6FBCD71CD72CD73F2C1CD74C7F9C9DFCD75F2C8B9C6B5B0CD76CD77F2C3F2C9F2D0F2D6CD78CD79BBD7CD7ACD7BCD7CF2D5CDDCCD7DD6EBCD7ECD80F2D2F2D4CD81CD82CD83CD84B8F2CD85CD86CD87CD88F2CBCD89CD8ACD8BF2CEC2F9CD8CD5DDF2CCF2CDF2CFF2D3CD8DCD8ECD8FF2D9D3BCCD90CD91CD92CD93B6EACD94CAF1CD95B7E4F2D7CD96CD97CD98F2D8F2DAF2DDF2DBCD99CD9AF2DCCD9BCD9CCD9DCD9ED1D1F2D1CD9FCDC9CDA0CECFD6A9CE40F2E3CE41C3DBCE42F2E0CE43CE44C0AFF2ECF2DECE45F2E1CE46CE47CE48F2E8CE49CE4ACE4BCE4CF2E2CE4DCE4EF2E7CE4FCE50F2E6CE51CE52F2E9CE53CE54CE55F2DFCE56CE57F2E4F2EACE58CE59CE5ACE5BCE5CCE5DCE5ED3ACF2E5B2F5CE5FCE60F2F2CE61D0ABCE62CE63CE64CE65F2F5CE66CE67CE68BBC8CE69F2F9CE6ACE6BCE6CCE6DCE6ECE6FF2F0CE70CE71F2F6F2F8F2FACE72CE73CE74CE75CE76CE77CE78CE79F2F3CE7AF2F1CE7BCE7CCE7DBAFBCE7EB5FBCE80CE81CE82CE83F2EFF2F7F2EDF2EECE84CE85CE86F2EBF3A6CE87F3A3CE88CE89F3A2CE8ACE8BF2F4CE8CC8DACE8DCE8ECE8FCE90CE91F2FBCE92CE93CE94F3A5CE95CE96CE97CE98CE99CE9ACE9BC3F8CE9CCE9DCE9ECE9FCEA0CF40CF41CF42F2FDCF43CF44F3A7F3A9F3A4CF45F2FCCF46CF47CF48F3ABCF49F3AACF4ACF4BCF4CCF4DC2DDCF4ECF4FF3AECF50CF51F3B0CF52CF53CF54CF55CF56F3A1CF57CF58CF59F3B1F3ACCF5ACF5BCF5CCF5DCF5EF3AFF2FEF3ADCF5FCF60CF61CF62CF63CF64CF65F3B2CF66CF67CF68CF69F3B4CF6ACF6BCF6CCF6DF3A8CF6ECF6FCF70CF71F3B3CF72CF73CF74F3B5CF75CF76CF77CF78CF79CF7ACF7BCF7CCF7DCF7ED0B7CF80CF81CF82CF83F3B8CF84CF85CF86CF87D9F9CF88CF89CF8ACF8BCF8CCF8DF3B9CF8ECF8FCF90CF91CF92CF93CF94CF95F3B7CF96C8E4F3B6CF97CF98CF99CF9AF3BACF9BCF9CCF9DCF9ECF9FF3BBB4C0CFA0D040D041D042D043D044D045D046D047D048D049D04AD04BD04CD04DEEC3D04ED04FD050D051D052D053F3BCD054D055F3BDD056D057D058D1AAD059D05AD05BF4ACD0C6D05CD05DD05ED05FD060D061D0D0D1DCD062D063D064D065D066D067CFCED068D069BDD6D06AD1C3D06BD06CD06DD06ED06FD070D071BAE2E1E9D2C2F1C2B2B9D072D073B1EDF1C3D074C9C0B3C4D075D9F2D076CBA5D077F1C4D078D079D07AD07BD6D4D07CD07DD07ED080D081F1C5F4C0F1C6D082D4ACF1C7D083B0C0F4C1D084D085F4C2D086D087B4FCD088C5DBD089D08AD08BD08CCCBBD08DD08ED08FD0E4D090D091D092D093D094CDE0D095D096D097D098D099F1C8D09AD9F3D09BD09CD09DD09ED09FD0A0B1BBD140CFAED141D142D143B8A4D144D145D146D147D148F1CAD149D14AD14BD14CF1CBD14DD14ED14FD150B2C3C1D1D151D152D7B0F1C9D153D154F1CCD155D156D157D158F1CED159D15AD15BD9F6D15CD2E1D4A3D15DD15EF4C3C8B9D15FD160D161D162D163F4C4D164D165F1CDF1CFBFE3F1D0D166D167F1D4D168D169D16AD16BD16CD16DD16EF1D6F1D1D16FC9D1C5E1D170D171D172C2E3B9FCD173D174F1D3D175F1D5D176D177D178B9D3D179D17AD17BD17CD17DD17ED180F1DBD181D182D183D184D185BAD6D186B0FDF1D9D187D188D189D18AD18BF1D8F1D2F1DAD18CD18DD18ED18FD190F1D7D191D192D193C8ECD194D195D196D197CDCAF1DDD198D199D19AD19BE5BDD19CD19DD19EF1DCD19FF1DED1A0D240D241D242D243D244D245D246D247D248F1DFD249D24ACFE5D24BD24CD24DD24ED24FD250D251D252D253D254D255D256D257D258D259D25AD25BD25CD25DD25ED25FD260D261D262D263F4C5BDF3D264D265D266D267D268D269F1E0D26AD26BD26CD26DD26ED26FD270D271D272D273D274D275D276D277D278D279D27AD27BD27CD27DF1E1D27ED280D281CEF7D282D2AAD283F1FBD284D285B8B2D286D287D288D289D28AD28BD28CD28DD28ED28FD290D291D292D293D294D295D296D297D298D299D29AD29BD29CD29DD29ED29FD2A0D340D341D342D343D344D345D346D347D348D349D34AD34BD34CD34DD34ED34FD350D351D352D353D354D355D356D357D358D359D35AD35BD35CD35DD35EBCFBB9DBD35FB9E6C3D9CAD3EAE8C0C0BEF5EAE9EAEAEAEBD360EAECEAEDEAEEEAEFBDC7D361D362D363F5FBD364D365D366F5FDD367F5FED368F5FCD369D36AD36BD36CBDE2D36DF6A1B4A5D36ED36FD370D371F6A2D372D373D374F6A3D375D376D377ECB2D378D379D37AD37BD37CD37DD37ED380D381D382D383D384D1D4D385D386D387D388D389D38AD9EAD38BD38CD38DD38ED38FD390D391D392D393D394D395D396D397D398D399D39AD39BD39CD39DD39ED39FD3A0D440D441D442D443D444D445D446D447D448D449D44AD44BD44CD44DD44ED44FD450D451D452D453D454D455D456D457D458D459D45AD45BD45CD45DD45ED45FF6A4D460D461D462D463D464D465D466D467D468EEBAD469D46AD46BD46CD46DD46ED46FD470D471D472D473D474D475D476D477D478D479D47AD47BD47CD47DD47ED480D481D482D483D484D485D486D487D488D489D48AD48BD48CD48DD48ED48FD490D491D492D493D494D495D496D497D498D499D5B2D49AD49BD49CD49DD49ED49FD4A0D540D541D542D543D544D545D546D547D3FECCDCD548D549D54AD54BD54CD54DD54ED54FCAC4D550D551D552D553D554D555D556D557D558D559D55AD55BD55CD55DD55ED55FD560D561D562D563D564D565D566D567D568D569D56AD56BD56CD56DD56ED56FD570D571D572D573D574D575D576D577D578D579D57AD57BD57CD57DD57ED580D581D582D583D584D585D586D587D588D589D58AD58BD58CD58DD58ED58FD590D591D592D593D594D595D596D597D598D599D59AD59BD59CD59DD59ED59FD5A0D640D641D642D643D644D645D646D647D648D649D64AD64BD64CD64DD64ED64FD650D651D652D653D654D655D656D657D658D659D65AD65BD65CD65DD65ED65FD660D661D662E5C0D663D664D665D666D667D668D669D66AD66BD66CD66DD66ED66FD670D671D672D673D674D675D676D677D678D679D67AD67BD67CD67DD67ED680D681F6A5D682D683D684D685D686D687D688D689D68AD68BD68CD68DD68ED68FD690D691D692D693D694D695D696D697D698D699D69AD69BD69CD69DD69ED69FD6A0D740D741D742D743D744D745D746D747D748D749D74AD74BD74CD74DD74ED74FD750D751D752D753D754D755D756D757D758D759D75AD75BD75CD75DD75ED75FBEAFD760D761D762D763D764C6A9D765D766D767D768D769D76AD76BD76CD76DD76ED76FD770D771D772D773D774D775D776D777D778D779D77AD77BD77CD77DD77ED780D781D782D783D784D785D786D787D788D789D78AD78BD78CD78DD78ED78FD790D791D792D793D794D795D796D797D798DAA5BCC6B6A9B8BCC8CFBCA5DAA6DAA7CCD6C8C3DAA8C6FDD799D1B5D2E9D1B6BCC7D79ABDB2BBE4DAA9DAAAD1C8DAABD0EDB6EFC2DBD79BCBCFB7EDC9E8B7C3BEF7D6A4DAACDAADC6C0D7E7CAB6D79CD5A9CBDFD5EFDAAED6DFB4CADAB0DAAFD79DD2EBDAB1DAB2DAB3CAD4DAB4CAABDAB5DAB6B3CFD6EFDAB7BBB0B5AEDAB8DAB9B9EED1AFD2E8DABAB8C3CFEAB2EFDABBDABCD79EBDEBCEDCD3EFDABDCEF3DABED3D5BBE5DABFCBB5CBD0DAC0C7EBD6EEDAC1C5B5B6C1DAC2B7CCBFCEDAC3DAC4CBADDAC5B5F7DAC6C1C2D7BBDAC7CCB8D79FD2EAC4B1DAC8B5FDBBD1DAC9D0B3DACADACBCEBDDACCDACDDACEB2F7DAD1DACFD1E8DAD0C3D5DAD2D7A0DAD3DAD4DAD5D0BBD2A5B0F9DAD6C7ABDAD7BDF7C3A1DAD8DAD9C3FDCCB7DADADADBC0BEC6D7DADCDADDC7B4DADEDADFB9C8D840D841D842D843D844D845D846D847D848BBEDD849D84AD84BD84CB6B9F4F8D84DF4F9D84ED84FCDE3D850D851D852D853D854D855D856D857F5B9D858D859D85AD85BEBE0D85CD85DD85ED85FD860D861CFF3BBBFD862D863D864D865D866D867D868BAC0D4A5D869D86AD86BD86CD86DD86ED86FE1D9D870D871D872D873F5F4B1AAB2F2D874D875D876D877D878D879D87AF5F5D87BD87CF5F7D87DD87ED880BAD1F5F6D881C3B2D882D883D884D885D886D887D888F5F9D889D88AD88BF5F8D88CD88DD88ED88FD890D891D892D893D894D895D896D897D898D899D89AD89BD89CD89DD89ED89FD8A0D940D941D942D943D944D945D946D947D948D949D94AD94BD94CD94DD94ED94FD950D951D952D953D954D955D956D957D958D959D95AD95BD95CD95DD95ED95FD960D961D962D963D964D965D966D967D968D969D96AD96BD96CD96DD96ED96FD970D971D972D973D974D975D976D977D978D979D97AD97BD97CD97DD97ED980D981D982D983D984D985D986D987D988D989D98AD98BD98CD98DD98ED98FD990D991D992D993D994D995D996D997D998D999D99AD99BD99CD99DD99ED99FD9A0DA40DA41DA42DA43DA44DA45DA46DA47DA48DA49DA4ADA4BDA4CDA4DDA4EB1B4D5EAB8BADA4FB9B1B2C6D4F0CFCDB0DCD5CBBBF5D6CAB7B7CCB0C6B6B1E1B9BAD6FCB9E1B7A1BCFAEADAEADBCCF9B9F3EADCB4FBC3B3B7D1BAD8EADDD4F4EADEBCD6BBDFEADFC1DEC2B8D4DFD7CAEAE0EAE1EAE4EAE2EAE3C9DEB8B3B6C4EAE5CAEAC9CDB4CDDA50DA51E2D9C5E2EAE6C0B5DA52D7B8EAE7D7ACC8FCD8D3D8CDD4DEDA53D4F9C9C4D3AEB8D3B3E0DA54C9E2F4F6DA55DA56DA57BAD5DA58F4F7DA59DA5AD7DFDA5BDA5CF4F1B8B0D5D4B8CFC6F0DA5DDA5EDA5FDA60DA61DA62DA63DA64DA65B3C3DA66DA67F4F2B3ACDA68DA69DA6ADA6BD4BDC7F7DA6CDA6DDA6EDA6FDA70F4F4DA71DA72F4F3DA73DA74DA75DA76DA77DA78DA79DA7ADA7BDA7CCCCBDA7DDA7EDA80C8A4DA81DA82DA83DA84DA85DA86DA87DA88DA89DA8ADA8BDA8CDA8DF4F5DA8ED7E3C5BFF5C0DA8FDA90F5BBDA91F5C3DA92F5C2DA93D6BAF5C1DA94DA95DA96D4BEF5C4DA97F5CCDA98DA99DA9ADA9BB0CFB5F8DA9CF5C9F5CADA9DC5DCDA9EDA9FDAA0DB40F5C5F5C6DB41DB42F5C7F5CBDB43BEE0F5C8B8FADB44DB45DB46F5D0F5D3DB47DB48DB49BFE7DB4AB9F2F5BCF5CDDB4BDB4CC2B7DB4DDB4EDB4FCCF8DB50BCF9DB51F5CEF5CFF5D1B6E5F5D2DB52F5D5DB53DB54DB55DB56DB57DB58DB59F5BDDB5ADB5BDB5CF5D4D3BBDB5DB3ECDB5EDB5FCCA4DB60DB61DB62DB63F5D6DB64DB65DB66DB67DB68DB69DB6ADB6BF5D7BEE1F5D8DB6CDB6DCCDFF5DBDB6EDB6FDB70DB71DB72B2C8D7D9DB73F5D9DB74F5DAF5DCDB75F5E2DB76DB77DB78F5E0DB79DB7ADB7BF5DFF5DDDB7CDB7DF5E1DB7EDB80F5DEF5E4F5E5DB81CCE3DB82DB83E5BFB5B8F5E3F5E8CCA3DB84DB85DB86DB87DB88F5E6F5E7DB89DB8ADB8BDB8CDB8DDB8EF5BEDB8FDB90DB91DB92DB93DB94DB95DB96DB97DB98DB99DB9AB1C4DB9BDB9CF5BFDB9DDB9EB5C5B2E4DB9FF5ECF5E9DBA0B6D7DC40F5EDDC41F5EADC42DC43DC44DC45DC46F5EBDC47DC48B4DADC49D4EADC4ADC4BDC4CF5EEDC4DB3F9DC4EDC4FDC50DC51DC52DC53DC54F5EFF5F1DC55DC56DC57F5F0DC58DC59DC5ADC5BDC5CDC5DDC5EF5F2DC5FF5F3DC60DC61DC62DC63DC64DC65DC66DC67DC68DC69DC6ADC6BC9EDB9AADC6CDC6DC7FBDC6EDC6FB6E3DC70DC71DC72DC73DC74DC75DC76CCC9DC77DC78DC79DC7ADC7BDC7CDC7DDC7EDC80DC81DC82DC83DC84DC85DC86DC87DC88DC89DC8AEAA6DC8BDC8CDC8DDC8EDC8FDC90DC91DC92DC93DC94DC95DC96DC97DC98DC99DC9ADC9BDC9CDC9DDC9EDC9FDCA0DD40DD41DD42DD43DD44DD45DD46DD47DD48DD49DD4ADD4BDD4CDD4DDD4EDD4FDD50DD51DD52DD53DD54DD55DD56DD57DD58DD59DD5ADD5BDD5CDD5DDD5EDD5FDD60DD61DD62DD63DD64DD65DD66DD67DD68DD69DD6ADD6BDD6CDD6DDD6EDD6FDD70DD71DD72DD73DD74DD75DD76DD77DD78DD79DD7ADD7BDD7CDD7DDD7EDD80DD81DD82DD83DD84DD85DD86DD87DD88DD89DD8ADD8BDD8CDD8DDD8EDD8FDD90DD91DD92DD93DD94DD95DD96DD97DD98DD99DD9ADD9BDD9CDD9DDD9EDD9FDDA0DE40DE41DE42DE43DE44DE45DE46DE47DE48DE49DE4ADE4BDE4CDE4DDE4EDE4FDE50DE51DE52DE53DE54DE55DE56DE57DE58DE59DE5ADE5BDE5CDE5DDE5EDE5FDE60B3B5D4FEB9ECD0F9DE61E9EDD7AAE9EEC2D6C8EDBAE4E9EFE9F0E9F1D6E1E9F2E9F3E9F5E9F4E9F6E9F7C7E1E9F8D4D8E9F9BDCEDE62E9FAE9FBBDCFE9FCB8A8C1BEE9FDB1B2BBD4B9F5E9FEDE63EAA1EAA2EAA3B7F8BCADDE64CAE4E0CED4AFCFBDD5B7EAA4D5DEEAA5D0C1B9BCDE65B4C7B1D9DE66DE67DE68C0B1DE69DE6ADE6BDE6CB1E6B1E7DE6DB1E8DE6EDE6FDE70DE71B3BDC8E8DE72DE73DE74DE75E5C1DE76DE77B1DFDE78DE79DE7AC1C9B4EFDE7BDE7CC7A8D3D8DE7DC6F9D1B8DE7EB9FDC2F5DE80DE81DE82DE83DE84D3ADDE85D4CBBDFCDE86E5C2B7B5E5C3DE87DE88BBB9D5E2DE89BDF8D4B6CEA5C1ACB3D9DE8ADE8BCCF6DE8CE5C6E5C4E5C8DE8DE5CAE5C7B5CFC6C8DE8EB5FCE5C5DE8FCAF6DE90DE91E5C9DE92DE93DE94C3D4B1C5BCA3DE95DE96DE97D7B7DE98DE99CDCBCBCDCACACCD3E5CCE5CBC4E6DE9ADE9BD1A1D1B7E5CDDE9CE5D0DE9DCDB8D6F0E5CFB5DDDE9ECDBEDE9FE5D1B6BADEA0DF40CDA8B9E4DF41CAC5B3D1CBD9D4ECE5D2B7EADF42DF43DF44E5CEDF45DF46DF47DF48DF49DF4AE5D5B4FEE5D6DF4BDF4CDF4DDF4EDF4FE5D3E5D4DF50D2DDDF51DF52C2DFB1C6DF53D3E2DF54DF55B6DDCBECDF56E5D7DF57DF58D3F6DF59DF5ADF5BDF5CDF5DB1E9DF5EB6F4E5DAE5D8E5D9B5C0DF5FDF60DF61D2C5E5DCDF62DF63E5DEDF64DF65DF66DF67DF68DF69E5DDC7B2DF6AD2A3DF6BDF6CE5DBDF6DDF6EDF6FDF70D4E2D5DADF71DF72DF73DF74DF75E5E0D7F1DF76DF77DF78DF79DF7ADF7BDF7CE5E1DF7DB1DCD1FBDF7EE5E2E5E4DF80DF81DF82DF83E5E3DF84DF85E5E5DF86DF87DF88DF89DF8AD2D8DF8BB5CBDF8CE7DFDF8DDAF5DF8EDAF8DF8FDAF6DF90DAF7DF91DF92DF93DAFAD0CFC4C7DF94DF95B0EEDF96DF97DF98D0B0DF99DAF9DF9AD3CABAAADBA2C7F1DF9BDAFCDAFBC9DBDAFDDF9CDBA1D7DEDAFEC1DADF9DDF9EDBA5DF9FDFA0D3F4E040E041DBA7DBA4E042DBA8E043E044BDBCE045E046E047C0C9DBA3DBA6D6A3E048DBA9E049E04AE04BDBADE04CE04DE04EDBAEDBACBAC2E04FE050E051BFA4DBABE052E053E054DBAAD4C7B2BFE055E056DBAFE057B9F9E058DBB0E059E05AE05BE05CB3BBE05DE05EE05FB5A6E060E061E062E063B6BCDBB1E064E065E066B6F5E067DBB2E068E069E06AE06BE06CE06DE06EE06FE070E071E072E073E074E075E076E077E078E079E07AE07BB1C9E07CE07DE07EE080DBB4E081E082E083DBB3DBB5E084E085E086E087E088E089E08AE08BE08CE08DE08EDBB7E08FDBB6E090E091E092E093E094E095E096DBB8E097E098E099E09AE09BE09CE09DE09EE09FDBB9E0A0E140DBBAE141E142D3CFF4FAC7F5D7C3C5E4F4FCF4FDF4FBE143BEC6E144E145E146E147D0EFE148E149B7D3E14AE14BD4CDCCAAE14CE14DF5A2F5A1BAA8F4FECBD6E14EE14FE150F5A4C0D2E151B3EAE152CDAAF5A5F5A3BDB4F5A8E153F5A9BDCDC3B8BFE1CBE1F5AAE154E155E156F5A6F5A7C4F0E157E158E159E15AE15BF5ACE15CB4BCE15DD7EDE15EB4D7F5ABF5AEE15FE160F5ADF5AFD0D1E161E162E163E164E165E166E167C3D1C8A9E168E169E16AE16BE16CE16DF5B0F5B1E16EE16FE170E171E172E173F5B2E174E175F5B3F5B4F5B5E176E177E178E179F5B7F5B6E17AE17BE17CE17DF5B8E17EE180E181E182E183E184E185E186E187E188E189E18AB2C9E18BD3D4CACDE18CC0EFD6D8D2B0C1BFE18DBDF0E18EE18FE190E191E192E193E194E195E196E197B8AAE198E199E19AE19BE19CE19DE19EE19FE1A0E240E241E242E243E244E245E246E247E248E249E24AE24BE24CE24DE24EE24FE250E251E252E253E254E255E256E257E258E259E25AE25BE25CE25DE25EE25FE260E261E262E263E264E265E266E267E268E269E26AE26BE26CE26DE26EE26FE270E271E272E273E274E275E276E277E278E279E27AE27BE27CE27DE27EE280E281E282E283E284E285E286E287E288E289E28AE28BE28CE28DE28EE28FE290E291E292E293E294E295E296E297E298E299E29AE29BE29CE29DE29EE29FE2A0E340E341E342E343E344E345E346E347E348E349E34AE34BE34CE34DE34EE34FE350E351E352E353E354E355E356E357E358E359E35AE35BE35CE35DE35EE35FE360E361E362E363E364E365E366E367E368E369E36AE36BE36CE36DBCF8E36EE36FE370E371E372E373E374E375E376E377E378E379E37AE37BE37CE37DE37EE380E381E382E383E384E385E386E387F6C6E388E389E38AE38BE38CE38DE38EE38FE390E391E392E393E394E395E396E397E398E399E39AE39BE39CE39DE39EE39FE3A0E440E441E442E443E444E445F6C7E446E447E448E449E44AE44BE44CE44DE44EE44FE450E451E452E453E454E455E456E457E458E459E45AE45BE45CE45DE45EF6C8E45FE460E461E462E463E464E465E466E467E468E469E46AE46BE46CE46DE46EE46FE470E471E472E473E474E475E476E477E478E479E47AE47BE47CE47DE47EE480E481E482E483E484E485E486E487E488E489E48AE48BE48CE48DE48EE48FE490E491E492E493E494E495E496E497E498E499E49AE49BE49CE49DE49EE49FE4A0E540E541E542E543E544E545E546E547E548E549E54AE54BE54CE54DE54EE54FE550E551E552E553E554E555E556E557E558E559E55AE55BE55CE55DE55EE55FE560E561E562E563E564E565E566E567E568E569E56AE56BE56CE56DE56EE56FE570E571E572E573F6C9E574E575E576E577E578E579E57AE57BE57CE57DE57EE580E581E582E583E584E585E586E587E588E589E58AE58BE58CE58DE58EE58FE590E591E592E593E594E595E596E597E598E599E59AE59BE59CE59DE59EE59FF6CAE5A0E640E641E642E643E644E645E646E647E648E649E64AE64BE64CE64DE64EE64FE650E651E652E653E654E655E656E657E658E659E65AE65BE65CE65DE65EE65FE660E661E662F6CCE663E664E665E666E667E668E669E66AE66BE66CE66DE66EE66FE670E671E672E673E674E675E676E677E678E679E67AE67BE67CE67DE67EE680E681E682E683E684E685E686E687E688E689E68AE68BE68CE68DE68EE68FE690E691E692E693E694E695E696E697E698E699E69AE69BE69CE69DF6CBE69EE69FE6A0E740E741E742E743E744E745E746E747F7E9E748E749E74AE74BE74CE74DE74EE74FE750E751E752E753E754E755E756E757E758E759E75AE75BE75CE75DE75EE75FE760E761E762E763E764E765E766E767E768E769E76AE76BE76CE76DE76EE76FE770E771E772E773E774E775E776E777E778E779E77AE77BE77CE77DE77EE780E781E782E783E784E785E786E787E788E789E78AE78BE78CE78DE78EE78FE790E791E792E793E794E795E796E797E798E799E79AE79BE79CE79DE79EE79FE7A0E840E841E842E843E844E845E846E847E848E849E84AE84BE84CE84DE84EF6CDE84FE850E851E852E853E854E855E856E857E858E859E85AE85BE85CE85DE85EE85FE860E861E862E863E864E865E866E867E868E869E86AE86BE86CE86DE86EE86FE870E871E872E873E874E875E876E877E878E879E87AF6CEE87BE87CE87DE87EE880E881E882E883E884E885E886E887E888E889E88AE88BE88CE88DE88EE88FE890E891E892E893E894EEC4EEC5EEC6D5EBB6A4EEC8EEC7EEC9EECAC7A5EECBEECCE895B7B0B5F6EECDEECFE896EECEE897B8C6EED0EED1EED2B6DBB3AED6D3C4C6B1B5B8D6EED3EED4D4BFC7D5BEFBCED9B9B3EED6EED5EED8EED7C5A5EED9EEDAC7AEEEDBC7AFEEDCB2A7EEDDEEDEEEDFEEE0EEE1D7EAEEE2EEE3BCD8EEE4D3CBCCFAB2ACC1E5EEE5C7A6C3ADE898EEE6EEE7EEE8EEE9EEEAEEEBEEECE899EEEDEEEEEEEFE89AE89BEEF0EEF1EEF2EEF4EEF3E89CEEF5CDADC2C1EEF6EEF7EEF8D5A1EEF9CFB3EEFAEEFBE89DEEFCEEFDEFA1EEFEEFA2B8F5C3FAEFA3EFA4BDC2D2BFB2F9EFA5EFA6EFA7D2F8EFA8D6FDEFA9C6CCE89EEFAAEFABC1B4EFACCFFACBF8EFAEEFADB3FAB9F8EFAFEFB0D0E2EFB1EFB2B7E6D0BFEFB3EFB4EFB5C8F1CCE0EFB6EFB7EFB8EFB9EFBAD5E0EFBBB4EDC3AAEFBCE89FEFBDEFBEEFBFE8A0CEFDEFC0C2E0B4B8D7B6BDF5E940CFC7EFC3EFC1EFC2EFC4B6A7BCFCBEE2C3CCEFC5EFC6E941EFC7EFCFEFC8EFC9EFCAC7C2EFF1B6CDEFCBE942EFCCEFCDB6C6C3BEEFCEE943EFD0EFD1EFD2D5F2E944EFD3C4F7E945EFD4C4F8EFD5EFD6B8E4B0F7EFD7EFD8EFD9E946EFDAEFDBEFDCEFDDE947EFDEBEB5EFE1EFDFEFE0E948EFE2EFE3C1CDEFE4EFE5EFE6EFE7EFE8EFE9EFEAEFEBEFECC0D8E949EFEDC1ADEFEEEFEFEFF0E94AE94BCFE2E94CE94DE94EE94FE950E951E952E953B3A4E954E955E956E957E958E959E95AE95BE95CE95DE95EE95FE960E961E962E963E964E965E966E967E968E969E96AE96BE96CE96DE96EE96FE970E971E972E973E974E975E976E977E978E979E97AE97BE97CE97DE97EE980E981E982E983E984E985E986E987E988E989E98AE98BE98CE98DE98EE98FE990E991E992E993E994E995E996E997E998E999E99AE99BE99CE99DE99EE99FE9A0EA40EA41EA42EA43EA44EA45EA46EA47EA48EA49EA4AEA4BEA4CEA4DEA4EEA4FEA50EA51EA52EA53EA54EA55EA56EA57EA58EA59EA5AEA5BC3C5E3C5C9C1E3C6EA5CB1D5CECAB4B3C8F2E3C7CFD0E3C8BCE4E3C9E3CAC3C6D5A2C4D6B9EBCEC5E3CBC3F6E3CCEA5DB7A7B8F3BAD2E3CDE3CED4C4E3CFEA5EE3D0D1CBE3D1E3D2E3D3E3D4D1D6E3D5B2FBC0BBE3D6EA5FC0ABE3D7E3D8E3D9EA60E3DAE3DBEA61B8B7DAE2EA62B6D3EA63DAE4DAE3EA64EA65EA66EA67EA68EA69EA6ADAE6EA6BEA6CEA6DC8EEEA6EEA6FDAE5B7C0D1F4D2F5D5F3BDD7EA70EA71EA72EA73D7E8DAE8DAE7EA74B0A2CDD3EA75DAE9EA76B8BDBCCAC2BDC2A4B3C2DAEAEA77C2AAC4B0BDB5EA78EA79CFDEEA7AEA7BEA7CDAEBC9C2EA7DEA7EEA80EA81EA82B1DDEA83EA84EA85DAECEA86B6B8D4BAEA87B3FDEA88EA89DAEDD4C9CFD5C5E3EA8ADAEEEA8BEA8CEA8DEA8EEA8FDAEFEA90DAF0C1EACCD5CFDDEA91EA92EA93EA94EA95EA96EA97EA98EA99EA9AEA9BEA9CEA9DD3E7C2A1EA9EDAF1EA9FEAA0CBE5EB40DAF2EB41CBE6D2FEEB42EB43EB44B8F4EB45EB46DAF3B0AFCFB6EB47EB48D5CFEB49EB4AEB4BEB4CEB4DEB4EEB4FEB50EB51EB52CBEDEB53EB54EB55EB56EB57EB58EB59EB5ADAF4EB5BEB5CE3C4EB5DEB5EC1A5EB5FEB60F6BFEB61EB62F6C0F6C1C4D1EB63C8B8D1E3EB64EB65D0DBD1C5BCAFB9CDEB66EFF4EB67EB68B4C6D3BAF6C2B3FBEB69EB6AF6C3EB6BEB6CB5F1EB6DEB6EEB6FEB70EB71EB72EB73EB74EB75EB76F6C5EB77EB78EB79EB7AEB7BEB7CEB7DD3EAF6A7D1A9EB7EEB80EB81EB82F6A9EB83EB84EB85F6A8EB86EB87C1E3C0D7EB88B1A2EB89EB8AEB8BEB8CCEEDEB8DD0E8F6ABEB8EEB8FCFF6EB90F6AAD5F0F6ACC3B9EB91EB92EB93BBF4F6AEF6ADEB94EB95EB96C4DEEB97EB98C1D8EB99EB9AEB9BEB9CEB9DCBAAEB9ECFBCEB9FEBA0EC40EC41EC42EC43EC44EC45EC46EC47EC48F6AFEC49EC4AF6B0EC4BEC4CF6B1EC4DC2B6EC4EEC4FEC50EC51EC52B0D4C5F9EC53EC54EC55EC56F6B2EC57EC58EC59EC5AEC5BEC5CEC5DEC5EEC5FEC60EC61EC62EC63EC64EC65EC66EC67EC68EC69C7E0F6A6EC6AEC6BBEB8EC6CEC6DBEB2EC6EB5E5EC6FEC70B7C7EC71BFBFC3D2C3E6EC72EC73D8CCEC74EC75EC76B8EFEC77EC78EC79EC7AEC7BEC7CEC7DEC7EEC80BDF9D1A5EC81B0D0EC82EC83EC84EC85EC86F7B0EC87EC88EC89EC8AEC8BEC8CEC8DEC8EF7B1EC8FEC90EC91EC92EC93D0ACEC94B0B0EC95EC96EC97F7B2F7B3EC98F7B4EC99EC9AEC9BC7CAEC9CEC9DEC9EEC9FECA0ED40ED41BECFED42ED43F7B7ED44ED45ED46ED47ED48ED49ED4AF7B6ED4BB1DEED4CF7B5ED4DED4EF7B8ED4FF7B9ED50ED51ED52ED53ED54ED55ED56ED57ED58ED59ED5AED5BED5CED5DED5EED5FED60ED61ED62ED63ED64ED65ED66ED67ED68ED69ED6AED6BED6CED6DED6EED6FED70ED71ED72ED73ED74ED75ED76ED77ED78ED79ED7AED7BED7CED7DED7EED80ED81CEA4C8CDED82BAABE8B8E8B9E8BABEC2ED83ED84ED85ED86ED87D2F4ED88D4CFC9D8ED89ED8AED8BED8CED8DED8EED8FED90ED91ED92ED93ED94ED95ED96ED97ED98ED99ED9AED9BED9CED9DED9EED9FEDA0EE40EE41EE42EE43EE44EE45EE46EE47EE48EE49EE4AEE4BEE4CEE4DEE4EEE4FEE50EE51EE52EE53EE54EE55EE56EE57EE58EE59EE5AEE5BEE5CEE5DEE5EEE5FEE60EE61EE62EE63EE64EE65EE66EE67EE68EE69EE6AEE6BEE6CEE6DEE6EEE6FEE70EE71EE72EE73EE74EE75EE76EE77EE78EE79EE7AEE7BEE7CEE7DEE7EEE80EE81EE82EE83EE84EE85EE86EE87EE88EE89EE8AEE8BEE8CEE8DEE8EEE8FEE90EE91EE92EE93EE94EE95EE96EE97EE98EE99EE9AEE9BEE9CEE9DEE9EEE9FEEA0EF40EF41EF42EF43EF44EF45D2B3B6A5C7EAF1FCCFEECBB3D0EBE7EFCDE7B9CBB6D9F1FDB0E4CBCCF1FED4A4C2ADC1ECC6C4BEB1F2A1BCD5EF46F2A2F2A3EF47F2A4D2C3C6B5EF48CDC7F2A5EF49D3B1BFC5CCE2EF4AF2A6F2A7D1D5B6EEF2A8F2A9B5DFF2AAF2ABEF4BB2FCF2ACF2ADC8A7EF4CEF4DEF4EEF4FEF50EF51EF52EF53EF54EF55EF56EF57EF58EF59EF5AEF5BEF5CEF5DEF5EEF5FEF60EF61EF62EF63EF64EF65EF66EF67EF68EF69EF6AEF6BEF6CEF6DEF6EEF6FEF70EF71B7E7EF72EF73ECA9ECAAECABEF74ECACEF75EF76C6AEECADECAEEF77EF78EF79B7C9CAB3EF7AEF7BEF7CEF7DEF7EEF80EF81E2B8F7CFEF82EF83EF84EF85EF86EF87EF88EF89EF8AEF8BEF8CEF8DEF8EEF8FEF90EF91EF92EF93EF94EF95EF96EF97EF98EF99EF9AEF9BEF9CEF9DEF9EEF9FEFA0F040F041F042F043F044F7D0F045F046B2CDF047F048F049F04AF04BF04CF04DF04EF04FF050F051F052F053F054F055F056F057F058F059F05AF05BF05CF05DF05EF05FF060F061F062F063F7D1F064F065F066F067F068F069F06AF06BF06CF06DF06EF06FF070F071F072F073F074F075F076F077F078F079F07AF07BF07CF07DF07EF080F081F082F083F084F085F086F087F088F089F7D3F7D2F08AF08BF08CF08DF08EF08FF090F091F092F093F094F095F096E2BBF097BCA2F098E2BCE2BDE2BEE2BFE2C0E2C1B7B9D2FBBDA4CACEB1A5CBC7F099E2C2B6FCC8C4E2C3F09AF09BBDC8F09CB1FDE2C4F09DB6F6E2C5C4D9F09EF09FE2C6CFDAB9DDE2C7C0A1F0A0E2C8B2F6F140E2C9F141C1F3E2CAE2CBC2F8E2CCE2CDE2CECAD7D8B8D9E5CFE3F142F143F144F145F146F147F148F149F14AF14BF14CF0A5F14DF14EDCB0F14FF150F151F152F153F154F155F156F157F158F159F15AF15BF15CF15DF15EF15FF160F161F162F163F164F165F166F167F168F169F16AF16BF16CF16DF16EF16FF170F171F172F173F174F175F176F177F178F179F17AF17BF17CF17DF17EF180F181F182F183F184F185F186F187F188F189F18AF18BF18CF18DF18EF18FF190F191F192F193F194F195F196F197F198F199F19AF19BF19CF19DF19EF19FF1A0F240F241F242F243F244F245F246F247F248F249F24AF24BF24CF24DF24EF24FF250F251F252F253F254F255F256F257F258F259F25AF25BF25CF25DF25EF25FF260F261F262F263F264F265F266F267F268F269F26AF26BF26CF26DF26EF26FF270F271F272F273F274F275F276F277F278F279F27AF27BF27CF27DF27EF280F281F282F283F284F285F286F287F288F289F28AF28BF28CF28DF28EF28FF290F291F292F293F294F295F296F297F298F299F29AF29BF29CF29DF29EF29FF2A0F340F341F342F343F344F345F346F347F348F349F34AF34BF34CF34DF34EF34FF350F351C2EDD4A6CDD4D1B1B3DBC7FDF352B2B5C2BFE6E0CABBE6E1E6E2BED4E6E3D7A4CDD5E6E5BCDDE6E4E6E6E6E7C2EEF353BDBEE6E8C2E6BAA7E6E9F354E6EAB3D2D1E9F355F356BFA5E6EBC6EFE6ECE6EDF357F358E6EEC6ADE6EFF359C9A7E6F0E6F1E6F2E5B9E6F3E6F4C2E2E6F5E6F6D6E8E6F7F35AE6F8B9C7F35BF35CF35DF35EF35FF360F361F7BBF7BAF362F363F364F365F7BEF7BCBAA1F366F7BFF367F7C0F368F369F36AF7C2F7C1F7C4F36BF36CF7C3F36DF36EF36FF370F371F7C5F7C6F372F373F374F375F7C7F376CBE8F377F378F379F37AB8DFF37BF37CF37DF37EF380F381F7D4F382F7D5F383F384F385F386F7D6F387F388F389F38AF7D8F38BF7DAF38CF7D7F38DF38EF38FF390F391F392F393F394F395F7DBF396F7D9F397F398F399F39AF39BF39CF39DD7D7F39EF39FF3A0F440F7DCF441F442F443F444F445F446F7DDF447F448F449F7DEF44AF44BF44CF44DF44EF44FF450F451F452F453F454F7DFF455F456F457F7E0F458F459F45AF45BF45CF45DF45EF45FF460F461F462DBCBF463F464D8AAF465F466F467F468F469F46AF46BF46CE5F7B9EDF46DF46EF46FF470BFFDBBEAF7C9C6C7F7C8F471F7CAF7CCF7CBF472F473F474F7CDF475CEBAF476F7CEF477F478C4A7F479F47AF47BF47CF47DF47EF480F481F482F483F484F485F486F487F488F489F48AF48BF48CF48DF48EF48FF490F491F492F493F494F495F496F497F498F499F49AF49BF49CF49DF49EF49FF4A0F540F541F542F543F544F545F546F547F548F549F54AF54BF54CF54DF54EF54FF550F551F552F553F554F555F556F557F558F559F55AF55BF55CF55DF55EF55FF560F561F562F563F564F565F566F567F568F569F56AF56BF56CF56DF56EF56FF570F571F572F573F574F575F576F577F578F579F57AF57BF57CF57DF57EF580F581F582F583F584F585F586F587F588F589F58AF58BF58CF58DF58EF58FF590F591F592F593F594F595F596F597F598F599F59AF59BF59CF59DF59EF59FF5A0F640F641F642F643F644F645F646F647F648F649F64AF64BF64CF64DF64EF64FF650F651F652F653F654F655F656F657F658F659F65AF65BF65CF65DF65EF65FF660F661F662F663F664F665F666F667F668F669F66AF66BF66CF66DF66EF66FF670F671F672F673F674F675F676F677F678F679F67AF67BF67CF67DF67EF680F681F682F683F684F685F686F687F688F689F68AF68BF68CF68DF68EF68FF690F691F692F693F694F695F696F697F698F699F69AF69BF69CF69DF69EF69FF6A0F740F741F742F743F744F745F746F747F748F749F74AF74BF74CF74DF74EF74FF750F751F752F753F754F755F756F757F758F759F75AF75BF75CF75DF75EF75FF760F761F762F763F764F765F766F767F768F769F76AF76BF76CF76DF76EF76FF770F771F772F773F774F775F776F777F778F779F77AF77BF77CF77DF77EF780D3E3F781F782F6CFF783C2B3F6D0F784F785F6D1F6D2F6D3F6D4F786F787F6D6F788B1ABF6D7F789F6D8F6D9F6DAF78AF6DBF6DCF78BF78CF78DF78EF6DDF6DECFCAF78FF6DFF6E0F6E1F6E2F6E3F6E4C0F0F6E5F6E6F6E7F6E8F6E9F790F6EAF791F6EBF6ECF792F6EDF6EEF6EFF6F0F6F1F6F2F6F3F6F4BEA8F793F6F5F6F6F6F7F6F8F794F795F796F797F798C8FAF6F9F6FAF6FBF6FCF799F79AF6FDF6FEF7A1F7A2F7A3F7A4F7A5F79BF79CF7A6F7A7F7A8B1EEF7A9F7AAF7ABF79DF79EF7ACF7ADC1DBF7AEF79FF7A0F7AFF840F841F842F843F844F845F846F847F848F849F84AF84BF84CF84DF84EF84FF850F851F852F853F854F855F856F857F858F859F85AF85BF85CF85DF85EF85FF860F861F862F863F864F865F866F867F868F869F86AF86BF86CF86DF86EF86FF870F871F872F873F874F875F876F877F878F879F87AF87BF87CF87DF87EF880F881F882F883F884F885F886F887F888F889F88AF88BF88CF88DF88EF88FF890F891F892F893F894F895F896F897F898F899F89AF89BF89CF89DF89EF89FF8A0F940F941F942F943F944F945F946F947F948F949F94AF94BF94CF94DF94EF94FF950F951F952F953F954F955F956F957F958F959F95AF95BF95CF95DF95EF95FF960F961F962F963F964F965F966F967F968F969F96AF96BF96CF96DF96EF96FF970F971F972F973F974F975F976F977F978F979F97AF97BF97CF97DF97EF980F981F982F983F984F985F986F987F988F989F98AF98BF98CF98DF98EF98FF990F991F992F993F994F995F996F997F998F999F99AF99BF99CF99DF99EF99FF9A0FA40FA41FA42FA43FA44FA45FA46FA47FA48FA49FA4AFA4BFA4CFA4DFA4EFA4FFA50FA51FA52FA53FA54FA55FA56FA57FA58FA59FA5AFA5BFA5CFA5DFA5EFA5FFA60FA61FA62FA63FA64FA65FA66FA67FA68FA69FA6AFA6BFA6CFA6DFA6EFA6FFA70FA71FA72FA73FA74FA75FA76FA77FA78FA79FA7AFA7BFA7CFA7DFA7EFA80FA81FA82FA83FA84FA85FA86FA87FA88FA89FA8AFA8BFA8CFA8DFA8EFA8FFA90FA91FA92FA93FA94FA95FA96FA97FA98FA99FA9AFA9BFA9CFA9DFA9EFA9FFAA0FB40FB41FB42FB43FB44FB45FB46FB47FB48FB49FB4AFB4BFB4CFB4DFB4EFB4FFB50FB51FB52FB53FB54FB55FB56FB57FB58FB59FB5AFB5BC4F1F0AFBCA6F0B0C3F9FB5CC5B8D1BBFB5DF0B1F0B2F0B3F0B4F0B5D1BCFB5ED1ECFB5FF0B7F0B6D4A7FB60CDD2F0B8F0BAF0B9F0BBF0BCFB61FB62B8EBF0BDBAE8FB63F0BEF0BFBEE9F0C0B6ECF0C1F0C2F0C3F0C4C8B5F0C5F0C6FB64F0C7C5F4FB65F0C8FB66FB67FB68F0C9FB69F0CAF7BDFB6AF0CBF0CCF0CDFB6BF0CEFB6CFB6DFB6EFB6FF0CFBAD7FB70F0D0F0D1F0D2F0D3F0D4F0D5F0D6F0D8FB71FB72D3A5F0D7FB73F0D9FB74FB75FB76FB77FB78FB79FB7AFB7BFB7CFB7DF5BAC2B9FB7EFB80F7E4FB81FB82FB83FB84F7E5F7E6FB85FB86F7E7FB87FB88FB89FB8AFB8BFB8CF7E8C2B4FB8DFB8EFB8FFB90FB91FB92FB93FB94FB95F7EAFB96F7EBFB97FB98FB99FB9AFB9BFB9CC2F3FB9DFB9EFB9FFBA0FC40FC41FC42FC43FC44FC45FC46FC47FC48F4F0FC49FC4AFC4BF4EFFC4CFC4DC2E9FC4EF7E1F7E2FC4FFC50FC51FC52FC53BBC6FC54FC55FC56FC57D9E4FC58FC59FC5ACAF2C0E8F0A4FC5BBADAFC5CFC5DC7ADFC5EFC5FFC60C4ACFC61FC62F7ECF7EDF7EEFC63F7F0F7EFFC64F7F1FC65FC66F7F4FC67F7F3FC68F7F2F7F5FC69FC6AFC6BFC6CF7F6FC6DFC6EFC6FFC70FC71FC72FC73FC74FC75EDE9FC76EDEAEDEBFC77F6BCFC78FC79FC7AFC7BFC7CFC7DFC7EFC80FC81FC82FC83FC84F6BDFC85F6BEB6A6FC86D8BEFC87FC88B9C4FC89FC8AFC8BD8BBFC8CDCB1FC8DFC8EFC8FFC90FC91FC92CAF3FC93F7F7FC94FC95FC96FC97FC98FC99FC9AFC9BFC9CF7F8FC9DFC9EF7F9FC9FFCA0FD40FD41FD42FD43FD44F7FBFD45F7FAFD46B1C7FD47F7FCF7FDFD48FD49FD4AFD4BFD4CF7FEFD4DFD4EFD4FFD50FD51FD52FD53FD54FD55FD56FD57C6EBECB4FD58FD59FD5AFD5BFD5CFD5DFD5EFD5FFD60FD61FD62FD63FD64FD65FD66FD67FD68FD69FD6AFD6BFD6CFD6DFD6EFD6FFD70FD71FD72FD73FD74FD75FD76FD77FD78FD79FD7AFD7BFD7CFD7DFD7EFD80FD81FD82FD83FD84FD85B3DDF6B3FD86FD87F6B4C1E4F6B5F6B6F6B7F6B8F6B9F6BAC8A3F6BBFD88FD89FD8AFD8BFD8CFD8DFD8EFD8FFD90FD91FD92FD93C1FAB9A8EDE8FD94FD95FD96B9EAD9DFFD97FD98FD99FD9AFD9'; + + for (var i = 0; i < str.length; i++) { + var c = str.charAt(i), + code = str.charCodeAt(i); + if (c == " ") strOut += "+"; + else if (code >= 19968 && code <= 40869) { + var index = code - 19968; + strOut += "%" + z.substr(index * 4, 2) + "%" + z.substr(index * 4 + 2, 2); + } else { + strOut += "%" + str.charCodeAt(i).toString(16); + } + } + return strOut; + }, + /* 改变图片大小 */ + scale: function (img, w, h) { + var ow = img.width, + oh = img.height; + + 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'; + } + }, + getImageData: function(){ + var _this = this, + key = $G('searchTxt').value, + type = $G('searchType').value, + keepOriginName = editor.options.keepOriginName ? "1" : "0", + url = "http://image.baidu.com/i?ct=201326592&cl=2&lm=-1&st=-1&tn=baiduimagejson&istype=2&rn=32&fm=index&pv=&word=" + _this.encodeToGb2312(key) + type + "&keeporiginname=" + keepOriginName + "&" + +new Date; + + $G('searchListUl').innerHTML = lang.searchLoading; + ajax.request(url, { + 'dataType': 'jsonp', + 'charset': 'GB18030', + 'onsuccess':function(json){ + var list = []; + if(json && json.data) { + for(var i = 0; i < json.data.length; i++) { + if(json.data[i].objURL) { + list.push({ + title: json.data[i].fromPageTitleEnc, + src: json.data[i].objURL, + url: json.data[i].fromURL + }); + } + } + } + _this.setList(list); + }, + 'onerror':function(){ + $G('searchListUl').innerHTML = lang.searchRetry; + } + }); + }, + /* 添加图片到列表界面上 */ + setList: function (list) { + var i, item, p, img, link, _this = this, + listUl = $G('searchListUl'); + + listUl.innerHTML = ''; + if(list.length) { + for (i = 0; i < list.length; i++) { + item = document.createElement('li'); + p = document.createElement('p'); + img = document.createElement('img'); + link = document.createElement('a'); + + img.onload = function () { + _this.scale(this, 113, 113); + }; + img.width = 113; + img.setAttribute('src', list[i].src); + + link.href = list[i].url; + link.target = '_blank'; + link.title = list[i].title; + link.innerHTML = list[i].title; + + p.appendChild(img); + item.appendChild(p); + item.appendChild(link); + listUl.appendChild(item); + } + } else { + listUl.innerHTML = lang.searchRetry; + } + }, + getInsertList: function () { + var child, + src, + align = getAlign(), + list = [], + items = $G('searchListUl').children; + for(var i = 0; i < items.length; i++) { + child = items[i].firstChild && items[i].firstChild.firstChild; + if(child.tagName && child.tagName.toLowerCase() == 'img' && domUtils.hasClass(items[i], 'selected')) { + src = child.src; + list.push({ + src: src, + _src: src, + alt: src.substr(src.lastIndexOf('/') + 1), + floatStyle: align + }); + } + } + return list; + } + }; + +})(); diff --git a/yshop-drink-vue3/public/UEditor/dialogs/image/images/alignicon.jpg b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/image/images/bg.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/image/images/icons.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/image/images/progress.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/image/images/success.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/image/images/success.png b/yshop-drink-vue3/public/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
    + +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/internal.js b/yshop-drink-vue3/public/UEditor/dialogs/internal.js new file mode 100644 index 0000000..0c419f4 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/internal.js @@ -0,0 +1,80 @@ +(function () { + /* eslint-disable */ + if (window.frameElement.id) { + let parent = window.parent, + + dialog = parent.$EDITORUI[window.frameElement.id.replace(/_iframe$/, '')], + + editor = dialog.editor, + + UE = parent.UE, + + domUtils = UE.dom.domUtils, + + utils = UE.utils, + + browser = UE.browser, + /* eslint-disable */ + ajax = UE.ajax, + + $G = function (id) { + return document.getElementById(id) + }, + $focus = function (node) { + setTimeout(function () { + if (browser.ie) { + var r = node.createTextRange(); + r.collapse(false); + r.select(); + } else { + node.focus() + } + }, 0) + }; + window.nowEditor = {editor: editor, dialog: dialog}; + utils.loadFile(document, { + href: editor.options.themePath + editor.options.theme + '/dialogbase.css?cache=' + Math.random(), + tag: 'link', + type: 'text/css', + rel: 'stylesheet' + }); + var 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; + let 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/yshop-drink-vue3/public/UEditor/dialogs/link/link.html b/yshop-drink-vue3/public/UEditor/dialogs/link/link.html new file mode 100644 index 0000000..317a650 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/link/link.html @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + diff --git a/yshop-drink-vue3/public/UEditor/dialogs/map/map.html b/yshop-drink-vue3/public/UEditor/dialogs/map/map.html new file mode 100644 index 0000000..9857f2f --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/map/map.html @@ -0,0 +1,135 @@ + + + + + + + + + + +
    + + + + + + + + + +
    ::
    +
    + +
    + + + + + diff --git a/yshop-drink-vue3/public/UEditor/dialogs/map/show.html b/yshop-drink-vue3/public/UEditor/dialogs/map/show.html new file mode 100644 index 0000000..4ed955d --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/map/show.html @@ -0,0 +1,118 @@ + + + + + + + 百度地图API自定义地图 + + + + + + + +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/music/music.css b/yshop-drink-vue3/public/UEditor/dialogs/music/music.css new file mode 100644 index 0000000..82d6118 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/music/music.css @@ -0,0 +1,30 @@ +.wrapper{margin: 5px 10px;} + +.searchBar{height:30px;padding:7px 0 3px;text-align:center;} +.searchBtn{font-size:13px;height:24px;} + +.resultBar{width:460px;margin:5px auto;border: 1px solid #CCC;border-radius: 5px;box-shadow: 2px 2px 5px #D3D6DA;overflow: hidden;} + +.listPanel{overflow: hidden;} +.panelon{display:block;} +.paneloff{display:none} + +.page{width:220px;margin:20px auto;overflow: hidden;} +.pageon{float:right;width:24px;line-height:24px;height:24px;margin-right: 5px;background: none;border: none;color: #000;font-weight: bold;text-align:center} +.pageoff{float:right;width:24px;line-height:24px;height:24px;cursor:pointer;background-color: #fff; + border: 1px solid #E7ECF0;color: #2D64B3;margin-right: 5px;text-decoration: none;text-align:center;} + +.m-box{width:460px;} +.m-m{float: left;line-height: 20px;height: 20px;} +.m-h{height:24px;line-height:24px;padding-left: 46px;background-color:#FAFAFA;border-bottom: 1px solid #DAD8D8;font-weight: bold;font-size: 12px;color: #333;} +.m-l{float:left;width:40px; } +.m-t{float:left;width:140px;} +.m-s{float:left;width:110px;} +.m-z{float:left;width:100px;} +.m-try-t{float: left;width: 60px;;} + +.m-try{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/try_music.gif') no-repeat ;} +.m-trying{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/stop_music.gif') no-repeat ;} + +.loading{width:95px;height:7px;font-size:7px;margin:60px auto;background:url(http://static.tieba.baidu.com/tb/editor/images/loading.gif) no-repeat} +.empty{width:300px;height:40px;padding:2px;margin:50px auto;line-height:40px; color:#006699;text-align:center;} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/music/music.html b/yshop-drink-vue3/public/UEditor/dialogs/music/music.html new file mode 100644 index 0000000..7dad7a7 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/music/music.html @@ -0,0 +1,32 @@ + + + + + 插入音乐 + + + + +
    + +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/music/music.js b/yshop-drink-vue3/public/UEditor/dialogs/music/music.js new file mode 100644 index 0000000..e43ea54 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/music/music.js @@ -0,0 +1,192 @@ +function Music() { + this.init(); +} +(function () { + var pages = [], + panels = [], + selectedItem = null; + Music.prototype = { + total:70, + pageSize:10, + dataUrl:"http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.common", + playerUrl:"http://box.baidu.com/widget/flash/bdspacesong.swf", + + init:function () { + var me = this; + domUtils.on($G("J_searchName"), "keyup", function (event) { + var e = window.event || event; + if (e.keyCode == 13) { + me.dosearch(); + } + }); + domUtils.on($G("J_searchBtn"), "click", function () { + me.dosearch(); + }); + }, + callback:function (data) { + var me = this; + me.data = data.song_list; + setTimeout(function () { + $G('J_resultBar').innerHTML = me._renderTemplate(data.song_list); + }, 300); + }, + dosearch:function () { + var me = this; + selectedItem = null; + var key = $G('J_searchName').value; + if (utils.trim(key) == "")return false; + key = encodeURIComponent(key); + me._sent(key); + }, + doselect:function (i) { + var me = this; + if (typeof i == 'object') { + selectedItem = i; + } else if (typeof i == 'number') { + selectedItem = me.data[i]; + } + }, + onpageclick:function (id) { + var me = this; + for (var i = 0; i < pages.length; i++) { + $G(pages[i]).className = 'pageoff'; + $G(panels[i]).className = 'paneloff'; + } + $G('page' + id).className = 'pageon'; + $G('panel' + id).className = 'panelon'; + }, + listenTest:function (elem) { + var me = this, + view = $G('J_preview'), + is_play_action = (elem.className == 'm-try'), + old_trying = me._getTryingElem(); + + if (old_trying) { + old_trying.className = 'm-try'; + view.innerHTML = ''; + } + if (is_play_action) { + elem.className = 'm-trying'; + view.innerHTML = me._buildMusicHtml(me._getUrl(true)); + } + }, + _sent:function (param) { + var me = this; + $G('J_resultBar').innerHTML = '
    '; + + utils.loadFile(document, { + src:me.dataUrl + '&query=' + param + '&page_size=' + me.total + '&callback=music.callback&.r=' + Math.random(), + tag:"script", + type:"text/javascript", + defer:"defer" + }); + }, + _removeHtml:function (str) { + var reg = /<\s*\/?\s*[^>]*\s*>/gi; + return str.replace(reg, ""); + }, + _getUrl:function (isTryListen) { + var me = this; + var param = 'from=tiebasongwidget&url=&name=' + encodeURIComponent(me._removeHtml(selectedItem.title)) + '&artist=' + + encodeURIComponent(me._removeHtml(selectedItem.author)) + '&extra=' + + encodeURIComponent(me._removeHtml(selectedItem.album_title)) + + '&autoPlay='+isTryListen+'' + '&loop=true'; + return me.playerUrl + "?" + param; + }, + _getTryingElem:function () { + var s = $G('J_listPanel').getElementsByTagName('span'); + + for (var i = 0; i < s.length; i++) { + if (s[i].className == 'm-trying') + return s[i]; + } + return null; + }, + _buildMusicHtml:function (playerUrl) { + var html = ' 12) + return s.substring(0, 5) + '...'; + if (!s) s = " "; + return s; + }, + _rebuildData:function (data) { + var me = this, + newData = [], + d = me.pageSize, + itembox; + for (var i = 0; i < data.length; i++) { + if ((i + d) % d == 0) { + itembox = []; + newData.push(itembox) + } + itembox.push(data[i]); + } + return newData; + }, + _renderTemplate:function (data) { + var me = this; + if (data.length == 0)return '
    ' + lang.emptyTxt + '
    '; + data = me._rebuildData(data); + var s = [], p = [], t = []; + s.push('
    '); + p.push('
    '); + for (var i = 0, tmpList; tmpList = data[i++];) { + panels.push('panel' + i); + pages.push('page' + i); + if (i == 1) { + s.push('
    '); + if (data.length != 1) { + t.push('
    ' + (i ) + '
    '); + } + } else { + s.push('
    '); + t.push('
    ' + (i ) + '
    '); + } + s.push('
    '); + s.push('
    ' + lang.chapter + '' + lang.singer + + '' + lang.special + '' + lang.listenTest + '
    '); + for (var j = 0, tmpObj; tmpObj = tmpList[j++];) { + s.push(''); + } + s.push('
    '); + s.push('
    '); + } + t.reverse(); + p.push(t.join('')); + s.push('
    '); + p.push('
    '); + return s.join('') + p.join(''); + }, + exec:function () { + var me = this; + if (selectedItem == null) return; + $G('J_preview').innerHTML = ""; + editor.execCommand('music', { + url:me._getUrl(false), + width:400, + height:95 + }); + } + }; +})(); + + + diff --git a/yshop-drink-vue3/public/UEditor/dialogs/preview/preview.html b/yshop-drink-vue3/public/UEditor/dialogs/preview/preview.html new file mode 100644 index 0000000..ba3af27 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/preview/preview.html @@ -0,0 +1,40 @@ + + + + + + + + + + +
    + +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/addimg.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/empty.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/emptyH.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/eraser.png b/yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/eraser.png new file mode 100644 index 0000000000000000000000000000000000000000..63e87cecb90ed3ac0e4acbc257c6dddae5311e09 GIT binary patch literal 43271 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
    h>dGcdSlWeEFl}k2MrUUS^bR;=$@vE@GsDa9 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 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/redoH.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/size.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/scrawl/images/undo.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/scrawl/scrawl.css b/yshop-drink-vue3/public/UEditor/dialogs/scrawl/scrawl.css new file mode 100644 index 0000000..4ea30c6 --- /dev/null +++ b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/scrawl/scrawl.html b/yshop-drink-vue3/public/UEditor/dialogs/scrawl/scrawl.html new file mode 100644 index 0000000..13f6ab1 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/scrawl/scrawl.html @@ -0,0 +1,95 @@ + + + + + + + + + + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + + 1 + 3 + 5 + 7 +
    +
    + + 1 + 3 + 5 + 7 +
    +
    +
    + + +
    + +
    + +
    +
    +
    + + + + +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/scrawl/scrawl.js b/yshop-drink-vue3/public/UEditor/dialogs/scrawl/scrawl.js new file mode 100644 index 0000000..45667ac --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/scrawl/scrawl.js @@ -0,0 +1,671 @@ +/** + * 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:1;"+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:1"; + } + } + } + }); + }, + _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 || ''; + imgObj.title = responseObj.title || ''; + 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/yshop-drink-vue3/public/UEditor/dialogs/searchreplace/searchreplace.html b/yshop-drink-vue3/public/UEditor/dialogs/searchreplace/searchreplace.html new file mode 100644 index 0000000..b3eaaa5 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/searchreplace/searchreplace.html @@ -0,0 +1,102 @@ + + + + + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    :
    + +
    + + +
    +   +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    + +
    + + + + +
    +   +
    + +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/searchreplace/searchreplace.js b/yshop-drink-vue3/public/UEditor/dialogs/searchreplace/searchreplace.js new file mode 100644 index 0000000..b55bb7a --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/searchreplace/searchreplace.js @@ -0,0 +1,164 @@ +/** + * 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 () { + 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"); \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/snapscreen/snapscreen.html b/yshop-drink-vue3/public/UEditor/dialogs/snapscreen/snapscreen.html new file mode 100644 index 0000000..f359326 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/snapscreen/snapscreen.html @@ -0,0 +1,58 @@ + + + + + + + + + +
    +

    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/spechars/spechars.html b/yshop-drink-vue3/public/UEditor/dialogs/spechars/spechars.html new file mode 100644 index 0000000..d92f515 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/spechars/spechars.html @@ -0,0 +1,21 @@ + + + + + + + + + +
    +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/spechars/spechars.js b/yshop-drink-vue3/public/UEditor/dialogs/spechars/spechars.js new file mode 100644 index 0000000..bd3b36d --- /dev/null +++ b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/table/dragicon.png b/yshop-drink-vue3/public/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 + + + + + + + +
    +
    +
    +

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

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

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

    +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/table/edittable.js b/yshop-drink-vue3/public/UEditor/dialogs/table/edittable.js new file mode 100644 index 0000000..2b4a35e --- /dev/null +++ b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/table/edittd.html b/yshop-drink-vue3/public/UEditor/dialogs/table/edittd.html new file mode 100644 index 0000000..a42dc01 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/table/edittd.html @@ -0,0 +1,61 @@ + + + + + + + + +
    + + +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/table/edittip.html b/yshop-drink-vue3/public/UEditor/dialogs/table/edittip.html new file mode 100644 index 0000000..9d8f78d --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/table/edittip.html @@ -0,0 +1,33 @@ + + + + 表格删除提示 + + + + +
    +
    + +
    +
    + +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/template/config.js b/yshop-drink-vue3/public/UEditor/dialogs/template/config.js new file mode 100644 index 0000000..42e474b --- /dev/null +++ b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/template/images/bg.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/template/images/pre2.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/template/images/pre3.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/template/images/pre4.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/template/template.css b/yshop-drink-vue3/public/UEditor/dialogs/template/template.css new file mode 100644 index 0000000..2658bd2 --- /dev/null +++ b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/template/template.html b/yshop-drink-vue3/public/UEditor/dialogs/template/template.html new file mode 100644 index 0000000..9d71ece --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/template/template.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/yshop-drink-vue3/public/UEditor/dialogs/template/template.js b/yshop-drink-vue3/public/UEditor/dialogs/template/template.js new file mode 100644 index 0000000..0f1cdad --- /dev/null +++ b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/video/images/bg.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/video/images/file-icons.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/video/images/file-icons.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/video/images/icons.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/video/images/icons.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/video/images/left_focus.jpg b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/video/images/none_focus.jpg b/yshop-drink-vue3/public/UEditor/dialogs/video/images/none_focus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c768dcb47aaa289135afd2bd0e8eb0b6ecb7536 GIT binary patch literal 11546 zcmeG?2Ut@{w>Jbr5orRVYY7nqq@;%=3M^GYPz(VT+lJ%x1%+Bq5|cBAW-Ee?c0beuN-1ozbVGKoS7sy@Mq( zi8NRehIjU%;g<@<0!g$KqL9dBHkrgG)9_>}o6ca$Lz&HRaRWN7*1|taz0!3K`r>dr|F#&|bmqZMtgdHX7Kp15VR!Lb&MHQ!}g4Lt~ zqAph1SdXmYxP&)}5S~cE>8Bn%>om*6fO92)N{iTd*ICsx&F59yYrd3jc<9_uvt81; z0@tgDWsJ!+zK`KI=QsUP8`<9HW|on+`9fwz-IKTZMc3+|_WK1!ZP|UK_tOD?_MMvXr1$*N9iPnYucgFXJt>D85KU$u zC(azim46KE?e*Jhba1fFLi>2$#lmAn6_`us6HX45l^-kiG0jarw7}kk@<-ODQ|&tQ z`vX?5wN#y2es=2XoW|8%--YsaCgF;1uU*CcQ0`tByKt$)Ft_8UVZGi@Z{Ma4!dId; zthNKqy*fEy+~Yg{`J?yq-|rxPSSa-4^?GJF9-LM5GNCt{oc>)~Lsz&Qiam8O zb$<7Z%;;mS3+u|>?%mS*?3dR3w;R$tj>PXF-tO2_U8QBv6n3_)+eT;=104LPq+@!= zkbZipYDwdh?hp2FN_SqYef}FT`d)(k?!yW>l-{Iy_#}p-*-(N!*^O|iCaB_itqW! zp_hZhU2^E|8hev$hap=zq`uyvQw}}4+?F&Txi{oo+w_s&aJs%l*Z#LSJBN2OeLC_k z*_jeM`iGoWtFYPp!jwa;WBx{Jy+fBl+_hOSK_EOec3QWn`s;Ak}GL6O}K+zwh3V~%Df)L;1ATcBX8HTJOKByyaseer4afl2e`$ZbhFiIFP4ylSG zMI!J(Vg(lwQ+XvN)SoNm>i2uWnv7bu)0LKq|z!{W$LAfxH( zgJ@rj;y`^OFH$C%4~yXlo(vWM1jJnz29GdnD3}opLU9ib!h^^EcK@-F5hAYZGA?Lp zWKa<2e~Iyu2Ekuoa6FNW%M1Dfr^SbX92_HamoDIXc?L)%B1ECuDEbR#^i{559GyeJ7dqYmUjP|_J>Iun;kRAkvw?5B!f(66 z|KqztbVV~pRy4>LWU%HzkT&E93BX1o0Bj`ikT(hA0Z5r2_<4YqLByoRWdsQuvO8C(6BMJU-i}~ zqkuog7Y4QtXyXDt5f;IruvjJqo+Tp=K$V7#p0iH41d&UyZXA*#;0fuv8Km!G~R=fSI#K8gx?5lrh#Y zwsQo`lYz|#*Z_?Nz~`StRc6fGiWRv7E>(3e}B*%DOQ~PGl;JMWWdyNok{|k49Wn{q*_r}3@a*$Y(*tAL1tOe zDIilR00;Egl0XK$wn&{0=pa*RRLWc`!_|%A?8tCrGMp&3Oj}1+29-jlQmIVfRGJg$ zG7_$AZ($59TIM1ILm@?dL1m7oEFVu{j8M=}@BvFEhy@0nPNk3Fzw9QJ!DP^^Xe1Vc zghJ2(TQWrfDJVt(sQ^zWD|l#Dh?Fe~L1#fn00uySp)u(s6oQU|GUz6Nz%jN|;5GyT zegIhrWCBhAk+!J7i3mhmp#tY35Xb_E$^zHY$TUDjAg~rd1;!RFGZDxFb^?gE=dgGD2=fKCJ=vMeSd%VHutEGEJO;unQv6e8MKs5TZ0X_1BMWFeM-dC#x{ z18N0=z=~mIYsIu;SpnCO$yQ{F6`5*9rdfdj225mID-aD7zzbpogb0WpItU~X2OwlX zB+R8V7|t}%8L|t_1x!B|7TuXbbE7-ix-s3T3=$oA9iS^Ldx202R;hI(FBl&R;RZ_Y2n7Z2ro6`(L(s#F6}9o;U~wyA2`%=>-vaD=UV9 z_>Uum(#E~PN7=!)04a{`NbE=V4d0&MJn+o}-#qZm1K&LG%>)0BJn;EU0~Uj=MKn0E z0Cxk7NA3oE56(xxMFkzK5>|0of*hEDgkBd=e2o9Mpwj1r9ZTaRk&oj_V}yUVAip|x zT>yMvS6mmUfNFrr%HUh~=cI7c}#k0O3@XRg}~~7s0nA6=fyl4#5Z& z{ZJ1s7)&-))73XHGoNB)0S@3*fFH2RIB?wnNf^Zy16@4>$as>zp&DVbkz=?ClT2}% zMXl$h(p*gGv$OUbo8qnqT2NBPs$g*wk^3qNNnJf4rDA|nB|8!*`b&6*;fb?qGi|{= zgu71E!zOgse7DIQn#<-Q#kYG5xUztJ0(c9TK2ZJb*2-7i>*HA$YgyOt{PI)do!~4# zzm$95x8-Hw_E<7st&d-^p=X~(v6Hj)%E^1SEHp?jj(?S7aYOY@VrO4e!MXR^+gT3o-(e}-UVB^A7nX~a3(i;b8=?ft}l6ye9U0Q&2-sE+D z=Z15iwyNL#b7F^mZtc-sqE@s;aC<`q3Uo_}G%s6Dwluo3J+pts?0v7dS(`kG#Y|d) zckd=|f25($FsR`;EXE(ykGInKW0`%qJ@pIfypUguSTkG@OF!F#G* zvu0eqR=sT4`NeEQXXSYl2&V+aNkI#D%fcMjQrG)_n0Pp$#@}_wVQ|}qzI93T{cmO} ze5{0XfS&LB`EqEMYH*_Qk@j=dd%{;ZX=o=}?D~m&ozPERMjMy!nbI{;i$*Ry2!{!rqbGUh>#XskZ z{P*@9Yd_wUyS#6&Y7}o{vrv6|I5)aQ%lc|X@+KTN;{e0*m~TvRGG$s^f^K<3v`f>Q z#x0zr(#NVq@eawH&2tupZoXJ*`m8BD@{)yb3mG56S7$HvN#1w`=q8oBPMzp&fnMCezADb;okgm(De)*qC`}Zk0#kOAC&- zqiX3-o{{^5+w@9HH^K(!9=>{J3T6_Z}QmafS!S+T;7TQ@};B0bb$tS#eT5 zzBxN-@+_%OXd&)Np^&Se@9y;D5)Hf#6(2BLrrcBJ|*+u_?@awOI`gt zx&C2b*3Da?@4XrQq?*H*cdt_0eRFk=$HvCBYAZU6u5$G9bMU%50^7@VKZPG_)N9*N zQX9LSyn=SVrcb!$aeiD+<)9quw{m|xb9z`eJtQQ2`doAI<=%}Yz|-2jO%aq$auDvm2&m$pzDR9tg?8q`Hs|3*VR{wdY%kJJ@(Iw%g;scJXyKm zUC?6QnSn0L@DPE(H8;auxaanzTJg2I{)JA{g~!$1XDuq5TiM=|;gSxfUa-j5JZ=$NH~Ust3snvsOYh_7w{0ajmutHl z>PT_xr{T@$_Oo|!W7Xz@1L{86@S4cz>BAD6;)kDl zT1`qH|88@5(DsVQN(0sVF89*XeSTRMWpX*VDJSDWGI#S$*wP~@n8Q8eIQ>y_ip(MI z@#`4ozKcWlCt@A`5R`mqI@$Mb-opg#y;ibct+mWJr1MMjP1-&2(}o0=bnc#GnV%cfntIy~c@t=H|D6+<&FZ#mc(^7QyZy69EQqOS0vq#;|~ znCL4r%9pTX*E?`NY_lr47GGD~+~pCp^GW%+O7Ec=``@ogcI}^h-{bYN5B_!!_xt5! z3^_3T_=?351A?i0__4!z{mpSJR{DoTiAxLS_|JH;v~LnsIm^70qiuds;JK~wNYueh z--rB*q<|$A1zN3EyDL9xH?Mi#B$!|HG34wk-5c8zd+0t-wTn_&e|%@ozZBL|QdL+k zhh~&zergvtw)hMv=xg1u>9hroW>71c=~vXdd}7;kuV#<^su|cVn!9~rk9+k``d7A{8;htxA1$0qWY$!169F{WNj8IHRxbpFI;Nv;hY?insm68{x& z;zq#^cvIn-^d0M_>u1h+GsDd^bKRo)1J@($51u||&4R&_UL*YAld=WXaVocR0wBua9w2KLe)W#UTf_4IcsyZH-NHuYRTeXMqvXx!aKu_<{3yW88i1wF5q{za_>GknTS8Uk( ZqP+Rj#m?aw2h%HWZ?OF-vq^scKLCxw6L8U}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/yshop-drink-vue3/public/UEditor/dialogs/video/images/right_focus.jpg b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/video/images/success.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/dialogs/video/images/success.png b/yshop-drink-vue3/public/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# + + + + + + + + +

    + + + + + + + + + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/video/video.js b/yshop-drink-vue3/public/UEditor/dialogs/video/video.js new file mode 100644 index 0000000..7b9378b --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/video/video.js @@ -0,0 +1,797 @@ +/** + * 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; + + window.onload = function(){ + $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'); + } + } + }); + } + } + + 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/player.php/sid/$1/v.swf') + .replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, "www.youtube.com/v/$2") + .replace(/youtu.be\/(\w+)$/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") + .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.unhtmlForUrl(conUrl); + + $G("preview").innerHTML = '
    '+lang.urlError+'
    '+ + '' + + ''; + } + + + /* 插入上传视频 */ + function insertUpload(){ + var videoObjs=[], + uploadDir = editor.getOpt('videoUrlPrefix'), + width = parseInt($G('upload_width').value, 10) || 420, + height = parseInt($G('upload_height').value, 10) || 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参数 + header['X_Requested_With'] = 'XMLHttpRequest'; + // HaoChuan9421 + if(editor.options.headers && Object.prototype.toString.apply(editor.options.headers) === "[object Object]"){ + for(var key in editor.options.headers){ + header[key] = editor.options.headers[key] + } + } + }); + + 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/yshop-drink-vue3/public/UEditor/dialogs/webapp/webapp.html b/yshop-drink-vue3/public/UEditor/dialogs/webapp/webapp.html new file mode 100644 index 0000000..73f8dc2 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/webapp/webapp.html @@ -0,0 +1,53 @@ + + + + + + + + + +
    +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/wordimage/tangram.js b/yshop-drink-vue3/public/UEditor/dialogs/wordimage/tangram.js new file mode 100644 index 0000000..f449962 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/wordimage/tangram.js @@ -0,0 +1,1495 @@ +// Copyright (c) 2009, Baidu Inc. All rights reserved. +// +// Licensed under the BSD License +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http:// tangram.baidu.com/license.html +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + /** + * @namespace T Tangram七巧板 + * @name T + * @version 1.6.0 +*/ + +/** + * 声明baidu包 + * @author: allstar, erik, meizz, berg + */ +var T, + baidu = T = baidu || {version: "1.5.0"}; +baidu.guid = "$BAIDU$"; +baidu.$$ = window[baidu.guid] = window[baidu.guid] || {global:{}}; + +/** + * 使用flash资源封装的一些功能 + * @namespace baidu.flash + */ +baidu.flash = baidu.flash || {}; + +/** + * 操作dom的方法 + * @namespace baidu.dom + */ +baidu.dom = baidu.dom || {}; + + +/** + * 从文档中获取指定的DOM元素 + * @name baidu.dom.g + * @function + * @grammar baidu.dom.g(id) + * @param {string|HTMLElement} id 元素的id或DOM元素. + * @shortcut g,T.G + * @meta standard + * @see baidu.dom.q + * + * @return {HTMLElement|null} 获取的元素,查找不到时返回null,如果参数不合法,直接返回参数. + */ +baidu.dom.g = function(id) { + if (!id) return null; + if ('string' == typeof id || id instanceof String) { + return document.getElementById(id); + } else if (id.nodeName && (id.nodeType == 1 || id.nodeType == 9)) { + return id; + } + return null; +}; +baidu.g = baidu.G = baidu.dom.g; + + +/** + * 操作数组的方法 + * @namespace baidu.array + */ + +baidu.array = baidu.array || {}; + + +/** + * 遍历数组中所有元素 + * @name baidu.array.each + * @function + * @grammar baidu.array.each(source, iterator[, thisObject]) + * @param {Array} source 需要遍历的数组 + * @param {Function} iterator 对每个数组元素进行调用的函数,该函数有两个参数,第一个为数组元素,第二个为数组索引值,function (item, index)。 + * @param {Object} [thisObject] 函数调用时的this指针,如果没有此参数,默认是当前遍历的数组 + * @remark + * each方法不支持对Object的遍历,对Object的遍历使用baidu.object.each 。 + * @shortcut each + * @meta standard + * + * @returns {Array} 遍历的数组 + */ + +baidu.each = baidu.array.forEach = baidu.array.each = function (source, iterator, thisObject) { + var returnValue, item, i, len = source.length; + + if ('function' == typeof iterator) { + for (i = 0; i < len; i++) { + item = source[i]; + returnValue = iterator.call(thisObject || source, item, i); + + if (returnValue === false) { + break; + } + } + } + return source; +}; + +/** + * 对语言层面的封装,包括类型判断、模块扩展、继承基类以及对象自定义事件的支持。 + * @namespace baidu.lang + */ +baidu.lang = baidu.lang || {}; + + +/** + * 判断目标参数是否为function或Function实例 + * @name baidu.lang.isFunction + * @function + * @grammar baidu.lang.isFunction(source) + * @param {Any} source 目标参数 + * @version 1.2 + * @see baidu.lang.isString,baidu.lang.isObject,baidu.lang.isNumber,baidu.lang.isArray,baidu.lang.isElement,baidu.lang.isBoolean,baidu.lang.isDate + * @meta standard + * @returns {boolean} 类型判断结果 + */ +baidu.lang.isFunction = function (source) { + return '[object Function]' == Object.prototype.toString.call(source); +}; + +/** + * 判断目标参数是否string类型或String对象 + * @name baidu.lang.isString + * @function + * @grammar baidu.lang.isString(source) + * @param {Any} source 目标参数 + * @shortcut isString + * @meta standard + * @see baidu.lang.isObject,baidu.lang.isNumber,baidu.lang.isArray,baidu.lang.isElement,baidu.lang.isBoolean,baidu.lang.isDate + * + * @returns {boolean} 类型判断结果 + */ +baidu.lang.isString = function (source) { + return '[object String]' == Object.prototype.toString.call(source); +}; +baidu.isString = baidu.lang.isString; + + +/** + * 判断浏览器类型和特性的属性 + * @namespace baidu.browser + */ +baidu.browser = baidu.browser || {}; + + +/** + * 判断是否为opera浏览器 + * @property opera opera版本号 + * @grammar baidu.browser.opera + * @meta standard + * @see baidu.browser.ie,baidu.browser.firefox,baidu.browser.safari,baidu.browser.chrome + * @returns {Number} opera版本号 + */ + +/** + * opera 从10开始不是用opera后面的字符串进行版本的判断 + * 在Browser identification最后添加Version + 数字进行版本标识 + * opera后面的数字保持在9.80不变 + */ +baidu.browser.opera = /opera(\/| )(\d+(\.\d+)?)(.+?(version\/(\d+(\.\d+)?)))?/i.test(navigator.userAgent) ? + ( RegExp["\x246"] || RegExp["\x242"] ) : undefined; + + +/** + * 在目标元素的指定位置插入HTML代码 + * @name baidu.dom.insertHTML + * @function + * @grammar baidu.dom.insertHTML(element, position, html) + * @param {HTMLElement|string} element 目标元素或目标元素的id + * @param {string} position 插入html的位置信息,取值为beforeBegin,afterBegin,beforeEnd,afterEnd + * @param {string} html 要插入的html + * @remark + * + * 对于position参数,大小写不敏感
    + * 参数的意思:beforeBegin<span>afterBegin this is span! beforeEnd</span> afterEnd
    + * 此外,如果使用本函数插入带有script标签的HTML字符串,script标签对应的脚本将不会被执行。 + * + * @shortcut insertHTML + * @meta standard + * + * @returns {HTMLElement} 目标元素 + */ +baidu.dom.insertHTML = function (element, position, html) { + element = baidu.dom.g(element); + var range,begin; + if (element.insertAdjacentHTML && !baidu.browser.opera) { + element.insertAdjacentHTML(position, html); + } else { + range = element.ownerDocument.createRange(); + position = position.toUpperCase(); + if (position == 'AFTERBEGIN' || position == 'BEFOREEND') { + range.selectNodeContents(element); + range.collapse(position == 'AFTERBEGIN'); + } else { + begin = position == 'BEFOREBEGIN'; + range[begin ? 'setStartBefore' : 'setEndAfter'](element); + range.collapse(begin); + } + range.insertNode(range.createContextualFragment(html)); + } + return element; +}; + +baidu.insertHTML = baidu.dom.insertHTML; + +/** + * 操作flash对象的方法,包括创建flash对象、获取flash对象以及判断flash插件的版本号 + * @namespace baidu.swf + */ +baidu.swf = baidu.swf || {}; + + +/** + * 浏览器支持的flash插件版本 + * @property version 浏览器支持的flash插件版本 + * @grammar baidu.swf.version + * @return {String} 版本号 + * @meta standard + */ +baidu.swf.version = (function () { + var n = navigator; + if (n.plugins && n.mimeTypes.length) { + var plugin = n.plugins["Shockwave Flash"]; + if (plugin && plugin.description) { + return plugin.description + .replace(/([a-zA-Z]|\s)+/, "") + .replace(/(\s)+r/, ".") + ".0"; + } + } else if (window.ActiveXObject && !window.opera) { + for (var i = 12; i >= 2; i--) { + try { + var c = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.' + i); + if (c) { + var version = c.GetVariable("$version"); + return version.replace(/WIN/g,'').replace(/,/g,'.'); + } + } catch(e) {} + } + } +})(); + +/** + * 操作字符串的方法 + * @namespace baidu.string + */ +baidu.string = baidu.string || {}; + + +/** + * 对目标字符串进行html编码 + * @name baidu.string.encodeHTML + * @function + * @grammar baidu.string.encodeHTML(source) + * @param {string} source 目标字符串 + * @remark + * 编码字符有5个:&<>"' + * @shortcut encodeHTML + * @meta standard + * @see baidu.string.decodeHTML + * + * @returns {string} html编码后的字符串 + */ +baidu.string.encodeHTML = function (source) { + return String(source) + .replace(/&/g,'&') + .replace(//g,'>') + .replace(/"/g, """) + .replace(/'/g, "'"); +}; + +baidu.encodeHTML = baidu.string.encodeHTML; + +/** + * 创建flash对象的html字符串 + * @name baidu.swf.createHTML + * @function + * @grammar baidu.swf.createHTML(options) + * + * @param {Object} options 创建flash的选项参数 + * @param {string} options.id 要创建的flash的标识 + * @param {string} options.url flash文件的url + * @param {String} options.errorMessage 未安装flash player或flash player版本号过低时的提示 + * @param {string} options.ver 最低需要的flash player版本号 + * @param {string} options.width flash的宽度 + * @param {string} options.height flash的高度 + * @param {string} options.align flash的对齐方式,允许值:middle/left/right/top/bottom + * @param {string} options.base 设置用于解析swf文件中的所有相对路径语句的基本目录或URL + * @param {string} options.bgcolor swf文件的背景色 + * @param {string} options.salign 设置缩放的swf文件在由width和height设置定义的区域内的位置。允许值:l/r/t/b/tl/tr/bl/br + * @param {boolean} options.menu 是否显示右键菜单,允许值:true/false + * @param {boolean} options.loop 播放到最后一帧时是否重新播放,允许值: true/false + * @param {boolean} options.play flash是否在浏览器加载时就开始播放。允许值:true/false + * @param {string} options.quality 设置flash播放的画质,允许值:low/medium/high/autolow/autohigh/best + * @param {string} options.scale 设置flash内容如何缩放来适应设置的宽高。允许值:showall/noborder/exactfit + * @param {string} options.wmode 设置flash的显示模式。允许值:window/opaque/transparent + * @param {string} options.allowscriptaccess 设置flash与页面的通信权限。允许值:always/never/sameDomain + * @param {string} options.allownetworking 设置swf文件中允许使用的网络API。允许值:all/internal/none + * @param {boolean} options.allowfullscreen 是否允许flash全屏。允许值:true/false + * @param {boolean} options.seamlesstabbing 允许设置执行无缝跳格,从而使用户能跳出flash应用程序。该参数只能在安装Flash7及更高版本的Windows中使用。允许值:true/false + * @param {boolean} options.devicefont 设置静态文本对象是否以设备字体呈现。允许值:true/false + * @param {boolean} options.swliveconnect 第一次加载flash时浏览器是否应启动Java。允许值:true/false + * @param {Object} options.vars 要传递给flash的参数,支持JSON或string类型。 + * + * @see baidu.swf.create + * @meta standard + * @returns {string} flash对象的html字符串 + */ +baidu.swf.createHTML = function (options) { + options = options || {}; + var version = baidu.swf.version, + needVersion = options['ver'] || '6.0.0', + vUnit1, vUnit2, i, k, len, item, tmpOpt = {}, + encodeHTML = baidu.string.encodeHTML; + for (k in options) { + tmpOpt[k] = options[k]; + } + options = tmpOpt; + if (version) { + version = version.split('.'); + needVersion = needVersion.split('.'); + for (i = 0; i < 3; i++) { + vUnit1 = parseInt(version[i], 10); + vUnit2 = parseInt(needVersion[i], 10); + if (vUnit2 < vUnit1) { + break; + } else if (vUnit2 > vUnit1) { + return ''; + } + } + } else { + return ''; + } + + var vars = options['vars'], + objProperties = ['classid', 'codebase', 'id', 'width', 'height', 'align']; + options['align'] = options['align'] || 'middle'; + options['classid'] = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'; + options['codebase'] = 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'; + options['movie'] = options['url'] || ''; + delete options['vars']; + delete options['url']; + if ('string' == typeof vars) { + options['flashvars'] = vars; + } else { + var fvars = []; + for (k in vars) { + item = vars[k]; + fvars.push(k + "=" + encodeURIComponent(item)); + } + options['flashvars'] = fvars.join('&'); + } + var str = [''); + var params = { + 'wmode' : 1, + 'scale' : 1, + 'quality' : 1, + 'play' : 1, + 'loop' : 1, + 'menu' : 1, + 'salign' : 1, + 'bgcolor' : 1, + 'base' : 1, + 'allowscriptaccess' : 1, + 'allownetworking' : 1, + 'allowfullscreen' : 1, + 'seamlesstabbing' : 1, + 'devicefont' : 1, + 'swliveconnect' : 1, + 'flashvars' : 1, + 'movie' : 1 + }; + + for (k in options) { + item = options[k]; + k = k.toLowerCase(); + if (params[k] && (item || item === false || item === 0)) { + str.push(''); + } + } + options['src'] = options['movie']; + options['name'] = options['id']; + delete options['id']; + delete options['movie']; + delete options['classid']; + delete options['codebase']; + options['type'] = 'application/x-shockwave-flash'; + options['pluginspage'] = 'http://www.macromedia.com/go/getflashplayer'; + str.push(''); + + return str.join(''); +}; + + +/** + * 在页面中创建一个flash对象 + * @name baidu.swf.create + * @function + * @grammar baidu.swf.create(options[, container]) + * + * @param {Object} options 创建flash的选项参数 + * @param {string} options.id 要创建的flash的标识 + * @param {string} options.url flash文件的url + * @param {String} options.errorMessage 未安装flash player或flash player版本号过低时的提示 + * @param {string} options.ver 最低需要的flash player版本号 + * @param {string} options.width flash的宽度 + * @param {string} options.height flash的高度 + * @param {string} options.align flash的对齐方式,允许值:middle/left/right/top/bottom + * @param {string} options.base 设置用于解析swf文件中的所有相对路径语句的基本目录或URL + * @param {string} options.bgcolor swf文件的背景色 + * @param {string} options.salign 设置缩放的swf文件在由width和height设置定义的区域内的位置。允许值:l/r/t/b/tl/tr/bl/br + * @param {boolean} options.menu 是否显示右键菜单,允许值:true/false + * @param {boolean} options.loop 播放到最后一帧时是否重新播放,允许值: true/false + * @param {boolean} options.play flash是否在浏览器加载时就开始播放。允许值:true/false + * @param {string} options.quality 设置flash播放的画质,允许值:low/medium/high/autolow/autohigh/best + * @param {string} options.scale 设置flash内容如何缩放来适应设置的宽高。允许值:showall/noborder/exactfit + * @param {string} options.wmode 设置flash的显示模式。允许值:window/opaque/transparent + * @param {string} options.allowscriptaccess 设置flash与页面的通信权限。允许值:always/never/sameDomain + * @param {string} options.allownetworking 设置swf文件中允许使用的网络API。允许值:all/internal/none + * @param {boolean} options.allowfullscreen 是否允许flash全屏。允许值:true/false + * @param {boolean} options.seamlesstabbing 允许设置执行无缝跳格,从而使用户能跳出flash应用程序。该参数只能在安装Flash7及更高版本的Windows中使用。允许值:true/false + * @param {boolean} options.devicefont 设置静态文本对象是否以设备字体呈现。允许值:true/false + * @param {boolean} options.swliveconnect 第一次加载flash时浏览器是否应启动Java。允许值:true/false + * @param {Object} options.vars 要传递给flash的参数,支持JSON或string类型。 + * + * @param {HTMLElement|string} [container] flash对象的父容器元素,不传递该参数时在当前代码位置创建flash对象。 + * @meta standard + * @see baidu.swf.createHTML,baidu.swf.getMovie + */ +baidu.swf.create = function (options, target) { + options = options || {}; + var html = baidu.swf.createHTML(options) + || options['errorMessage'] + || ''; + + if (target && 'string' == typeof target) { + target = document.getElementById(target); + } + baidu.dom.insertHTML( target || document.body ,'beforeEnd',html ); +}; +/** + * 判断是否为ie浏览器 + * @name baidu.browser.ie + * @field + * @grammar baidu.browser.ie + * @returns {Number} IE版本号 + */ +baidu.browser.ie = baidu.ie = /msie (\d+\.\d+)/i.test(navigator.userAgent) ? (document.documentMode || + RegExp['\x241']) : undefined; + +/** + * 移除数组中的项 + * @name baidu.array.remove + * @function + * @grammar baidu.array.remove(source, match) + * @param {Array} source 需要移除项的数组 + * @param {Any} match 要移除的项 + * @meta standard + * @see baidu.array.removeAt + * + * @returns {Array} 移除后的数组 + */ +baidu.array.remove = function (source, match) { + var len = source.length; + + while (len--) { + if (len in source && source[len] === match) { + source.splice(len, 1); + } + } + return source; +}; + +/** + * 判断目标参数是否Array对象 + * @name baidu.lang.isArray + * @function + * @grammar baidu.lang.isArray(source) + * @param {Any} source 目标参数 + * @meta standard + * @see baidu.lang.isString,baidu.lang.isObject,baidu.lang.isNumber,baidu.lang.isElement,baidu.lang.isBoolean,baidu.lang.isDate + * + * @returns {boolean} 类型判断结果 + */ +baidu.lang.isArray = function (source) { + return '[object Array]' == Object.prototype.toString.call(source); +}; + + + +/** + * 将一个变量转换成array + * @name baidu.lang.toArray + * @function + * @grammar baidu.lang.toArray(source) + * @param {mix} source 需要转换成array的变量 + * @version 1.3 + * @meta standard + * @returns {array} 转换后的array + */ +baidu.lang.toArray = function (source) { + if (source === null || source === undefined) + return []; + if (baidu.lang.isArray(source)) + return source; + if (typeof source.length !== 'number' || typeof source === 'string' || baidu.lang.isFunction(source)) { + return [source]; + } + if (source.item) { + var l = source.length, array = new Array(l); + while (l--) + array[l] = source[l]; + return array; + } + + return [].slice.call(source); +}; + +/** + * 获得flash对象的实例 + * @name baidu.swf.getMovie + * @function + * @grammar baidu.swf.getMovie(name) + * @param {string} name flash对象的名称 + * @see baidu.swf.create + * @meta standard + * @returns {HTMLElement} flash对象的实例 + */ +baidu.swf.getMovie = function (name) { + var movie = document[name], ret; + return baidu.browser.ie == 9 ? + movie && movie.length ? + (ret = baidu.array.remove(baidu.lang.toArray(movie),function(item){ + return item.tagName.toLowerCase() != "embed"; + })).length == 1 ? ret[0] : ret + : movie + : movie || window[name]; +}; + + +baidu.flash._Base = (function(){ + + var prefix = 'bd__flash__'; + + /** + * 创建一个随机的字符串 + * @private + * @return {String} + */ + function _createString(){ + return prefix + Math.floor(Math.random() * 2147483648).toString(36); + }; + + /** + * 检查flash状态 + * @private + * @param {Object} target flash对象 + * @return {Boolean} + */ + function _checkReady(target){ + if(typeof target !== 'undefined' && typeof target.flashInit !== 'undefined' && target.flashInit()){ + return true; + }else{ + return false; + } + }; + + /** + * 调用之前进行压栈的函数 + * @private + * @param {Array} callQueue 调用队列 + * @param {Object} target flash对象 + * @return {Null} + */ + function _callFn(callQueue, target){ + var result = null; + + callQueue = callQueue.reverse(); + baidu.each(callQueue, function(item){ + result = target.call(item.fnName, item.params); + item.callBack(result); + }); + }; + + /** + * 为传入的匿名函数创建函数名 + * @private + * @param {String|Function} fun 传入的匿名函数或者函数名 + * @return {String} + */ + function _createFunName(fun){ + var name = ''; + + if(baidu.lang.isFunction(fun)){ + name = _createString(); + window[name] = function(){ + fun.apply(window, arguments); + }; + + return name; + }else if(baidu.lang.isString){ + return fun; + } + }; + + /** + * 绘制flash + * @private + * @param {Object} options 创建参数 + * @return {Object} + */ + function _render(options){ + if(!options.id){ + options.id = _createString(); + } + + var container = options.container || ''; + delete(options.container); + + baidu.swf.create(options, container); + + return baidu.swf.getMovie(options.id); + }; + + return function(options, callBack){ + var me = this, + autoRender = (typeof options.autoRender !== 'undefined' ? options.autoRender : true), + createOptions = options.createOptions || {}, + target = null, + isReady = false, + callQueue = [], + timeHandle = null, + callBack = callBack || []; + + /** + * 将flash文件绘制到页面上 + * @public + * @return {Null} + */ + me.render = function(){ + target = _render(createOptions); + + if(callBack.length > 0){ + baidu.each(callBack, function(funName, index){ + callBack[index] = _createFunName(options[funName] || new Function()); + }); + } + me.call('setJSFuncName', [callBack]); + }; + + /** + * 返回flash状态 + * @return {Boolean} + */ + me.isReady = function(){ + return isReady; + }; + + /** + * 调用flash接口的统一入口 + * @param {String} fnName 调用的函数名 + * @param {Array} params 传入的参数组成的数组,若不许要参数,需传入空数组 + * @param {Function} [callBack] 异步调用后将返回值作为参数的调用回调函数,如无返回值,可以不传入此参数 + * @return {Null} + */ + me.call = function(fnName, params, callBack){ + if(!fnName) return null; + callBack = callBack || new Function(); + + var result = null; + + if(isReady){ + result = target.call(fnName, params); + callBack(result); + }else{ + callQueue.push({ + fnName: fnName, + params: params, + callBack: callBack + }); + + (!timeHandle) && (timeHandle = setInterval(_check, 200)); + } + }; + + /** + * 为传入的匿名函数创建函数名 + * @public + * @param {String|Function} fun 传入的匿名函数或者函数名 + * @return {String} + */ + me.createFunName = function(fun){ + return _createFunName(fun); + }; + + /** + * 检查flash是否ready, 并进行调用 + * @private + * @return {Null} + */ + function _check(){ + if(_checkReady(target)){ + clearInterval(timeHandle); + timeHandle = null; + _call(); + + isReady = true; + } + }; + + /** + * 调用之前进行压栈的函数 + * @private + * @return {Null} + */ + function _call(){ + _callFn(callQueue, target); + callQueue = []; + } + + autoRender && me.render(); + }; +})(); + + + +/** + * 创建flash based imageUploader + * @class + * @grammar baidu.flash.imageUploader(options) + * @param {Object} createOptions 创建flash时需要的参数,请参照baidu.swf.create文档 + * @config {Object} vars 创建imageUploader时所需要的参数 + * @config {Number} vars.gridWidth 每一个预览图片所占的宽度,应该为flash寛的整除 + * @config {Number} vars.gridHeight 每一个预览图片所占的高度,应该为flash高的整除 + * @config {Number} vars.picWidth 单张预览图片的宽度 + * @config {Number} vars.picHeight 单张预览图片的高度 + * @config {String} vars.uploadDataFieldName POST请求中图片数据的key,默认值'picdata' + * @config {String} vars.picDescFieldName POST请求中图片描述的key,默认值'picDesc' + * @config {Number} vars.maxSize 文件的最大体积,单位'MB' + * @config {Number} vars.compressSize 上传前如果图片体积超过该值,会先压缩 + * @config {Number} vars.maxNum:32 最大上传多少个文件 + * @config {Number} vars.compressLength 能接受的最大边长,超过该值会等比压缩 + * @config {String} vars.url 上传的url地址 + * @config {Number} vars.mode mode == 0时,是使用滚动条,mode == 1时,拉伸flash, 默认值为0 + * @see baidu.swf.createHTML + * @param {String} backgroundUrl 背景图片路径 + * @param {String} listBacgroundkUrl 布局控件背景 + * @param {String} buttonUrl 按钮图片不背景 + * @param {String|Function} selectFileCallback 选择文件的回调 + * @param {String|Function} exceedFileCallback文件超出限制的最大体积时的回调 + * @param {String|Function} deleteFileCallback 删除文件的回调 + * @param {String|Function} startUploadCallback 开始上传某个文件时的回调 + * @param {String|Function} uploadCompleteCallback 某个文件上传完成的回调 + * @param {String|Function} uploadErrorCallback 某个文件上传失败的回调 + * @param {String|Function} allCompleteCallback 全部上传完成时的回调 + * @param {String|Function} changeFlashHeight 改变Flash的高度,mode==1的时候才有用 + */ +baidu.flash.imageUploader = baidu.flash.imageUploader || function(options){ + + var me = this, + options = options || {}, + _flash = new baidu.flash._Base(options, [ + 'selectFileCallback', + 'exceedFileCallback', + 'deleteFileCallback', + 'startUploadCallback', + 'uploadCompleteCallback', + 'uploadErrorCallback', + 'allCompleteCallback', + 'changeFlashHeight' + ]); + /** + * 开始或回复上传图片 + * @public + * @return {Null} + */ + me.upload = function(){ + _flash.call('upload'); + }; + + /** + * 暂停上传图片 + * @public + * @return {Null} + */ + me.pause = function(){ + _flash.call('pause'); + }; + me.addCustomizedParams = function(index,obj){ + _flash.call('addCustomizedParams',[index,obj]); + } +}; + +/** + * 操作原生对象的方法 + * @namespace baidu.object + */ +baidu.object = baidu.object || {}; + + +/** + * 将源对象的所有属性拷贝到目标对象中 + * @author erik + * @name baidu.object.extend + * @function + * @grammar baidu.object.extend(target, source) + * @param {Object} target 目标对象 + * @param {Object} source 源对象 + * @see baidu.array.merge + * @remark + * +1.目标对象中,与源对象key相同的成员将会被覆盖。
    +2.源对象的prototype成员不会拷贝。 + + * @shortcut extend + * @meta standard + * + * @returns {Object} 目标对象 + */ +baidu.extend = +baidu.object.extend = function (target, source) { + for (var p in source) { + if (source.hasOwnProperty(p)) { + target[p] = source[p]; + } + } + + return target; +}; + + + + + +/** + * 创建flash based fileUploader + * @class + * @grammar baidu.flash.fileUploader(options) + * @param {Object} options + * @config {Object} createOptions 创建flash时需要的参数,请参照baidu.swf.create文档 + * @config {String} createOptions.width + * @config {String} createOptions.height + * @config {Number} maxNum 最大可选文件数 + * @config {Function|String} selectFile + * @config {Function|String} exceedMaxSize + * @config {Function|String} deleteFile + * @config {Function|String} uploadStart + * @config {Function|String} uploadComplete + * @config {Function|String} uploadError + * @config {Function|String} uploadProgress + */ +baidu.flash.fileUploader = baidu.flash.fileUploader || function(options){ + var me = this, + options = options || {}; + + options.createOptions = baidu.extend({ + wmod: 'transparent' + },options.createOptions || {}); + + var _flash = new baidu.flash._Base(options, [ + 'selectFile', + 'exceedMaxSize', + 'deleteFile', + 'uploadStart', + 'uploadComplete', + 'uploadError', + 'uploadProgress' + ]); + + _flash.call('setMaxNum', options.maxNum ? [options.maxNum] : [1]); + + /** + * 设置当鼠标移动到flash上时,是否变成手型 + * @public + * @param {Boolean} isCursor + * @return {Null} + */ + me.setHandCursor = function(isCursor){ + _flash.call('setHandCursor', [isCursor || false]); + }; + + /** + * 设置鼠标相应函数名 + * @param {String|Function} fun + */ + me.setMSFunName = function(fun){ + _flash.call('setMSFunName',[_flash.createFunName(fun)]); + }; + + /** + * 执行上传操作 + * @param {String} url 上传的url + * @param {String} fieldName 上传的表单字段名 + * @param {Object} postData 键值对,上传的POST数据 + * @param {Number|Array|null|-1} [index]上传的文件序列 + * Int值上传该文件 + * Array一次串行上传该序列文件 + * -1/null上传所有文件 + * @return {Null} + */ + me.upload = function(url, fieldName, postData, index){ + + if(typeof url !== 'string' || typeof fieldName !== 'string') return null; + if(typeof index === 'undefined') index = -1; + + _flash.call('upload', [url, fieldName, postData, index]); + }; + + /** + * 取消上传操作 + * @public + * @param {Number|-1} index + */ + me.cancel = function(index){ + if(typeof index === 'undefined') index = -1; + _flash.call('cancel', [index]); + }; + + /** + * 删除文件 + * @public + * @param {Number|Array} [index] 要删除的index,不传则全部删除 + * @param {Function} callBack + * */ + me.deleteFile = function(index, callBack){ + + var callBackAll = function(list){ + callBack && callBack(list); + }; + + if(typeof index === 'undefined'){ + _flash.call('deleteFilesAll', [], callBackAll); + return; + }; + + if(typeof index === 'Number') index = [index]; + index.sort(function(a,b){ + return b-a; + }); + baidu.each(index, function(item){ + _flash.call('deleteFileBy', item, callBackAll); + }); + }; + + /** + * 添加文件类型,支持macType + * @public + * @param {Object|Array[Object]} type {description:String, extention:String} + * @return {Null}; + */ + me.addFileType = function(type){ + var type = type || [[]]; + + if(type instanceof Array) type = [type]; + else type = [[type]]; + _flash.call('addFileTypes', type); + }; + + /** + * 设置文件类型,支持macType + * @public + * @param {Object|Array[Object]} type {description:String, extention:String} + * @return {Null}; + */ + me.setFileType = function(type){ + var type = type || [[]]; + + if(type instanceof Array) type = [type]; + else type = [[type]]; + _flash.call('setFileTypes', type); + }; + + /** + * 设置可选文件的数量限制 + * @public + * @param {Number} num + * @return {Null} + */ + me.setMaxNum = function(num){ + _flash.call('setMaxNum', [num]); + }; + + /** + * 设置可选文件大小限制,以兆M为单位 + * @public + * @param {Number} num,0为无限制 + * @return {Null} + */ + me.setMaxSize = function(num){ + _flash.call('setMaxSize', [num]); + }; + + /** + * @public + */ + me.getFileAll = function(callBack){ + _flash.call('getFileAll', [], callBack); + }; + + /** + * @public + * @param {Number} index + * @param {Function} [callBack] + */ + me.getFileByIndex = function(index, callBack){ + _flash.call('getFileByIndex', [], callBack); + }; + + /** + * @public + * @param {Number} index + * @param {function} [callBack] + */ + me.getStatusByIndex = function(index, callBack){ + _flash.call('getStatusByIndex', [], callBack); + }; +}; + +/** + * 使用动态script标签请求服务器资源,包括由服务器端的回调和浏览器端的回调 + * @namespace baidu.sio + */ +baidu.sio = baidu.sio || {}; + +/** + * + * @param {HTMLElement} src script节点 + * @param {String} url script节点的地址 + * @param {String} [charset] 编码 + */ +baidu.sio._createScriptTag = function(scr, url, charset){ + scr.setAttribute('type', 'text/javascript'); + charset && scr.setAttribute('charset', charset); + scr.setAttribute('src', url); + document.getElementsByTagName('head')[0].appendChild(scr); +}; + +/** + * 删除script的属性,再删除script标签,以解决修复内存泄漏的问题 + * + * @param {HTMLElement} src script节点 + */ +baidu.sio._removeScriptTag = function(scr){ + if (scr.clearAttributes) { + scr.clearAttributes(); + } else { + for (var attr in scr) { + if (scr.hasOwnProperty(attr)) { + delete scr[attr]; + } + } + } + if(scr && scr.parentNode){ + scr.parentNode.removeChild(scr); + } + scr = null; +}; + + +/** + * 通过script标签加载数据,加载完成由浏览器端触发回调 + * @name baidu.sio.callByBrowser + * @function + * @grammar baidu.sio.callByBrowser(url, opt_callback, opt_options) + * @param {string} url 加载数据的url + * @param {Function|string} opt_callback 数据加载结束时调用的函数或函数名 + * @param {Object} opt_options 其他可选项 + * @config {String} [charset] script的字符集 + * @config {Integer} [timeOut] 超时时间,超过这个时间将不再响应本请求,并触发onfailure函数 + * @config {Function} [onfailure] timeOut设定后才生效,到达超时时间时触发本函数 + * @remark + * 1、与callByServer不同,callback参数只支持Function类型,不支持string。 + * 2、如果请求了一个不存在的页面,callback函数在IE/opera下也会被调用,因此使用者需要在onsuccess函数中判断数据是否正确加载。 + * @meta standard + * @see baidu.sio.callByServer + */ +baidu.sio.callByBrowser = function (url, opt_callback, opt_options) { + var scr = document.createElement("SCRIPT"), + scriptLoaded = 0, + options = opt_options || {}, + charset = options['charset'], + callback = opt_callback || function(){}, + timeOut = options['timeOut'] || 0, + timer; + scr.onload = scr.onreadystatechange = function () { + if (scriptLoaded) { + return; + } + + var readyState = scr.readyState; + if ('undefined' == typeof readyState + || readyState == "loaded" + || readyState == "complete") { + scriptLoaded = 1; + try { + callback(); + clearTimeout(timer); + } finally { + scr.onload = scr.onreadystatechange = null; + baidu.sio._removeScriptTag(scr); + } + } + }; + + if( timeOut ){ + timer = setTimeout(function(){ + scr.onload = scr.onreadystatechange = null; + baidu.sio._removeScriptTag(scr); + options.onfailure && options.onfailure(); + }, timeOut); + } + + baidu.sio._createScriptTag(scr, url, charset); +}; + +/** + * 通过script标签加载数据,加载完成由服务器端触发回调 + * @name baidu.sio.callByServer + * @function + * @grammar baidu.sio.callByServer(url, callback[, opt_options]) + * @param {string} url 加载数据的url. + * @param {Function|string} callback 服务器端调用的函数或函数名。如果没有指定本参数,将在URL中寻找options['queryField']做为callback的方法名. + * @param {Object} opt_options 加载数据时的选项. + * @config {string} [charset] script的字符集 + * @config {string} [queryField] 服务器端callback请求字段名,默认为callback + * @config {Integer} [timeOut] 超时时间(单位:ms),超过这个时间将不再响应本请求,并触发onfailure函数 + * @config {Function} [onfailure] timeOut设定后才生效,到达超时时间时触发本函数 + * @remark + * 如果url中已经包含key为“options['queryField']”的query项,将会被替换成callback中参数传递或自动生成的函数名。 + * @meta standard + * @see baidu.sio.callByBrowser + */ +baidu.sio.callByServer = /**@function*/function(url, callback, opt_options) { + var scr = document.createElement('SCRIPT'), + prefix = 'bd__cbs__', + callbackName, + callbackImpl, + options = opt_options || {}, + charset = options['charset'], + queryField = options['queryField'] || 'callback', + timeOut = options['timeOut'] || 0, + timer, + reg = new RegExp('(\\?|&)' + queryField + '=([^&]*)'), + matches; + + if (baidu.lang.isFunction(callback)) { + callbackName = prefix + Math.floor(Math.random() * 2147483648).toString(36); + window[callbackName] = getCallBack(0); + } else if(baidu.lang.isString(callback)){ + callbackName = callback; + } else { + if (matches = reg.exec(url)) { + callbackName = matches[2]; + } + } + + if( timeOut ){ + timer = setTimeout(getCallBack(1), timeOut); + } + url = url.replace(reg, '\x241' + queryField + '=' + callbackName); + + if (url.search(reg) < 0) { + url += (url.indexOf('?') < 0 ? '?' : '&') + queryField + '=' + callbackName; + } + baidu.sio._createScriptTag(scr, url, charset); + + /* + * 返回一个函数,用于立即(挂在window上)或者超时(挂在setTimeout中)时执行 + */ + function getCallBack(onTimeOut){ + /*global callbackName, callback, scr, options;*/ + return function(){ + try { + if( onTimeOut ){ + options.onfailure && options.onfailure(); + }else{ + callback.apply(window, arguments); + clearTimeout(timer); + } + window[callbackName] = null; + delete window[callbackName]; + } catch (exception) { + } finally { + baidu.sio._removeScriptTag(scr); + } + } + } +}; + +/** + * 通过请求一个图片的方式令服务器存储一条日志 + * @function + * @grammar baidu.sio.log(url) + * @param {string} url 要发送的地址. + * @author: int08h,leeight + */ +baidu.sio.log = function(url) { + var img = new Image(), + key = 'tangram_sio_log_' + Math.floor(Math.random() * + 2147483648).toString(36); + window[key] = img; + + img.onload = img.onerror = img.onabort = function() { + img.onload = img.onerror = img.onabort = null; + + window[key] = null; + img = null; + }; + img.src = url; +}; + + + +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json.js + * author: erik + * version: 1.1.0 + * date: 2009/12/02 + */ + + +/** + * 操作json对象的方法 + * @namespace baidu.json + */ +baidu.json = baidu.json || {}; +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json/parse.js + * author: erik, berg + * version: 1.2 + * date: 2009/11/23 + */ + + + +/** + * 将字符串解析成json对象。注:不会自动祛除空格 + * @name baidu.json.parse + * @function + * @grammar baidu.json.parse(data) + * @param {string} source 需要解析的字符串 + * @remark + * 该方法的实现与ecma-262第五版中规定的JSON.parse不同,暂时只支持传入一个参数。后续会进行功能丰富。 + * @meta standard + * @see baidu.json.stringify,baidu.json.decode + * + * @returns {JSON} 解析结果json对象 + */ +baidu.json.parse = function (data) { + //2010/12/09:更新至不使用原生parse,不检测用户输入是否正确 + return (new Function("return (" + data + ")"))(); +}; +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json/decode.js + * author: erik, cat + * version: 1.3.4 + * date: 2010/12/23 + */ + + + +/** + * 将字符串解析成json对象,为过时接口,今后会被baidu.json.parse代替 + * @name baidu.json.decode + * @function + * @grammar baidu.json.decode(source) + * @param {string} source 需要解析的字符串 + * @meta out + * @see baidu.json.encode,baidu.json.parse + * + * @returns {JSON} 解析结果json对象 + */ +baidu.json.decode = baidu.json.parse; +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json/stringify.js + * author: erik + * version: 1.1.0 + * date: 2010/01/11 + */ + + + +/** + * 将json对象序列化 + * @name baidu.json.stringify + * @function + * @grammar baidu.json.stringify(value) + * @param {JSON} value 需要序列化的json对象 + * @remark + * 该方法的实现与ecma-262第五版中规定的JSON.stringify不同,暂时只支持传入一个参数。后续会进行功能丰富。 + * @meta standard + * @see baidu.json.parse,baidu.json.encode + * + * @returns {string} 序列化后的字符串 + */ +baidu.json.stringify = (function () { + /** + * 字符串处理时需要转义的字符表 + * @private + */ + var escapeMap = { + "\b": '\\b', + "\t": '\\t', + "\n": '\\n', + "\f": '\\f', + "\r": '\\r', + '"' : '\\"', + "\\": '\\\\' + }; + + /** + * 字符串序列化 + * @private + */ + function encodeString(source) { + if (/["\\\x00-\x1f]/.test(source)) { + source = source.replace( + /["\\\x00-\x1f]/g, + function (match) { + var c = escapeMap[match]; + if (c) { + return c; + } + c = match.charCodeAt(); + return "\\u00" + + Math.floor(c / 16).toString(16) + + (c % 16).toString(16); + }); + } + return '"' + source + '"'; + } + + /** + * 数组序列化 + * @private + */ + function encodeArray(source) { + var result = ["["], + l = source.length, + preComma, i, item; + + for (i = 0; i < l; i++) { + item = source[i]; + + switch (typeof item) { + case "undefined": + case "function": + case "unknown": + break; + default: + if(preComma) { + result.push(','); + } + result.push(baidu.json.stringify(item)); + preComma = 1; + } + } + result.push("]"); + return result.join(""); + } + + /** + * 处理日期序列化时的补零 + * @private + */ + function pad(source) { + return source < 10 ? '0' + source : source; + } + + /** + * 日期序列化 + * @private + */ + function encodeDate(source){ + return '"' + source.getFullYear() + "-" + + pad(source.getMonth() + 1) + "-" + + pad(source.getDate()) + "T" + + pad(source.getHours()) + ":" + + pad(source.getMinutes()) + ":" + + pad(source.getSeconds()) + '"'; + } + + return function (value) { + switch (typeof value) { + case 'undefined': + return 'undefined'; + + case 'number': + return isFinite(value) ? String(value) : "null"; + + case 'string': + return encodeString(value); + + case 'boolean': + return String(value); + + default: + if (value === null) { + return 'null'; + } else if (value instanceof Array) { + return encodeArray(value); + } else if (value instanceof Date) { + return encodeDate(value); + } else { + var result = ['{'], + encode = baidu.json.stringify, + preComma, + item; + + for (var key in value) { + if (Object.prototype.hasOwnProperty.call(value, key)) { + item = value[key]; + switch (typeof item) { + case 'undefined': + case 'unknown': + case 'function': + break; + default: + if (preComma) { + result.push(','); + } + preComma = 1; + result.push(encode(key) + ':' + encode(item)); + } + } + } + result.push('}'); + return result.join(''); + } + } + }; +})(); +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json/encode.js + * author: erik, cat + * version: 1.3.4 + * date: 2010/12/23 + */ + + + +/** + * 将json对象序列化,为过时接口,今后会被baidu.json.stringify代替 + * @name baidu.json.encode + * @function + * @grammar baidu.json.encode(value) + * @param {JSON} value 需要序列化的json对象 + * @meta out + * @see baidu.json.decode,baidu.json.stringify + * + * @returns {string} 序列化后的字符串 + */ +baidu.json.encode = baidu.json.stringify; diff --git a/yshop-drink-vue3/public/UEditor/dialogs/wordimage/wordimage.html b/yshop-drink-vue3/public/UEditor/dialogs/wordimage/wordimage.html new file mode 100644 index 0000000..f8c0905 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/wordimage/wordimage.html @@ -0,0 +1,111 @@ + + + + + + + + + +
    +
    + +
    +
    +
    +
    +
    + +
    + : +
    +
    +
    + + + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/dialogs/wordimage/wordimage.js b/yshop-drink-vue3/public/UEditor/dialogs/wordimage/wordimage.js new file mode 100644 index 0000000..e360263 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/dialogs/wordimage/wordimage.js @@ -0,0 +1,157 @@ +/** + * Created by JetBrains PhpStorm. + * User: taoqili + * Date: 12-1-30 + * Time: 下午12:50 + * To change this template use File | Settings | File Templates. + */ + + + +var wordImage = {}; +//(function(){ +var g = baidu.g, + flashObj,flashContainer; + +wordImage.init = function(opt, callbacks) { + showLocalPath("localPath"); + //createCopyButton("clipboard","localPath"); + createFlashUploader(opt, callbacks); + addUploadListener(); + addOkListener(); +}; + +function hideFlash(){ + flashObj = null; + flashContainer.innerHTML = ""; +} +function addOkListener() { + dialog.onok = function() { + if (!imageUrls.length) return; + var urlPrefix = editor.getOpt('imageUrlPrefix'), + images = domUtils.getElementsByTagName(editor.document,"img"); + editor.fireEvent('saveScene'); + for (var i = 0,img; img = images[i++];) { + var src = img.getAttribute("word_img"); + if (!src) continue; + for (var j = 0,url; url = imageUrls[j++];) { + if (src.indexOf(url.original.replace(" ","")) != -1) { + img.src = urlPrefix + url.url; + img.setAttribute("_src", urlPrefix + url.url); //同时修改"_src"属性 + img.setAttribute("title",url.title); + domUtils.removeAttributes(img, ["word_img","style","width","height"]); + editor.fireEvent("selectionchange"); + break; + } + } + } + editor.fireEvent('saveScene'); + hideFlash(); + }; + dialog.oncancel = function(){ + hideFlash(); + } +} + +/** + * 绑定开始上传事件 + */ +function addUploadListener() { + g("upload").onclick = function () { + flashObj.upload(); + this.style.display = "none"; + }; +} + +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 createFlashUploader(opt, callbacks) { + //由于lang.flashI18n是静态属性,不可以直接进行修改,否则会影响到后续内容 + var i18n = utils.extend({},lang.flashI18n); + //处理图片资源地址的编码,补全等问题 + for(var i in i18n){ + if(!(i in {"lang":1,"uploadingTF":1,"imageTF":1,"textEncoding":1}) && i18n[i]){ + i18n[i] = encodeURIComponent(editor.options.langPath + editor.options.lang + "/images/" + i18n[i]); + } + } + opt = utils.extend(opt,i18n,false); + var option = { + createOptions:{ + id:'flash', + url:opt.flashUrl, + width:opt.width, + height:opt.height, + errorMessage:lang.flashError, + wmode:browser.safari ? 'transparent' : 'window', + ver:'10.0.0', + vars:opt, + container:opt.container + } + }; + + option = extendProperty(callbacks, option); + flashObj = new baidu.flash.imageUploader(option); + flashContainer = $G(opt.container); +} + +function extendProperty(fromObj, toObj) { + for (var i in fromObj) { + if (!toObj[i]) { + toObj[i] = fromObj[i]; + } + } + return toObj; +} + +//})(); + +function getPasteData(id) { + baidu.g("msg").innerHTML = lang.copySuccess + "
    "; + setTimeout(function() { + baidu.g("msg").innerHTML = ""; + }, 5000); + return baidu.g(id).value; +} + +function createCopyButton(id, dataFrom) { + baidu.swf.create({ + id:"copyFlash", + url:"fClipboard_ueditor.swf", + width:"58", + height:"25", + errorMessage:"", + bgColor:"#CBCBCB", + wmode:"transparent", + ver:"10.0.0", + vars:{ + tid:dataFrom + } + }, id + ); + + var clipboard = baidu.swf.getMovie("copyFlash"); + var clipinterval = setInterval(function() { + if (clipboard && clipboard.flashInit) { + clearInterval(clipinterval); + clipboard.setHandCursor(true); + clipboard.setContentFuncName("getPasteData"); + //clipboard.setMEFuncName("mouseEventHandler"); + } + }, 500); +} +createCopyButton("clipboard", "localPath"); \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/index.html b/yshop-drink-vue3/public/UEditor/index.html new file mode 100644 index 0000000..f02b43c --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/index.html @@ -0,0 +1,175 @@ + + + + 完整demo + + + + + + + + + + +
    +

    完整demo

    + +
    +
    +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    + +
    + + +
    + +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/lang/en/en.js b/yshop-drink-vue3/public/UEditor/lang/en/en.js new file mode 100644 index 0000000..592eb7c --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/lang/en/en.js @@ -0,0 +1,755 @@ +/** + * 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', + 'snapscreen': 'SnapScreen', + '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', + 'map': 'BaiduMap', + 'gmap': 'GoogleMap', + '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', + 'lineheight': 'LineHeight', + 'edittip': 'EditTip', + 'customstyle': 'CustomStyle', + 'scrawl': 'Scrawl', + 'autotypeset': 'AutoTypeset', + 'webapp': 'WebAPP', + 'touppercase': 'UpperCase', + 'tolowercase': 'LowerCase', + 'template': 'Template', + 'background': 'Background', + 'inserttable': 'InsertTable', + 'music': 'Music', + 'charts': 'charts', + 'drafts': 'Load from Drafts' + }, + '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.', + 'snapScreen_plugin': { + 'browserMsg': 'Only IE supported!', + 'callBackErrorMsg': 'The callback data is wrong,please check the config!', + 'uploadErrorMsg': 'Upload error,please check your server environment! ' + }, + '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!", + 'anthorMsg': 'Link', + 'clearColor': 'Clear', + 'standardColor': 'Standard color', + 'themeColor': 'Theme color', + 'property': 'Property', + 'default': 'Default', + 'modify': 'Modify', + 'justifyleft': 'Justify Left', + 'justifyright': 'Justify Right', + 'justifycenter': 'Justify Center', + 'justify': 'Default', + 'clear': 'Clear', + 'anchorMsg': 'Anchor', + '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.' + }, + 'webapp': { + 'tip1': 'This function provided by Baidu APP,please apply for baidu APPKey webmaster first!', + 'tip2': 'And then open the file ueditor.config.js to set it! ', + 'applyFor': 'APPLY FOR', + 'anthorApi': 'Baidu API' + }, + '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...' + }, + 'music': { + 'static': { + 'lang_input_tips': 'Input singer/song/album, search you interested in music!', + 'J_searchBtn': { value: 'Search songs' } + }, + 'emptyTxt': 'Not search to the relevant music results, please change a keyword try.', + 'chapter': 'Songs', + 'singer': 'Singer', + 'special': 'Album', + 'listenTest': 'Audition' + }, + anchor: { + 'static': { + 'lang_input_anchorName': 'Anchor Name:' + } + }, + 'charts': { + 'static': { + 'lang_data_source': 'Data source:', + 'lang_chart_format': 'Chart format:', + 'lang_data_align': 'Align', + 'lang_chart_align_same': 'Consistent with the X-axis Y-axis', + 'lang_chart_align_reverse': 'X-axis Y-axis opposite', + 'lang_chart_title': 'Title', + 'lang_chart_main_title': 'main title:', + 'lang_chart_sub_title': 'sub title:', + 'lang_chart_x_title': 'X-axis title:', + 'lang_chart_y_title': 'Y-axis title:', + 'lang_chart_tip': 'Prompt', + 'lang_cahrt_tip_prefix': 'prefix:', + 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀', + 'lang_chart_data_unit': 'Unit', + 'lang_chart_data_unit_title': 'unit:', + 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃', + 'lang_chart_type': 'Chart type:', + 'lang_prev_btn': 'Previous', + 'lang_next_btn': 'Next' + } + }, + 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' + } + }, + gmap: { + 'static': { + 'lang_input_address': 'Address:', + 'lang_input_search': 'Search', + 'address': { value: 'Beijing' } + }, + searchError: 'Unable to locate the address!' + }, + help: { + 'static': { + 'lang_input_about': 'About', + 'lang_input_shortcuts': 'Shortcuts', + 'lang_input_introduction': 'UEditor is developed by Baidu Co.ltd. It is lightweight, customizable , focusing on user experience and etc. , UEditor is based on open source BSD license , allowing free use and redistribution.', + '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://"!' + }, + map: { + 'static': { + lang_city: 'City', + lang_address: 'Address', + city: { value: 'Beijing' }, + lang_search: 'Search', + lang_dynamicmap: 'Dynamic map' + }, + cityMsg: 'Please enter the city name!', + errorMsg: "Can't find the place!" + }, + 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)!' + }, + snapscreen: { + 'static': { + lang_showMsg: 'You should install the UEditor screenshots program first!', + lang_download: 'Download!', + lang_step1: 'Step1:Download the program and then run it', + lang_step2: 'Step2:After complete install,try to click the button again' + } + }, + 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' + } + }, + 'autosave': { + 'success': 'Local conservation success' + } +}; diff --git a/yshop-drink-vue3/public/UEditor/lang/en/images/addimage.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/lang/en/images/alldeletebtnupskin.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/lang/en/images/button.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/lang/en/images/deletedisable.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/lang/en/images/deleteenable.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/lang/en/images/localimage.png b/yshop-drink-vue3/public/UEditor/lang/en/images/localimage.png new file mode 100644 index 0000000000000000000000000000000000000000..12c8e6aefa8fd16287ac77bbecd7d5b58c3fc837 GIT binary patch literal 3083 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 Z1^`gxH94g;riuUn002ovPDHLkV1oEm+S&jB literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor/lang/en/images/music.png b/yshop-drink-vue3/public/UEditor/lang/en/images/music.png new file mode 100644 index 0000000000000000000000000000000000000000..2f495fe92ffecdce42b74fd57dca2687414711fb GIT binary patch literal 91561 zcmcHAV{j+Y!!P(46DJcpnb>wRv2EM7F|lpiwr$(C@r!+D{?D_uwR`W2-Mh72b^6%}DcMP3J`{D@*vL?-oaxWj>*Vi>~#|&G)|BAIb+Ly+Qda`@kiF@1B5lqg7 zLkI1IbGNps*G$a>fb)Q-M<-?F;u01jpihq;|7Cgm(_Q0RkYF-w5pVv!E}MEY`2MD-#=8{-eA32hfi*u39SEqu7UtrF4blo}`s{nxD!Rn??c&-VgvzX#nU;g1q zCoAs5T(F()kjhQX!BI+Z(-p&a-2HvX$w&9(mfKT$koH(6;=ENhL8e6n9h@2S_;lyG z*>_hHUzp8`vSY=Sa6s{A?&a_@1DQU@)08@ub5v7KyGmM&vv(8-h5c9_sJic^B%6ag z)ZEjzIO!mfsWWmtXN-)v&&ajR;#C=t`2r$QwjvJ7Lg=FfYqH(s_pY$D0q^+bP&_;% z4XBerUCkx!w%m>lAP@>AVT^&_77(EH()=lZz}b42mL-)Icr_B47=A=THk%=0w=4N! zIUma*r_@uIgYI_`bGajDH`x^3Q|AR`+4Ehf>lT~zFvMhYk3uP$j%6nJJLAF$a0QWK zw+uDMvxia;(^1!Xy{MpiKb9r0wC^>&jro>8^v6lJCHjs;N$~M~tg14KnS@OQb@Zcj zyKfx>;&o3RDcm9o1=g1=BQAh8qa? zMwIA_{Co6i*l<|900}dL%!N<}8VQ&devyI)F{}0-x|VjZ;ehiTd*%geTOZd&CVL(4 zPMkf}wU78KLg>fo*-Uq!M|ULi@VyHubmhU%;czrdgRtL-SoV1r(&oSGa}IOtEH-*f z8h$_BCk>l-nknwdkn=rku$Dx`?>uHaZ^4 zGIp^)RywnaC)meICz#{jS#mC#b#hpCI-by!k{JQ9uN=@oVBHr;@{!NTQU+yUBxA`W9yo7 z!??q9k)VzOtjDLWmP_Z=fI)$mvZ6doIca*-B4r9H0W(d1rFGpUWn#%NKJ^b$!*7ts zU`&(QUSyM@T7h&_PcUQw0>V0zf%v7#XvgU;Hpcy7V&Z(thWaZzmzAl=lc<}__pA{f zq&mkId(PKJQ(PH{>yoalfw1FdPiftSjuuaLhN(ImSgR49Q|7F&b6&lv&#Po62IZx# z^=qyKjj=0hwdunAtuo~(g{u9h%1^=7$~tIKhtr&mD<>JUDB2J6<##%=@%M4Lx+GBv zK}>SGB*7t<7FSojR~EG|*ks#2fT3|=B^9pPyA)T8{ zOC9J6eQc=Y5wV0~TL{Ptmj71PGtSFD4HX2`kG!@(h+Ri_nNM zP%1d~Ok*oVsyrE7_mYr$)i6b0-LsJZCRmjt*c-!h2SVBt{K7O!Krlw3(TJc4D?|Z* z9W%GF0#-tUmyP~WgOk3-fqnyM4he38xA#qeh!v+iCW)-kCuFi$arKKG$lQ34zRFJQ zN=)c6Fs|avn#1MM;%B;Xut`#$y7BH=5isb?tVnI)A0k&h=%+HyX}=Rx zS(Y4v*Q}Z|sj?XU7mNGg83eTbRJ=+Sc$Ek$t*kVxHM7RNhSbAN-kOHOGwf#*Y9TExzCtj^JltwtA1-3y$3foJ(Cq{^Q8C@rA*= zGSvd7$XB!mfvWgyjR`Q1!7uDhI&n-qp#xK)Jylw!ms&Wt*7}HKykQzOE;$)~ekL%D zY}Yv2gE(NZy;TLdKVnz~4`LPv2(H+v)|*Z1xbs?JnH^$Ptu9=YX--ouM06un9|^^XCb z04}1XA($iX=eYbaAqEdpZlP+bX%t<+i${i3%%dlE4l54m1TB|XLz9FJ$87%*K7Cv1 z@Vf$5KBJ;y>T&7#$3$@Z%lv%-wjS`j)>Bd6J>(YN40SH!LVPx=$u_xs<(rT_6#Nr3 z6d}hw+bGtT$(()wagAe!3_g<2eJZwWE1s8Z(sP!!J)~tY9z}`F^yZ zSTG{k6?Kg8&Se3m)K!P(ACeq2vH>Vrq7_a{ zVlpy@EVt{PWNNQ7@AnHP0O#edCtfRhKmeS}lm5bG5^lW?wZmol#ykKPh0`c?9F}LV zv&y^)i=*py3WC%NqwAVP)RhN8@l)SzQUr%yI18YDi6)s4wjXE%k)lO&3(Uq(!fW7G zRG&LzLo*u^2%$AwX1JC%N)oCp-!P4=B}%Z%-WT6&?a#BEOZ67$rC+sqGl74>0zsO3 ziAWRScA&I_HaU#Sbez6p-wGY1&?e}qbcVrNp|gpRge^u6Fz?mFqECe|RVYDAa)a%u zKQE*c%bHJOq^6QsZ!2g-V>&HurQ{Ofj}g@NVo*jFAi-0)EhQompu!WFagXgNMK1s4 zsM;`mhxQ&renkIgv9>kZqxdm$ILG%WdPMCPiT~ zU%|a6>kI`2R}3|vo|t;tGmKg?eB#(fC3oEYdo8g+m1yg{2$=lWRz461Zt5B-(61g! zWo7<$%tW&o-NQoiJQm25oK8w$qnVp`PjQt$W|0S|F=m|8Ee)XQhMPaQ2j0>^9oAJZ>YqV>bi?h~X&}mHV+o8q7PH5i>KOBa}f+vURz?3OXqrJGS^`b!XBk+Ltls^br>W zgF3|0pNJbXbnnlvt{DRB#gw?`Q00gN<;(CY;!slxm_&fcQKiB5I@p;w#_Ah1;BeUE za2TYyk1`nrJ;D){-b1@tz*(ptw@jJ_9FI^{&P)NEYXzsdup;f< zt1%YNPU<(lhfHjExo6OnoH6CuYXq5+QCVpSNQuq{&Y&@MozbH@TU$$23+r<*gDRQ} zyw^__k-+O2tdWOsmiihX`*SUb{7i4Q`z}1o!g5u!*fcClDlvNs^qo)5C;vb#yQIMz zr1}#|qfQb6i3`v`WZlbvTYzMqO|azkZxSyvA+EsoN-9%6Bns=$S&i05$7kBQRV1z$i6%*Z&XV2v)(cr@;@<%UJHA$7)MX7#;M2Q+_tdoaEt2eu4S zc3p*aq=cwcQ1zU8VV6gvM-g+vsKQ`^!g$BuEcf~bqla>s+>S=Ki%5+^u$i@=?dwNQ zxa5zdUr$S8$^pg>m|LoQ$ya><6y*L&?BkgM8mb~Xfkd-BR<56jn9da9@rQ|RS27n) z^G|$+y@adO5@vXBr0}@@mMQU>IY_bZb(ZXr)-Jf#tdSd)-&b%BVC!9I*7Fy2&YG1R zy~Eb;1?Ol z^TXFo_=Z?t!MODNaew+x5w0rRYVCso4~P0RoW77E47Ps;I=_OMF#@Lt0nN}erV+@D zrg5XyiW4(=WPJYI$P9B}sfx9NACuXt0ahlKs^G)n4{IEZ)na0#voAc^z(D2+&Kz%TR_Pj{}WhDNbDX3CyYu@)Fo^aU%RpPrhx8RWAQA7VY z&)c5+q>>-`pqeUsIt6t%c5g@iMyRfQQ)W}C;7NjwjIL4JnXwf*o)1EmMZYC9C@I`v zddM|dTuhHFa$PEp#)qDaSL33Fi^@X_FiHCYS5@iM7B&13GLTokOHe>fZhuFwgsafP z_HYXM9bkcCqEUOhn(k6jTrS8{1TN{CNy0z+oC~GKmcTKP&Y;Zk(7cZZ!Mtbs_RsZn*j~L|+AKClz*dxr=x``SyB! zRZNqa*zmNOSxi52S1PSmt&+{#hrJ&Cv?+pFWBvScS!CoWtwaBv;jZH3FV&4`2Z>|n zc$neW&a0jDW*cs6j3T~OG{1^i@Hx$}+Y#HqRproUG-r3o!smx( z*Mwu9;mYHcCrj-OJWrmjrum)sR}P~*Wn*)t*{wXPb{pJ|wVMBq-CAh2gnW=Os#?K( ziIAqsZViOxZ3;H~#rOkfQa1q0P||0(hQdN`LU||o`AjDs^TW={+w=t=j_r}EB-91ipZ z&3?)uF?)B6S73!xAn~+<{O9u(&6W8aZX$7ecqxxJPfG2^ZjA~sjr{sx#Gd2C3f?kQ zgwrcb?4aB$8upRb&cv+d1A=ZaMjpQcSKggr+;P@m^o-_yutxWhedX}DXSJK>_<_bY z;2RWKHt*XyzCYD!m?32tFY^G(DTPP$foXQ^gn2(kKP_kNN&j8jg{}ev>A9QlYb@sj zyWj{mvJ=b1NSKbjZTGOvv0mNIp>GVFjLdBe4JTrUK$G5~Z`9G$C`}VagchSs&xnus z8Hj|NH@eP04n`!KjX34M>JOnrz6dUf@2|=j74&EF>Db$MPu(3Gb?lt_=Dg4>Pj;w9=}z?;G}E9o{g>L3Kt4$ENd(k_5*_xB5V9un#=$Zc4J# z=o^*n9Tg_g>KnCXC+2%0Mk)70$|4A)+2YF~!dO-bu z<=?LVYdbeFG54PY7yZ`=n+_EFKZ$PjuaQ+J?0@A4YlA&ZwBOrxLe6s{|M2jFX&&zn zt0pxUJfNJVpD4V<>^hHHs~qZ<##z{6_74_%H|oyQU)F02^d(jX5?Z@EtTH2%(5lGC zLZFD`G{0A9;e2mT?_0im2aS%~e<$O!8{-e2twfqb`znf=6|Z-m_IX za;bb4PKJzjVM^Wwe# z2r0UI<0;xLwbCB#3o6=G3Hyu61G<`}^!Sz@#JDzGIj= zuWHT6ZE2%GaP)ra!G$PNrWU!v8oxd5KB1!Xku~#@mqtFSKCzDu zc3zJbd_!0#MOtP9Jb}pY}$sn^xyE9IKEjP~?yOazh?;@}{ zNxM-lxntbnJSev5U9v~IB$f|Q_q=>WyU43_9=lL2vn*%l{AtcYAJ%_a>L>8=Ue>5w2loVoDw!JX#%P86W5dIXDCt&SJOFAv3~N@rq+%Tq0lYpB~HpJSE%V z;&t<|C1&z;?p!72^URwu==TV*Lc4coZXH%2XHz-)y7xN_)Imz1ao7=9h3PzT0Q0Qs zTjC?bYdO=R=JXh3r&*Q(e|GP$(zdH{-Q|?bQ?nOZ-v4!!R{h>A>zjV; zQ`GrpZ}mlYc3$FH)bsYjG^FhfP(Q4A#^-Z;WHYSZZa}G1&tV5U>cCU%?=V)2q zJg<*~nRj2TG*iu>yP6TLA|r=R?Lmy&3qz zzg%`b&gU)Wa+pGIHLq4DvA}EEnJ<{^SC3oH)`Cdw3`dp(dLhN;ZzFKQn z@(4!5F|e5hPyT{iIeRJHBb`D_A{PuF%{P*$trl^CFWN;se-fbg_5Fyl?e_dY2>s|c zDdWrShHeb{cEd3*parJnr+U=C+|Ci?l8Xj;-H|L^U@Gj{AM?yAbjOkB&vwo{ljNSJ z^?lXt7+<&xifXnT7X;5q0jzOEHe&TufPMn%Paw|&Ik)c^3fmDMzQ>ul7y@0S?%{~* ze?zDz1t|r1J+}<+sGYKRKyT1zHbmEH#(5s&>RSHd*z3#IJ|;P}P2&E;ICjr!JwwEl zFq|oPS&kHuT&iOx<$yoHxoMC)>L~3P|C;i>{(dH4>=RMQ6@~WUkU|w;5x>}j*J0~5 zG)ujl-hZO%rajA`tjc$<##8$s)vQ#o&J)5&PyMVwoLm$5i~78tb~X8HxA<`m z+`t#q<0utHykot5gRq}F5>-D~;p7-qlAK#WH(va`h1&8oE(h@Be-U8=q>BRy|+Xx`FR$S&V}=Lyl!sx4!LYu!p4mL}c->z?7Tx8>?V3DDvoT z2mj;oU^pU2H1a5exxTjhGA%@`{q9!(FuTT$YK5JSbHZI%|9JtNs&Ht*#}%3jrzfKN zRO5lisn6r+-d7{q3qdTsbLCc$pW+ny{dHG}%P&=dQ{T4ywYl<3+t z{8<0)FrKFW!o9E0^ia<|$9Pvy{p1G(Eyl}~;jV=RgwCLLkv!}N9)Xw8_6O8(aq0dY z-9*BO9r?*by%1{-YU!&5<=R$0CH?WxHVszi{HrNLwE*AXYri~VG<;kZeW9sfC1Ogq z%qmO`%KA@0m+;%T9S3P}Z(OsFNLh>-M5%yEornV6!leZb!6V@m%p!=w$T#k~3j-6F zdG)vSVh}>9{|QTvic89^<%^AjxgO19FgnZ)V)CJUmi}_Cgo>vWamGXJOc`fb>$b2FQT^!P&DCBcd_y8SNyd8ru;sinT}Gsh*nPEky9oEe zP*mQ$f8|-FrEXv)Z((_zV9->sx?NJp2lm_b>B?)-<5y$8{WPG=Pl-|~O)2jO$%iJX zraIA$8KJXiUWIm`P&M+?Dwzt;uj?dK=O5aD6v(0@nx7>wk+pJyYMtyhSEW;Hoy1}ocd)x;D2{kEbjSVXUkl>>U*m@ zx43Pz;Puxjz0||0&hFUY%1}=0u@muJ;Wy6sAi5spdUBfIJk(uG$slCdgjDBhlG$-} ztRB%;_Xjw=f3OkcwmsT}u%PK!b!`{wKBBRp;h4Z`Hrs_rbC;g`%y+r6Q|MdP<#<+} z?SExlSzGbe*<}DXVqco#BRq#K5&Y)T7H~l4YB6`VQy*C$DIQ9X79M4*!rinkFy9-x zdtkqFRwQ$dvno=x!bZ^Iu+H3Ou{G zXgW!?bhJe%-4>|&GJwS|ZeHOctGIRyU~OKqnX?nO!Ip}_!;~vAo}=m*Dd%A`Kyh*}eE$eH1Z+Y^0JWd5~oFV?= zLaW*^pRca6Ms{lm5cCB_Sm=zHVB>W2TKROsuD(-jj=Kn+&I34Vy$$%fWJ6Bp7IO-I z=g#o2EMkFf&0-#lv<=hK4Fok_7{I(J2$U_}0V7B8SiD(dF<*6YK8E7<=0Az>R4pvL}Sg0LaXd3=*U8I zenp88tL%`*cCLc3Wbfi{R(HssK4Txa8|8Y66s-6IYNr~$`vDg%T>yIpy3AN5uRM?C+5j%m zv6k;>(|rA=V%^+4OJ(gHPPX1Ks&%c-Y_Mfh0bO#{$Bx^Y^W>5`XZ4o8&2w8R?O2Ho zx)H~}4dKk%S8AOHDG$o054za-e_FOTx42;g#Ul2HP3uGO4k|`G)ogB?^sG^hgVpJj z8ona9dI$jCQ2z=X-5!N@n|j9T;xgN1dpV2BQVF*{N@UvHcj;R&r$41_ zk>2qEH2KHuVHARG9Za!6I$O~2uUPj=VK;B+(TWz#L~pmOio2}dsWnJX&)Gz*HZ_&# zyJ~oH;uSZU$}KFv?I=8zTNrd4e&3GG}Fl9_EJ|)Qu_L|On*W|yR4h2t>n>&1s|xu5q!|? zsj4*vp2P}5Oco*6V2ss>5-dZwf|XlWh9IHI!A|v{!A(`=NVQJSOUnZ5U|{W z*nRO3;hTR*R!h#=L9LRd!cFMQgacHe$}bVr}{$1RkKPWyXoD{IL}b#awbSHX%n4Gk3>F^%WM*O z(JGhjgFB)J8an+g(C_4_k#{6U$;_pYcn=O7q9lDIGLF_#%m#U)fU^PU0>r_v2MbzI zMHRZ4zDGm1EJL@PB@n8SZjBBC|4Gb-q>``$#Tt<_jC&fBAPo|prex@c&`-8j-FQas z(BYZT{u(WlTYcA5Aqv;7!#u}2=##-YECP=LuZ=> z3bKJILJ(Q=AL(l|PiV4G#P~ARs1xBW6TT+nqhYG;^2Ek>*mT21E-CIvh>A@ z>k=|W(n)m;n9I|@9d3(1o^b&@a z0y6otB7^!%ssy2amn)eXeF*O42Ys8`E|Q0jlE)-K%2>E$M=ci>2Dd#|eWaBwP8qqb z+$M*iKU}KcJ)F$`;73Tcu;CLlFmZMcTNcNzCDfpy52RZ?QcUI#Eq_dR;*(5AZW%Tr zdkOSWI?FBp;m3%L1LT0R!T)$PY;j-OVwo@r-at(y=NXJbiBl2mM0mW*HF?z#EGK34 zc(nZNfgHN7R8pW^SO_Y2xmeh2c*v|H-XU#yAm!NRk`}_ZSq?W}m zX6f)4orMq4*|2`H8on%k?xkLC+9Ccu_sx&mRE5bxRrmg!b3{ZeDWu>Aa)vqIC@Pt# znG*-q+)3|0^%SNxLhVbEpmJjE!oUuk^bOKLVm`{{<^E1gwPEC22aaETAK_zJWu`!T>59 zQRDY$FU07UEWfcIPyvhmn?dP#bbcOhz$tjkfn^cLroc;#)AR!%a3&UYnJqMTnryd>rPMfWhcO2( zxrFh6Kf`2tO_Stw%{Powb-cn6(`0>3C~(GbELMOiWbPWD*7p9$x;e9WCUDpsH9M=a z)*PAvmmh^!bMm2hKxwh5>8yGZiaNwZk5bx9H@U5G5Lk*D`$!J*QC3R8&U8IgU;*tq zhq+7f0A4c6le!7;b1M5*7EAGGP!Ca3*HC~P31S^dMIlmAyaKL5qfGf3*%;I!eW;+L zi_remp%`VDgFa{3eH+e4fALtkVK(mwoi;-&Oub9zu97ApPG z4iiJ2wZ?D!?S+(trac|#7G{ODEE)w^+^41pt*w=uaq|>;jx{Qy3GeQsl1I$*N<~uF zR;qx2Im{H>j-;KB2e7#?LkqbJIT$g~L>RQ7r@y3}@_%TLQJ#hK2C+NdO?1rR+a2z~ za_2)xPI^yNn^DmGX*!m=U=&0=p$_FUh-5T#U1#opPvRR><3?04g0{Alu!LO{#2k<1 zA1g5pyfhgSMwlRId^;J}rzkp$%wX65bYYRQ;GDad@v@;xrV5ulX6&RJq&bWy;hVT0 z{CaOUA#oOgNTN|X1rIJHqAd~si^JHaV}Ub^dJD8`{fj)>Ih1c6h?uoZ@{8p!K?9t{ zO||_^7B1#!JlJEzVp=d71$~wHV^2t!#aM^d2xh-|lYQdZXZH zLhfW-{-JxBd90crr2P6o)p`b6DKq7ZPQFJpK>Z*+-Sj)Hc9>&1GY4Vqq9CH?-N~pX zxqDqXM9JwJH2t|hLDQut4I~C-+Wz0xoHkn?H0uC$#fiQS;p;L0L&Veb?T{5gVG;3}rg?~B9u?N863QGR zR$~{(YDW81#3p#*wiG?GjggpgjFK`nXpFu;PFRgfM?M%gaQzZ@@Op;Dk)2aLM%Ipm zvQ>(>g-N~b9n|$lpxJHV=$&EW9@=^`kd-#jC0MPCE2|UW@2@-)^H8%PtCk|`2al4A za=OYQn=w2di&x?+;F=yfIm;sJdHDFww0v?=INUI@+RTh!dzFm$VhrY!_D9#7)K6L> z{A6yqLQ8YVGHX>5llOn0lrOXR{&z_k$WwVt3I+{NbHQdw$+@(oQSU6e;TO~^-cR5Q z6Gl@treeyFeuTN061F2ortLV&5H6KW_9R2HXu{kdA1UeFDXs64{W;PeJUcL9d{bf| z<*CNjh@BP#9rb&q7Ae0X_N!<%-qa$3jV>dDpUA1_BF_53C69_{@F5`%yq^3-sHm*7 z#z#XhiO6vHAb5wQ9Gb4kON?~L+VnDQ#o6BxqigYi5wE4*8Ntvk5g`Xg|19+-vAE9& zHO{;WN#?I%E7?mm2`F*3inD?C=`>iyRb#n~qCEYjwpwXa(^cfQbbFi#g#V@1oaHZeMEamlrOv=AQ(JTWb zGC@GLQcw)WZmW|5wOQIk%Z6tZT)+Jv_eBWa?l7E_Ng`TSdGC>@e}Z}7lk~V}8Hvjc z6CIp5%}j>XkKlv7y0I#ru{g_>4+(?E1s}qWs3VI!yLpXYHP|6LWo))F%e$u^WE$$Y z7i@86z37N|W;rCroGK^IjGma28;&bU<8QN*CgRNp0PsP0W6(eR*MC&eEKHawd(d31 z>B@C5c1@?zrDoZ<=UkI;$Y&3BSAMnITFNUrPu62@^P-*w)vW;kL5h~~P=Viak)bPu z++iw~T`8flG3MxLG{G=!&5zX;jQDpg51*O6?~>ymam)m4lgb^Y|*azqTKfK zbQS*#JYx6|ru`}Rr~hZq-iAX6rKs%70R#dC6~WVdVV9b<@9!GH8shH!4~X5H&=n-f z8dw|o&Y{bn(SdW5E11~f#QJT*AMsvbBhPU$c1h88gX)y!-`!nIouRK1wI|3f*dI%j zxg-)9ZVX;Fuj>O?`f;?r!0{NAI|c=rH=b$RCq99)YjJOz1Z7#XFLh$~G6o|jH1>it zI{+T92Z!9QBFSw{dWZiYSLCnWPL6tc zmWL~?I-bHr)3SSP<5Z#JX#ewDXpTs{twgO!0IC(YFDotTf5Gj)+T6gA5eAiiM0{^@ z_;(FX+%pu3lhVoHMc^GD8nre2tFdDfy<`70_AfI3FEsZ5M!9wm z00*bPr2DTM{~8TX^bY?g|2pws$|a_QA^uPHOhs<`6X$lnAD-|S$1(sO)JtPPG-;Bv zAbU+&h5~1xqE&g&U1XLu)K4H3sJpOMJyo(Ad^Mk#Cn+*gkn2k^PyxEqSY#3DB$TVxu><54;Jrpis0sUKJ#Y9ei_?6&|Lh-(dAJNML(PD8fs zx)cpcow^jZ?@N!AM;EPTHT9*+y9+jL)-5i{AJw|sw}7dt-0OV{0_p~%0x zg&vt15XWL}^*0Acdpg;o^$xLt)2bGfYoE7pUJYuMceKYBoFk5mv$jbTz(oQuz#7pw z)Iws;?-*$ZtZyv>qm{zOaKm@x3^ylXHIm(oSUbjCAqtOzTIU$>tC-O9op*NLH#|3{ zeQ2vX&}Q2sCTNpdvs_2}3-IOs#6WMHtaMhc6)Au%psp3gR)5aI8UxRtt;1nWi84!o zv=?vo$%-AASWd~6{W-LHiTK)0{SZsA>Y2rwB+Z*yCo)1hV=j}vvk#U6SG7W*h&@D zEO3Tc)O{`#7WE0f;dFb9UB(k*ldjx%g?LtscSGYBTEk2u)^7pc5LUX5*sv5n{{}oy zd%ow+q!{BHo|Yw6Ki4?hki$L(gc=Anb6{PB72;t^br+)xEMsyJqpqXN8Lw3j-pa5JHia5Sg zoVP$4>C6xChlN7mw=@=*LvW&RUfWPzAxny(Bb_|MKI&{CdLkQtm&esaz?f$Bi-REf zf;@H1L-q+njkNVy8{Ttyt<;If zVuV4B<~W-6#0a9J!SNlcIb=2@=8IRO*P(e^x06OUpzB~kmmL55<^C&2M59i*R!3^N zfd%Rb&==(AmfOTmvwBdnNT8KWUeiAX?{QTjXb`);xT8*WitB0^=>tNV}&F*wfJNNW7_S*exZmh03+j))te)W*yRKx!g)2b{wz@0R`o4zY7FdotprDnWk2P}jB7`MmQ*=(#_d z>3Oe!;s4OKjgHyl`OJbegj?nqWG!ZMCEPzY25{1PU#xuZ=Fo!epx$9OZ|8jlTZT3e zRnalbr}TW(Xdj*Zo#EA8W+mXOBOmD^<`{614K_W}p~7>suEzOL^Ks-G?Hjx*>b9y& z)^Q;!qPAlQn1Ns}cpI-!dIfs(4Z&dkQtU>=tcgn$0`qlwP5#ZRT;FQ^yHKjRf6u-` z{9rOKvr2^Ni6p&k1WWE=x4d!acier0WBkoOVKtBRI$=Whji|?2uo_b`?00-%858{Q zxa_`jdv5Rh>1r>*a>!)jr2t2k2Vq+RLnK#t+|hGKs>Vl>&S?a7whxil2Sb7X?9T zOJKt#|t;NN>&wg;Dn#Gu%S+W2Xb7Ji2!()m+*SUOS!=3De&{JYMEA4({nD z2FT%uxFc(1>jf3pYZlD39!vAQ#~u+&Pr`1hjC-W#ON7rv{z|HUOv9*IkXMhPim#h~J?30}(ByAnt(*F>!{9{M%Y~*rOgb6f zB5?Hu^_6ZYb#JkTgb;4prd>*eSGLY~kKYZ=isoH>S$vrdUX%n$KaLQn5=94ljO&v~ z0MTgixUkw+M86!8YVj4d89bWvyEP6iI)3J4A};K+g_?WveRkDEwcvgKGKF*b$XahO z3X{J{{csLBUShyzDCP;IhCFOjF*7Rb6p=phv4LCG%clQ7gw_9}ap+Zy3saqAr8m1A zsk1f(<(M%0qQURP>D=1&4cOu#l=wDJ z3S_@fxUF6-zn3J4G&r)`zwou-ek?tvzImrpc`|#ihm0)AgjPHot~_XX4uqXIzefpL zv92$wafP7Z`aB|#rEgp}nI-7NRBaec0khhC=h}1XllegIZY!T(M>{|N{ly99Vxqib zXrucPF}kQf#k$r1%jLpO!5(4&N!a`|;AstE-v-A?mh38v*QIOiOn>2O7S-vZmg8e} zh}P8}6|ZpPqz4#ys>+qCvhLR4;*s>Tyrr~mm)>x-K8VX|pI`Yo;ks);99lEtbJI{7 z{dvdA*6=#Q~i7K#pK!0MM8lw8S0cPb}U{8z&^C@mK&T#H%P-d6Cp z0?aLIt0mUyaP!S31u~MF&TmWW99d55-lqB66m6efwD0p9$C6l{9}yee1fg45+Nayo zHWAThE^MxI;IDHPJs6Z1dPL2xVrpAg@RoKBJ76JsKM0+I6o}!Iv|&$4g|bLvMVODg zGU7KVw_@3I6C?PmA!XP&4n1Ih3(RV^+yf16l=1o5d%L2@HtZP2lREc2gnVCeyK>N?fxB9ELakGn9g8j3Yh=0}Ak31m$zty(%+>OlK zFecq6gSo9swFIy303F8(0^Z`GeUQt0`J#(ge3B2Y86jjFvX`~D3w0s$pV|uc{Z-rO zes^v}DVN=OZbYjweCX{BaA)j92~@~a$D7`?&FbA0$mzoU>&ND?OqLBXZ0(4eD~-nH z4niN>+8yh=4(T3*btBQYM^4Mefv~75A9jYkEl^Me=ZjA`#t?6!@Tcu-Nf(q!K|9Hj z*^3PV(8V7U*3E0gcWdq40O(yiY~GAoaEqTBx)W)q#<@iG9UI<6U7y-mCz>iKZWCP_ z8^Y=5TSdilb+uJN{@A2g*{P~gB3J9L} z&Nq3zmk`ysl!Ltw)G|n&{>#UI(l*Xl`Xa4vtUSwyISkP7pwmLyUhl4%y%5N;$m3i$hCWo;G3YI)^g0n z{fUFwKKf?+eXhcm735@AVeM;{V{;0v^wq=?=5utpq;)7;xY=nYfA8`OzbeQvgtCH2 z`|r%^*1waj|4xk7mYMhwK#%zIjrbGHFl@bGSe4#9qF70iP6O&tYt(qn*EWAy@Pu*T za+0xribe^S>9-xClwjzA1cHuPs97YODwY_szUmVe_p|E(i2Id>2WYsw8seH6q3y+5 z)=k#!FIoU--(C{rh+ppiVC~C;n&_InLDc925)l=YCHSBs4+hZivbfQFcgzYyp7;L*XC`J zkZmR^yT#fCYc0-aAjLC=)-81(4NvaBdPmVBMlq|%bA`9(bghEI`s~#?ToqGR6UH$I z{Qghb;{P#tHBmg<>9nWA*4E)$87DW~^3hP7*{i&({@C|3Z$r{g8lK;T=&uvXExMF@fQV)Vg7^K29fb-++?DRsp`%h;Fy=euwG z$tfqtQ$g^vUX-P(BKtN##AA{fK?nrZ+GM+~ZPZ1ISEm^0`1$j!FtUH==6k>(g_1hu zaSl-wo{fkXEfIY7xJhI<0V6fs>beo%kSFLZbb{ALaI(2++@v&yx}ECD)-0o4k=}uU zU95`ROD?q??DCbfB}&d2Wg?M?^c-1$Ei6&2Z1sY>y1Kf-;b1Jz(NECy_U&8!^vb!R z3R%fjwl|vuU?lAs20NP?78brv)s@^3Usm7NgASy5urwXwc0>IoftT^i1a@e+UWlN{d;GobB5N``+VgJ)R$-P zLkJ@b214R57i)p#;Dza(?I%aUNUSjqpTBv}=I{I3h0N3K*k8 zq44t)uct{I4(I1`xFb8NdMbWoWMrXc88)4lG~o^u{Q*7$*%px*b{DG)(d%P4G!IAq z*PXz>O`@-`|D!Cu-@v`e1!5Qdq0)Hw0O4J~X4R+F4-{8Q+(SgW{8mbTfnp)}Smp~;W zJMtz}Jc!+W93S65$mp%Q9*En@?dbSbr8o?m8evB94CP-EqVF2Y*?*SZBn+_s+i-%k${$zWJ$Ng0PLz*@&Uu~U zuT-?Ov>ets7E~ZFlDUZ?Hjt_c*m)CJP>K<)r$>$G-@%13iXQbZdjOo=E7O0vE98+E z^R9^m<&blP%hSm>&ELh9SJV`&jx;)769&H};xgd%BiExp6A{~H6OQ?M!1kgd>tYi^ z@os*eTp7cnqobp8dvxG$$mC&%L7iH(B*M8=%&a)j2N)OLF6R2BPm;zV z*;Uo91Y8+H;fl%<7zzPF0cjs(Z?Gm$T6o9kem+jhMQ7%8e=#$RTuRq=Nq3wuB^<^9 zXzae}0@EU$Ji=@};gws0?A@@t#4>=GBy-jf=e~j*W9T5nT$O)TB+kx3mZW>e&rxkl z1p`3)#y|~r9r#})ozq_5DVQ$sf8f>iF)!P{#OnWtg7{z2xM(0(tb)d&PoF~w6%^F; z{!2??cb@%U5%?cEt!gPxKh(H27!3fBdM>9ktk&M~*udbouz3F+M*E)Lvg!6yVS-s9 zyB=0P(T5zUjQma;o-Z;TE{Bl4y)P>E*9{N63ESt4N>=>T^apUg6H&K4$BXRQm zilyKg)PA~PLGXb(Mj$fYj$-RP5noqo@cDA#hDw5#gzRqiK!)htPziWKuhZc`e3QphpkqU;to{j{9tqvF&<7nov2+ich%Zc5Hd8gY6BDX$ z>nvR-P&&wU2^wKZ6L^_poVG6DxH%9xS+opkp)CN-Wswp`*Qk6!37!AY85wXY*3*K2p{5<4YhfE-fm3Qm$5wwXz?F^#QQ9wq=Dp7P{W1 z72$CRFvMCVXxTcK!j$h0L)c2@-{gg5u(Wm6x=&Kp$s^>U&?_U*Y~G(H|9VwsM_n0p z>EJm3Ipo>+gIAEvmA6oV$LGPVFtz!)JIo$rSq3vmu}OvFAVv08)2zc+3O8`co2^j!7L5rs0<;C$#C7fI;IV#v0r0P>&SAXyni6#fOY)4G8Pntx&4V6p|2 zd|Eqr&xDft=<@Xi_;^GY3;ZB*-Ml!v-nbQX+BB{idq(N-xWXgAcS0$;iqwqwdV3~n z6LU76mum|@wFuh^R#_|WjTuGk0`F^8JXvM!HAU)_RIHg9oOP8eLs$7nQ+(eyv)pi^ zyH4gV#Z`#7TD)Zs$VHjSq*{4QY%|sk^kPvV+^&H)n;d43UtwiKMEDT+q#YAV-SGr@ zV%PfaDa<8_az(5@Dp>9&=UbAL0p)kf&SiY`!+FxS+1RUGeXfXUZuTyiC?UF@+{_+^re!mlHbnai7x-qn(XGQA$ESJ*ju(X3|@RQA=g&p272v_OsLxvw8 zJ}u()tyB!@<}tKn^=r#NI#{K+<&(L`Kk|@x@TA(x(w^V6NL{Ic3}%Y9b6gQ-bqbWe zu&$5jI>Zq5!t0Cqu`V1)(y0os2yKYXMz^>AlStz;mQzk>{@!pF$2qDL05G zmX@OzrMO<=$eCX7MY{%>B07H&H^swb5beHNaae{gpwL8vS2TxWfmKFXBmn0#dV!*4 z;O$hVSooukZju|=at#`~I#}4oT9_Kf%NDqj zB0<;J=-G7_$*xc&dm5=pQ`nzKU~M&$C&e#IH-^JJXlB97G8-mn@11(PviZynFq3@1 zslmsbl`t!JjC9fgv^rHjuHSYyuF7tdx71dPT{Bc4C6DJo3PEzF6f!G8h6rxLsVYd) zAHJ?Ajrl_Oi1E^$1&(e=rZJnuy0r|4zoqp7avNP(h80>=me9}k$JfysWo_86rZ*aI z;IMSS)_h;y`pqcG#x0{$lYDqL@PkOoDh1fc5gz)iZahRG2cDKAii<|WJXx6{AaEsf ziG&BLisXfSXr9E7=7%70mR*EcMIPp|R4{{02MngMIUqfxJuy{akO(>~!#-Y?O^EO_ zK=)3P&l1qwCD~J?2rX6>*?Z87LZ(z`!aW_>Ge8ql!-8tkUd!-V26TFqK1s;NlqwOB z&SpZ=!|n2=q~F|30bn^I{{-Of*^!Pg`)#XAWNSQ?gP+O^?Gy^ihM)Xa5Dx052%?F1^GuEv@V9VyAe2Vp--}L(~nBUj8^Fgo(N>avRHU0z_xgMQi3Qn-+}K?dL9?rAdu|GrFU zU`tqOtztWEKhK3i7KSKKtcbVMnD{6O}cLb0& z6H6}+IxQ`V7`E}`#>ts~8m-t$u@WtoQt}-S&AP_O2Jt$+R7EiqDtxh=AWMDOK^?wT zQNqYrS$Dxd@ayoly`Me}a4Ro*C-pPB^f-`afeNxarcoe_9pQkb8BuHbn8|z)9o%{W zl&sO;-^3egehR6R+`prn1GLz#&rwP{3L42KGy4(<*m`k5JtT&-lZB0g9t?5VD2>E7 zu{B`}=;JZ04Ltr@A@uL2+bCGvD~M3nt{X3-xu;va%4FYBLDcwS*3;v`uS+%+rV#c+ zx~MNj#<4gMJ*|t%?8_mjW`A=F^oJG^;-47zt%#at++Z<%L+W*v7+9 z3Vf8E5LW@7e`=-NyU`b3Rx^(`6IXVMrM`wX%n#EWSOiyw$|N(R3{{naabScZr_{#yZi z0kjkZ+>m!>fEGlG=L;oM;o>O037L0z+*W`ey7rSC>!B-+D`&i^#TX|04I= z6e^*t!})*}@Baw}V`1%}a=C`HRxw}UA-7y$S!ukm4*E7y;vZ6J0^ZC7t^a^MJ?NX9 z%D0$1ejj}z9Of+vv|XS^7a&UIQjjgIg3Il*4Lg{%a97b!`Y^*ao{cv2YGiX8tb zKPJspn6c#z@Q-^7sQ_fj_ZQ~mQoUL~wguGw|&j-0vSLn3sTSn(S5D$*Qnx z$#1v*I}m@AqoT%{v&X^ScQ3B}wCQesZ0Y%c+%sD~>71BQLsgMJ;(Wpz@(xqYMkEyQ zE6S!q*5eSY>DI8L0k&^i^rKYOrZ%1(2R##X!!DN6*{_hW^m1JK3y0t|R2BB_e8BQd zV0Mk&h(RY3@*SrMv&iKh(G10W`T#n7*Lsc5I_(hjAqIIf>cw3~F%AikzbrHLTeoIoC&aM=jnTn9 z(Zg?DB$7q>vb7d92IecJt*E(BxA{nv7toKpAs0OxnCo>7nv-({gUH)&#T%$;7v=nD z{rQ9o_%!veq-=rj5No-{xgHqIbwQijcV1@>f$n1Tn!{%*%1lp$+3prTcrJ>2AdI~# zga=BaabC3XJLg?OVWV{T;gy)1INk13h9tc_7=?v~>s}JaMCCt}D2`&wf~GVse%HKHBlbxE_dMhc=csN6Hc>*XKYC8J$Hi>YO+f_T+X}Qs51zLiDXe8^ z!Ih=7MTH^of~7qZtHMR|p|ZLH;)9EDHJL|Dw1VJ>@s$Z6`$rRcCs(pL2N1NZd&>tM zhK$xtqd%VXBGF7Tpx1zgi@2 zc1LI7PdyR#l2nltzWW9iBCz6G2@DI;3M7}lmo4Ge>Srm%tU{dIP=f;X7L zQZ_{k08N$sMzZlsT?Pi7RU53%qM86ehr(}+H925;sR=Qfm?iRpbH8H%Z z*wJqJ^h{7vkMdw!_yha}gD%!_C{9`S(3Xl{2H&fn{{{bD0PT*Hx(N8|gk6HUnO|C? z9qQ&n$e41u$mT`b!mbD??6G7EaOEf91IzKmvqid9vuh?K$;hUQLvQ*v9k#QV#kI0r z^X9eC?8k>;Z)R`<;!#UAxsTo1Ma7bs?UVJ-EjCPU@?o$4XYHn*BMvMk-bB7}m#f1z z@mg^y&@a^>RuR$52c6m^W8RA!h}Q3{vC7tjkkTiMg0q0rU7{)hI)!P6|06p_pyLGP z;(PRM=#mL#Av??Ibx;_odshEqHHCE}Fn_tvtXA(87aF)*+-WB+$F2g${%;3K2sXVu z4E*xBAG2Csy5hfmB`&KT{{Q>2>MO}hNvB(?oVs#)=b2rGyHh?q+xq;}<WfN~B(9!1zOwL2UQ<_@+J`W}mO8j>LP0Uof&RX;@_8TtD_)wR zF%S%*Ou9JPffc`7(Wt;L8vbKKnbc&ZUyyl}4pPeo5u%KUJa<1gcwgB~>RC#j+{9Xh zl}kl5^JORCK+Ox4XI6*2VXUk2wyjw-d4R@}KV=WBN_}w6q}IyZ1pLsV5I;RZHJvzy ztx!o1t=J~GK0!V*3ME=UhARB@u``|f(+(8NokWpbm1*RJ7q;kt9&NC4zpT@>oe`}t zEqR$A-qam>UZhWZe$A5&Jq;JUZa@mJKPN}j?xH6yCr`oyoBdRP%i-hl&~k`pmuqey zq!8{aF}!|##1JeFobse0_h)`94jj~rer(!4oBbcWj5?`FW@I>gr4<5vgbDZh;;>lP zW7face7Q90VaGJ*9*8>Sdpd97)e5ohm4Kfor4I1YVjd&&1>wYIW5P=*@L0~@?jc|L zev{htG4=djS>z18Nn^r)Mn8}GOuQRL@f0bYXCXc$d!)(Qi2La#9L8Wl=3*6O{1V;% zCj(;+356M=6Dj*^^t1wqbFADYjkT|w zQ8Jz@GRzu7gkX=ql9DoDXa>}tEOEs(P#CWl4Gu^ZCVJa}eFT?u7(*p)r^q0z93QA6Hd85vz9K)b7`U`dBmK%Bh39Mx&U@S7P-QitoR++ z)0Zwo+d8!QOgcV%Nis!0sV@wlcaqE#hEI%s^_l)&SOyTzHyvv2~vA%L<*VVw#ZeLI%=#XEu?;WJ4GY8Y+E}B@Xf` zM8{Qf-KK=#TI7j*b|#-XSH(Xv{bUAUxwc~q0GEh`rGi2y9W6u7-;y$)gB0zKi0h*n z11-ub0LyKW8-p3Gf$uS)uG>#p!UlW9cC^>6uz%yrK^2xJ zeAM5J*uZ)WEq~4wuEA;1hgvm+(Gxq1+J$T2@p)3RhEVEpMb1=?u`M+Oykp|hT7I%D zhzc6wQpj#zyg{DUdNd)8EO&!CB*{-{nF7@X55xMn>Pf?&1}uQXdt>) zWlf|1Lh-Etkq`FA-l}_!Mmf2Y2<+dt7sa;5%%Ax;a(>Ku?K4|V{-Ul-hyR89@iBmI zWL_s`M3m3x*k(PZZEnIRY$EzwcmgH?y*^s*H)KwOE28coG=aui%zjwJRZe&K$zZ3J zt0JCVW;_%{cj)=sB2}_&P1!X>VKQl03Ry6KyR2EUlB}NqaSZxBT6M@8NvFE^VqAHkEGe=TH3LIr!254$A0Pno`ws zEKN5+5^1X_vqL)!6Xpg_wSIc$B{qaC=fzddMW4|Lo^T+&lq%zyj&lmd{karW7wS(t z<8~WYS(5GW5}R&%XogHL!Ba!#fp;`AGoU16QlESnU0mA5Ud%1UX3 zG5MA8c|mYu0f`1e=Y8{=J%H*5`eHr7=R0;5Bst#J&`{$HD zkWBwOL@tc}s(8PIbZHu~(WS~oC-WtRL0#9~ZL~Rsh$(ADL##cx`oIlZ;ei2* zBq&zrk2rY=hpV_27ec0gX^Q0c+THvEH1F zwGlDNMN6Sl!L)qnztk0KG^!&x%cBK5@^n}-8>|z>s)QY+CDm)_14r^#1A);~)*Ttca!(2)9#4M0BZ~c_pzh*&wDS$fH!{NmLS%VomTko zpEdGb$W%;~hs{B}%7Yy|f7144*{^}3z=jv{7MQ#PqFt<`~ z7O`Hl7U%mDhT0i{TTdsMugnEDxB~9L@LBmI*)t3!)R?(tPzjma13U|iKm4cCX^6w! z7IRD&D7hugUla&USi(P`*YY3UN96Q&QX5h}EaYDMuUGy*_QZeR84uPQH(%VIi2<*L z$p7i5nA$sdjN?cXLykWeMm96&-X&Z@7)Sec%u|hbulJ!dYeVbzqKOsV8ecU=pnssb!bAWu@0kX{Tx|U$L=j;0v%x zjE%M3S=&r5ogsgFU@lC7SKIs?dEw}Y7J0_EPJUdTy3u1yazQrk`qObXGt|&v#>)}# z^}vj?4xw|*Iq2WtNmXN9!y4V8AWx@Nzsrb@msY3X`@ICr2ROKX`$YWXjV|<-e zq-7Lg-HW_!vm~_aK!3!{0K+kls=gUDrH?$iAh*K4A02K$zeF8t&DRfGkDqx>i<*DN z>?;XPb8RR2~z)K_=T0C@k6f3A4Z8a#2r^PBn5 zz2ZB0S&P2sUbELm=b7M*1_$Fj6$fWxBrHft2 zog01DwM8E#6^<;`Ev1jx^v*|e9~PCxlC3g})uY=(qg_ZZB&SPr`Ez{dgqu-jfWn&x zV!ct)p7*Pel>YxVVExbk-_2JAg;fJK`~2N&4qM5L)|8~p8`fDos17kObl&&MIeq^z zzZ3iWgO06ptSEOqx}o4$+39`T*8QkF@t1dPTch#izb;$6_1p04k?>N>*79AOw(_^` z-jpb8XUmv269*}T8bp3#l2ldN)`1obWrb2Yv&=%_1&jA@pD%Hyk9PwmHI5x;ADdy5 zR`#q&#)=7vZXR-^cxg3~e0%@?+SgRr44dtL{lUuCUL&gz@FXJv3?W7c=7;x8_kY{Q zU)CTH2!W2>BZ+#g$9;T!3@G__MJvlLfP@R==jVGp4XN=cKm`Y1Bx12L@p6(5(66_G z<1k1hqq>p&GVAvx@<>{l4|(ca4MKoM&kxm{oFDx5^5sikjE2!)^C-3DKif4Vu)TZt zZk5#6$U-XImaV+Q@4eq6dFk!`#S7($@5%NzU3xkTn~`c?&%A~UbkYQYhRiTEVKcv4 zAE3~s)#gWz^vx6Lp4`w&!_key>Jn&Q+VFwl?}kF-f1}iMQ1z|K z9g*>G{{wFYE>q-#2#a^VfJBUN48~6}z$_}x1^tm4;pxBh<$^QcAcXldQh@>Tlf;k~1+H4+7t_dN=f;+K_mX`8G>f zIQZ(zY8nU+C7AzAnQtq_cXV4K1rzNV*&wl3884ht-g^b5#kT$?DA9LF6>1jFKEf=8 zUX_)JhaBtb9DHihwe|j>#v0ebRQVHbue7|GdPn4+D~~YMvHfMf_on93*{5&H1QXM1uMmwK^{Sw$EY+foq^$B96A1xOxCiIzMhF{lW0pgr<%8Wqk zC+uDa6*#qY3>FkwyHkJ6Qs6CVeSQ9RLCJ_l3WK9%9?5;0GJoew>q;A`dV2Eb5JjDCqEW*6neubf*pBYf`T3wagMUr1VD`}w zpBvob{3qZ@0p46OQWR364DurwG!8*)tk8^3m^&)ux zs))gWitR;sWi@xF+qlK|6vsfqQpj)H#JseZJ<2l8((tk}V(ajgun4uMj10`zP!{FU zyny>xOs>XLY&Esh9q1VBPj;Hi?(+^*^U~4O6z-LH1=K|^&;E?gNni`L@yPefH|a#Q zWa%6VL+yF*V6-vX6m}0Yo83yzajy#66nMTXVNCbSr=SgjF1hR>0?xEfCNV-qLJJ@F zFZu9<6>aOVeRql&csBan>jW4nis#+w!l)&bPenb=KQkf~e|IY(j#KtDn%Rmf1E4Cj zCdTUfsa~}1Ry>ta$*4qU;1RzQA~GF6Xyv0t|1M&ZFG!8~+o~tRwt;X?ho{Q(QFhpm zccTw%jE=ykk)}pmD-jD&sht)uhC-$A>j@Y0W2~*Lt|zs5ZTIO54Pmxpjvh%n>o19tN&1B(5p^DpNw^ z@px`04hMapw+#svZ@$XhZVmJdTq`LUAXCmQ)jb<9+ZtK2QGTw{sQY|H$qwAoaCJx% z&HZhu6oP_?hr4ntl9m<+_ZPV=$>C6%o3AgqQT!*}$M<@ADWx`SeSxJGaT7t?&7~b{ zGQ7q1xOuzk45637z(*cmDZY3)(7)B-+sW|kuwv4R)`poWnY?kS^MY(S8X5Si$A~Y- zp1dv3y%Ts8cIAYrhbOnF=dPA~N6|n0i1MpbfgKrF>Dj!*nd{gNIk6oB@nNA&PMCCn z{(oqf{}qj-7QokSUAf-*Z@(23H1_|uhC}`RzZ(BPbXwJLp7aQMwW=Ke#P?>I`}KZE zoRsXT^f4#{AKkKbZQSmC^t|guF%8E8&i;Ke1Q8H>ALXS(^}Xlst#t>_4WS>RzeQWp zQ7C?df+T?Rx=f&Wih7{tRM37hb$-C+)O`A2z9ywTwNo7j%XP5^{O^p_=+str4m{Az z1^g>jbxS4ZY?mbCvb)4epK+oorbDVqsG;5|s}$Io>rQ!(%ff0ZL)Yt0g}qu>@R)i8 z4JW*Z8PiO}O1$3J7J_g+fyFMtdAm+>YL|K*%$gJ?$30>-;UKmEytluJkJ(~tD8UhC|Gl=3o=vKY7?x$%{;(UIMUnrJ}mf6bq=4 z30nb2q+Sas+y4_!-s7gi+|qxAM_kKyoAWP^YgRfwF7J+Vl8x!7njHWK!?#dBr?v35 z5<{cFA##0P)}Eozk**dX`~hSQILc0MCN_5-@`ayK?KDby2r{mCZdv*Rc_x=Oj@h^3 zW2-j?cXPTtlr}zs4<*Wdgt$8k_;!#nub%W)m^x0dXZVN9p9vWq>JRJfwIrd{v>Wh= zxV4~(xt(RQEydj3D3}3Xymj6&B>y+C2JdLQImuuZHEE3#-<7&7#P)~AI4nz#gg~8` z9yzqkS=7tW2Mz6&r!!>PJ2N*$Y(=vU)aHUZ+c`_ zQt)J)yU+uZ-xO&82inN|x7D;!i$^|X^2l4Ya7!Hj!sq$Seo`~Y%IjIwvEI_2X^ob} zV=;v*C(A>i&UNlOVpqzTUHE*q9mAFQnIgE7KX&@*`%Cp9Lxv&l4L0C|2q zauCmmjQNWTdJs7i)2Jkj(V{v$_q!*xy3lt2WMet{uGQoFzb=-Pw)a(t>METfP4`(I ziDtX?ZDXmfjiiqwk^T^NCKgQP42IZd;^1HC33IfT1&^PQtE`l@(#$!Y-#K-y1lI(0 zOCl&ZX*-M7)_!HV`o--Uy^j#hm74W$*fy0Uc%#xD-o^K@X;F;FKRVCHva~6Vi=1ME zs29QcizlOFk%rVJiSZA2!x2aS!NJ$j8%;b8Y(R1w=&Zn%y}oS zg#h|xufe_)U~8zM%0%$9lBB|Zxk5dkr}E=-SlZ6IZQQ#IC#|Qzav3D;bLoW=Y>M%P z7QzrOb2Q3Iq42ZBXqh%1@5qDgmgCn+GmEh^b?)Q<=&N1T+D~Qf_a9D0?#rA)=%r>4gCQuTE@i#eAd<;n}ZEv?t6xynOEa z-?aelx_~VDB*9>(h!9HC>a!Aoa0a|z?RYSxsXT%KVHK=pkk|y=5Ndz603$?Vf1+TY zkuUQToY`;*0ak17LSAcedcbMfDH*@4?R0|7%Mp$aR%cG(%`&-2DPxfU_e0<7=P8fM z2qc6eqsh*WDqEiR5E?*ch>#2qR*V+DVajChZDY8wph;cjxuH444EFqYj$)fYH&Dh<3fQ1J$KW1ljVf8SpkFZ87^;%{jXg7K zH2cR2)9U4Ka4n{j!3i-}8$7K>s@*zWrej~o9Xu|_K-F>sV}?FN$&YXsAN|%H=UplU zOm+R1ux$=)+~}J5(=*sFpx+WufbE_Tmx+Y<3xdK~z06gZ)(|KW9F}+7>)T$-qqcZE z*#5Mch~~kPCD>@bd%B#(gQ*u@*?F=_=l5YG)|q7#Y|;hyHD*wU!_Dc{)khc)xf&8D z2_dDI?^0Dt$Q-2gBXV&g7XZ>ALx7Nyl)stEa!cO>>b7tC=$EBl<5Jy4B%ogpEKJ!F z!EqzJ#nx1bU+q8RyKK{Dv306l6`2SFrqf4Uh7LW33#E3hrAFXbHM~%Mv2W|B=4Z6u z;Hw0uUUIuF*4LsJfKbeJCEdP>^0bgE$>81fFI$5-Wec_sblU2i5W#78yh?s(UO15O zC)DYT3^JcJ4MY&~lHq@R{b}?O^kbIfV1%3%<%c8vCLWZxmpAbvtF3pCYHQ^Q18dkA zA_@jO|7yEHKOX3#`#J;kC@16%XJ^m{>EYc7$TyP)+3YaS%og<;6g4%fF`|@;+e_g~ z6r_p#c$B3%G_4`&|M}#uM@j*qd9R73{_;a zfl=&A>WK6;I=mCyZk3zUpKKD8Cm^rp9StQ@Hx|dQE6ZQ8%smiU%?gZA z=n$Kbe|jWEmcW+CIr3TvH-l!AHc@{S(-_`T!j~I7H`u>hc67dIvLM3-h?#A;{r zZ2wr5#_<`dC&1|Nz@0IVb8jn1qS{ht>Z?$Rcfj7tVlZHal8@!T( zK`CRBoPjMZe6z71^e#mz=!ObHAmaw3H!p-K2tTK>H!}k38Q5rP2ZwJrz7&Qzh%=ay za6h8GiNHhZJT~QwoS61@cu85TAZ!`k+MmavPQOI;LPvHmqG0CCKXnn+l&0Uj%Lb|> zE4iDvcKzbnhOAh+>+ty;0i7A69VtUZTXIDdQ9f-!`niMZ^~&7^w_2auat*afx-%dU z#tF^cxy#O+Z)r}9BXNBBRaT$>Xj6RnDx+41-9wX+n6ikdJI~Y`+~QcaanMfNw9i@G zQ#U>$gtkZ}Gv-0|4c>|$Z7KkJpLS4oj$`WU&m{0r+%9D0CUG1o9nvXtN>0FhrM3!0 z<0XHprYPa-{p^L}`V2 z_DtWD6t^cdJro z>aIun^a8S5J}kjV3>e4l3?IAhil9h>kcwjZfC#YCM?PVx-38S*nvwj6M6r>YR6&T1 zZln$q94u{x(rrSA+J;yzp+nyV`k_*bUPfD0T8Q>kJ><&7kMQo}NlJ-TZ}4fVzMt#0 z`0G9;y&+~x*eCgNLQ?@dvJVRg24>e7!roaMOn>rWk7Fe|qTrEQ||Y!x)KAcNW-jWr!eZAk2{ z`PINrQB7G%Xo-(RWeRFceNDN()lZ>VN9g}&FnLGjbx;F;LCW$?`~+i(%gM7?8(CH)vaYuVxJTV!6!2&7M&~k+C*rWX5J}Yf~=PzyDQcoWaNK z3G2CcVk}h`g5~I5U9h|~Bu1hB;88F$-&z}ML5mL;bO{`JV5;1|H+nP?@d^&@LORj` zYU^}5p$^fFdt))R9q$SW7d>YxvdU7|gl>vzj(*>vVXj*k<&{K#goDYo8|X1J-Eyqw zyLn%RKHO5*vxXl>OJ{UhM=eMjhppWo%ezd$EzWp(4=beyDd;*xSFPKLSA0HYgzMjrX3x6Az7NK(skZ~V$90)NJV{QC3s;z7xY#p(Kze6Pj^$M5d0#IA)Izsl?=EAT zGM7p>&KyuPe(nXA=&ds+~y#XS{xhuTk-g;f~oGCXld$rY)i}Y z6;-105^Q`iwK<#uv6fMn9$W^PzE35tQXDCqoe~C&sxhu)FJnPR85VEE=#VgBEBm2X zxlgfoEId{dymo(JUP|SGy_s@IvdE`@WSLd13X5 z_dFaaav#C}q2@_QFK`&7d3hCfXWzi7OljH*FlC_W@Vm`!i%sQTQGpPuuB z+gos_v-MgG53gj-ViW1BPvfuc|FBa#jlENbi^lF-Q4J}EB?0N~AnXocUsM1$>K&MP z$m2}Ni|CD5k4TF~*@r}_(CR#imhyPUE2W=6@zEQV!)ky7{ zxt|(I(WrlHz*A?bpD8?zwEtPXvY{2GJh&%w!;GY=9sAD?x;LV}jI@!T*`z@_*ju(H)o6CH6QAqO%%pB$ z+~R9!tIu2+SO2O1&iIW`!}4f}AS-jc_#rixxj|PXSJHMsCd{UooF@Unx~!trOvW$z zOTp&zOfwgJ+a#=>@~0>=SawvnJ34PbvU$He5-N!(>36!hCFEtZ_wLfrL{i?jcN%wyhM0=RqD80)T4Zoxj8D0>?y8OFhy)$5Z(Sw)45bnT3NH*y$@kDsZ5=JC2Tqe+9)x4;W+FG5V%|vb zpP5mzhEV{^3az-;_vKoVbBWvk^#3 zSD}sChANMAo~VcDsWvBCZU&8?&~EdZnT68oe9zcZsd88Ry?efOew(*!=#J0N%=~fV zpr*?D`2W0&!ldG5_T*|D5*ssaE%?G34=pHGxGfa?04~jlp32Q)0J&^(HFEfG&4*${ zi<1nh@oHdc#fJOU;`Z7liNmSilJfkQ`A*BEHRe6?(iQmfC2_>dj~O%$LzL%vb+LG2 zt>;dHS3yUqFQ*;_4Zg=Jie}G2CjA-VHRTADZZ;UX?u#6cyuF+%!NIU{0c!fdFPV_X z6cC~w*M2flK4DGJoiRHh&)>WFq`pSuc9GX<4cant_KlyuiIaoQQnWOM`UM~}{)NWG z%>QLA2|a(iXHozB3#!?5oW7mlkfcuKQa*h{4w=!N^)Zo~?Cue2cXDSQ-?AKi68gbG zqwVv|)p_9?<-u=1b!b;1UwjYXcxakj+_|k-igmuz56ocm>f<`)vxrYuoFnJ7qn*(` z#^doO-Ox{%I9uoY5w-TvpSxg!ZP)T-qG!|&#twjMs!`n{pSBh2FV9aD$Y09PI^zwM z19tLL?s}_J#5^uux-^({jQ{pRmhnQBu@NV|#_Klr)^8R;dJbXa?$L5!rBKJejytjG z)`|-@f!ihChaQ%t&6>}L49j*C^}oZSyUkzC9P9nu<)_icT_M93&q*hDbXk<{Vw%l4 z!7rh^af;!~+*!m9hIY1Y){MK@F24XA=3mg3BoUr(0Mc8zyA04KO3SSYw`#lZ9}>00 z$;ZVB0QcJ`sdeV(rI}it{}dBzOF`x^wrdgb!>;vsYVRQ>UztLy1xxkfrD}7UtnF%IUjXufcr~&)D+-12S_e!Mm(=0Pnd?$KaEX1Zg4#r5= z;TF@9+g1k`SI%ew{r7w37_dSPRMA&hinPslk)p->d(f_+!w-sV^;4k#*5E#CS)(;1nZ~e}>rkcwX>hb%|iZihiQ(ta{c}P52EtMf3!9KGJ2sr^e zyewIa2$;AsPbH<%gq2E-ClkXd2E{wZFZ?GZkHy<@<(GA{T=2`BogS1?`?9gZ+b%6x z&SORo^3DRqY1s_CD_)@tX|j>)ET1Fc*7B{%eW#PK?-5E!iHQ z#6HXcab-!T^@8&PwL}%4; z+Vzhd$Wzp}fVEzf(sQiFpCWbVJ8C^9S+PBP_)uL-Xj01dWPotdjiL>W-Iu|dw~_H* z(4U+)HyzetShrIL)Vw~Spdm&aYJ{2HwOqBURhCut&OB|LBp#%sm3>YWNV3^ecG#jd z%m7Mu<_w3v?M=McULoMRU1A&W+XsPeL_GiUvVl#i939n6A`+$AnxCCY4SA!Sb#dbCaOIn&~J&D|YY;!~j09 z(sVX_F!CUqU6>A9@msMBDtTVqTU=T;@;q4VKZNJ{+MF%eQngJt=WE}jq$E3P`OuRl znneG&`dh{b>aKuu(Y{lwvt~4R|Naf>%KEVF>2U@iwP9H!P@&wC?d>rI56R~8S@XkQ z2&mT_F>~D;luMJ?v;F4tGpW^MMbvPSh93u+Z^ozcL!F{7nt^i&(xn^OLHqcSX5)k3 zGVwC@S>E@><*mAC{;G{~69vxvOOr~Ft)BYjLxx5Nu+8`rP>;))SLR#`x;J_Au#~F~ zv`Al%P)mrJ^OZn*r;WV?nfqIe$XeuqKzYY-Nj>jw(O!)-<`cJOdoOTN8X}J|4^X`` zX!6Pd)ruCq#U^gI6%ejc~e?bQ?t@$?$8aP;X16fsZ0)-@m&%zV^u#Fi{jkuEsA4o1 zq;!@roXX>_hv8l;!uXqa4>IlSn_Q|58u=Dh>Mg}@?>AknCI`lCBo?h7`m*{O-TS7K zv?<2z%^h2%&Xt2e-P0Q43BEiLiS|CYrsG5yf5KjKuZwjA*E_Acv^U5^mm&LI+V8|w zK0RAL+N)xt(Nj{nbJy*szE>jb%Qnjh-ZNV6r?rAY^@zI^|E{7J^pCT)j8vbVPgytF zYv4#pt+)(Ah$XI`I;{U>Z18*0G(5FI)QrTQ)b%4~wqtP&X$hT* zgdveipI4tcBk_7_e6y>VY@HOA~)Ew@?hbjt|d0H423~wZp zodoN}T=O5fip|G->-_>jZ6a)RS2zg=;sN=Y@NHz{A@SKgOo;4qgy&w1*qo{O^T{NK zzHI#9WJE8Ma${voT*Jle3OwLCdN6<*RhO2aeq`)OV;&OeJXunkV9GT7j^Xm{-&}Yd zKaXp~U$&05fjab+Jzt+Ft@}x+l+MbWAnY~t2iQ#mD*v;SDNWxt&f1~oTqUNr9>(~6 zZk2wKr*Btu8b3Jk7SHZ^+ddv!zOA99Yx2Dc%yPr?-z=*ToY2rD3+@HItvlx_7=OuN zTTv8S{Xt6|oolphfe~QO_JikWRwK`8UMZp@a7ubbLHs%e^=IXU4sIsri1{F|xoFie zugixH#@ToaaJ7|K%gj?-;88k-vc>SzdANm}C8ykAHn5@QG3Etqhh${Q^n(+h5% zz*Ov19x}ATz1B0M_K?)F_p{BCtskS&ecL`+jxS)FxEC)g0D<^5<>Lxm`EJ2q;l8&Q z94ecO&X#ZUjRdMxOl;QWT;Dc_#BP_ElwKwZOSjY`bV~V)>4;ee?6JBTIP{?{!+3uZ zTHy+#9|kUNMbaD}prFhV3ZN8nF6LvGKlA z#vdIdZ%xB?!1Nz3SScOew*dl=>iMHq)Nj`^iI98hbv=U)MIK_(A;U~RphIi3jEKO^ z`FyL&AbSrawDwoofj~gt^I^zY=@tqdwIUL#-yBI=UL+~(15Ju_=07ItcBC7l?$e8~ zy1mkaIA`_9(#b|b?We44N6SgFj8dN=23*wgh21Wt^{}lP%_y8QxeXn#DbH~=1dh@y z4_r2NodlrW*Dy!LJ7qPqc>{hm%Q51Wy!#F(OS@Mq zeJUG&1NEi1;_x>LT0WR+Sk_1P0!#K_`j!@sSuoKr zdiSl(#J+F5yE#vj#6N{S|55Vd2G_z@hO`Ia$v$coM!7>uX^cMvH}ig1YD$Mq0vt_D zUUcHRW=02|0xPk(g3_YHUIKA8q3;1QABpT+9=vUYy(X-?wz4+eUI+=Xo{St+DymBJ zQ0aQj6!M~35)p#|FIV2|`CHs%5zn|KG zE_sVkuvvz1`rUeQe|jBMCxd$Jxl^(m5JDP%Pn9?sH6c1*8KqC-JkTm~w_L;R_T2Du z__-fj45&_(C9kZ*UwdYQn`T5SU11A-cc~OKy5jpj%)R+NgAu?r2HNZ3-Mm=(4N@@M zCpbx}yQf~fX*m1cP(u?a27I&VK`9yA-^U;s>@yjyt{)*#YRq=UcxcVzukZ0vs=_*E zLd??d#h%jnHkR4cxBdGuEtL1>X@3jwc;hq@!$)eL+_G(pg_THQzrM*dds2@I*!$EU zEO(cftCc@z89Mq0>aFGQy_GGfu=R1%905B$%|3u6Czt(2#=A1v-{j$+nQGlwrG@5> zRG@;Y4Q3o5hGp9?CJz!kj22i+Gqyt;S!PLEU`21xOiSZdg6&Yb!SE4Z$t=c~KeLlcLtS?M zSivvbg>&0$w3>0cNQetJ9iB!Q2p`VaCxnf(VjzdtxEr#tHdm^#x zOCb zobtt<3;`v$jAS=f%3{SRYfQMyDzK>m$<}{FDc`i(x`H(8H6kl9%oZ+|?VEukuBV+9UC=?pOP^PYL~ zcCg8P0=wgF6j4f8OrW}5txXgm=?4-V-eXpTPbUsqm#p5}3&u~s(I z3*=TBw{j%A(?UYXx3(@Z+Gw0E!@mMo&j8Mv-IsPR4A{3`)?zu({##FFo2JZQ2j1Xc z$RA83Zk$Uge+m&DXmzEM#~f<*gKEIVYGdht+y;VUM*xWXMFde7P1kchU!1W=biLZA zhSQ~E6q^u<3v0p2lQJd7h%4J}11=V;h);~lIod^s3C-Qi{ohIrgW2wv$o6W^JSib+ zSIPsbt~Af8_oZ!o^ou9GoJglOnnaS-CtCES-7S%O!k;beb0qRQgD;aGrnGG5-hk(9 zr?`3MFj3Z`wJ*V~t~d8Bo9B?SYZr@&CC9)P@|!76_CVcv^7)e?!hZcVz18Nwrimic zbpZeE%wfhCK=%bm7s3R0v0~!yGe7$;XSN8(QIvo`R{YS{E!51EkVBMUv%J0Ab%yq+ z-QMzH5I?yJ?3)!7-y2$5y8}b(UV|I`(v(-6P=ww{9?qV84>ytjeO84M&n7zBdeYaO z43qTriQi2H4qz9ES4p&apy~#^$cc$+5ZBm)e)W?j5w1ZZ5Fh$9Yt1Q&P0nX)|1#9E zPrJRApJA(Sg=A5b$XDZ&B4DnB^X^jaz1h<}K+X*~QLYDSGjR=~iymxz7C&rtZ%)4q zJIR=)wWoXiPR1oY9gArANmIe@4y&*>ud(-oND4FB=xBXWelRgRsexRh_sXS3TdQ>s z@jnIf-=xy+vBs(Y}faYD~9w<|AjErZ%m#v&Mq zGOENRxrnS?IvzmFyf+RPpLG3SO{0>J{FiY52Z*8#K7LSKZ!&ZJB`cbp&%el9G|YO+ z{$DQVKLKQs*S4gpxPBB0C|^1)932zWdEv{KiZ4AqJyQ=ZosJg!lfgXd<>4;yHO+xk zRntV4cxga*qn^d=cdQnUS#K(}iNk!j&)&Vu3dmf~QGPauo2oVtG*Xf_Kjr6s`zoJQ z=oCk9z&iI~ILqe?fT%so?z2g^_uE<6&=yOykJF};j@Ul?aw_2+GK-XO{eo+gnZ%Vq zv-P6D%&FyFWrS2>olM{JY9IKnuAb)c=ylcL({1ncyLZp~ei2I!^D!!CRyA;r`Z4P< z?oh+909)tz*qx|ic`f@m+rw<47bDo@n6Dq)b2bCZ)H8Qvf5nR!mrKDR)aC*FG2w-A zWu9WpshjLpgZI`y!Zav;v%ck|Q^(t;OT~K^dO$OT)B1UWKjByC8x&Sc*50^9LY1Jn z`!AFI?c>?kGT4(sA98@&Z^`uskDmxRXo!+`m_=-O0nRrsb!q=oLrM0{(n_H1zVdq> z$dew>U^z81QOjT{{~0Oc2&W?^PAY=r(aQY|Rdw0)7#xy;=2w5gWkOU`bv>cSwqJ{T z>OOmiTjgOGSN*ShhgJ$4jEAclaF~=WnxcHe%4vv!C#P$C1Hl)Fadu zQL1n|A$jR`ymF~~Q!DvuQitK7pm6$Y^~Ub)qVZyO+&^UMdK`P4D779c!~gJGvwCx@ zs}Y;hX`Veca-dD8()%;~q7QwKl`8#}8&<}lSIO^|M+Ep^>hLNG^|h!kmk}7cGr}+L zV|pamj(^*k>}ExH6+E25$r!Pp9I(1V2@`q1)>!wP`9!=Gj$njdXn-v3&P)_E1CG*+E8^pZ&kf7y8o(SqPj>Mp@KK=i_{QZE`Y3v#&G!eTF0d7IIC&M|v051>gQW znOy&?1}e$(XNQBHBHh?u)2JmEQYPiH;8(frM-EZTI{GmX_pqe)4$| zLk=C_B%z&))NNlIaQ% C5SrH{nSTa2N+YJkm_igXTe!W&x4+6~ZQMw#`3a5LyY=Ri+s|8nH%%SS{8?_#d%e?>(FH*OrgL*_d$RXJ zz1|3Ta9p}6bCrh7$Y7(S8VY7Lr5VQUnp=g=Z+tHWAJrDhqEhJrynz!m+@wGPsNv5| zr#G7?4eREhTB{(nzgBi2W$KQ@@$kT^vk$@$EUwEeA+4~S&^*;P5Hf!UJS}H@K@*{k zl#~vx_8XT&za{>DJyx(=M4TjI1;oR_!uah%s#!`LCmYC)^mRMc`bE8}_Hk{HwrXu= z>jG0T>w$+>vqmY5-ZA9=y1d?45MPJb42S_l?>XOhz}T0^+7GO=cu`g82{G+gI&0Qv zb^g>hyMAOLw`p>l1mw+dp~$7=(F)lwm8?{wRzfCylQe|XLp0_$p#tUrw5;B46Yq9J z2`n@9c^S8-OnT05O*aYSj<5*-`=0L_)xb|5)5=Ud(iR$T3OuB~|H85KF=DyyKx^rT z8ro&8uiw*3Qt{193DAOzl^s;N76oJ?PTXnx2VfZvoJ`*zr7Ynrs}Rh*BVO+_Z=S2y zR#s#l2U6Q?gUGrZN2=LHOA58X=CQX!gao;xIK8&dkT24m)Ebw)S7^u8PB^@OhW)fV zE0(-PPn2!V`a`_&w!o;JtE)p|c~Gs4&kEW+P}h@;O-UudV!XUQ9}7UX@&y;FN*nru$yZ^8=(Gt_` z!CU+n#B-+0=cP)zM2_gC1{2$}70#uya{Oi;RAJ((>*{XBy~D;hE{ZP{<%v`OlX6VD zMH~b-wqxyX>qouYfDWFfeD*98Q=%@ zDP7y#@3^D7e>`6fMGy<#ihLsxyVaXr<%VRY1y z@IFxu@13iA(+UY+MCbVFu?J_LWaY3KihFP|QB6kDyHWXfyQO$%ldIyX;tQmVxJUmK zc*wtU@vXtw-cRP4YwsIexutdvw{<-xr9JpcU z1!({DB_G*gpS*wSHX6-VW@-6c*h^Zv$g$fXm>l4CDeRO8#@6ejzP7S599F@YrJ?8D4w=^W{5|~|y4UAp@uw95teZ^P@M#2gHI!D^^{z|qr_Y2Lwp9tt zNVxWX{_WT_Z1$lg_!w(Q<-9o|e32Fy8?eK6w2Z(>gTAS$v}C@u(W=&2emq1V-=EP5 zUVwgpUB|~9^0Ew&R*5uv?D#D%)%V5^*LJCeN{guru8f`<-@ROe13D*AX`(=Smp5Tc zl6*2o^3*6?w=Q&-?hjIXz!n>*FvHlvdWq3S&JA|yy0^A6OWxlaUzqG)kpB|4&llC; z^=!KykyUBGJyjv|DR05r6*XgjEd_qWkBr?=mA3#8H?}UU1H0M zJA1mF%2)4z+tWd}r<_0jY3?wIMcw>`i;UWwPQ;S2;OFDOE^g-nEOqDC|+i!(e)e?!E#Petvb9|e3szi1@czX2; zq&FD)GH&NeW>n`7sNSKqnd`SIkMzDPNYm-O`|z#tomA-24Hf~bnc^Y-?i_JO_PZ}{ z)i?7b*K47Cekgpcd-G5`y46@wRN=%&n5bWT+J!SN6dr(2)GvK~b9S{N@@QgHod4Y+ zsi%$tQ;$6qaqTiH2A`Bqo_kyIK4*cb0m-?W!hrV{ta<6z54P z*tu_cN14Xfz97bL$wj_i^-XV8+C%|CN>~Q3Yz4$N`g1sn_N&d#3={G`aUUDK5c_e% zq_aw_YIN)D9slhOnq*d_Y!l&?^efFvAjhu}M>5(jZ2wZ`s21KnS}@qU{Yqc(C402e zPlfdg&&xk<*gjZCv;s}vb3i`(+^RV%yW&Xz!82mHJWo-ROCQrN`@(QZRvM};X# ztoI?y3NhCZpXwHh`^Gjq&BH-+aJZ;Ypjjx}DuIL!uoe7X?*^wU#qN;ksP=o6xRX`J zW$5m#IO$oK&)!mUW?R+Z_bE*wADJTfqSq^wabvJ#+=K%P5V8F`efZUCno$16;Z01R z=Hj=q{`+^C?8^?X1MDgUeyxky9~=@qJrFU`F^Pp4Vxgiq9`KpJJS2&X7vidyj+k66 zla*bd6^lyHGp98dB^14v&W8mpFjz`x@y4VlZzFxVH+=&jK=Dbylz;#8HjH470K>nMId1 zmY8s2wrUQKyhQ!6$PeCqaRm8#gCW6R9e_7Qn-}ujjNIf%c}&T}$;1q@l=Ypwu|Uz# zfSI{VUJtwZ{Hk58;~Nn9$~+4JH+=L?sN9{9-*%7$I<7s|X|bvj*(>S&?qPaT)b1<0 zDX=jF4ErmDOE&Hvt!poFI2Q_G>U!s5tQ4?IxHD5FJXdrxc^vIrYp*#4}zI?Dho%bcS08C4!d|f;L(tQ zZaYV0Z0EJp1=!}l2NY%VlE{x)oZ*91I{!E@L9#C3Yn0M6TTLfEnTKugtkajmJ$~8w zkm9pqmzOp+zzfsmZ;$*u`_f!f#au@`o3nHCrAA{K_r+lQyrqe2#*_q(TUi_NeQ=>Q zAu5yR*{q>?;->X@N*8N4?fE6PEeci1$}NAhjs4Z4T)FC;&Ar#6woHuj^Gv~ARvSn! ze}d%Idxr$9??})l#HEk6X?w$FEJsz*8hfw73$_M6lfLwmhNxrxSKb^$YO)s8N7Yu} zHA1sExyKM%CzxB_?F`Md#5CM?S(DdecfUW4ai1}ef_u8};cI|p9_P%uf3*3}BifH} ze+BHm5tpQPV^g}}gT5wWS4-HJ=N4eYMprS-FE0HC78L^Yh2P% zJXB-ktm+T5&^(?pe%s>2?7LO#*->Dz8;>~a%R%%e}J2}TO%@2 z$F<5-Py7CgddN1Zu(!iOMssr>3fDe&^63BlpB+RPz;zRL^yb^KN?A5GiQIp!zBHKp zCkrb7t-o2TFLnnoaZ5iuFdBJCHgROcq;WL4R-0Qkv4;Khxp3`{uZNwzmA|q*%$zdV z46M7XxA51l*6qoJ+>@_0c-m;l%nR_7WHpLX<{oD7^5`>iQr7;!k%j#JhD z`RjHK5B<8GS<2p9XXi(+q+SX(hkSRpu6u$M?AFq1T8w>orgzRRff4pp$xz z%~{O!!C}v47mb`*0T@h`H!ezzi>w&G9iR_{v?K8O$@^TbumX5L1jFb*=qI&j8^gr( zxiL4QXO{jP_MH2kb$OQHy#SftLp6zc5c~!-fBPbpCo#L4ZGPcIy|_6Qy2E{XNvIuZUOP82eE3k#F<(yO#*=&D8?|(vvy$ zG4uwmmy*qrtB^!|9RWtL_#8h5E=!^r2lv=Tzh)Z`53M&uD#ig=3V3iWESCHg$WD)b z70D<-$NvRvrvOpL6We377ozeFOe;OHyO<*>fnhkd`8bTQdfaIME7pK=3GV@H0vhCf z82+C}&l=OtZtL#CGZVUnqfbbw4c5Q;_||o*A0Q% zpYTdCz$&G`<|UX)JHCWC1C&wdNNmO>g09GV*iw!x6D7r4S!3mC1vU7i?ifwZ**!Z5 zU=9RtksIccN7-;>HJ(L^XGibWHvoIHjRN8L0_e-Mb**G>cMXJJVpcKX!)(QezoS!f zg5=lRZYCK1Zua>Tr3QL%02zeyi+`qgx;h)t4G$1+=^!L5)8RS2`Q7et61kS*Y)3)W z#6cHovhI_9x=2>NDV0ULyU%?K{rtvp-2y67?vpVY#)dzPtBP_%T*jpaWHBNwXgdRt|2-}KQ z?16hTUs&f#D*OwHcPaD?X41k8nDhAn$a(96YVOOaYJ3 z{qeduQc;=swkawlp0hM!L;5u0^87~|=Wp0Z0++tYwj2ur^RJn1CDyv z_9?#Sf`>}-xb%vG9j%Kwt~e+Jy$gLkq%RGf#E?Ns=G4T&Mi;vyBqM&xi%&ngg z6Y>lD8&o&>UZ= zCZaEMeLQ1=s9ncMCkx-_dd~@DTdPV({7UUcvxk0WUpXL@ETHgKsD*Z~rMI!Xs88k`B_<txb;I~{2#*40Cxz}w=l;TE1_zs7QMBXF)=jShVN3reB6`J+wSf+bSOCTFwJyB3ev!`le= zD{2kZnUSBq^xTS1Mc2A}HyE-zp;PQhG{zJjqZ(Ggy%>BBVxT(smt#4YZ4;2CzxOvK zeV~5bMudEfGT19{zU4r+&oax?7%enJt0FB$oZBdRSWXtIA=NczQoBpwYL~xcMZiVE zv50FiHOxkGaZgNpXG=93J)!Wu)ohATy6D=Kg{v50ugR6mHQ4Vj6nq@BE?Reyc=#it zYs+-G#=ic{0C4qjc^8lOF6UXGRsS=f%FGL5v*h}=@m^mnYyxRIgeMs@XzyH9qTs#{sfT4oai8P0=bEQ)ON2{Ned*H&Zj`HDB# zlKUq~yB|`(`v3z|PvKy~m(*3z0k`tTVe71L5#S|4F7EO~+L9LM5?m zszTpTxwpAq@q~@C^+Rm*n~1&dsLMe4O+( z5}amjrD@6vlve^ZvzJ+C@6%mHM_MZVC=soJpN@APlvK&f!#3Ww4voD=r^El!jOi&0 z;GB(*rkT9OJKojPgM&`z1T438&)*+o+4Q9Ay@& z05m%MQbX$*ZX-Z`ogD%XgsNF{?SyvDsUTDLv)+4?4zwQ2WREB&RVR1f<6C|eaaQBp znKeR+TOJ>zJU<5DpQ)NhpN)o|Tym+CD!P{<)gLV%dt7b~&ahz58 z-KgNQ1heI7Q*7-FiKu(6JBDaAMJ|6-nr{zC`bqvPgYRiv<&pyhIha1G_UoATaL)Fv zO+%lEDyg~s{pHh5{R2AuoVzyP2e}6u5mTyR!|W*s16_oS>%rsBwUgz6%Wo#_S`+-u zC|Rxe=4>=DHF;BRhPw7qIT`DXM%(oHf~&wWugu4X5~-N2H^|SFm)5WMX+i6 zfn|bH)&=~!hTce%Ua8t!z3uWk7yW9|G54Y^sGR~rY_)1b>8;EXEdC;}PF=hz{tcb$ z6$DSE&95OhQi8|8o<+|HQ|r9Rz(@%3Wk@UOZN5J$NpW}rF3w5;>AT+Im=69+6hGYy z;Z+s_h=9xan(`llm{8CB$A!2WgDGZM)mJs6?*jxMB)n3mMdL z>xf*<;Xi<{`l1PoCE?KsLP%#Ve(W~wbx<93&nD%GW^kq59 z{?ikAmt}|X2fnh6@vb1$_s8r0PcP@EC^JV%fHKeLK$JH+oog;88}+Pt8)#_=Hez5V zjthdp(^ud~e<(LF@z###qQ8wh{U!B1lzWp}Vjkyftym}H%0UldCxV-BKmqUHKor5w zO6pQK@SDn(0bkvRk)EYcqhwR8==#VpV>)&jW|O7h5sj)cjYmA+xTu@a!Ej{8;%7&| zlO6>1*R{?NyEf|Q(PRBU@o|?h*JjBipbA~+y)$6azw>fDj7l3=kvaFvTAI90`mxvc z%Si(lwN?A5QHpMGz$aT9IlJ9;0fhG@*H#wt?bHbseWjpxvhDc##~8U-*k-^X8RC;r z=!Zb+26q+?ztG&XoQEuHBuEh5W=c5>WceMmX$JG z%0aOgvM}|iaYinQ75>;rw|yle*@|1)e7^_*!5oT)C))a90y)VT%JYYaMTy!;o+s`# z>p8B70eM|dq#v)CWa<{{Fh}>n2>De`tAj8}%SMEcURbO{b`Xw+ucgk6Bd~p*aVaC@ zhPp}KkG0G-ube5cvHMt~v8v#G-ZMl<%$bowv84fTFC|o9KadKU4V5XN5MsG^!>=b@40{ zPfIa7y!EzcEdhvb9dUtz*}|wZxl%R5M%fKG+*~8p$(-xVgV*h@0xdYxvZP81Sc~~R zwfz_S9Ow{Atu=!d!Bk*G+#;6X*oP-1C0$M&Yf+25oTZD{ z%QpX}M$OEy;)Z@VA8`@ztE!V*#BMwXFubp*we8e;Bt}W(q|}kN%(@msZEV3P@Pefa zUur{kRh+F-Q$M{O56`%<`q{lorK36BzOm1b?v^<5xX$cPEvVQ%7jKRnN9IG;{rSnF zsap#BcB#OVY+xkVQ4>bM8~fb}&h%r1p-|DA8LC63E`jr?fYLXjc zI~>=8FKxg{$1se#>tHx*D;Vj3YZTfHhRkR1N2DFtBAftuDE9}#${EuSlB+cKkvh)2 zA!c{{a{5L3VAnC5qTq2j!Y8wf@6*O^q4a~+EGYLeT4)E2P#hDm_s^)9k3pOnMSsT@ z)wb5g9IG3cb2bpAyC(u)(Rp;98kOI8ZZFvd$yKeoZO3!`bY^)Pxh%P+036cru1n`$ z%>*DRUzkPMxvdwZT;y^Lq%M7#-;G;oXHx6nM717eOS3i62; zS5Wm+0%tm9$2{Ty3>5Kj%3kB@3{}frdfdh%R)Fk&WE4m^5;yyFj(t=mVix&e!IS=F z4dKa2w5LMDTpojDJji9v6s7lpoQRBrc*a)QU`-*Iv0^O9hXeT)=uOR>|EV`eG>ik@ z}9m;1C<`{5kW{<5(kTE6(t^aCQd95UG_ zm2J|K^PuN|InUD(+}wAsNmbLxC}GqtLH^x@o#M>;^e^{*$`12otrO=>ee5CO9pIJ5 z0PP9W`EBT5oLzk`F|9A&w9~=I`-9rx&SvgN5zf$F_4jhf;qid2Zs^YY%2ioa2jQNb z#t6LB%B<-v%`#A3jafDFz2{bmQO;x%F4OAhx_qlWxI!vVC!vS|R=DPgQkc~eAM$1M zDv(M*^LAN1?i(QqoOE@SRio7)z8^C}sOo$$wDv<6gC-xf8v}Y)w`b2^ zn=(N-fse0w{9!VVyPmHf*nXo5Z#yuGub7PC+Oeq90>MI*mbUnRT_)=xqil#e2OSfQ z7XuBkiX>Xj*~uVn1M?ZBm2rlO!?rp2dZ{_Ans6=}zgcwDOEcCj&sFTMg1<AVvBF{mBt1#zEI@{3--gHSF|2z^yKc6uSyaaR zL(R^9VPl8ugFozLTR2?F=XVq9%uMO-&gART{Neh(Uo01Tv(tA~r5$NCb!(}_OkQdJ_T**t#o76p5K^TMSfkF(0Qs5OKA(06l+h>lRd|c|+@_l3>OIL_ zLnN1&itJZoS>-Li47H3$@}a@?2JR)BgzY>(pFe*PzHft6v&u3r#}2(VB7eMb9xE!S>c6$vA(26B3%Gzq^kuD&81152j#jVt+J zl3w6s?sEx?|AIzMAlB$VKw6(1-jrq_B&Qs{Ljj?X3C=}k`|7D=%Z-79nzmc0qdQ8X zV@If-215DD4`%d`Kl_&D^Fc<;rk$7!JSy|`h*Q0WXXs8r%WJ)$kTvR8xfahLSk~Il z2!p?SiNha_=8{%W5j0nsKIFz;fDL0XiE9-f%}~OTv!{}TK+MqZ>cfhJY@)gxo;ZHk zra#Ozy*5y<@-TCi63@`N>iK-t1w;=l{3*9T1$-+v8RvN%bf6Oj*R9T5?ec%MRQp;K z-dA)BIXf6Xn@?Z3Ch4_^D2cn?bz51Z9MOKOu}w^1H9=bF8%%X`$a^o({<;N%Mlm=g zIbjW8empXtNwQ!lshFepzT&bPm%cmu82dR_N;Hm4YQ6bY78FJ!enUq6u#2zY31={f zsl-G5HH(do9BiBHvu*d=+BPdiZl>B8bBII`>wLl*ZpA44phdjJfFK?sy7BeshJ!Au zI5%8v;VHA7Q5!c94Ds@NKC_XL{N-91LWFDdwXS(xu$N~V^>=atj+pUiOo!Gtjyf)1 z&@ygU_yb~ei|=t^pF0Eh2zb{xHj;x2=^l%e&MN%nYnA2s%F;X-UR7f`zET9iz45E6 zLlyK&f>#E3JkK!JWVgJ)Pxq*bwC%G)cS-J(H3Ic!D6!) zwBEqQt|-8+9_l{%!P!s;Utfnx3a@td?Au8!+!ix&r!KfQ>9!n<4W;a^8YC>_S)wvl zzsKMv8D8dOuKpy8d9Z@R;@MOo1E6is)gGf#I|TDuU)78&keuD&Y&8A(jc~< zl=wcZu7l~7sm7IAM%lcKr$@1J08C0Z7-8%rH`zkk&TP z36xVPQ5;zn8o|89XBeD*)HY19Y|@F_$$s?KW~|x{2ep0YEQJ%pqZ!f40lMQLF~WfS z_;FicO)(6F4%sYL;ceoD?{#Cdew_B)TmX69-BRqgn3wpsm`sIj=_tIo!Bs2be>@30@Ma=%BPw+&Odv!OUvN4$q337;PG)hGKb^k*oZ=9&ssTV;mfu_y4c@xL;oLKHH&WVslf zp;6Gc%xmN6yo|$)z~*KH@zKx-HAhvCdY;h8pbGMuu&0}2rX%mB3}`7}uu;yfQUi2Aj)e0X zSK(nh^}#R#mn1s|yofx*aW(my$T^qrSm0({JpZJxckM9yS?5h`Mm0R5VJIJOKEkmU zwY%zJc(G5!l0g+75KrYFO1UrOXfFnGSa-SiWji2M^c!EB###O$tX6Q0WA^3*=CJSK zy+f;ggE~^pinGR{nq%o(L%*3`Vq$#Q@PotHNMZ-&H_0((iR#ET#o-?gag?GTapLhl zMyaZl7GHp*QNC3|+Az02;4jJTu6}RV88qK{a97uno7pOa z+j3B{lV6VTNv`0=@3f<#TzkT6Tzk@#ll&@XH9RasK#RRiRU6SUcY{sNWO1t;Eap7; zG*s1=gDw5=WaNelMeImZ8z>d!DBtPT5c(T+evzr)%64>xyER?~3gY@6KWUxwnSxj# zDPU55($fZAG3Zwdj?3IR(pLuAAcSR}E%~Ps?N-{Zdq?UNcuz*@$bV|-YgTn*znwT8zC7MbdK;`tKCk>_tCO-D=8tg zLHsb)Hc$)uWMl@;z^K{L=NPklo}-AzfbxIbRHraqJQ<^#uuP^qHLn41N2}#A?XYJt1+WS4JlGnXL;yzp z{|%ZIvE{#iQ4+XsjP&<@ZEf^oW8-@FFVtyU|NX-Lzi+Tm&vN&jQ9l`pXGKaMa8FQf zIsBF*_u5MCI%ARQKJZ%h&yAkq5;e&|w>#nen`ydD*2mIe8h;OrWaENbWvW%jZZHQ( zQ-ss&H4BKRL8!y9GAE{CwvI|+FFuL{H444De5Z40l9nxxuEU~hd{f>YsY0dMj*Hnd zBz76LuAjCVcEH(y&H+|)VK-Pp4=-7{L*is2i4HcIkS8>)kwLrTpStmnHy%vvfH(bS z8uV`CHfJe(p|SqkCPOzV@*4+=q39hWGWWkf;s?UDVA2#x6wIAjmZ|XyD|fh{3btj< z&f4-V8@NT8B*EnFFeH&M_tLT@Nme~D-a7!R0W-Eyou5MdL19F6Ak)yUmI&LCL;=@! z#7)R9;uIAfM*KREX;z6S%*|>#bMshhR58bj+A#7hj8zq&_5m%<33xLmSJkVTDt?Gh z|Da@=GDRL0`S$PN5oF+huyNN|VX(zr_k0fI%45Zv9JhDL%r1P=s) zli=F8TX46=t#Nmq&N=6vbLXyEGb<1CmV$@s>VHdp^>3+NU3;H5Q{Bm4_;BEh`NFdv zBRnm23;6js^9auZ$Lcv1tmXJ_dK0uI{=E*h03Il3=nU)k$$v$j{wT9QpG$2M)b@yc zmw`6CtoQ3NMP9^>+59QFzmLhI84LXD@67g?@Ht^JepJB`=e2TOeZ26=`$u@ho@Kq+ z|7QRP`_4o}&t1Lf1>q{(tvhZK53Xs3Po1Lc zV_3c{?gLtYrB;IA5J;h`m3I_F3N6!oFb~(E(`lK&!|R#}yL0#n-8yEFWGwLra?&|G z$fcP*hg~Oqz8pJ+4K|-Og)Oc4@ID^4HAkK&#I)UQw|lNsEB!WrTjAxG+rTTZhw*t+ zNNFc{<$U_98_93m9jIJJFX-yt>3L5Yb)_#Zd$T4lrAS!8{Si6*II4S@wCeElG50Ye z74)|8@nffsfaUM6^d8ywpcm(=w=Zr*g1s9He;=EBgzkt(Pd+?oT;8VLnyJIs=Re~8 zc9Py*L{i%O@ncD#Ca7 zsE?P&J_8SWQ@0656yNLgpr~g@IB=)>L^m(#>zXU=g_B6!Jlo`RhoY8JzL%$GQauhs`L%5fg)Zm67mICn)Pdh*5f(qR%6 z9*;raPQfk%2+cNaK8lZEYtIz7`9Yd)J>)g##J4cdlx1(Llxu~HHXpCYZ}*<2b&$2M zYh2A#BulE7(@J_R25Au3O@wE^5Y-jc>|=A?H@l#viUnZWH;#MJrD>H&xBXoTv%8W- zst5QlH^3RTW=jv{`6Z{P!mD*>S8oQ+3rh3B;9rMO&whvJVz*v9myxgz_ybZhv*QTx z&xOY3QV$!LqQD%QNn}A%z6R*ZbTk@J4*Pv|)S6Fj1smbUX&i4#Q?zfg*twjlu*(6A%;lE1?W_pIk{g4I~=Ov6=JlqqM^%iofp&|e45 zyY>KAWDGmuoz}nwAMJK8hA%mwIeHyA@U&E~dtnEuK|UUojMqt*&eo&V*zcN>c3Tw& zUCbxo#dqgu`0}W66PgV9#Z!8Cc3Xul_ki=L2e08SGY*G&)E{45s=|aW&l+~q#g|&3 zHy(4S_7Bqy;0-WI+vC-P!mr__E6b+0HR7!`gjZ95BZ=n6w8xsq!ylI-!(O^FTo5am zPsu$1HeZSTyRLJYm1vl~99$Q>biUbi9}@qbPc;J11^2;1)w$k$2YO@lQVLArpy{;n z;GuaOX9NUzpu6#@xCF4@BFy8YLG?@lhLj@$7=XvMt4I2sN3(uyJ9F@*gWcZatdMWo zsllTU)#Jvc6{dm2)5p*Et)ITb>#}!)KBkVthbz~cpv=2|@0Lnz!Oc5PTEhp4&yQvz zk2MYMkfXz|2y-`&k{0khlDJ41H%lygD<2AvrXYnm`CWJeqLaK|!fUkNxzmO#stS~V z3yhj`>UY0O^i=(lTk|voCnoyRD~hqer}e(Y;V#MSri7xG0t7wnynI->ZK1ufn_sG&hZQrs*LMZIXqFan!$p4i zXaCNH4~W6L_4{kzp2J@R<)*Pv)o|8OQWQ3_v*9o>wlg&0aJPXs)bLGI!rk7$$jZc- z+R((z!d8s-u%U&P+QL|j_9LGXP|04(#N0v-@G(8k9dXQ`@au!(o+9J;%p^G`|@{!)EY|fsHN;2O{n=efb2#ma3V)E6`B!rAPhzy@ z&d&D2oSbfMZX9kr9CnUooLoXeLcgQo=4OX0*quCVoekXCZJp@;8OeXeBW>bji2lnNg;7d#aFk5`bF`lE%dv7MWfDChqS_n(aX zCrT4(17{O)I4C$GE_QAqRUn@*7oRYXkmi32|4-5X2(DyjY+>s0e+n)j%q#e>;QvkZ zui&DbzuEjZR{yvVzfbdj9RGhYG&cG-LVFiS>wjD+V4 ze-rs5xPNi|#q~!7{z&}SU4L=?5rIDv|8>`2Tz^F1kHml7^%vJ45%?qVUw8e*^+yE$ zNc`7be{ua0fj<)eb=O~9e?;Jq#DCrO7uO#V_#^ROcm2inM+E*z{MTK7as3g2KNA0S z*I!(JMBtCaf8F&L*B=r1Bk^B%{l)c11pY|;*Ij>c{Skpb690AAUtE7g;E%+A-SrpO z9})N?@n3iS#q~!7{z&}SU4L=?5rIDv|8>`2Tz^F1kHr61cRl^jdmkpY@RvQ@;BR&C zdP(mB0Mvjt(l1rr)ApJ?VqWxkFkbY7F5e%XbBQfD8JYs@eGyubkkMk6m2`Mtzh68r zd5+yBV;w-p@4As-Zc&_|uKOm+KH!TFSYJx@i+=0SiAThCuB4=gG}Uf6>n+&KAzXnQlTDptb#x z_%pR39x>AAv>hQWIk^wxv&0^6QZXG;&RgMcmtA@GPD;cE$K9;kjbZO!FnuyyvtRUq&h_JFJ7Ab#iCIthJVBXcTHHi&Sqm}lh^iU zaB%x9IlniXF(OTtZp@8TFnaiU!UV6y)`B9>x#Xk1;6$mBScsLbZW3mBIj@e?87Yjo zv{VG0t?}@E(-wEvP%OsFc#2$td)+*NReL}>%n#`()nL!Vm(Yol0^)@e(REraio+Ih zeo~%{kWRIJ*?wwaDLnrU-Ni3pfnG-I9al5r_|EZ6&$(7KE4Q2(8w_T92~ep1r@ zwPuUg`NJ03&f74Eip*l1QU&o%$ysQer?))CHke4*Y&SJ6Jf8$tb_q1{-kem`37pq9Dr#$2Oz3i}WdGUofVri+wqjrXYoJtf(V#jdakF~7P| zf1G-APK=CML(l|4Oj@i*jDJq~)aahZ2?H>R*QH6PEnvh*nD!DtJ7ffTO$6l0!cIMM` zZ(YCYiJFX4zt^8-#dYkzs| zqFbL_QLhi#^_OHBd;$cVWE95oA7bA;?2APQOL?Tp{1tf~R3GDG=@ZD@bm_U$-YaTm z$iBJ%aMm_(no7A_044NX1yK>5rzT@WZ}z+H&bmU;pqmZjL>{HeKcreaC1>2_c)3db zEILod;u7;~du3CCe|U?{5X;eG5TCvg$7cDsJ~qdl$-)Y%uF9>%i6j4!LV5qKBKpl5 zx8okc4&TNKx(5WKJ7PnI`kHs&alc2fh|UI@Jy$hJb7tOj;L0^~^J5tN4Lri#5feJI zBlpyKagPDx+5)X!c?{?bus^HzY>kpWuU?d1*Eb?%d#H*#w^Wo|7vRQ1QjxD@D85vX zl>@QGWTMmL=|HQwp0J*BO<2A1k}%q9!=D$STar(xB8O(YwpEe#B)o>F)~znlSHz>AR0tuK55@xfCzUMnk*>0HKNy$Yl-AD zd7!=vN)9X^)3jlL4t>G8U5*jfGv_0Vyhqor&+p}Uw=FQc^eb^s=@Rus@@_K~2eg5R zbVySt&`p!@3AzhjIq<3A*G2TXhxgrw$RuNB++yFHe2Z-yOC-Q)F|l%0{aHu^V`b%d zWCWQW=cjM{LNe2;iZ8=5_;Zkmaj}0HfmU};lD)_40|!RD6=vB&V$yjgV|lUjVhAmA zDYD;(@D*#9JL|lG7OP@pH|};D(h`~`*LdN7$XiR}kFbQQfBfn}zv-*w!w~fIQq5qR zuH>bIB1w3<@}>WXu+n}DnXAM|xvTG$rWKDdeLBpb^;h|k4}?ZRO87O%;{M8pKQ;%H zBPtq2A4pz5Uqu;~L%&LEb(@`xO1$n(#3C@c>zW)L1=zmU*h`Jo|5|;x-^s9UOWIOZ zgS0YUa)>F=9skDM!8${RCsQnZzTCNwcdJpJtEA6s*;EF(%06LQ4PB~56XUD zZHx#MD#O16@yXhiSiS~OLR1*B-nbkF805Tc%}11tp#R3mvbbRV9_Yxk5T=??5yKj*%yqUb69-AEEK6|Ou0RsTTZh3#JD7m8?h;Q z@Lk{c>#M*W7ig{+21v5=;(p)5zhzb!RDN=qxqR0QyeY!X-b3(;ilfPeQJ zT|q^W#BK5^H}hX^bHp*TaK1zwr7N-FSa-7+;a6)tL`PkR+O0mf9sO63x16i}X6nbC z8w{IdTA?^NfGwOGfJHDj^0;Ot`j62WQ=YNgm(yS47VoRSQC#pF+os7f8xh1&SY9I= z0VDHmQ%Owv%eYJp8gNg2R9nW+q$pE~dzgY=rJ#(j;=#KT+x^!$gCb}_ZQmQALvy7z zofa4QBVgt+424TvQ1Bk`@rN*=Hm(-LIX=X z$Y<^(OeS~jlrio|hg+jTJIVFzb~*kp69wIdN|?qIEXc)+eV`r_YE2Rl7L+*BmhL_A zKm*&l4SIPU?hu8ntU6a`r)tnj+43#PDly1gDy{0m=G923u4n+l>{Knd_+jR2G0dQP zq2n~^<8cSXc3DE)=ef_>jHvg$7VNl`sxiRlazM@NeBfz%?R=}35kXTMu5sVNmEFi8 zNs9E?*D6VEM0CUut{?l%Z(Lr>3hs+Q!)#S>8@ys;>Ty) zxS3j+R<6Yq`$%{p(iK>d9=&{=NU7f+R=e-1gKpNht8kN2@dDZGBv}jhDN8&MQZ>%% zHO#FIMxi<~T(-4VHJ|kw?0j-U@Z^%Rtc{2X25s|UMwqc6YYR54HTn3S3hxYtnK{aS z6-!kUXgrM)aE@tgeL8Bq@wK7q@|@og{h1fYTWrwuQ4VB;WMc+tjy$$4L%rF=ufstu z^IY3{*v{i5`mk>Pnzm-be5}jw_Hqi6$c|cT9Ocs_PH4pI4_A0mKj-+wKUD7h#aa`wEtvl5TS7K2) zH*9MuJD_z<39Ormji~Lw#gDZtNzG%DBv~iQZ2MP?G~SH8G5k|YJPaggIt10lZe7V? zexde`ig;1pn3^02p;8L^5$ouEIWPQhQ~liNx?z*$3U*1QXie8G$!4)u5uM{I^CWfQm&PF)Z%f>F zx-ExxLA$0%lMT8tp8%R)l-%;{ediD)!uAaxQ$m9Qss|v~a}VXWjIgaMbRi?V&B-}; zfjwnlvAhuekFrs;x3W(|YY4(A3g_Yqbil3W#^FP5W`~BEr1yKxiAOk)EV+`* zGu<{cqlktO?NWV;&OdA&gRe*SA-Nac>hZ#B zxRdaJ{(XH$VH12z2W0D$3Vc|Bjmz1Wi=Q2;)kzu+TLe$w$sAX%ce2u2-dN1G-> z@Xl-UuS~1HTCIK{gxs_^jiI2iW+z)LJrN^Q>cek^s~J9mDSpZAOww%1xv!#_hxY0B zdedV*e@fo`qDIJW_d(BNFPO$A$)C8A*C;=jp5aUKwEfUlLf3$Y%SC1->RPgslsF~W z;9Y43H#$LOIoGM1Th5_(S-E;0PC)kr1MQGXC*2Tqs@CY*t6G<0d#16(89Cr3PTDEO zqf!$0RckYg_dx-CrQFQ>t0b!QuEz_7o?|_*J!#90pU`|0qrcW=JaERE!n}6jr<;P<EO zAbpzTS2S7EBQFp)HR?GEzLX2$nL&kJr$)pIu_guYre@J2if?IpUDRP?c~Dhmj0@b+ zt$vya0!oSY-_=`JKzP>?U_Upq{+;e4h+WZ2p;-yp_@cLfk!T7atl7-281(9a>ip&o99)J+K1K&`;CteCy-9Ipe1{ z4N+%@?9KuW>Z*DJ+>LH_=q=7r%Dc5o<+W&^1H!vw#>+J~aR=nbZFV)UyIy2dC-6GA z;%oIP3XCy1t1K3ZM4J0kr7hV?8J@8^$Lgu)*nIkQj%l$$%&J|7xP`K7tv>NNa>S;@G>rC`Z zIg=$)9SK%WPp@rYJ9ED3idesW6S{=X9YKIW;RM(NF`l%KiE%n>g$SZbGrj&!ktz_} zvAS_qFZ~_uvoyEY`J{;#EK)7G-4mvLcY_ohxur0{V~I86O#7pRKK>M9_VIY~W71&7 zfzvS=4!JUu4H_MFLV5Jp5+gN@Gf`|%kRu55gL&D_VGHSWc7TB4G58u6@BJ61MeaP(5>1+!gIjH44paDxxBrJKuQ)) zDjGY{n*Q0t%ZM5(0{jV*V60DL-Zni96$^q`UzFE2ObUA@T4vletzW2%eOg3pqR{FR zR5W0`Q6@d4=%I6cVARPNvkH^#IceN(U`v}9z}(%ND3tf2Q8S}vfCf$AL{Hx;NB;w< z%3I-@dW(yQ>FGqHZFH*w-ssS8$um)C^*Dl0!u7x|=suoPo3rby(^P_As2#X(LpLZA z-Umy}9Ygf=+CJ*)a1(-;#EJBBD#lKNp4>Q$#&d|6gvskPv`ShVOr*YlGQOVZES9`S zo;`D7ivqQe?!a8MRc$0_2#pK`INZL#nn;x|qDC`)2{G-mCItj_^df~%<@Ph+mEJ{@ zw~%=kwT;H69(?3n<&_%=Qr)_wG4{6g4(DLp-$pBKFoF0b$7KH6h4-&%MCj50ry)rK6D>Na{sm?eL^N(j`wMw6-g{tQ+y0sf3xv#(v1?4GRtem+aDooDZlEaX z`=Q;Fclh<_N>C+_;q3Kkbx0ao3Zl+ifh--BmPG_6FM&0;&zR82jY~;$IYTslprH{7 zt-K*Ew|R)FyGh6uE2mxuWLQ%)^{=);w$Dp>l$k|VluMzd2M-Fcuky?h;;)mRd3K+?k#mV(d_5oy#=N)}_!?=J zc4MLFmY?Sl=eL)kK_GB0L5>4;dv7iQIaTIVd2nccZueF1jUzqRL+-vcSWjflk_q*(;0!8a1DLuSUvWF= zgaHMSy>t}im5a~ITXZV-MB`XfPuB`wUQOojWMXC3|Hj)L&p!vsG(g+B;zyU zt|I)AJ<8DBUif0KAaQh$!+`SSMuHv#%LbBE;&#{FQIh1bw@7OW)-B;hJJ8DRJzvxq+w2ao^EXch26f%fnSk&{`UU7Gcyfq1alL0N& zg8O9pxGQ?ex@2UehTUd@Ot(7M&`NB{%Ld)YWv*Lt=c@Q^LB-dRDJJNvpij8v-C2f{ zdx%KoG@WjjJ~O*B$}=1da%!c4;6{}TpEH8^ixQ>vZ+H`K1}|o5%S6!lW0^G?Tctfi zF#}F(B^ow#B(q~w@y7&aF%>~iIf$Xk&J9@fZ*UlzfSu>@>n)``y}WDO2ZB)%_kxI1 zvDL+m8U(17)D9GN-1xiO%(0Ce!?pYbWN{UfaWXj2&;$_4C}U*xspOqT@1#X_jESUA zWn>YOGn5?&u<3B;F3{t3NxrGkMwM)M{*9_jQV{o%@aC;Ke7ww{2U9wLcn3IxOpIxb z^h;NrpOCh1c7$K-J~xT*sCar0b6r5f!Rlo7hYXdWBk?+^KnSgmlPS8-`PgT!VN~pi zW37xvHA+SphTH&Oopm-hII<+By?}P3pLdYVzz0X@4Dk}DvZA^563T3VRJ2G z^P~P`mkw}P^qVB>?r$Mm{M0sz_W={nss;zNxV7LfxT@44dUncSObLw1JjO|rJ<%kN zFlNeo&{*e&uPts=IX}-*=tXAN4uQlaNA@0;Z5{r|SJrH7`_eS8*wgS_YquKcE6spU zJNAmu{zhm0o8YUOS!wC{L)Tb?7#|^2LAQ(QWYPM@jswC9%)TX_x8LT~z>)oe|`syowx)S;KX@6i0M!%w}P zbyFB6HhvG3*zm+yO`zbTK-Y<@v*$ad$0~41t+%ceICa_thBfw{qB0z5WeAE_h(`tx zf9mEBku54|5vmMn@j4FUT0+HET-NjA{^BCCm4Q^Sk+oLpb)R}Q&*|-LoWcup#s6YW zJ#`TgMDBzOzRP#eOq`+ZR>yBTQ=oaEQICbfDg`GIBtnSnM%7O`U_ z)&*Z>+cvVykGRjqtk?%C(#mK0Wj)Zu@LBfMn2Tu^>hS^f4R)pj^i7y7%{s3hEpKW9RUXK=LP5`qDjf1+CddR`wRJ?V9>=}S7C^Qnh)bSzLt~93)OA0{ zvJM25Oluc$>Z!nJFfM!~Bgn$7NtDJ~+?vX~xec$C&T?9Nqlux^sAt-w(M44+ecM|= z4wOEpJ8DMhIONHlEmspZp&J$>vvJJUNuhvN0o|ss7B7dzu#+?KO2002>!;z$Z7lKd`3J(gY6Qz-0&cla`B@{DeF4h0F%k@1|)0<|HM`9*I2aXWW)K2M~E zPY8R*sBHi_-l+w@*g83NFaq3m8@Ih8l0szKf`N)hP!i|jwJv~Q2W8)^d0kF2Lf8;4 zvGdAIUwNxYelo((Pf_yx=7nFL^bG+5BZS{dOHiOZn*}7W0rzZaVaOZ(p8yL=g7+Lx z+3K?=tT-0kdiI%2CfwNG+&i?>-vO>&8}N|oKbA|2EHg%}P?ROdh#DWNDo@*0HCRGjZwP^b^$GdcZ!)>6 z(i}-D#P&f59*eTK77F`}B(}I&ZFcq@MsScvELY1W<-?w*yk zVCK#@kKsO_3OvO&G?O7i!{Qe~RU(M}g_0Ft&SxkEc!tfr%=uQQTR^wmou4AD)6VB6 zAU7-EMmA$k{i>T4<0@PwDbj*UP%w1qK~eq_R!9cjQR@%mEGM7ybGy|_8rn@jUrO&< z@2Qr3;d7(&dvB^pWt^@LZ-n%Q7DvpZ>bBbm1Q* zF^wU@^bfQN0(-1%@FYWh&?YtYt$KwVO1Z?ewV;yK{4^$jDmA3YZz?Eb2hK;`f&K8+ zwxG}KSa8*$`{zd;hhQQAP)sb+^AM*yKmLh)W=XpDHm2!Ca6PR_{?pO<`x_}nhhZ>Y zf041@uUC#s9Bg*fdf(m+*+AfB#CBP^9l&19H^TYTY22Vyo4GD+da+Yez@N<^3d(-D z_B3ixLB2$Y=eEJYYpHBaRjXee*S1|8Yn-%YDFT-s*oX3Ez-z2qr2Kh~DfNo7bGELa zsvVb<$ZEqg(9x3}dW+5AyK07a}I$p#%{s@5#eM{KqMpg_K7u780A4(Go4yN+N|4mqZX7kLL zLIL9x|M~+oDCT28!X#f&QHge9QI);bx(JA zc2??CI9Fy>I1R2rXUqW>kO&OBZxE2dc8yZ~od!pOJFn{Azzd*8KyuAy8my>KV#QD#Y-9R`-iD5>c;{Pi)1~ z8TI18_uYLbV^RGsn&KBR!NJp(Yq`@yD-F@2p*%1SIj!M&X9}|E&F9YIvC(}xjgHT8 z(!H>kt{ysm$Kt+HTfaf8PQ=m64R~iD_R02P2fz8YH|}bPj`4W?l(Wsw&A6@$!z{s3 zqGSfa_vh~C?vfBITi=*14^#2s_PeS^UAsva1Z>qpgT4A?087msU-g5wxLp&ozmt<^ zO>*RrSweV@6Mnz9+Cpb;jiNhU7AOW}ur8Rn;MXiZ;3v-~pHJikfp$qnXLRn`=}MNU z%79I=lL)gRq;Hj!SLf@Tm;yJ#uK}~xyrhEH15Ul`CxTw<#HKjp?d>0&3BE!_`~z7( z=4caC|7;|&&7ZV1df4GR3nF)GJ_N^lyYuR8d71iF>4l77avB3>1VjiT!$;hh zYj>-l6xO_{Oln!EWW^GC?{mw&*NGX;>NC|W28c${h* zpMk+npsXkvBdHV!?K(!_ve%%RwI~ti@LDFLa@Gpu{m-eg#ktPDInX=!s(Ys9jU^KU z)4`4lNHg>bDs|e}2_FywG0XCGe^=dmIpMDe3nsOham+?t=nrscpFMqYWWVSL*!YPt zMAP#!z*11c)Y8P`U{K-o>cQyk+MFg*;2h;ZDa66XM65_4db5wus_szif|qbSKD9u8 zszrBI-aOzX7Rs0GuotQT=WgK zcf3bm3)mFNhd#Q?4_KRPxi~16CPUlf$9+K<@(xId=};VN=!%b zq<#M}6euDPtSugWAB=5Oy|OYe>r~4t5pC74V2-xgPRF|R%PbugMvmjPM=%4ilQ4yC z0>vtcv@*LYv^fkOXkY3DR6sOsL~mCuR0}!0FJRsXZi^m7%4xMo1THQfeq769J<&#w z5BGk}&W93NveXBG)iuo=qX(Jyw?{WAA2+=67C$C!mVQ@d>mn!jQfO+1k&%?6rP72G zSUu1hSALoY4>uLWvnGE{mjN5%4=NMo>k0W6PAA$Qw?8ogFBJPSSA(fO8CH7i{mOSZ zTBb>>J>?)50$~!IqsQ;6RA`sS^qic07=S+++KfB=U{zgiZ}W+pj+8sfpA9Jt``s{t z8owlD;R`6{G}&3BxA>5V%zR63=1J#R61-+uKh5V75)1S^d_>DLGqqn{rm+^n8!Tve zu3c|0u6_^-Q#Nw6e0n*5iKjR?px=^94v0@P7ng88@xT=936{7)A2@(Ur_2gXTB{?Rv#r2d2=5N!UIYrvS@ynjtV0tj zEiL_ZB1NgV{^J+A*J{TljS7=tuiw{QLjbj&!>F73JLlbGwuFr911|IzVyjI5DEljX<3nQbwPk4Ga z9Sg#)wOzQVvkssQsLj*Tlf?$DNC0lW_dQFu*KZACp2)ipH5t6K#gLq4Hi+pr%;RS_ z!P|iMl9nr}T5$ZW@tP1~Tozijik7p)wEa{{jDoa1?LO{VmTSDgb5c2OCpBX%iu8!6 zpdn6?c?w0Wm1LX0N&4y+VFU#hyj>qh`NiqX*O!=K_NHG*@WE;Ni~t;!eMWVYhdW0rx}d8?9uEfl{(84>2uYe z(X*&YVvF6Umr^t=0#Kh;H#%_@rhq#iUUAS{*N9|d4fWXf8esx|VPF8}ycHZG=S9TO zOJ@U)91#)eTdEo(kWjI^V#@VJK~3zdd@rm&ocS$oJFg3lejJHcc)d;YaS-7J<5Bz9 zl$5S=t*GoBW#4jN3n0=LB911&h^1YY1`D%d!N#pV0CbNK)dUlaB5!ztibMWo>DZiK z%zkKvFBM>B&aZXi-dcC(t&sbn&GYbq`XrZSs)?Uc=$fthzC-qC+34+R`$n&eSVn*5 z9%gxCZ2{05uclthQ36fsNPTheAd#E%$(&kKtEl4PY_>Ni3e5>;JeQCg0J3oIJ;A{6 zJZRb+l>BwkNP0SJ{7b)pI^IfGNz>;k3A?{BfCvx!=WZT+_BjFktu0es6{gjw@#yD0zQH!i@(ax^-V*BxJ&Y?W<9AqG)3d)`S?dZ$p}lIX#!$7hH7y|&>d77kBLc&r5OUtL#npmX3nkiOdv~P@OGU^-&IauW)$caRybm27E z2N^0mzfAm5E|t{FMi1Iu3iX!@YJbY=G`~aJv=gdNwc#aAPG2O@eyir7qlU!r9-{>M z$uQ`&QMqyBD0Znl*h$Mk1G>sv#ve6g{={%$?yz@RdFr+Faj0}@ zrnMtlBJ}Y7h(`3T^NrVGFwWXa&)d}o2`^%t*sDDX7w&5A(EemfTlKyXgVJ*(K+iVIZi zMg$|XqAA%AwR^yes}?b~AJ%XW@Gff^7jrO=sB9QB#!QNhgRRfw?QMBob?EG@&|V5O zS}E&iu`*feH&^Slh6Q$@^kM4>7$>R&P;!ub3Vv%4R&7aA4H5%E2$^xDmxwH`DMJ>h z&MisKHFXTw$~q^|O2`^9!jq zAu!^Zl_?+xjcgERzGL(CgWm-MF;hr`>!$`ZVh(^&DZjqoDal4Hx2|;9CnJ^4cFxVQ z5b6p>5(rSWtxHn`zM`~Z?H6>uLfcx!Ho{C@5LceR7T-|nmqK>M_lt+rfb>(?r z;Z4vMPOV`>)+v)Yy*@5E=7#+9`z7`Qi`Vpk7LEE%h-)AKmKr|)2fQ30sfI#4}yp{m~xDPVGTL6cRiT>LC z8Kva30=kUhYy#azj&c`(Wb->r{^i&v(G5p*fxD;)Dc~@xJzy{O=|*}%<~RoG95Ik&&-^vn#_?ru}%OCEkO#X(B!3eb|FL7K?ZuJUYMm-TlzZ(<-+|LE|r z)9?Q1Y1=*lC+$TUnP4^Ja}>jd1dzpEq9=(xlj!-UglX7mAo%y^myjg zDS3Ci_=Yd4n2xz6GIXYS7`W%6awwg&zpaRbVrn=WZD^uNsl$UEoq2!^le=iovKr5B z_QxNOt|^s7)&jX%u}Ygae`a_lO_3*p=9XsWYxR-CsB%H3VIy0;)ZlP$aXB+4k{{?Y zN1@%sjnnOG+iT9ixKmK4wtniNsH{wrI-D&o7U?A(J-huzQC&W{D83Bd;Hu~Q=N4j?%F_EaGql~dHsrehi2p$y#6cF)5GG^92)bHLm`5_xyPv6 ztG+oDxwdyV9p*m0ZD1$jv--Yf-e81T177T5iA(aK#%Hy!!ySV!2Q!!UW#FCo?_1;_ z`cO{{HQM;7+JCt~Q{&1&eh z@5pa)4-;cki3QyYPz0)kbXPBI>#y{g2>P-?D%?rFxso*>X6{S@`FQ*<=Z|$U)3l4o zf#MzCT^YL(bw=*kPizS9$vDnt@IpvKO0RpOR7yrwkc)X@G`ypdv0g($EVUeQnrD zd@-!}E43l{vfA=_?kjs)8;Ho3wGB;De^_63?W&6qZ5%ew8etN%W^tef1j|AgFXQC=8fs3$en0Vy%_s3T>(QC5U-&HyKz!uk- zz)#rSnUe?0JJm1tM9QeJec34!8rEhI;uX5SFWR?sJHKEN@Nq$h-%LQVm{0+38MRLW zNBZB*zujcexo$m$QZ!zG%IY}dqPx#~=i|MMe3=A3IlX5!HK{v~WPoqar%uy5ZbuHU zo~rZ;wV}LgA}@wM!$^J2_U#Fb0=XX7Iyw;c$^6o>T`0x?A-o^>opLh{Q@Z;ZdK{R_ zP$z=hzw=N&q}q)A+uYOm)3g~mwq8#wCmsW;-ViW>v(kKPd@TbNZgG>!rhzbjQ-5KM z%NHB!s->U{r3h&=+u!|r0RaT@0M5n)QY8Q>5{ctgdh~;@Q3uZ5-RZSx6h)d8Iyj!2 z+=O3}kEr;m=>0qf6QP2>RMbl!-)b_Yd2^KANBH3Gz!WQ!2vYnkfWU*{{up6-G;Uab zgeq%OS>Gu8ho~foX55

    (=G1hR&ys7^LDvPP{#Mt0eIl8m-Sw#T`jwpFP^C-#Ti| z&$VnQ9(-;eRa_i`jwuujt43tl=1bu7q^@n#)za*KxJTU({eJVbG48X&ocR_0Mq>Yq zdC(O=eh4>V;9WDmjP-Y9YPVB?RLVIm@Q+=(+smvkB;VJO4+k7i6?bkX`b&fQ75K7~ zC@^4`>QrNd+&p4|+wzniXYYqzjy_^=wjd7qHC0y9#OaT^D1QWKv~GccvQu0jwYP)-*F_oWB<4e)ZYk-R@bm~9e##A z>6qMy!<9f~_*E2|;ePQxnVD#VMnk&|FhUNLY^bi9w(|R8XhHl z{1QMOr!qcsBx)U?$HKaPT6=%A*m}w$&}z->UYg+EDte*xc&Q z7hyKoDnAS>aDsEyD>KGi`t6tK^tW@-_*&yHPPP>3x^a>H3+nYV&B7D>jtZ6%eojSo z%NaUoDC1223}1;+knqNc$Bj}}b5g8+k@YU>hpOX$gfUIT}o z*q33GSeN9pr8Y`+Fn!71}Xp z1a^FO06(0u&X~*8<70Lj_}Tp68DIkUn~|?e?Mzv^9nGi=uiVTDE6;nFmC;f9+2qd- z>!%AcJgbbVs)kqgqRuBmY{eyOH3V+*yt>8pGkxkuQwc9T*q=F(#GjIQ&|N|)ykN0$ z8cXJ@9aOhDJCehkRoct(1xnB{BUd{b`v+ zS@YEiF1gyI&>(%CfiE1JfTqjv$)|0I+w*`|0=mPO%j!B+UN~ygfrlROaoMWI<=PF8 zf~n7^w#mADo$0X5)%v5Q3m-3;#3{!=aA zX!&Z=?J2|Q3eaydD zUH?Jk>rIt{*|FY<%+JriT>Tl0M-Zn{dmkkN6oF8A_sb5tz$=FMpB!mf;VO38(nkBj z@S&Q|TqwhK2K(J8bE&Dz5cD0Q)Ee*Vt+`(P_7k&ll0@Y=W_%o=Vk4vl)(C!$-xfg!-ys zwb{aj8|%1q;XL|-A*vHo;0REb>(;R1ZQ}eJXW@BGY<4y=IT;vzh2GbiEzDoOgw^F` zFo(hSTBy2Jc+DVve(^e%uD*5;)PXpT_9J) z%jYiQ#>#cnYAy=-9JabWEG;jivlXzh58nGBl*^TX0s9`9>*9@bZ(?Rtc&#=rUs*t{UdNu985}=xCpI^`C|7du zeIJ#Yi&nb>f5`FJQ_o^*qKjjx807tvvbk)Ev{Fd$D_}`g68@v=E8DKzl}=^3z(Rk z!mYR6j+xmxcz$$USF0}i`3jzS?IN1%*Rgkc3Jwcgg4fn>pw$WXrrmS@0}30cR$Xjm zig^09i}2R3W5RV&Eab4c)x+ZQby@EHAN&wzX6IxX-}g|h&)}iwPa!+(BkKT@6BD?x zv4Li*gT1YA-;rSA;Sj`Meeo^)+0$dZ_-zZ{e{CNB_YTg8VWd?#B2!O6a9V<4uGlYX(gR;jv;`J8|&z_0$0p@DR70X zP1L}`@pBl*a1h8l;DOf)4?p&>zP5&DV*}k@4{mJ&rBYeGeO2@k2;S=1@AuI38ej-e zdbv~$ytsxO!%!2$u!D>NH^ROn>^l?63@71m7`$YYGeCUxrrmC1Gt^13SVFlX)~gv9 z2U=be{Xq`^N8POKRsHsx~E)bzBJkCDmJ*l42JY+!SqLw#}z8Ha&84lv~4hRR~EeE!`Jv3>#S{;*O{%GZBMI6DL^BN8G`aRTYb(G3w zR9*GW%cgK+eJvcXHcF+y4f*XX2Wa;W!@We#KXUJ(_g;Ozi9EEJY6CIYK1{Lk+ub~F z3rO7G!NYg$aMi0x-&aA8H#d{N2cqvc8ENZCvf&txV>T7TZcQ#@yPUo7dmtvSF)Ej` zuf!t9^wc!+xxgz#Pag~hL3%!qY(59i^WiuQ?N&?XtJP|Ox742LSh^Q_Z50Xy96Edm z`wkq$;X{Xl{RIf$k;Hje4rsSq$T$q1-wx-4kEy9?Oi$0?mRoN_rCfpQ*5ul{u(^3n z4+9Q#HoKUfoIx&EK&e=U@B0{Xz;Csrmz$VpoCDcx=nWITl0|sMMLz5;zzGnxSnn;B z%RzsqrZE@{Lhmgf3_L(*wJLJCET$%>u+?q@U}*U*4EjAZn?5SF8uIx9rlzN*O{vvt zh5LwteH4r_96WRg`}Xa}+`c*Vwl;$YGIKCBJ&j_a7?ks)oz#5D;rl)&_e`T+pTaH2 zZ$rI4iCV1|vqg&e&>svi6?(U2b2;Pu$mMd#=khpu^DUU3nn8Vf5BydO0}gnNrt%hC zJ#P5seO$ihV+er3!Tv)xVRmK?M{m9r`}ZBdkz>c;I2rK45N*E=I2p8CtzdqH^NC)c zZmouTeFC?<=Qt|mO29^Z54Cy?`CJ~;)6>y)p~^*Cx1 z6H2+HvblU7`wt$HJI}|qc^LX2V&Q$o5a0iiq(ge1%No#j001BWNklZ$Yif1f^UtpDDd_Tu+{@k5r@5knU- zxrr<~a}rNoie!eC{)_PaGnervkH2C}yZffS_}$NbNM(7XLH&tO$3QYBL_gA`iw{uI zKBP(KLynBYvqCA8~{8-&4a-JP9_t1o`8c70p^7IV@x^%aL(m>!RWZ~kZN-t zup`Hb^uj}33O1l$6F~gay0L2#v@M}84i?JBwLJ0~X9zikRv(Ygzi3}i$nL;G*@s{m z7O+J=1OtQP1h$b33;LDB*jdOJgWpW)x9p47Z@s*&e%rOHU+cEAwtL-ALeTHuN%_S6 z$YJWStt<=g)AHNIru`V=SYaB?(TH9k2EDw9C9?<-BS#qX2uX_X1T;g0n#e$qjMQ}` zWkOcA{U;_SBJ~!^?Qiw)=xZ18|2%mHzw?zx@%WnyBfYRpdI2}RX!{HEqvl)zQqX{rZc0!YR#iMy3(NHsNzv)Y_ zB0db3Ii%j1`VDk?9C@`h0Uo>~ivegghz%G0a=$Mc|`ky5z)2Fuf2F4fBw|##=7r4GAkK~T(8yg&?l)4Q7ASJ zt(?jJ@zB{T_};6RaQ^y+rN(%;`=(j^?&m%f=^Jq*9bjN1-f*$qxMs-f- zyLn7F9Bq&oi}DQngCLI+cwZUWk*JB#gu##lVSa&*LF5-~N|7xAQBplcuF=ezCpe)E z1XP^?(b~AkM#oaoD-YNPMZOLbF3>Do${U4;cR%R!fie(!J=6U1_fI$j(dW66ZoBV~ zU>_nxHV~fhw6QS`ir{IiujNzbfe0x!3G)DrB{B}8bKJU~xC^!GCeH@i+1=ooALU@I0eikk{hC5h{jWqmyvm4Ij_fQ%Io7PuXCujSEauOlum7G zKdB7F)(6Tkq#atD`$=|S#t?X6DNi4P{t*R=+Dz+=X`jyelipU2J_RWQ`RfJ_# zEPhTNYx7;q`N-a957GuA5RQ&$Wz6lik5TJnvDn5u#9Fp*wykV!Ziche^atzCcioG_ zCya@nZ)!{=#<+YB|JP$L<4+zv9elIEDogU8*ohnSl%RUzalI>R!305#n@*YHsB|9A zkL{+5{zwGPBScHrStTN*<$To(P4~izz5O{nPZ6uq4q5lr=ex2N?pdw}ouP{Uw|s!H z0L2Z5f&3Ok9N7@G@v>Y`Qf|VSq&&Vl-c+y3{2~lcIUaGHdY%W))O>OrSzP}r6N&QC z`eZ!`j3G@tPI;4UP{tg_Z(WGk>YcTV@!MJVs6Kd>)u%+Ak(ga;a{(BQ2#X^^7UKqr zIt0R_Pk&Q-AeD*=Mflna=kVuGoiVm`&yhL&;TJv}mw}Ym*8+tsvVYtl6Uq0bXV2m< zpE28D#t9#L&mnyA=kAemI4oLU)^)9ni$LR~Z#se(=?q%mNu8##G^I-fspUG*MypzD>+FKTbo*MbEK(@`7)B6~&{InpaD+($v`*5wqj z^lam!k#^Fxs@Dye>l=rOaM<^Q2zhKw1O^$C%pV3*3?)`0gN=pIYn)#5wlZ9cFwYyNjc=NH7I|S2q+misNj3yqtRPaulb(}UuANhaMW2e{`J`{61Mx2s z3dAVC?M!So^vi*IJDw(=?|XRh(lY+y>DR`xb=dyqss*Jz>3tT;skg7&Y-Fr6IYT;t zm^YoTjibri&Xg~0y6$zA+6#;H!{N~yx@pbZbR4s}2*jMi3yUL~pRycbNYoZ1khn(} z5_Gx9yfQH*8dDpO-ai16G3!jgX44ym$j4@>(OI zaQg7S{_4--&{TYPvD6DENPwwm05ID?C=)PQW*9-qCUslWDH`YL(kWV{K}UN!^8g|r zbWzQyxu<(!ajhI3Q{5(F^G-3LFC!8&%q54Z<3Y3NeV}NVG9a49$Uuv_^snVn#zoIj zq-_eLmAZcKUz!9@~e> z@M8&-VGK2WNJMNvvh+)Rbo_Ki;SppTV-DPqt}`EfeY7SC|7g%dcDyWL&r&3q5iey|5h8o`Tpd^1+f{ACH(m zE&28RAdN0ztjQu`lcmSYyzt!ZzdX)dwlcKAFsAuJ>?5Cbxjd9Y=^W!=Ijf z1>b%7ErTS<;hv-W@CRS`Xe19)QCJK)b6ESVhc7+*I{y5m`Mp--gj%V9|LMQ@Sxi?; zu{4t$CKe(y6SQp|J5ol`0grT}AS*;V(h&>O(!~#v?f|hpDs;?a!_C$9X+C<6vNPE% zw<9Bpf`3$ASP0WN`3(T{>mj<{#7_<=b`&8u%}U2!VND70m{7SbBq3`3dX*lUWNy-Q zU4PK>C$$kP13R0v%FE5?m2+HW=}P~}wIyw0no#=qaB`41zqS!qXyB zCCfL}@r|KAKhn3XpCzvV(ET7gVIoY6IYu)P-KL@IyXC2js_n(o#d(lpd0nJnAXdGI zdZ2#eLVjhB>Vw9l-L`gp##jJlGJt&F)VK_UmR0K1+M+Vh?|8^-l+>&2JSTl_Yr09h z3MFkIChrLGWR*xsLja~H5)5T%0j8bf0KW3vS^U|PFUJKKBiwUzAAbJ}ACq#?byt(@ zy8KDu(X;dTAHVzbwq+~kviP0PeFS$OnX~56btzG&4QVHwqo_$DaMFK0POArFJ`JrW z$)`*Og7k*mke}$lhTcr`*4TGI>AxsTk)u*x)BiYLShTD|>P!lzy&yE0*p~d$6{N{C zF7h=YczyoR_H`yg#YjZQdK(lG>oS>sn^*wM`b(NWdKe;nN1s+d?T28SoCkll-C%Ss z3fa<*hptn-E*c~|Cihp{H7-0pP5V2>(UZbJOvr~KBO9}z$kpUEMb{E#y zpFVMV#|S^4$*5jbTt(2j{4!sP_{3}t6J`6ytdjorPgL>Weg1yjePqsxG9-%75R85zywzIA}8Iomc{aoAhlQUy|S2FUm*=dKUUN**qAL z$H*`k?Cbh^OqhhD$)|snPw9t&xx`okRCWN6d95*FHX;u!bu$>)6OobjUF5UcnG7tE z_T8piWgmzUDnfm_(>(|>5Y(ktp(9}WG<)D_+8k1Ai!+iv)W_np8$df>gW^SXD- zcEhU+*YO8mdlcRNV02~#Um*JjA3A~m?B3g>H?zWy;+d9a8H(7tw+)$4_Gjw534Mob@$1o?7g3dfdy$Zs&wQtBT=9*HDtMk`}%JupfG+9jjF?3KLM?Ki4y5cPhHE>`w6eCNTv_@lq~ zF?{BZqlt3dv}XeU=p!faXaD4v@r!pJMmFOZy*Xse%;$&D7@kPyh^@8Tyn1ZjZ?Szh zBN$m4n@#LIk23;_Ty^H5uirA*%j;|R`hJQeFD#SXiv9_LAJ+>@*nUR6^;u_XicN~Y^*pGa*ZIet+D0_yfeNuEF+8IM< zRL5+wmAnr`1p2fW=$1YiMKB>7T3&=F&RxMDee;Qg7So6OZa#qD|K*P>?T_-t*hyGv zwsHE(5-zO-uQ5NicLHv)fIAQEMZHuoma*zK1ya}RF@Sxg63RTJcZ?yOhO|0j!Fj(#WBK{buORy06 zZ6lgr)T_&^T?-sRJz^fx>q)u(NQdZHQ2D70`dArNtBt$qe(wOJ^1LcSv>Hb zL&yxeiFz{DNA#Q);pXM}h|CQL8?bv} znHV%1At$4;hK!RCxs3_X*w4dtpROHh z%V45i2DwkiWXq!M=?v85l|}2f?ng;rK%nJ(bzV_#GdjQ8dV9LO9^&h+#*wV@*&8K*>VBV{B%#Bbp{E?9*rf9!k$niukN zEkCVKFRSDY|5I#Vblz&^tvU@8^e?oDGHI^^MhfU-GY+$e)wzw3R8E)8R@TTg5SLSD zA-1v8=em?ZL-{7zw#&A->9;nHl$new7n2L>y;3p=Lp?Omboyomef}x=4f<1l+w?!8 zT$}0}wL`s|bfm1jqe^R+qN9<>Ut=PoeMal^HKa%w zn^I21CWKGrwa6p)O&AzKDuzI8BO(I7=pRCYjP2?n`n{S4-Qi@qwT zURQ?30BoK?x;|~l&lD7y^oq2OS$EPK#7+t}G@mN3C76bh>fWTgQK)tt6s*W$xzAX2 zZ3rg&pHh#7L74IzM2Z#EWfXIq&LvwNlG$oyM4F6Kj&stO(Yo|;8D%pSA^IXABBV&Y zTPT9uDblCqj_sYqe}3<6cF8Q^XYafj|MRbW3U?md8`?ZLJg;euhr=P7&BnH3Q9h}D z8jpj_$6+SAO@rE=1ag8vq?EB(;yN}r=ui4KF>hT`@Y>4qM)iU zKYbH{Zu7D2M-Z_e?=zY*`o(vMC1vTSh-84IQY#P@NH(GQx>=1pZ} zQU+9OV}zzR55!_d=EV+}hE;xUuUBVIHhm~I7-q097#KG#ugfHKr?6#OCsXHYl59E) z99IXa7)bC-_9b`$Isk$2zMQv!HKyk{OpM%_`+RB@q7QtefVGg{zveu_uPt7zlFxe4J=;0f{h#N zSh#W->ual6xN;e5t1Fnld=abHmvQ;x1*|MD;qryIaDC|-E?zi~rE810@Yb7HTD*$4 z&Y#25;#FL*#bLe+Z@r17Ym2z_)_GiCx`s<{oe%20cmb=|mvLqO64q8%aAp1yZmh3i z;mT!f+*rreg?Tg@8(3UiK+|htY55vjEgvh_m(gjru(rB_t<6o`SX)JR>;G@>T)W%U zl`#AYaP0Wj+isff|NqnW`Ow%-+W77mbUqk~(J&)~-Ja96SG86m1JYpFxtLrRL1j&0C>M%Rn5<9ya6q;}}K zE~^tpFvfy*oFw9K@iUUW9t1$i}R{N^U_6V+OyH5ejAqaIB6v7l6cI> z^ry8I^Re??EYh`GUu!XH_hTS5+4`3;?fZ~{3LyWQS`=Wd|JPMjmCqe9RJMYxDpcf$ zZkJ_wDOZ-LY`woMgYvwNw`(mdY0LRTx4Hi=wFrR`MV4iNG002?V+?Y)onI2BOWj=FSp-S?aB+{p(R7e@Bx;pJbrW8r>@EK~70uz-I zE6d4=`!BUgedW}{W6UWmD1>(Gc+ub(BQ1^0C=seQTq9!OB%_Kwglbhw5`nn7Vp+j8 z?HY=a0&hbbtCh~B+Fp+@kY?XgNJ8xB-(UV6(_$4%8uhf!Z^XV9(~Pbt4Q5RV`x^xr z-t%vb3B3M*ttz~(e|RN*KA-X9$9J617p47nI^pHz8K>hB&#NVlhXYotB@X*NR?7wU z`yE!xC+v1xET6t%yV+o|c*17A#^UK4wwpDUi*ML$)>tl|u-$I3Ts&d7* zmlA|k$Q12aRh$@Nv$m|Xe=XY)3Cl*>=c-N_qwyr9JdIaeKSkp~_mg^JeHt%e9Y|%H z*<317q~sRjlP7|BNTepH;*>EPu4?I+NHAM1VoxIx{)Wov{r-rb((|9F{no6#E;`sS zN>GSaj2)vNYD=TOV7&;xi`3D_)L1zp@dWapt!*H~HX?;8zV?57D{co0-`bEksw$uk zYwd+HYT9tr;fTY3uJ^mLo=~bXu;uoHkOu$J{O3uc5c=8wWDO}$ipWezA$guR#Nj@h zhC*n$z)qIIpdk@QKVbfFpQY`-DWx`7@gbec23snVsWRz$bM^d8FQ(#Rb=(K4tXitw zH2zzgCej7CXpMhJ$(47j=y}Yz5_Dx+DjQAw`3yCYKDg5z4oXT?n#tq)YlSx@cBt)` z%I%wIe6$&XE!s#a)1zI<4n22L(b(7srM52eNQs?BlyqlT86MlqN_3}4BKML(^6hp5 zV+^+2jo)^8mSvZ1W3b=vkmot}haHNd!0~v%U~q@i>4dwxAJC29+j;y zo=jk^#bh#t$qXjb8BCU8HlHKQb4=%RL9QqI( zkDp5_T`4yE=AC^}=%_2!%`7amRaMG=U|(1HSFDbcC}R_zT3~%SM;J8c;~e}Lm|bV@ zsxc4{#b46^fYum=BLq5rLCb*H%a|Q+|MEd53q@w!LK~VGz2zRO3V4FDrXQlBm{AIM zyz5%!)WOwp*ELU-q_dTxKBe&mN(;OW^~F;W$ejV=KS)2gLe;*@hVB&FjO|Z3&(WDy zis2TCC^mWOGd2Mz6lwJ`w-5-e&k0hzJ`~DGp$}KCD@Ex-pv9EG0l_+uTi)&KlrPUS zqL_EP?S)A8JLE-y{b7${Fu?J2#NBX+SR z_wGH4y8+&R_=v&q4j(>#!tj2Czdk=;G``2D&kwktOz`>3<0XH1#AG_dm&d;`oz3y^ z_!ZOH9ACcv9pn#>UwygBbcW9lkAa=PK0o+&?nXm=`1lEf;T_(8_=tQ^;Qjj#$nzZY z*&N0gj3-l6*5ZCVL0Og<-;Yt2XAFl!oK8m!heI5W2NZ(=_J=*PqQGvyLsrKr%Q9?h z@{r+ zXj{_kr&Lw{D?Po2OSp2S#!~EYRVUi(K@XG`=(X8(kDJ@@pShxAB#|=1$hT)3IuMUb zj>W!Qk+!|hlsFWMqD|7~Jh>sH8BRrA=R+$)eUyCC>T@beRl>J?cieR<+30uYC1PJ` zi{~zJ(&#$JLERo-cB!b;R!YjevLj0JcYCH(DgjAjG`}jB+U*-ZT83*A#wC`9~GLgbR)$ROj!!g?$ebiOM4cjiGH0j$F6}`SIYK!{h zC?Xh3NF^>pA)*@XgY!MrrV+|;2>QeN0006=Nklz1p$NQ9c9mP^W3lT%9V|`-m*x%M9TCRVk5?S(CB+|}HN@~VHdMcwo`Sl9= zw<0_PKgQ8ne%<)r%5A93DG~fEvXZXTKJj$V4vUR3IKTP24G6h=R#P8;qvwH;i$sv? zO*4B7R#t~VTS;rmzqQV#i@0b!h)U)6?*nCT<@Q?fwDI;NHLT6@>YYcP01))+RqmG< zpN^cyw=3qUZ3MBF-j&1p(n%T#c`yqL_(LH7mXxe23{#yqUI4thA}qx^8lg$`u60vV z$Cfz2DI`|kRSVXCT;W((JG4EzZos`IQ7Xr6RHU9e)}Ig$;3AP_97!jF5*~6%K5O2JOn@K zx*Sb8I|A}{5Zd+SY-lftldz5^up>OnOC=JX*Y;I{Alt9&=9y_R;z%K*6rzwwwN+1x zd!5uiM{K6XPU?d=t`s2>EvDw5&HrM~(x2p#c8~f0m6GoB|HO8vI&R&wCC9oh%3FPk z_FEVy(dtt_s1mkHU5z%R_|RloTU^;Y(&MZ0IZd?4L+Wb>D*C=j<2zD=2;1PX5yy0x zZIOh)=&%0OilIPOeNq=WtNUn2Z$)MnG?m`EeCm-b`w+ynzHa^tE3E=uz0u!y00000 LNkvXXu0mjf3l)h% literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor/lang/en/images/rotateleftdisable.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/lang/en/images/rotateleftenable.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/lang/en/images/upload.png b/yshop-drink-vue3/public/UEditor/lang/en/images/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb15b3d6d6799504cf7093a1600bd7ece0d9ef5 GIT binary patch literal 3941 zcmV-r51R0aP)2T4RhRCwCVT77huWf{Lep6A^=*Z?tO z;u6#GA@d6}KTsgcFQ#>l8sbz^5fVFQb@X7FT6VN!V0kJJ$+S)upOxlGP|_e^h^KTz z7);n^gTY{faKj$8}%V@A_T8>wc97-^;b{`+L&! zUZk}U!sDM%^hZeRy>M216hBfpan$@sDF+T5ICSXHsI#-Pq@*NUASE6O=h;(Ucqb(6 z)%|R6&4m+Ya?S!MhlZ#fK6gYC1D`_3NM|s;(u?%k)7XuC}$nvu>Uv>m9jup zi_0FX3tP$?i8jAiJ*PFVQN;$147 zrjH#!hmj)xi`Smh#O2r1c3`F*ZMpXGtE0bPvn+W*?qM^hDBg ze41YY9LnSAuLD=GZG9$cpP#}ju)##dPDx@EAM6RFEW>JopGz(&m_w|MKU%4XrfPnx zc`y1r3Z8S;V$nzlLu-NDW9OYBez(GCqn+|n23}KK2Dn<`nWA*jDHg-$QUI-(223)C zz%O_U-jh}v3{iqi_ZY|iNxWrpg3Z?A6Uu%YE7&5f>eeE*B2hA9g@x&sC-NqUr1NA& zqJ0J-rH4cvD%DmRMLFSpL^UeJDzeG~0$LI^!_64!sd@=RYg%%P(Hv4Nq#PN70t2IP z3>=A%%|B5+}GvPIDKun~(Vv`-b8e>62-eS;6vNOTM2ocU2I$qX^RQM>BT$|xu zmvQ;@z}QSG5nK&V1lYqWMP9=x5C?b^!FEI_HpUzz3w&;QAivYqCAoCpp20Thy`yc+?I{x*cgdmr$7a*L+G@g5{azEBqH!YHoe$V z0aa4N@KE$Xt zu#AtYo$ZE6$aDkx5@ZZ^pSP&y`IUeCzcMry>d)tMfp=p-ki6jesEE|qpjyI)>B=Zf>s{Wwf|;D_sfy{vxc%IRx1?Y{XNuUz=4;cIGkqV|-J8v4`keRf1i z5fxKl8By`k{Dt*DTSA*6sCV8}e$R|?kl>3nGJdO+BrF%h<6(#hYy`@+G43byY# z^wsaYvZd+o)<;)P8sSi3Bo#+KDaG(`Po~KCU~oy&A!PQCTC;PT;IsnI@`MYSU(l*& zzg^%_8pDr^L1YVGtY7p(^Rg$u(6svI8!F1?RMqZi?OeH_5`nsR=D3BAUA69w*2k*; zI;--uzpcDw_2MrAFLR#SNV~{P=fR%IpZVm5=Wm?)`LP#`8-CF_!x~pjH!>3hlyk9U zKKE2aqev*A7kTGYjDHAP%kHk_^RHgBXiCSyYj@@0gf4I4M_4IpZp0{jm^O9wa@a|pT{SyMT;rTDUF#oD` z8(K-bdDb5?h_#r3>`8tFWO>Fsk%jkP8`j-CK-TaOcTz77;cW z(+CRMfde_vxld`4yJvj5Vdb>al7V3iwn4I8Fs`&=<;^p%I}>3aUQ%?yImdQ%b;B0p zOyu?D6HY2FipHKYh)cbsa%Bz?Mc9P$S43bq6fhW;+C+gxh_s1ZKm}i(dRqCYV^1h4 zyyN;as%!Rau5V8rDnN`(TDI!#Q%4&Qo(w~5`|D-G2x`8%Nwuy>hmLxA3Xl7;j^ZW9X`BBla7nH zcS=#GyAI`k@br2iGMl%(Q{S|QC>0y3<4X+Ipr7>9~}3zvg0zAd0BAu;0K$rf!BQ~2Xy#U zu*4#c#U~`oGAKA+M@U4z*pgs=!>tc99u?ivfh9F>+}M_9DZHJXh}K(JPm6UO9V@jE%rgAdZKGbTSAV|ot9$F z-b2iRnuLA>BrSosctDY+27@MrDh#0`3IqyV#F8xv8jz}|jDb)X{gsFReBa~i$%Ed_ zyMF?!bVWU}aEKJ5K*d3cltcqHH=cQk2#b;tCoQxr1T~il z5`+bS9ympC&*fzrx%m3YqkV;Y@UDx_y>?;shCP=}I1$T41QEGnZS#;p(X;cez@d@6 zx8Apcii1PnN6lz30NM?ttf@D0tm6e&C0@Y$1Ml{5AEFN&Jjl)@gK^re4F^sdHUt2! zYix)AC!AHXcvllCCvVRf`LVjK?Mg8Ygxb8d{g}Z6ii-+fS>5uj8RyQZEXTvwYFb&O z%G1XT!TK0qdi*F%-qN@aX%YKyv!{4#QstU&Mtemmcg5(PSQe7Bx0G-QTj;S^6#Fb| z1vHl!AM6gwD|B`cBBRTWf&Z3O?*drXy}sv_wYw$jFDW2aMAgzwEo}#O zwjZckw7Fs;xUT?a8ES{!rIS9ft*LX~;yOg@)tX(ueW_vU<);iPDi~C(H#Y6X;&qLC zfAI7hkto1x7<~TO$Ito2hL+Zj9eX;K{-Kd%uds|u7k(s<{AX`SB~K8QN^V&QdQ$H{ z_n-uUIO+n?qeK$?p@RIEbR;=@=6Nmc-Phdp65~PKHnqI+$};p7Q?5Mq>7|=r-O%={ z?_aun?T)MOcu7k+x@<`0o&kzyPyf`;w%WHE_Q8su+&^jh z?3I^H`@NB7!r7%QZHFwm1kHv-?@i=@^5O~6a?{4QPCTg;-2=6Pq)}bj%RSs(YSMQ~ z1CJUZ)f!-HxT2W4X5<3pAV5KDh3gtA^P++i%!h|z4EcoU5bT?3>KDlu#0h+BCRx&O zYa5aF(?N3+>Z#_4n5ql`nUhr5bsP51{N~D^KROAemNUbID;LFS?Fd{XGKtOlZb4;5 zhi()J>j;AeW79VPu%;)*!)w|_bN1hX_q(7^ga(4ZkGFf+k0cos*}l%iZzM| zi!eI1&-ie+l)n$7bYYUAYlHCp$KiYGa9^(fB`}Nwh?``l0-gf@mL&q*8!5T}tzM>K&O@G{)9$trT-y?EVWRfI` zRYF=q_pw}|h@wLg{c^1=kKnocz`@7>6u!4sOruuJQ3*m>>XT6Yc&}}Y`KNR^EGUqP zT%|OzrBWZ!wY&O2X9Z>ybf0N8NpNZMYjOB%JoI8NiAet) z4PRLFIlm%IK|DGV;H)GZB)*sZh$)DyTrQW*W}_$*CrMJ6&8YBg1B(NKcqDVNj?72w zruPvLe|Lg5C}z5YZl(fC4(x~Ugsr(dm)$){K|z7+=;&^3-__CCrKNa(d`Nt%qsm!y zVF8Cxk3;B!c`^Dh;bgykB^^M0OmWc(C!7%JOk9{9Acv?(dDZJn$6p>0f12bd`5z8K zs3liJ?Nn$gGzk?*ROF%R*MJok6{8^jLx2GQZRD&^kujjH00000NkvXXu0mjf0_lsp literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor/lang/zh-cn/images/copy.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/lang/zh-cn/images/localimage.png b/yshop-drink-vue3/public/UEditor/lang/zh-cn/images/localimage.png new file mode 100644 index 0000000000000000000000000000000000000000..7303c364318b6ac27dc4a8ae6717124d8dafaff9 GIT binary patch literal 6979 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 O0000字数超出最大允许值,服务器可能拒绝保存!', + 'ok':"确认", + 'cancel':"取消", + 'closeDialog':"关闭对话框", + 'tableDrag':"表格拖动必须引入uiUtils.js文件!", + 'autofloatMsg':"工具栏浮动依赖编辑器UI,您首先需要引入UI文件!", + 'loadconfigError': '获取后台配置项请求出错,上传功能将不能正常使用!', + 'loadconfigFormatError': '后台配置项返回格式出错,上传功能将不能正常使用!', + 'loadconfigHttpError': '请求后台配置项http错误,上传功能将不能正常使用!', + 'snapScreen_plugin':{ + 'browserMsg':"仅支持IE浏览器!", + 'callBackErrorMsg':"服务器返回数据有误,请检查配置项之后重试。", + 'uploadErrorMsg':"截图上传失败,请检查服务器端环境! " + }, + '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'", + 'anthorMsg':"链接", + 'clearColor':'清空颜色', + 'standardColor':'标准颜色', + 'themeColor':'主题颜色', + 'property':'属性', + 'default':'默认', + 'modify':'修改', + 'justifyleft':'左对齐', + 'justifyright':'右对齐', + 'justifycenter':'居中', + 'justify':'默认', + 'clear':'清除', + 'anchorMsg':'锚点', + '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_tab_search':"图片搜索", + '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':'服务器返回出错' + }, + 'webapp':{ + 'tip1':"本功能由百度APP提供,如看到此页面,请各位站长首先申请百度APPKey!", + 'tip2':"申请完成之后请至ueditor.config.js中配置获得的appkey! ", + 'applyFor':"点此申请", + 'anthorApi':"百度API" + }, + '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':'背景图片上传中,别急哦~' + }, + 'music':{ + 'static':{ + 'lang_input_tips':"输入歌手/歌曲/专辑,搜索您感兴趣的音乐!", + 'J_searchBtn':{value:'搜索歌曲'} + }, + 'emptyTxt':'未搜索到相关音乐结果,请换一个关键词试试。', + 'chapter':'歌曲', + 'singer':'歌手', + 'special':'专辑', + 'listenTest':'试听' + }, + 'anchor':{ + 'static':{ + 'lang_input_anchorName':'锚点名字:' + } + }, + 'charts':{ + 'static':{ + 'lang_data_source':'数据源:', + 'lang_chart_format': '图表格式:', + 'lang_data_align': '数据对齐方式', + 'lang_chart_align_same': '数据源与图表X轴Y轴一致', + 'lang_chart_align_reverse': '数据源与图表X轴Y轴相反', + 'lang_chart_title': '图表标题', + 'lang_chart_main_title': '主标题:', + 'lang_chart_sub_title': '子标题:', + 'lang_chart_x_title': 'X轴标题:', + 'lang_chart_y_title': 'Y轴标题:', + 'lang_chart_tip': '提示文字', + 'lang_cahrt_tip_prefix': '提示文字前缀:', + 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀', + 'lang_chart_data_unit': '数据单位', + 'lang_chart_data_unit_title': '单位:', + 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃', + 'lang_chart_type': '图表类型:', + 'lang_prev_btn': '上一个', + 'lang_next_btn': '下一个' + } + }, + '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':'有啊' + } + }, + 'gmap':{ + 'static':{ + 'lang_input_address':'地址', + 'lang_input_search':'搜索', + 'address':{value:"北京"} + }, + searchError:'无法定位到该地址!' + }, + 'help':{ + 'static':{ + 'lang_input_about':'关于UEditor', + 'lang_input_shortcuts':'快捷键', + 'lang_input_introduction':'UEditor是由百度web前端研发部开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。开源基于BSD协议,允许自由使用和修改代码。', + '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://前缀' + }, + 'map':{ + 'static':{ + lang_city:"城市", + lang_address:"地址", + city:{value:"北京"}, + lang_search:"搜索", + lang_dynamicmap:"插入动态地图" + }, + cityMsg:"请选择城市", + errorMsg:"抱歉,找不到该位置!" + }, + '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}处!" + }, + 'snapscreen':{ + 'static':{ + lang_showMsg:"截图功能需要首先安装UEditor截图插件! ", + lang_download:"点此下载", + lang_step1:"第一步,下载UEditor截图插件并运行安装。", + lang_step2:"第二步,插件安装完成后即可使用,如不生效,请重启浏览器后再试!" + } + }, + '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':{} //留空默认中文 + }, + 'autosave': { + 'saving':'保存中...', + 'success':'本地保存成功' + } +}; diff --git a/yshop-drink-vue3/public/UEditor/themes/default/css/ueditor.css b/yshop-drink-vue3/public/UEditor/themes/default/css/ueditor.css new file mode 100644 index 0000000..ff5dd50 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/themes/default/css/ueditor.css @@ -0,0 +1,1904 @@ +/*基础UI构建 +*/ +/* common layer */ +.edui-default .edui-box { + border: none; + padding: 0; + margin: 0; + overflow: hidden; +} + +.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: top; +} + +.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: default; +} + +.edui-default span.edui-clickable { + color: blue; + cursor: pointer; + text-decoration: underline; +} + +.edui-default span.edui-unclickable { + color: gray; + cursor: default; +} +/* 工具栏 */ +.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 { + z-index: 1 !important; + 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; +} + +.edui-default .edui-editor-breadcrumb span { + cursor: pointer; + text-decoration: underline; + color: blue; +} + +.edui-default .edui-toolbar .edui-for-fullscreen { + float: right; +} + +.edui-default .edui-bubble .edui-popup-content { + border: 1px solid #DCAC6C; + background-color: #fff6d9; + padding: 5px; + font-size: 10pt; + font-family: "宋体"; +} + +.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; +} + +.edui-default .edui-list .edui-state-hover { + position: relative; + background-color: #fff5d4; + border: 1px solid #dcac6c; + padding: 0; +} + +.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; + +} + +.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: 20px; + 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; +} + +.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 { + background: url("../images/icons-all.gif") no-repeat 6px -205px; +} + +.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: 20px; + line-height: 20px; + padding-left: 5px; + white-space: nowrap; + margin: 0 3px 0 0; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + background: url(../images/icons.png) -741px 0; + _background: url(../images/icons.gif) -741px 0; + height: 20px; + width: 9px; +} + +.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-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; + filter: alpha(opacity = 30); +} + +.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: 20px !important; + width: 20px !important; + background-image: url(../images/icons.png); + background-image: url(../images/icons.gif) \9; +} + +.edui-default .edui-toolbar .edui-button .edui-button-wrap { + padding: 1px; + position: relative; +} + +.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap { + background-color: #fff5d4; + padding: 0; + border: 1px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap { + background-color: #ffe69f; + padding: 0; + border: 1px solid #dcac6c; + 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); +} + +/* toolbar icons */ +.edui-default .edui-for-undo .edui-icon { + background-position: -160px 0; +} + +.edui-default .edui-for-redo .edui-icon { + background-position: -100px 0; +} + +.edui-default .edui-for-bold .edui-icon { + background-position: 0 0; +} + +.edui-default .edui-for-italic .edui-icon { + background-position: -60px 0; +} + +.edui-default .edui-for-fontborder .edui-icon { + background-position:-160px -40px; +} +.edui-default .edui-for-underline .edui-icon { + background-position: -140px 0; +} + +.edui-default .edui-for-strikethrough .edui-icon { + background-position: -120px 0; +} + +.edui-default .edui-for-subscript .edui-icon { + background-position: -600px 0; +} + +.edui-default .edui-for-superscript .edui-icon { + background-position: -620px 0; +} + +.edui-default .edui-for-blockquote .edui-icon { + background-position: -220px 0; +} + +.edui-default .edui-for-forecolor .edui-icon { + background-position: -720px 0; +} + +.edui-default .edui-for-backcolor .edui-icon { + background-position: -760px 0; +} + +.edui-default .edui-for-inserttable .edui-icon { + background-position: -580px -20px; +} + +.edui-default .edui-for-autotypeset .edui-icon { + background-position: -640px -40px; +} + +.edui-default .edui-for-justifyleft .edui-icon { + background-position: -460px 0; +} + +.edui-default .edui-for-justifycenter .edui-icon { + background-position: -420px 0; +} + +.edui-default .edui-for-justifyright .edui-icon { + background-position: -480px 0; +} + +.edui-default .edui-for-justifyjustify .edui-icon { + background-position: -440px 0; +} + +.edui-default .edui-for-insertorderedlist .edui-icon { + background-position: -80px 0; +} + +.edui-default .edui-for-insertunorderedlist .edui-icon { + background-position: -20px 0; +} + +.edui-default .edui-for-lineheight .edui-icon { + background-position: -725px -40px; +} + +.edui-default .edui-for-rowspacingbottom .edui-icon { + background-position: -745px -40px; +} + +.edui-default .edui-for-rowspacingtop .edui-icon { + background-position: -765px -40px; +} + +.edui-default .edui-for-horizontal .edui-icon { + background-position: -360px 0; +} + +.edui-default .edui-for-link .edui-icon { + background-position: -500px 0; +} + +.edui-default .edui-for-code .edui-icon { + background-position: -440px -40px; +} + +.edui-default .edui-for-insertimage .edui-icon { + background-position: -726px -77px; +} + +.edui-default .edui-for-insertframe .edui-icon { + background-position: -240px -40px; +} + +.edui-default .edui-for-emoticon .edui-icon { + background-position: -60px -20px; +} + +.edui-default .edui-for-spechars .edui-icon { + background-position: -240px 0; +} + +.edui-default .edui-for-help .edui-icon { + background-position: -340px 0; +} + +.edui-default .edui-for-print .edui-icon { + background-position: -440px -20px; +} + +.edui-default .edui-for-preview .edui-icon { + background-position: -420px -20px; +} + +.edui-default .edui-for-selectall .edui-icon { + background-position: -400px -20px; +} + +.edui-default .edui-for-searchreplace .edui-icon { + background-position: -520px -20px; +} + +.edui-default .edui-for-map .edui-icon { + background-position: -40px -40px; +} + +.edui-default .edui-for-gmap .edui-icon { + background-position: -260px -40px; +} + +.edui-default .edui-for-insertvideo .edui-icon { + background-position: -320px -20px; +} + +.edui-default .edui-for-time .edui-icon { + background-position: -160px -20px; +} + +.edui-default .edui-for-date .edui-icon { + background-position: -140px -20px; +} + +.edui-default .edui-for-cut .edui-icon { + background-position: -680px 0; +} + +.edui-default .edui-for-copy .edui-icon { + background-position: -700px 0; +} + +.edui-default .edui-for-paste .edui-icon { + background-position: -560px 0; +} + +.edui-default .edui-for-formatmatch .edui-icon { + background-position: -40px 0; +} + +.edui-default .edui-for-pasteplain .edui-icon { + background-position: -360px -20px; +} + +.edui-default .edui-for-directionalityltr .edui-icon { + background-position: -20px -20px; +} + +.edui-default .edui-for-directionalityrtl .edui-icon { + background-position: -40px -20px; +} + +.edui-default .edui-for-source .edui-icon { + background-position: -261px -0px; +} + +.edui-default .edui-for-removeformat .edui-icon { + background-position: -580px 0; +} + +.edui-default .edui-for-unlink .edui-icon { + background-position: -640px 0; +} + +.edui-default .edui-for-touppercase .edui-icon { + background-position: -786px 0; +} + +.edui-default .edui-for-tolowercase .edui-icon { + background-position: -806px 0; +} + +.edui-default .edui-for-insertrow .edui-icon { + background-position: -478px -76px; +} + +.edui-default .edui-for-insertrownext .edui-icon { + background-position: -498px -76px; +} + +.edui-default .edui-for-insertcol .edui-icon { + background-position: -455px -76px; +} + +.edui-default .edui-for-insertcolnext .edui-icon { + background-position: -429px -76px; +} + +.edui-default .edui-for-mergeright .edui-icon { + background-position: -60px -40px; +} + +.edui-default .edui-for-mergedown .edui-icon { + background-position: -80px -40px; +} + +.edui-default .edui-for-splittorows .edui-icon { + background-position: -100px -40px; +} + +.edui-default .edui-for-splittocols .edui-icon { + background-position: -120px -40px; +} + +.edui-default .edui-for-insertparagraphbeforetable .edui-icon { + background-position: -140px -40px; +} + +.edui-default .edui-for-deleterow .edui-icon { + background-position: -660px -20px; +} + +.edui-default .edui-for-deletecol .edui-icon { + background-position: -640px -20px; +} + +.edui-default .edui-for-splittocells .edui-icon { + background-position: -800px -20px; +} + +.edui-default .edui-for-mergecells .edui-icon { + background-position: -760px -20px; +} + +.edui-default .edui-for-deletetable .edui-icon { + background-position: -620px -20px; +} + +.edui-default .edui-for-cleardoc .edui-icon { + background-position: -520px 0; +} + +.edui-default .edui-for-fullscreen .edui-icon { + background-position: -100px -20px; +} + +.edui-default .edui-for-anchor .edui-icon { + background-position: -200px 0; +} + +.edui-default .edui-for-pagebreak .edui-icon { + background-position: -460px -40px; +} + +.edui-default .edui-for-imagenone .edui-icon { + background-position: -480px -40px; +} + +.edui-default .edui-for-imageleft .edui-icon { + background-position: -500px -40px; +} + +.edui-default .edui-for-wordimage .edui-icon { + background-position: -660px -40px; +} + +.edui-default .edui-for-imageright .edui-icon { + background-position: -520px -40px; +} + +.edui-default .edui-for-imagecenter .edui-icon { + background-position: -540px -40px; +} + +.edui-default .edui-for-indent .edui-icon { + background-position: -400px 0; +} + +.edui-default .edui-for-outdent .edui-icon { + background-position: -540px 0; +} + +.edui-default .edui-for-webapp .edui-icon { + background-position: -601px -40px +} + +.edui-default .edui-for-table .edui-icon { + background-position: -580px -20px; +} + +.edui-default .edui-for-edittable .edui-icon { + background-position: -420px -40px; +} + +.edui-default .edui-for-template .edui-icon { + background-position: -339px -40px; +} + +.edui-default .edui-for-delete .edui-icon { + background-position: -360px -40px; +} + +.edui-default .edui-for-attachment .edui-icon { + background-position: -620px -40px; +} + +.edui-default .edui-for-edittd .edui-icon { + background-position: -700px -40px; +} + +.edui-default .edui-for-snapscreen .edui-icon { + background-position: -581px -40px +} + +.edui-default .edui-for-scrawl .edui-icon { + background-position: -801px -41px +} + +.edui-default .edui-for-background .edui-icon { + background-position: -680px -40px; +} + +.edui-default .edui-for-music .edui-icon { + background-position: -18px -40px +} + +.edui-default .edui-for-formula .edui-icon { + background-position: -200px -40px +} + +.edui-default .edui-for-aligntd .edui-icon { + background-position: -236px -76px; +} + +.edui-default .edui-for-insertparagraphtrue .edui-icon { + background-position: -625px -76px; +} + +.edui-default .edui-for-insertparagraph .edui-icon { + background-position: -602px -76px; +} + +.edui-default .edui-for-insertcaption .edui-icon { + background-position: -336px -76px; +} + +.edui-default .edui-for-deletecaption .edui-icon { + background-position: -362px -76px; +} + +.edui-default .edui-for-inserttitle .edui-icon { + background-position: -286px -76px; +} + +.edui-default .edui-for-deletetitle .edui-icon { + background-position: -311px -76px; +} + +.edui-default .edui-for-aligntable .edui-icon { + background-position: -440px 0; +} + +.edui-default .edui-for-tablealignment-left .edui-icon { + background-position: -460px 0; +} + +.edui-default .edui-for-tablealignment-center .edui-icon { + background-position: -420px 0; +} + +.edui-default .edui-for-tablealignment-right .edui-icon { + background-position: -480px 0; +} + +.edui-default .edui-for-drafts .edui-icon { + background-position: -560px 0; +} + +.edui-default .edui-for-charts .edui-icon { + background: url( ../images/charts.png ) no-repeat 2px 3px!important; +} + +.edui-default .edui-for-inserttitlecol .edui-icon { + background-position: -673px -76px; +} + +.edui-default .edui-for-deletetitlecol .edui-icon { + background-position: -698px -76px; +} + +.edui-default .edui-for-simpleupload .edui-icon { + background-position: -380px 0px; +} +/*splitbutton*/ +.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow, +.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow { + background: url(../images/icons.png) -741px 0; + _background: url(../images/icons.gif) -741px 0; + height: 20px; + width: 9px; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body { + padding: 1px; +} + +.edui-default .edui-toolbar .edui-splitborder { + width: 1px; + height: 20px; +} + +.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 gray; +} + +.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: #fff5d4; + border: 1px solid #dcac6c; + 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: #FFE69F; + border: 1px solid #DCAC6C; + 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 gray; + 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 gray; + 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; + +} + +.edui-default .edui-popup .edui-shadow { + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.edui-default .edui-popup-content { + border:1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + padding: 5px; + background:#ffffff; +} + +.edui-default .edui-popup .edui-bordereraser { + background-color: white; + 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: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -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; +} + +.edui-default .edui-dialog-titlebar { + height: 26px; + border-bottom: 1px solid #c6c6c6; + background: url(../images/dialog-title-bg.png) repeat-x bottom; + position: relative; + cursor: move; +} +.edui-default .edui-dialog-caption { + font-weight: bold; + font-size: 12px; + line-height: 26px; + padding-left: 5px; +} + +.edui-default .edui-dialog-draghandle { + height: 26px; +} + +.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; + background: url("../images/icons-all.gif") no-repeat 0 -59px; +} + +.edui-default .edui-dialog-closebutton .edui-state-hover .edui-button-body { + background: url("../images/icons-all.gif") no-repeat 0 -89px; +} + +.edui-default .edui-dialog-foot { + height: 40px; +} + +.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 { + background: url("../images/icons-all.gif") no-repeat; + height: 24px; + width: 96px; + font-size: 12px; + line-height: 24px; + text-align: center; + cursor: default; +} + +.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body { + background: url("../images/icons-all.gif") no-repeat 0 -30px; +} + +.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; +} +/*webapp-dialog*/ +.edui-default .edui-for-webapp .edui-dialog-content { + width: 560px; + _width: 565px; + height: 450px; + overflow: hidden; +} + +/*image-insertframe*/ +.edui-default .edui-for-insertframe .edui-dialog-content { + width: 350px; + height: 200px; + overflow: hidden; +} + +/*wordImage-dialog*/ +.edui-default .edui-for-wordimage .edui-dialog-content { + width: 620px; + height: 380px; + 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; +} + +/*gmap-dialog*/ +.edui-default .edui-for-gmap .edui-dialog-content { + width: 550px; + height: 400px; +} + +/*video-dialog*/ +.edui-default .edui-for-insertvideo .edui-dialog-content { + width: 590px; + height: 390px; +} + +/*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; +} +/*snapscreen-dialog*/ +.edui-default .edui-for-snapscreen .edui-dialog-content { + width: 400px; + height: 220px; +} + +/*music-dialog*/ +.edui-default .edui-for-music .edui-dialog-content { + width: 515px; + height: 360px; +} + +/*段落弹出菜单*/ +.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: 24px; +} + +.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; +} + +.edui-default .edui-colorpicker-nocolor { + float: right; + margin-right: 1px; + font-size: 12px; + line-height: 14px; + height: 14px; + border: 1px solid #333; + padding: 3px 5px; + cursor: pointer; +} + +.edui-default .edui-colorpicker-tablefirstrow { + height: 30px; +} + +.edui-default .edui-colorpicker-colorcell { + width: 14px; + height: 14px; + display: block; + margin: 0; + cursor: pointer; +} + +.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: 2px; + height: 20px; + margin: 2px 4px 2px 3px; + background: url(../images/icons.png) -181px 0; + background: url(../images/icons.gif) -181px 0 \9; +} + +/*颜色按钮 */ +.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump { + position: absolute; + overflow: hidden; + bottom: 1px; + left: 1px; + width: 18px; + height: 4px; +} +/*表情按钮及弹出菜单*/ +/*去除了表情的下拉箭头*/ +.edui-default .edui-for-emotion .edui-icon { + background-position: -60px -20px; +} +.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; +} + +.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: #fff5d4; + border: 1px solid #dcac6c; +} +/*弹出菜单*/ +.edui-default .edui-shortcutmenu { + padding: 2px; + width: 190px; + height: 50px; + 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/yshop-drink-vue3/public/UEditor/themes/default/css/ueditor.min.css b/yshop-drink-vue3/public/UEditor/themes/default/css/ueditor.min.css new file mode 100644 index 0000000..8dd924f --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/themes/default/css/ueditor.min.css @@ -0,0 +1,8 @@ +/*! + * UEditor + * version: ueditor + * build: Wed Dec 26 2018 17:25:05 GMT+0800 (CST) + */ + + +.edui-default .edui-box{border:0;padding:0;margin:0;overflow:hidden}.edui-default a.edui-box{display:block;text-decoration:none;color:#000}.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:top}.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}.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}.edui-default .edui-label{cursor:default}.edui-default span.edui-clickable{color:#00f;cursor:pointer;text-decoration:underline}.edui-default span.edui-unclickable{color:gray;cursor:default}.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}.edui-default .edui-editor{border:1px solid #d4d4d4;background-color:#fff;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,.6);-moz-box-shadow:0 1px 4px rgba(204,204,204,.6);box-shadow:0 1px 4px rgba(204,204,204,.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,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;-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,.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,.065);box-shadow:0 1px 4px rgba(0,0,0,.065)}.edui-default .edui-editor-toolbarboxinner{padding:2px}.edui-default .edui-editor-iframeholder{position:relative}.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}.edui-default .edui-editor-breadcrumb span{cursor:pointer;text-decoration:underline;color:#00f}.edui-default .edui-toolbar .edui-for-fullscreen{float:right}.edui-default .edui-bubble .edui-popup-content{border:1px solid #DCAC6C;background-color:#fff6d9;padding:5px;font-size:10pt;font-family:"宋体"}.edui-default .edui-bubble .edui-shadow{}.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:#00f;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}.edui-default .edui-list .edui-state-hover{position:relative;background-color:#fff5d4;border:1px solid #dcac6c;padding:0}.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}.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:20px;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}.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{background:url(../images/icons-all.gif) no-repeat 6px -205px}.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:20px;line-height:20px;padding-left:5px;white-space:nowrap;margin:0 3px 0 0}.edui-default .edui-toolbar .edui-combox-body .edui-arrow{background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0;height:20px;width:9px}.edui-default .edui-toolbar .edui-combox .edui-combox-body{border:1px solid #CCC;background-color:#fff;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px}.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:.3;filter:alpha(opacity=30)}.edui-toolbar .edui-state-opened .edui-combox-body{background-color:#fff;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:20px!important;width:20px!important;background-image:url(../images/icons.png);background-image:url(../images/icons.gif) \9}.edui-default .edui-toolbar .edui-button .edui-button-wrap{padding:1px;position:relative}.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap{background-color:#fff5d4;padding:0;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap{background-color:#ffe69f;padding:0;border:1px solid #dcac6c;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:#fff;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:.3;filter:alpha(opacity=30)}.edui-default .edui-for-undo .edui-icon{background-position:-160px 0}.edui-default .edui-for-redo .edui-icon{background-position:-100px 0}.edui-default .edui-for-bold .edui-icon{background-position:0 0}.edui-default .edui-for-italic .edui-icon{background-position:-60px 0}.edui-default .edui-for-fontborder .edui-icon{background-position:-160px -40px}.edui-default .edui-for-underline .edui-icon{background-position:-140px 0}.edui-default .edui-for-strikethrough .edui-icon{background-position:-120px 0}.edui-default .edui-for-subscript .edui-icon{background-position:-600px 0}.edui-default .edui-for-superscript .edui-icon{background-position:-620px 0}.edui-default .edui-for-blockquote .edui-icon{background-position:-220px 0}.edui-default .edui-for-forecolor .edui-icon{background-position:-720px 0}.edui-default .edui-for-backcolor .edui-icon{background-position:-760px 0}.edui-default .edui-for-inserttable .edui-icon{background-position:-580px -20px}.edui-default .edui-for-autotypeset .edui-icon{background-position:-640px -40px}.edui-default .edui-for-justifyleft .edui-icon{background-position:-460px 0}.edui-default .edui-for-justifycenter .edui-icon{background-position:-420px 0}.edui-default .edui-for-justifyright .edui-icon{background-position:-480px 0}.edui-default .edui-for-justifyjustify .edui-icon{background-position:-440px 0}.edui-default .edui-for-insertorderedlist .edui-icon{background-position:-80px 0}.edui-default .edui-for-insertunorderedlist .edui-icon{background-position:-20px 0}.edui-default .edui-for-lineheight .edui-icon{background-position:-725px -40px}.edui-default .edui-for-rowspacingbottom .edui-icon{background-position:-745px -40px}.edui-default .edui-for-rowspacingtop .edui-icon{background-position:-765px -40px}.edui-default .edui-for-horizontal .edui-icon{background-position:-360px 0}.edui-default .edui-for-link .edui-icon{background-position:-500px 0}.edui-default .edui-for-code .edui-icon{background-position:-440px -40px}.edui-default .edui-for-insertimage .edui-icon{background-position:-726px -77px}.edui-default .edui-for-insertframe .edui-icon{background-position:-240px -40px}.edui-default .edui-for-emoticon .edui-icon{background-position:-60px -20px}.edui-default .edui-for-spechars .edui-icon{background-position:-240px 0}.edui-default .edui-for-help .edui-icon{background-position:-340px 0}.edui-default .edui-for-print .edui-icon{background-position:-440px -20px}.edui-default .edui-for-preview .edui-icon{background-position:-420px -20px}.edui-default .edui-for-selectall .edui-icon{background-position:-400px -20px}.edui-default .edui-for-searchreplace .edui-icon{background-position:-520px -20px}.edui-default .edui-for-map .edui-icon{background-position:-40px -40px}.edui-default .edui-for-gmap .edui-icon{background-position:-260px -40px}.edui-default .edui-for-insertvideo .edui-icon{background-position:-320px -20px}.edui-default .edui-for-time .edui-icon{background-position:-160px -20px}.edui-default .edui-for-date .edui-icon{background-position:-140px -20px}.edui-default .edui-for-cut .edui-icon{background-position:-680px 0}.edui-default .edui-for-copy .edui-icon{background-position:-700px 0}.edui-default .edui-for-paste .edui-icon{background-position:-560px 0}.edui-default .edui-for-formatmatch .edui-icon{background-position:-40px 0}.edui-default .edui-for-pasteplain .edui-icon{background-position:-360px -20px}.edui-default .edui-for-directionalityltr .edui-icon{background-position:-20px -20px}.edui-default .edui-for-directionalityrtl .edui-icon{background-position:-40px -20px}.edui-default .edui-for-source .edui-icon{background-position:-261px -0px}.edui-default .edui-for-removeformat .edui-icon{background-position:-580px 0}.edui-default .edui-for-unlink .edui-icon{background-position:-640px 0}.edui-default .edui-for-touppercase .edui-icon{background-position:-786px 0}.edui-default .edui-for-tolowercase .edui-icon{background-position:-806px 0}.edui-default .edui-for-insertrow .edui-icon{background-position:-478px -76px}.edui-default .edui-for-insertrownext .edui-icon{background-position:-498px -76px}.edui-default .edui-for-insertcol .edui-icon{background-position:-455px -76px}.edui-default .edui-for-insertcolnext .edui-icon{background-position:-429px -76px}.edui-default .edui-for-mergeright .edui-icon{background-position:-60px -40px}.edui-default .edui-for-mergedown .edui-icon{background-position:-80px -40px}.edui-default .edui-for-splittorows .edui-icon{background-position:-100px -40px}.edui-default .edui-for-splittocols .edui-icon{background-position:-120px -40px}.edui-default .edui-for-insertparagraphbeforetable .edui-icon{background-position:-140px -40px}.edui-default .edui-for-deleterow .edui-icon{background-position:-660px -20px}.edui-default .edui-for-deletecol .edui-icon{background-position:-640px -20px}.edui-default .edui-for-splittocells .edui-icon{background-position:-800px -20px}.edui-default .edui-for-mergecells .edui-icon{background-position:-760px -20px}.edui-default .edui-for-deletetable .edui-icon{background-position:-620px -20px}.edui-default .edui-for-cleardoc .edui-icon{background-position:-520px 0}.edui-default .edui-for-fullscreen .edui-icon{background-position:-100px -20px}.edui-default .edui-for-anchor .edui-icon{background-position:-200px 0}.edui-default .edui-for-pagebreak .edui-icon{background-position:-460px -40px}.edui-default .edui-for-imagenone .edui-icon{background-position:-480px -40px}.edui-default .edui-for-imageleft .edui-icon{background-position:-500px -40px}.edui-default .edui-for-wordimage .edui-icon{background-position:-660px -40px}.edui-default .edui-for-imageright .edui-icon{background-position:-520px -40px}.edui-default .edui-for-imagecenter .edui-icon{background-position:-540px -40px}.edui-default .edui-for-indent .edui-icon{background-position:-400px 0}.edui-default .edui-for-outdent .edui-icon{background-position:-540px 0}.edui-default .edui-for-webapp .edui-icon{background-position:-601px -40px}.edui-default .edui-for-table .edui-icon{background-position:-580px -20px}.edui-default .edui-for-edittable .edui-icon{background-position:-420px -40px}.edui-default .edui-for-template .edui-icon{background-position:-339px -40px}.edui-default .edui-for-delete .edui-icon{background-position:-360px -40px}.edui-default .edui-for-attachment .edui-icon{background-position:-620px -40px}.edui-default .edui-for-edittd .edui-icon{background-position:-700px -40px}.edui-default .edui-for-snapscreen .edui-icon{background-position:-581px -40px}.edui-default .edui-for-scrawl .edui-icon{background-position:-801px -41px}.edui-default .edui-for-background .edui-icon{background-position:-680px -40px}.edui-default .edui-for-music .edui-icon{background-position:-18px -40px}.edui-default .edui-for-formula .edui-icon{background-position:-200px -40px}.edui-default .edui-for-aligntd .edui-icon{background-position:-236px -76px}.edui-default .edui-for-insertparagraphtrue .edui-icon{background-position:-625px -76px}.edui-default .edui-for-insertparagraph .edui-icon{background-position:-602px -76px}.edui-default .edui-for-insertcaption .edui-icon{background-position:-336px -76px}.edui-default .edui-for-deletecaption .edui-icon{background-position:-362px -76px}.edui-default .edui-for-inserttitle .edui-icon{background-position:-286px -76px}.edui-default .edui-for-deletetitle .edui-icon{background-position:-311px -76px}.edui-default .edui-for-aligntable .edui-icon{background-position:-440px 0}.edui-default .edui-for-tablealignment-left .edui-icon{background-position:-460px 0}.edui-default .edui-for-tablealignment-center .edui-icon{background-position:-420px 0}.edui-default .edui-for-tablealignment-right .edui-icon{background-position:-480px 0}.edui-default .edui-for-drafts .edui-icon{background-position:-560px 0}.edui-default .edui-for-charts .edui-icon{background:url( ../images/charts.png ) no-repeat 2px 3px!important}.edui-default .edui-for-inserttitlecol .edui-icon{background-position:-673px -76px}.edui-default .edui-for-deletetitlecol .edui-icon{background-position:-698px -76px}.edui-default .edui-for-simpleupload .edui-icon{background-position:-380px 0}.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow,.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow{background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0;height:20px;width:9px}.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body{padding:1px}.edui-default .edui-toolbar .edui-splitborder{width:1px;height:20px}.edui-default .edui-toolbar .edui-state-hover .edui-splitborder{width:1px;border-left:0 solid #dcac6c}.edui-default .edui-toolbar .edui-state-active .edui-splitborder{width:0;border-left:1px solid gray}.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:#fff5d4;border:1px solid #dcac6c;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:#FFE69F;border:1px solid #DCAC6C;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:#fff;border:1px solid gray;padding:0}.edui-default .edui-state-disabled .edui-arrow{opacity:.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:#fff;border:1px solid gray;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:#fff}.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-image:none}.edui-default .edui-popup{z-index:3000;background-color:#fff;width:auto;height:auto}.edui-default .edui-popup .edui-shadow{left:0;top:0;width:100%;height:100%}.edui-default .edui-popup-content{border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 4px rgba(0,0,0,.2);-moz-box-shadow:0 3px 4px rgba(0,0,0,.2);box-shadow:0 3px 4px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;padding:5px;background:#fff}.edui-default .edui-popup .edui-bordereraser{background-color:#fff;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,.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:700;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:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.edui-default .edui-dialog-foot{background-color:#fff}.edui-default .edui-dialog-titlebar{height:26px;border-bottom:1px solid #c6c6c6;background:url(../images/dialog-title-bg.png) repeat-x bottom;position:relative;cursor:move}.edui-default .edui-dialog-caption{font-weight:700;font-size:12px;line-height:26px;padding-left:5px}.edui-default .edui-dialog-draghandle{height:26px}.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;background:url(../images/icons-all.gif) no-repeat 0 -59px}.edui-default .edui-dialog-closebutton .edui-state-hover .edui-button-body{background:url(../images/icons-all.gif) no-repeat 0 -89px}.edui-default .edui-dialog-foot{height:40px}.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{background:url(../images/icons-all.gif) no-repeat;height:24px;width:96px;font-size:12px;line-height:24px;text-align:center;cursor:default}.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body{background:url(../images/icons-all.gif) no-repeat 0 -30px}.edui-default .edui-dialog iframe{border:0;padding:0;margin:0;vertical-align:top}.edui-default .edui-dialog-modalmask{opacity:.3;filter:alpha(opacity=30);background-color:#ccc;position:absolute}.edui-default .edui-dialog-dragmask{position:absolute;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)}.edui-default .edui-for-link .edui-dialog-content{width:420px;height:200px;overflow:hidden}.edui-default .edui-for-background .edui-dialog-content{width:440px;height:280px;overflow:hidden}.edui-default .edui-for-template .edui-dialog-content{width:630px;height:390px;overflow:hidden}.edui-default .edui-for-scrawl .edui-dialog-content{width:515px;*width:506px;height:360px}.edui-default .edui-for-spechars .edui-dialog-content{width:620px;height:500px;*width:630px;*height:570px}.edui-default .edui-for-insertimage .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-webapp .edui-dialog-content{width:560px;_width:565px;height:450px;overflow:hidden}.edui-default .edui-for-insertframe .edui-dialog-content{width:350px;height:200px;overflow:hidden}.edui-default .edui-for-wordimage .edui-dialog-content{width:620px;height:380px;overflow:hidden}.edui-default .edui-for-attachment .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-map .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-gmap .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-insertvideo .edui-dialog-content{width:590px;height:390px}.edui-default .edui-for-anchor .edui-dialog-content{width:320px;height:60px;overflow:hidden}.edui-default .edui-for-searchreplace .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-help .edui-dialog-content{width:400px;height:420px}.edui-default .edui-for-edittable .edui-dialog-content{width:540px;_width:590px;height:335px}.edui-default .edui-for-edittip .edui-dialog-content{width:225px;height:60px}.edui-default .edui-for-edittd .edui-dialog-content{width:240px;height:50px}.edui-default .edui-for-snapscreen .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-music .edui-dialog-content{width:515px;height:360px}.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:24px}.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}.edui-default .edui-colorpicker-preview{height:20px;border:1px inset #000;margin-left:1px;width:128px;float:left}.edui-default .edui-colorpicker-nocolor{float:right;margin-right:1px;font-size:12px;line-height:14px;height:14px;border:1px solid #333;padding:3px 5px;cursor:pointer}.edui-default .edui-colorpicker-tablefirstrow{height:30px}.edui-default .edui-colorpicker-colorcell{width:14px;height:14px;display:block;margin:0;cursor:pointer}.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:#fff url(../images/arrow_down.png) no-repeat center}.arrow_up{background:#fff 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) 0 -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 #000;background:#fff;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}.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:2px;height:20px;margin:2px 4px 2px 3px;background:url(../images/icons.png) -181px 0;background:url(../images/icons.gif) -181px 0 \9}.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump{position:absolute;overflow:hidden;bottom:1px;left:1px;width:18px;height:4px}.edui-default .edui-for-emotion .edui-icon{background-position:-60px -20px}.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}.edui-default .edui-hassubmenu .edui-arrow{height:20px;width:20px;float:right;background:url(../images/icons-all.gif) no-repeat 10px -233px}.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:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-shortcutmenu{padding:2px;width:190px;height:50px;background-color:#fff;border:1px solid #ccc;border-radius:5px}.edui-default .edui-wordpastepop .edui-popup-content{border:0;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:700;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/yshop-drink-vue3/public/UEditor/themes/default/dialogbase.css b/yshop-drink-vue3/public/UEditor/themes/default/dialogbase.css new file mode 100644 index 0000000..ea71266 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/themes/default/dialogbase.css @@ -0,0 +1,100 @@ +/*弹出对话框页面样式组件 +*/ + +/*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: url("images/dialog-title-bg.png") repeat-x; + text-align: center; + line-height: 30px; + cursor: pointer; + *margin-right: 5px; +} + +.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; +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/themes/default/images/anchor.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/arrow_down.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/arrow_up.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/button-bg.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/cancelbutton.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/cursor_h.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/cursor_v.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/filescan.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/highlighted.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/icons-all.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/icons.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/loaderror.png b/yshop-drink-vue3/public/UEditor/themes/default/images/loaderror.png new file mode 100644 index 0000000000000000000000000000000000000000..35ff3336457d48dbecbc11698ef8245441a94f82 GIT binary patch literal 3209 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 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor/themes/default/images/loading.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/pagebreak.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/sortable.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/spacer.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/sparator_v.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/table-cell-align.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/toolbar_bg.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/unhighlighted.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/upload.png b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/default/images/word.gif b/yshop-drink-vue3/public/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/yshop-drink-vue3/public/UEditor/themes/iframe.css b/yshop-drink-vue3/public/UEditor/themes/iframe.css new file mode 100644 index 0000000..32e7222 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/themes/iframe.css @@ -0,0 +1 @@ +/*可以在这里添加你自己的css*/ diff --git a/yshop-drink-vue3/public/UEditor/third-party/SyntaxHighlighter/shCore.js b/yshop-drink-vue3/public/UEditor/third-party/SyntaxHighlighter/shCore.js new file mode 100644 index 0000000..27e59fa --- /dev/null +++ b/yshop-drink-vue3/public/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(attrs.hasOwnProperty(attr)){ + var value = attrs[attr]; + switch (attr) { + case 'class': + //ie下要这样赋值,setAttribute不起作用 + node.className = value; + break; + case 'style' : + node.style.cssText = node.style.cssText + ";" + value; + break; + case 'innerHTML': + node[attr] = value; + break; + case 'value': + node.value = value; + break; + default: + node.setAttribute(attrFix[attr] || attr, value); + } + } + } + return node; + }, + + /** + * 获取元素element经过计算后的样式值 + * @method getComputedStyle + * @param { Element } element 需要获取样式的元素对象 + * @param { String } styleName 需要获取的样式名 + * @return { String } 获取到的样式值 + * @example + * ```html + * + * + * + * + * + * ``` + */ + 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) { + // HaoChuan9421 + if(!node){ + return; + } + 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); + 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 + * + * + * + * + * + * + * + * + * ``` + */ + + /** + * 遍历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.textarea) { + if (utils.isString(editor.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", + 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 html = ( ie && browser.version < 9 ? '' : '') + + '' + + '' + + ( options.iframeCssUrl ? '' : '' ) + + (options.initialStyle ? '' : '') + + '' + + ''; + 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); + }, + + /** + * 设置编辑器高度 + * @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; + } + } + } + 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) { + // HaoChuan9421 + if(!this.options){ + return ''; + } + 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', + 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); + 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=)/ig.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( //ig, "" ) + //转换图片 + .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/ig, 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('<\/' + node.tagName + '>'); + } + + } + + 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 原来的方式 [^"'<>\/] 有\/就不能配对上 ') + } + html.push('') + } + //禁止指定table-width + return '
    这样的标签了 + //先去掉了,加上的原因忘了,这里先记录 + var re_tag = /<(?:(?:\/([^>]+)>)|(?:!--([\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?'':' ')+']*<\/?(\\w+)\\s*(?:[^>]*)>[\\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 || getUserData() || null, + LOCAL_FILE = 'localStorage'; + + return { + + saveLocalData: function (key, data) { + + if (storage && data) { + storage.setItem(key, data); + return true; + } + + return false; + + }, + + getLocalData: function (key) { + + if (storage) { + return storage.getItem(key); + } + + return null; + + }, + + removeItem: function (key) { + + storage && storage.removeItem(key); + + } + + }; + + function getUserData() { + + var container = document.createElement("div"); + container.style.display = "none"; + + if (!container.addBehavior) { + return null; + } + + container.addBehavior("#default#userdata"); + + return { + + getItem: function (key) { + + var result = null; + + try { + document.body.appendChild(container); + container.load(LOCAL_FILE); + result = container.getAttribute(key); + document.body.removeChild(container); + } catch (e) { + } + + return result; + + }, + + setItem: function (key, value) { + + document.body.appendChild(container); + container.setAttribute(key, value); + container.save(LOCAL_FILE); + document.body.removeChild(container); + + }, + + //// 暂时没有用到 + //clear: function () { + // + // var expiresTime = new Date(); + // expiresTime.setFullYear(expiresTime.getFullYear() - 1); + // document.body.appendChild(container); + // container.expires = expiresTime.toUTCString(); + // container.save(LOCAL_FILE); + // document.body.removeChild(container); + // + //}, + + removeItem: function (key) { + + document.body.appendChild(container); + container.removeAttribute(key); + container.save(LOCAL_FILE); + document.body.removeChild(container); + + } + + }; + + } + +})(); + +(function () { + + var ROOTKEY = 'ueditor_preference'; + + UE.Editor.prototype.setPreferences = function(key,value){ + var obj = {}; + if (utils.isString(key)) { + obj[ key ] = value; + } else { + obj = key; + } + var data = LocalStorage.getLocalData(ROOTKEY); + if (data && (data = utils.str2json(data))) { + utils.extend(data, obj); + } else { + data = obj; + } + data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data)); + }; + + UE.Editor.prototype.getPreferences = function(key){ + var data = LocalStorage.getLocalData(ROOTKEY); + if (data && (data = utils.str2json(data))) { + return key ? data[key] : data + } + return null; + }; + + UE.Editor.prototype.removePreferences = function (key) { + var data = LocalStorage.getLocalData(ROOTKEY); + if (data && (data = utils.str2json(data))) { + data[key] = undefined; + delete data[key] + } + data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data)); + }; + +})(); + + +// plugins/defaultfilter.js +///import core +///plugin 编辑器默认的过滤转换机制 + +UE.plugins['defaultfilter'] = function () { + var me = this; + me.setOpt({ + 'allowDivTransToP':true, + 'disabledTableInTable':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) + } + 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(/"|\(|\)/ig, ""); + } else { + url = su != "none" ? su.replace(/url\("?|"?\)/ig, "") : ""; + } + 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; + } + + function unhtmlData(imgCi) { + + utils.each('width,height,border,hspace,vspace'.split(','), function (item) { + + if (imgCi[item]) { + imgCi[item] = parseInt(imgCi[item], 10) || 0; + } + }); + + utils.each('src,_src'.split(','), function (item) { + + if (imgCi[item]) { + imgCi[item] = utils.unhtmlForUrl(imgCi[item]); + } + }); + utils.each('title,alt'.split(','), function (item) { + + if (imgCi[item]) { + imgCi[item] = utils.unhtml(imgCi[item]); + } + }); + } + + if (img && /img/i.test(img.tagName) && (img.className != "edui-faked-video" || img.className.indexOf("edui-upload-video")!=-1) && !img.getAttribute("word_img")) { + 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) { + unhtmlData(ci); + + str = '' + ci.alt + ''; + if (ci['floatStyle'] == 'center') { + str = '

    ' + str + '

    '; + } + html.push(str); + + } else { + for (var i = 0; ci = opt[i++];) { + unhtmlData(ci); + 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 + 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,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/ig, hh).replace(/ii/ig, ii).replace(/ss/ig, 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/ig, yyyy).replace(/yy/ig, yy).replace(/mm/ig, mm).replace(/dd/ig, 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.]*/ig,""); + } + } + }; +}; + + + + +// plugins/insertcode.js +/** + * 插入代码插件 + * @file + * @since 1.2.6.1 + */ + +UE.plugins['insertcode'] = function() { + var me = this; + me.ready(function(){ + utils.cssRule('pre','pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}', + me.document) + }); + 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')){ + 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 = []; + 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("word_img"); + 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("word_img")) { + 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, + word_img: 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/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 + '|<\/hr>', '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 (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(); + }); + } + + 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; + } + }; + }, + 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; + } + }; + } + }; + + UE.plugins['source'] = function (){ + var me = this; + var opt = this.options; + var sourceMode = false; + var sourceEditor; + var orgSetContent; + 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 ? '' : '
    ')+'

    '; + }; + } else { + me.iframe.style.cssText = bakCssText; + var cont = sourceEditor.getContent() || '

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

    '; + //处理掉block节点前后的空格,有可能会误命中,暂时不考虑 + cont = cont.replace(new RegExp('[\\r\\t\\n ]*<\/?(\\w+)\\s*(?:[^>]*)>','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; + 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" + }); + + }); + } + + }; + +})(); + +// 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; + } + } + } + }); + 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) { + + var range = me.selection.getRange(), + img = range.getClosedNode(); + + if (img && img.tagName == 'IMG' && me.body.contentEditable!="false") { + + if (img.className.indexOf("edui-faked-music") != -1 || + 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' && 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?:\/\/)/ig.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 () { + 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); + + }); + //修复内容过多时,回到顶部,顶部内容被工具栏遮挡问题 + var lastScrollY; + window.onscroll = function(){ + if(lastScrollY === null){ + lastScrollY = this.scrollY + }else if(this.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; + } + + 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){ + + url = utils.unhtmlForUrl(url); + align = utils.unhtml(align); + classname = utils.unhtml(classname).trim(); + + width = parseInt(width, 10) || 0; + height = parseInt(height, 10) || 0; + + var str; + switch (type){ + case 'image': + str = '' + break; + case 'embed': + str = ''; + break; + case 'video': + var ext = url.substr(url.lastIndexOf('.') + 1); + if(ext == 'ogv') ext = 'ogg'; + str = '' + + ''; + break; + } + return str; + } + + function switchImgAndVideo(root,img2video){ + utils.each(root.getNodesByTagName(img2video ? 'img' : 'embed video'),function(node){ + var className = node.getAttr('class'); + if(className && className.indexOf('edui-faked-video') != -1){ + var html = creatInsertStr( img2video ? node.getAttr('_url') : node.getAttr('src'),node.getAttr('width'),node.getAttr('height'),null,node.getStyle('float') || '',className,img2video ? 'embed':'image'); + node.parentNode.replaceChild(UE.uNode.createElement(html),node); + } + if(className && className.indexOf('edui-upload-video') != -1){ + var html = creatInsertStr( img2video ? node.getAttr('_url') : node.getAttr('src'),node.getAttr('width'),node.getAttr('height'),null,node.getStyle('float') || '',className,img2video ? 'video':'image'); + node.parentNode.replaceChild(UE.uNode.createElement(html),node); + } + }) + } + + me.addOutputRule(function(root){ + switchImgAndVideo(root,true) + }); + me.addInputRule(function(root){ + switchImgAndVideo(root) + }); + + /** + * 插入视频 + * @command insertvideo + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Object } videoAttr 键值对对象, 描述一个视频的所有属性 + * @example + * ```javascript + * + * var videoAttr = { + * //视频地址 + * url: 'http://www.youku.com/xxx', + * //视频宽高值, 单位px + * width: 200, + * height: 100 + * }; + * + * //editor 是编辑器实例 + * //向编辑器插入单个视频 + * editor.execCommand( 'insertvideo', videoAttr ); + * ``` + */ + + /** + * 插入视频 + * @command insertvideo + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Array } videoArr 需要插入的视频的数组, 其中的每一个元素都是一个键值对对象, 描述了一个视频的所有属性 + * @example + * ```javascript + * + * var videoAttr1 = { + * //视频地址 + * url: 'http://www.youku.com/xxx', + * //视频宽高值, 单位px + * width: 200, + * height: 100 + * }, + * videoAttr2 = { + * //视频地址 + * url: 'http://www.youku.com/xxx', + * //视频宽高值, 单位px + * width: 200, + * height: 100 + * } + * + * //editor 是编辑器实例 + * //该方法将会向编辑器内插入两个视频 + * editor.execCommand( 'insertvideo', [ videoAttr1, videoAttr2 ] ); + * ``` + */ + + /** + * 查询当前光标所在处是否是一个视频 + * @command insertvideo + * @method queryCommandState + * @param { String } cmd 需要查询的命令字符串 + * @return { int } 如果当前光标所在处的元素是一个视频对象, 则返回1,否则返回0 + * @example + * ```javascript + * + * //editor 是编辑器实例 + * editor.queryCommandState( 'insertvideo' ); + * ``` + */ + me.commands["insertvideo"] = { + execCommand: function (cmd, videoObjs, type){ + videoObjs = utils.isArray(videoObjs)?videoObjs:[videoObjs]; + var html = [],id = 'tmpVedio', cl; + for(var i=0,vi,len = videoObjs.length;i 0) { + return 0; + } + for (var i in dtd.$isNotEmpty) if (dtd.$isNotEmpty.hasOwnProperty(i)) { + if (node.getElementsByTagName(i).length) { + return 0; + } + } + return 1; + }; + UETable.getWidth = function (cell) { + if (!cell)return 0; + return parseInt(domUtils.getComputedStyle(cell, "width"), 10); + }; + + /** + * 获取单元格或者单元格组的“对齐”状态。 如果当前的检测对象是一个单元格组, 只有在满足所有单元格的 水平和竖直 对齐属性都相同的 + * 条件时才会返回其状态值,否则将返回null; 如果当前只检测了一个单元格, 则直接返回当前单元格的对齐状态; + * @param table cell or table cells , 支持单个单元格dom对象 或者 单元格dom对象数组 + * @return { align: 'left' || 'right' || 'center', valign: 'top' || 'middle' || 'bottom' } 或者 null + */ + UETable.getTableCellAlignState = function ( cells ) { + + !utils.isArray( cells ) && ( cells = [cells] ); + + var result = {}, + status = ['align', 'valign'], + tempStatus = null, + isSame = true;//状态是否相同 + + utils.each( cells, function( cellNode ){ + + utils.each( status, function( currentState ){ + + tempStatus = cellNode.getAttribute( currentState ); + + if( !result[ currentState ] && tempStatus ) { + result[ currentState ] = tempStatus; + } else if( !result[ currentState ] || ( tempStatus !== result[ currentState ] ) ) { + isSame = false; + return false; + } + + } ); + + return isSame; + + }); + + return isSame ? result : null; + + }; + + /** + * 根据当前选区获取相关的table信息 + * @return {Object} + */ + UETable.getTableItemsByRange = function (editor) { + var start = editor.selection.getStart(); + + //ff下会选中bookmark + if( start && start.id && start.id.indexOf('_baidu_bookmark_start_') === 0 && start.nextSibling) { + start = start.nextSibling; + } + + //在table或者td边缘有可能存在选中tr的情况 + var cell = start && domUtils.findParentByTagName(start, ["td", "th"], true), + tr = cell && cell.parentNode, + caption = start && domUtils.findParentByTagName(start, 'caption', true), + table = caption ? caption.parentNode : tr && tr.parentNode.parentNode; + + return { + cell:cell, + tr:tr, + table:table, + caption:caption + } + }; + UETable.getUETableBySelected = function (editor) { + var table = UETable.getTableItemsByRange(editor).table; + if (table && table.ueTable && table.ueTable.selectedTds.length) { + return table.ueTable; + } + return null; + }; + + UETable.getDefaultValue = function (editor, table) { + var borderMap = { + thin:'0px', + medium:'1px', + thick:'2px' + }, + tableBorder, tdPadding, tdBorder, tmpValue; + if (!table) { + table = editor.document.createElement('table'); + table.insertRow(0).insertCell(0).innerHTML = 'xxx'; + editor.body.appendChild(table); + var td = table.getElementsByTagName('td')[0]; + tmpValue = domUtils.getComputedStyle(table, 'border-left-width'); + tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); + tmpValue = domUtils.getComputedStyle(td, 'padding-left'); + tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10); + tmpValue = domUtils.getComputedStyle(td, 'border-left-width'); + tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); + domUtils.remove(table); + return { + tableBorder:tableBorder, + tdPadding:tdPadding, + tdBorder:tdBorder + }; + } else { + td = table.getElementsByTagName('td')[0]; + tmpValue = domUtils.getComputedStyle(table, 'border-left-width'); + tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); + tmpValue = domUtils.getComputedStyle(td, 'padding-left'); + tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10); + tmpValue = domUtils.getComputedStyle(td, 'border-left-width'); + tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); + return { + tableBorder:tableBorder, + tdPadding:tdPadding, + tdBorder:tdBorder + }; + } + }; + /** + * 根据当前点击的td或者table获取索引对象 + * @param tdOrTable + */ + UETable.getUETable = function (tdOrTable) { + var tag = tdOrTable.tagName.toLowerCase(); + tdOrTable = (tag == "td" || tag == "th" || tag == 'caption') ? domUtils.findParentByTagName(tdOrTable, "table", true) : tdOrTable; + if (!tdOrTable.ueTable) { + tdOrTable.ueTable = new UETable(tdOrTable); + } + return tdOrTable.ueTable; + }; + + UETable.cloneCell = function(cell,ignoreMerge,keepPro){ + if (!cell || utils.isString(cell)) { + return this.table.ownerDocument.createElement(cell || 'td'); + } + var flag = domUtils.hasClass(cell, "selectTdClass"); + flag && domUtils.removeClasses(cell, "selectTdClass"); + var tmpCell = cell.cloneNode(true); + if (ignoreMerge) { + tmpCell.rowSpan = tmpCell.colSpan = 1; + } + //去掉宽高 + !keepPro && domUtils.removeAttributes(tmpCell,'width height'); + !keepPro && domUtils.removeAttributes(tmpCell,'style'); + + tmpCell.style.borderLeftStyle = ""; + tmpCell.style.borderTopStyle = ""; + tmpCell.style.borderLeftColor = cell.style.borderRightColor; + tmpCell.style.borderLeftWidth = cell.style.borderRightWidth; + tmpCell.style.borderTopColor = cell.style.borderBottomColor; + tmpCell.style.borderTopWidth = cell.style.borderBottomWidth; + flag && domUtils.addClass(cell, "selectTdClass"); + return tmpCell; + } + + UETable.prototype = { + getMaxRows:function () { + var rows = this.table.rows, maxLen = 1; + for (var i = 0, row; row = rows[i]; i++) { + var currentMax = 1; + for (var j = 0, cj; cj = row.cells[j++];) { + currentMax = Math.max(cj.rowSpan || 1, currentMax); + } + maxLen = Math.max(currentMax + i, maxLen); + } + return maxLen; + }, + /** + * 获取当前表格的最大列数 + */ + getMaxCols:function () { + var rows = this.table.rows, maxLen = 0, cellRows = {}; + for (var i = 0, row; row = rows[i]; i++) { + var cellsNum = 0; + for (var j = 0, cj; cj = row.cells[j++];) { + cellsNum += (cj.colSpan || 1); + if (cj.rowSpan && cj.rowSpan > 1) { + for (var k = 1; k < cj.rowSpan; k++) { + if (!cellRows['row_' + (i + k)]) { + cellRows['row_' + (i + k)] = (cj.colSpan || 1); + } else { + cellRows['row_' + (i + k)]++ + } + } + + } + } + cellsNum += cellRows['row_' + i] || 0; + maxLen = Math.max(cellsNum, maxLen); + } + return maxLen; + }, + getCellColIndex:function (cell) { + + }, + /** + * 获取当前cell旁边的单元格, + * @param cell + * @param right + */ + getHSideCell:function (cell, right) { + try { + var cellInfo = this.getCellInfo(cell), + previewRowIndex, previewColIndex; + var len = this.selectedTds.length, + range = this.cellsRange; + //首行或者首列没有前置单元格 + if ((!right && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || (right && (!len ? (cellInfo.colIndex == (this.colsNum - 1)) : (range.endColIndex == this.colsNum - 1)))) return null; + + previewRowIndex = !len ? cellInfo.rowIndex : range.beginRowIndex; + previewColIndex = !right ? ( !len ? (cellInfo.colIndex < 1 ? 0 : (cellInfo.colIndex - 1)) : range.beginColIndex - 1) + : ( !len ? cellInfo.colIndex + 1 : range.endColIndex + 1); + return this.getCell(this.indexTable[previewRowIndex][previewColIndex].rowIndex, this.indexTable[previewRowIndex][previewColIndex].cellIndex); + } catch (e) { + showError(e); + } + }, + getTabNextCell:function (cell, preRowIndex) { + var cellInfo = this.getCellInfo(cell), + rowIndex = preRowIndex || cellInfo.rowIndex, + colIndex = cellInfo.colIndex + 1 + (cellInfo.colSpan - 1), + nextCell; + try { + nextCell = this.getCell(this.indexTable[rowIndex][colIndex].rowIndex, this.indexTable[rowIndex][colIndex].cellIndex); + } catch (e) { + try { + rowIndex = rowIndex * 1 + 1; + colIndex = 0; + nextCell = this.getCell(this.indexTable[rowIndex][colIndex].rowIndex, this.indexTable[rowIndex][colIndex].cellIndex); + } catch (e) { + } + } + return nextCell; + + }, + /** + * 获取视觉上的后置单元格 + * @param cell + * @param bottom + */ + getVSideCell:function (cell, bottom, ignoreRange) { + try { + var cellInfo = this.getCellInfo(cell), + nextRowIndex, nextColIndex; + var len = this.selectedTds.length && !ignoreRange, + range = this.cellsRange; + //末行或者末列没有后置单元格 + if ((!bottom && (cellInfo.rowIndex == 0)) || (bottom && (!len ? (cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1) : (range.endRowIndex == this.rowsNum - 1)))) return null; + + nextRowIndex = !bottom ? ( !len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1) + : ( !len ? (cellInfo.rowIndex + cellInfo.rowSpan) : range.endRowIndex + 1); + nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex; + return this.getCell(this.indexTable[nextRowIndex][nextColIndex].rowIndex, this.indexTable[nextRowIndex][nextColIndex].cellIndex); + } catch (e) { + showError(e); + } + }, + /** + * 获取相同结束位置的单元格,xOrY指代了是获取x轴相同还是y轴相同 + */ + getSameEndPosCells:function (cell, xOrY) { + try { + var flag = (xOrY.toLowerCase() === "x"), + end = domUtils.getXY(cell)[flag ? 'x' : 'y'] + cell["offset" + (flag ? 'Width' : 'Height')], + rows = this.table.rows, + cells = null, returns = []; + for (var i = 0; i < this.rowsNum; i++) { + cells = rows[i].cells; + for (var j = 0, tmpCell; tmpCell = cells[j++];) { + var tmpEnd = domUtils.getXY(tmpCell)[flag ? 'x' : 'y'] + tmpCell["offset" + (flag ? 'Width' : 'Height')]; + //对应行的td已经被上面行rowSpan了 + if (tmpEnd > end && flag) break; + if (cell == tmpCell || end == tmpEnd) { + //只获取单一的单元格 + //todo 仅获取单一单元格在特定情况下会造成returns为空,从而影响后续的拖拽实现,修正这个。需考虑性能 + if (tmpCell[flag ? "colSpan" : "rowSpan"] == 1) { + returns.push(tmpCell); + } + if (flag) break; + } + } + } + return returns; + } catch (e) { + showError(e); + } + }, + setCellContent:function (cell, content) { + cell.innerHTML = content || (browser.ie ? domUtils.fillChar : "
    "); + }, + cloneCell:UETable.cloneCell, + /** + * 获取跟当前单元格的右边竖线为左边的所有未合并单元格 + */ + getSameStartPosXCells:function (cell) { + try { + var start = domUtils.getXY(cell).x + cell.offsetWidth, + rows = this.table.rows, cells , returns = []; + for (var i = 0; i < this.rowsNum; i++) { + cells = rows[i].cells; + for (var j = 0, tmpCell; tmpCell = cells[j++];) { + var tmpStart = domUtils.getXY(tmpCell).x; + if (tmpStart > start) break; + if (tmpStart == start && tmpCell.colSpan == 1) { + returns.push(tmpCell); + break; + } + } + } + return returns; + } catch (e) { + showError(e); + } + }, + /** + * 更新table对应的索引表 + */ + update:function (table) { + this.table = table || this.table; + this.selectedTds = []; + this.cellsRange = {}; + this.indexTable = []; + var rows = this.table.rows, + rowsNum = this.getMaxRows(), + dNum = rowsNum - rows.length, + colsNum = this.getMaxCols(); + while (dNum--) { + this.table.insertRow(rows.length); + } + this.rowsNum = rowsNum; + this.colsNum = colsNum; + for (var i = 0, len = rows.length; i < len; i++) { + this.indexTable[i] = new Array(colsNum); + } + //填充索引表 + for (var rowIndex = 0, row; row = rows[rowIndex]; rowIndex++) { + for (var cellIndex = 0, cell, cells = row.cells; cell = cells[cellIndex]; cellIndex++) { + //修正整行被rowSpan时导致的行数计算错误 + if (cell.rowSpan > rowsNum) { + cell.rowSpan = rowsNum; + } + var colIndex = cellIndex, + rowSpan = cell.rowSpan || 1, + colSpan = cell.colSpan || 1; + //当已经被上一行rowSpan或者被前一列colSpan了,则跳到下一个单元格进行 + while (this.indexTable[rowIndex][colIndex]) colIndex++; + for (var j = 0; j < rowSpan; j++) { + for (var k = 0; k < colSpan; k++) { + this.indexTable[rowIndex + j][colIndex + k] = { + rowIndex:rowIndex, + cellIndex:cellIndex, + colIndex:colIndex, + rowSpan:rowSpan, + colSpan:colSpan + } + } + } + } + } + //修复残缺td + for (j = 0; j < rowsNum; j++) { + for (k = 0; k < colsNum; k++) { + if (this.indexTable[j][k] === undefined) { + row = rows[j]; + cell = row.cells[row.cells.length - 1]; + cell = cell ? cell.cloneNode(true) : this.table.ownerDocument.createElement("td"); + this.setCellContent(cell); + if (cell.colSpan !== 1)cell.colSpan = 1; + if (cell.rowSpan !== 1)cell.rowSpan = 1; + row.appendChild(cell); + this.indexTable[j][k] = { + rowIndex:j, + cellIndex:cell.cellIndex, + colIndex:k, + rowSpan:1, + colSpan:1 + } + } + } + } + //当框选后删除行或者列后撤销,需要重建选区。 + var tds = domUtils.getElementsByTagName(this.table, "td"), + selectTds = []; + utils.each(tds, function (td) { + if (domUtils.hasClass(td, "selectTdClass")) { + selectTds.push(td); + } + }); + if (selectTds.length) { + var start = selectTds[0], + end = selectTds[selectTds.length - 1], + startInfo = this.getCellInfo(start), + endInfo = this.getCellInfo(end); + this.selectedTds = selectTds; + this.cellsRange = { + beginRowIndex:startInfo.rowIndex, + beginColIndex:startInfo.colIndex, + endRowIndex:endInfo.rowIndex + endInfo.rowSpan - 1, + endColIndex:endInfo.colIndex + endInfo.colSpan - 1 + }; + } + //给第一行设置firstRow的样式名称,在排序图标的样式上使用到 + if(!domUtils.hasClass(this.table.rows[0], "firstRow")) { + domUtils.addClass(this.table.rows[0], "firstRow"); + for(var i = 1; i< this.table.rows.length; i++) { + domUtils.removeClasses(this.table.rows[i], "firstRow"); + } + } + }, + /** + * 获取单元格的索引信息 + */ + getCellInfo:function (cell) { + if (!cell) return; + var cellIndex = cell.cellIndex, + rowIndex = cell.parentNode.rowIndex, + rowInfo = this.indexTable[rowIndex], + numCols = this.colsNum; + for (var colIndex = cellIndex; colIndex < numCols; colIndex++) { + var cellInfo = rowInfo[colIndex]; + if (cellInfo.rowIndex === rowIndex && cellInfo.cellIndex === cellIndex) { + return cellInfo; + } + } + }, + /** + * 根据行列号获取单元格 + */ + getCell:function (rowIndex, cellIndex) { + return rowIndex < this.rowsNum && this.table.rows[rowIndex].cells[cellIndex] || null; + }, + /** + * 删除单元格 + */ + deleteCell:function (cell, rowIndex) { + rowIndex = typeof rowIndex == 'number' ? rowIndex : cell.parentNode.rowIndex; + var row = this.table.rows[rowIndex]; + row.deleteCell(cell.cellIndex); + }, + /** + * 根据始末两个单元格获取被框选的所有单元格范围 + */ + getCellsRange:function (cellA, cellB) { + function checkRange(beginRowIndex, beginColIndex, endRowIndex, endColIndex) { + var tmpBeginRowIndex = beginRowIndex, + tmpBeginColIndex = beginColIndex, + tmpEndRowIndex = endRowIndex, + tmpEndColIndex = endColIndex, + cellInfo, colIndex, rowIndex; + // 通过indexTable检查是否存在超出TableRange上边界的情况 + if (beginRowIndex > 0) { + for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) { + cellInfo = me.indexTable[beginRowIndex][colIndex]; + rowIndex = cellInfo.rowIndex; + if (rowIndex < beginRowIndex) { + tmpBeginRowIndex = Math.min(rowIndex, tmpBeginRowIndex); + } + } + } + // 通过indexTable检查是否存在超出TableRange右边界的情况 + if (endColIndex < me.colsNum) { + for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) { + cellInfo = me.indexTable[rowIndex][endColIndex]; + colIndex = cellInfo.colIndex + cellInfo.colSpan - 1; + if (colIndex > endColIndex) { + tmpEndColIndex = Math.max(colIndex, tmpEndColIndex); + } + } + } + // 检查是否有超出TableRange下边界的情况 + if (endRowIndex < me.rowsNum) { + for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) { + cellInfo = me.indexTable[endRowIndex][colIndex]; + rowIndex = cellInfo.rowIndex + cellInfo.rowSpan - 1; + if (rowIndex > endRowIndex) { + tmpEndRowIndex = Math.max(rowIndex, tmpEndRowIndex); + } + } + } + // 检查是否有超出TableRange左边界的情况 + if (beginColIndex > 0) { + for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) { + cellInfo = me.indexTable[rowIndex][beginColIndex]; + colIndex = cellInfo.colIndex; + if (colIndex < beginColIndex) { + tmpBeginColIndex = Math.min(cellInfo.colIndex, tmpBeginColIndex); + } + } + } + //递归调用直至所有完成所有框选单元格的扩展 + if (tmpBeginRowIndex != beginRowIndex || tmpBeginColIndex != beginColIndex || tmpEndRowIndex != endRowIndex || tmpEndColIndex != endColIndex) { + return checkRange(tmpBeginRowIndex, tmpBeginColIndex, tmpEndRowIndex, tmpEndColIndex); + } else { + // 不需要扩展TableRange的情况 + return { + beginRowIndex:beginRowIndex, + beginColIndex:beginColIndex, + endRowIndex:endRowIndex, + endColIndex:endColIndex + }; + } + } + + try { + var me = this, + cellAInfo = me.getCellInfo(cellA); + if (cellA === cellB) { + return { + beginRowIndex:cellAInfo.rowIndex, + beginColIndex:cellAInfo.colIndex, + endRowIndex:cellAInfo.rowIndex + cellAInfo.rowSpan - 1, + endColIndex:cellAInfo.colIndex + cellAInfo.colSpan - 1 + }; + } + var cellBInfo = me.getCellInfo(cellB); + // 计算TableRange的四个边 + var beginRowIndex = Math.min(cellAInfo.rowIndex, cellBInfo.rowIndex), + beginColIndex = Math.min(cellAInfo.colIndex, cellBInfo.colIndex), + endRowIndex = Math.max(cellAInfo.rowIndex + cellAInfo.rowSpan - 1, cellBInfo.rowIndex + cellBInfo.rowSpan - 1), + endColIndex = Math.max(cellAInfo.colIndex + cellAInfo.colSpan - 1, cellBInfo.colIndex + cellBInfo.colSpan - 1); + + return checkRange(beginRowIndex, beginColIndex, endRowIndex, endColIndex); + } catch (e) { + //throw e; + } + }, + /** + * 依据cellsRange获取对应的单元格集合 + */ + getCells:function (range) { + //每次获取cells之前必须先清除上次的选择,否则会对后续获取操作造成影响 + this.clearSelected(); + var beginRowIndex = range.beginRowIndex, + beginColIndex = range.beginColIndex, + endRowIndex = range.endRowIndex, + endColIndex = range.endColIndex, + cellInfo, rowIndex, colIndex, tdHash = {}, returnTds = []; + for (var i = beginRowIndex; i <= endRowIndex; i++) { + for (var j = beginColIndex; j <= endColIndex; j++) { + cellInfo = this.indexTable[i][j]; + rowIndex = cellInfo.rowIndex; + colIndex = cellInfo.colIndex; + // 如果Cells里已经包含了此Cell则跳过 + var key = rowIndex + '|' + colIndex; + if (tdHash[key]) continue; + tdHash[key] = 1; + if (rowIndex < i || colIndex < j || rowIndex + cellInfo.rowSpan - 1 > endRowIndex || colIndex + cellInfo.colSpan - 1 > endColIndex) { + return null; + } + returnTds.push(this.getCell(rowIndex, cellInfo.cellIndex)); + } + } + return returnTds; + }, + /** + * 清理已经选中的单元格 + */ + clearSelected:function () { + UETable.removeSelectedClass(this.selectedTds); + this.selectedTds = []; + this.cellsRange = {}; + }, + /** + * 根据range设置已经选中的单元格 + */ + setSelected:function (range) { + var cells = this.getCells(range); + UETable.addSelectedClass(cells); + this.selectedTds = cells; + this.cellsRange = range; + }, + isFullRow:function () { + var range = this.cellsRange; + return (range.endColIndex - range.beginColIndex + 1) == this.colsNum; + }, + isFullCol:function () { + var range = this.cellsRange, + table = this.table, + ths = table.getElementsByTagName("th"), + rows = range.endRowIndex - range.beginRowIndex + 1; + return !ths.length ? rows == this.rowsNum : rows == this.rowsNum || (rows == this.rowsNum - 1); + + }, + /** + * 获取视觉上的前置单元格,默认是左边,top传入时 + * @param cell + * @param top + */ + getNextCell:function (cell, bottom, ignoreRange) { + try { + var cellInfo = this.getCellInfo(cell), + nextRowIndex, nextColIndex; + var len = this.selectedTds.length && !ignoreRange, + range = this.cellsRange; + //末行或者末列没有后置单元格 + if ((!bottom && (cellInfo.rowIndex == 0)) || (bottom && (!len ? (cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1) : (range.endRowIndex == this.rowsNum - 1)))) return null; + + nextRowIndex = !bottom ? ( !len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1) + : ( !len ? (cellInfo.rowIndex + cellInfo.rowSpan) : range.endRowIndex + 1); + nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex; + return this.getCell(this.indexTable[nextRowIndex][nextColIndex].rowIndex, this.indexTable[nextRowIndex][nextColIndex].cellIndex); + } catch (e) { + showError(e); + } + }, + getPreviewCell:function (cell, top) { + try { + var cellInfo = this.getCellInfo(cell), + previewRowIndex, previewColIndex; + var len = this.selectedTds.length, + range = this.cellsRange; + //首行或者首列没有前置单元格 + if ((!top && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || (top && (!len ? (cellInfo.rowIndex > (this.colsNum - 1)) : (range.endColIndex == this.colsNum - 1)))) return null; + + previewRowIndex = !top ? ( !len ? cellInfo.rowIndex : range.beginRowIndex ) + : ( !len ? (cellInfo.rowIndex < 1 ? 0 : (cellInfo.rowIndex - 1)) : range.beginRowIndex); + previewColIndex = !top ? ( !len ? (cellInfo.colIndex < 1 ? 0 : (cellInfo.colIndex - 1)) : range.beginColIndex - 1) + : ( !len ? cellInfo.colIndex : range.endColIndex + 1); + return this.getCell(this.indexTable[previewRowIndex][previewColIndex].rowIndex, this.indexTable[previewRowIndex][previewColIndex].cellIndex); + } catch (e) { + showError(e); + } + }, + /** + * 移动单元格中的内容 + */ + moveContent:function (cellTo, cellFrom) { + if (UETable.isEmptyBlock(cellFrom)) return; + if (UETable.isEmptyBlock(cellTo)) { + cellTo.innerHTML = cellFrom.innerHTML; + return; + } + var child = cellTo.lastChild; + if (child.nodeType == 3 || !dtd.$block[child.tagName]) { + cellTo.appendChild(cellTo.ownerDocument.createElement('br')) + } + while (child = cellFrom.firstChild) { + cellTo.appendChild(child); + } + }, + /** + * 向右合并单元格 + */ + mergeRight:function (cell) { + var cellInfo = this.getCellInfo(cell), + rightColIndex = cellInfo.colIndex + cellInfo.colSpan, + rightCellInfo = this.indexTable[cellInfo.rowIndex][rightColIndex], + rightCell = this.getCell(rightCellInfo.rowIndex, rightCellInfo.cellIndex); + //合并 + cell.colSpan = cellInfo.colSpan + rightCellInfo.colSpan; + //被合并的单元格不应存在宽度属性 + cell.removeAttribute("width"); + //移动内容 + this.moveContent(cell, rightCell); + //删掉被合并的Cell + this.deleteCell(rightCell, rightCellInfo.rowIndex); + this.update(); + }, + /** + * 向下合并单元格 + */ + mergeDown:function (cell) { + var cellInfo = this.getCellInfo(cell), + downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan, + downCellInfo = this.indexTable[downRowIndex][cellInfo.colIndex], + downCell = this.getCell(downCellInfo.rowIndex, downCellInfo.cellIndex); + cell.rowSpan = cellInfo.rowSpan + downCellInfo.rowSpan; + cell.removeAttribute("height"); + this.moveContent(cell, downCell); + this.deleteCell(downCell, downCellInfo.rowIndex); + this.update(); + }, + /** + * 合并整个range中的内容 + */ + mergeRange:function () { + //由于合并操作可以在任意时刻进行,所以无法通过鼠标位置等信息实时生成range,只能通过缓存实例中的cellsRange对象来访问 + var range = this.cellsRange, + leftTopCell = this.getCell(range.beginRowIndex, this.indexTable[range.beginRowIndex][range.beginColIndex].cellIndex); + + if (leftTopCell.tagName == "TH" && range.endRowIndex !== range.beginRowIndex) { + var index = this.indexTable, + info = this.getCellInfo(leftTopCell); + leftTopCell = this.getCell(1, index[1][info.colIndex].cellIndex); + range = this.getCellsRange(leftTopCell, this.getCell(index[this.rowsNum - 1][info.colIndex].rowIndex, index[this.rowsNum - 1][info.colIndex].cellIndex)); + } + + // 删除剩余的Cells + var cells = this.getCells(range); + for(var i= 0,ci;ci=cells[i++];){ + if (ci !== leftTopCell) { + this.moveContent(leftTopCell, ci); + this.deleteCell(ci); + } + } + // 修改左上角Cell的rowSpan和colSpan,并调整宽度属性设置 + leftTopCell.rowSpan = range.endRowIndex - range.beginRowIndex + 1; + leftTopCell.rowSpan > 1 && leftTopCell.removeAttribute("height"); + leftTopCell.colSpan = range.endColIndex - range.beginColIndex + 1; + leftTopCell.colSpan > 1 && leftTopCell.removeAttribute("width"); + if (leftTopCell.rowSpan == this.rowsNum && leftTopCell.colSpan != 1) { + leftTopCell.colSpan = 1; + } + + if (leftTopCell.colSpan == this.colsNum && leftTopCell.rowSpan != 1) { + var rowIndex = leftTopCell.parentNode.rowIndex; + //解决IE下的表格操作问题 + if( this.table.deleteRow ) { + for (var i = rowIndex+ 1, curIndex=rowIndex+ 1, len=leftTopCell.rowSpan; i < len; i++) { + this.table.deleteRow(curIndex); + } + } else { + for (var i = 0, len=leftTopCell.rowSpan - 1; i < len; i++) { + var row = this.table.rows[rowIndex + 1]; + row.parentNode.removeChild(row); + } + } + leftTopCell.rowSpan = 1; + } + this.update(); + }, + /** + * 插入一行单元格 + */ + insertRow:function (rowIndex, sourceCell) { + var numCols = this.colsNum, + table = this.table, + row = table.insertRow(rowIndex), cell, + isInsertTitle = typeof sourceCell == 'string' && sourceCell.toUpperCase() == 'TH'; + + function replaceTdToTh(colIndex, cell, tableRow) { + if (colIndex == 0) { + var tr = tableRow.nextSibling || tableRow.previousSibling, + th = tr.cells[colIndex]; + if (th.tagName == 'TH') { + th = cell.ownerDocument.createElement("th"); + th.appendChild(cell.firstChild); + tableRow.insertBefore(th, cell); + domUtils.remove(cell) + } + }else{ + if (cell.tagName == 'TH') { + var td = cell.ownerDocument.createElement("td"); + td.appendChild(cell.firstChild); + tableRow.insertBefore(td, cell); + domUtils.remove(cell) + } + } + } + + //首行直接插入,无需考虑部分单元格被rowspan的情况 + if (rowIndex == 0 || rowIndex == this.rowsNum) { + for (var colIndex = 0; colIndex < numCols; colIndex++) { + cell = this.cloneCell(sourceCell, true); + this.setCellContent(cell); + cell.getAttribute('vAlign') && cell.setAttribute('vAlign', cell.getAttribute('vAlign')); + row.appendChild(cell); + if(!isInsertTitle) replaceTdToTh(colIndex, cell, row); + } + } else { + var infoRow = this.indexTable[rowIndex], + cellIndex = 0; + for (colIndex = 0; colIndex < numCols; colIndex++) { + var cellInfo = infoRow[colIndex]; + //如果存在某个单元格的rowspan穿过待插入行的位置,则修改该单元格的rowspan即可,无需插入单元格 + if (cellInfo.rowIndex < rowIndex) { + cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); + cell.rowSpan = cellInfo.rowSpan + 1; + } else { + cell = this.cloneCell(sourceCell, true); + this.setCellContent(cell); + row.appendChild(cell); + } + if(!isInsertTitle) replaceTdToTh(colIndex, cell, row); + } + } + //框选时插入不触发contentchange,需要手动更新索引。 + this.update(); + return row; + }, + /** + * 删除一行单元格 + * @param rowIndex + */ + deleteRow:function (rowIndex) { + var row = this.table.rows[rowIndex], + infoRow = this.indexTable[rowIndex], + colsNum = this.colsNum, + count = 0; //处理计数 + for (var colIndex = 0; colIndex < colsNum;) { + var cellInfo = infoRow[colIndex], + cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); + if (cell.rowSpan > 1) { + if (cellInfo.rowIndex == rowIndex) { + var clone = cell.cloneNode(true); + clone.rowSpan = cell.rowSpan - 1; + clone.innerHTML = ""; + cell.rowSpan = 1; + var nextRowIndex = rowIndex + 1, + nextRow = this.table.rows[nextRowIndex], + insertCellIndex, + preMerged = this.getPreviewMergedCellsNum(nextRowIndex, colIndex) - count; + if (preMerged < colIndex) { + insertCellIndex = colIndex - preMerged - 1; + //nextRow.insertCell(insertCellIndex); + domUtils.insertAfter(nextRow.cells[insertCellIndex], clone); + } else { + if (nextRow.cells.length) nextRow.insertBefore(clone, nextRow.cells[0]) + } + count += 1; + //cell.parentNode.removeChild(cell); + } + } + colIndex += cell.colSpan || 1; + } + var deleteTds = [], cacheMap = {}; + for (colIndex = 0; colIndex < colsNum; colIndex++) { + var tmpRowIndex = infoRow[colIndex].rowIndex, + tmpCellIndex = infoRow[colIndex].cellIndex, + key = tmpRowIndex + "_" + tmpCellIndex; + if (cacheMap[key])continue; + cacheMap[key] = 1; + cell = this.getCell(tmpRowIndex, tmpCellIndex); + deleteTds.push(cell); + } + var mergeTds = []; + utils.each(deleteTds, function (td) { + if (td.rowSpan == 1) { + td.parentNode.removeChild(td); + } else { + mergeTds.push(td); + } + }); + utils.each(mergeTds, function (td) { + td.rowSpan--; + }); + row.parentNode.removeChild(row); + //浏览器方法本身存在bug,采用自定义方法删除 + //this.table.deleteRow(rowIndex); + this.update(); + }, + insertCol:function (colIndex, sourceCell, defaultValue) { + var rowsNum = this.rowsNum, + rowIndex = 0, + tableRow, cell, + backWidth = parseInt((this.table.offsetWidth - (this.colsNum + 1) * 20 - (this.colsNum + 1)) / (this.colsNum + 1), 10), + isInsertTitleCol = typeof sourceCell == 'string' && sourceCell.toUpperCase() == 'TH'; + + function replaceTdToTh(rowIndex, cell, tableRow) { + if (rowIndex == 0) { + var th = cell.nextSibling || cell.previousSibling; + if (th.tagName == 'TH') { + th = cell.ownerDocument.createElement("th"); + th.appendChild(cell.firstChild); + tableRow.insertBefore(th, cell); + domUtils.remove(cell) + } + }else{ + if (cell.tagName == 'TH') { + var td = cell.ownerDocument.createElement("td"); + td.appendChild(cell.firstChild); + tableRow.insertBefore(td, cell); + domUtils.remove(cell) + } + } + } + + var preCell; + if (colIndex == 0 || colIndex == this.colsNum) { + for (; rowIndex < rowsNum; rowIndex++) { + tableRow = this.table.rows[rowIndex]; + preCell = tableRow.cells[colIndex == 0 ? colIndex : tableRow.cells.length]; + cell = this.cloneCell(sourceCell, true); //tableRow.insertCell(colIndex == 0 ? colIndex : tableRow.cells.length); + this.setCellContent(cell); + cell.setAttribute('vAlign', cell.getAttribute('vAlign')); + preCell && cell.setAttribute('width', preCell.getAttribute('width')); + if (!colIndex) { + tableRow.insertBefore(cell, tableRow.cells[0]); + } else { + domUtils.insertAfter(tableRow.cells[tableRow.cells.length - 1], cell); + } + if(!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow) + } + } else { + for (; rowIndex < rowsNum; rowIndex++) { + var cellInfo = this.indexTable[rowIndex][colIndex]; + if (cellInfo.colIndex < colIndex) { + cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); + cell.colSpan = cellInfo.colSpan + 1; + } else { + tableRow = this.table.rows[rowIndex]; + preCell = tableRow.cells[cellInfo.cellIndex]; + + cell = this.cloneCell(sourceCell, true);//tableRow.insertCell(cellInfo.cellIndex); + this.setCellContent(cell); + cell.setAttribute('vAlign', cell.getAttribute('vAlign')); + preCell && cell.setAttribute('width', preCell.getAttribute('width')); + //防止IE下报错 + preCell ? tableRow.insertBefore(cell, preCell) : tableRow.appendChild(cell); + } + if(!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow); + } + } + //框选时插入不触发contentchange,需要手动更新索引 + this.update(); + this.updateWidth(backWidth, defaultValue || {tdPadding:10, tdBorder:1}); + }, + updateWidth:function (width, defaultValue) { + var table = this.table, + tmpWidth = UETable.getWidth(table) - defaultValue.tdPadding * 2 - defaultValue.tdBorder + width; + if (tmpWidth < table.ownerDocument.body.offsetWidth) { + table.setAttribute("width", tmpWidth); + return; + } + var tds = domUtils.getElementsByTagName(this.table, "td th"); + utils.each(tds, function (td) { + td.setAttribute("width", width); + }) + }, + deleteCol:function (colIndex) { + var indexTable = this.indexTable, + tableRows = this.table.rows, + backTableWidth = this.table.getAttribute("width"), + backTdWidth = 0, + rowsNum = this.rowsNum, + cacheMap = {}; + for (var rowIndex = 0; rowIndex < rowsNum;) { + var infoRow = indexTable[rowIndex], + cellInfo = infoRow[colIndex], + key = cellInfo.rowIndex + '_' + cellInfo.colIndex; + // 跳过已经处理过的Cell + if (cacheMap[key])continue; + cacheMap[key] = 1; + var cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); + if (!backTdWidth) backTdWidth = cell && parseInt(cell.offsetWidth / cell.colSpan, 10).toFixed(0); + // 如果Cell的colSpan大于1, 就修改colSpan, 否则就删掉这个Cell + if (cell.colSpan > 1) { + cell.colSpan--; + } else { + tableRows[rowIndex].deleteCell(cellInfo.cellIndex); + } + rowIndex += cellInfo.rowSpan || 1; + } + this.table.setAttribute("width", backTableWidth - backTdWidth); + this.update(); + }, + splitToCells:function (cell) { + var me = this, + cells = this.splitToRows(cell); + utils.each(cells, function (cell) { + me.splitToCols(cell); + }) + }, + splitToRows:function (cell) { + var cellInfo = this.getCellInfo(cell), + rowIndex = cellInfo.rowIndex, + colIndex = cellInfo.colIndex, + results = []; + // 修改Cell的rowSpan + cell.rowSpan = 1; + results.push(cell); + // 补齐单元格 + for (var i = rowIndex, endRow = rowIndex + cellInfo.rowSpan; i < endRow; i++) { + if (i == rowIndex)continue; + var tableRow = this.table.rows[i], + tmpCell = tableRow.insertCell(colIndex - this.getPreviewMergedCellsNum(i, colIndex)); + tmpCell.colSpan = cellInfo.colSpan; + this.setCellContent(tmpCell); + tmpCell.setAttribute('vAlign', cell.getAttribute('vAlign')); + tmpCell.setAttribute('align', cell.getAttribute('align')); + if (cell.style.cssText) { + tmpCell.style.cssText = cell.style.cssText; + } + results.push(tmpCell); + } + this.update(); + return results; + }, + getPreviewMergedCellsNum:function (rowIndex, colIndex) { + var indexRow = this.indexTable[rowIndex], + num = 0; + for (var i = 0; i < colIndex;) { + var colSpan = indexRow[i].colSpan, + tmpRowIndex = indexRow[i].rowIndex; + num += (colSpan - (tmpRowIndex == rowIndex ? 1 : 0)); + i += colSpan; + } + return num; + }, + splitToCols:function (cell) { + var backWidth = (cell.offsetWidth / cell.colSpan - 22).toFixed(0), + + cellInfo = this.getCellInfo(cell), + rowIndex = cellInfo.rowIndex, + colIndex = cellInfo.colIndex, + results = []; + // 修改Cell的rowSpan + cell.colSpan = 1; + cell.setAttribute("width", backWidth); + results.push(cell); + // 补齐单元格 + for (var j = colIndex, endCol = colIndex + cellInfo.colSpan; j < endCol; j++) { + if (j == colIndex)continue; + var tableRow = this.table.rows[rowIndex], + tmpCell = tableRow.insertCell(this.indexTable[rowIndex][j].cellIndex + 1); + tmpCell.rowSpan = cellInfo.rowSpan; + this.setCellContent(tmpCell); + tmpCell.setAttribute('vAlign', cell.getAttribute('vAlign')); + tmpCell.setAttribute('align', cell.getAttribute('align')); + tmpCell.setAttribute('width', backWidth); + if (cell.style.cssText) { + tmpCell.style.cssText = cell.style.cssText; + } + //处理th的情况 + if (cell.tagName == 'TH') { + var th = cell.ownerDocument.createElement('th'); + th.appendChild(tmpCell.firstChild); + th.setAttribute('vAlign', cell.getAttribute('vAlign')); + th.rowSpan = tmpCell.rowSpan; + tableRow.insertBefore(th, tmpCell); + domUtils.remove(tmpCell); + } + results.push(tmpCell); + } + this.update(); + return results; + }, + isLastCell:function (cell, rowsNum, colsNum) { + rowsNum = rowsNum || this.rowsNum; + colsNum = colsNum || this.colsNum; + var cellInfo = this.getCellInfo(cell); + return ((cellInfo.rowIndex + cellInfo.rowSpan) == rowsNum) && + ((cellInfo.colIndex + cellInfo.colSpan) == colsNum); + }, + getLastCell:function (cells) { + cells = cells || this.table.getElementsByTagName("td"); + var firstInfo = this.getCellInfo(cells[0]); + var me = this, last = cells[0], + tr = last.parentNode, + cellsNum = 0, cols = 0, rows; + utils.each(cells, function (cell) { + if (cell.parentNode == tr)cols += cell.colSpan || 1; + cellsNum += cell.rowSpan * cell.colSpan || 1; + }); + rows = cellsNum / cols; + utils.each(cells, function (cell) { + if (me.isLastCell(cell, rows, cols)) { + last = cell; + return false; + } + }); + return last; + + }, + selectRow:function (rowIndex) { + var indexRow = this.indexTable[rowIndex], + start = this.getCell(indexRow[0].rowIndex, indexRow[0].cellIndex), + end = this.getCell(indexRow[this.colsNum - 1].rowIndex, indexRow[this.colsNum - 1].cellIndex), + range = this.getCellsRange(start, end); + this.setSelected(range); + }, + selectTable:function () { + var tds = this.table.getElementsByTagName("td"), + range = this.getCellsRange(tds[0], tds[tds.length - 1]); + this.setSelected(range); + }, + setBackground:function (cells, value) { + if (typeof value === "string") { + utils.each(cells, function (cell) { + cell.style.backgroundColor = value; + }) + } else if (typeof value === "object") { + value = utils.extend({ + repeat:true, + colorList:["#ddd", "#fff"] + }, value); + var rowIndex = this.getCellInfo(cells[0]).rowIndex, + count = 0, + colors = value.colorList, + getColor = function (list, index, repeat) { + return list[index] ? list[index] : repeat ? list[index % list.length] : ""; + }; + for (var i = 0, cell; cell = cells[i++];) { + var cellInfo = this.getCellInfo(cell); + cell.style.backgroundColor = getColor(colors, ((rowIndex + count) == cellInfo.rowIndex) ? count : ++count, value.repeat); + } + } + }, + removeBackground:function (cells) { + utils.each(cells, function (cell) { + cell.style.backgroundColor = ""; + }) + } + + + }; + function showError(e) { + } +})(); + +// plugins/table.cmds.js +/** + * Created with JetBrains PhpStorm. + * User: taoqili + * Date: 13-2-20 + * Time: 下午6:25 + * To change this template use File | Settings | File Templates. + */ +; +(function () { + var UT = UE.UETable, + getTableItemsByRange = function (editor) { + return UT.getTableItemsByRange(editor); + }, + getUETableBySelected = function (editor) { + return UT.getUETableBySelected(editor) + }, + getDefaultValue = function (editor, table) { + return UT.getDefaultValue(editor, table); + }, + getUETable = function (tdOrTable) { + return UT.getUETable(tdOrTable); + }; + + + UE.commands['inserttable'] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? -1 : 0; + }, + execCommand: function (cmd, opt) { + function createTable(opt, tdWidth) { + var html = [], + rowsNum = opt.numRows, + colsNum = opt.numCols; + for (var r = 0; r < rowsNum; r++) { + html.push(''); + for (var c = 0; c < colsNum; c++) { + html.push('
  • ' + (browser.ie && browser.version < 11 ? domUtils.fillChar : '
    ') + '
    ' + html.join('') + '
    ' + } + + if (!opt) { + opt = utils.extend({}, { + numCols: this.options.defaultCols, + numRows: this.options.defaultRows, + tdvalign: this.options.tdvalign + }) + } + var me = this; + var range = this.selection.getRange(), + start = range.startContainer, + firstParentBlock = domUtils.findParent(start, function (node) { + return domUtils.isBlockElm(node); + }, true) || me.body; + + var defaultValue = getDefaultValue(me), + tableWidth = firstParentBlock.offsetWidth, + tdWidth = Math.floor(tableWidth / opt.numCols - defaultValue.tdPadding * 2 - defaultValue.tdBorder); + + //todo其他属性 + !opt.tdvalign && (opt.tdvalign = me.options.tdvalign); + me.execCommand("inserthtml", createTable(opt, tdWidth)); + } + }; + + UE.commands['insertparagraphbeforetable'] = { + queryCommandState: function () { + return getTableItemsByRange(this).cell ? 0 : -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var p = this.document.createElement("p"); + p.innerHTML = browser.ie ? ' ' : '
    '; + table.parentNode.insertBefore(p, table); + this.selection.getRange().setStart(p, 0).setCursor(); + } + } + }; + + UE.commands['deletetable'] = { + queryCommandState: function () { + var rng = this.selection.getRange(); + return domUtils.findParentByTagName(rng.startContainer, 'table', true) ? 0 : -1; + }, + execCommand: function (cmd, table) { + var rng = this.selection.getRange(); + table = table || domUtils.findParentByTagName(rng.startContainer, 'table', true); + if (table) { + var next = table.nextSibling; + if (!next) { + next = domUtils.createElement(this.document, 'p', { + 'innerHTML': browser.ie ? domUtils.fillChar : '
    ' + }); + table.parentNode.insertBefore(next, table); + } + domUtils.remove(table); + rng = this.selection.getRange(); + if (next.nodeType == 3) { + rng.setStartBefore(next) + } else { + rng.setStart(next, 0) + } + rng.setCursor(false, true) + this.fireEvent("tablehasdeleted") + + } + + } + }; + UE.commands['cellalign'] = { + queryCommandState: function () { + return getSelectedArr(this).length ? 0 : -1 + }, + execCommand: function (cmd, align) { + var selectedTds = getSelectedArr(this); + if (selectedTds.length) { + for (var i = 0, ci; ci = selectedTds[i++];) { + ci.setAttribute('align', align); + } + } + } + }; + UE.commands['cellvalign'] = { + queryCommandState: function () { + return getSelectedArr(this).length ? 0 : -1; + }, + execCommand: function (cmd, valign) { + var selectedTds = getSelectedArr(this); + if (selectedTds.length) { + for (var i = 0, ci; ci = selectedTds[i++];) { + ci.setAttribute('vAlign', valign); + } + } + } + }; + UE.commands['insertcaption'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + return table.getElementsByTagName('caption').length == 0 ? 1 : -1; + } + return -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var caption = this.document.createElement('caption'); + caption.innerHTML = browser.ie ? domUtils.fillChar : '
    '; + table.insertBefore(caption, table.firstChild); + var range = this.selection.getRange(); + range.setStart(caption, 0).setCursor(); + } + + } + }; + UE.commands['deletecaption'] = { + queryCommandState: function () { + var rng = this.selection.getRange(), + table = domUtils.findParentByTagName(rng.startContainer, 'table'); + if (table) { + return table.getElementsByTagName('caption').length == 0 ? -1 : 1; + } + return -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + table = domUtils.findParentByTagName(rng.startContainer, 'table'); + if (table) { + domUtils.remove(table.getElementsByTagName('caption')[0]); + var range = this.selection.getRange(); + range.setStart(table.rows[0].cells[0], 0).setCursor(); + } + + } + }; + UE.commands['inserttitle'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var firstRow = table.rows[0]; + return firstRow.cells[firstRow.cells.length-1].tagName.toLowerCase() != 'th' ? 0 : -1 + } + return -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + getUETable(table).insertRow(0, 'th'); + } + var th = table.getElementsByTagName('th')[0]; + this.selection.getRange().setStart(th, 0).setCursor(false, true); + } + }; + UE.commands['deletetitle'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var firstRow = table.rows[0]; + return firstRow.cells[firstRow.cells.length-1].tagName.toLowerCase() == 'th' ? 0 : -1 + } + return -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + domUtils.remove(table.rows[0]) + } + var td = table.getElementsByTagName('td')[0]; + this.selection.getRange().setStart(td, 0).setCursor(false, true); + } + }; + UE.commands['inserttitlecol'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var lastRow = table.rows[table.rows.length-1]; + return lastRow.getElementsByTagName('th').length ? -1 : 0; + } + return -1; + }, + execCommand: function (cmd) { + var table = getTableItemsByRange(this).table; + if (table) { + getUETable(table).insertCol(0, 'th'); + } + resetTdWidth(table, this); + var th = table.getElementsByTagName('th')[0]; + this.selection.getRange().setStart(th, 0).setCursor(false, true); + } + }; + UE.commands['deletetitlecol'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var lastRow = table.rows[table.rows.length-1]; + return lastRow.getElementsByTagName('th').length ? 0 : -1; + } + return -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + for(var i = 0; i< table.rows.length; i++ ){ + domUtils.remove(table.rows[i].children[0]) + } + } + resetTdWidth(table, this); + var td = table.getElementsByTagName('td')[0]; + this.selection.getRange().setStart(td, 0).setCursor(false, true); + } + }; + + UE.commands["mergeright"] = { + queryCommandState: function (cmd) { + var tableItems = getTableItemsByRange(this), + table = tableItems.table, + cell = tableItems.cell; + + if (!table || !cell) return -1; + var ut = getUETable(table); + if (ut.selectedTds.length) return -1; + + var cellInfo = ut.getCellInfo(cell), + rightColIndex = cellInfo.colIndex + cellInfo.colSpan; + if (rightColIndex >= ut.colsNum) return -1; // 如果处于最右边则不能向右合并 + + var rightCellInfo = ut.indexTable[cellInfo.rowIndex][rightColIndex], + rightCell = table.rows[rightCellInfo.rowIndex].cells[rightCellInfo.cellIndex]; + if (!rightCell || cell.tagName != rightCell.tagName) return -1; // TH和TD不能相互合并 + + // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并 + return (rightCellInfo.rowIndex == cellInfo.rowIndex && rightCellInfo.rowSpan == cellInfo.rowSpan) ? 0 : -1; + }, + execCommand: function (cmd) { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.mergeRight(cell); + rng.moveToBookmark(bk).select(); + } + }; + UE.commands["mergedown"] = { + queryCommandState: function (cmd) { + var tableItems = getTableItemsByRange(this), + table = tableItems.table, + cell = tableItems.cell; + + if (!table || !cell) return -1; + var ut = getUETable(table); + if (ut.selectedTds.length)return -1; + + var cellInfo = ut.getCellInfo(cell), + downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan; + if (downRowIndex >= ut.rowsNum) return -1; // 如果处于最下边则不能向下合并 + + var downCellInfo = ut.indexTable[downRowIndex][cellInfo.colIndex], + downCell = table.rows[downCellInfo.rowIndex].cells[downCellInfo.cellIndex]; + if (!downCell || cell.tagName != downCell.tagName) return -1; // TH和TD不能相互合并 + + // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并 + return (downCellInfo.colIndex == cellInfo.colIndex && downCellInfo.colSpan == cellInfo.colSpan) ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.mergeDown(cell); + rng.moveToBookmark(bk).select(); + } + }; + UE.commands["mergecells"] = { + queryCommandState: function () { + return getUETableBySelected(this) ? 0 : -1; + }, + execCommand: function () { + var ut = getUETableBySelected(this); + if (ut && ut.selectedTds.length) { + var cell = ut.selectedTds[0]; + ut.mergeRange(); + var rng = this.selection.getRange(); + if (domUtils.isEmptyBlock(cell)) { + rng.setStart(cell, 0).collapse(true) + } else { + rng.selectNodeContents(cell) + } + rng.select(); + } + + + } + }; + UE.commands["insertrow"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + return cell && (cell.tagName == "TD" || (cell.tagName == 'TH' && tableItems.tr !== tableItems.table.rows[0])) && + getUETable(tableItems.table).rowsNum < this.options.maxRowNum ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell, + table = tableItems.table, + ut = getUETable(table), + cellInfo = ut.getCellInfo(cell); + //ut.insertRow(!ut.selectedTds.length ? cellInfo.rowIndex:ut.cellsRange.beginRowIndex,''); + if (!ut.selectedTds.length) { + ut.insertRow(cellInfo.rowIndex, cell); + } else { + var range = ut.cellsRange; + for (var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; i < len; i++) { + ut.insertRow(range.beginRowIndex, cell); + } + } + rng.moveToBookmark(bk).select(); + if (table.getAttribute("interlaced") === "enabled")this.fireEvent("interlacetable", table); + } + }; + //后插入行 + UE.commands["insertrownext"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + return cell && (cell.tagName == "TD") && getUETable(tableItems.table).rowsNum < this.options.maxRowNum ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell, + table = tableItems.table, + ut = getUETable(table), + cellInfo = ut.getCellInfo(cell); + //ut.insertRow(!ut.selectedTds.length? cellInfo.rowIndex + cellInfo.rowSpan : ut.cellsRange.endRowIndex + 1,''); + if (!ut.selectedTds.length) { + ut.insertRow(cellInfo.rowIndex + cellInfo.rowSpan, cell); + } else { + var range = ut.cellsRange; + for (var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; i < len; i++) { + ut.insertRow(range.endRowIndex + 1, cell); + } + } + rng.moveToBookmark(bk).select(); + if (table.getAttribute("interlaced") === "enabled")this.fireEvent("interlacetable", table); + } + }; + UE.commands["deleterow"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this); + return tableItems.cell ? 0 : -1; + }, + execCommand: function () { + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell), + cellsRange = ut.cellsRange, + cellInfo = ut.getCellInfo(cell), + preCell = ut.getVSideCell(cell), + nextCell = ut.getVSideCell(cell, true), + rng = this.selection.getRange(); + if (utils.isEmptyObject(cellsRange)) { + ut.deleteRow(cellInfo.rowIndex); + } else { + for (var i = cellsRange.beginRowIndex; i < cellsRange.endRowIndex + 1; i++) { + ut.deleteRow(cellsRange.beginRowIndex); + } + } + var table = ut.table; + if (!table.getElementsByTagName('td').length) { + var nextSibling = table.nextSibling; + domUtils.remove(table); + if (nextSibling) { + rng.setStart(nextSibling, 0).setCursor(false, true); + } + } else { + if (cellInfo.rowSpan == 1 || cellInfo.rowSpan == cellsRange.endRowIndex - cellsRange.beginRowIndex + 1) { + if (nextCell || preCell) rng.selectNodeContents(nextCell || preCell).setCursor(false, true); + } else { + var newCell = ut.getCell(cellInfo.rowIndex, ut.indexTable[cellInfo.rowIndex][cellInfo.colIndex].cellIndex); + if (newCell) rng.selectNodeContents(newCell).setCursor(false, true); + } + } + if (table.getAttribute("interlaced") === "enabled")this.fireEvent("interlacetable", table); + } + }; + UE.commands["insertcol"] = { + queryCommandState: function (cmd) { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + return cell && (cell.tagName == "TD" || (cell.tagName == 'TH' && cell !== tableItems.tr.cells[0])) && + getUETable(tableItems.table).colsNum < this.options.maxColNum ? 0 : -1; + }, + execCommand: function (cmd) { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + if (this.queryCommandState(cmd) == -1)return; + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell), + cellInfo = ut.getCellInfo(cell); + + //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex:ut.cellsRange.beginColIndex); + if (!ut.selectedTds.length) { + ut.insertCol(cellInfo.colIndex, cell); + } else { + var range = ut.cellsRange; + for (var i = 0, len = range.endColIndex - range.beginColIndex + 1; i < len; i++) { + ut.insertCol(range.beginColIndex, cell); + } + } + rng.moveToBookmark(bk).select(true); + } + }; + UE.commands["insertcolnext"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + return cell && getUETable(tableItems.table).colsNum < this.options.maxColNum ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell), + cellInfo = ut.getCellInfo(cell); + //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex + cellInfo.colSpan:ut.cellsRange.endColIndex +1); + if (!ut.selectedTds.length) { + ut.insertCol(cellInfo.colIndex + cellInfo.colSpan, cell); + } else { + var range = ut.cellsRange; + for (var i = 0, len = range.endColIndex - range.beginColIndex + 1; i < len; i++) { + ut.insertCol(range.endColIndex + 1, cell); + } + } + rng.moveToBookmark(bk).select(); + } + }; + + UE.commands["deletecol"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this); + return tableItems.cell ? 0 : -1; + }, + execCommand: function () { + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell), + range = ut.cellsRange, + cellInfo = ut.getCellInfo(cell), + preCell = ut.getHSideCell(cell), + nextCell = ut.getHSideCell(cell, true); + if (utils.isEmptyObject(range)) { + ut.deleteCol(cellInfo.colIndex); + } else { + for (var i = range.beginColIndex; i < range.endColIndex + 1; i++) { + ut.deleteCol(range.beginColIndex); + } + } + var table = ut.table, + rng = this.selection.getRange(); + + if (!table.getElementsByTagName('td').length) { + var nextSibling = table.nextSibling; + domUtils.remove(table); + if (nextSibling) { + rng.setStart(nextSibling, 0).setCursor(false, true); + } + } else { + if (domUtils.inDoc(cell, this.document)) { + rng.setStart(cell, 0).setCursor(false, true); + } else { + if (nextCell && domUtils.inDoc(nextCell, this.document)) { + rng.selectNodeContents(nextCell).setCursor(false, true); + } else { + if (preCell && domUtils.inDoc(preCell, this.document)) { + rng.selectNodeContents(preCell).setCursor(true, true); + } + } + } + } + } + }; + UE.commands["splittocells"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + if (!cell) return -1; + var ut = getUETable(tableItems.table); + if (ut.selectedTds.length > 0) return -1; + return cell && (cell.colSpan > 1 || cell.rowSpan > 1) ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.splitToCells(cell); + rng.moveToBookmark(bk).select(); + } + }; + UE.commands["splittorows"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + if (!cell) return -1; + var ut = getUETable(tableItems.table); + if (ut.selectedTds.length > 0) return -1; + return cell && cell.rowSpan > 1 ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.splitToRows(cell); + rng.moveToBookmark(bk).select(); + } + }; + UE.commands["splittocols"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + if (!cell) return -1; + var ut = getUETable(tableItems.table); + if (ut.selectedTds.length > 0) return -1; + return cell && cell.colSpan > 1 ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.splitToCols(cell); + rng.moveToBookmark(bk).select(); + + } + }; + + UE.commands["adaptbytext"] = + UE.commands["adaptbywindow"] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd) { + var tableItems = getTableItemsByRange(this), + table = tableItems.table; + if (table) { + if (cmd == 'adaptbywindow') { + resetTdWidth(table, this); + } else { + var cells = domUtils.getElementsByTagName(table, "td th"); + utils.each(cells, function (cell) { + cell.removeAttribute("width"); + }); + table.removeAttribute("width"); + } + } + } + }; + + //平均分配各列 + UE.commands['averagedistributecol'] = { + queryCommandState: function () { + var ut = getUETableBySelected(this); + if (!ut) return -1; + return ut.isFullRow() || ut.isFullCol() ? 0 : -1; + }, + execCommand: function (cmd) { + var me = this, + ut = getUETableBySelected(me); + + function getAverageWidth() { + var tb = ut.table, + averageWidth, sumWidth = 0, colsNum = 0, + tbAttr = getDefaultValue(me, tb); + + if (ut.isFullRow()) { + sumWidth = tb.offsetWidth; + colsNum = ut.colsNum; + } else { + var begin = ut.cellsRange.beginColIndex, + end = ut.cellsRange.endColIndex, + node; + for (var i = begin; i <= end;) { + node = ut.selectedTds[i]; + sumWidth += node.offsetWidth; + i += node.colSpan; + colsNum += 1; + } + } + averageWidth = Math.ceil(sumWidth / colsNum) - tbAttr.tdBorder * 2 - tbAttr.tdPadding * 2; + return averageWidth; + } + + function setAverageWidth(averageWidth) { + utils.each(domUtils.getElementsByTagName(ut.table, "th"), function (node) { + node.setAttribute("width", ""); + }); + var cells = ut.isFullRow() ? domUtils.getElementsByTagName(ut.table, "td") : ut.selectedTds; + + utils.each(cells, function (node) { + if (node.colSpan == 1) { + node.setAttribute("width", averageWidth); + } + }); + } + + if (ut && ut.selectedTds.length) { + setAverageWidth(getAverageWidth()); + } + } + }; + //平均分配各行 + UE.commands['averagedistributerow'] = { + queryCommandState: function () { + var ut = getUETableBySelected(this); + if (!ut) return -1; + if (ut.selectedTds && /th/ig.test(ut.selectedTds[0].tagName)) return -1; + return ut.isFullRow() || ut.isFullCol() ? 0 : -1; + }, + execCommand: function (cmd) { + var me = this, + ut = getUETableBySelected(me); + + function getAverageHeight() { + var averageHeight, rowNum, sumHeight = 0, + tb = ut.table, + tbAttr = getDefaultValue(me, tb), + tdpadding = parseInt(domUtils.getComputedStyle(tb.getElementsByTagName('td')[0], "padding-top")); + + if (ut.isFullCol()) { + var captionArr = domUtils.getElementsByTagName(tb, "caption"), + thArr = domUtils.getElementsByTagName(tb, "th"), + captionHeight, thHeight; + + if (captionArr.length > 0) { + captionHeight = captionArr[0].offsetHeight; + } + if (thArr.length > 0) { + thHeight = thArr[0].offsetHeight; + } + + sumHeight = tb.offsetHeight - (captionHeight || 0) - (thHeight || 0); + rowNum = thArr.length == 0 ? ut.rowsNum : (ut.rowsNum - 1); + } else { + var begin = ut.cellsRange.beginRowIndex, + end = ut.cellsRange.endRowIndex, + count = 0, + trs = domUtils.getElementsByTagName(tb, "tr"); + for (var i = begin; i <= end; i++) { + sumHeight += trs[i].offsetHeight; + count += 1; + } + rowNum = count; + } + //ie8下是混杂模式 + if (browser.ie && browser.version < 9) { + averageHeight = Math.ceil(sumHeight / rowNum); + } else { + averageHeight = Math.ceil(sumHeight / rowNum) - tbAttr.tdBorder * 2 - tdpadding * 2; + } + return averageHeight; + } + + function setAverageHeight(averageHeight) { + var cells = ut.isFullCol() ? domUtils.getElementsByTagName(ut.table, "td") : ut.selectedTds; + utils.each(cells, function (node) { + if (node.rowSpan == 1) { + node.setAttribute("height", averageHeight); + } + }); + } + + if (ut && ut.selectedTds.length) { + setAverageHeight(getAverageHeight()); + } + } + }; + + //单元格对齐方式 + UE.commands['cellalignment'] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd, data) { + var me = this, + ut = getUETableBySelected(me); + + if (!ut) { + var start = me.selection.getStart(), + cell = start && domUtils.findParentByTagName(start, ["td", "th", "caption"], true); + if (!/caption/ig.test(cell.tagName)) { + domUtils.setAttributes(cell, data); + } else { + cell.style.textAlign = data.align; + cell.style.verticalAlign = data.vAlign; + } + me.selection.getRange().setCursor(true); + } else { + utils.each(ut.selectedTds, function (cell) { + domUtils.setAttributes(cell, data); + }); + } + }, + /** + * 查询当前点击的单元格的对齐状态, 如果当前已经选择了多个单元格, 则会返回所有单元格经过统一协调过后的状态 + * @see UE.UETable.getTableCellAlignState + */ + queryCommandValue: function (cmd) { + + var activeMenuCell = getTableItemsByRange( this).cell; + + if( !activeMenuCell ) { + activeMenuCell = getSelectedArr(this)[0]; + } + + if (!activeMenuCell) { + + return null; + + } else { + + //获取同时选中的其他单元格 + var cells = UE.UETable.getUETable(activeMenuCell).selectedTds; + + !cells.length && ( cells = activeMenuCell ); + + return UE.UETable.getTableCellAlignState(cells); + + } + + } + }; + //表格对齐方式 + UE.commands['tablealignment'] = { + queryCommandState: function () { + if (browser.ie && browser.version < 8) { + return -1; + } + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd, value) { + var me = this, + start = me.selection.getStart(), + table = start && domUtils.findParentByTagName(start, ["table"], true); + + if (table) { + table.setAttribute("align",value); + } + } + }; + + //表格属性 + UE.commands['edittable'] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd, color) { + var rng = this.selection.getRange(), + table = domUtils.findParentByTagName(rng.startContainer, 'table'); + if (table) { + var arr = domUtils.getElementsByTagName(table, "td").concat( + domUtils.getElementsByTagName(table, "th"), + domUtils.getElementsByTagName(table, "caption") + ); + utils.each(arr, function (node) { + node.style.borderColor = color; + }); + } + } + }; + //单元格属性 + UE.commands['edittd'] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd, bkColor) { + var me = this, + ut = getUETableBySelected(me); + + if (!ut) { + var start = me.selection.getStart(), + cell = start && domUtils.findParentByTagName(start, ["td", "th", "caption"], true); + if (cell) { + cell.style.backgroundColor = bkColor; + } + } else { + utils.each(ut.selectedTds, function (cell) { + cell.style.backgroundColor = bkColor; + }); + } + } + }; + + UE.commands["settablebackground"] = { + queryCommandState: function () { + return getSelectedArr(this).length > 1 ? 0 : -1; + }, + execCommand: function (cmd, value) { + var cells, ut; + cells = getSelectedArr(this); + ut = getUETable(cells[0]); + ut.setBackground(cells, value); + } + }; + + UE.commands["cleartablebackground"] = { + queryCommandState: function () { + var cells = getSelectedArr(this); + if (!cells.length)return -1; + for (var i = 0, cell; cell = cells[i++];) { + if (cell.style.backgroundColor !== "") return 0; + } + return -1; + }, + execCommand: function () { + var cells = getSelectedArr(this), + ut = getUETable(cells[0]); + ut.removeBackground(cells); + } + }; + + UE.commands["interlacetable"] = UE.commands["uninterlacetable"] = { + queryCommandState: function (cmd) { + var table = getTableItemsByRange(this).table; + if (!table) return -1; + var interlaced = table.getAttribute("interlaced"); + if (cmd == "interlacetable") { + //TODO 待定 + //是否需要待定,如果设置,则命令只能单次执行成功,但反射具备toggle效果;否则可以覆盖前次命令,但反射将不存在toggle效果 + return (interlaced === "enabled") ? -1 : 0; + } else { + return (!interlaced || interlaced === "disabled") ? -1 : 0; + } + }, + execCommand: function (cmd, classList) { + var table = getTableItemsByRange(this).table; + if (cmd == "interlacetable") { + table.setAttribute("interlaced", "enabled"); + this.fireEvent("interlacetable", table, classList); + } else { + table.setAttribute("interlaced", "disabled"); + this.fireEvent("uninterlacetable", table); + } + } + }; + UE.commands["setbordervisible"] = { + queryCommandState: function (cmd) { + var table = getTableItemsByRange(this).table; + if (!table) return -1; + return 0; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + utils.each(domUtils.getElementsByTagName(table,'td'),function(td){ + td.style.borderWidth = '1px'; + td.style.borderStyle = 'solid'; + }) + } + }; + function resetTdWidth(table, editor) { + var tds = domUtils.getElementsByTagName(table,'td th'); + utils.each(tds, function (td) { + td.removeAttribute("width"); + }); + table.setAttribute('width', getTableWidth(editor, true, getDefaultValue(editor, table))); + var tdsWidths = []; + setTimeout(function () { + utils.each(tds, function (td) { + (td.colSpan == 1) && tdsWidths.push(td.offsetWidth) + }) + utils.each(tds, function (td,i) { + (td.colSpan == 1) && td.setAttribute("width", tdsWidths[i] + ""); + }) + }, 0); + } + + function getTableWidth(editor, needIEHack, defaultValue) { + var body = editor.body; + return body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (editor.options.offsetWidth || 0); + } + + function getSelectedArr(editor) { + var cell = getTableItemsByRange(editor).cell; + if (cell) { + var ut = getUETable(cell); + return ut.selectedTds.length ? ut.selectedTds : [cell]; + } else { + return []; + } + } +})(); + + +// plugins/table.action.js +/** + * Created with JetBrains PhpStorm. + * User: taoqili + * Date: 12-10-12 + * Time: 上午10:05 + * To change this template use File | Settings | File Templates. + */ +UE.plugins['table'] = function () { + var me = this, + tabTimer = null, + //拖动计时器 + tableDragTimer = null, + //双击计时器 + tableResizeTimer = null, + //单元格最小宽度 + cellMinWidth = 5, + isInResizeBuffer = false, + //单元格边框大小 + cellBorderWidth = 5, + //鼠标偏移距离 + offsetOfTableCell = 10, + //记录在有限时间内的点击状态, 共有3个取值, 0, 1, 2。 0代表未初始化, 1代表单击了1次,2代表2次 + singleClickState = 0, + userActionStatus = null, + //双击允许的时间范围 + dblclickTime = 360, + UT = UE.UETable, + getUETable = function (tdOrTable) { + return UT.getUETable(tdOrTable); + }, + getUETableBySelected = function (editor) { + return UT.getUETableBySelected(editor); + }, + getDefaultValue = function (editor, table) { + return UT.getDefaultValue(editor, table); + }, + removeSelectedClass = function (cells) { + return UT.removeSelectedClass(cells); + }; + + function showError(e) { +// throw e; + } + me.ready(function(){ + var me = this; + var orgGetText = me.selection.getText; + me.selection.getText = function(){ + var table = getUETableBySelected(me); + if(table){ + var str = ''; + utils.each(table.selectedTds,function(td){ + str += td[browser.ie?'innerText':'textContent']; + }) + return str; + }else{ + return orgGetText.call(me.selection) + } + + } + }) + + //处理拖动及框选相关方法 + var startTd = null, //鼠标按下时的锚点td + currentTd = null, //当前鼠标经过时的td + onDrag = "", //指示当前拖动状态,其值可为"","h","v" ,分别表示未拖动状态,横向拖动状态,纵向拖动状态,用于鼠标移动过程中的判断 + onBorder = false, //检测鼠标按下时是否处在单元格边缘位置 + dragButton = null, + dragOver = false, + dragLine = null, //模拟的拖动线 + dragTd = null; //发生拖动的目标td + + var mousedown = false, + //todo 判断混乱模式 + needIEHack = true; + + me.setOpt({ + 'maxColNum':20, + 'maxRowNum':100, + 'defaultCols':5, + 'defaultRows':5, + 'tdvalign':'top', + 'cursorpath':me.options.UEDITOR_HOME_URL + "themes/default/images/cursor_", + 'tableDragable':false, + 'classList':["ue-table-interlace-color-single","ue-table-interlace-color-double"] + }); + me.getUETable = getUETable; + var commands = { + 'deletetable':1, + 'inserttable':1, + 'cellvalign':1, + 'insertcaption':1, + 'deletecaption':1, + 'inserttitle':1, + 'deletetitle':1, + "mergeright":1, + "mergedown":1, + "mergecells":1, + "insertrow":1, + "insertrownext":1, + "deleterow":1, + "insertcol":1, + "insertcolnext":1, + "deletecol":1, + "splittocells":1, + "splittorows":1, + "splittocols":1, + "adaptbytext":1, + "adaptbywindow":1, + "adaptbycustomer":1, + "insertparagraph":1, + "insertparagraphbeforetable":1, + "averagedistributecol":1, + "averagedistributerow":1 + }; + me.ready(function () { + utils.cssRule('table', + //选中的td上的样式 + '.selectTdClass{background-color:#edf5fa !important}' + + 'table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}' + + //插入的表格的默认样式 + 'table{margin-bottom:10px;border-collapse:collapse;display:table;}' + + 'td,th{padding: 5px 10px;border: 1px solid #DDD;}' + + 'caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}' + + 'th{border-top:1px solid #BBB;background-color:#F7F7F7;}' + + 'table tr.firstRow th{border-top-width:2px;}' + + '.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }' + + 'td p{margin:0;padding:0;}', me.document); + + var tableCopyList, isFullCol, isFullRow; + //注册del/backspace事件 + me.addListener('keydown', function (cmd, evt) { + var me = this; + var keyCode = evt.keyCode || evt.which; + + if (keyCode == 8) { + + var ut = getUETableBySelected(me); + if (ut && ut.selectedTds.length) { + + if (ut.isFullCol()) { + me.execCommand('deletecol') + } else if (ut.isFullRow()) { + me.execCommand('deleterow') + } else { + me.fireEvent('delcells'); + } + domUtils.preventDefault(evt); + } + + var caption = domUtils.findParentByTagName(me.selection.getStart(), 'caption', true), + range = me.selection.getRange(); + if (range.collapsed && caption && isEmptyBlock(caption)) { + me.fireEvent('saveScene'); + var table = caption.parentNode; + domUtils.remove(caption); + if (table) { + range.setStart(table.rows[0].cells[0], 0).setCursor(false, true); + } + me.fireEvent('saveScene'); + } + + } + + if (keyCode == 46) { + + ut = getUETableBySelected(me); + if (ut) { + me.fireEvent('saveScene'); + for (var i = 0, ci; ci = ut.selectedTds[i++];) { + domUtils.fillNode(me.document, ci) + } + me.fireEvent('saveScene'); + domUtils.preventDefault(evt); + + } + + } + if (keyCode == 13) { + + var rng = me.selection.getRange(), + caption = domUtils.findParentByTagName(rng.startContainer, 'caption', true); + if (caption) { + var table = domUtils.findParentByTagName(caption, 'table'); + if (!rng.collapsed) { + + rng.deleteContents(); + me.fireEvent('saveScene'); + } else { + if (caption) { + rng.setStart(table.rows[0].cells[0], 0).setCursor(false, true); + } + } + domUtils.preventDefault(evt); + return; + } + if (rng.collapsed) { + var table = domUtils.findParentByTagName(rng.startContainer, 'table'); + if (table) { + var cell = table.rows[0].cells[0], + start = domUtils.findParentByTagName(me.selection.getStart(), ['td', 'th'], true), + preNode = table.previousSibling; + if (cell === start && (!preNode || preNode.nodeType == 1 && preNode.tagName == 'TABLE' ) && domUtils.isStartInblock(rng)) { + var first = domUtils.findParent(me.selection.getStart(), function(n){return domUtils.isBlockElm(n)}, true); + if(first && ( /t(h|d)/i.test(first.tagName) || first === start.firstChild )){ + me.execCommand('insertparagraphbeforetable'); + domUtils.preventDefault(evt); + } + + } + } + } + } + + if ((evt.ctrlKey || evt.metaKey) && evt.keyCode == '67') { + tableCopyList = null; + var ut = getUETableBySelected(me); + if (ut) { + var tds = ut.selectedTds; + isFullCol = ut.isFullCol(); + isFullRow = ut.isFullRow(); + tableCopyList = [ + [ut.cloneCell(tds[0],null,true)] + ]; + for (var i = 1, ci; ci = tds[i]; i++) { + if (ci.parentNode !== tds[i - 1].parentNode) { + tableCopyList.push([ut.cloneCell(ci,null,true)]); + } else { + tableCopyList[tableCopyList.length - 1].push(ut.cloneCell(ci,null,true)); + } + + } + } + } + }); + me.addListener("tablehasdeleted",function(){ + toggleDraggableState(this, false, "", null); + if (dragButton)domUtils.remove(dragButton); + }); + + me.addListener('beforepaste', function (cmd, html) { + var me = this; + var rng = me.selection.getRange(); + if (domUtils.findParentByTagName(rng.startContainer, 'caption', true)) { + var div = me.document.createElement("div"); + div.innerHTML = html.html; + //trace:3729 + html.html = div[browser.ie9below ? 'innerText' : 'textContent']; + return; + } + var table = getUETableBySelected(me); + if (tableCopyList) { + me.fireEvent('saveScene'); + var rng = me.selection.getRange(); + var td = domUtils.findParentByTagName(rng.startContainer, ['td', 'th'], true), tmpNode, preNode; + if (td) { + var ut = getUETable(td); + if (isFullRow) { + var rowIndex = ut.getCellInfo(td).rowIndex; + if (td.tagName == 'TH') { + rowIndex++; + } + for (var i = 0, ci; ci = tableCopyList[i++];) { + var tr = ut.insertRow(rowIndex++, "td"); + for (var j = 0, cj; cj = ci[j]; j++) { + var cell = tr.cells[j]; + if (!cell) { + cell = tr.insertCell(j) + } + cell.innerHTML = cj.innerHTML; + cj.getAttribute('width') && cell.setAttribute('width', cj.getAttribute('width')); + cj.getAttribute('vAlign') && cell.setAttribute('vAlign', cj.getAttribute('vAlign')); + cj.getAttribute('align') && cell.setAttribute('align', cj.getAttribute('align')); + cj.style.cssText && (cell.style.cssText = cj.style.cssText) + } + for (var j = 0, cj; cj = tr.cells[j]; j++) { + if (!ci[j]) + break; + cj.innerHTML = ci[j].innerHTML; + ci[j].getAttribute('width') && cj.setAttribute('width', ci[j].getAttribute('width')); + ci[j].getAttribute('vAlign') && cj.setAttribute('vAlign', ci[j].getAttribute('vAlign')); + ci[j].getAttribute('align') && cj.setAttribute('align', ci[j].getAttribute('align')); + ci[j].style.cssText && (cj.style.cssText = ci[j].style.cssText) + } + } + } else { + if (isFullCol) { + cellInfo = ut.getCellInfo(td); + var maxColNum = 0; + for (var j = 0, ci = tableCopyList[0], cj; cj = ci[j++];) { + maxColNum += cj.colSpan || 1; + } + me.__hasEnterExecCommand = true; + for (i = 0; i < maxColNum; i++) { + me.execCommand('insertcol'); + } + me.__hasEnterExecCommand = false; + td = ut.table.rows[0].cells[cellInfo.cellIndex]; + if (td.tagName == 'TH') { + td = ut.table.rows[1].cells[cellInfo.cellIndex]; + } + } + for (var i = 0, ci; ci = tableCopyList[i++];) { + tmpNode = td; + for (var j = 0, cj; cj = ci[j++];) { + if (td) { + td.innerHTML = cj.innerHTML; + //todo 定制处理 + cj.getAttribute('width') && td.setAttribute('width', cj.getAttribute('width')); + cj.getAttribute('vAlign') && td.setAttribute('vAlign', cj.getAttribute('vAlign')); + cj.getAttribute('align') && td.setAttribute('align', cj.getAttribute('align')); + cj.style.cssText && (td.style.cssText = cj.style.cssText); + preNode = td; + td = td.nextSibling; + } else { + var cloneTd = cj.cloneNode(true); + domUtils.removeAttributes(cloneTd, ['class', 'rowSpan', 'colSpan']); + + preNode.parentNode.appendChild(cloneTd) + } + } + td = ut.getNextCell(tmpNode, true, true); + if (!tableCopyList[i]) + break; + if (!td) { + var cellInfo = ut.getCellInfo(tmpNode); + ut.table.insertRow(ut.table.rows.length); + ut.update(); + td = ut.getVSideCell(tmpNode, true); + } + } + } + ut.update(); + } else { + table = me.document.createElement('table'); + for (var i = 0, ci; ci = tableCopyList[i++];) { + var tr = table.insertRow(table.rows.length); + for (var j = 0, cj; cj = ci[j++];) { + cloneTd = UT.cloneCell(cj,null,true); + domUtils.removeAttributes(cloneTd, ['class']); + tr.appendChild(cloneTd) + } + if (j == 2 && cloneTd.rowSpan > 1) { + cloneTd.rowSpan = 1; + } + } + + var defaultValue = getDefaultValue(me), + width = me.body.offsetWidth - + (needIEHack ? parseInt(domUtils.getComputedStyle(me.body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (me.options.offsetWidth || 0); + me.execCommand('insertHTML', '' + table.innerHTML.replace(/>\s*<').replace(/\bth\b/gi, "td") + '
    ') + } + me.fireEvent('contentchange'); + me.fireEvent('saveScene'); + html.html = ''; + return true; + } else { + var div = me.document.createElement("div"), tables; + div.innerHTML = html.html; + tables = div.getElementsByTagName("table"); + if (domUtils.findParentByTagName(me.selection.getStart(), 'table')) { + utils.each(tables, function (t) { + domUtils.remove(t) + }); + if (domUtils.findParentByTagName(me.selection.getStart(), 'caption', true)) { + div.innerHTML = div[browser.ie ? 'innerText' : 'textContent']; + } + } else { + utils.each(tables, function (table) { + removeStyleSize(table, true); + domUtils.removeAttributes(table, ['style', 'border']); + utils.each(domUtils.getElementsByTagName(table, "td"), function (td) { + if (isEmptyBlock(td)) { + domUtils.fillNode(me.document, td); + } + removeStyleSize(td, true); +// domUtils.removeAttributes(td, ['style']) + }); + }); + } + html.html = div.innerHTML; + } + }); + + me.addListener('afterpaste', function () { + utils.each(domUtils.getElementsByTagName(me.body, "table"), function (table) { + if (table.offsetWidth > me.body.offsetWidth) { + var defaultValue = getDefaultValue(me, table); + table.style.width = me.body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(me.body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (me.options.offsetWidth || 0) + 'px' + } + }) + }); + me.addListener('blur', function () { + tableCopyList = null; + }); + var timer; + me.addListener('keydown', function () { + clearTimeout(timer); + timer = setTimeout(function () { + var rng = me.selection.getRange(), + cell = domUtils.findParentByTagName(rng.startContainer, ['th', 'td'], true); + if (cell) { + var table = cell.parentNode.parentNode.parentNode; + if (table.offsetWidth > table.getAttribute("width")) { + cell.style.wordBreak = "break-all"; + } + } + + }, 100); + }); + me.addListener("selectionchange", function () { + toggleDraggableState(me, false, "", null); + }); + + + //内容变化时触发索引更新 + //todo 可否考虑标记检测,如果不涉及表格的变化就不进行索引重建和更新 + me.addListener("contentchange", function () { + var me = this; + //尽可能排除一些不需要更新的状况 + hideDragLine(me); + if (getUETableBySelected(me))return; + var rng = me.selection.getRange(); + var start = rng.startContainer; + start = domUtils.findParentByTagName(start, ['td', 'th'], true); + utils.each(domUtils.getElementsByTagName(me.document, 'table'), function (table) { + if (me.fireEvent("excludetable", table) === true) return; + table.ueTable = new UT(table); + //trace:3742 +// utils.each(domUtils.getElementsByTagName(me.document, 'td'), function (td) { +// +// if (domUtils.isEmptyBlock(td) && td !== start) { +// domUtils.fillNode(me.document, td); +// if (browser.ie && browser.version == 6) { +// td.innerHTML = ' ' +// } +// } +// }); +// utils.each(domUtils.getElementsByTagName(me.document, 'th'), function (th) { +// if (domUtils.isEmptyBlock(th) && th !== start) { +// domUtils.fillNode(me.document, th); +// if (browser.ie && browser.version == 6) { +// th.innerHTML = ' ' +// } +// } +// }); + table.onmouseover = function () { + me.fireEvent('tablemouseover', table); + }; + table.onmousemove = function () { + me.fireEvent('tablemousemove', table); + me.options.tableDragable && toggleDragButton(true, this, me); + utils.defer(function(){ + me.fireEvent('contentchange',50) + },true) + }; + table.onmouseout = function () { + me.fireEvent('tablemouseout', table); + toggleDraggableState(me, false, "", null); + hideDragLine(me); + }; + table.onclick = function (evt) { + evt = me.window.event || evt; + var target = getParentTdOrTh(evt.target || evt.srcElement); + if (!target)return; + var ut = getUETable(target), + table = ut.table, + cellInfo = ut.getCellInfo(target), + cellsRange, + rng = me.selection.getRange(); +// if ("topLeft" == inPosition(table, mouseCoords(evt))) { +// cellsRange = ut.getCellsRange(ut.table.rows[0].cells[0], ut.getLastCell()); +// ut.setSelected(cellsRange); +// return; +// } +// if ("bottomRight" == inPosition(table, mouseCoords(evt))) { +// +// return; +// } + if (inTableSide(table, target, evt, true)) { + var endTdCol = ut.getCell(ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].rowIndex, ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].cellIndex); + if (evt.shiftKey && ut.selectedTds.length) { + if (ut.selectedTds[0] !== endTdCol) { + cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdCol); + ut.setSelected(cellsRange); + } else { + rng && rng.selectNodeContents(endTdCol).select(); + } + } else { + if (target !== endTdCol) { + cellsRange = ut.getCellsRange(target, endTdCol); + ut.setSelected(cellsRange); + } else { + rng && rng.selectNodeContents(endTdCol).select(); + } + } + return; + } + if (inTableSide(table, target, evt)) { + var endTdRow = ut.getCell(ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].rowIndex, ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].cellIndex); + if (evt.shiftKey && ut.selectedTds.length) { + if (ut.selectedTds[0] !== endTdRow) { + cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdRow); + ut.setSelected(cellsRange); + } else { + rng && rng.selectNodeContents(endTdRow).select(); + } + } else { + if (target !== endTdRow) { + cellsRange = ut.getCellsRange(target, endTdRow); + ut.setSelected(cellsRange); + } else { + rng && rng.selectNodeContents(endTdRow).select(); + } + } + } + }; + }); + + switchBorderColor(me, true); + }); + + domUtils.on(me.document, "mousemove", mouseMoveEvent); + + domUtils.on(me.document, "mouseout", function (evt) { + var target = evt.target || evt.srcElement; + if (target.tagName == "TABLE") { + toggleDraggableState(me, false, "", null); + } + }); + /** + * 表格隔行变色 + */ + me.addListener("interlacetable",function(type,table,classList){ + if(!table) return; + var me = this, + rows = table.rows, + len = rows.length, + getClass = function(list,index,repeat){ + return list[index] ? list[index] : repeat ? list[index % list.length]: ""; + }; + for(var i = 0;i 1 ? currentRowIndex : ua.getCellInfo(cell).rowIndex; + var nextCell = ua.getTabNextCell(cell, currentRowIndex); + if (nextCell) { + if (isEmptyBlock(nextCell)) { + range.setStart(nextCell, 0).setCursor(false, true) + } else { + range.selectNodeContents(nextCell).select() + } + } else { + me.fireEvent('saveScene'); + me.__hasEnterExecCommand = true; + this.execCommand('insertrownext'); + me.__hasEnterExecCommand = false; + range = this.selection.getRange(); + range.setStart(table.rows[table.rows.length - 1].cells[0], 0).setCursor(); + me.fireEvent('saveScene'); + } + } + return true; + } + + }); + browser.ie && me.addListener('selectionchange', function () { + toggleDraggableState(this, false, "", null); + }); + me.addListener("keydown", function (type, evt) { + var me = this; + //处理在表格的最后一个输入tab产生新的表格 + var keyCode = evt.keyCode || evt.which; + if (keyCode == 8 || keyCode == 46) { + return; + } + var notCtrlKey = !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey; + notCtrlKey && removeSelectedClass(domUtils.getElementsByTagName(me.body, "td")); + var ut = getUETableBySelected(me); + if (!ut) return; + notCtrlKey && ut.clearSelected(); + }); + + me.addListener("beforegetcontent", function () { + switchBorderColor(this, false); + browser.ie && utils.each(this.document.getElementsByTagName('caption'), function (ci) { + if (domUtils.isEmptyNode(ci)) { + ci.innerHTML = ' ' + } + }); + }); + me.addListener("aftergetcontent", function () { + switchBorderColor(this, true); + }); + me.addListener("getAllHtml", function () { + removeSelectedClass(me.document.getElementsByTagName("td")); + }); + //修正全屏状态下插入的表格宽度在非全屏状态下撑开编辑器的情况 + me.addListener("fullscreenchanged", function (type, fullscreen) { + if (!fullscreen) { + var ratio = this.body.offsetWidth / document.body.offsetWidth, + tables = domUtils.getElementsByTagName(this.body, "table"); + utils.each(tables, function (table) { + if (table.offsetWidth < me.body.offsetWidth) return false; + var tds = domUtils.getElementsByTagName(table, "td"), + backWidths = []; + utils.each(tds, function (td) { + backWidths.push(td.offsetWidth); + }); + for (var i = 0, td; td = tds[i]; i++) { + td.setAttribute("width", Math.floor(backWidths[i] * ratio)); + } + table.setAttribute("width", Math.floor(getTableWidth(me, needIEHack, getDefaultValue(me)))) + }); + } + }); + + //重写execCommand命令,用于处理框选时的处理 + var oldExecCommand = me.execCommand; + me.execCommand = function (cmd, datatat) { + + var me = this, + args = arguments; + + cmd = cmd.toLowerCase(); + var ut = getUETableBySelected(me), tds, + range = new dom.Range(me.document), + cmdFun = me.commands[cmd] || UE.commands[cmd], + result; + if (!cmdFun) return; + if (ut && !commands[cmd] && !cmdFun.notNeedUndo && !me.__hasEnterExecCommand) { + me.__hasEnterExecCommand = true; + me.fireEvent("beforeexeccommand", cmd); + tds = ut.selectedTds; + var lastState = -2, lastValue = -2, value, state; + for (var i = 0, td; td = tds[i]; i++) { + if (isEmptyBlock(td)) { + range.setStart(td, 0).setCursor(false, true) + } else { + range.selectNode(td).select(true); + } + state = me.queryCommandState(cmd); + value = me.queryCommandValue(cmd); + if (state != -1) { + if (lastState !== state || lastValue !== value) { + me._ignoreContentChange = true; + result = oldExecCommand.apply(me, arguments); + me._ignoreContentChange = false; + + } + lastState = me.queryCommandState(cmd); + lastValue = me.queryCommandValue(cmd); + if (domUtils.isEmptyBlock(td)) { + domUtils.fillNode(me.document, td) + } + } + } + range.setStart(tds[0], 0).shrinkBoundary(true).setCursor(false, true); + me.fireEvent('contentchange'); + me.fireEvent("afterexeccommand", cmd); + me.__hasEnterExecCommand = false; + me._selectionChange(); + } else { + result = oldExecCommand.apply(me, arguments); + } + return result; + }; + + + }); + /** + * 删除obj的宽高style,改成属性宽高 + * @param obj + * @param replaceToProperty + */ + function removeStyleSize(obj, replaceToProperty) { + removeStyle(obj, "width", true); + removeStyle(obj, "height", true); + } + + function removeStyle(obj, styleName, replaceToProperty) { + if (obj.style[styleName]) { + replaceToProperty && obj.setAttribute(styleName, parseInt(obj.style[styleName], 10)); + obj.style[styleName] = ""; + } + } + + function getParentTdOrTh(ele) { + if (ele.tagName == "TD" || ele.tagName == "TH") return ele; + var td; + if (td = domUtils.findParentByTagName(ele, "td", true) || domUtils.findParentByTagName(ele, "th", true)) return td; + return null; + } + + function isEmptyBlock(node) { + var reg = new RegExp(domUtils.fillChar, 'g'); + if (node[browser.ie ? 'innerText' : 'textContent'].replace(/^\s*$/, '').replace(reg, '').length > 0) { + return 0; + } + for (var n in dtd.$isNotEmpty) { + if (node.getElementsByTagName(n).length) { + return 0; + } + } + return 1; + } + + + function mouseCoords(evt) { + if (evt.pageX || evt.pageY) { + return { x:evt.pageX, y:evt.pageY }; + } + return { + x:evt.clientX + me.document.body.scrollLeft - me.document.body.clientLeft, + y:evt.clientY + me.document.body.scrollTop - me.document.body.clientTop + }; + } + + function mouseMoveEvent(evt) { + + if( isEditorDisabled() ) { + return; + } + + try { + + //普通状态下鼠标移动 + var target = getParentTdOrTh(evt.target || evt.srcElement), + pos; + + //区分用户的行为是拖动还是双击 + if( isInResizeBuffer ) { + + me.body.style.webkitUserSelect = 'none'; + + if( Math.abs( userActionStatus.x - evt.clientX ) > offsetOfTableCell || Math.abs( userActionStatus.y - evt.clientY ) > offsetOfTableCell ) { + clearTableDragTimer(); + isInResizeBuffer = false; + singleClickState = 0; + //drag action + tableBorderDrag(evt); + } + } + + //修改单元格大小时的鼠标移动 + if (onDrag && dragTd) { + singleClickState = 0; + me.body.style.webkitUserSelect = 'none'; + me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges'](); + pos = mouseCoords(evt); + toggleDraggableState(me, true, onDrag, pos, target); + if (onDrag == "h") { + dragLine.style.left = getPermissionX(dragTd, evt) + "px"; + } else if (onDrag == "v") { + dragLine.style.top = getPermissionY(dragTd, evt) + "px"; + } + return; + } + //当鼠标处于table上时,修改移动过程中的光标状态 + if (target) { + //针对使用table作为容器的组件不触发拖拽效果 + if (me.fireEvent('excludetable', target) === true) + return; + pos = mouseCoords(evt); + var state = getRelation(target, pos), + table = domUtils.findParentByTagName(target, "table", true); + + if (inTableSide(table, target, evt, true)) { + if (me.fireEvent("excludetable", table) === true) return; + me.body.style.cursor = "url(" + me.options.cursorpath + "h.png),pointer"; + } else if (inTableSide(table, target, evt)) { + if (me.fireEvent("excludetable", table) === true) return; + me.body.style.cursor = "url(" + me.options.cursorpath + "v.png),pointer"; + } else { + me.body.style.cursor = "text"; + var curCell = target; + if (/\d/.test(state)) { + state = state.replace(/\d/, ''); + target = getUETable(target).getPreviewCell(target, state == "v"); + } + //位于第一行的顶部或者第一列的左边时不可拖动 + toggleDraggableState(me, target ? !!state : false, target ? state : '', pos, target); + + } + } else { + toggleDragButton(false, table, me); + } + + } catch (e) { + showError(e); + } + } + + var dragButtonTimer; + + function toggleDragButton(show, table, editor) { + if (!show) { + if (dragOver)return; + dragButtonTimer = setTimeout(function () { + !dragOver && dragButton && dragButton.parentNode && dragButton.parentNode.removeChild(dragButton); + }, 2000); + } else { + createDragButton(table, editor); + } + } + + function createDragButton(table, editor) { + var pos = domUtils.getXY(table), + doc = table.ownerDocument; + if (dragButton && dragButton.parentNode)return dragButton; + dragButton = doc.createElement("div"); + dragButton.contentEditable = false; + dragButton.innerHTML = ""; + dragButton.style.cssText = "width:15px;height:15px;background-image:url(" + editor.options.UEDITOR_HOME_URL + "dialogs/table/dragicon.png);position: absolute;cursor:move;top:" + (pos.y - 15) + "px;left:" + (pos.x) + "px;"; + domUtils.unSelectable(dragButton); + dragButton.onmouseover = function (evt) { + dragOver = true; + }; + dragButton.onmouseout = function (evt) { + dragOver = false; + }; + domUtils.on(dragButton, 'click', function (type, evt) { + doClick(evt, this); + }); + domUtils.on(dragButton, 'dblclick', function (type, evt) { + doDblClick(evt); + }); + domUtils.on(dragButton, 'dragstart', function (type, evt) { + domUtils.preventDefault(evt); + }); + var timer; + + function doClick(evt, button) { + // 部分浏览器下需要清理 + clearTimeout(timer); + timer = setTimeout(function () { + editor.fireEvent("tableClicked", table, button); + }, 300); + } + + function doDblClick(evt) { + clearTimeout(timer); + var ut = getUETable(table), + start = table.rows[0].cells[0], + end = ut.getLastCell(), + range = ut.getCellsRange(start, end); + editor.selection.getRange().setStart(start, 0).setCursor(false, true); + ut.setSelected(range); + } + + doc.body.appendChild(dragButton); + } + + +// function inPosition(table, pos) { +// var tablePos = domUtils.getXY(table), +// width = table.offsetWidth, +// height = table.offsetHeight; +// if (pos.x - tablePos.x < 5 && pos.y - tablePos.y < 5) { +// return "topLeft"; +// } else if (tablePos.x + width - pos.x < 5 && tablePos.y + height - pos.y < 5) { +// return "bottomRight"; +// } +// } + + function inTableSide(table, cell, evt, top) { + var pos = mouseCoords(evt), + state = getRelation(cell, pos); + + if (top) { + var caption = table.getElementsByTagName("caption")[0], + capHeight = caption ? caption.offsetHeight : 0; + return (state == "v1") && ((pos.y - domUtils.getXY(table).y - capHeight) < 8); + } else { + return (state == "h1") && ((pos.x - domUtils.getXY(table).x) < 8); + } + } + + /** + * 获取拖动时允许的X轴坐标 + * @param dragTd + * @param evt + */ + function getPermissionX(dragTd, evt) { + var ut = getUETable(dragTd); + if (ut) { + var preTd = ut.getSameEndPosCells(dragTd, "x")[0], + nextTd = ut.getSameStartPosXCells(dragTd)[0], + mouseX = mouseCoords(evt).x, + left = (preTd ? domUtils.getXY(preTd).x : domUtils.getXY(ut.table).x) + 20 , + right = nextTd ? domUtils.getXY(nextTd).x + nextTd.offsetWidth - 20 : (me.body.offsetWidth + 5 || parseInt(domUtils.getComputedStyle(me.body, "width"), 10)); + + left += cellMinWidth; + right -= cellMinWidth; + + return mouseX < left ? left : mouseX > right ? right : mouseX; + } + } + + /** + * 获取拖动时允许的Y轴坐标 + */ + function getPermissionY(dragTd, evt) { + try { + var top = domUtils.getXY(dragTd).y, + mousePosY = mouseCoords(evt).y; + return mousePosY < top ? top : mousePosY; + } catch (e) { + showError(e); + } + } + + /** + * 移动状态切换 + */ + function toggleDraggableState(editor, draggable, dir, mousePos, cell) { + try { + editor.body.style.cursor = dir == "h" ? "col-resize" : dir == "v" ? "row-resize" : "text"; + if (browser.ie) { + if (dir && !mousedown && !getUETableBySelected(editor)) { + getDragLine(editor, editor.document); + showDragLineAt(dir, cell); + } else { + hideDragLine(editor) + } + } + onBorder = draggable; + } catch (e) { + showError(e); + } + } + + /** + * 获取与UETable相关的resize line + * @param uetable UETable对象 + */ + function getResizeLineByUETable() { + + var lineId = '_UETableResizeLine', + line = this.document.getElementById( lineId ); + + if( !line ) { + line = this.document.createElement("div"); + line.id = lineId; + line.contnetEditable = false; + line.setAttribute("unselectable", "on"); + + var styles = { + width: 2*cellBorderWidth + 1 + 'px', + position: 'absolute', + 'z-index': 100000, + cursor: 'col-resize', + background: 'red', + display: 'none' + }; + + //切换状态 + line.onmouseout = function(){ + this.style.display = 'none'; + }; + + utils.extend( line.style, styles ); + + this.document.body.appendChild( line ); + + } + + return line; + + } + + /** + * 更新resize-line + */ + function updateResizeLine( cell, uetable ) { + + var line = getResizeLineByUETable.call( this ), + table = uetable.table, + styles = { + top: domUtils.getXY( table ).y + 'px', + left: domUtils.getXY( cell).x + cell.offsetWidth - cellBorderWidth + 'px', + display: 'block', + height: table.offsetHeight + 'px' + }; + + utils.extend( line.style, styles ); + + } + + /** + * 显示resize-line + */ + function showResizeLine( cell ) { + + var uetable = getUETable( cell ); + + updateResizeLine.call( this, cell, uetable ); + + } + + /** + * 获取鼠标与当前单元格的相对位置 + * @param ele + * @param mousePos + */ + function getRelation(ele, mousePos) { + var elePos = domUtils.getXY(ele); + + if( !elePos ) { + return ''; + } + + if (elePos.x + ele.offsetWidth - mousePos.x < cellBorderWidth) { + return "h"; + } + if (mousePos.x - elePos.x < cellBorderWidth) { + return 'h1' + } + if (elePos.y + ele.offsetHeight - mousePos.y < cellBorderWidth) { + return "v"; + } + if (mousePos.y - elePos.y < cellBorderWidth) { + return 'v1' + } + return ''; + } + + function mouseDownEvent(type, evt) { + + if( isEditorDisabled() ) { + return ; + } + + userActionStatus = { + x: evt.clientX, + y: evt.clientY + }; + + //右键菜单单独处理 + if (evt.button == 2) { + var ut = getUETableBySelected(me), + flag = false; + + if (ut) { + var td = getTargetTd(me, evt); + utils.each(ut.selectedTds, function (ti) { + if (ti === td) { + flag = true; + } + }); + if (!flag) { + removeSelectedClass(domUtils.getElementsByTagName(me.body, "th td")); + ut.clearSelected() + } else { + td = ut.selectedTds[0]; + setTimeout(function () { + me.selection.getRange().setStart(td, 0).setCursor(false, true); + }, 0); + + } + } + } else { + tableClickHander( evt ); + } + + } + + //清除表格的计时器 + function clearTableTimer() { + tabTimer && clearTimeout( tabTimer ); + tabTimer = null; + } + + //双击收缩 + function tableDbclickHandler(evt) { + singleClickState = 0; + evt = evt || me.window.event; + var target = getParentTdOrTh(evt.target || evt.srcElement); + if (target) { + var h; + if (h = getRelation(target, mouseCoords(evt))) { + + hideDragLine( me ); + + if (h == 'h1') { + h = 'h'; + if (inTableSide(domUtils.findParentByTagName(target, "table"), target, evt)) { + me.execCommand('adaptbywindow'); + } else { + target = getUETable(target).getPreviewCell(target); + if (target) { + var rng = me.selection.getRange(); + rng.selectNodeContents(target).setCursor(true, true) + } + } + } + if (h == 'h') { + var ut = getUETable(target), + table = ut.table, + cells = getCellsByMoveBorder( target, table, true ); + + cells = extractArray( cells, 'left' ); + + ut.width = ut.offsetWidth; + + var oldWidth = [], + newWidth = []; + + utils.each( cells, function( cell ){ + + oldWidth.push( cell.offsetWidth ); + + } ); + + utils.each( cells, function( cell ){ + + cell.removeAttribute("width"); + + } ); + + window.setTimeout( function(){ + + //是否允许改变 + var changeable = true; + + utils.each( cells, function( cell, index ){ + + var width = cell.offsetWidth; + + if( width > oldWidth[index] ) { + changeable = false; + return false; + } + + newWidth.push( width ); + + } ); + + var change = changeable ? newWidth : oldWidth; + + utils.each( cells, function( cell, index ){ + + cell.width = change[index] - getTabcellSpace(); + + } ); + + + }, 0 ); + +// minWidth -= cellMinWidth; +// +// table.removeAttribute("width"); +// utils.each(cells, function (cell) { +// cell.style.width = ""; +// cell.width -= minWidth; +// }); + + } + } + } + } + + function tableClickHander( evt ) { + + removeSelectedClass(domUtils.getElementsByTagName(me.body, "td th")); + //trace:3113 + //选中单元格,点击table外部,不会清掉table上挂的ueTable,会引起getUETableBySelected方法返回值 + utils.each(me.document.getElementsByTagName('table'), function (t) { + t.ueTable = null; + }); + startTd = getTargetTd(me, evt); + if( !startTd ) return; + var table = domUtils.findParentByTagName(startTd, "table", true); + ut = getUETable(table); + ut && ut.clearSelected(); + + //判断当前鼠标状态 + if (!onBorder) { + me.document.body.style.webkitUserSelect = ''; + mousedown = true; + me.addListener('mouseover', mouseOverEvent); + } else { + //边框上的动作处理 + borderActionHandler( evt ); + } + + + } + + //处理表格边框上的动作, 这里做延时处理,避免两种动作互相影响 + function borderActionHandler( evt ) { + + if ( browser.ie ) { + evt = reconstruct(evt ); + } + + clearTableDragTimer(); + + //是否正在等待resize的缓冲中 + isInResizeBuffer = true; + + tableDragTimer = setTimeout(function(){ + tableBorderDrag( evt ); + }, dblclickTime); + + } + + function extractArray( originArr, key ) { + + var result = [], + tmp = null; + + for( var i = 0, len = originArr.length; i 0 && singleClickState--; + }, dblclickTime ); + + if( singleClickState === 2 ) { + + singleClickState = 0; + tableDbclickHandler(evt); + return; + + } + + } + + if (evt.button == 2)return; + var me = this; + //清除表格上原生跨选问题 + var range = me.selection.getRange(), + start = domUtils.findParentByTagName(range.startContainer, 'table', true), + end = domUtils.findParentByTagName(range.endContainer, 'table', true); + + if (start || end) { + if (start === end) { + start = domUtils.findParentByTagName(range.startContainer, ['td', 'th', 'caption'], true); + end = domUtils.findParentByTagName(range.endContainer, ['td', 'th', 'caption'], true); + if (start !== end) { + me.selection.clearRange() + } + } else { + me.selection.clearRange() + } + } + mousedown = false; + me.document.body.style.webkitUserSelect = ''; + //拖拽状态下的mouseUP + if ( onDrag && dragTd ) { + + me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges'](); + + singleClickState = 0; + dragLine = me.document.getElementById('ue_tableDragLine'); + + // trace 3973 + if (dragLine) { + var dragTdPos = domUtils.getXY(dragTd), + dragLinePos = domUtils.getXY(dragLine); + + switch (onDrag) { + case "h": + changeColWidth(dragTd, dragLinePos.x - dragTdPos.x); + break; + case "v": + changeRowHeight(dragTd, dragLinePos.y - dragTdPos.y - dragTd.offsetHeight); + break; + default: + } + onDrag = ""; + dragTd = null; + + hideDragLine(me); + me.fireEvent('saveScene'); + return; + } + } + //正常状态下的mouseup + if (!startTd) { + var target = domUtils.findParentByTagName(evt.target || evt.srcElement, "td", true); + if (!target) target = domUtils.findParentByTagName(evt.target || evt.srcElement, "th", true); + if (target && (target.tagName == "TD" || target.tagName == "TH")) { + if (me.fireEvent("excludetable", target) === true) return; + range = new dom.Range(me.document); + range.setStart(target, 0).setCursor(false, true); + } + } else { + var ut = getUETable(startTd), + cell = ut ? ut.selectedTds[0] : null; + if (cell) { + range = new dom.Range(me.document); + if (domUtils.isEmptyBlock(cell)) { + range.setStart(cell, 0).setCursor(false, true); + } else { + range.selectNodeContents(cell).shrinkBoundary().setCursor(false, true); + } + } else { + range = me.selection.getRange().shrinkBoundary(); + if (!range.collapsed) { + var start = domUtils.findParentByTagName(range.startContainer, ['td', 'th'], true), + end = domUtils.findParentByTagName(range.endContainer, ['td', 'th'], true); + //在table里边的不能清除 + if (start && !end || !start && end || start && end && start !== end) { + range.setCursor(false, true); + } + } + } + startTd = null; + me.removeListener('mouseover', mouseOverEvent); + } + me._selectionChange(250, evt); + } + + function mouseOverEvent(type, evt) { + + if( isEditorDisabled() ) { + return; + } + + var me = this, + tar = evt.target || evt.srcElement; + currentTd = domUtils.findParentByTagName(tar, "td", true) || domUtils.findParentByTagName(tar, "th", true); + //需要判断两个TD是否位于同一个表格内 + if (startTd && currentTd && + ((startTd.tagName == "TD" && currentTd.tagName == "TD") || (startTd.tagName == "TH" && currentTd.tagName == "TH")) && + domUtils.findParentByTagName(startTd, 'table') == domUtils.findParentByTagName(currentTd, 'table')) { + var ut = getUETable(currentTd); + if (startTd != currentTd) { + me.document.body.style.webkitUserSelect = 'none'; + me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges'](); + var range = ut.getCellsRange(startTd, currentTd); + ut.setSelected(range); + } else { + me.document.body.style.webkitUserSelect = ''; + ut.clearSelected(); + } + + } + evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); + } + + function setCellHeight(cell, height, backHeight) { + var lineHight = parseInt(domUtils.getComputedStyle(cell, "line-height"), 10), + tmpHeight = backHeight + height; + height = tmpHeight < lineHight ? lineHight : tmpHeight; + if (cell.style.height) cell.style.height = ""; + cell.rowSpan == 1 ? cell.setAttribute("height", height) : (cell.removeAttribute && cell.removeAttribute("height")); + } + + function getWidth(cell) { + if (!cell)return 0; + return parseInt(domUtils.getComputedStyle(cell, "width"), 10); + } + + function changeColWidth(cell, changeValue) { + + var ut = getUETable(cell); + if (ut) { + + //根据当前移动的边框获取相关的单元格 + var table = ut.table, + cells = getCellsByMoveBorder( cell, table ); + + table.style.width = ""; + table.removeAttribute("width"); + + //修正改变量 + changeValue = correctChangeValue( changeValue, cell, cells ); + + if (cell.nextSibling) { + + var i=0; + + utils.each( cells, function( cellGroup ){ + + cellGroup.left.width = (+cellGroup.left.width)+changeValue; + cellGroup.right && ( cellGroup.right.width = (+cellGroup.right.width)-changeValue ); + + } ); + + } else { + + utils.each( cells, function( cellGroup ){ + cellGroup.left.width -= -changeValue; + } ); + + } + } + + } + + function isEditorDisabled() { + return me.body.contentEditable === "false"; + } + + function changeRowHeight(td, changeValue) { + if (Math.abs(changeValue) < 10) return; + var ut = getUETable(td); + if (ut) { + var cells = ut.getSameEndPosCells(td, "y"), + //备份需要连带变化的td的原始高度,否则后期无法获取正确的值 + backHeight = cells[0] ? cells[0].offsetHeight : 0; + for (var i = 0, cell; cell = cells[i++];) { + setCellHeight(cell, changeValue, backHeight); + } + } + + } + + /** + * 获取调整单元格大小的相关单元格 + * @isContainMergeCell 返回的结果中是否包含发生合并后的单元格 + */ + function getCellsByMoveBorder( cell, table, isContainMergeCell ) { + + if( !table ) { + table = domUtils.findParentByTagName( cell, 'table' ); + } + + if( !table ) { + return null; + } + + //获取到该单元格所在行的序列号 + var index = domUtils.getNodeIndex( cell ), + temp = cell, + rows = table.rows, + colIndex = 0; + + while( temp ) { + //获取到当前单元格在未发生单元格合并时的序列 + if( temp.nodeType === 1 ) { + colIndex += (temp.colSpan || 1); + } + temp = temp.previousSibling; + } + + temp = null; + + //记录想关的单元格 + var borderCells = []; + + utils.each(rows, function( tabRow ){ + + var cells = tabRow.cells, + currIndex = 0; + + utils.each( cells, function( tabCell ){ + + currIndex += (tabCell.colSpan || 1); + + if( currIndex === colIndex ) { + + borderCells.push({ + left: tabCell, + right: tabCell.nextSibling || null + }); + + return false; + + } else if( currIndex > colIndex ) { + + if( isContainMergeCell ) { + borderCells.push({ + left: tabCell + }); + } + + return false; + } + + + } ); + + }); + + return borderCells; + + } + + + /** + * 通过给定的单元格集合获取最小的单元格width + */ + function getMinWidthByTableCells( cells ) { + + var minWidth = Number.MAX_VALUE; + + for( var i = 0, curCell; curCell = cells[ i ] ; i++ ) { + + minWidth = Math.min( minWidth, curCell.width || getTableCellWidth( curCell ) ); + + } + + return minWidth; + + } + + function correctChangeValue( changeValue, relatedCell, cells ) { + + //为单元格的paading预留空间 + changeValue -= getTabcellSpace(); + + if( changeValue < 0 ) { + return 0; + } + + changeValue -= getTableCellWidth( relatedCell ); + + //确定方向 + var direction = changeValue < 0 ? 'left':'right'; + + changeValue = Math.abs(changeValue); + + //只关心非最后一个单元格就可以 + utils.each( cells, function( cellGroup ){ + + var curCell = cellGroup[direction]; + + //为单元格保留最小空间 + if( curCell ) { + changeValue = Math.min( changeValue, getTableCellWidth( curCell )-cellMinWidth ); + } + + + } ); + + + //修正越界 + changeValue = changeValue < 0 ? 0 : changeValue; + + return direction === 'left' ? -changeValue : changeValue; + + } + + function getTableCellWidth( cell ) { + + var width = 0, + //偏移纠正量 + offset = 0, + width = cell.offsetWidth - getTabcellSpace(); + + //最后一个节点纠正一下 + if( !cell.nextSibling ) { + + width -= getTableCellOffset( cell ); + + } + + width = width < 0 ? 0 : width; + + try { + cell.width = width; + } catch(e) { + } + + return width; + + } + + /** + * 获取单元格所在表格的最末单元格的偏移量 + */ + function getTableCellOffset( cell ) { + + tab = domUtils.findParentByTagName( cell, "table", false); + + if( tab.offsetVal === undefined ) { + + var prev = cell.previousSibling; + + if( prev ) { + + //最后一个单元格和前一个单元格的width diff结果 如果恰好为一个border width, 则条件成立 + tab.offsetVal = cell.offsetWidth - prev.offsetWidth === UT.borderWidth ? UT.borderWidth : 0; + + } else { + tab.offsetVal = 0; + } + + } + + return tab.offsetVal; + + } + + function getTabcellSpace() { + + if( UT.tabcellSpace === undefined ) { + + var cell = null, + tab = me.document.createElement("table"), + tbody = me.document.createElement("tbody"), + trow = me.document.createElement("tr"), + tabcell = me.document.createElement("td"), + mirror = null; + + tabcell.style.cssText = 'border: 0;'; + tabcell.width = 1; + + trow.appendChild( tabcell ); + trow.appendChild( mirror = tabcell.cloneNode( false ) ); + + tbody.appendChild( trow ); + + tab.appendChild( tbody ); + + tab.style.cssText = "visibility: hidden;"; + + me.body.appendChild( tab ); + + UT.paddingSpace = tabcell.offsetWidth - 1; + + var tmpTabWidth = tab.offsetWidth; + + tabcell.style.cssText = ''; + mirror.style.cssText = ''; + + UT.borderWidth = ( tab.offsetWidth - tmpTabWidth ) / 3; + + UT.tabcellSpace = UT.paddingSpace + UT.borderWidth; + + me.body.removeChild( tab ); + + } + + getTabcellSpace = function(){ return UT.tabcellSpace; }; + + return UT.tabcellSpace; + + } + + function getDragLine(editor, doc) { + if (mousedown)return; + dragLine = editor.document.createElement("div"); + domUtils.setAttributes(dragLine, { + id:"ue_tableDragLine", + unselectable:'on', + contenteditable:false, + 'onresizestart':'return false', + 'ondragstart':'return false', + 'onselectstart':'return false', + style:"background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)" + }); + editor.body.appendChild(dragLine); + } + + function hideDragLine(editor) { + if (mousedown)return; + var line; + while (line = editor.document.getElementById('ue_tableDragLine')) { + domUtils.remove(line) + } + } + + /** + * 依据state(v|h)在cell位置显示横线 + * @param state + * @param cell + */ + function showDragLineAt(state, cell) { + if (!cell) return; + var table = domUtils.findParentByTagName(cell, "table"), + caption = table.getElementsByTagName('caption'), + width = table.offsetWidth, + height = table.offsetHeight - (caption.length > 0 ? caption[0].offsetHeight : 0), + tablePos = domUtils.getXY(table), + cellPos = domUtils.getXY(cell), css; + switch (state) { + case "h": + css = 'height:' + height + 'px;top:' + (tablePos.y + (caption.length > 0 ? caption[0].offsetHeight : 0)) + 'px;left:' + (cellPos.x + cell.offsetWidth); + dragLine.style.cssText = css + 'px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)'; + break; + case "v": + css = 'width:' + width + 'px;left:' + tablePos.x + 'px;top:' + (cellPos.y + cell.offsetHeight ); + //必须加上border:0和color:blue,否则低版ie不支持背景色显示 + dragLine.style.cssText = css + 'px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)'; + break; + default: + } + } + + /** + * 当表格边框颜色为白色时设置为虚线,true为添加虚线 + * @param editor + * @param flag + */ + function switchBorderColor(editor, flag) { + var tableArr = domUtils.getElementsByTagName(editor.body, "table"), color; + for (var i = 0, node; node = tableArr[i++];) { + var td = domUtils.getElementsByTagName(node, "td"); + if (td[0]) { + if (flag) { + color = (td[0].style.borderColor).replace(/\s/g, ""); + if (/(#ffffff)|(rgb\(255,255,255\))/ig.test(color)) + domUtils.addClass(node, "noBorderTable") + } else { + domUtils.removeClasses(node, "noBorderTable") + } + } + + } + } + + function getTableWidth(editor, needIEHack, defaultValue) { + var body = editor.body; + return body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (editor.options.offsetWidth || 0); + } + + /** + * 获取当前拖动的单元格 + */ + function getTargetTd(editor, evt) { + + var target = domUtils.findParentByTagName(evt.target || evt.srcElement, ["td", "th"], true), + dir = null; + + if( !target ) { + return null; + } + + dir = getRelation( target, mouseCoords( evt ) ); + + //如果有前一个节点, 需要做一个修正, 否则可能会得到一个错误的td + + if( !target ) { + return null; + } + + if( dir === 'h1' && target.previousSibling ) { + + var position = domUtils.getXY( target), + cellWidth = target.offsetWidth; + + if( Math.abs( position.x + cellWidth - evt.clientX ) > cellWidth / 3 ) { + target = target.previousSibling; + } + + } else if( dir === 'v1' && target.parentNode.previousSibling ) { + + var position = domUtils.getXY( target), + cellHeight = target.offsetHeight; + + if( Math.abs( position.y + cellHeight - evt.clientY ) > cellHeight / 3 ) { + target = target.parentNode.previousSibling.firstChild; + } + + } + + + //排除了非td内部以及用于代码高亮部分的td + return target && !(editor.fireEvent("excludetable", target) === true) ? target : null; + } + +}; + + +// plugins/table.sort.js +/** + * Created with JetBrains PhpStorm. + * User: Jinqn + * Date: 13-10-12 + * Time: 上午10:20 + * To change this template use File | Settings | File Templates. + */ + +UE.UETable.prototype.sortTable = function (sortByCellIndex, compareFn) { + var table = this.table, + rows = table.rows, + trArray = [], + flag = rows[0].cells[0].tagName === "TH", + lastRowIndex = 0; + if(this.selectedTds.length){ + var range = this.cellsRange, + len = range.endRowIndex + 1; + for (var i = range.beginRowIndex; i < len; i++) { + trArray[i] = rows[i]; + } + trArray.splice(0,range.beginRowIndex); + lastRowIndex = (range.endRowIndex +1) === this.rowsNum ? 0 : range.endRowIndex +1; + }else{ + 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[browser.ie ? 'innerText':'textContent'].match(/\d+/), + value2 = td2[browser.ie ? '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[browser.ie ? 'innerText':'textContent'].match(/\d+/), + value2 = td2[browser.ie ? '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 = utils.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]) + } +}; + +UE.plugins['tablesort'] = function () { + var me = this, + UT = UE.UETable, + getUETable = function (tdOrTable) { + return UT.getUETable(tdOrTable); + }, + getTableItemsByRange = function (editor) { + return UT.getTableItemsByRange(editor); + }; + + + me.ready(function () { + //添加表格可排序的样式 + utils.cssRule('tablesort', + 'table.sortEnabled tr.firstRow th,table.sortEnabled tr.firstRow td{padding-right:20px;background-repeat: no-repeat;background-position: center right;' + + ' background-image:url(' + me.options.themePath + me.options.theme + '/images/sortable.png);}', + me.document); + + //做单元格合并操作时,清除可排序标识 + me.addListener("afterexeccommand", function (type, cmd) { + if( cmd == 'mergeright' || cmd == 'mergedown' || cmd == 'mergecells') { + this.execCommand('disablesort'); + } + }); + }); + + + + //表格排序 + UE.commands['sorttable'] = { + queryCommandState: function () { + var me = this, + tableItems = getTableItemsByRange(me); + if (!tableItems.cell) return -1; + var table = tableItems.table, + cells = table.getElementsByTagName("td"); + for (var i = 0, cell; cell = cells[i++];) { + if (cell.rowSpan != 1 || cell.colSpan != 1) return -1; + } + return 0; + }, + execCommand: function (cmd, fn) { + var me = this, + range = me.selection.getRange(), + bk = range.createBookmark(true), + tableItems = getTableItemsByRange(me), + cell = tableItems.cell, + ut = getUETable(tableItems.table), + cellInfo = ut.getCellInfo(cell); + ut.sortTable(cellInfo.cellIndex, fn); + range.moveToBookmark(bk); + try{ + range.select(); + }catch(e){} + } + }; + + //设置表格可排序,清除表格可排序 + UE.commands["enablesort"] = UE.commands["disablesort"] = { + queryCommandState: function (cmd) { + var table = getTableItemsByRange(this).table; + if(table && cmd=='enablesort') { + var cells = domUtils.getElementsByTagName(table, 'th td'); + for(var i = 0; i1 || cells[i].getAttribute('rowspan')>1) return -1; + } + } + + return !table ? -1: cmd=='enablesort' ^ table.getAttribute('data-sort')!='sortEnabled' ? -1:0; + }, + execCommand: function (cmd) { + var table = getTableItemsByRange(this).table; + table.setAttribute("data-sort", cmd == "enablesort" ? "sortEnabled" : "sortDisabled"); + cmd == "enablesort" ? domUtils.addClass(table,"sortEnabled"):domUtils.removeClasses(table,"sortEnabled"); + } + }; +}; + + +// plugins/contextmenu.js +///import core +///commands 右键菜单 +///commandsName ContextMenu +///commandsTitle 右键菜单 +/** + * 右键菜单 + * @function + * @name baidu.editor.plugins.contextmenu + * @author zhanyi + */ + +UE.plugins['contextmenu'] = function () { + var me = this; + me.setOpt('enableContextMenu',true); + if(me.getOpt('enableContextMenu') === false){ + return; + } + var lang = me.getLang( "contextMenu" ), + menu, + items = me.options.contextMenu || [ + {label:lang['selectall'], cmdName:'selectall'}, + { + label:lang.cleardoc, + cmdName:'cleardoc', + exec:function () { + if ( confirm( lang.confirmclear ) ) { + this.execCommand( 'cleardoc' ); + } + } + }, + '-', + { + label:lang.unlink, + cmdName:'unlink' + }, + '-', + { + group:lang.paragraph, + icon:'justifyjustify', + subMenu:[ + { + label:lang.justifyleft, + cmdName:'justify', + value:'left' + }, + { + label:lang.justifyright, + cmdName:'justify', + value:'right' + }, + { + label:lang.justifycenter, + cmdName:'justify', + value:'center' + }, + { + label:lang.justifyjustify, + cmdName:'justify', + value:'justify' + } + ] + }, + '-', + { + group:lang.table, + icon:'table', + subMenu:[ + { + label:lang.inserttable, + cmdName:'inserttable' + }, + { + label:lang.deletetable, + cmdName:'deletetable' + }, + '-', + { + label:lang.deleterow, + cmdName:'deleterow' + }, + { + label:lang.deletecol, + cmdName:'deletecol' + }, + { + label:lang.insertcol, + cmdName:'insertcol' + }, + { + label:lang.insertcolnext, + cmdName:'insertcolnext' + }, + { + label:lang.insertrow, + cmdName:'insertrow' + }, + { + label:lang.insertrownext, + cmdName:'insertrownext' + }, + '-', + { + label:lang.insertcaption, + cmdName:'insertcaption' + }, + { + label:lang.deletecaption, + cmdName:'deletecaption' + }, + { + label:lang.inserttitle, + cmdName:'inserttitle' + }, + { + label:lang.deletetitle, + cmdName:'deletetitle' + }, + { + label:lang.inserttitlecol, + cmdName:'inserttitlecol' + }, + { + label:lang.deletetitlecol, + cmdName:'deletetitlecol' + }, + '-', + { + label:lang.mergecells, + cmdName:'mergecells' + }, + { + label:lang.mergeright, + cmdName:'mergeright' + }, + { + label:lang.mergedown, + cmdName:'mergedown' + }, + '-', + { + label:lang.splittorows, + cmdName:'splittorows' + }, + { + label:lang.splittocols, + cmdName:'splittocols' + }, + { + label:lang.splittocells, + cmdName:'splittocells' + }, + '-', + { + label:lang.averageDiseRow, + cmdName:'averagedistributerow' + }, + { + label:lang.averageDisCol, + cmdName:'averagedistributecol' + }, + '-', + { + label:lang.edittd, + cmdName:'edittd', + exec:function () { + if ( UE.ui['edittd'] ) { + new UE.ui['edittd']( this ); + } + this.getDialog('edittd').open(); + } + }, + { + label:lang.edittable, + cmdName:'edittable', + exec:function () { + if ( UE.ui['edittable'] ) { + new UE.ui['edittable']( this ); + } + this.getDialog('edittable').open(); + } + }, + { + label:lang.setbordervisible, + cmdName:'setbordervisible' + } + ] + }, + { + group:lang.tablesort, + icon:'tablesort', + subMenu:[ + { + label:lang.enablesort, + cmdName:'enablesort' + }, + { + label:lang.disablesort, + cmdName:'disablesort' + }, + '-', + { + label:lang.reversecurrent, + cmdName:'sorttable', + value:'reversecurrent' + }, + { + label:lang.orderbyasc, + cmdName:'sorttable', + value:'orderbyasc' + }, + { + label:lang.reversebyasc, + cmdName:'sorttable', + value:'reversebyasc' + }, + { + label:lang.orderbynum, + cmdName:'sorttable', + value:'orderbynum' + }, + { + label:lang.reversebynum, + cmdName:'sorttable', + value:'reversebynum' + } + ] + }, + { + group:lang.borderbk, + icon:'borderBack', + subMenu:[ + { + label:lang.setcolor, + cmdName:"interlacetable", + exec:function(){ + this.execCommand("interlacetable"); + } + }, + { + label:lang.unsetcolor, + cmdName:"uninterlacetable", + exec:function(){ + this.execCommand("uninterlacetable"); + } + }, + { + label:lang.setbackground, + cmdName:"settablebackground", + exec:function(){ + this.execCommand("settablebackground",{repeat:true,colorList:["#bbb","#ccc"]}); + } + }, + { + label:lang.unsetbackground, + cmdName:"cleartablebackground", + exec:function(){ + this.execCommand("cleartablebackground"); + } + }, + { + label:lang.redandblue, + cmdName:"settablebackground", + exec:function(){ + this.execCommand("settablebackground",{repeat:true,colorList:["red","blue"]}); + } + }, + { + label:lang.threecolorgradient, + cmdName:"settablebackground", + exec:function(){ + this.execCommand("settablebackground",{repeat:true,colorList:["#aaa","#bbb","#ccc"]}); + } + } + ] + }, + { + group:lang.aligntd, + icon:'aligntd', + subMenu:[ + { + cmdName:'cellalignment', + value:{align:'left',vAlign:'top'} + }, + { + cmdName:'cellalignment', + value:{align:'center',vAlign:'top'} + }, + { + cmdName:'cellalignment', + value:{align:'right',vAlign:'top'} + }, + { + cmdName:'cellalignment', + value:{align:'left',vAlign:'middle'} + }, + { + cmdName:'cellalignment', + value:{align:'center',vAlign:'middle'} + }, + { + cmdName:'cellalignment', + value:{align:'right',vAlign:'middle'} + }, + { + cmdName:'cellalignment', + value:{align:'left',vAlign:'bottom'} + }, + { + cmdName:'cellalignment', + value:{align:'center',vAlign:'bottom'} + }, + { + cmdName:'cellalignment', + value:{align:'right',vAlign:'bottom'} + } + ] + }, + { + group:lang.aligntable, + icon:'aligntable', + subMenu:[ + { + cmdName:'tablealignment', + className: 'left', + label:lang.tableleft, + value:"left" + }, + { + cmdName:'tablealignment', + className: 'center', + label:lang.tablecenter, + value:"center" + }, + { + cmdName:'tablealignment', + className: 'right', + label:lang.tableright, + value:"right" + } + ] + }, + '-', + { + label:lang.insertparagraphbefore, + cmdName:'insertparagraph', + value:true + }, + { + label:lang.insertparagraphafter, + cmdName:'insertparagraph' + }, + { + label:lang['copy'], + cmdName:'copy' + }, + { + label:lang['paste'], + cmdName:'paste' + } + ]; + if ( !items.length ) { + return; + } + var uiUtils = UE.ui.uiUtils; + + me.addListener( 'contextmenu', function ( type, evt ) { + + var offset = uiUtils.getViewportOffsetByEvent( evt ); + me.fireEvent( 'beforeselectionchange' ); + if ( menu ) { + menu.destroy(); + } + for ( var i = 0, ti, contextItems = []; ti = items[i]; i++ ) { + var last; + (function ( item ) { + if ( item == '-' ) { + if ( (last = contextItems[contextItems.length - 1 ] ) && last !== '-' ) { + contextItems.push( '-' ); + } + } else if ( item.hasOwnProperty( "group" ) ) { + for ( var j = 0, cj, subMenu = []; cj = item.subMenu[j]; j++ ) { + (function ( subItem ) { + if ( subItem == '-' ) { + if ( (last = subMenu[subMenu.length - 1 ] ) && last !== '-' ) { + subMenu.push( '-' ); + }else{ + subMenu.splice(subMenu.length-1); + } + } else { + if ( (me.commands[subItem.cmdName] || UE.commands[subItem.cmdName] || subItem.query) && + (subItem.query ? subItem.query() : me.queryCommandState( subItem.cmdName )) > -1 ) { + subMenu.push( { + 'label':subItem.label || me.getLang( "contextMenu." + subItem.cmdName + (subItem.value || '') )||"", + 'className':'edui-for-' +subItem.cmdName + ( subItem.className ? ( ' edui-for-' + subItem.cmdName + '-' + subItem.className ) : '' ), + onclick:subItem.exec ? function () { + subItem.exec.call( me ); + } : function () { + me.execCommand( subItem.cmdName, subItem.value ); + } + } ); + } + } + })( cj ); + } + if ( subMenu.length ) { + function getLabel(){ + switch (item.icon){ + case "table": + return me.getLang( "contextMenu.table" ); + case "justifyjustify": + return me.getLang( "contextMenu.paragraph" ); + case "aligntd": + return me.getLang("contextMenu.aligntd"); + case "aligntable": + return me.getLang("contextMenu.aligntable"); + case "tablesort": + return lang.tablesort; + case "borderBack": + return lang.borderbk; + default : + return ''; + } + } + contextItems.push( { + //todo 修正成自动获取方式 + 'label':getLabel(), + className:'edui-for-' + item.icon, + 'subMenu':{ + items:subMenu, + editor:me + } + } ); + } + + } else { + //有可能commmand没有加载右键不能出来,或者没有command也想能展示出来添加query方法 + if ( (me.commands[item.cmdName] || UE.commands[item.cmdName] || item.query) && + (item.query ? item.query.call(me) : me.queryCommandState( item.cmdName )) > -1 ) { + + contextItems.push( { + 'label':item.label || me.getLang( "contextMenu." + item.cmdName ), + className:'edui-for-' + (item.icon ? item.icon : item.cmdName + (item.value || '')), + onclick:item.exec ? function () { + item.exec.call( me ); + } : function () { + me.execCommand( item.cmdName, item.value ); + } + } ); + } + + } + + })( ti ); + } + if ( contextItems[contextItems.length - 1] == '-' ) { + contextItems.pop(); + } + + menu = new UE.ui.Menu( { + items:contextItems, + className:"edui-contextmenu", + editor:me + } ); + menu.render(); + menu.showAt( offset ); + + me.fireEvent("aftershowcontextmenu",menu); + + domUtils.preventDefault( evt ); + if ( browser.ie ) { + var ieRange; + try { + ieRange = me.selection.getNative().createRange(); + } catch ( e ) { + return; + } + if ( ieRange.item ) { + var range = new dom.Range( me.document ); + range.selectNode( ieRange.item( 0 ) ).select( true, true ); + } + } + }); + + // 添加复制的flash按钮 + me.addListener('aftershowcontextmenu', function(type, menu) { + if (me.zeroclipboard) { + var items = menu.items; + for (var key in items) { + if (items[key].className == 'edui-for-copy') { + me.zeroclipboard.clip(items[key].getDom()); + } + } + } + }); + +}; + + +// plugins/shortcutmenu.js +///import core +///commands 弹出菜单 +// commandsName popupmenu +///commandsTitle 弹出菜单 +/** + * 弹出菜单 + * @function + * @name baidu.editor.plugins.popupmenu + * @author xuheng + */ + +UE.plugins['shortcutmenu'] = function () { + var me = this, + menu, + items = me.options.shortcutMenu || []; + + if (!items.length) { + return; + } + + me.addListener ('contextmenu mouseup' , function (type , e) { + var me = this, + customEvt = { + type : type , + target : e.target || e.srcElement , + screenX : e.screenX , + screenY : e.screenY , + clientX : e.clientX , + clientY : e.clientY + }; + + setTimeout (function () { + var rng = me.selection.getRange (); + if (rng.collapsed === false || type == "contextmenu") { + + if (!menu) { + menu = new baidu.editor.ui.ShortCutMenu ({ + editor : me , + items : items , + theme : me.options.theme , + className : 'edui-shortcutmenu' + }); + + menu.render (); + me.fireEvent ("afterrendershortcutmenu" , menu); + } + + menu.show (customEvt , !!UE.plugins['contextmenu']); + } + }); + + if (type == 'contextmenu') { + domUtils.preventDefault (e); + if (browser.ie9below) { + var ieRange; + try { + ieRange = me.selection.getNative().createRange(); + } catch (e) { + return; + } + if (ieRange.item) { + var range = new dom.Range (me.document); + range.selectNode (ieRange.item (0)).select (true , true); + + } + } + } + }); + + me.addListener ('keydown' , function (type) { + if (type == "keydown") { + menu && !menu.isHidden && menu.hide (); + } + + }); + +}; + + + + +// plugins/basestyle.js +/** + * B、I、sub、super命令支持 + * @file + * @since 1.2.6.1 + */ + +UE.plugins['basestyle'] = function(){ + + /** + * 字体加粗 + * @command bold + * @param { String } cmd 命令字符串 + * @remind 对已加粗的文本内容执行该命令, 将取消加粗 + * @method execCommand + * @example + * ```javascript + * //editor是编辑器实例 + * //对当前选中的文本内容执行加粗操作 + * //第一次执行, 文本内容加粗 + * editor.execCommand( 'bold' ); + * + * //第二次执行, 文本内容取消加粗 + * editor.execCommand( 'bold' ); + * ``` + */ + + + /** + * 字体倾斜 + * @command italic + * @method execCommand + * @param { String } cmd 命令字符串 + * @remind 对已倾斜的文本内容执行该命令, 将取消倾斜 + * @example + * ```javascript + * //editor是编辑器实例 + * //对当前选中的文本内容执行斜体操作 + * //第一次操作, 文本内容将变成斜体 + * editor.execCommand( 'italic' ); + * + * //再次对同一文本内容执行, 则文本内容将恢复正常 + * editor.execCommand( 'italic' ); + * ``` + */ + + /** + * 下标文本,与“superscript”命令互斥 + * @command subscript + * @method execCommand + * @remind 把选中的文本内容切换成下标文本, 如果当前选中的文本已经是下标, 则该操作会把文本内容还原成正常文本 + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor是编辑器实例 + * //对当前选中的文本内容执行下标操作 + * //第一次操作, 文本内容将变成下标文本 + * editor.execCommand( 'subscript' ); + * + * //再次对同一文本内容执行, 则文本内容将恢复正常 + * editor.execCommand( 'subscript' ); + * ``` + */ + + /** + * 上标文本,与“subscript”命令互斥 + * @command superscript + * @method execCommand + * @remind 把选中的文本内容切换成上标文本, 如果当前选中的文本已经是上标, 则该操作会把文本内容还原成正常文本 + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor是编辑器实例 + * //对当前选中的文本内容执行上标操作 + * //第一次操作, 文本内容将变成上标文本 + * editor.execCommand( 'superscript' ); + * + * //再次对同一文本内容执行, 则文本内容将恢复正常 + * editor.execCommand( 'superscript' ); + * ``` + */ + var basestyles = { + 'bold':['strong','b'], + 'italic':['em','i'], + 'subscript':['sub'], + 'superscript':['sup'] + }, + getObj = function(editor,tagNames){ + return domUtils.filterNodeList(editor.selection.getStartElementPath(),tagNames); + }, + me = this; + //添加快捷键 + me.addshortcutkey({ + "Bold" : "ctrl+66",//^B + "Italic" : "ctrl+73", //^I + "Underline" : "ctrl+85"//^U + }); + me.addInputRule(function(root){ + utils.each(root.getNodesByTagName('b i'),function(node){ + switch (node.tagName){ + case 'b': + node.tagName = 'strong'; + break; + case 'i': + node.tagName = 'em'; + } + }); + }); + for ( var style in basestyles ) { + (function( cmd, tagNames ) { + me.commands[cmd] = { + execCommand : function( cmdName ) { + var range = me.selection.getRange(),obj = getObj(this,tagNames); + if ( range.collapsed ) { + if ( obj ) { + var tmpText = me.document.createTextNode(''); + range.insertNode( tmpText ).removeInlineStyle( tagNames ); + range.setStartBefore(tmpText); + domUtils.remove(tmpText); + } else { + var tmpNode = range.document.createElement( tagNames[0] ); + if(cmdName == 'superscript' || cmdName == 'subscript'){ + tmpText = me.document.createTextNode(''); + range.insertNode(tmpText) + .removeInlineStyle(['sub','sup']) + .setStartBefore(tmpText) + .collapse(true); + } + range.insertNode( tmpNode ).setStart( tmpNode, 0 ); + } + range.collapse( true ); + } else { + if(cmdName == 'superscript' || cmdName == 'subscript'){ + if(!obj || obj.tagName.toLowerCase() != cmdName){ + range.removeInlineStyle(['sub','sup']); + } + } + obj ? range.removeInlineStyle( tagNames ) : range.applyInlineStyle( tagNames[0] ); + } + range.select(); + }, + queryCommandState : function() { + return getObj(this,tagNames) ? 1 : 0; + } + }; + })( style, basestyles[style] ); + } +}; + + + +// plugins/elementpath.js +/** + * 选取路径命令 + * @file + */ +UE.plugins['elementpath'] = function(){ + var currentLevel, + tagNames, + me = this; + me.setOpt('elementPathEnabled',true); + if(!me.options.elementPathEnabled){ + return; + } + me.commands['elementpath'] = { + execCommand : function( cmdName, level ) { + var start = tagNames[level], + range = me.selection.getRange(); + currentLevel = level*1; + range.selectNode(start).select(); + }, + queryCommandValue : function() { + //产生一个副本,不能修改原来的startElementPath; + var parents = [].concat(this.selection.getStartElementPath()).reverse(), + names = []; + tagNames = parents; + for(var i=0,ci;ci=parents[i];i++){ + if(ci.nodeType == 3) { + continue; + } + var name = ci.tagName.toLowerCase(); + if(name == 'img' && ci.getAttribute('anchorname')){ + name = 'anchor'; + } + names[i] = name; + if(currentLevel == i){ + currentLevel = -1; + break; + } + } + return names; + } + }; +}; + + + +// plugins/formatmatch.js +/** + * 格式刷,只格式inline的 + * @file + * @since 1.2.6.1 + */ + +/** + * 格式刷 + * @command formatmatch + * @method execCommand + * @remind 该操作不能复制段落格式 + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor是编辑器实例 + * //获取格式刷 + * editor.execCommand( 'formatmatch' ); + * ``` + */ +UE.plugins['formatmatch'] = function(){ + + var me = this, + list = [],img, + flag = 0; + + me.addListener('reset',function(){ + list = []; + flag = 0; + }); + + function addList(type,evt){ + + if(browser.webkit){ + var target = evt.target.tagName == 'IMG' ? evt.target : null; + } + + function addFormat(range){ + + if(text){ + range.selectNode(text); + } + return range.applyInlineStyle(list[list.length-1].tagName,null,list); + + } + + me.undoManger && me.undoManger.save(); + + var range = me.selection.getRange(), + imgT = target || range.getClosedNode(); + if(img && imgT && imgT.tagName == 'IMG'){ + //trace:964 + + imgT.style.cssText += ';float:' + (img.style.cssFloat || img.style.styleFloat ||'none') + ';display:' + (img.style.display||'inline'); + + img = null; + }else{ + if(!img){ + var collapsed = range.collapsed; + if(collapsed){ + var text = me.document.createTextNode('match'); + range.insertNode(text).select(); + + + } + me.__hasEnterExecCommand = true; + //不能把block上的属性干掉 + //trace:1553 + var removeFormatAttributes = me.options.removeFormatAttributes; + me.options.removeFormatAttributes = ''; + me.execCommand('removeformat'); + me.options.removeFormatAttributes = removeFormatAttributes; + me.__hasEnterExecCommand = false; + //trace:969 + range = me.selection.getRange(); + if(list.length){ + addFormat(range); + } + if(text){ + range.setStartBefore(text).collapse(true); + + } + range.select(); + text && domUtils.remove(text); + } + + } + + + + + me.undoManger && me.undoManger.save(); + me.removeListener('mouseup',addList); + flag = 0; + } + + me.commands['formatmatch'] = { + execCommand : function( cmdName ) { + + if(flag){ + flag = 0; + list = []; + me.removeListener('mouseup',addList); + return; + } + + + + var range = me.selection.getRange(); + img = range.getClosedNode(); + if(!img || img.tagName != 'IMG'){ + range.collapse(true).shrinkBoundary(); + var start = range.startContainer; + list = domUtils.findParents(start,true,function(node){ + return !domUtils.isBlockElm(node) && node.nodeType == 1; + }); + //a不能加入格式刷, 并且克隆节点 + for(var i=0,ci;ci=list[i];i++){ + if(ci.tagName == 'A'){ + list.splice(i,1); + break; + } + } + + } + + me.addListener('mouseup',addList); + flag = 1; + + + }, + queryCommandState : function() { + return flag; + }, + notNeedUndo : 1 + }; +}; + + + +// plugins/searchreplace.js +///import core +///commands 查找替换 +///commandsName SearchReplace +///commandsTitle 查询替换 +///commandsDialog dialogs\searchreplace +/** + * @description 查找替换 + * @author zhanyi + */ + +UE.plugin.register('searchreplace',function(){ + var me = this; + + var _blockElm = {'table':1,'tbody':1,'tr':1,'ol':1,'ul':1}; + + function findTextInString(textContent,opt,currentIndex){ + var str = opt.searchStr; + if(opt.dir == -1){ + textContent = textContent.split('').reverse().join(''); + str = str.split('').reverse().join(''); + currentIndex = textContent.length - currentIndex; + + } + var reg = new RegExp(str,'g' + (opt.casesensitive ? '' : 'i')),match; + + while(match = reg.exec(textContent)){ + if(match.index >= currentIndex){ + return opt.dir == -1 ? textContent.length - match.index - opt.searchStr.length : match.index; + } + } + return -1 + } + function findTextBlockElm(node,currentIndex,opt){ + var textContent,index,methodName = opt.all || opt.dir == 1 ? 'getNextDomNode' : 'getPreDomNode'; + if(domUtils.isBody(node)){ + node = node.firstChild; + } + var first = 1; + while(node){ + textContent = node.nodeType == 3 ? node.nodeValue : node[browser.ie ? 'innerText' : 'textContent']; + index = findTextInString(textContent,opt,currentIndex ); + first = 0; + if(index!=-1){ + return { + 'node':node, + 'index':index + } + } + node = domUtils[methodName](node); + while(node && _blockElm[node.nodeName.toLowerCase()]){ + node = domUtils[methodName](node,true); + } + if(node){ + currentIndex = opt.dir == -1 ? (node.nodeType == 3 ? node.nodeValue : node[browser.ie ? 'innerText' : 'textContent']).length : 0; + } + + } + } + function findNTextInBlockElm(node,index,str){ + var currentIndex = 0, + currentNode = node.firstChild, + currentNodeLength = 0, + result; + while(currentNode){ + if(currentNode.nodeType == 3){ + currentNodeLength = currentNode.nodeValue.replace(/(^[\t\r\n]+)|([\t\r\n]+$)/,'').length; + currentIndex += currentNodeLength; + if(currentIndex >= index){ + return { + 'node':currentNode, + 'index': currentNodeLength - (currentIndex - index) + } + } + }else if(!dtd.$empty[currentNode.tagName]){ + currentNodeLength = currentNode[browser.ie ? 'innerText' : 'textContent'].replace(/(^[\t\r\n]+)|([\t\r\n]+$)/,'').length + currentIndex += currentNodeLength; + if(currentIndex >= index){ + result = findNTextInBlockElm(currentNode,currentNodeLength - (currentIndex - index),str); + if(result){ + return result; + } + } + } + currentNode = domUtils.getNextDomNode(currentNode); + + } + } + + function searchReplace(me,opt){ + + var rng = me.selection.getRange(), + startBlockNode, + searchStr = opt.searchStr, + span = me.document.createElement('span'); + span.innerHTML = '$$ueditor_searchreplace_key$$'; + + rng.shrinkBoundary(true); + + //判断是不是第一次选中 + if(!rng.collapsed){ + rng.select(); + var rngText = me.selection.getText(); + if(new RegExp('^' + opt.searchStr + '$',(opt.casesensitive ? '' : 'i')).test(rngText)){ + if(opt.replaceStr != undefined){ + replaceText(rng,opt.replaceStr); + rng.select(); + return true; + }else{ + rng.collapse(opt.dir == -1) + } + + } + } + + + rng.insertNode(span); + rng.enlargeToBlockElm(true); + startBlockNode = rng.startContainer; + var currentIndex = startBlockNode[browser.ie ? 'innerText' : 'textContent'].indexOf('$$ueditor_searchreplace_key$$'); + rng.setStartBefore(span); + domUtils.remove(span); + var result = findTextBlockElm(startBlockNode,currentIndex,opt); + if(result){ + var rngStart = findNTextInBlockElm(result.node,result.index,searchStr); + var rngEnd = findNTextInBlockElm(result.node,result.index + searchStr.length,searchStr); + rng.setStart(rngStart.node,rngStart.index).setEnd(rngEnd.node,rngEnd.index); + + if(opt.replaceStr !== undefined){ + replaceText(rng,opt.replaceStr) + } + rng.select(); + return true; + }else{ + rng.setCursor() + } + + } + function replaceText(rng,str){ + + str = me.document.createTextNode(str); + rng.deleteContents().insertNode(str); + + } + return { + commands:{ + 'searchreplace':{ + execCommand:function(cmdName,opt){ + utils.extend(opt,{ + all : false, + casesensitive : false, + dir : 1 + },true); + var num = 0; + if(opt.all){ + + var rng = me.selection.getRange(), + first = me.body.firstChild; + if(first && first.nodeType == 1){ + rng.setStart(first,0); + rng.shrinkBoundary(true); + }else if(first.nodeType == 3){ + rng.setStartBefore(first) + } + rng.collapse(true).select(true); + if(opt.replaceStr !== undefined){ + me.fireEvent('saveScene'); + } + while(searchReplace(this,opt)){ + num++; + } + if(num){ + me.fireEvent('saveScene'); + } + }else{ + if(opt.replaceStr !== undefined){ + me.fireEvent('saveScene'); + } + if(searchReplace(this,opt)){ + num++ + } + if(num){ + me.fireEvent('saveScene'); + } + + } + + return num; + }, + notNeedUndo:1 + } + } + } +}); + +// plugins/customstyle.js +/** + * 自定义样式 + * @file + * @since 1.2.6.1 + */ + +/** + * 根据config配置文件里“customstyle”选项的值对匹配的标签执行样式替换。 + * @command customstyle + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'customstyle' ); + * ``` + */ +UE.plugins['customstyle'] = function() { + var me = this; + me.setOpt({ 'customstyle':[ + {tag:'h1',name:'tc', style:'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;'}, + {tag:'h1',name:'tl', style:'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;'}, + {tag:'span',name:'im', style:'font-size:16px;font-style:italic;font-weight:bold;line-height:18px;'}, + {tag:'span',name:'hi', style:'font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;'} + ]}); + me.commands['customstyle'] = { + execCommand : function(cmdName, obj) { + var me = this, + tagName = obj.tag, + node = domUtils.findParent(me.selection.getStart(), function(node) { + return node.getAttribute('label'); + }, true), + range,bk,tmpObj = {}; + for (var p in obj) { + if(obj[p]!==undefined) + tmpObj[p] = obj[p]; + } + delete tmpObj.tag; + if (node && node.getAttribute('label') == obj.label) { + range = this.selection.getRange(); + bk = range.createBookmark(); + if (range.collapsed) { + //trace:1732 删掉自定义标签,要有p来回填站位 + if(dtd.$block[node.tagName]){ + var fillNode = me.document.createElement('p'); + domUtils.moveChild(node, fillNode); + node.parentNode.insertBefore(fillNode, node); + domUtils.remove(node); + }else{ + domUtils.remove(node,true); + } + + } else { + + var common = domUtils.getCommonAncestor(bk.start, bk.end), + nodes = domUtils.getElementsByTagName(common, tagName); + if(new RegExp(tagName,'i').test(common.tagName)){ + nodes.push(common); + } + for (var i = 0,ni; ni = nodes[i++];) { + if (ni.getAttribute('label') == obj.label) { + var ps = domUtils.getPosition(ni, bk.start),pe = domUtils.getPosition(ni, bk.end); + if ((ps & domUtils.POSITION_FOLLOWING || ps & domUtils.POSITION_CONTAINS) + && + (pe & domUtils.POSITION_PRECEDING || pe & domUtils.POSITION_CONTAINS) + ) + if (dtd.$block[tagName]) { + var fillNode = me.document.createElement('p'); + domUtils.moveChild(ni, fillNode); + ni.parentNode.insertBefore(fillNode, ni); + } + domUtils.remove(ni, true); + } + } + node = domUtils.findParent(common, function(node) { + return node.getAttribute('label') == obj.label; + }, true); + if (node) { + + domUtils.remove(node, true); + + } + + } + range.moveToBookmark(bk).select(); + } else { + if (dtd.$block[tagName]) { + this.execCommand('paragraph', tagName, tmpObj,'customstyle'); + range = me.selection.getRange(); + if (!range.collapsed) { + range.collapse(); + node = domUtils.findParent(me.selection.getStart(), function(node) { + return node.getAttribute('label') == obj.label; + }, true); + var pNode = me.document.createElement('p'); + domUtils.insertAfter(node, pNode); + domUtils.fillNode(me.document, pNode); + range.setStart(pNode, 0).setCursor(); + } + } else { + + range = me.selection.getRange(); + if (range.collapsed) { + node = me.document.createElement(tagName); + domUtils.setAttributes(node, tmpObj); + range.insertNode(node).setStart(node, 0).setCursor(); + + return; + } + + bk = range.createBookmark(); + range.applyInlineStyle(tagName, tmpObj).moveToBookmark(bk).select(); + } + } + + }, + queryCommandValue : function() { + var parent = domUtils.filterNodeList( + this.selection.getStartElementPath(), + function(node){return node.getAttribute('label')} + ); + return parent ? parent.getAttribute('label') : ''; + } + }; + //当去掉customstyle是,如果是块元素,用p代替 + me.addListener('keyup', function(type, evt) { + var keyCode = evt.keyCode || evt.which; + + if (keyCode == 32 || keyCode == 13) { + var range = me.selection.getRange(); + if (range.collapsed) { + var node = domUtils.findParent(me.selection.getStart(), function(node) { + return node.getAttribute('label'); + }, true); + if (node && dtd.$block[node.tagName] && domUtils.isEmptyNode(node)) { + var p = me.document.createElement('p'); + domUtils.insertAfter(node, p); + domUtils.fillNode(me.document, p); + domUtils.remove(node); + range.setStart(p, 0).setCursor(); + + + } + } + } + }); +}; + +// plugins/catchremoteimage.js +///import core +///commands 远程图片抓取 +///commandsName catchRemoteImage,catchremoteimageenable +///commandsTitle 远程图片抓取 +/** + * 远程图片抓取,当开启本插件时所有不符合本地域名的图片都将被抓取成为本地服务器上的图片 + */ +UE.plugins['catchremoteimage'] = function () { + var me = this, + ajax = UE.ajax; + + /* 设置默认值 */ + if (me.options.catchRemoteImageEnable === false) return; + me.setOpt({ + catchRemoteImageEnable: false + }); + + me.addListener("afterpaste", function () { + me.fireEvent("catchRemoteImage"); + }); + + me.addListener("catchRemoteImage", function () { + + var catcherLocalDomain = me.getOpt('catcherLocalDomain'), + catcherActionUrl = me.getActionUrl(me.getOpt('catcherActionName')), + catcherUrlPrefix = me.getOpt('catcherUrlPrefix'), + catcherFieldName = me.getOpt('catcherFieldName'); + + var remoteImages = [], + imgs = domUtils.getElementsByTagName(me.document, "img"), + test = function (src, urls) { + if (src.indexOf(location.host) != -1 || /(^\.)|(^\/)/.test(src)) { + return true; + } + if (urls) { + for (var j = 0, url; url = urls[j++];) { + if (src.indexOf(url) !== -1) { + return true; + } + } + } + return false; + }; + + for (var i = 0, ci; ci = imgs[i++];) { + if (ci.getAttribute("word_img")) { + continue; + } + var src = ci.getAttribute("_src") || ci.src || ""; + if (/^(https?|ftp):/i.test(src) && !test(src, catcherLocalDomain)) { + remoteImages.push(src); + } + } + + if (remoteImages.length) { + catchremoteimage(remoteImages, { + //成功抓取 + success: function (r) { + try { + var info = r.state !== undefined ? r:eval("(" + r.responseText + ")"); + } catch (e) { + return; + } + + /* 获取源路径和新路径 */ + var i, j, ci, cj, oldSrc, newSrc, list = info.list; + + for (i = 0; ci = imgs[i++];) { + oldSrc = ci.getAttribute("_src") || ci.src || ""; + for (j = 0; cj = list[j++];) { + if (oldSrc == cj.source && cj.state == "SUCCESS") { //抓取失败时不做替换处理 + newSrc = catcherUrlPrefix + cj.url; + domUtils.setAttributes(ci, { + "src": newSrc, + "_src": newSrc + }); + break; + } + } + } + me.fireEvent('catchremotesuccess') + }, + //回调失败,本次请求超时 + error: function () { + me.fireEvent("catchremoteerror"); + } + }); + } + + function catchremoteimage(imgs, callbacks) { + var params = utils.serializeParam(me.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(catcherActionUrl + (catcherActionUrl.indexOf('?') == -1 ? '?':'&') + params), + isJsonp = utils.isCrossDomainUrl(url), + opt = { + 'method': 'POST', + 'dataType': isJsonp ? 'jsonp':'', + 'timeout': 60000, //单位:毫秒,回调请求超时设置。目标用户如果网速不是很快的话此处建议设置一个较大的数值 + 'onsuccess': callbacks["success"], + 'onerror': callbacks["error"] + }; + opt[catcherFieldName] = imgs; + ajax.request(url, opt); + } + + }); +}; + +// plugins/snapscreen.js +/** + * 截屏插件,为UEditor提供插入支持 + * @file + * @since 1.4.2 + */ +UE.plugin.register('snapscreen', function (){ + + var me = this; + var snapplugin; + + function getLocation(url){ + var search, + a = document.createElement('a'), + params = utils.serializeParam(me.queryCommandValue('serverparam')) || ''; + + a.href = url; + if (browser.ie) { + a.href = a.href; + } + + + search = a.search; + if (params) { + search = search + (search.indexOf('?') == -1 ? '?':'&')+ params; + search = search.replace(/[&]+/ig, '&'); + } + return { + 'port': a.port, + 'hostname': a.hostname, + 'path': a.pathname + search || + a.hash + } + } + + return { + commands:{ + /** + * 字体背景颜色 + * @command snapscreen + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand('snapscreen'); + * ``` + */ + 'snapscreen':{ + execCommand:function (cmd) { + var url, local, res; + var lang = me.getLang("snapScreen_plugin"); + + if(!snapplugin){ + var container = me.container; + var doc = me.container.ownerDocument || me.container.document; + snapplugin = doc.createElement("object"); + try{snapplugin.type = "application/x-pluginbaidusnap";}catch(e){ + return; + } + snapplugin.style.cssText = "position:absolute;left:-9999px;width:0;height:0;"; + snapplugin.setAttribute("width","0"); + snapplugin.setAttribute("height","0"); + container.appendChild(snapplugin); + } + + function onSuccess(rs){ + try{ + rs = eval("("+ rs +")"); + if(rs.state == 'SUCCESS'){ + var opt = me.options; + me.execCommand('insertimage', { + src: opt.snapscreenUrlPrefix + rs.url, + _src: opt.snapscreenUrlPrefix + rs.url, + alt: rs.title || '', + floatStyle: opt.snapscreenImgAlign + }); + } else { + alert(rs.state); + } + }catch(e){ + alert(lang.callBackErrorMsg); + } + } + url = me.getActionUrl(me.getOpt('snapscreenActionName')); + local = getLocation(url); + setTimeout(function () { + try{ + res =snapplugin.saveSnapshot(local.hostname, local.path, local.port); + }catch(e){ + me.ui._dialogs['snapscreenDialog'].open(); + return; + } + + onSuccess(res); + }, 50); + }, + queryCommandState: function(){ + return (navigator.userAgent.indexOf("Windows",0) != -1) ? 0:-1; + } + } + } + } +}); + + +// plugins/insertparagraph.js +/** + * 插入段落 + * @file + * @since 1.2.6.1 + */ + + +/** + * 插入段落 + * @command insertparagraph + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor是编辑器实例 + * editor.execCommand( 'insertparagraph' ); + * ``` + */ + +UE.commands['insertparagraph'] = { + execCommand : function( cmdName,front) { + var me = this, + range = me.selection.getRange(), + start = range.startContainer,tmpNode; + while(start ){ + if(domUtils.isBody(start)){ + break; + } + tmpNode = start; + start = start.parentNode; + } + if(tmpNode){ + var p = me.document.createElement('p'); + if(front){ + tmpNode.parentNode.insertBefore(p,tmpNode) + }else{ + tmpNode.parentNode.insertBefore(p,tmpNode.nextSibling) + } + domUtils.fillNode(me.document,p); + range.setStart(p,0).setCursor(false,true); + } + } +}; + + + +// plugins/webapp.js +/** + * 百度应用 + * @file + * @since 1.2.6.1 + */ + + +/** + * 插入百度应用 + * @command webapp + * @method execCommand + * @remind 需要百度APPKey + * @remind 百度应用主页: http://app.baidu.com/ + * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度, + * height=>应用容器高度,logo=>应用logo,url=>应用地址 + * @example + * ```javascript + * //editor是编辑器实例 + * //在编辑器里插入一个“植物大战僵尸”的APP + * editor.execCommand( 'webapp' , { + * title: '植物大战僵尸', + * width: 560, + * height: 465, + * logo: '应用展示的图片', + * url: '百度应用的地址' + * } ); + * ``` + */ + +//UE.plugins['webapp'] = function () { +// var me = this; +// function createInsertStr( obj, toIframe, addParagraph ) { +// return !toIframe ? +// (addParagraph ? '

    ' : '') + '' + +// (addParagraph ? '

    ' : '') +// : +// ''; +// } +// +// function switchImgAndIframe( img2frame ) { +// var tmpdiv, +// nodes = domUtils.getElementsByTagName( me.document, !img2frame ? "iframe" : "img" ); +// for ( var i = 0, node; node = nodes[i++]; ) { +// if ( node.className != "edui-faked-webapp" ){ +// continue; +// } +// tmpdiv = me.document.createElement( "div" ); +// tmpdiv.innerHTML = createInsertStr( img2frame ? {url:node.getAttribute( "_url" ), width:node.width, height:node.height,title:node.title,logo:node.style.backgroundImage.replace("url(","").replace(")","")} : {url:node.getAttribute( "src", 2 ),title:node.title, width:node.width, height:node.height,logo:node.getAttribute("logo_url")}, img2frame ? true : false,false ); +// node.parentNode.replaceChild( tmpdiv.firstChild, node ); +// } +// } +// +// me.addListener( "beforegetcontent", function () { +// switchImgAndIframe( true ); +// } ); +// me.addListener( 'aftersetcontent', function () { +// switchImgAndIframe( false ); +// } ); +// me.addListener( 'aftergetcontent', function ( cmdName ) { +// if ( cmdName == 'aftergetcontent' && me.queryCommandState( 'source' ) ){ +// return; +// } +// switchImgAndIframe( false ); +// } ); +// +// me.commands['webapp'] = { +// execCommand:function ( cmd, obj ) { +// me.execCommand( "inserthtml", createInsertStr( obj, false,true ) ); +// } +// }; +//}; + +UE.plugin.register('webapp', function (){ + var me = this; + function createInsertStr(obj,toEmbed){ + return !toEmbed ? + '' + : + '' + + } + return { + outputRule: function(root){ + utils.each(root.getNodesByTagName('img'),function(node){ + var html; + if(node.getAttr('class') == 'edui-faked-webapp'){ + html = createInsertStr({ + title:node.getAttr('title'), + 'width':node.getAttr('width'), + 'height':node.getAttr('height'), + 'align':node.getAttr('align'), + 'cssfloat':node.getStyle('float'), + 'url':node.getAttr("_url"), + 'logo':node.getAttr('_logo_url') + },true); + var embed = UE.uNode.createElement(html); + node.parentNode.replaceChild(embed,node); + } + }) + }, + inputRule:function(root){ + utils.each(root.getNodesByTagName('iframe'),function(node){ + if(node.getAttr('class') == 'edui-faked-webapp'){ + var img = UE.uNode.createElement(createInsertStr({ + title:node.getAttr('title'), + 'width':node.getAttr('width'), + 'height':node.getAttr('height'), + 'align':node.getAttr('align'), + 'cssfloat':node.getStyle('float'), + 'url':node.getAttr("src"), + 'logo':node.getAttr('logo_url') + })); + node.parentNode.replaceChild(img,node); + } + }) + + }, + commands:{ + /** + * 插入百度应用 + * @command webapp + * @method execCommand + * @remind 需要百度APPKey + * @remind 百度应用主页: http://app.baidu.com/ + * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度, + * height=>应用容器高度,logo=>应用logo,url=>应用地址 + * @example + * ```javascript + * //editor是编辑器实例 + * //在编辑器里插入一个“植物大战僵尸”的APP + * editor.execCommand( 'webapp' , { + * title: '植物大战僵尸', + * width: 560, + * height: 465, + * logo: '应用展示的图片', + * url: '百度应用的地址' + * } ); + * ``` + */ + 'webapp':{ + execCommand:function (cmd, obj) { + + var me = this, + str = createInsertStr(utils.extend(obj,{ + align:'none' + }), false); + me.execCommand("inserthtml",str); + }, + queryCommandState:function () { + var me = this, + img = me.selection.getRange().getClosedNode(), + flag = img && (img.className == "edui-faked-webapp"); + return flag ? 1 : 0; + } + } + } + } +}); + +// plugins/template.js +///import core +///import plugins\inserthtml.js +///import plugins\cleardoc.js +///commands 模板 +///commandsName template +///commandsTitle 模板 +///commandsDialog dialogs\template +UE.plugins['template'] = function () { + UE.commands['template'] = { + execCommand:function (cmd, obj) { + obj.html && this.execCommand("inserthtml", obj.html); + } + }; + this.addListener("click", function (type, evt) { + var el = evt.target || evt.srcElement, + range = this.selection.getRange(); + var tnode = domUtils.findParent(el, function (node) { + if (node.className && domUtils.hasClass(node, "ue_t")) { + return node; + } + }, true); + tnode && range.selectNode(tnode).shrinkBoundary().select(); + }); + this.addListener("keydown", function (type, evt) { + var range = this.selection.getRange(); + if (!range.collapsed) { + if (!evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) { + var tnode = domUtils.findParent(range.startContainer, function (node) { + if (node.className && domUtils.hasClass(node, "ue_t")) { + return node; + } + }, true); + if (tnode) { + domUtils.removeClasses(tnode, ["ue_t"]); + } + } + } + }); +}; + + +// plugins/music.js +/** + * 插入音乐命令 + * @file + */ +UE.plugin.register('music', function (){ + var me = this; + function creatInsertStr(url,width,height,align,cssfloat,toEmbed){ + return !toEmbed ? + '' + : + ''; + } + return { + outputRule: function(root){ + utils.each(root.getNodesByTagName('img'),function(node){ + var html; + if(node.getAttr('class') == 'edui-faked-music'){ + var cssfloat = node.getStyle('float'); + var align = node.getAttr('align'); + html = creatInsertStr(node.getAttr("_url"), node.getAttr('width'), node.getAttr('height'), align, cssfloat, true); + var embed = UE.uNode.createElement(html); + node.parentNode.replaceChild(embed,node); + } + }) + }, + inputRule:function(root){ + utils.each(root.getNodesByTagName('embed'),function(node){ + if(node.getAttr('class') == 'edui-faked-music'){ + var cssfloat = node.getStyle('float'); + var align = node.getAttr('align'); + html = creatInsertStr(node.getAttr("src"), node.getAttr('width'), node.getAttr('height'), align, cssfloat,false); + var img = UE.uNode.createElement(html); + node.parentNode.replaceChild(img,node); + } + }) + + }, + commands:{ + /** + * 插入音乐 + * @command music + * @method execCommand + * @param { Object } musicOptions 插入音乐的参数项, 支持的key有: url=>音乐地址; + * width=>音乐容器宽度;height=>音乐容器高度;align=>音乐文件的对齐方式, 可选值有: left, center, right, none + * @example + * ```javascript + * //editor是编辑器实例 + * //在编辑器里插入一个“植物大战僵尸”的APP + * editor.execCommand( 'music' , { + * width: 400, + * height: 95, + * align: "center", + * url: "音乐地址" + * } ); + * ``` + */ + 'music':{ + execCommand:function (cmd, musicObj) { + var me = this, + str = creatInsertStr(musicObj.url, musicObj.width || 400, musicObj.height || 95, "none", false); + me.execCommand("inserthtml",str); + }, + queryCommandState:function () { + var me = this, + img = me.selection.getRange().getClosedNode(), + flag = img && (img.className == "edui-faked-music"); + return flag ? 1 : 0; + } + } + } + } +}); + +// plugins/autoupload.js +/** + * @description + * 1.拖放文件到编辑区域,自动上传并插入到选区 + * 2.插入粘贴板的图片,自动上传并插入到选区 + * @author Jinqn + * @date 2013-10-14 + */ +UE.plugin.register('autoupload', function (){ + + function sendAndInsertFile(file, editor) { + var me = editor; + //模拟数据 + var fieldName, urlPrefix, maxSize, allowFiles, actionUrl, + loadingHtml, errorHandler, successHandler, + filetype = /image\/\w+/i.test(file.type) ? 'image':'file', + loadingId = 'loading_' + (+new Date()).toString(36); + + fieldName = me.getOpt(filetype + 'FieldName'); + urlPrefix = me.getOpt(filetype + 'UrlPrefix'); + maxSize = me.getOpt(filetype + 'MaxSize'); + allowFiles = me.getOpt(filetype + 'AllowFiles'); + actionUrl = me.getActionUrl(me.getOpt(filetype + 'ActionName')); + errorHandler = function(title) { + var loader = me.document.getElementById(loadingId); + loader && domUtils.remove(loader); + me.fireEvent('showmessage', { + 'id': loadingId, + 'content': title, + 'type': 'error', + 'timeout': 4000 + }); + }; + + if (filetype == 'image') { + loadingHtml = ''; + successHandler = function(data) { + var link = urlPrefix + data.url, + loader = me.document.getElementById(loadingId); + if (loader) { + loader.setAttribute('src', link); + loader.setAttribute('_src', link); + loader.setAttribute('title', data.title || ''); + loader.setAttribute('alt', data.original || ''); + loader.removeAttribute('id'); + domUtils.removeClasses(loader, 'loadingclass'); + } + }; + } else { + loadingHtml = '

    ' + + '' + + '

    '; + successHandler = function(data) { + var link = urlPrefix + data.url, + loader = me.document.getElementById(loadingId); + + var rng = me.selection.getRange(), + bk = rng.createBookmark(); + rng.selectNode(loader).select(); + me.execCommand('insertfile', {'url': link}); + rng.moveToBookmark(bk).select(); + }; + } + + /* 插入loading的占位符 */ + me.execCommand('inserthtml', loadingHtml); + + /* 判断后端配置是否没有加载成功 */ + if (!me.getOpt(filetype + 'ActionName')) { + errorHandler(me.getLang('autoupload.errorLoadConfig')); + return; + } + /* 判断文件大小是否超出限制 */ + if(file.size > maxSize) { + errorHandler(me.getLang('autoupload.exceedSizeError')); + return; + } + /* 判断文件格式是否超出允许 */ + var fileext = file.name ? file.name.substr(file.name.lastIndexOf('.')):''; + if ((fileext && filetype != 'image') || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) { + errorHandler(me.getLang('autoupload.exceedTypeError')); + return; + } + + /* 创建Ajax并提交 */ + var xhr = new XMLHttpRequest(), + fd = new FormData(), + params = utils.serializeParam(me.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + params); + + fd.append(fieldName, file, file.name || ('blob.' + file.type.substr('image/'.length))); + fd.append('type', 'ajax'); + xhr.open("post", url, true); + xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); + xhr.addEventListener('load', function (e) { + try{ + var json = (new Function("return " + utils.trim(e.target.response)))(); + if (json.state == 'SUCCESS' && json.url) { + successHandler(json); + } else { + errorHandler(json.state); + } + }catch(er){ + errorHandler(me.getLang('autoupload.loadError')); + } + }); + xhr.send(fd); + } + + function getPasteImage(e){ + return e.clipboardData && e.clipboardData.items && e.clipboardData.items.length == 1 && /^image\//.test(e.clipboardData.items[0].type) ? e.clipboardData.items:null; + } + function getDropImage(e){ + return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files:null; + } + + return { + outputRule: function(root){ + utils.each(root.getNodesByTagName('img'),function(n){ + if (/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr('class'))) { + n.parentNode.removeChild(n); + } + }); + utils.each(root.getNodesByTagName('p'),function(n){ + if (/\bloadpara\b/.test(n.getAttr('class'))) { + n.parentNode.removeChild(n); + } + }); + }, + bindEvents:{ + //插入粘贴板的图片,拖放插入图片 + 'ready':function(e){ + var me = this; + if(window.FormData && window.FileReader) { + domUtils.on(me.body, 'paste drop', function(e){ + var hasImg = false, + items; + //获取粘贴板文件列表或者拖放文件列表 + items = e.type == 'paste' ? getPasteImage(e):getDropImage(e); + if(items){ + var len = items.length, + file; + while (len--){ + file = items[len]; + if(file.getAsFile) file = file.getAsFile(); + if(file && file.size > 0) { + sendAndInsertFile(file, me); + hasImg = true; + } + } + hasImg && e.preventDefault(); + } + + }); + //取消拖放图片时出现的文字光标位置提示 + domUtils.on(me.body, 'dragover', function (e) { + if(e.dataTransfer.types[0] == 'Files') { + e.preventDefault(); + } + }); + + //设置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:1px solid #cccccc;margin-left: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:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;' + + '}', + this.document); + } + } + } + } +}); + +// plugins/autosave.js +UE.plugin.register('autosave', function (){ + + var me = this, + //无限循环保护 + lastSaveTime = new Date(), + //最小保存间隔时间 + MIN_TIME = 20, + //auto save key + saveKey = null; + + function save ( editor ) { + + var saveData; + + if ( new Date() - lastSaveTime < MIN_TIME ) { + return; + } + + if ( !editor.hasContents() ) { + //这里不能调用命令来删除, 会造成事件死循环 + saveKey && me.removePreferences( saveKey ); + return; + } + + lastSaveTime = new Date(); + + editor._saveFlag = null; + + saveData = me.body.innerHTML; + + if ( editor.fireEvent( "beforeautosave", { + content: saveData + } ) === false ) { + return; + } + + me.setPreferences( saveKey, saveData ); + + editor.fireEvent( "afterautosave", { + content: saveData + } ); + + } + + return { + defaultOptions: { + //默认间隔时间 + saveInterval: 500, + enableAutoSave: true // HaoChuan9421 + }, + bindEvents:{ + 'ready':function(){ + + var _suffix = "-drafts-data", + key = null; + + if ( me.key ) { + key = me.key + _suffix; + } else { + key = ( me.container.parentNode.id || 'ue-common' ) + _suffix; + } + + //页面地址+编辑器ID 保持唯一 + saveKey = ( location.protocol + location.host + location.pathname ).replace( /[.:\/]/g, '_' ) + key; + + }, + + 'contentchange': function () { + // HaoChuan9421 + if (!me.getOpt('enableAutoSave')) { + return; + } + + if ( !saveKey ) { + return; + } + + if ( me._saveFlag ) { + window.clearTimeout( me._saveFlag ); + } + + if ( me.options.saveInterval > 0 ) { + + me._saveFlag = window.setTimeout( function () { + + save( me ); + + }, me.options.saveInterval ); + + } else { + + save(me); + + } + + + } + }, + commands:{ + 'clearlocaldata':{ + execCommand:function (cmd, name) { + if ( saveKey && me.getPreferences( saveKey ) ) { + me.removePreferences( saveKey ) + } + }, + notNeedUndo: true, + ignoreContentChange:true + }, + + 'getlocaldata':{ + execCommand:function (cmd, name) { + return saveKey ? me.getPreferences( saveKey ) || '' : ''; + }, + notNeedUndo: true, + ignoreContentChange:true + }, + + 'drafts':{ + 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/charts.js +UE.plugin.register('charts', function (){ + + var me = this; + + return { + bindEvents: { + 'chartserror': function () { + } + }, + commands:{ + 'charts': { + execCommand: function ( cmd, data ) { + + var tableNode = domUtils.findParentByTagName(this.selection.getRange().startContainer, 'table', true), + flagText = [], + config = {}; + + if ( !tableNode ) { + return false; + } + + if ( !validData( tableNode ) ) { + me.fireEvent( "chartserror" ); + return false; + } + + config.title = data.title || ''; + config.subTitle = data.subTitle || ''; + config.xTitle = data.xTitle || ''; + config.yTitle = data.yTitle || ''; + config.suffix = data.suffix || ''; + config.tip = data.tip || ''; + //数据对齐方式 + config.dataFormat = data.tableDataFormat || ''; + //图表类型 + config.chartType = data.chartType || 0; + + for ( var key in config ) { + + if ( !config.hasOwnProperty( key ) ) { + continue; + } + + flagText.push( key+":"+config[ key ] ); + + } + + tableNode.setAttribute( "data-chart", flagText.join( ";" ) ); + domUtils.addClass( tableNode, "edui-charts-table" ); + + + + }, + queryCommandState: function ( cmd, name ) { + + var tableNode = domUtils.findParentByTagName(this.selection.getRange().startContainer, 'table', true); + return tableNode && validData( tableNode ) ? 0 : -1; + + } + } + }, + inputRule:function(root){ + utils.each(root.getNodesByTagName('table'),function( tableNode ){ + + if ( tableNode.getAttr("data-chart") !== undefined ) { + tableNode.setAttr("style"); + } + + }) + + }, + outputRule:function(root){ + utils.each(root.getNodesByTagName('table'),function( tableNode ){ + + if ( tableNode.getAttr("data-chart") !== undefined ) { + tableNode.setAttr("style", "display: none;"); + } + + }) + + } + } + + function validData ( table ) { + + var firstRows = null, + cellCount = 0; + + //行数不够 + if ( table.rows.length < 2 ) { + return false; + } + + //列数不够 + if ( table.rows[0].cells.length < 2 ) { + return false; + } + + //第一行所有cell必须是th + firstRows = table.rows[ 0 ].cells; + cellCount = firstRows.length; + + for ( var i = 0, cell; cell = firstRows[ i ]; i++ ) { + + if ( cell.tagName.toLowerCase() !== 'th' ) { + return false; + } + + } + + for ( var i = 1, row; row = table.rows[ i ]; i++ ) { + + //每行单元格数不匹配, 返回false + if ( row.cells.length != cellCount ) { + return false; + } + + //第一列不是th也返回false + if ( row.cells[0].tagName.toLowerCase() !== 'th' ) { + return false; + } + + for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { + + var value = utils.trim( ( cell.innerText || cell.textContent || '' ) ); + + value = value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\s+|\s+$/g, '' ); + + //必须是数字 + if ( !/^\d*\.?\d+$/.test( value ) ) { + return false; + } + + } + + } + + return true; + + } + +}); + +// plugins/section.js +/** + * 目录大纲支持插件 + * @file + * @since 1.3.0 + */ +UE.plugin.register('section', function (){ + /* 目录节点对象 */ + function Section(option){ + this.tag = ''; + this.level = -1, + this.dom = null; + this.nextSection = null; + this.previousSection = null; + this.parentSection = null; + this.startAddress = []; + this.endAddress = []; + this.children = []; + } + function getSection(option) { + var section = new Section(); + return utils.extend(section, option); + } + function getNodeFromAddress(startAddress, root) { + var current = root; + for(var i = 0;i < startAddress.length; i++) { + if(!current.childNodes) return null; + current = current.childNodes[startAddress[i]]; + } + return current; + } + + var me = this; + + return { + bindMultiEvents:{ + type: 'aftersetcontent afterscencerestore', + handler: function(){ + me.fireEvent('updateSections'); + } + }, + bindEvents:{ + /* 初始化、拖拽、粘贴、执行setcontent之后 */ + 'ready': function (){ + me.fireEvent('updateSections'); + domUtils.on(me.body, 'drop paste', function(){ + me.fireEvent('updateSections'); + }); + }, + /* 执行paragraph命令之后 */ + 'afterexeccommand': function (type, cmd) { + if(cmd == 'paragraph') { + me.fireEvent('updateSections'); + } + }, + /* 部分键盘操作,触发updateSections事件 */ + 'keyup': function (type, e) { + var me = this, + range = me.selection.getRange(); + if(range.collapsed != true) { + me.fireEvent('updateSections'); + } else { + var keyCode = e.keyCode || e.which; + if(keyCode == 13 || keyCode == 8 || keyCode == 46) { + me.fireEvent('updateSections'); + } + } + } + }, + commands:{ + 'getsections': { + execCommand: function (cmd, levels) { + var levelFn = levels || ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']; + + for (var i = 0; i < levelFn.length; i++) { + if (typeof levelFn[i] == 'string') { + levelFn[i] = function(fn){ + return function(node){ + return node.tagName == fn.toUpperCase() + }; + }(levelFn[i]); + } else if (typeof levelFn[i] != 'function') { + levelFn[i] = function (node) { + return null; + } + } + } + function getSectionLevel(node) { + for (var i = 0; i < levelFn.length; i++) { + if (levelFn[i](node)) return i; + } + return -1; + } + + var me = this, + Directory = getSection({'level':-1, 'title':'root'}), + previous = Directory; + + function traversal(node, Directory) { + var level, + tmpSection = null, + parent, + child, + children = node.childNodes; + for (var i = 0, len = children.length; i < len; i++) { + child = children[i]; + level = getSectionLevel(child); + if (level >= 0) { + var address = me.selection.getRange().selectNode(child).createAddress(true).startAddress, + current = getSection({ + 'tag': child.tagName, + 'title': child.innerText || child.textContent || '', + 'level': level, + 'dom': child, + 'startAddress': utils.clone(address, []), + 'endAddress': utils.clone(address, []), + 'children': [] + }); + previous.nextSection = current; + current.previousSection = previous; + parent = previous; + while(level <= parent.level){ + parent = parent.parentSection; + } + current.parentSection = parent; + parent.children.push(current); + tmpSection = previous = current; + } else { + child.nodeType === 1 && traversal(child, Directory); + tmpSection && tmpSection.endAddress[tmpSection.endAddress.length - 1] ++; + } + } + } + traversal(me.body, Directory); + return Directory; + }, + notNeedUndo: true + }, + 'movesection': { + execCommand: function (cmd, sourceSection, targetSection, isAfter) { + + var me = this, + targetAddress, + target; + + if(!sourceSection || !targetSection || targetSection.level == -1) return; + + targetAddress = isAfter ? targetSection.endAddress:targetSection.startAddress; + target = getNodeFromAddress(targetAddress, me.body); + + /* 判断目标地址是否被源章节包含 */ + if(!targetAddress || !target || isContainsAddress(sourceSection.startAddress, sourceSection.endAddress, targetAddress)) return; + + var startNode = getNodeFromAddress(sourceSection.startAddress, me.body), + endNode = getNodeFromAddress(sourceSection.endAddress, me.body), + current, + nextNode; + + if(isAfter) { + current = endNode; + while ( current && !(domUtils.getPosition( startNode, current ) & domUtils.POSITION_FOLLOWING) ) { + nextNode = current.previousSibling; + domUtils.insertAfter(target, current); + if(current == startNode) break; + current = nextNode; + } + } else { + current = startNode; + while ( current && !(domUtils.getPosition( current, endNode ) & domUtils.POSITION_FOLLOWING) ) { + nextNode = current.nextSibling; + target.parentNode.insertBefore(current, target); + if(current == endNode) break; + current = nextNode; + } + } + + me.fireEvent('updateSections'); + + /* 获取地址的包含关系 */ + function isContainsAddress(startAddress, endAddress, addressTarget){ + var isAfterStartAddress = false, + isBeforeEndAddress = false; + for(var i = 0; i< startAddress.length; i++){ + if(i >= addressTarget.length) break; + if(addressTarget[i] > startAddress[i]) { + isAfterStartAddress = true; + break; + } else if(addressTarget[i] < startAddress[i]) { + break; + } + } + for(var i = 0; i< endAddress.length; i++){ + if(i >= addressTarget.length) break; + if(addressTarget[i] < startAddress[i]) { + isBeforeEndAddress = true; + break; + } else if(addressTarget[i] > startAddress[i]) { + break; + } + } + return isAfterStartAddress && isBeforeEndAddress; + } + } + }, + 'deletesection': { + execCommand: function (cmd, section, keepChildren) { + var me = this; + + if(!section) return; + + function getNodeFromAddress(startAddress) { + var current = me.body; + for(var i = 0;i < startAddress.length; i++) { + if(!current.childNodes) return null; + current = current.childNodes[startAddress[i]]; + } + return current; + } + + var startNode = getNodeFromAddress(section.startAddress), + endNode = getNodeFromAddress(section.endAddress), + current = startNode, + nextNode; + + if(!keepChildren) { + while ( current && domUtils.inDoc(endNode, me.document) && !(domUtils.getPosition( current, endNode ) & domUtils.POSITION_FOLLOWING) ) { + nextNode = current.nextSibling; + domUtils.remove(current); + current = nextNode; + } + } else { + domUtils.remove(current); + } + + me.fireEvent('updateSections'); + } + }, + 'selectsection': { + execCommand: function (cmd, section) { + if(!section && !section.dom) return false; + var me = this, + range = me.selection.getRange(), + address = { + 'startAddress':utils.clone(section.startAddress, []), + 'endAddress':utils.clone(section.endAddress, []) + }; + address.endAddress[address.endAddress.length - 1]++; + range.moveToAddress(address).select().scrollToView(); + return true; + }, + notNeedUndo: true + }, + 'scrolltosection': { + execCommand: function (cmd, section) { + if(!section && !section.dom) return false; + var me = this, + range = me.selection.getRange(), + address = { + 'startAddress':section.startAddress, + 'endAddress':section.endAddress + }; + address.endAddress[address.endAddress.length - 1]++; + range.moveToAddress(address).scrollToView(); + return true; + }, + notNeedUndo: true + } + } + } +}); + +// plugins/simpleupload.js +/** + * @description + * 简单上传:点击按钮,直接选择文件上传。 + * 原 UEditor 作者使用了 form 表单 + iframe 的方式上传 + * 但由于同源策略的限制,父页面无法访问跨域的 iframe 内容 + * 导致无法获取接口返回的数据,使得单图上传无法在跨域的情况下使用 + * 这里改为普通的XHR上传,兼容到IE10+ + * @author HaoChuan9421 + * @date 2018-12-20 + */ +UE.plugin.register('simpleupload', function() { + var me = this, + containerBtn, + timestrap = (+new Date()).toString(36); + + function initUploadBtn() { + var w = containerBtn.offsetWidth || 20, + h = containerBtn.offsetHeight || 20, + btnStyle = 'display:block;width:' + w + 'px;height:' + h + 'px;overflow:hidden;border:0;margin:0;padding:0;position:absolute;top:0;left:0;filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity: 0;opacity: 0;cursor:pointer;'; + + var form = document.createElement('form'); + var input = document.createElement('input'); + form.id = 'edui_form_' + timestrap; + form.enctype = 'multipart/form-data'; + form.style = btnStyle; + input.id = 'edui_input_' + timestrap; + input.type = 'file' + input.accept = 'image/*'; + input.name = me.options.imageFieldName; + input.style = btnStyle; + form.appendChild(input); + containerBtn.appendChild(form); + + input.addEventListener('change', function(event) { + if (!input.value) return; + var loadingId = 'loading_' + (+new Date()).toString(36); + var imageActionUrl = me.getActionUrl(me.getOpt('imageActionName')); + var params = utils.serializeParam(me.queryCommandValue('serverparam')) || ''; + var action = utils.formatUrl(imageActionUrl + (imageActionUrl.indexOf('?') == -1 ? '?' : '&') + params); + var allowFiles = me.getOpt('imageAllowFiles'); + me.focus(); + me.execCommand('inserthtml', ''); + + 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')) { + showErrorLoader(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; + } + + var xhr = new XMLHttpRequest() + xhr.open('post', action, true) + if (me.options.headers && Object.prototype.toString.apply(me.options.headers) === "[object Object]") { + for (var key in me.options.headers) { + xhr.setRequestHeader(key, me.options.headers[key]) + } + } + xhr.onload = function() { + if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) { + var res = JSON.parse(xhr.responseText) + var link = me.options.imageUrlPrefix + res.url; + + if (res.state == 'SUCCESS' && res.url) { + loader = me.document.getElementById(loadingId); + loader.setAttribute('src', link); + loader.setAttribute('_src', link); + loader.setAttribute('title', res.title || ''); + loader.setAttribute('alt', res.original || ''); + loader.removeAttribute('id'); + domUtils.removeClasses(loader, 'loadingclass'); + me.fireEvent("contentchange"); + } else { + showErrorLoader(res.state); + } + } else { + showErrorLoader(me.getLang('simpleupload.loadError')); + } + }; + xhr.onerror = function() { + showErrorLoader(me.getLang('simpleupload.loadError')); + }; + xhr.send(new FormData(form)); + form.reset(); + }) + } + + 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:1px solid #cccccc;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:1px solid #cccccc;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); + } + }); + } + } +}); + +// 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, true); + } else if (utils.isFunction(key)){ //传入函数,添加列表项 + utils.extend(serverParam, key(), true); + } + }, + 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]; + + 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); + } + } + } + } +}); + + + + +// plugins/xssFilter.js +/** + * @file xssFilter.js + * @desc xss过滤器 + * @author robbenmu + */ + +UE.plugins.xssFilter = function() { + + var config = UEDITOR_CONFIG; + var whitList = config.whitList; + + function filter(node) { + + var tagName = node.tagName; + var attrs = node.attrs; + + if (!whitList.hasOwnProperty(tagName)) { + node.parentNode.removeChild(node); + return false; + } + + UE.utils.each(attrs, function (val, key) { + + if (whitList[tagName].indexOf(key) === -1) { + node.setAttr(key); + } + }); + } + + // 添加inserthtml\paste等操作用的过滤规则 + if (whitList && config.xssFilterRules) { + this.options.filterRules = function () { + + var result = {}; + + UE.utils.each(whitList, function(val, key) { + result[key] = function (node) { + return filter(node); + }; + }); + + return result; + }(); + } + + var tagList = []; + + UE.utils.each(whitList, function (val, key) { + tagList.push(key); + }); + + // 添加input过滤规则 + // + if (whitList && config.inputXssFilter) { + this.addInputRule(function (root) { + + root.traversal(function(node) { + if (node.type !== 'element') { + return false; + } + filter(node); + }); + }); + } + // 添加output过滤规则 + // + if (whitList && config.outputXssFilter) { + this.addOutputRule(function (root) { + + root.traversal(function(node) { + if (node.type !== 'element') { + return false; + } + filter(node); + }); + }); + } + +}; + + +// 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'; + } + return layer; + }, + makeUnselectable: function (element){ + if (browser.opera || (browser.ie && browser.version < 9)) { + element.unselectable = 'on'; + if (element.hasChildNodes()) { + for (var i=0; i
    '; + } + }; + 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/ig.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上的鼠标滚轮事件, 防止用户的正常操作被误解 + if( window.XMLHttpRequest ) { + + 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; + + } + + }); + + } else { + + //ie6 + domUtils.on( this.getDom(), 'mousewheel' , function(e){ + + e.returnValue = false; + + me.getDom('content').scrollTop -= ( e.wheelDelta / 120 )*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 (){ + 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); + } + + 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':'')+''; + } + html += i<70 ? '':''; + } + html += '
    '+editor.getLang("themeColor")+'
    '+editor.getLang("standardColor")+'
    '; + 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-default .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/ig.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'); + + tmpl.push( '
    ' ); + + tempIndex === 2 && tmpl.push(''); + + } + + return '
    ' + + '
    ' + + '' + + 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/ig.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' + + buff.join('') + + '
    ' + }, + postRender: function (){ + var box = this.getDom(); + for (var i=0; i
    '; + }, + 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 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' + 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'; + 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) { + 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 , 0.2); + } + + + 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', + 'insertimage':'~/dialogs/image/image.html', + 'link':'~/dialogs/link/link.html', + 'spechars':'~/dialogs/spechars/spechars.html', + 'searchreplace':'~/dialogs/searchreplace/searchreplace.html', + 'map':'~/dialogs/map/map.html', + 'gmap':'~/dialogs/gmap/gmap.html', + 'insertvideo':'~/dialogs/video/video.html', + 'help':'~/dialogs/help/help.html', + 'preview':'~/dialogs/preview/preview.html', + 'emotion':'~/dialogs/emotion/emotion.html', + 'wordimage':'~/dialogs/wordimage/wordimage.html', + 'attachment':'~/dialogs/attachment/attachment.html', + 'insertframe':'~/dialogs/insertframe/insertframe.html', + 'edittip':'~/dialogs/table/edittip.html', + 'edittable':'~/dialogs/table/edittable.html', + 'edittd':'~/dialogs/table/edittd.html', + 'webapp':'~/dialogs/webapp/webapp.html', + 'snapscreen':'~/dialogs/snapscreen/snapscreen.html', + 'scrawl':'~/dialogs/scrawl/scrawl.html', + 'music':'~/dialogs/music/music.html', + 'template':'~/dialogs/template/template.html', + 'background':'~/dialogs/background/background.html', + 'charts': '~/dialogs/charts/charts.html' + }; + //为工具栏添加按钮,以下都是统一的按钮触发命令,所以写在一起 + 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', 'drafts']; + + 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); + 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', 'webapp','preview'], + ok:['attachment', 'anchor', 'link', 'insertimage', 'map', 'gmap', 'insertframe', 'wordimage', + 'insertvideo', 'insertframe', 'edittip', 'edittable', 'edittd', 'scrawl', 'template', 'music', 'background', 'charts'] + }; + + 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: /charts|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 (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) || ( cmd == 'charts' ) + }); + 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.snapscreen = function (editor, iframeUrl, title) { + title = editor.options.labelMap['snapscreen'] || editor.getLang("labelMap.snapscreen") || ''; + var ui = new editorui.Button({ + className:'edui-for-snapscreen', + title:title, + onclick:function () { + editor.execCommand("snapscreen"); + }, + theme:editor.options.theme + + }); + editorui.buttons['snapscreen'] = ui; + iframeUrl = iframeUrl || (editor.options.iframeUrlMap || {})["snapscreen"] || iframeUrlMap["snapscreen"]; + if (iframeUrl) { + var dialog = new editorui.Dialog({ + iframeUrl:editor.ui.mapUrl(iframeUrl), + editor:editor, + className:'edui-for-snapscreen', + title:title, + 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); + } + } + ] + + }); + dialog.render(); + editor.ui._dialogs["snapscreenDialog"] = dialog; + } + editor.addListener('selectionchange', function () { + ui.setDisabled(editor.queryCommandState('snapscreen') == -1); + }); + return ui; + }; + + 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 + "<\/" + ck.tag + ">" + + '
    '; + } + }); + })(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/ig.test(el.tagName)) { + var html = popup.formatHtml( + '' + editor.getLang("property") + ': ' + 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.className.indexOf("edui-faked-webapp") != -1) { + dialogName = "webappDialog" + } + if (img.src.indexOf("http://api.map.baidu.com") != -1) { + dialogName = "mapDialog" + } + if (img.className.indexOf("edui-faked-music") != -1) { + dialogName = "musicDialog" + } + if (img.src.indexOf("http://maps.google.com/maps/api/staticmap") != -1) { + dialogName = "gmapDialog" + } + if (img.getAttribute("anchorname")) { + dialogName = "anchorDialog"; + html = popup.formatHtml( + '' + editor.getLang("property") + ': ' + editor.getLang("modify") + '  ' + + '' + editor.getLang("delete") + ''); + } + if (img.getAttribute("word_img")) { + //todo 放到dialog去做查询 + editor.word_img = [img.getAttribute("word_img")]; + dialogName = "wordimageDialog" + } + if(domUtils.hasClass(img, 'loadingclass') || domUtils.hasClass(img, 'loaderrorclass')) { + dialogName = ""; + } + if (!dialogs[dialogName]) { + return; + } + str = '' + editor.getLang("property") + ': '+ + '' + editor.getLang("default") + '  ' + + '' + editor.getLang("justifyleft") + '  ' + + '' + editor.getLang("justifyright") + '  ' + + '' + editor.getLang("justifycenter") + '  '+ + '' + editor.getLang("modify") + ''; + + !html && (html = popup.formatHtml(str)) + + } + 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("anthorMsg") + ': ' + 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 = []; + 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'; + } + if (baidu.editor.ui[toolbarItem]) { + toolbarItemUi = new baidu.editor.ui[toolbarItem](editor); + } + + //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 无法准确的循环出对象的全部元素而导致的自定义 UI 不符合预期的 BUG by HaoChuan9421) + + // utils.each(UE._customizeUI,function(obj,key){ + // var itemUI,index; + // if(obj.id && obj.id != editor.key){ + // return false; + // } + // itemUI = obj.execFn.call(editor,editor,key); + // if(itemUI){ + // index = obj.index; + // if(index === undefined){ + // index = toolbarUi.items.length; + // } + // toolbarUi.add(itemUI,index) + // } + // }); + + + for(var key in UE._customizeUI){ + var obj = UE._customizeUI[key] + var itemUI,index; + if(!obj.id || obj.id == editor.key){ + itemUI = obj.execFn.call(editor,editor,key); + if(itemUI){ + index = obj.index; + if(index === undefined){ + index = toolbarUi.items.length; + } + toolbarUi.add(itemUI,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", + 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/ig.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) { + UE._customizeUI[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.addListener('ready', function(){ + holder = document.getElementById(me.ui.id + '_message_holder'); + updateHolderPos(); + // HaoChuan9421 + // 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(){ + 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; + } + +}); + + +// adapter/autosave.js +UE.registerUI('autosave', function(editor) { + var timer = null,uid = null; + editor.on('afterautosave',function(){ + clearTimeout(timer); + + timer = setTimeout(function(){ + if(uid){ + editor.trigger('hidemessage',uid); + } + uid = editor.trigger('showmessage',{ + content : editor.getLang('autosave.success'), + timeout : 2000 + }); + + },2000) + }) + +}); + + + +})(); diff --git a/yshop-drink-vue3/public/UEditor/ueditor.all.min.js b/yshop-drink-vue3/public/UEditor/ueditor.all.min.js new file mode 100644 index 0000000..e60dcb0 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/ueditor.all.min.js @@ -0,0 +1,18 @@ +/*! + * UEditor + * version: ueditor + * build: Wed Dec 26 2018 17:25:05 GMT+0800 (CST) + */ + +!function(){function getListener(a,b,c){var d;return b=b.toLowerCase(),(d=a.__allListeners||c&&(a.__allListeners={}))&&(d[b]||c&&(d[b]=[]))}function getDomNode(a,b,c,d,e,f){var g,h=d&&a[b];for(!h&&(h=a[c]);!h&&(g=(g||a).parentNode);){if("BODY"==g.tagName||f&&!f(g))return null;h=g[c]}return h&&e&&!e(h)?getDomNode(h,b,c,!1,e):h}UEDITOR_CONFIG=window.UEDITOR_CONFIG||{};var baidu=window.baidu||{};window.baidu=baidu,window.UE=baidu.editor=window.UE||{},UE.plugins={},UE.commands={},UE.instants={},UE.I18N={},UE._customizeUI={},UE.version="1.4.3";var dom=UE.dom={},browser=UE.browser=function(){var a=navigator.userAgent.toLowerCase(),b=window.opera,c={ie:/(msie\s|trident.*rv:)([\w.]+)/.test(a),opera:!!b&&b.version,webkit:a.indexOf(" applewebkit/")>-1,mac:a.indexOf("macintosh")>-1,quirks:"BackCompat"==document.compatMode};c.gecko="Gecko"==navigator.product&&!c.webkit&&!c.opera&&!c.ie;var d=0;if(c.ie){var e=a.match(/(?:msie\s([\w.]+))/),f=a.match(/(?:trident.*rv:([\w.]+))/);d=e&&f&&e[1]&&f[1]?Math.max(1*e[1],1*f[1]):e&&e[1]?1*e[1]:f&&f[1]?1*f[1]:0,c.ie11Compat=11==document.documentMode,c.ie9Compat=9==document.documentMode,c.ie8=!!document.documentMode,c.ie8Compat=8==document.documentMode,c.ie7Compat=7==d&&!document.documentMode||7==document.documentMode,c.ie6Compat=d<7||c.quirks,c.ie9above=d>8,c.ie9below=d<9,c.ie11above=d>10,c.ie11below=d<11}if(c.gecko){var g=a.match(/rv:([\d\.]+)/);g&&(g=g[1].split("."),d=1e4*g[0]+100*(g[1]||0)+1*(g[2]||0))}return/chrome\/(\d+\.\d)/i.test(a)&&(c.chrome=+RegExp.$1),/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(a)&&!/chrome/i.test(a)&&(c.safari=+(RegExp.$1||RegExp.$2)),c.opera&&(d=parseFloat(b.version())),c.webkit&&(d=parseFloat(a.match(/ applewebkit\/(\d+)/)[1])),c.version=d,c.isCompatible=!c.mobile&&(c.ie&&d>=6||c.gecko&&d>=10801||c.opera&&d>=9.5||c.air&&d>=1||c.webkit&&d>=522||!1),c}(),ie=browser.ie,webkit=browser.webkit,gecko=browser.gecko,opera=browser.opera,utils=UE.utils={each:function(a,b,c){if(null!=a)if(a.length===+a.length){for(var d=0,e=a.length;d=c&&a===b)return d=e,!1}),d},removeItem:function(a,b){for(var c=0,d=a.length;c'](?:(amp|lt|quot|gt|#39|nbsp|#\d+);)?/g,function(a,b){return b?a:{"<":"<","&":"&",'"':""",">":">","'":"'"}[a]}):""},unhtmlForUrl:function(a,b){return a?a.replace(b||/[<">']/g,function(a){return{"<":"<","&":"&",'"':""",">":">","'":"'"}[a]}):""},html:function(a){return a?a.replace(/&((g|l|quo)t|amp|#39|nbsp);/g,function(a){return{"<":"<","&":"&",""":'"',">":">","'":"'"," ":" "}[a]}):""},cssStyleToDomStyle:function(){var a=document.createElement("div").style,b={"float":void 0!=a.cssFloat?"cssFloat":void 0!=a.styleFloat?"styleFloat":"float"};return function(a){return b[a]||(b[a]=a.toLowerCase().replace(/-./g,function(a){return a.charAt(1).toUpperCase()}))}}(),loadFile:function(){function a(a,c){try{for(var d,e=0;d=b[e++];)if(d.doc===a&&d.url==(c.src||c.href))return d}catch(f){return null}}var b=[];return function(c,d,e){var f=a(c,d);if(f)return void(f.ready?e&&e():f.funs.push(e));if(b.push({doc:c,url:d.src||d.href,funs:[e]}),!c.body){var g=[];for(var h in d)"tag"!=h&&g.push(h+'="'+d[h]+'"');return void c.write("<"+d.tag+" "+g.join(" ")+" >")}if(!d.id||!c.getElementById(d.id)){var i=c.createElement(d.tag);delete d.tag;for(var h in d)i.setAttribute(h,d[h]);i.onload=i.onreadystatechange=function(){if(!this.readyState||/loaded|complete/.test(this.readyState)){if(f=a(c,d),f.funs.length>0){f.ready=1;for(var b;b=f.funs.pop();)b()}i.onload=i.onreadystatechange=null}},i.onerror=function(){throw Error("The load "+(d.href||d.src)+" fails,check the url settings of file ueditor.config.js ")},c.getElementsByTagName("head")[0].appendChild(i)}}}(),isEmptyObject:function(a){if(null==a)return!0;if(this.isArray(a)||this.isString(a))return 0===a.length;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0},fixColor:function(a,b){if(/color/i.test(a)&&/rgba?/.test(b)){var c=b.split(",");if(c.length>3)return"";b="#";for(var d,e=0;d=c[e++];)d=parseInt(d.replace(/[^\d]/gi,""),10).toString(16),b+=1==d.length?"0"+d:d;b=b.toUpperCase()}return b},optCss:function(a){function b(a,b){if(!a)return"";var c=a.top,d=a.bottom,e=a.left,f=a.right,g="";if(c&&e&&d&&f)g+=";"+b+":"+(c==d&&d==e&&e==f?c:c==d&&e==f?c+" "+e:e==f?c+" "+e+" "+d:c+" "+f+" "+d+" "+e)+";";else for(var h in a)g+=";"+b+"-"+h+":"+a[h]+";";return g}var c,d;return a=a.replace(/(padding|margin|border)\-([^:]+):([^;]+);?/gi,function(a,b,e,f){if(1==f.split(" ").length)switch(b){case"padding":return!c&&(c={}),c[e]=f,"";case"margin":return!d&&(d={}),d[e]=f,"";case"border":return"initial"==f?"":a}return a}),a+=b(c,"padding")+b(d,"margin"),a.replace(/^[ \n\r\t;]*|[ \n\r\t]*$/,"").replace(/;([ \n\r\t]+)|\1;/g,";").replace(/(&((l|g)t|quot|#39))?;{2,}/g,function(a,b){return b?b+";;":";"})},clone:function(a,b){var c;b=b||{};for(var d in a)a.hasOwnProperty(d)&&(c=a[d],"object"==typeof c?(b[d]=utils.isArray(c)?[]:{},utils.clone(a[d],b[d])):b[d]=c);return b},transUnitToPx:function(a){if(!/(pt|cm)/.test(a))return a;var b;switch(a.replace(/([\d.]+)(\w+)/,function(c,d,e){a=d,b=e}),b){case"cm":a=25*parseFloat(a);break;case"pt":a=Math.round(96*parseFloat(a)/72)}return a+(a?"px":"")},domReady:function(){function a(a){a.isReady=!0;for(var c;c=b.pop();c());}var b=[];return function(c,d){d=d||window;var e=d.document;c&&b.push(c),"complete"===e.readyState?a(e):(e.isReady&&a(e),browser.ie&&11!=browser.version?(!function(){if(!e.isReady){try{e.documentElement.doScroll("left")}catch(b){return void setTimeout(arguments.callee,0)}a(e)}}(),d.attachEvent("onload",function(){a(e)})):(e.addEventListener("DOMContentLoaded",function(){e.removeEventListener("DOMContentLoaded",arguments.callee,!1),a(e)},!1),d.addEventListener("load",function(){a(e)},!1)))}}(),cssRule:browser.ie&&11!=browser.version?function(a,b,c){var d,e;if(void 0===b||b&&b.nodeType&&9==b.nodeType){if(c=b&&b.nodeType&&9==b.nodeType?b:c||document,d=c.indexList||(c.indexList={}),e=d[a],void 0!==e)return c.styleSheets[e].cssText}else{if(c=c||document,d=c.indexList||(c.indexList={}),e=d[a],""===b)return void 0!==e&&(c.styleSheets[e].cssText="",delete d[a],!0);void 0!==e?sheetStyle=c.styleSheets[e]:(sheetStyle=c.createStyleSheet("",e=c.styleSheets.length),d[a]=e),sheetStyle.cssText=b}}:function(a,b,c){var d;return void 0===b||b&&b.nodeType&&9==b.nodeType?(c=b&&b.nodeType&&9==b.nodeType?b:c||document,d=c.getElementById(a),d?d.innerHTML:void 0):(c=c||document,d=c.getElementById(a),""===b?!!d&&(d.parentNode.removeChild(d),!0):void(d?d.innerHTML=b:(d=c.createElement("style"),d.id=a,d.innerHTML=b,c.getElementsByTagName("head")[0].appendChild(d))))},sort:function(a,b){b=b||function(a,b){return a.localeCompare(b)};for(var c=0,d=a.length;c0){var g=a[c];a[c]=a[e],a[e]=g}return a},serializeParam:function(a){var b=[];for(var c in a)if("method"!=c&&"timeout"!=c&&"async"!=c)if("function"!=(typeof a[c]).toLowerCase()&&"object"!=(typeof a[c]).toLowerCase())b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));else if(utils.isArray(a[c]))for(var d=0;d1||b!==a.parentNode){a.style.cssText=b.style.cssText+";"+a.style.cssText,b=b.parentNode;continue}b.style.cssText+=";"+a.style.cssText,"A"==b.tagName&&(b.style.textDecoration="underline")}if("A"!=b.tagName){b===a.parentNode&&domUtils.remove(a,!0);break}}b=b.parentNode}},mergeSibling:function(a,b,c){function d(a,b,c){var d;if((d=c[a])&&!domUtils.isBookmarkNode(d)&&1==d.nodeType&&domUtils.isSameElement(c,d)){for(;d.firstChild;)"firstChild"==b?c.insertBefore(d.lastChild,c.firstChild):c.appendChild(d.firstChild);domUtils.remove(d)}}!b&&d("previousSibling","firstChild",a),!c&&d("nextSibling","lastChild",a)},unSelectable:ie&&browser.ie9below||browser.opera?function(a){a.onselectstart=function(){return!1},a.onclick=a.onkeyup=a.onkeydown=function(){return!1},a.unselectable="on",a.setAttribute("unselectable","on");for(var b,c=0;b=a.all[c++];)switch(b.tagName.toLowerCase()){case"iframe":case"textarea":case"input":case"select":break;default:b.unselectable="on",a.setAttribute("unselectable","on")}}:function(a){a.style.MozUserSelect=a.style.webkitUserSelect=a.style.msUserSelect=a.style.KhtmlUserSelect="none"},removeAttributes:function(a,b){b=utils.isArray(b)?b:utils.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0;c=b[d++];){switch(c=attrFix[c]||c){case"className":a[c]="";break;case"style":a.style.cssText="";var e=a.getAttributeNode("style");!browser.ie&&e&&a.removeAttributeNode(e)}a.removeAttribute(c)}},createElement:function(a,b,c){return domUtils.setAttributes(a.createElement(b),c)},setAttributes:function(a,b){for(var c in b)if(b.hasOwnProperty(c)){var d=b[c];switch(c){case"class":a.className=d;break;case"style":a.style.cssText=a.style.cssText+";"+d;break;case"innerHTML":a[c]=d;break;case"value":a.value=d;break;default:a.setAttribute(attrFix[c]||c,d)}}return a},getComputedStyle:function(a,b){var c="width height top left";if(c.indexOf(b)>-1)return a["offset"+b.replace(/^\w/,function(a){return a.toUpperCase()})]+"px";if(3==a.nodeType&&(a=a.parentNode),browser.ie&&browser.version<9&&"font-size"==b&&!a.style.fontSize&&!dtd.$empty[a.tagName]&&!dtd.$nonChild[a.tagName]){var d=a.ownerDocument.createElement("span");d.style.cssText="padding:0;border:0;font-family:simsun;",d.innerHTML=".",a.appendChild(d);var e=d.offsetHeight;return a.removeChild(d),d=null,e+"px"}try{var f=domUtils.getStyle(a,b)||(window.getComputedStyle?domUtils.getWindow(a).getComputedStyle(a,"").getPropertyValue(b):(a.currentStyle||a.style)[utils.cssStyleToDomStyle(b)])}catch(g){return""}return utils.transUnitToPx(utils.fixColor(b,f))},removeClasses:function(a,b){b=utils.isArray(b)?b:utils.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)e=e.replace(new RegExp("\\b"+c+"\\b"),"");e=utils.trim(e).replace(/[ ]{2,}/g," "),e?a.className=e:domUtils.removeAttributes(a,["class"])},addClass:function(a,b){if(a){b=utils.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)new RegExp("\\b"+c+"\\b").test(e)||(e+=" "+c);a.className=utils.trim(e)}},hasClass:function(a,b){if(utils.isRegExp(b))return b.test(a.className);b=utils.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)if(!new RegExp("\\b"+c+"\\b","i").test(e))return!1;return d-1==b.length},preventDefault:function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},removeStyle:function(a,b){browser.ie?("color"==b&&(b="(^|;)"+b),a.style.cssText=a.style.cssText.replace(new RegExp(b+"[^:]*:[^;]+;?","ig"),"")):a.style.removeProperty?a.style.removeProperty(b):a.style.removeAttribute(utils.cssStyleToDomStyle(b)),a.style.cssText||domUtils.removeAttributes(a,["style"])},getStyle:function(a,b){var c=a.style[utils.cssStyleToDomStyle(b)];return utils.fixColor(b,c)},setStyle:function(a,b,c){a.style[utils.cssStyleToDomStyle(b)]=c,utils.trim(a.style.cssText)||this.removeAttributes(a,"style")},setStyles:function(a,b){for(var c in b)b.hasOwnProperty(c)&&domUtils.setStyle(a,c,b[c])},removeDirtyAttr:function(a){for(var b,c=0,d=a.getElementsByTagName("*");b=d[c++];)b.removeAttribute("_moz_dirty");a.removeAttribute("_moz_dirty")},getChildCount:function(a,b){var c=0,d=a.firstChild;for(b=b||function(){return 1};d;)b(d)&&c++,d=d.nextSibling;return c},isEmptyNode:function(a){return!a.firstChild||0==domUtils.getChildCount(a,function(a){return!domUtils.isBr(a)&&!domUtils.isBookmarkNode(a)&&!domUtils.isWhitespace(a)})},clearSelectedArr:function(a){for(var b;b=a.pop();)domUtils.removeAttributes(b,["class"])},scrollToView:function(a,b,c){var d=function(){var a=b.document,c="CSS1Compat"==a.compatMode;return{width:(c?a.documentElement.clientWidth:a.body.clientWidth)||0,height:(c?a.documentElement.clientHeight:a.body.clientHeight)||0}},e=function(a){if("pageXOffset"in a)return{x:a.pageXOffset||0,y:a.pageYOffset||0};var b=a.document;return{x:b.documentElement.scrollLeft||b.body.scrollLeft||0,y:b.documentElement.scrollTop||b.body.scrollTop||0}},f=d().height,g=f*-1+c;g+=a.offsetHeight||0;var h=domUtils.getXY(a);g+=h.y;var i=e(b).y;(g>i||g0)return 0;for(var c in dtd.$isNotEmpty)if(a.getElementsByTagName(c).length)return 0;return 1}},setViewportOffset:function(a,b){var c=0|parseInt(a.style.left),d=0|parseInt(a.style.top),e=a.getBoundingClientRect(),f=b.left-e.left,g=b.top-e.top;f&&(a.style.left=c+f+"px"),g&&(a.style.top=d+g+"px")},fillNode:function(a,b){var c=browser.ie?a.createTextNode(domUtils.fillChar):a.createElement("br");b.innerHTML="",b.appendChild(c)},moveChild:function(a,b,c){for(;a.firstChild;)c&&b.firstChild?b.insertBefore(a.lastChild,b.firstChild):b.appendChild(a.firstChild)},hasNoAttributes:function(a){return browser.ie?/^<\w+\s*?>/.test(a.outerHTML):0==a.attributes.length},isCustomeNode:function(a){return 1==a.nodeType&&a.getAttribute("_ue_custom_node_")},isTagNode:function(a,b){return 1==a.nodeType&&new RegExp("\\b"+a.tagName+"\\b","i").test(b)},filterNodeList:function(a,b,c){var d=[];if(!utils.isFunction(b)){var e=b;b=function(a){return utils.indexOf(utils.isArray(e)?e:e.split(" "),a.tagName.toLowerCase())!=-1}}return utils.each(a,function(a){b(a)&&d.push(a)}),0==d.length?null:1!=d.length&&c?d:d[0]},isInNodeEndBoundary:function(a,b){var c=a.startContainer;if(3==c.nodeType&&a.startOffset!=c.nodeValue.length)return 0;if(1==c.nodeType&&a.startOffset!=c.childNodes.length)return 0;for(;c!==b;){if(c.nextSibling)return 0;c=c.parentNode}return 1},isBoundaryNode:function(a,b){for(var c;!domUtils.isBody(a);)if(c=a,a=a.parentNode,c!==a[b])return!1;return!0},fillHtml:browser.ie11below?" ":"
    "},fillCharReg=new RegExp(domUtils.fillChar,"g");!function(){function a(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer===a.endContainer&&a.startOffset==a.endOffset}function b(a){return!a.collapsed&&1==a.startContainer.nodeType&&a.startContainer===a.endContainer&&a.endOffset-a.startOffset==1}function c(b,c,d,e){return 1==c.nodeType&&(dtd.$empty[c.tagName]||dtd.$nonChild[c.tagName])&&(d=domUtils.getNodeIndex(c)+(b?0:1),c=c.parentNode),b?(e.startContainer=c,e.startOffset=d,e.endContainer||e.collapse(!0)):(e.endContainer=c,e.endOffset=d,e.startContainer||e.collapse(!1)),a(e),e}function d(a,b){var c,d,e=a.startContainer,f=a.endContainer,g=a.startOffset,h=a.endOffset,i=a.document,j=i.createDocumentFragment();if(1==e.nodeType&&(e=e.childNodes[g]||(c=e.appendChild(i.createTextNode("")))),1==f.nodeType&&(f=f.childNodes[h]||(d=f.appendChild(i.createTextNode("")))),e===f&&3==e.nodeType)return j.appendChild(i.createTextNode(e.substringData(g,h-g))),b&&(e.deleteData(g,h-g),a.collapse(!0)),j;for(var k,l,m=j,n=domUtils.findParents(e,!0),o=domUtils.findParents(f,!0),p=0;n[p]==o[p];)p++;for(var q,r=p;q=n[r];r++){for(k=q.nextSibling,q==e?c||(3==a.startContainer.nodeType?(m.appendChild(i.createTextNode(e.nodeValue.slice(g))),b&&e.deleteData(g,e.nodeValue.length-g)):m.appendChild(b?e:e.cloneNode(!0))):(l=q.cloneNode(!1),m.appendChild(l));k&&k!==f&&k!==o[r];)q=k.nextSibling,m.appendChild(b?k:k.cloneNode(!0)),k=q;m=l}m=j,n[p]||(m.appendChild(n[p-1].cloneNode(!1)),m=m.firstChild);for(var s,r=p;s=o[r];r++){if(k=s.previousSibling,s==f?d||3!=a.endContainer.nodeType||(m.appendChild(i.createTextNode(f.substringData(0,h))),b&&f.deleteData(0,h)):(l=s.cloneNode(!1),m.appendChild(l)),r!=p||!n[p])for(;k&&k!==e;)s=k.previousSibling,m.insertBefore(b?k:k.cloneNode(!0),m.firstChild),k=s;m=l}return b&&a.setStartBefore(o[p]?n[p]?o[p]:n[p-1]:o[p-1]).collapse(!0),c&&domUtils.remove(c),d&&domUtils.remove(d),j}function e(a,b){try{if(g&&domUtils.inDoc(g,a))if(g.nodeValue.replace(fillCharReg,"").length)g.nodeValue=g.nodeValue.replace(fillCharReg,"");else{var c=g.parentNode;for(domUtils.remove(g);c&&domUtils.isEmptyInlineElement(c)&&(browser.safari?!(domUtils.getPosition(c,b)&domUtils.POSITION_CONTAINS):!c.contains(b));)g=c.parentNode,domUtils.remove(c),c=g; +}}catch(d){}}function f(a,b){var c;for(a=a[b];a&&domUtils.isFillChar(a);)c=a[b],domUtils.remove(a),a=c}var g,h=0,i=domUtils.fillChar,j=dom.Range=function(a){var b=this;b.startContainer=b.startOffset=b.endContainer=b.endOffset=null,b.document=a,b.collapsed=!0};j.prototype={cloneContents:function(){return this.collapsed?null:d(this,0)},deleteContents:function(){var a;return this.collapsed||d(this,1),browser.webkit&&(a=this.startContainer,3!=a.nodeType||a.nodeValue.length||(this.setStartBefore(a).collapse(!0),domUtils.remove(a))),this},extractContents:function(){return this.collapsed?null:d(this,2)},setStart:function(a,b){return c(!0,a,b,this)},setEnd:function(a,b){return c(!1,a,b,this)},setStartAfter:function(a){return this.setStart(a.parentNode,domUtils.getNodeIndex(a)+1)},setStartBefore:function(a){return this.setStart(a.parentNode,domUtils.getNodeIndex(a))},setEndAfter:function(a){return this.setEnd(a.parentNode,domUtils.getNodeIndex(a)+1)},setEndBefore:function(a){return this.setEnd(a.parentNode,domUtils.getNodeIndex(a))},setStartAtFirst:function(a){return this.setStart(a,0)},setStartAtLast:function(a){return this.setStart(a,3==a.nodeType?a.nodeValue.length:a.childNodes.length)},setEndAtFirst:function(a){return this.setEnd(a,0)},setEndAtLast:function(a){return this.setEnd(a,3==a.nodeType?a.nodeValue.length:a.childNodes.length)},selectNode:function(a){return this.setStartBefore(a).setEndAfter(a)},selectNodeContents:function(a){return this.setStart(a,0).setEndAtLast(a)},cloneRange:function(){var a=this;return new j(a.document).setStart(a.startContainer,a.startOffset).setEnd(a.endContainer,a.endOffset)},collapse:function(a){var b=this;return a?(b.endContainer=b.startContainer,b.endOffset=b.startOffset):(b.startContainer=b.endContainer,b.startOffset=b.endOffset),b.collapsed=!0,b},shrinkBoundary:function(a){function b(a){return 1==a.nodeType&&!domUtils.isBookmarkNode(a)&&!dtd.$empty[a.tagName]&&!dtd.$nonChild[a.tagName]}for(var c,d=this,e=d.collapsed;1==d.startContainer.nodeType&&(c=d.startContainer.childNodes[d.startOffset])&&b(c);)d.setStart(c,0);if(e)return d.collapse(!0);if(!a)for(;1==d.endContainer.nodeType&&d.endOffset>0&&(c=d.endContainer.childNodes[d.endOffset-1])&&b(c);)d.setEnd(c,c.childNodes.length);return d},getCommonAncestor:function(a,c){var d=this,e=d.startContainer,f=d.endContainer;return e===f?a&&b(this)&&(e=e.childNodes[d.startOffset],1==e.nodeType)?e:c&&3==e.nodeType?e.parentNode:e:domUtils.getCommonAncestor(e,f)},trimBoundary:function(a){this.txtToElmBoundary();var b=this.startContainer,c=this.startOffset,d=this.collapsed,e=this.endContainer;if(3==b.nodeType){if(0==c)this.setStartBefore(b);else if(c>=b.nodeValue.length)this.setStartAfter(b);else{var f=domUtils.split(b,c);b===e?this.setEnd(f,this.endOffset-c):b.parentNode===e&&(this.endOffset+=1),this.setStartBefore(f)}if(d)return this.collapse(!0)}return a||(c=this.endOffset,e=this.endContainer,3==e.nodeType&&(0==c?this.setEndBefore(e):(c=c.nodeValue.length&&a["set"+b.replace(/(\w)/,function(a){return a.toUpperCase()})+"After"](c):a["set"+b.replace(/(\w)/,function(a){return a.toUpperCase()})+"Before"](c))}return!a&&this.collapsed||(b(this,"start"),b(this,"end")),this},insertNode:function(a){var b=a,c=1;11==a.nodeType&&(b=a.firstChild,c=a.childNodes.length),this.trimBoundary(!0);var d=this.startContainer,e=this.startOffset,f=d.childNodes[e];return f?d.insertBefore(a,f):d.appendChild(a),b.parentNode===this.endContainer&&(this.endOffset=this.endOffset+c),this.setStartBefore(b)},setCursor:function(a,b){return this.collapse(!a).select(b)},createBookmark:function(a,b){var c,d=this.document.createElement("span");return d.style.cssText="display:none;line-height:0px;",d.appendChild(this.document.createTextNode("‍")),d.id="_baidu_bookmark_start_"+(b?"":h++),this.collapsed||(c=d.cloneNode(!0),c.id="_baidu_bookmark_end_"+(b?"":h++)),this.insertNode(d),c&&this.collapse().insertNode(c).setEndBefore(c),this.setStartAfter(d),{start:a?d.id:d,end:c?a?c.id:c:null,id:a}},moveToBookmark:function(a){var b=a.id?this.document.getElementById(a.start):a.start,c=a.end&&a.id?this.document.getElementById(a.end):a.end;return this.setStartBefore(b),domUtils.remove(b),c?(this.setEndBefore(c),domUtils.remove(c)):this.collapse(!0),this},enlarge:function(a,b){var c,d,e=domUtils.isBody,f=this.document.createTextNode("");if(a){for(d=this.startContainer,1==d.nodeType?d.childNodes[this.startOffset]?c=d=d.childNodes[this.startOffset]:(d.appendChild(f),c=d=f):c=d;;){if(domUtils.isBlockElm(d)){for(d=c;(c=d.previousSibling)&&!domUtils.isBlockElm(c);)d=c;this.setStartBefore(d);break}c=d,d=d.parentNode}for(d=this.endContainer,1==d.nodeType?((c=d.childNodes[this.endOffset])?d.insertBefore(f,c):d.appendChild(f),c=d=f):c=d;;){if(domUtils.isBlockElm(d)){for(d=c;(c=d.nextSibling)&&!domUtils.isBlockElm(c);)d=c;this.setEndAfter(d);break}c=d,d=d.parentNode}f.parentNode===this.endContainer&&this.endOffset--,domUtils.remove(f)}if(!this.collapsed){for(;!(0!=this.startOffset||b&&b(this.startContainer)||e(this.startContainer));)this.setStartBefore(this.startContainer);for(;!(this.endOffset!=(1==this.endContainer.nodeType?this.endContainer.childNodes.length:this.endContainer.nodeValue.length)||b&&b(this.endContainer)||e(this.endContainer));)this.setEndAfter(this.endContainer)}return this},enlargeToBlockElm:function(a){for(;!domUtils.isBlockElm(this.startContainer);)this.setStartBefore(this.startContainer);if(!a)for(;!domUtils.isBlockElm(this.endContainer);)this.setEndAfter(this.endContainer);return this},adjustmentBoundary:function(){if(!this.collapsed){for(;!domUtils.isBody(this.startContainer)&&this.startOffset==this.startContainer[3==this.startContainer.nodeType?"nodeValue":"childNodes"].length&&this.startContainer[3==this.startContainer.nodeType?"nodeValue":"childNodes"].length;)this.setStartAfter(this.startContainer);for(;!domUtils.isBody(this.endContainer)&&!this.endOffset&&this.endContainer[3==this.endContainer.nodeType?"nodeValue":"childNodes"].length;)this.setEndBefore(this.endContainer)}return this},applyInlineStyle:function(a,b,c){if(this.collapsed)return this;this.trimBoundary().enlarge(!1,function(a){return 1==a.nodeType&&domUtils.isBlockElm(a)}).adjustmentBoundary();for(var d,e,f=this.createBookmark(),g=f.end,h=function(a){return 1==a.nodeType?"br"!=a.tagName.toLowerCase():!domUtils.isWhitespace(a)},i=domUtils.getNextDomNode(f.start,!1,h),j=this.cloneRange();i&&domUtils.getPosition(i,g)&domUtils.POSITION_PRECEDING;)if(3==i.nodeType||dtd[a][i.tagName]){for(j.setStartBefore(i),d=i;d&&(3==d.nodeType||dtd[a][d.tagName])&&d!==g;)e=d,d=domUtils.getNextDomNode(d,1==d.nodeType,null,function(b){return dtd[a][b.tagName]});var k,l=j.setEndAfter(e).extractContents();if(c&&c.length>0){var m,n;n=m=c[0].cloneNode(!1);for(var o,p=1;o=c[p++];)m.appendChild(o.cloneNode(!1)),m=m.firstChild;k=m}else k=j.document.createElement(a);b&&domUtils.setAttributes(k,b),k.appendChild(l),j.insertNode(c?n:k);var q;if("span"==a&&b.style&&/text\-decoration/.test(b.style)&&(q=domUtils.findParentByTagName(k,"a",!0))?(domUtils.setAttributes(q,b),domUtils.remove(k,!0),k=q):(domUtils.mergeSibling(k),domUtils.clearEmptySibling(k)),domUtils.mergeChild(k,b),i=domUtils.getNextDomNode(k,!1,h),domUtils.mergeToParent(k),d===g)break}else i=domUtils.getNextDomNode(i,!0,h);return this.moveToBookmark(f)},removeInlineStyle:function(a){if(this.collapsed)return this;a=utils.isArray(a)?a:[a],this.shrinkBoundary().adjustmentBoundary();for(var b=this.startContainer,c=this.endContainer;;){if(1==b.nodeType){if(utils.indexOf(a,b.tagName.toLowerCase())>-1)break;if("body"==b.tagName.toLowerCase()){b=null;break}}b=b.parentNode}for(;;){if(1==c.nodeType){if(utils.indexOf(a,c.tagName.toLowerCase())>-1)break;if("body"==c.tagName.toLowerCase()){c=null;break}}c=c.parentNode}var d,e,f=this.createBookmark();b&&(e=this.cloneRange().setEndBefore(f.start).setStartBefore(b),d=e.extractContents(),e.insertNode(d),domUtils.clearEmptySibling(b,!0),b.parentNode.insertBefore(f.start,b)),c&&(e=this.cloneRange().setStartAfter(f.end).setEndAfter(c),d=e.extractContents(),e.insertNode(d),domUtils.clearEmptySibling(c,!1,!0),c.parentNode.insertBefore(f.end,c.nextSibling));for(var g,h=domUtils.getNextDomNode(f.start,!1,function(a){return 1==a.nodeType});h&&h!==f.end;)g=domUtils.getNextDomNode(h,!0,function(a){return 1==a.nodeType}),utils.indexOf(a,h.tagName.toLowerCase())>-1&&domUtils.remove(h,!0),h=g;return this.moveToBookmark(f)},getClosedNode:function(){var a;if(!this.collapsed){var c=this.cloneRange().adjustmentBoundary().shrinkBoundary();if(b(c)){var d=c.startContainer.childNodes[c.startOffset];d&&1==d.nodeType&&(dtd.$empty[d.tagName]||dtd.$nonChild[d.tagName])&&(a=d)}}return a},select:browser.ie?function(a,b){var c;this.collapsed||this.shrinkBoundary();var d=this.getClosedNode();if(d&&!b){try{c=this.document.body.createControlRange(),c.addElement(d),c.select()}catch(h){}return this}var j,k=this.createBookmark(),l=k.start;if(c=this.document.body.createTextRange(),c.moveToElementText(l),c.moveStart("character",1),this.collapsed){if(!a&&3!=this.startContainer.nodeType){var m=this.document.createTextNode(i),n=this.document.createElement("span");n.appendChild(this.document.createTextNode(i)),l.parentNode.insertBefore(n,l),l.parentNode.insertBefore(m,l),e(this.document,m),g=m,f(n,"previousSibling"),f(l,"nextSibling"),c.moveStart("character",-1),c.collapse(!0)}}else{var o=this.document.body.createTextRange();j=k.end,o.moveToElementText(j),c.setEndPoint("EndToEnd",o)}this.moveToBookmark(k),n&&domUtils.remove(n);try{c.select()}catch(h){}return this}:function(a){function b(a){function b(b,c,d){3==b.nodeType&&b.nodeValue.length0)j=k-1;else{if(!(l<0))return{container:d,offset:c(e)};i=k+1}}if(k==-1){if(h.moveToElementText(d),h.setEndPoint("StartToStart",a),f=h.text.replace(/(\r\n|\r)/g,"\n").length,g=d.childNodes,!f)return e=g[g.length-1],{container:e,offset:e.nodeValue.length};for(var m=g.length;f>0;)f-=g[--m].nodeValue.length;return{container:g[m],offset:-f}}if(h.collapse(l>0),h.setEndPoint(l>0?"StartToStart":"EndToStart",a),f=h.text.replace(/(\r\n|\r)/g,"\n").length,!f)return dtd.$empty[e.tagName]||dtd.$nonChild[e.tagName]?{container:d,offset:c(e)+(l>0?0:1)}:{container:e,offset:l>0?0:e.childNodes.length};for(;f>0;)try{var n=e;e=e[l>0?"previousSibling":"nextSibling"],f-=e.nodeValue.length}catch(o){return{container:d,offset:c(n)}}return{container:e,offset:l>0?-f:e.nodeValue.length+f}}function b(b,c){if(b.item)c.selectNode(b.item(0));else{var d=a(b,!0);c.setStart(d.container,d.offset),0!=b.compareEndPoints("StartToEnd",b)&&(d=a(b,!1),c.setEnd(d.container,d.offset))}return c}function c(a){var b;try{b=a.getNative().createRange()}catch(c){return null}var d=b.item?b.item(0):b.parentElement();return(d.ownerDocument||d)===a.document?b:null}var d=dom.Selection=function(a){var b,d=this;d.document=a,browser.ie9below&&(b=domUtils.getWindow(a).frameElement,domUtils.on(b,"beforedeactivate",function(){d._bakIERange=d.getIERange()}),domUtils.on(b,"activate",function(){try{!c(d)&&d._bakIERange&&d._bakIERange.select()}catch(a){}d._bakIERange=null})),b=a=null};d.prototype={rangeInBody:function(a,b){var c=browser.ie9below||b?a.item?a.item():a.parentElement():a.startContainer;return c===this.document.body||domUtils.inDoc(c,this.document)},getNative:function(){var a=this.document;try{return a?browser.ie9below?a.selection:domUtils.getWindow(a).getSelection():null}catch(b){return null}},getIERange:function(){var a=c(this);return!a&&this._bakIERange?this._bakIERange:a},cache:function(){this.clear(),this._cachedRange=this.getRange(),this._cachedStartElement=this.getStart(),this._cachedStartElementPath=this.getStartElementPath()},getStartElementPath:function(){if(this._cachedStartElementPath)return this._cachedStartElementPath;var a=this.getStart();return a?domUtils.findParents(a,!0,null,!0):[]},clear:function(){this._cachedStartElementPath=this._cachedRange=this._cachedStartElement=null},isFocus:function(){try{if(browser.ie9below){var a=c(this);return!(!a||!this.rangeInBody(a))}return!!this.getNative().rangeCount}catch(b){return!1}},getRange:function(){function a(a){for(var b=c.document.body.firstChild,d=a.collapsed;b&&b.firstChild;)a.setStart(b,0),b=b.firstChild;a.startContainer||a.setStart(c.document.body,0),d&&a.collapse(!0)}var c=this;if(null!=c._cachedRange)return this._cachedRange;var d=new baidu.editor.dom.Range(c.document);if(browser.ie9below){var e=c.getIERange();if(e)try{b(e,d)}catch(f){a(d)}else a(d)}else{var g=c.getNative();if(g&&g.rangeCount){var h=g.getRangeAt(0),i=g.getRangeAt(g.rangeCount-1);d.setStart(h.startContainer,h.startOffset).setEnd(i.endContainer,i.endOffset),d.collapsed&&domUtils.isBody(d.startContainer)&&!d.startOffset&&a(d)}else{if(this._bakRange&&domUtils.inDoc(this._bakRange.startContainer,this.document))return this._bakRange;a(d)}}return this._bakRange=d},getStart:function(){if(this._cachedStartElement)return this._cachedStartElement;var a,b,c,d,e=browser.ie9below?this.getIERange():this.getRange();if(browser.ie9below){if(!e)return this.document.body.firstChild;if(e.item)return e.item(0);for(a=e.duplicate(),a.text.length>0&&a.moveStart("character",1),a.collapse(1),b=a.parentElement(),d=c=e.parentElement();c=c.parentNode;)if(c==b){b=d;break}}else if(e.shrinkBoundary(),b=e.startContainer,1==b.nodeType&&b.hasChildNodes()&&(b=b.childNodes[Math.min(b.childNodes.length-1,e.startOffset)]),3==b.nodeType)return b.parentNode;return b},getText:function(){var a,b;return this.isFocus()&&(a=this.getNative())?(b=browser.ie9below?a.createRange():a.getRangeAt(0),browser.ie9below?b.text:b.toString()):""},clearRange:function(){this.getNative()[browser.ie9below?"empty":"removeAllRanges"]()}}}(),function(){function a(a,b){var c;if(b.textarea)if(utils.isString(b.textarea)){for(var d,e=0,f=domUtils.getElementsByTagName(a,"textarea");d=f[e++];)if(d.id=="ueditor_textarea_"+b.options.textarea){c=d;break}}else c=b.textarea;c||(a.appendChild(c=domUtils.createElement(document,"textarea",{name:b.options.textarea,id:"ueditor_textarea_"+b.options.textarea,style:"display:none"})),b.textarea=c),!c.getAttribute("name")&&c.setAttribute("name",b.options.textarea),c.value=b.hasContents()?b.options.allHtmlEnabled?b.getAllHtml():b.getContent(null,null,!0):""}function b(a){for(var b in a)return b}function c(a){a.langIsReady=!0,a.fireEvent("langReady")}var d,e=0,f=UE.Editor=function(a){var d=this;d.uid=e++,EventBase.call(d),d.commands={},d.options=utils.extend(utils.clone(a||{}),UEDITOR_CONFIG,!0),d.shortcutkeys={},d.inputRules=[],d.outputRules=[],d.setOpt(f.defaultOptions(d)),d.loadServerConfig(),utils.isEmptyObject(UE.I18N)?utils.loadFile(document,{src:d.options.langPath+d.options.lang+"/"+d.options.lang+".js",tag:"script",type:"text/javascript",defer:"defer"},function(){UE.plugin.load(d),c(d)}):(d.options.lang=b(UE.I18N),UE.plugin.load(d),c(d)),UE.instants["ueditorInstant"+d.uid]=d};f.prototype={registerCommand:function(a,b){this.commands[a]=b},ready:function(a){var b=this;a&&(b.isReady?a.apply(b):b.addListener("ready",a))},setOpt:function(a,b){var c={};utils.isString(a)?c[a]=b:c=a,utils.extend(this.options,c,!0)},getOpt:function(a){return this.options[a]},destroy:function(){var a=this;a.fireEvent("destroy");var b=a.container.parentNode,c=a.textarea;c?c.style.display="":(c=document.createElement("textarea"),b.parentNode.insertBefore(c,b)),c.style.width=a.iframe.offsetWidth+"px",c.style.height=a.iframe.offsetHeight+"px",c.value=a.getContent(),c.id=a.key,b.innerHTML="",domUtils.remove(b);var d=a.key;for(var e in a)a.hasOwnProperty(e)&&delete this[e];UE.delEditor(d)},render:function(a){var b=this,c=b.options,d=function(b){return parseInt(domUtils.getComputedStyle(a,b))};if(utils.isString(a)&&(a=document.getElementById(a)),a){c.initialFrameWidth?c.minFrameWidth=c.initialFrameWidth:c.minFrameWidth=c.initialFrameWidth=a.offsetWidth,c.initialFrameHeight?c.minFrameHeight=c.initialFrameHeight:c.initialFrameHeight=c.minFrameHeight=a.offsetHeight,a.style.width=/%$/.test(c.initialFrameWidth)?"100%":c.initialFrameWidth-d("padding-left")-d("padding-right")+"px",a.style.height=/%$/.test(c.initialFrameHeight)?"100%":c.initialFrameHeight-d("padding-top")-d("padding-bottom")+"px",a.style.zIndex=c.zIndex;var e=(ie&&browser.version<9?"":"")+""+(c.iframeCssUrl?"":"")+(c.initialStyle?"":"")+"";a.appendChild(domUtils.createElement(document,"iframe",{id:"ueditor_"+b.uid,width:"100%",height:"100%",frameborder:"0",src:"javascript:void(function(){document.open();"+(c.customDomain&&document.domain!=location.hostname?'document.domain="'+document.domain+'";':"")+'document.write("'+e+'");document.close();}())'})),a.style.overflow="hidden",setTimeout(function(){/%$/.test(c.initialFrameWidth)&&(c.minFrameWidth=c.initialFrameWidth=a.offsetWidth),/%$/.test(c.initialFrameHeight)&&(c.minFrameHeight=c.initialFrameHeight=a.offsetHeight,a.style.height=c.initialFrameHeight+"px")})}},_setup:function(b){var c=this,d=c.options;ie?(b.body.disabled=!0,b.body.contentEditable=!0,b.body.disabled=!1):b.body.contentEditable=!0,b.body.spellcheck=!1,c.document=b,c.window=b.defaultView||b.parentWindow,c.iframe=c.window.frameElement,c.body=b.body,c.selection=new dom.Selection(b);var e;browser.gecko&&(e=this.selection.getNative())&&e.removeAllRanges(),this._initEvents();for(var f=this.iframe.parentNode;!domUtils.isBody(f);f=f.parentNode)if("FORM"==f.tagName){c.form=f,c.options.autoSyncData?domUtils.on(c.window,"blur",function(){a(f,c)}):domUtils.on(f,"submit",function(){a(this,c)});break}if(d.initialContent)if(d.autoClearinitialContent){var g=c.execCommand;c.execCommand=function(){return c.fireEvent("firstBeforeExecCommand"),g.apply(c,arguments)},this._setDefaultContent(d.initialContent)}else this.setContent(d.initialContent,!1,!0);domUtils.isEmptyNode(c.body)&&(c.body.innerHTML="

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

    "),d.focus&&setTimeout(function(){c.focus(c.options.focusInEnd),!c.options.autoClearinitialContent&&c._selectionChange()},0),c.container||(c.container=this.iframe.parentNode),d.fullscreen&&c.ui&&c.ui.setFullScreen(!0);try{c.document.execCommand("2D-position",!1,!1)}catch(h){}try{c.document.execCommand("enableInlineTableEditing",!1,!1)}catch(h){}try{c.document.execCommand("enableObjectResizing",!1,!1)}catch(h){}c._bindshortcutKeys(),c.isReady=1,c.fireEvent("ready"),d.onready&&d.onready.call(c),browser.ie9below||domUtils.on(c.window,["blur","focus"],function(a){if("blur"==a.type){c._bakRange=c.selection.getRange();try{c._bakNativeRange=c.selection.getNative().getRangeAt(0),c.selection.getNative().removeAllRanges()}catch(a){c._bakNativeRange=null}}else try{c._bakRange&&c._bakRange.select()}catch(a){}}),browser.gecko&&browser.version<=10902&&(c.body.contentEditable=!1,setTimeout(function(){c.body.contentEditable=!0},100),setInterval(function(){c.body.style.height=c.iframe.offsetHeight-20+"px"},100)),!d.isShow&&c.setHide(),d.readonly&&c.setDisabled()},sync:function(b){var c=this,d=b?document.getElementById(b):domUtils.findParent(c.iframe.parentNode,function(a){return"FORM"==a.tagName},!0);d&&a(d,c)},setHeight:function(a,b){a!==parseInt(this.iframe.parentNode.style.height)&&(this.iframe.parentNode.style.height=a+"px"),!b&&(this.options.minFrameHeight=this.options.initialFrameHeight=a),this.body.style.height=a+"px",!b&&this.trigger("setHeight")},addshortcutkey:function(a,b){var c={};b?c[a]=b:c=a,utils.extend(this.shortcutkeys,c)},_bindshortcutKeys:function(){var a=this,b=this.shortcutkeys;a.addListener("keydown",function(c,d){var e=d.keyCode||d.which;for(var f in b)for(var g,h=b[f].split(","),i=0;g=h[i++];){g=g.split(":");var j=g[0],k=g[1];(/^(ctrl)(\+shift)?\+(\d+)$/.test(j.toLowerCase())||/^(\d+)$/.test(j))&&(("ctrl"==RegExp.$1?d.ctrlKey||d.metaKey:0)&&(""!=RegExp.$2?d[RegExp.$2.slice(1)+"Key"]:1)&&e==RegExp.$3||e==RegExp.$1)&&(a.queryCommandState(f,k)!=-1&&a.execCommand(f,k),domUtils.preventDefault(d))}})},getContent:function(a,b,c,d,e){var f=this;if(a&&utils.isFunction(a)&&(b=a,a=""),b?!b():!this.hasContents())return"";f.fireEvent("beforegetcontent");var g=UE.htmlparser(f.body.innerHTML,d);return f.filterOutputRule(g),f.fireEvent("aftergetcontent",a,g),g.toHtml(e)},getAllHtml:function(){var a=this,b=[];if(a.fireEvent("getAllHtml",b),browser.ie&&browser.version>8){var c="";utils.each(a.document.styleSheets,function(a){c+=a.href?'':""}),utils.each(a.document.getElementsByTagName("script"),function(a){c+=a.outerHTML})}return""+(a.options.charset?'':"")+(c||a.document.getElementsByTagName("head")[0].innerHTML)+b.join("\n")+""+a.getContent(null,null,!0)+""},getPlainTxt:function(){var a=new RegExp(domUtils.fillChar,"g"),b=this.body.innerHTML.replace(/[\n\r]/g,"");return b=b.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:""}),b.replace(a,"").replace(/\u00a0/g," ").replace(/ /g," ")},getContentTxt:function(){var a=new RegExp(domUtils.fillChar,"g");return this.body[browser.ie?"innerText":"textContent"].replace(a,"").replace(/\u00a0/g," ")},setContent:function(b,c,d){function e(a){return"DIV"==a.tagName&&a.getAttribute("cdata_tag")}var f=this;f.fireEvent("beforesetcontent",b);var g=UE.htmlparser(b);if(f.filterInputRule(g),b=g.toHtml(),f.body.innerHTML=(c?f.body.innerHTML:"")+b,"p"==f.options.enterTag){var h,i=this.body.firstChild;if(!i||1==i.nodeType&&(dtd.$cdata[i.tagName]||e(i)||domUtils.isCustomeNode(i))&&i===this.body.lastChild)this.body.innerHTML="

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

    "+this.body.innerHTML;else for(var j=f.document.createElement("p");i;){for(;i&&(3==i.nodeType||1==i.nodeType&&dtd.p[i.tagName]&&!dtd.$cdata[i.tagName]);)h=i.nextSibling,j.appendChild(i),i=h;if(j.firstChild){if(!i){f.body.appendChild(j);break}i.parentNode.insertBefore(j,i),j=f.document.createElement("p")}i=i.nextSibling}}f.fireEvent("aftersetcontent"),f.fireEvent("contentchange"),!d&&f._selectionChange(),f._bakRange=f._bakIERange=f._bakNativeRange=null;var k;browser.gecko&&(k=this.selection.getNative())&&k.removeAllRanges(),f.options.autoSyncData&&f.form&&a(f.form,f)},focus:function(a){try{var b=this,c=b.selection.getRange();if(a){var d=b.body.lastChild;d&&1==d.nodeType&&!dtd.$empty[d.tagName]&&(domUtils.isEmptyBlock(d)?c.setStartAtFirst(d):c.setStartAtLast(d),c.collapse(!0)),c.setCursor(!0)}else{if(!c.collapsed&&domUtils.isBody(c.startContainer)&&0==c.startOffset){var d=b.body.firstChild;d&&1==d.nodeType&&!dtd.$empty[d.tagName]&&c.setStartAtFirst(d).collapse(!0)}c.select(!0)}this.fireEvent("focus selectionchange")}catch(e){}},isFocus:function(){return this.selection.isFocus()},blur:function(){var a=this.selection.getNative();if(a.empty&&browser.ie){var b=document.body.createTextRange();b.moveToElementText(document.body),b.collapse(!0),b.select(),a.empty()}else a.removeAllRanges()},_initEvents:function(){var a=this,b=a.document,c=a.window;a._proxyDomEvent=utils.bind(a._proxyDomEvent,a),domUtils.on(b,["click","contextmenu","mousedown","keydown","keyup","keypress","mouseup","mouseover","mouseout","selectstart"],a._proxyDomEvent),domUtils.on(c,["focus","blur"],a._proxyDomEvent),domUtils.on(a.body,"drop",function(b){browser.gecko&&b.stopPropagation&&b.stopPropagation(),a.fireEvent("contentchange")}),domUtils.on(b,["mouseup","keydown"],function(b){"keydown"==b.type&&(b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)||2!=b.button&&a._selectionChange(250,b)})},_proxyDomEvent:function(a){return this.fireEvent("before"+a.type.replace(/^on/,"").toLowerCase())!==!1&&(this.fireEvent(a.type.replace(/^on/,""),a)!==!1&&this.fireEvent("after"+a.type.replace(/^on/,"").toLowerCase()))},_selectionChange:function(a,b){var c,e,f=this,g=!1;if(browser.ie&&browser.version<9&&b&&"mouseup"==b.type){var h=this.selection.getRange();h.collapsed||(g=!0,c=b.clientX,e=b.clientY)}clearTimeout(d),d=setTimeout(function(){if(f.selection&&f.selection.getNative()){var a;if(g&&"None"==f.selection.getNative().type){a=f.document.body.createTextRange();try{a.moveToPoint(c,e)}catch(d){a=null}}var h;a&&(h=f.selection.getIERange,f.selection.getIERange=function(){return a}),f.selection.cache(),h&&(f.selection.getIERange=h),f.selection._cachedRange&&f.selection._cachedStartElement&&(f.fireEvent("beforeselectionchange"),f.fireEvent("selectionchange",!!b),f.fireEvent("afterselectionchange"),f.selection.clear())}},a||50)},_callCmdFn:function(a,b){var c,d,e=b[0].toLowerCase();return c=this.commands[e]||UE.commands[e],d=c&&c[a],c&&d||"queryCommandState"!=a?d?d.apply(this,b):void 0:0},execCommand:function(a){a=a.toLowerCase();var b,c=this,d=c.commands[a]||UE.commands[a];return d&&d.execCommand?(d.notNeedUndo||c.__hasEnterExecCommand?(b=this._callCmdFn("execCommand",arguments),!c.__hasEnterExecCommand&&!d.ignoreContentChange&&!c._ignoreContentChange&&c.fireEvent("contentchange")):(c.__hasEnterExecCommand=!0,c.queryCommandState.apply(c,arguments)!=-1&&(c.fireEvent("saveScene"),c.fireEvent.apply(c,["beforeexeccommand",a].concat(arguments)),b=this._callCmdFn("execCommand",arguments),c.fireEvent.apply(c,["afterexeccommand",a].concat(arguments)),c.fireEvent("saveScene")),c.__hasEnterExecCommand=!1),!c.__hasEnterExecCommand&&!d.ignoreContentChange&&!c._ignoreContentChange&&c._selectionChange(),b):null},queryCommandState:function(a){return this._callCmdFn("queryCommandState",arguments)},queryCommandValue:function(a){return this._callCmdFn("queryCommandValue",arguments)},hasContents:function(a){if(a)for(var b,c=0;b=a[c++];)if(this.document.getElementsByTagName(b).length>0)return!0;if(!domUtils.isEmptyBlock(this.body))return!0;for(a=["div"],c=0;b=a[c++];)for(var d,e=domUtils.getElementsByTagName(this.document,b),f=0;d=e[f++];)if(domUtils.isCustomeNode(d))return!0;return!1},reset:function(){this.fireEvent("reset")},setEnabled:function(){var a,b=this;if("false"==b.body.contentEditable){b.body.contentEditable=!0,a=b.selection.getRange();try{a.moveToBookmark(b.lastBk),delete b.lastBk}catch(c){a.setStartAtFirst(b.body).collapse(!0)}a.select(!0),b.bkqueryCommandState&&(b.queryCommandState=b.bkqueryCommandState,delete b.bkqueryCommandState),b.bkqueryCommandValue&&(b.queryCommandValue=b.bkqueryCommandValue,delete b.bkqueryCommandValue),b.fireEvent("selectionchange")}},enable:function(){return this.setEnabled()},setDisabled:function(a){var b=this;a=a?utils.isArray(a)?a:[a]:[],"true"==b.body.contentEditable&&(b.lastBk||(b.lastBk=b.selection.getRange().createBookmark(!0)),b.body.contentEditable=!1,b.bkqueryCommandState=b.queryCommandState,b.bkqueryCommandValue=b.queryCommandValue,b.queryCommandState=function(c){return utils.indexOf(a,c)!=-1?b.bkqueryCommandState.apply(b,arguments):-1},b.queryCommandValue=function(c){return utils.indexOf(a,c)!=-1?b.bkqueryCommandValue.apply(b,arguments):null},b.fireEvent("selectionchange"))},disable:function(a){return this.setDisabled(a)},_setDefaultContent:function(){function a(){var b=this;b.document.getElementById("initContent")&&(b.body.innerHTML="

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

    ",b.removeListener("firstBeforeExecCommand focus",a),setTimeout(function(){b.focus(),b._selectionChange()},0))}return function(b){var c=this;c.body.innerHTML='

    '+b+"

    ",c.addListener("firstBeforeExecCommand focus",a)}}(),setShow:function(){var a=this,b=a.selection.getRange();if("none"==a.container.style.display){try{b.moveToBookmark(a.lastBk),delete a.lastBk}catch(c){b.setStartAtFirst(a.body).collapse(!0)}setTimeout(function(){b.select(!0)},100),a.container.style.display=""}},show:function(){return this.setShow(); +},setHide:function(){var a=this;a.lastBk||(a.lastBk=a.selection.getRange().createBookmark(!0)),a.container.style.display="none"},hide:function(){return this.setHide()},getLang:function(a){if(!this.options)return"";var b=UE.I18N[this.options.lang];if(!b)throw Error("not import language file");a=(a||"").split(".");for(var c,d=0;(c=a[d++])&&(b=b[c],b););return b},getContentLength:function(a,b){var c=this.getContent(!1,!1,!0).length;if(a){b=(b||[]).concat(["hr","img","iframe"]),c=this.getContentTxt().replace(/[\t\r\n]+/g,"").length;for(var d,e=0;d=b[e++];)c+=this.document.getElementsByTagName(d).length}return c},addInputRule:function(a){this.inputRules.push(a)},filterInputRule:function(a){for(var b,c=0;b=this.inputRules[c++];)b.call(this,a)},addOutputRule:function(a){this.outputRules.push(a)},filterOutputRule:function(a){for(var b,c=0;b=this.outputRules[c++];)b.call(this,a)},getActionUrl:function(a){var b=this.getOpt(a)||a,c=this.getOpt("imageUrl"),d=this.getOpt("serverUrl");return!d&&c&&(d=c.replace(/^(.*[\/]).+([\.].+)$/,"$1controller$2")),d?(d=d+(d.indexOf("?")==-1?"?":"&")+"action="+(b||""),utils.formatUrl(d)):""}},utils.inherits(f,EventBase)}(),UE.Editor.defaultOptions=function(a){var b=a.options.UEDITOR_HOME_URL;return{isShow:!0,initialContent:"",initialStyle:"",autoClearinitialContent:!1,iframeCssUrl:b+"themes/iframe.css",textarea:"editorValue",focus:!1,focusInEnd:!0,autoClearEmptyNode:!0,fullscreen:!1,readonly:!1,zIndex:999,imagePopup:!0,enterTag:"p",customDomain:!1,lang:"zh-cn",langPath:b+"lang/",theme:"default",themePath:b+"themes/",allHtmlEnabled:!1,scaleEnabled:!1,tableNativeEditInFF:!1,autoSyncData:!0,fileNameFormat:"{time}{rand:6}"}},function(){UE.Editor.prototype.loadServerConfig=function(){function showErrorMsg(a){console&&console.error(a)}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);me._serverConfigLoaded=!1,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),me.fireEvent("serverConfigLoaded"),me._serverConfigLoaded=!0}catch(e){showErrorMsg(me.getLang("loadconfigFormatError"))}},onerror:function(){showErrorMsg(me.getLang("loadconfigHttpError"))}})}catch(e){showErrorMsg(me.getLang("loadconfigError"))}})},UE.Editor.prototype.isServerConfigLoaded=function(){var a=this;return a._serverConfigLoaded||!1},UE.Editor.prototype.afterConfigReady=function(a){if(a&&utils.isFunction(a)){var b=this,c=function(){a.apply(b,arguments),b.removeListener("serverConfigLoaded",c)};b.isServerConfigLoaded()?a.call(b,"serverConfigLoaded"):b.addListener("serverConfigLoaded",c)}}}(),UE.ajax=function(){function a(a){var b=[];for(var c in a)if("method"!=c&&"timeout"!=c&&"async"!=c&&"dataType"!=c&&"callback"!=c&&void 0!=a[c]&&null!=a[c])if("function"!=(typeof a[c]).toLowerCase()&&"object"!=(typeof a[c]).toLowerCase())b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));else if(utils.isArray(a[c]))for(var d=0;d/gi,"").replace(/]*>[\s\S]*?.<\/v:shape>/gi,function(a){if(browser.opera)return"";try{if(/Bitmap/i.test(a))return"";var c=a.match(/width:([ \d.]*p[tx])/i)[1],d=a.match(/height:([ \d.]*p[tx])/i)[1],e=a.match(/src=\s*"([^"]*)"/i)[1];return''}catch(f){return""}}).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(a,b,c,d){return"class"==b&&"MsoListParagraph"==d?a:""}).replace(/<(font|span)[^>]*>(\s*)<\/\1>/gi,function(a,b,c){return c.replace(/[\t\r\n ]+/g," ")}).replace(/(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi,function(a,c,d,e){for(var f,g=[],h=e.replace(/^\s+|\s+$/,"").replace(/'/g,"'").replace(/"/gi,"'").replace(/[\d.]+(cm|pt)/g,function(a){return utils.transUnitToPx(a)}).split(/;\s*/g),i=0;f=h[i];i++){var j,k,l=f.split(":");if(2==l.length){if(j=l[0].toLowerCase(),k=l[1].toLowerCase(),/^(background)\w*/.test(j)&&0==k.replace(/(initial|\s)/g,"").length||/^(margin)\w*/.test(j)&&/^0\w+$/.test(k))continue;switch(j){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":case"mso-height":case"mso-width":case"mso-vertical-align-alt":/1&&(a(h,j,!0),b(h,j)),c(k,h,i,j);break;case"text":d(g,h);break;case"element":e(g,h,i,j);break;case"comment":f(g,h,i)}return h}function d(a,b){"pre"==a.parentNode.tagName?b.push(a.data):b.push(l[a.parentNode.tagName]?utils.html(a.data):a.data.replace(/[ ]{2}/g,"  "))}function e(d,e,f,g){var h="";if(d.attrs){h=[];var i=d.attrs;for(var j in i)h.push(j+(void 0!==i[j]?'="'+(k[j]?utils.html(i[j]).replace(/["]/g,function(a){return"""}):utils.unhtml(i[j]))+'"':""));h=h.join(" ")}if(e.push("<"+d.tagName+(h?" "+h:"")+(dtd.$empty[d.tagName]?"/":"")+">"),f&&!dtd.$inlineWithA[d.tagName]&&"pre"!=d.tagName&&d.children&&d.children.length&&(g=a(e,g,!0),b(e,g)),d.children&&d.children.length)for(var l,m=0;l=d.children[m++];)f&&"element"==l.type&&!dtd.$inlineWithA[l.tagName]&&m>1&&(a(e,g),b(e,g)),c(l,e,f,g);dtd.$empty[d.tagName]||(f&&!dtd.$inlineWithA[d.tagName]&&"pre"!=d.tagName&&d.children&&d.children.length&&(g=a(e,g),b(e,g)),e.push(""))}function f(a,b){b.push("")}function g(a,b){var c;if("element"==a.type&&a.getAttr("id")==b)return a;if(a.children&&a.children.length)for(var d,e=0;d=a.children[e++];)if(c=g(d,b))return c}function h(a,b,c){if("element"==a.type&&a.tagName==b&&c.push(a),a.children&&a.children.length)for(var d,e=0;d=a.children[e++];)h(d,b,c)}function i(a,b){if(a.children&&a.children.length)for(var c,d=0;c=a.children[d];)i(c,b),c.parentNode&&(c.children&&c.children.length&&b(c),c.parentNode&&d++);else b(a)}var j=UE.uNode=function(a){this.type=a.type,this.data=a.data,this.tagName=a.tagName,this.parentNode=a.parentNode,this.attrs=a.attrs||{},this.children=a.children},k={href:1,src:1,_src:1,_href:1,cdata_data:1},l={style:1,script:1},m=" ",n="\n";j.createElement=function(a){return/[<>]/.test(a)?UE.htmlparser(a).children[0]:new j({type:"element",children:[],tagName:a})},j.createText=function(a,b){return new UE.uNode({type:"text",data:b?a:utils.unhtml(a||"")})},j.prototype={toHtml:function(a){var b=[];return c(this,b,a,0),b.join("")},innerHTML:function(a){if("element"!=this.type||dtd.$empty[this.tagName])return this;if(utils.isString(a)){if(this.children)for(var b,c=0;b=this.children[c++];)b.parentNode=null;this.children=[];for(var b,d=UE.htmlparser(a),c=0;b=d.children[c++];)this.children.push(b),b.parentNode=this;return this}var d=new UE.uNode({type:"root",children:this.children});return d.toHtml()},innerText:function(a,b){if("element"!=this.type||dtd.$empty[this.tagName])return this;if(a){if(this.children)for(var c,d=0;c=this.children[d++];)c.parentNode=null;return this.children=[],this.appendChild(j.createText(a,b)),this}return this.toHtml().replace(/<[^>]+>/g,"")},getData:function(){return"element"==this.type?"":this.data},firstChild:function(){return this.children?this.children[0]:null},lastChild:function(){return this.children?this.children[this.children.length-1]:null},previousSibling:function(){for(var a,b=this.parentNode,c=0;a=b.children[c];c++)if(a===this)return 0==c?null:b.children[c-1]},nextSibling:function(){for(var a,b=this.parentNode,c=0;a=b.children[c++];)if(a===this)return b.children[c]},replaceChild:function(a,b){if(this.children){a.parentNode&&a.parentNode.removeChild(a);for(var c,d=0;c=this.children[d];d++)if(c===b)return this.children.splice(d,1,a),b.parentNode=null,a.parentNode=this,a}},appendChild:function(a){if("root"==this.type||"element"==this.type&&!dtd.$empty[this.tagName]){this.children||(this.children=[]),a.parentNode&&a.parentNode.removeChild(a);for(var b,c=0;b=this.children[c];c++)if(b===a){this.children.splice(c,1);break}return this.children.push(a),a.parentNode=this,a}},insertBefore:function(a,b){if(this.children){a.parentNode&&a.parentNode.removeChild(a);for(var c,d=0;c=this.children[d];d++)if(c===b)return this.children.splice(d,0,a),a.parentNode=this,a}},insertAfter:function(a,b){if(this.children){a.parentNode&&a.parentNode.removeChild(a);for(var c,d=0;c=this.children[d];d++)if(c===b)return this.children.splice(d+1,0,a),a.parentNode=this,a}},removeChild:function(a,b){if(this.children)for(var c,d=0;c=this.children[d];d++)if(c===a){if(this.children.splice(d,1),c.parentNode=null,b&&c.children&&c.children.length)for(var e,f=0;e=c.children[f];f++)this.children.splice(d+f,0,e),e.parentNode=this;return c}},getAttr:function(a){return this.attrs&&this.attrs[a.toLowerCase()]},setAttr:function(a,b){if(!a)return void delete this.attrs;if(this.attrs||(this.attrs={}),utils.isObject(a))for(var c in a)a[c]?this.attrs[c.toLowerCase()]=a[c]:delete this.attrs[c];else b?this.attrs[a.toLowerCase()]=b:delete this.attrs[a]},getIndex:function(){for(var a,b=this.parentNode,c=0;a=b.children[c];c++)if(a===this)return c;return-1},getNodeById:function(a){var b;if(this.children&&this.children.length)for(var c,d=0;c=this.children[d++];)if(b=g(c,a))return b},getNodesByTagName:function(a){a=utils.trim(a).replace(/[ ]{2,}/g," ").split(" ");var b=[],c=this;return utils.each(a,function(a){if(c.children&&c.children.length)for(var d,e=0;d=c.children[e++];)h(d,a,b)}),b},getStyle:function(a){var b=this.getAttr("style");if(!b)return"";var c=new RegExp("(^|;)\\s*"+a+":([^;]+)","i"),d=b.match(c);return d&&d[0]?d[2]:""},setStyle:function(a,b){function c(a,b){var c=new RegExp("(^|;)\\s*"+a+":([^;]+;?)","gi");d=d.replace(c,"$1"),b&&(d=a+":"+utils.unhtml(b)+";"+d)}var d=this.getAttr("style");if(d||(d=""),utils.isObject(a))for(var e in a)c(e,a[e]);else c(a,b);this.setAttr("style",utils.trim(d))},traversal:function(a){return this.children&&this.children.length&&i(this,a),this}}}();var htmlparser=UE.htmlparser=function(a,b){function c(a,b){if(m[a.tagName]){var c=k.createElement(m[a.tagName]);a.appendChild(c),c.appendChild(k.createText(b)),a=c}else a.appendChild(k.createText(b))}function d(a,b,c){var e;if(e=l[b]){for(var f,h=a;"root"!=h.type;){if(utils.isArray(e)?utils.indexOf(e,h.tagName)!=-1:e==h.tagName){a=h,f=!0;break}h=h.parentNode}f||(a=d(a,utils.isArray(e)?e[0]:e))}var i=new k({parentNode:a,type:"element",tagName:b.toLowerCase(),children:dtd.$empty[b]?null:[]});if(c){for(var m,n={};m=g.exec(c);)n[m[1].toLowerCase()]=j[m[1].toLowerCase()]?m[2]||m[3]||m[4]:utils.unhtml(m[2]||m[3]||m[4]);i.attrs=n}return a.children.push(i),dtd.$empty[b]?a:i}function e(a,b){a.children.push(new k({type:"comment",data:b,parentNode:a}))}var f=/<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\s\/<>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g,g=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,h={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};a=a.replace(new RegExp(domUtils.fillChar,"g"),""),b||(a=a.replace(new RegExp("[\\r\\t\\n"+(b?"":" ")+"]*]*)>[\\r\\t\\n"+(b?"":" ")+"]*","g"),function(a,c){return c&&h[c.toLowerCase()]?a.replace(/(^[\n\r]+)|([\n\r]+$)/g,""):a.replace(new RegExp("^[\\r\\n"+(b?"":" ")+"]+"),"").replace(new RegExp("[\\r\\n"+(b?"":" ")+"]+$"),"")}));for(var i,j={href:1,src:1},k=UE.uNode,l={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"},m={ol:"li",ul:"li"},n=0,o=0,p=new k({type:"root",children:[]}),q=p;i=f.exec(a);){n=i.index;try{if(n>o&&c(q,a.slice(o,n)),i[3])dtd.$cdata[q.tagName]?c(q,i[0]):q=d(q,i[3].toLowerCase(),i[4]);else if(i[1]){if("root"!=q.type)if(dtd.$cdata[q.tagName]&&!dtd.$cdata[i[1]])c(q,i[0]);else{for(var r=q;"element"==q.type&&q.tagName!=i[1].toLowerCase();)if(q=q.parentNode,"root"==q.type)throw q=r,"break";q=q.parentNode}}else i[2]&&e(q,i[2])}catch(s){}o=f.lastIndex}return o");break;case"div":if(b.getAttr("cdata_tag"))break;if(d=b.getAttr("class"),d&&/^line number\d+/.test(d))break;if(!e)break;for(var f,g=UE.uNode.createElement("p");f=b.firstChild();)"text"!=f.type&&UE.dom.dtd.$block[f.tagName]?g.firstChild()?(b.parentNode.insertBefore(g,b),g=UE.uNode.createElement("p")):b.parentNode.insertBefore(f,b):g.appendChild(f);g.firstChild()&&b.parentNode.insertBefore(g,b),b.parentNode.removeChild(b);break;case"dl":b.tagName="ul";break;case"dt":case"dd":b.tagName="li";break;case"li":var h=b.getAttr("class");h&&/list\-/.test(h)||b.setAttr();var i=b.getNodesByTagName("ol ul");UE.utils.each(i,function(a){b.parentNode.insertAfter(a,b)});break;case"td":case"th":case"caption":b.children&&b.children.length||b.appendChild(browser.ie11below?UE.uNode.createText(" "):UE.uNode.createElement("br"));break;case"table":a.options.disabledTableInTable&&c(b)&&(b.parentNode.insertBefore(UE.uNode.createText(b.innerText()),b),b.parentNode.removeChild(b))}}})}),a.addOutputRule(function(b){var c;b.traversal(function(b){if("element"==b.type){if(a.options.autoClearEmptyNode&&dtd.$inline[b.tagName]&&!dtd.$empty[b.tagName]&&(!b.attrs||utils.isEmptyObject(b.attrs)))return void(b.firstChild()?"span"!=b.tagName||b.attrs&&!utils.isEmptyObject(b.attrs)||b.parentNode.removeChild(b,!0):b.parentNode.removeChild(b));switch(b.tagName){case"div":(c=b.getAttr("cdata_tag"))&&(b.tagName=c,b.appendChild(UE.uNode.createText(b.getAttr("cdata_data"))),b.setAttr({cdata_tag:"",cdata_data:"",_ue_custom_node_:""}));break;case"a":(c=b.getAttr("_href"))&&b.setAttr({href:utils.html(c),_href:""});break;case"span":c=b.getAttr("id"),c&&/^_baidu_bookmark_/i.test(c)&&b.parentNode.removeChild(b);break;case"img":(c=b.getAttr("_src"))&&b.setAttr({src:b.getAttr("_src"),_src:""})}}})})},UE.commands.inserthtml={execCommand:function(a,b,c){var d,e,f=this;if(b&&f.fireEvent("beforeinserthtml",b)!==!0){if(d=f.selection.getRange(),e=d.document.createElement("div"),e.style.display="inline",!c){var g=UE.htmlparser(b);f.options.filterRules&&UE.filterNode(g,f.options.filterRules),f.filterInputRule(g),b=g.toHtml()}if(e.innerHTML=utils.trim(b),!d.collapsed){var h=d.startContainer;if(domUtils.isFillChar(h)&&d.setStartBefore(h),h=d.endContainer,domUtils.isFillChar(h)&&d.setEndAfter(h),d.txtToElmBoundary(),d.endContainer&&1==d.endContainer.nodeType&&(h=d.endContainer.childNodes[d.endOffset],h&&domUtils.isBr(h)&&d.setEndAfter(h)),0==d.startOffset&&(h=d.startContainer,domUtils.isBoundaryNode(h,"firstChild")&&(h=d.endContainer,d.endOffset==(3==h.nodeType?h.nodeValue.length:h.childNodes.length)&&domUtils.isBoundaryNode(h,"lastChild")&&(f.body.innerHTML="

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

    ",d.setStart(f.body.firstChild,0).collapse(!0)))),!d.collapsed&&d.deleteContents(),1==d.startContainer.nodeType){var i,j=d.startContainer.childNodes[d.startOffset];if(j&&domUtils.isBlockElm(j)&&(i=j.previousSibling)&&domUtils.isBlockElm(i)){for(d.setEnd(i,i.childNodes.length).collapse();j.firstChild;)i.appendChild(j.firstChild);domUtils.remove(j)}}}var j,k,i,l,m,n=0;d.inFillChar()&&(j=d.startContainer,domUtils.isFillChar(j)?(d.setStartBefore(j).collapse(!0),domUtils.remove(j)):domUtils.isFillChar(j,!0)&&(j.nodeValue=j.nodeValue.replace(fillCharReg,""),d.startOffset--,d.collapsed&&d.collapse(!0)));var o=domUtils.findParentByTagName(d.startContainer,"li",!0);if(o){for(var p,q;j=e.firstChild;){for(;j&&(3==j.nodeType||!domUtils.isBlockElm(j)||"HR"==j.tagName);)p=j.nextSibling,d.insertNode(j).collapse(),q=j,j=p;if(j)if(/^(ol|ul)$/i.test(j.tagName)){for(;j.firstChild;)q=j.firstChild,domUtils.insertAfter(o,j.firstChild),o=o.nextSibling;domUtils.remove(j)}else{var r;p=j.nextSibling,r=f.document.createElement("li"),domUtils.insertAfter(o,r),r.appendChild(j),q=j,j=p,o=r}}o=domUtils.findParentByTagName(d.startContainer,"li",!0),domUtils.isEmptyBlock(o)&&domUtils.remove(o),q&&d.setStartAfter(q).collapse(!0).select(!0)}else{for(;j=e.firstChild;){if(n){for(var s=f.document.createElement("p");j&&(3==j.nodeType||!dtd.$block[j.tagName]);)m=j.nextSibling,s.appendChild(j),j=m;s.firstChild&&(j=s)}if(d.insertNode(j),m=j.nextSibling,!n&&j.nodeType==domUtils.NODE_ELEMENT&&domUtils.isBlockElm(j)&&(k=domUtils.findParent(j,function(a){return domUtils.isBlockElm(a)}),k&&"body"!=k.tagName.toLowerCase()&&(!dtd[k.tagName][j.nodeName]||j.parentNode!==k))){if(dtd[k.tagName][j.nodeName])for(l=j.parentNode;l!==k;)i=l,l=l.parentNode;else i=k;domUtils.breakParent(j,i||l);var i=j.previousSibling;domUtils.trimWhiteTextNode(i),i.childNodes.length||domUtils.remove(i),!browser.ie&&(p=j.nextSibling)&&domUtils.isBlockElm(p)&&p.lastChild&&!domUtils.isBr(p.lastChild)&&p.appendChild(f.document.createElement("br")),n=1}var p=j.nextSibling;if(!e.firstChild&&p&&domUtils.isBlockElm(p)){d.setStart(p,0).collapse(!0);break}d.setEndAfter(j).collapse()}if(j=d.startContainer,m&&domUtils.isBr(m)&&domUtils.remove(m),domUtils.isBlockElm(j)&&domUtils.isEmptyNode(j))if(m=j.nextSibling)domUtils.remove(j),1==m.nodeType&&dtd.$block[m.tagName]&&d.setStart(m,0).collapse(!0).shrinkBoundary();else try{j.innerHTML=browser.ie?domUtils.fillChar:"
    "}catch(t){d.setStartBefore(j),domUtils.remove(j)}try{d.select(!0)}catch(t){}}setTimeout(function(){d=f.selection.getRange(),d.scrollToView(f.autoHeightEnabled,f.autoHeightEnabled?domUtils.getXY(f.iframe).y:0),f.fireEvent("afterinserthtml",b)},200)}}},UE.plugins.autotypeset=function(){function a(a,b){return a&&3!=a.nodeType?domUtils.isBr(a)?1:a&&a.parentNode&&l[a.tagName.toLowerCase()]?g&&g.contains(a)||a.getAttribute("pagebreak")?0:b?!domUtils.isEmptyBlock(a):domUtils.isEmptyBlock(a,new RegExp("[\\s"+domUtils.fillChar+"]","g")):void 0:0}function b(a){a.style.cssText||(domUtils.removeAttributes(a,["style"]),"span"==a.tagName.toLowerCase()&&domUtils.hasNoAttributes(a)&&domUtils.remove(a,!0))}function c(c,f){var h,l=this;if(f){if(!i.pasteFilter)return;h=l.document.createElement("div"),h.innerHTML=f.html}else h=l.document.body;for(var m,n=domUtils.getElementsByTagName(h,"*"),o=0;m=n[o++];)if(l.fireEvent("excludeNodeinautotype",m)!==!0){if(i.clearFontSize&&m.style.fontSize&&(domUtils.removeStyle(m,"font-size"),b(m)),i.clearFontFamily&&m.style.fontFamily&&(domUtils.removeStyle(m,"font-family"),b(m)),a(m)){if(i.mergeEmptyline)for(var p,q=m.nextSibling,r=domUtils.isBr(m);a(q)&&(p=q,q=p.nextSibling,!r||q&&(!q||domUtils.isBr(q)));)domUtils.remove(p);if(i.removeEmptyline&&domUtils.inDoc(m,h)&&!k[m.parentNode.tagName.toLowerCase()]){if(domUtils.isBr(m)&&(q=m.nextSibling,q&&!domUtils.isBr(q)))continue;domUtils.remove(m);continue}}if(a(m,!0)&&"SPAN"!=m.tagName&&(i.indent&&(m.style.textIndent=i.indentValue),i.textAlign&&(m.style.textAlign=i.textAlign)),i.removeClass&&m.className&&!j[m.className.toLowerCase()]){if(g&&g.contains(m))continue;domUtils.removeAttributes(m,["class"])}if(i.imageBlockLine&&"img"==m.tagName.toLowerCase()&&!m.getAttribute("emotion"))if(f){var s=m;switch(i.imageBlockLine){case"left":case"right":case"none":for(var p,t,q,u=s.parentNode;dtd.$inline[u.tagName]||"A"==u.tagName;)u=u.parentNode;if(p=u,"P"==p.tagName&&"center"==domUtils.getStyle(p,"text-align")&&!domUtils.isBody(p)&&1==domUtils.getChildCount(p,function(a){return!domUtils.isBr(a)&&!domUtils.isWhitespace(a)}))if(t=p.previousSibling,q=p.nextSibling,t&&q&&1==t.nodeType&&1==q.nodeType&&t.tagName==q.tagName&&domUtils.isBlockElm(t)){for(t.appendChild(p.firstChild);q.firstChild;)t.appendChild(q.firstChild);domUtils.remove(p),domUtils.remove(q)}else domUtils.setStyle(p,"text-align","");domUtils.setStyle(s,"float",i.imageBlockLine);break;case"center":if("center"!=l.queryCommandValue("imagefloat")){for(u=s.parentNode,domUtils.setStyle(s,"float","none"),p=s;u&&1==domUtils.getChildCount(u,function(a){return!domUtils.isBr(a)&&!domUtils.isWhitespace(a)})&&(dtd.$inline[u.tagName]||"A"==u.tagName);)p=u,u=u.parentNode;var v=l.document.createElement("p");domUtils.setAttributes(v,{style:"text-align:center"}),p.parentNode.insertBefore(v,p),v.appendChild(p),domUtils.setStyle(p,"float","")}}}else{var w=l.selection.getRange();w.selectNode(m).select(),l.execCommand("imagefloat",i.imageBlockLine)}i.removeEmptyNode&&i.removeTagNames[m.tagName.toLowerCase()]&&domUtils.hasNoAttributes(m)&&domUtils.isEmptyBlock(m)&&domUtils.remove(m)}if(i.tobdc){var x=UE.htmlparser(h.innerHTML);x.traversal(function(a){"text"==a.type&&(a.data=e(a.data))}),h.innerHTML=x.toHtml()}if(i.bdc2sb){var x=UE.htmlparser(h.innerHTML);x.traversal(function(a){"text"==a.type&&(a.data=d(a.data))}),h.innerHTML=x.toHtml()}f&&(f.html=h.innerHTML)}function d(a){for(var b="",c=0;c=65281&&d<=65373?String.fromCharCode(a.charCodeAt(c)-65248):12288==d?String.fromCharCode(a.charCodeAt(c)-12288+32):a.charAt(c)}return b}function e(a){a=utils.html(a);for(var b="",c=0;c0?e.substring(e.indexOf(d.options.imagePath),e.length-1).replace(/"|\(|\)/gi,""):"none"!=e?e.replace(/url\("?|"?\)/gi,""):"";var g=' ",b.push(g)},aftersetcontent:function(){0==c&&b()}},inputRule:function(d){c=!1,utils.each(d.getNodesByTagName("p"),function(d){var e=d.getAttr("data-background");e&&(c=!0,b(a(e)),d.parentNode.removeChild(d))})},outputRule:function(a){var b=this,c=(utils.cssRule(e,b.document)||"").replace(/[\n\r]+/g,"").match(f);c&&a.appendChild(UE.uNode.createElement('


    '))},commands:{background:{execCommand:function(a,c){b(c)},queryCommandValue:function(){var b=this,c=(utils.cssRule(e,b.document)||"").replace(/[\n\r]+/g,"").match(f);return c?a(c[1]):null},notNeedUndo:!0}}}}),UE.commands.imagefloat={execCommand:function(a,b){var c=this,d=c.selection.getRange();if(!d.collapsed){var e=d.getClosedNode();if(e&&"IMG"==e.tagName)switch(b){case"left":case"right":case"none":for(var f,g,h,i=e.parentNode;dtd.$inline[i.tagName]||"A"==i.tagName;)i=i.parentNode;if(f=i,"P"==f.tagName&&"center"==domUtils.getStyle(f,"text-align")){if(!domUtils.isBody(f)&&1==domUtils.getChildCount(f,function(a){return!domUtils.isBr(a)&&!domUtils.isWhitespace(a)}))if(g=f.previousSibling,h=f.nextSibling,g&&h&&1==g.nodeType&&1==h.nodeType&&g.tagName==h.tagName&&domUtils.isBlockElm(g)){for(g.appendChild(f.firstChild);h.firstChild;)g.appendChild(h.firstChild);domUtils.remove(f),domUtils.remove(h)}else domUtils.setStyle(f,"text-align","");d.selectNode(e).select()}domUtils.setStyle(e,"float","none"==b?"":b),"none"==b&&domUtils.removeAttributes(e,"align");break;case"center":if("center"!=c.queryCommandValue("imagefloat")){for(i=e.parentNode,domUtils.setStyle(e,"float",""),domUtils.removeAttributes(e,"align"),f=e;i&&1==domUtils.getChildCount(i,function(a){return!domUtils.isBr(a)&&!domUtils.isWhitespace(a)})&&(dtd.$inline[i.tagName]||"A"==i.tagName);)f=i,i=i.parentNode;d.setStartBefore(f).setCursor(!1),i=c.document.createElement("div"),i.appendChild(f),domUtils.setStyle(f,"float",""),c.execCommand("insertHtml",'

    '+i.innerHTML+"

    "),f=c.document.getElementById("_img_parent_tmp"),f.removeAttribute("id"),f=f.firstChild,d.selectNode(f).select(),h=f.parentNode.nextSibling,h&&domUtils.isEmptyNode(h)&&domUtils.remove(h)}}}},queryCommandValue:function(){var a,b,c=this.selection.getRange();return c.collapsed?"none":(a=c.getClosedNode(),a&&1==a.nodeType&&"IMG"==a.tagName?(b=domUtils.getComputedStyle(a,"float")||a.getAttribute("align"),"none"==b&&(b="center"==domUtils.getComputedStyle(a.parentNode,"text-align")?"center":b),{left:1,right:1,center:1}[b]?b:"none"):"none")},queryCommandState:function(){var a,b=this.selection.getRange();return b.collapsed?-1:(a=b.getClosedNode(),a&&1==a.nodeType&&"IMG"==a.tagName?0:-1)}},UE.commands.insertimage={execCommand:function(a,b){function c(a){utils.each("width,height,border,hspace,vspace".split(","),function(b){a[b]&&(a[b]=parseInt(a[b],10)||0)}),utils.each("src,_src".split(","),function(b){a[b]&&(a[b]=utils.unhtmlForUrl(a[b]))}),utils.each("title,alt".split(","),function(b){a[b]&&(a[b]=utils.unhtml(a[b]))})}if(b=utils.isArray(b)?b:[b],b.length){var d=this,e=d.selection.getRange(),f=e.getClosedNode();if(d.fireEvent("beforeinsertimage",b)!==!0){if(!f||!/img/i.test(f.tagName)||"edui-faked-video"==f.className&&f.className.indexOf("edui-upload-video")==-1||f.getAttribute("word_img")){var g,h=[],i="";if(g=b[0],1==b.length)c(g),i=''+g.alt+'","center"==g.floatStyle&&(i='

    '+i+"

    "),h.push(i);else for(var j=0;g=b[j++];)c(g),i="

    ",h.push(i);d.execCommand("insertHtml",h.join(""))}else{var k=b.shift(),l=k.floatStyle;delete k.floatStyle,domUtils.setAttributes(f,k),d.execCommand("imagefloat",l),b.length>0&&(e.setStartAfter(f).setCursor(!1,!0),d.execCommand("insertimage",b))}d.fireEvent("afterinsertimage",b)}}}},UE.plugins.justify=function(){var a=domUtils.isBlockElm,b={left:1,right:1,center:1,justify:1},c=function(b,c){var d=b.createBookmark(),e=function(a){return 1==a.nodeType?"br"!=a.tagName.toLowerCase()&&!domUtils.isBookmarkNode(a):!domUtils.isWhitespace(a)};b.enlarge(!0);for(var f,g=b.createBookmark(),h=domUtils.getNextDomNode(g.start,!1,e),i=b.cloneRange();h&&!(domUtils.getPosition(h,g.end)&domUtils.POSITION_FOLLOWING);)if(3!=h.nodeType&&a(h))h=domUtils.getNextDomNode(h,!0,e);else{for(i.setStartBefore(h);h&&h!==g.end&&!a(h);)f=h,h=domUtils.getNextDomNode(h,!1,null,function(b){return!a(b)});i.setEndAfter(f);var j=i.getCommonAncestor();if(!domUtils.isBody(j)&&a(j))domUtils.setStyles(j,utils.isString(c)?{"text-align":c}:c),h=j;else{var k=b.document.createElement("p");domUtils.setStyles(k,utils.isString(c)?{"text-align":c}:c);var l=i.extractContents();k.appendChild(l),i.insertNode(k),h=k}h=domUtils.getNextDomNode(h,!1,e)}return b.moveToBookmark(g).moveToBookmark(d)};UE.commands.justify={execCommand:function(a,b){var d,e=this.selection.getRange();return e.collapsed&&(d=this.document.createTextNode("p"),e.insertNode(d)),c(e,b),d&&(e.setStartBefore(d).collapse(!0),domUtils.remove(d)),e.select(),!0},queryCommandValue:function(){var a=this.selection.getStart(),c=domUtils.getComputedStyle(a,"text-align");return b[c]?c:"left"},queryCommandState:function(){var a=this.selection.getStart(),b=a&&domUtils.findParentByTagName(a,["td","th","caption"],!0);return b?-1:0}}},UE.plugins.font=function(){function a(a){for(var b;(b=a.parentNode)&&"SPAN"==b.tagName&&1==domUtils.getChildCount(b,function(a){return!domUtils.isBookmarkNode(a)&&!domUtils.isBr(a)});)b.style.cssText+=a.style.cssText,domUtils.remove(a,!0),a=b}function b(a,b,c){if(g[b]&&(a.adjustmentBoundary(),!a.collapsed&&1==a.startContainer.nodeType)){var d=a.startContainer.childNodes[a.startOffset];if(d&&domUtils.isTagNode(d,"span")){var e=a.createBookmark();utils.each(domUtils.getElementsByTagName(d,"span"),function(a){a.parentNode&&!domUtils.isBookmarkNode(a)&&("backcolor"==b&&domUtils.getComputedStyle(a,"background-color").toLowerCase()===c||(domUtils.removeStyle(a,g[b]),0==a.style.cssText.replace(/^\s+$/,"").length&&domUtils.remove(a,!0)))}),a.moveToBookmark(e)}}}function c(c,d,e){var f,g=c.collapsed,h=c.createBookmark();if(g)for(f=h.start.parentNode;dtd.$inline[f.tagName];)f=f.parentNode;else f=domUtils.getCommonAncestor(h.start,h.end);utils.each(domUtils.getElementsByTagName(f,"span"),function(b){if(b.parentNode&&!domUtils.isBookmarkNode(b)){if(/\s*border\s*:\s*none;?\s*/i.test(b.style.cssText))return void(/^\s*border\s*:\s*none;?\s*$/.test(b.style.cssText)?domUtils.remove(b,!0):domUtils.removeStyle(b,"border"));if(/border/i.test(b.style.cssText)&&"SPAN"==b.parentNode.tagName&&/border/i.test(b.parentNode.style.cssText)&&(b.style.cssText=b.style.cssText.replace(/border[^:]*:[^;]+;?/gi,"")),"fontborder"!=d||"none"!=e)for(var c=b.nextSibling;c&&1==c.nodeType&&"SPAN"==c.tagName;)if(domUtils.isBookmarkNode(c)&&"fontborder"==d)b.appendChild(c),c=b.nextSibling;else{if(c.style.cssText==b.style.cssText&&(domUtils.moveChild(c,b),domUtils.remove(c)),b.nextSibling===c)break;c=b.nextSibling}if(a(b),browser.ie&&browser.version>8){var f=domUtils.findParent(b,function(a){return"SPAN"==a.tagName&&/background-color/.test(a.style.cssText)});f&&!/background-color/.test(b.style.cssText)&&(b.style.backgroundColor=f.style.backgroundColor)}}}),c.moveToBookmark(h),b(c,d,e)}var d=this,e={forecolor:"color",backcolor:"background-color",fontsize:"font-size",fontfamily:"font-family",underline:"text-decoration",strikethrough:"text-decoration",fontborder:"border"},f={underline:1,strikethrough:1,fontborder:1},g={forecolor:"color",backcolor:"background-color",fontsize:"font-size",fontfamily:"font-family"};d.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]}),d.addInputRule(function(a){utils.each(a.getNodesByTagName("u s del font strike"),function(a){if("font"==a.tagName){var b=[];for(var c in a.attrs)switch(c){case"size":b.push("font-size:"+({1:"10",2:"12",3:"16",4:"18",5:"24",6:"32",7:"48"}[a.attrs[c]]||a.attrs[c])+"px");break;case"color":b.push("color:"+a.attrs[c]);break;case"face":b.push("font-family:"+a.attrs[c]);break;case"style":b.push(a.attrs[c])}a.attrs={style:b.join(";")}}else{var d="u"==a.tagName?"underline":"line-through";a.attrs={style:(a.getAttr("style")||"")+"text-decoration:"+d+";"}}a.tagName="span"})});for(var h in e)!function(a,b){UE.commands[a]={execCommand:function(d,e){e=e||(this.queryCommandState(d)?"none":"underline"==d?"underline":"fontborder"==d?"1px solid #000":"line-through");var g,h=this,i=this.selection.getRange();if("default"==e)i.collapsed&&(g=h.document.createTextNode("font"),i.insertNode(g).select()),h.execCommand("removeFormat","span,a",b),g&&(i.setStartBefore(g).collapse(!0),domUtils.remove(g)),c(i,d,e),i.select();else if(i.collapsed){var j=domUtils.findParentByTagName(i.startContainer,"span",!0);if(g=h.document.createTextNode("font"),!j||j.children.length||j[browser.ie?"innerText":"textContent"].replace(fillCharReg,"").length){if(i.insertNode(g),i.selectNode(g).select(),j=i.document.createElement("span"),f[a]){if(domUtils.findParentByTagName(g,"a",!0))return i.setStartBefore(g).setCursor(),void domUtils.remove(g);h.execCommand("removeFormat","span,a",b)}if(j.style.cssText=b+":"+e,g.parentNode.insertBefore(j,g),!browser.ie||browser.ie&&9==browser.version)for(var k=j.parentNode;!domUtils.isBlockElm(k);)"SPAN"==k.tagName&&(j.style.cssText=k.style.cssText+";"+j.style.cssText),k=k.parentNode;opera?setTimeout(function(){i.setStart(j,0).collapse(!0),c(i,d,e),i.select()}):(i.setStart(j,0).collapse(!0),c(i,d,e),i.select())}else i.insertNode(g),f[a]&&(i.selectNode(g).select(),h.execCommand("removeFormat","span,a",b,null),j=domUtils.findParentByTagName(g,"span",!0),i.setStartBefore(g)),j&&(j.style.cssText+=";"+b+":"+e),i.collapse(!0).select();domUtils.remove(g)}else f[a]&&h.queryCommandValue(a)&&h.execCommand("removeFormat","span,a",b),i=h.selection.getRange(),i.applyInlineStyle("span",{style:b+":"+e}),c(i,d,e),i.select();return!0},queryCommandValue:function(a){var c=this.selection.getStart();if("underline"==a||"strikethrough"==a){for(var d,e=c;e&&!domUtils.isBlockElm(e)&&!domUtils.isBody(e);){if(1==e.nodeType&&(d=domUtils.getComputedStyle(e,b),"none"!=d))return d;e=e.parentNode}return"none"}if("fontborder"==a){for(var f,g=c;g&&dtd.$inline[g.tagName];){if((f=domUtils.getComputedStyle(g,"border"))&&/1px/.test(f)&&/solid/.test(f))return f;g=g.parentNode}return""}if("FontSize"==a){var h=domUtils.getComputedStyle(c,b),g=/^([\d\.]+)(\w+)$/.exec(h);return g?Math.floor(g[1])+g[2]:h}return domUtils.getComputedStyle(c,b)},queryCommandState:function(a){if(!f[a])return 0;var b=this.queryCommandValue(a);return"fontborder"==a?/1px/.test(b)&&/solid/.test(b):"underline"==a?/underline/.test(b):/line\-through/.test(b)}}}(h,e[h])},UE.plugins.link=function(){function a(a){var b=a.startContainer,c=a.endContainer;(b=domUtils.findParentByTagName(b,"a",!0))&&a.setStartBefore(b),(c=domUtils.findParentByTagName(c,"a",!0))&&a.setEndAfter(c)}function b(b,c,d){var e=b.cloneRange(),f=d.queryCommandValue("link");a(b=b.adjustmentBoundary());var g=b.startContainer;if(1==g.nodeType&&f&&(g=g.childNodes[b.startOffset],g&&1==g.nodeType&&"A"==g.tagName&&/^(?:https?|ftp|file)\s*:\s*\/\//.test(g[browser.ie?"innerText":"textContent"])&&(g[browser.ie?"innerText":"textContent"]=utils.html(c.textValue||c.href))),e.collapsed&&!f||(b.removeInlineStyle("a"),e=b.cloneRange()),e.collapsed){var h=b.document.createElement("a"),i="";c.textValue?(i=utils.html(c.textValue),delete c.textValue):i=utils.html(c.href),domUtils.setAttributes(h,c),g=domUtils.findParentByTagName(e.startContainer,"a",!0),g&&domUtils.isInNodeEndBoundary(e,g)&&b.setStartAfter(g).collapse(!0),h[browser.ie?"innerText":"textContent"]=i,b.insertNode(h).selectNode(h)}else b.applyInlineStyle("a",c)}UE.commands.unlink={execCommand:function(){var b,c=this.selection.getRange();c.collapsed&&!domUtils.findParentByTagName(c.startContainer,"a",!0)||(b=c.createBookmark(),a(c),c.removeInlineStyle("a").moveToBookmark(b).select())},queryCommandState:function(){return!this.highlight&&this.queryCommandValue("link")?0:-1}},UE.commands.link={execCommand:function(a,c){var d;c._href&&(c._href=utils.unhtml(c._href,/[<">]/g)),c.href&&(c.href=utils.unhtml(c.href,/[<">]/g)),c.textValue&&(c.textValue=utils.unhtml(c.textValue,/[<">]/g)),b(d=this.selection.getRange(),c,this),d.collapse().select(!0)},queryCommandValue:function(){var a,b=this.selection.getRange();if(!b.collapsed){b.shrinkBoundary();var c=3!=b.startContainer.nodeType&&b.startContainer.childNodes[b.startOffset]?b.startContainer.childNodes[b.startOffset]:b.startContainer,d=3==b.endContainer.nodeType||0==b.endOffset?b.endContainer:b.endContainer.childNodes[b.endOffset-1],e=b.getCommonAncestor();if(a=domUtils.findParentByTagName(e,"a",!0),!a&&1==e.nodeType)for(var f,g,h,i=e.getElementsByTagName("a"),j=0;h=i[j++];)if(f=domUtils.getPosition(h,c),g=domUtils.getPosition(h,d),(f&domUtils.POSITION_FOLLOWING||f&domUtils.POSITION_CONTAINS)&&(g&domUtils.POSITION_PRECEDING||g&domUtils.POSITION_CONTAINS)){a=h;break}return a}if(a=b.startContainer,a=1==a.nodeType?a:a.parentNode,a&&(a=domUtils.findParentByTagName(a,"a",!0))&&!domUtils.isInNodeEndBoundary(b,a))return a},queryCommandState:function(){var a=this.selection.getRange().getClosedNode(),b=a&&("edui-faked-video"==a.className||a.className.indexOf("edui-upload-video")!=-1);return b?-1:0}}},UE.plugins.insertframe=function(){function a(){b._iframe&&delete b._iframe}var b=this;b.addListener("selectionchange",function(){a()})},UE.commands.scrawl={queryCommandState:function(){return browser.ie&&browser.version<=8?-1:0}},UE.plugins.removeformat=function(){var a=this;a.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"}),a.commands.removeformat={execCommand:function(a,b,c,d,e){function f(a){if(3==a.nodeType||"span"!=a.tagName.toLowerCase())return 0;if(browser.ie){var b=a.attributes;if(b.length){for(var c=0,d=b.length;c
    "+this.getContent(null,null,!0)+"
    "),b.close()},notNeedUndo:1},UE.plugins.selectall=function(){var a=this;a.commands.selectall={execCommand:function(){var a=this,b=a.body,c=a.selection.getRange();c.selectNodeContents(b),domUtils.isEmptyBlock(b)&&(browser.opera&&b.firstChild&&1==b.firstChild.nodeType&&c.setStartAtFirst(b.firstChild),c.collapse(!0)),c.select(!0)},notNeedUndo:1},a.addshortcutkey({selectAll:"ctrl+65"})},UE.plugins.paragraph=function(){var a=this,b=domUtils.isBlockElm,c=["TD","LI","PRE"],d=function(a,d,e,f){var g,h=a.createBookmark(),i=function(a){return 1==a.nodeType?"br"!=a.tagName.toLowerCase()&&!domUtils.isBookmarkNode(a):!domUtils.isWhitespace(a)};a.enlarge(!0);for(var j,k=a.createBookmark(),l=domUtils.getNextDomNode(k.start,!1,i),m=a.cloneRange();l&&!(domUtils.getPosition(l,k.end)&domUtils.POSITION_FOLLOWING);)if(3!=l.nodeType&&b(l))l=domUtils.getNextDomNode(l,!0,i);else{for(m.setStartBefore(l);l&&l!==k.end&&!b(l);)j=l,l=domUtils.getNextDomNode(l,!1,null,function(a){return!b(a)});m.setEndAfter(j),g=a.document.createElement(d),e&&(domUtils.setAttributes(g,e),f&&"customstyle"==f&&e.style&&(g.style.cssText=e.style)),g.appendChild(m.extractContents()),domUtils.isEmptyNode(g)&&domUtils.fillChar(a.document,g),m.insertNode(g);var n=g.parentNode;b(n)&&!domUtils.isBody(g.parentNode)&&utils.indexOf(c,n.tagName)==-1&&(f&&"customstyle"==f||(n.getAttribute("dir")&&g.setAttribute("dir",n.getAttribute("dir")),n.style.cssText&&(g.style.cssText=n.style.cssText+";"+g.style.cssText),n.style.textAlign&&!g.style.textAlign&&(g.style.textAlign=n.style.textAlign),n.style.textIndent&&!g.style.textIndent&&(g.style.textIndent=n.style.textIndent),n.style.padding&&!g.style.padding&&(g.style.padding=n.style.padding)),e&&/h\d/i.test(n.tagName)&&!/h\d/i.test(g.tagName)?(domUtils.setAttributes(n,e),f&&"customstyle"==f&&e.style&&(n.style.cssText=e.style),domUtils.remove(g,!0),g=n):domUtils.remove(g.parentNode,!0)),l=utils.indexOf(c,n.tagName)!=-1?n:g,l=domUtils.getNextDomNode(l,!1,i)}return a.moveToBookmark(k).moveToBookmark(h)};a.setOpt("paragraph",{p:"",h1:"",h2:"",h3:"",h4:"",h5:"",h6:""}),a.commands.paragraph={execCommand:function(a,b,c,e){var f=this.selection.getRange();if(f.collapsed){var g=this.document.createTextNode("p");if(f.insertNode(g),browser.ie){var h=g.previousSibling;h&&domUtils.isWhitespace(h)&&domUtils.remove(h),h=g.nextSibling,h&&domUtils.isWhitespace(h)&&domUtils.remove(h)}}if(f=d(f,b,c,e),g&&(f.setStartBefore(g).collapse(!0),pN=g.parentNode,domUtils.remove(g),domUtils.isBlockElm(pN)&&domUtils.isEmptyNode(pN)&&domUtils.fillNode(this.document,pN)),browser.gecko&&f.collapsed&&1==f.startContainer.nodeType){var i=f.startContainer.childNodes[f.startOffset];i&&1==i.nodeType&&i.tagName.toLowerCase()==b&&f.setStart(i,0).collapse(!0)}return f.select(),!0},queryCommandValue:function(){var a=domUtils.filterNodeList(this.selection.getStartElementPath(),"p h1 h2 h3 h4 h5 h6");return a?a.tagName.toLowerCase():""}}},function(){var a=domUtils.isBlockElm,b=function(a){return domUtils.filterNodeList(a.selection.getStartElementPath(),function(a){return a&&1==a.nodeType&&a.getAttribute("dir")})},c=function(c,d,e){var f,g=function(a){return 1==a.nodeType?!domUtils.isBookmarkNode(a):!domUtils.isWhitespace(a)},h=b(d);if(h&&c.collapsed)return h.setAttribute("dir",e),c;f=c.createBookmark(),c.enlarge(!0);for(var i,j=c.createBookmark(),k=domUtils.getNextDomNode(j.start,!1,g),l=c.cloneRange();k&&!(domUtils.getPosition(k,j.end)&domUtils.POSITION_FOLLOWING);)if(3!=k.nodeType&&a(k))k=domUtils.getNextDomNode(k,!0,g);else{for(l.setStartBefore(k);k&&k!==j.end&&!a(k);)i=k,k=domUtils.getNextDomNode(k,!1,null,function(b){return!a(b)});l.setEndAfter(i);var m=l.getCommonAncestor();if(!domUtils.isBody(m)&&a(m))m.setAttribute("dir",e),k=m;else{var n=c.document.createElement("p");n.setAttribute("dir",e);var o=l.extractContents();n.appendChild(o),l.insertNode(n),k=n}k=domUtils.getNextDomNode(k,!1,g)}return c.moveToBookmark(j).moveToBookmark(f)};UE.commands.directionality={execCommand:function(a,b){var d=this.selection.getRange();if(d.collapsed){var e=this.document.createTextNode("d");d.insertNode(e)}return c(d,this,b),e&&(d.setStartBefore(e).collapse(!0),domUtils.remove(e)),d.select(),!0},queryCommandValue:function(){var a=b(this);return a?a.getAttribute("dir"):"ltr"}}}(),UE.plugins.horizontal=function(){var a=this;a.commands.horizontal={execCommand:function(a){var b=this;if(b.queryCommandState(a)!==-1){b.execCommand("insertHtml","
    ");var c=b.selection.getRange(),d=c.startContainer;if(1==d.nodeType&&!d.childNodes[c.startOffset]){var e;(e=d.childNodes[c.startOffset-1])&&1==e.nodeType&&"HR"==e.tagName&&("p"==b.options.enterTag?(e=b.document.createElement("p"),c.insertNode(e),c.setStart(e,0).setCursor()):(e=b.document.createElement("br"),c.insertNode(e),c.setStartBefore(e).setCursor()))}return!0}},queryCommandState:function(){return domUtils.filterNodeList(this.selection.getStartElementPath(),"table")?-1:0}},a.addListener("delkeydown",function(a,b){var c=this.selection.getRange();if(c.txtToElmBoundary(!0),domUtils.isStartInblock(c)){var d=c.startContainer,e=d.previousSibling;if(e&&domUtils.isTagNode(e,"hr"))return domUtils.remove(e),c.select(),domUtils.preventDefault(b),!0}})},UE.commands.time=UE.commands.date={execCommand:function(a,b){function c(a,b){var c=("0"+a.getHours()).slice(-2),d=("0"+a.getMinutes()).slice(-2),e=("0"+a.getSeconds()).slice(-2);return b=b||"hh:ii:ss",b.replace(/hh/gi,c).replace(/ii/gi,d).replace(/ss/gi,e)}function d(a,b){var c=("000"+a.getFullYear()).slice(-4),d=c.slice(-2),e=("0"+(a.getMonth()+1)).slice(-2),f=("0"+a.getDate()).slice(-2);return b=b||"yyyy-mm-dd",b.replace(/yyyy/gi,c).replace(/yy/gi,d).replace(/mm/gi,e).replace(/dd/gi,f)}var e=new Date;this.execCommand("insertHtml","time"==a?c(e,b):d(e,b))}},UE.plugins.rowspacing=function(){var a=this;a.setOpt({rowspacingtop:["5","10","15","20","25"],rowspacingbottom:["5","10","15","20","25"]}),a.commands.rowspacing={execCommand:function(a,b,c){return this.execCommand("paragraph","p",{style:"margin-"+c+":"+b+"px"}),!0},queryCommandValue:function(a,b){var c,d=domUtils.filterNodeList(this.selection.getStartElementPath(),function(a){return domUtils.isBlockElm(a)});return d?(c=domUtils.getComputedStyle(d,"margin-"+b).replace(/[^\d]/g,""),c?c:0):0}}},UE.plugins.lineheight=function(){var a=this;a.setOpt({lineheight:["1","1.5","1.75","2","3","4","5"]}),a.commands.lineheight={execCommand:function(a,b){return this.execCommand("paragraph","p",{style:"line-height:"+("1"==b?"normal":b+"em")}),!0},queryCommandValue:function(){var a=domUtils.filterNodeList(this.selection.getStartElementPath(),function(a){return domUtils.isBlockElm(a)});if(a){var b=domUtils.getComputedStyle(a,"line-height");return"normal"==b?1:b.replace(/[^\d.]*/gi,"")}}}},UE.plugins.insertcode=function(){var a=this;a.ready(function(){utils.cssRule("pre","pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}",a.document)}),a.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"}),a.commands.insertcode={execCommand:function(a,b){var c=this,d=c.selection.getRange(),e=domUtils.findParentByTagName(d.startContainer,"pre",!0);if(e)e.className="brush:"+b+";toolbar:false;";else{var f="";if(d.collapsed)f=browser.ie&&browser.ie11below?browser.version<=8?" ":"":"
    ";else{var g=d.extractContents(),h=c.document.createElement("div");h.appendChild(g),utils.each(UE.filterNode(UE.htmlparser(h.innerHTML.replace(/[\r\t]/g,"")),c.options.filterTxtRules).children,function(a){if(browser.ie&&browser.ie11below&&browser.version>8)"element"==a.type?"br"==a.tagName?f+="\n":dtd.$empty[a.tagName]||(utils.each(a.children,function(b){"element"==b.type?"br"==b.tagName?f+="\n":dtd.$empty[a.tagName]||(f+=b.innerText()):f+=b.data}),/\n$/.test(f)||(f+="\n")):f+=a.data+"\n",!a.nextSibling()&&/\n$/.test(f)&&(f=f.replace(/\n$/,""));else if(browser.ie&&browser.ie11below)"element"==a.type?"br"==a.tagName?f+="
    ":dtd.$empty[a.tagName]||(utils.each(a.children,function(b){"element"==b.type?"br"==b.tagName?f+="
    ":dtd.$empty[a.tagName]||(f+=b.innerText()):f+=b.data}),/br>$/.test(f)||(f+="
    ")):f+=a.data+"
    ",!a.nextSibling()&&/
    $/.test(f)&&(f=f.replace(/
    $/,""));else if(f+="element"==a.type?dtd.$empty[a.tagName]?"":a.innerText():a.data,!/br\/?\s*>$/.test(f)){if(!a.nextSibling())return;f+="
    "}})}c.execCommand("inserthtml",'
    '+f+"
    ",!0),e=c.document.getElementById("coder"),domUtils.removeAttributes(e,"id");var i=e.previousSibling;i&&(3==i.nodeType&&1==i.nodeValue.length&&browser.ie&&6==browser.version||domUtils.isEmptyBlock(i))&&domUtils.remove(i);var d=c.selection.getRange();domUtils.isEmptyBlock(e)?d.setStart(e,0).setCursor(!1,!0):d.selectNodeContents(e).select()}},queryCommandValue:function(){var a=this.selection.getStartElementPath(),b="";return utils.each(a,function(a){if("PRE"==a.nodeName){var c=a.className.match(/brush:([^;]+)/);return b=c&&c[1]?c[1]:"",!1}}),b}},a.addInputRule(function(a){utils.each(a.getNodesByTagName("pre"),function(a){var b=a.getNodesByTagName("br");if(b.length)return void(browser.ie&&browser.ie11below&&browser.version>8&&utils.each(b,function(a){var b=UE.uNode.createText("\n");a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a)}));if(!(browser.ie&&browser.ie11below&&browser.version>8)){var c=a.innerText().split(/\n/);a.innerHTML(""),utils.each(c,function(b){b.length&&a.appendChild(UE.uNode.createText(b)),a.appendChild(UE.uNode.createElement("br"))})}})}),a.addOutputRule(function(a){utils.each(a.getNodesByTagName("pre"),function(a){var b="";utils.each(a.children,function(a){b+="text"==a.type?a.data.replace(/[ ]/g," ").replace(/\n$/,""):"br"==a.tagName?"\n":dtd.$empty[a.tagName]?a.innerText():""}),a.innerText(b.replace(/( |\n)+$/,""))})}),a.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};a.queryCommandState;a.queryCommandState=function(a){var b=this;return!b.notNeedCodeQuery[a.toLowerCase()]&&b.selection&&b.queryCommandValue("insertcode")?-1:UE.Editor.prototype.queryCommandState.apply(this,arguments)},a.addListener("beforeenterkeydown",function(){var b=a.selection.getRange(),c=domUtils.findParentByTagName(b.startContainer,"pre",!0);if(c){if(a.fireEvent("saveScene"),b.collapsed||b.deleteContents(),!browser.ie||browser.ie9above){var c,d=a.document.createElement("br");b.insertNode(d).setStartAfter(d).collapse(!0); +var e=d.nextSibling;e||browser.ie&&!(browser.version>10)?b.setStartAfter(d):b.insertNode(d.cloneNode(!1)),c=d.previousSibling;for(var f;c;)if(f=c,c=c.previousSibling,!c||"BR"==c.nodeName){c=f;break}if(c){for(var g="";c&&"BR"!=c.nodeName&&new RegExp("^[\\s"+domUtils.fillChar+"]*$").test(c.nodeValue);)g+=c.nodeValue,c=c.nextSibling;if("BR"!=c.nodeName){var h=c.nodeValue.match(new RegExp("^([\\s"+domUtils.fillChar+"]+)"));h&&h[1]&&(g+=h[1])}g&&(g=a.document.createTextNode(g),b.insertNode(g).setStartAfter(g))}b.collapse(!0).select(!0)}else if(browser.version>8){var i=a.document.createTextNode("\n"),j=b.startContainer;if(0==b.startOffset){var k=j.previousSibling;if(k){b.insertNode(i);var l=a.document.createTextNode(" ");b.setStartAfter(i).insertNode(l).setStart(l,0).collapse(!0).select(!0)}}else{b.insertNode(i).setStartAfter(i);var l=a.document.createTextNode(" ");j=b.startContainer.childNodes[b.startOffset],j&&!/^\n/.test(j.nodeValue)&&b.setStartBefore(i),b.insertNode(l).setStart(l,0).collapse(!0).select(!0)}}else{var d=a.document.createElement("br");b.insertNode(d),b.insertNode(a.document.createTextNode(domUtils.fillChar)),b.setStartAfter(d),c=d.previousSibling;for(var f;c;)if(f=c,c=c.previousSibling,!c||"BR"==c.nodeName){c=f;break}if(c){for(var g="";c&&"BR"!=c.nodeName&&new RegExp("^[ "+domUtils.fillChar+"]*$").test(c.nodeValue);)g+=c.nodeValue,c=c.nextSibling;if("BR"!=c.nodeName){var h=c.nodeValue.match(new RegExp("^([ "+domUtils.fillChar+"]+)"));h&&h[1]&&(g+=h[1])}g=a.document.createTextNode(g),b.insertNode(g).setStartAfter(g)}b.collapse(!0).select()}return a.fireEvent("saveScene"),!0}}),a.addListener("tabkeydown",function(b,c){var d=a.selection.getRange(),e=domUtils.findParentByTagName(d.startContainer,"pre",!0);if(e){if(a.fireEvent("saveScene"),c.shiftKey);else if(d.collapsed){var f=a.document.createTextNode(" ");d.insertNode(f).setStartAfter(f).collapse(!0).select(!0)}else{for(var g=d.createBookmark(),h=g.start.previousSibling;h;){if(e.firstChild===h&&!domUtils.isBr(h)){e.insertBefore(a.document.createTextNode(" "),h);break}if(domUtils.isBr(h)){e.insertBefore(a.document.createTextNode(" "),h.nextSibling);break}h=h.previousSibling}var i=g.end;for(h=g.start.nextSibling,e.firstChild===g.start&&e.insertBefore(a.document.createTextNode(" "),h.nextSibling);h&&h!==i;){if(domUtils.isBr(h)&&h.nextSibling){if(h.nextSibling===i)break;e.insertBefore(a.document.createTextNode(" "),h.nextSibling)}h=h.nextSibling}d.moveToBookmark(g).select()}return a.fireEvent("saveScene"),!0}}),a.addListener("beforeinserthtml",function(a,b){var c=this,d=c.selection.getRange(),e=domUtils.findParentByTagName(d.startContainer,"pre",!0);if(e){d.collapsed||d.deleteContents();var f="";if(browser.ie&&browser.version>8){utils.each(UE.filterNode(UE.htmlparser(b),c.options.filterTxtRules).children,function(a){"element"==a.type?"br"==a.tagName?f+="\n":dtd.$empty[a.tagName]||(utils.each(a.children,function(b){"element"==b.type?"br"==b.tagName?f+="\n":dtd.$empty[a.tagName]||(f+=b.innerText()):f+=b.data}),/\n$/.test(f)||(f+="\n")):f+=a.data+"\n",!a.nextSibling()&&/\n$/.test(f)&&(f=f.replace(/\n$/,""))});var g=c.document.createTextNode(utils.html(f.replace(/ /g," ")));d.insertNode(g).selectNode(g).select()}else{var h=c.document.createDocumentFragment();utils.each(UE.filterNode(UE.htmlparser(b),c.options.filterTxtRules).children,function(a){"element"==a.type?"br"==a.tagName?h.appendChild(c.document.createElement("br")):dtd.$empty[a.tagName]||(utils.each(a.children,function(b){"element"==b.type?"br"==b.tagName?h.appendChild(c.document.createElement("br")):dtd.$empty[a.tagName]||h.appendChild(c.document.createTextNode(utils.html(b.innerText().replace(/ /g," ")))):h.appendChild(c.document.createTextNode(utils.html(b.data.replace(/ /g," "))))}),"BR"!=h.lastChild.nodeName&&h.appendChild(c.document.createElement("br"))):h.appendChild(c.document.createTextNode(utils.html(a.data.replace(/ /g," ")))),a.nextSibling()||"BR"!=h.lastChild.nodeName||h.removeChild(h.lastChild)}),d.insertNode(h).select()}return!0}}),a.addListener("keydown",function(a,b){var c=this,d=b.keyCode||b.which;if(40==d){var e,f=c.selection.getRange(),g=f.startContainer;if(f.collapsed&&(e=domUtils.findParentByTagName(f.startContainer,"pre",!0))&&!e.nextSibling){for(var h=e.lastChild;h&&"BR"==h.nodeName;)h=h.previousSibling;(h===g||f.startContainer===e&&f.startOffset==e.childNodes.length)&&(c.execCommand("insertparagraph"),domUtils.preventDefault(b))}}}),a.addListener("delkeydown",function(b,c){var d=this.selection.getRange();d.txtToElmBoundary(!0);var e=d.startContainer;if(domUtils.isTagNode(e,"pre")&&d.collapsed&&domUtils.isStartInblock(d)){var f=a.document.createElement("p");return domUtils.fillNode(a.document,f),e.parentNode.insertBefore(f,e),domUtils.remove(e),d.setStart(f,0).setCursor(!1,!0),domUtils.preventDefault(c),!0}})},UE.commands.cleardoc={execCommand:function(a){var b=this,c=b.options.enterTag,d=b.selection.getRange();"br"==c?(b.body.innerHTML="
    ",d.setStart(b.body,0).setCursor()):(b.body.innerHTML="

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

    ",d.setStart(b.body.firstChild,0).setCursor(!1,!0)),setTimeout(function(){b.fireEvent("clearDoc")},0)}},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(a){utils.each(a.getNodesByTagName("img"),function(a){var b;(b=a.getAttr("anchorname"))&&(a.tagName="a",a.setAttr({anchorname:"",name:b,"class":""}))})},inputRule:function(a){utils.each(a.getNodesByTagName("a"),function(a){var b;(b=a.getAttr("name"))&&!a.getAttr("href")&&(a.tagName="img",a.setAttr({anchorname:a.getAttr("name"),"class":"anchorclass"}),a.setAttr("name"))})},commands:{anchor:{execCommand:function(a,b){var c=this.selection.getRange(),d=c.getClosedNode();if(d&&d.getAttribute("anchorname"))b?d.setAttribute("anchorname",b):(c.setStartBefore(d).setCursor(),domUtils.remove(d));else if(b){var e=this.document.createElement("img");c.collapse(!0),domUtils.setAttributes(e,{anchorname:b,"class":"anchorclass"}),c.insertNode(e).setStartAfter(e).setCursor(!1,!0)}}}}}}),UE.plugins.wordcount=function(){var a=this;a.setOpt("wordCount",!0),a.addListener("contentchange",function(){a.fireEvent("wordcount")});var b;a.addListener("ready",function(){var a=this;domUtils.on(a.body,"keyup",function(c){var d=c.keyCode||c.which,e={16:1,18:1,20:1,37:1,38:1,39:1,40:1};d in e||(clearTimeout(b),b=setTimeout(function(){a.fireEvent("wordcount")},200))})})},UE.plugins.pagebreak=function(){function a(a){if(domUtils.isEmptyBlock(a)){for(var b,d=a.firstChild;d&&1==d.nodeType&&domUtils.isEmptyBlock(d);)b=d,d=d.firstChild;!b&&(b=a),domUtils.fillNode(c.document,b)}}function b(a){return a&&1==a.nodeType&&"HR"==a.tagName&&"pagebreak"==a.className}var c=this,d=["td"];c.setOpt("pageBreakTag","_ueditor_page_break_tag_"),c.ready(function(){utils.cssRule("pagebreak",".pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}",c.document)}),c.addInputRule(function(a){a.traversal(function(a){if("text"==a.type&&a.data==c.options.pageBreakTag){var b=UE.uNode.createElement('
    ');a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a)}})}),c.addOutputRule(function(a){utils.each(a.getNodesByTagName("hr"),function(a){if("pagebreak"==a.getAttr("class")){var b=UE.uNode.createText(c.options.pageBreakTag);a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a)}})}),c.commands.pagebreak={execCommand:function(){var e=c.selection.getRange(),f=c.document.createElement("hr");domUtils.setAttributes(f,{"class":"pagebreak",noshade:"noshade",size:"5"}),domUtils.unSelectable(f);var g,h=domUtils.findParentByTagName(e.startContainer,d,!0),i=[];if(h)switch(h.tagName){case"TD":if(g=h.parentNode,g.previousSibling)g.parentNode.insertBefore(f,g),i=domUtils.findParents(f);else{var j=domUtils.findParentByTagName(g,"table");j.parentNode.insertBefore(f,j),i=domUtils.findParents(f,!0)}g=i[1],f!==g&&domUtils.breakParent(f,g),c.fireEvent("afteradjusttable",c.document)}else{if(!e.collapsed){e.deleteContents();for(var k=e.startContainer;!domUtils.isBody(k)&&domUtils.isBlockElm(k)&&domUtils.isEmptyNode(k);)e.setStartBefore(k).collapse(!0),domUtils.remove(k),k=e.startContainer}e.insertNode(f);for(var l,g=f.parentNode;!domUtils.isBody(g);)domUtils.breakParent(f,g),l=f.nextSibling,l&&domUtils.isEmptyBlock(l)&&domUtils.remove(l),g=f.parentNode;l=f.nextSibling;var m=f.previousSibling;if(b(m)?domUtils.remove(m):m&&a(m),l)b(l)?domUtils.remove(l):a(l),e.setEndAfter(f).collapse(!1);else{var n=c.document.createElement("p");f.parentNode.appendChild(n),domUtils.fillNode(c.document,n),e.setStart(n,0).collapse(!0)}e.select(!0)}}}},UE.plugin.register("wordimage",function(){var a=this,b=[];return{commands:{wordimage:{execCommand:function(){for(var b,c=domUtils.getElementsByTagName(a.body,"img"),d=[],e=0;b=c[e++];){var f=b.getAttribute("word_img");f&&d.push(f)}return d},queryCommandState:function(){b=domUtils.getElementsByTagName(a.body,"img");for(var c,d=0;c=b[d++];)if(c.getAttribute("word_img"))return 1;return-1},notNeedUndo:!0}},inputRule:function(b){utils.each(b.getNodesByTagName("img"),function(b){var c=b.attrs,d=parseInt(c.width)<128||parseInt(c.height)<43,e=a.options,f=e.UEDITOR_HOME_URL+"themes/default/images/spacer.gif";c.src&&/^(?:(file:\/+))/.test(c.src)&&b.setAttr({width:c.width,height:c.height,alt:c.alt,word_img:c.src,src:f,style:"background:url("+(d?e.themePath+e.theme+"/images/word.gif":e.langPath+e.lang+"/images/localimage.png")+") no-repeat center center;border:1px solid #ddd"})})}}}),UE.plugins.dragdrop=function(){var a=this;a.ready(function(){domUtils.on(this.body,"dragend",function(){var b=a.selection.getRange(),c=b.getClosedNode()||a.selection.getStart();if(c&&"IMG"==c.tagName){for(var d,e=c.previousSibling;(d=c.nextSibling)&&1==d.nodeType&&"SPAN"==d.tagName&&!d.firstChild;)domUtils.remove(d);(!e||1!=e.nodeType||domUtils.isEmptyBlock(e))&&e||d&&(!d||domUtils.isEmptyBlock(d))||(e&&"P"==e.tagName&&!domUtils.isEmptyBlock(e)?(e.appendChild(c),domUtils.moveChild(d,e),domUtils.remove(d)):d&&"P"==d.tagName&&!domUtils.isEmptyBlock(d)&&d.insertBefore(c,d.firstChild),e&&"P"==e.tagName&&domUtils.isEmptyBlock(e)&&domUtils.remove(e),d&&"P"==d.tagName&&domUtils.isEmptyBlock(d)&&domUtils.remove(d),b.selectNode(c).select(),a.fireEvent("saveScene"))}})}),a.addListener("keyup",function(b,c){var d=c.keyCode||c.which;if(13==d){var e,f=a.selection.getRange();(e=domUtils.findParentByTagName(f.startContainer,"p",!0))&&"center"==domUtils.getComputedStyle(e,"text-align")&&domUtils.removeStyle(e,"text-align")}})},UE.plugins.undo=function(){function a(a,b){if(a.length!=b.length)return 0;for(var c=0,d=a.length;cf&&this.list.shift(),this.index=this.list.length-1,this.clearKey(),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=!1,this.hasRedo=!1,this.clearKey()},this.clearKey=function(){m=0,k=null}}var d,e=this,f=e.options.maxUndoCount||20,g=e.options.maxInputCount||20,h=new RegExp(domUtils.fillChar+"|","gi"),i={ol:1,ul:1,table:1,tbody:1,tr:1,body:1},j=e.options.autoClearEmptyNode;e.undoManger=new c,e.undoManger.editor=e,e.addListener("saveScene",function(){var a=Array.prototype.splice.call(arguments,1);this.undoManger.save.apply(this.undoManger,a)}),e.addListener("reset",function(a,b){b||this.undoManger.reset()}),e.commands.redo=e.commands.undo={execCommand:function(a){this.undoManger[a]()},queryCommandState:function(a){return this.undoManger["has"+("undo"==a.toLowerCase()?"Undo":"Redo")]?0:-1},notNeedUndo:1};var k,l={16:1,17:1,18:1,37:1,38:1,39:1,40:1},m=0,n=!1;e.addListener("ready",function(){domUtils.on(this.body,"compositionstart",function(){n=!0}),domUtils.on(this.body,"compositionend",function(){n=!1})}),e.addshortcutkey({Undo:"ctrl+90",Redo:"ctrl+89"});var o=!0;e.addListener("keydown",function(a,b){function c(a){a.undoManger.save(!1,!0),a.fireEvent("selectionchange")}var e=this,f=b.keyCode||b.which;if(!(l[f]||b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)){if(n)return;if(!e.selection.getRange().collapsed)return e.undoManger.save(!1,!0),void(o=!1);0==e.undoManger.list.length&&e.undoManger.save(!0),clearTimeout(d),d=setTimeout(function(){if(n)var a=setInterval(function(){n||(c(e),clearInterval(a))},300);else c(e)},200),k=f,m++,m>=g&&c(e)}}),e.addListener("keyup",function(a,b){var c=b.keyCode||b.which;if(!(l[c]||b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)){if(n)return;o||(this.undoManger.save(!1,!0),o=!0)}}),e.stopCmdUndo=function(){e.__hasEnterExecCommand=!0},e.startCmdUndo=function(){e.__hasEnterExecCommand=!1}},UE.plugin.register("copy",function(){function a(){ZeroClipboard.config({debug:!1,swfPath:b.options.UEDITOR_HOME_URL+"third-party/zeroclipboard/ZeroClipboard.swf"});var a=b.zeroclipboard=new ZeroClipboard;a.on("copy",function(a){var c=a.client,d=b.selection.getRange(),e=document.createElement("div");e.appendChild(d.cloneContents()),c.setText(e.innerText||e.textContent),c.setHtml(e.innerHTML),d.select()}),a.on("mouseover mouseout",function(a){var b=a.target;"mouseover"==a.type?domUtils.addClass(b,"edui-state-hover"):"mouseout"==a.type&&domUtils.removeClasses(b,"edui-state-hover")}),a.on("wrongflash noflash",function(){ZeroClipboard.destroy()})}var b=this;return{bindEvents:{ready:function(){browser.ie||(window.ZeroClipboard?a():utils.loadFile(document,{src:b.options.UEDITOR_HOME_URL+"third-party/zeroclipboard/ZeroClipboard.js",tag:"script",type:"text/javascript",defer:"defer"},function(){a()}))}},commands:{copy:{execCommand:function(a){b.document.execCommand("copy")||alert(b.getLang("copymsg"))}}}}}),UE.plugins.paste=function(){function a(a){var b=this.document;if(!b.getElementById("baidu_pastebin")){var c=this.selection.getRange(),d=c.createBookmark(),e=b.createElement("div");e.id="baidu_pastebin",browser.webkit&&e.appendChild(b.createTextNode(domUtils.fillChar+domUtils.fillChar)),b.body.appendChild(e),d.start.style.display="",e.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:"+domUtils.getXY(d.start).y+"px",c.selectNodeContents(e).select(!0),setTimeout(function(){if(browser.webkit)for(var f,g=0,h=b.querySelectorAll("#baidu_pastebin");f=h[g++];){if(!domUtils.isEmptyNode(f)){e=f;break}domUtils.remove(f)}try{e.parentNode.removeChild(e)}catch(i){}c.moveToBookmark(d).select(!0),a(e)},0)}}function b(a){return a.replace(/<(\/?)([\w\-]+)([^>]*)>/gi,function(a,b,c,d){return c=c.toLowerCase(),{img:1}[c]?a:(d=d.replace(/([\w\-]*?)\s*=\s*(("([^"]*)")|('([^']*)')|([^\s>]+))/gi,function(a,b,c){return{src:1,href:1,name:1}[b.toLowerCase()]?b+"="+c+" ":""}),{span:1,div:1}[c]?"":"<"+b+c+" "+utils.trim(d)+">")})}function c(a){var c;if(a.firstChild){for(var h,i=domUtils.getElementsByTagName(a,"span"),j=0;h=i[j++];)"_baidu_cut_start"!=h.id&&"_baidu_cut_end"!=h.id||domUtils.remove(h);if(browser.webkit){for(var k,l=a.querySelectorAll("div br"),j=0;k=l[j++];){var m=k.parentNode;"DIV"==m.tagName&&1==m.childNodes.length&&(m.innerHTML="


    ",domUtils.remove(m))}for(var n,o=a.querySelectorAll("#baidu_pastebin"),j=0;n=o[j++];){var p=d.document.createElement("p");for(n.parentNode.insertBefore(p,n);n.firstChild;)p.appendChild(n.firstChild);domUtils.remove(n)}for(var q,r=a.querySelectorAll("meta"),j=0;q=r[j++];)domUtils.remove(q);var l=a.querySelectorAll("br");for(j=0;q=l[j++];)/^apple-/i.test(q.className)&&domUtils.remove(q)}if(browser.gecko){var s=a.querySelectorAll("[_moz_dirty]");for(j=0;q=s[j++];)q.removeAttribute("_moz_dirty")}if(!browser.ie)for(var q,t=a.querySelectorAll("span.Apple-style-span"),j=0;q=t[j++];)domUtils.remove(q,!0);c=a.innerHTML,c=UE.filterWord(c);var u=UE.htmlparser(c);if(d.options.filterRules&&UE.filterNode(u,d.options.filterRules),d.filterInputRule(u),browser.webkit){var v=u.lastChild();v&&"element"==v.type&&"br"==v.tagName&&u.removeChild(v),utils.each(d.body.querySelectorAll("div"),function(a){domUtils.isEmptyBlock(a)&&domUtils.remove(a,!0)})}if(c={html:u.toHtml()},d.fireEvent("beforepaste",c,u),!c.html)return;u=UE.htmlparser(c.html,!0),1===d.queryCommandState("pasteplain")?d.execCommand("insertHtml",UE.filterNode(u,d.options.filterTxtRules).toHtml(),!0):(UE.filterNode(u,d.options.filterTxtRules),e=u.toHtml(),f=c.html,g=d.selection.getRange().createAddress(!0),d.execCommand("insertHtml",d.getOpt("retainOnlyLabelPasted")===!0?b(f):f,!0)),d.fireEvent("afterpaste",c)}}var d=this;d.setOpt({retainOnlyLabelPasted:!1});var e,f,g;d.addListener("pasteTransfer",function(a,c){if(g&&e&&f&&e!=f){var h=d.selection.getRange();if(h.moveToAddress(g,!0),!h.collapsed){for(;!domUtils.isBody(h.startContainer);){var i=h.startContainer;if(1==i.nodeType){if(i=i.childNodes[h.startOffset],!i){h.setStartBefore(h.startContainer);continue}var j=i.previousSibling;j&&3==j.nodeType&&new RegExp("^[\n\r\t "+domUtils.fillChar+"]*$").test(j.nodeValue)&&h.setStartBefore(j)}if(0!=h.startOffset)break;h.setStartBefore(h.startContainer)}for(;!domUtils.isBody(h.endContainer);){var k=h.endContainer;if(1==k.nodeType){if(k=k.childNodes[h.endOffset],!k){h.setEndAfter(h.endContainer);continue}var l=k.nextSibling;l&&3==l.nodeType&&new RegExp("^[\n\r\t"+domUtils.fillChar+"]*$").test(l.nodeValue)&&h.setEndAfter(l)}if(h.endOffset!=h.endContainer[3==h.endContainer.nodeType?"nodeValue":"childNodes"].length)break;h.setEndAfter(h.endContainer)}}h.deleteContents(),h.select(!0),d.__hasEnterExecCommand=!0;var m=f;2===c?m=b(m):c&&(m=e),d.execCommand("inserthtml",m,!0),d.__hasEnterExecCommand=!1;for(var n=d.selection.getRange();!domUtils.isBody(n.startContainer)&&!n.startOffset&&n.startContainer[3==n.startContainer.nodeType?"nodeValue":"childNodes"].length;)n.setStartBefore(n.startContainer);var o=n.createAddress(!0);g.endAddress=o.startAddress}}),d.addListener("ready",function(){domUtils.on(d.body,"cut",function(){var a=d.selection.getRange();!a.collapsed&&d.undoManger&&d.undoManger.save()}),domUtils.on(d.body,browser.ie||browser.opera?"keydown":"paste",function(b){(!browser.ie&&!browser.opera||(b.ctrlKey||b.metaKey)&&"86"==b.keyCode)&&a.call(d,function(a){c(a)})})}),d.commands.paste={execCommand:function(b){browser.ie?(a.call(d,function(a){c(a)}),d.document.execCommand("paste")):alert(d.getLang("pastemsg"))}}},UE.plugins.pasteplain=function(){var a=this;a.setOpt({pasteplain:!1,filterTxtRules:function(){function a(a){a.tagName="p",a.setStyle()}function b(a){a.parentNode.removeChild(a,!0)}return{"-":"script style object iframe embed input select",p:{$:{}},br:{$:{}},div:function(a){for(var b,c=UE.uNode.createElement("p");b=a.firstChild();)"text"!=b.type&&UE.dom.dtd.$block[b.tagName]?c.firstChild()?(a.parentNode.insertBefore(c,a),c=UE.uNode.createElement("p")):a.parentNode.insertBefore(b,a):c.appendChild(b);c.firstChild()&&a.parentNode.insertBefore(c,a),a.parentNode.removeChild(a)},ol:b,ul:b,dl:b,dt:b,dd:b,li:b,caption:a,th:a,tr:a,h1:a,h2:a,h3:a,h4:a,h5:a,h6:a,td:function(a){var b=!!a.innerText();b&&a.parentNode.insertAfter(UE.uNode.createText("    "),a),a.parentNode.removeChild(a,a.innerText())}}}()});var b=a.options.pasteplain;a.commands.pasteplain={queryCommandState:function(){return b?1:0},execCommand:function(){b=0|!b},notNeedUndo:1}},UE.plugins.list=function(){function a(a){var b=[];for(var c in a)b.push(c);return b}function b(a){var b=a.className;return domUtils.hasClass(a,/custom_/)?b.match(/custom_(\w+)/)[1]:domUtils.getStyle(a,"list-style-type")}function c(a,c){utils.each(domUtils.getElementsByTagName(a,"ol ul"),function(f){if(domUtils.inDoc(f,a)){var g=f.parentNode;if(g.tagName==f.tagName){var h=b(f)||("OL"==f.tagName?"decimal":"disc"),i=b(g)||("OL"==g.tagName?"decimal":"disc");if(h==i){var l=utils.indexOf(k[f.tagName],h);l=l+1==k[f.tagName].length?0:l+1,e(f,k[f.tagName][l])}}var m=0,n=2;domUtils.hasClass(f,/custom_/)?/[ou]l/i.test(g.tagName)&&domUtils.hasClass(g,/custom_/)||(n=1):/[ou]l/i.test(g.tagName)&&domUtils.hasClass(g,/custom_/)&&(n=3);var o=domUtils.getStyle(f,"list-style-type");o&&(f.style.cssText="list-style-type:"+o),f.className=utils.trim(f.className.replace(/list-paddingleft-\w+/,""))+" list-paddingleft-"+n,utils.each(domUtils.getElementsByTagName(f,"li"),function(a){if(a.style.cssText&&(a.style.cssText=""),!a.firstChild)return void domUtils.remove(a);if(a.parentNode===f){if(m++,domUtils.hasClass(f,/custom_/)){var c=1,d=b(f);if("OL"==f.tagName){if(d)switch(d){case"cn":case"cn1":case"cn2":m>10&&(m%10==0||m>10&&m<20)?c=2:m>20&&(c=3);break;case"num2":m>9&&(c=2)}a.className="list-"+j[d]+m+" list-"+d+"-paddingleft-"+c}else a.className="list-"+j[d]+" list-"+d+"-paddingleft"}else a.className=a.className.replace(/list-[\w\-]+/gi,"");var e=a.getAttribute("class");null===e||e.replace(/\s/g,"")||domUtils.removeAttributes(a,"class")}}),!c&&d(f,f.tagName.toLowerCase(),b(f)||domUtils.getStyle(f,"list-style-type"),!0)}})}function d(a,d,e,f){var g=a.nextSibling;g&&1==g.nodeType&&g.tagName.toLowerCase()==d&&(b(g)||domUtils.getStyle(g,"list-style-type")||("ol"==d?"decimal":"disc"))==e&&(domUtils.moveChild(g,a),0==g.childNodes.length&&domUtils.remove(g)),g&&domUtils.isFillChar(g)&&domUtils.remove(g);var h=a.previousSibling;h&&1==h.nodeType&&h.tagName.toLowerCase()==d&&(b(h)||domUtils.getStyle(h,"list-style-type")||("ol"==d?"decimal":"disc"))==e&&domUtils.moveChild(a,h),h&&domUtils.isFillChar(h)&&domUtils.remove(h),!f&&domUtils.isEmptyBlock(a)&&domUtils.remove(a),b(a)&&c(a.ownerDocument,!0)}function e(a,b){j[b]&&(a.className="custom_"+b);try{domUtils.setStyle(a,"list-style-type",b)}catch(c){}}function f(a){var b=a.previousSibling;b&&domUtils.isEmptyBlock(b)&&domUtils.remove(b),b=a.nextSibling,b&&domUtils.isEmptyBlock(b)&&domUtils.remove(b)}function g(a){for(;a&&!domUtils.isBody(a);){if("TABLE"==a.nodeName)return null;if("LI"==a.nodeName)return a;a=a.parentNode}}var h=this,i={TD:1,PRE:1,BLOCKQUOTE:1},j={cn:"cn-1-",cn1:"cn-2-",cn2:"cn-3-",num:"num-1-",num1:"num-2-",num2:"num-3-",dash:"dash",dot:"dot"};h.setOpt({autoTransWordToList:!1,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,disablePInList:!1});var k={OL:a(h.options.insertorderedlist),UL:a(h.options.insertunorderedlist)},l=h.options.listiconpath;for(var m in j)h.options.insertorderedlist.hasOwnProperty(m)||h.options.insertunorderedlist.hasOwnProperty(m)||delete j[m];h.ready(function(){var a=[];for(var b in j){if("dash"==b||"dot"==b)a.push("li.list-"+j[b]+"{background-image:url("+l+j[b]+".gif)}"),a.push("ul.custom_"+b+"{list-style:none;}ul.custom_"+b+" li{background-position:0 3px;background-repeat:no-repeat}");else{for(var c=0;c<99;c++)a.push("li.list-"+j[b]+c+"{background-image:url("+l+"list-"+j[b]+c+".gif)}");a.push("ol.custom_"+b+"{list-style:none;}ol.custom_"+b+" li{background-position:0 3px;background-repeat:no-repeat}")}switch(b){case"cn":a.push("li.list-"+b+"-paddingleft-1{padding-left:25px}"),a.push("li.list-"+b+"-paddingleft-2{padding-left:40px}"),a.push("li.list-"+b+"-paddingleft-3{padding-left:55px}");break;case"cn1":a.push("li.list-"+b+"-paddingleft-1{padding-left:30px}"),a.push("li.list-"+b+"-paddingleft-2{padding-left:40px}"),a.push("li.list-"+b+"-paddingleft-3{padding-left:55px}");break;case"cn2":a.push("li.list-"+b+"-paddingleft-1{padding-left:40px}"),a.push("li.list-"+b+"-paddingleft-2{padding-left:55px}"),a.push("li.list-"+b+"-paddingleft-3{padding-left:68px}");break;case"num":case"num1":a.push("li.list-"+b+"-paddingleft-1{padding-left:25px}");break;case"num2":a.push("li.list-"+b+"-paddingleft-1{padding-left:35px}"),a.push("li.list-"+b+"-paddingleft-2{padding-left:40px}");break;case"dash":a.push("li.list-"+b+"-paddingleft{padding-left:35px}");break;case"dot":a.push("li.list-"+b+"-paddingleft{padding-left:20px}")}}a.push(".list-paddingleft-1{padding-left:0}"),a.push(".list-paddingleft-2{padding-left:"+h.options.listDefaultPaddingLeft+"px}"),a.push(".list-paddingleft-3{padding-left:"+2*h.options.listDefaultPaddingLeft+"px}"),utils.cssRule("list","ol,ul{margin:0;pading:0;"+(browser.ie?"":"width:95%")+"}li{clear:both;}"+a.join("\n"),h.document)}),h.ready(function(){domUtils.on(h.body,"cut",function(){setTimeout(function(){var a,b=h.selection.getRange();if(!b.collapsed&&(a=domUtils.findParentByTagName(b.startContainer,"li",!0))&&!a.nextSibling&&domUtils.isEmptyBlock(a)){var c,d=a.parentNode;if(c=d.previousSibling)domUtils.remove(d),b.setStartAtLast(c).collapse(!0),b.select(!0);else if(c=d.nextSibling)domUtils.remove(d),b.setStartAtFirst(c).collapse(!0),b.select(!0);else{var e=h.document.createElement("p");domUtils.fillNode(h.document,e),d.parentNode.insertBefore(e,d),domUtils.remove(d),b.setStart(e,0).collapse(!0),b.select(!0)}}})})}),h.addListener("beforepaste",function(a,c){var d,e=this,f=e.selection.getRange(),g=UE.htmlparser(c.html,!0);if(d=domUtils.findParentByTagName(f.startContainer,"li",!0)){var h=d.parentNode,i="OL"==h.tagName?"ul":"ol";utils.each(g.getNodesByTagName(i),function(c){if(c.tagName=h.tagName,c.setAttr(),c.parentNode===g)a=b(h)||("OL"==h.tagName?"decimal":"disc");else{var d=c.parentNode.getAttr("class");a=d&&/custom_/.test(d)?d.match(/custom_(\w+)/)[1]:c.parentNode.getStyle("list-style-type"),a||(a="OL"==h.tagName?"decimal":"disc")}var e=utils.indexOf(k[h.tagName],a);c.parentNode!==g&&(e=e+1==k[h.tagName].length?0:e+1);var f=k[h.tagName][e];j[f]?c.setAttr("class","custom_"+f):c.setStyle("list-style-type",f)})}c.html=g.toHtml()}),h.getOpt("disablePInList")===!0&&h.addOutputRule(function(a){utils.each(a.getNodesByTagName("li"),function(a){var b=[],c=0;utils.each(a.children,function(d){if("p"==d.tagName){for(var e;e=d.children.pop();)b.splice(c,0,e),e.parentNode=a,lastNode=e;if(e=b[b.length-1],!e||"element"!=e.type||"br"!=e.tagName){var f=UE.uNode.createElement("br");f.parentNode=a,b.push(f)}c=b.length}}),b.length&&(a.children=b)})}),h.addInputRule(function(a){function b(a,b){var e=b.firstChild();if(e&&"element"==e.type&&"span"==e.tagName&&/Wingdings|Symbol/.test(e.getStyle("font-family"))){for(var f in d)if(d[f]==e.data)return f;return"disc"}for(var f in c)if(c[f].test(a))return f}if(utils.each(a.getNodesByTagName("li"),function(a){for(var b,c=UE.uNode.createElement("p"),d=0;b=a.children[d];)"text"==b.type||dtd.p[b.tagName]?c.appendChild(b):c.firstChild()?(a.insertBefore(c,b),c=UE.uNode.createElement("p"),d+=2):d++;(c.firstChild()&&!c.parentNode||!a.firstChild())&&a.appendChild(c),c.firstChild()||c.innerHTML(browser.ie?" ":"
    ");var e=a.firstChild(),f=e.lastChild();f&&"text"==f.type&&/^\s*$/.test(f.data)&&e.removeChild(f)}),h.options.autoTransWordToList){var c={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]+\)/},d={square:"n"};utils.each(a.getNodesByTagName("p"),function(a){function d(a,b,d){if("ol"==a.tagName)if(browser.ie){var e=b.firstChild();"element"==e.type&&"span"==e.tagName&&c[d].test(e.innerText())&&b.removeChild(e)}else b.innerHTML(b.innerHTML().replace(c[d],""));else b.removeChild(b.firstChild());var f=UE.uNode.createElement("li");f.appendChild(b),a.appendChild(f)}if("MsoListParagraph"==a.getAttr("class")){a.setStyle("margin",""),a.setStyle("margin-left",""),a.setAttr("class","");var e,f=a,g=a;if("li"!=a.parentNode.tagName&&(e=b(a.innerText(),a))){var i=UE.uNode.createElement(h.options.insertorderedlist.hasOwnProperty(e)?"ol":"ul");for(j[e]?i.setAttr("class","custom_"+e):i.setStyle("list-style-type",e);a&&"li"!=a.parentNode.tagName&&b(a.innerText(),a);)f=a.nextSibling(),f||a.parentNode.insertBefore(i,a),d(i,a,e),a=f;!i.parentNode&&a&&a.parentNode&&a.parentNode.insertBefore(i,a)}var k=g.firstChild();k&&"element"==k.type&&"span"==k.tagName&&/^\s*( )+\s*$/.test(k.innerText())&&k.parentNode.removeChild(k)}})}}),h.addListener("contentchange",function(){c(h.document)}),h.addListener("keydown",function(a,b){function c(){b.preventDefault?b.preventDefault():b.returnValue=!1,h.fireEvent("contentchange"),h.undoManger&&h.undoManger.save()}function d(a,b){for(;a&&!domUtils.isBody(a);){if(b(a))return null;if(1==a.nodeType&&/[ou]l/i.test(a.tagName))return a;a=a.parentNode}return null}var e=b.keyCode||b.which;if(13==e&&!b.shiftKey){var g=h.selection.getRange(),i=domUtils.findParent(g.startContainer,function(a){return domUtils.isBlockElm(a)},!0),j=domUtils.findParentByTagName(g.startContainer,"li",!0);if(i&&"PRE"!=i.tagName&&!j){var k=i.innerHTML.replace(new RegExp(domUtils.fillChar,"g"),"");/^\s*1\s*\.[^\d]/.test(k)&&(i.innerHTML=k.replace(/^\s*1\s*\./,""),g.setStartAtLast(i).collapse(!0).select(),h.__hasEnterExecCommand=!0,h.execCommand("insertorderedlist"),h.__hasEnterExecCommand=!1)}var l=h.selection.getRange(),m=d(l.startContainer,function(a){return"TABLE"==a.tagName}),n=l.collapsed?m:d(l.endContainer,function(a){return"TABLE"==a.tagName});if(m&&n&&m===n){if(!l.collapsed){if(m=domUtils.findParentByTagName(l.startContainer,"li",!0),n=domUtils.findParentByTagName(l.endContainer,"li",!0),!m||!n||m!==n){var o=l.cloneRange(),p=o.collapse(!1).createBookmark();l.deleteContents(),o.moveToBookmark(p);var j=domUtils.findParentByTagName(o.startContainer,"li",!0);return f(j),o.select(),void c()}if(l.deleteContents(),j=domUtils.findParentByTagName(l.startContainer,"li",!0),j&&domUtils.isEmptyBlock(j))return v=j.previousSibling,next=j.nextSibling,s=h.document.createElement("p"),domUtils.fillNode(h.document,s),q=j.parentNode,v&&next?(l.setStart(next,0).collapse(!0).select(!0),domUtils.remove(j)):((v||next)&&v?j.parentNode.parentNode.insertBefore(s,q.nextSibling):q.parentNode.insertBefore(s,q),domUtils.remove(j),q.firstChild||domUtils.remove(q), +l.setStart(s,0).setCursor()),void c()}if(j=domUtils.findParentByTagName(l.startContainer,"li",!0)){if(domUtils.isEmptyBlock(j)){p=l.createBookmark();var q=j.parentNode;if(j!==q.lastChild?(domUtils.breakParent(j,q),f(j)):(q.parentNode.insertBefore(j,q.nextSibling),domUtils.isEmptyNode(q)&&domUtils.remove(q)),!dtd.$list[j.parentNode.tagName])if(domUtils.isBlockElm(j.firstChild))domUtils.remove(j,!0);else{for(s=h.document.createElement("p"),j.parentNode.insertBefore(s,j);j.firstChild;)s.appendChild(j.firstChild);domUtils.remove(j)}l.moveToBookmark(p).select()}else{var r=j.firstChild;if(!r||!domUtils.isBlockElm(r)){var s=h.document.createElement("p");for(!j.firstChild&&domUtils.fillNode(h.document,s);j.firstChild;)s.appendChild(j.firstChild);j.appendChild(s),r=s}var t=h.document.createElement("span");l.insertNode(t),domUtils.breakParent(t,j);var u=t.nextSibling;r=u.firstChild,r||(s=h.document.createElement("p"),domUtils.fillNode(h.document,s),u.appendChild(s),r=s),domUtils.isEmptyNode(r)&&(r.innerHTML="",domUtils.fillNode(h.document,r)),l.setStart(r,0).collapse(!0).shrinkBoundary().select(),domUtils.remove(t);var v=u.previousSibling;v&&domUtils.isEmptyBlock(v)&&(v.innerHTML="

    ",domUtils.fillNode(h.document,v.firstChild))}c()}}}if(8==e&&(l=h.selection.getRange(),l.collapsed&&domUtils.isStartInblock(l)&&(o=l.cloneRange().trimBoundary(),j=domUtils.findParentByTagName(l.startContainer,"li",!0),j&&domUtils.isStartInblock(o)))){if(m=domUtils.findParentByTagName(l.startContainer,"p",!0),m&&m!==j.firstChild){var q=domUtils.findParentByTagName(m,["ol","ul"]);return domUtils.breakParent(m,q),f(m),h.fireEvent("contentchange"),l.setStart(m,0).setCursor(!1,!0),h.fireEvent("saveScene"),void domUtils.preventDefault(b)}if(j&&(v=j.previousSibling)){if(46==e&&j.childNodes.length)return;if(dtd.$list[v.tagName]&&(v=v.lastChild),h.undoManger&&h.undoManger.save(),r=j.firstChild,domUtils.isBlockElm(r))if(domUtils.isEmptyNode(r))for(v.appendChild(r),l.setStart(r,0).setCursor(!1,!0);j.firstChild;)v.appendChild(j.firstChild);else t=h.document.createElement("span"),l.insertNode(t),domUtils.isEmptyBlock(v)&&(v.innerHTML=""),domUtils.moveChild(j,v),l.setStartBefore(t).collapse(!0).select(!0),domUtils.remove(t);else if(domUtils.isEmptyNode(j)){var s=h.document.createElement("p");v.appendChild(s),l.setStart(s,0).setCursor()}else for(l.setEnd(v,v.childNodes.length).collapse().select(!0);j.firstChild;)v.appendChild(j.firstChild);return domUtils.remove(j),h.fireEvent("contentchange"),h.fireEvent("saveScene"),void domUtils.preventDefault(b)}if(j&&!j.previousSibling){var q=j.parentNode,p=l.createBookmark();if(domUtils.isTagNode(q.parentNode,"ol ul"))q.parentNode.insertBefore(j,q),domUtils.isEmptyNode(q)&&domUtils.remove(q);else{for(;j.firstChild;)q.parentNode.insertBefore(j.firstChild,q);domUtils.remove(j),domUtils.isEmptyNode(q)&&domUtils.remove(q)}return l.moveToBookmark(p).setCursor(!1,!0),h.fireEvent("contentchange"),h.fireEvent("saveScene"),void domUtils.preventDefault(b)}}}),h.addListener("keyup",function(a,c){var e=c.keyCode||c.which;if(8==e){var f,g=h.selection.getRange();(f=domUtils.findParentByTagName(g.startContainer,["ol","ul"],!0))&&d(f,f.tagName.toLowerCase(),b(f)||domUtils.getComputedStyle(f,"list-style-type"),!0)}}),h.addListener("tabkeydown",function(){function a(a){if(h.options.maxListLevel!=-1){for(var b=a.parentNode,c=0;/[ou]l/i.test(b.tagName);)c++,b=b.parentNode;if(c>=h.options.maxListLevel)return!0}}var c=h.selection.getRange(),f=domUtils.findParentByTagName(c.startContainer,"li",!0);if(f){var g;if(!c.collapsed){h.fireEvent("saveScene"),g=c.createBookmark();for(var i,j,l=0,m=domUtils.findParents(f);j=m[l++];)if(domUtils.isTagNode(j,"ol ul")){i=j;break}var n=f;if(g.end)for(;n&&!(domUtils.getPosition(n,g.end)&domUtils.POSITION_FOLLOWING);)if(a(n))n=domUtils.getNextDomNode(n,!1,null,function(a){return a!==i});else{var o=n.parentNode,p=h.document.createElement(o.tagName),q=utils.indexOf(k[p.tagName],b(o)||domUtils.getComputedStyle(o,"list-style-type")),r=q+1==k[p.tagName].length?0:q+1,s=k[p.tagName][r];for(e(p,s),o.insertBefore(p,n);n&&!(domUtils.getPosition(n,g.end)&domUtils.POSITION_FOLLOWING);){if(f=n.nextSibling,p.appendChild(n),!f||domUtils.isTagNode(f,"ol ul")){if(f)for(;(f=f.firstChild)&&"LI"!=f.tagName;);else f=domUtils.getNextDomNode(n,!1,null,function(a){return a!==i});break}n=f}d(p,p.tagName.toLowerCase(),s),n=f}return h.fireEvent("contentchange"),c.moveToBookmark(g).select(),!0}if(a(f))return!0;var o=f.parentNode,p=h.document.createElement(o.tagName),q=utils.indexOf(k[p.tagName],b(o)||domUtils.getComputedStyle(o,"list-style-type"));q=q+1==k[p.tagName].length?0:q+1;var s=k[p.tagName][q];if(e(p,s),domUtils.isStartInblock(c))return h.fireEvent("saveScene"),g=c.createBookmark(),o.insertBefore(p,f),p.appendChild(f),d(p,p.tagName.toLowerCase(),s),h.fireEvent("contentchange"),c.moveToBookmark(g).select(!0),!0}}),h.commands.insertorderedlist=h.commands.insertunorderedlist={execCommand:function(a,c){c||(c="insertorderedlist"==a.toLowerCase()?"decimal":"disc");var f=this,h=this.selection.getRange(),j=function(a){return 1==a.nodeType?"br"!=a.tagName.toLowerCase():!domUtils.isWhitespace(a)},k="insertorderedlist"==a.toLowerCase()?"ol":"ul",l=f.document.createDocumentFragment();h.adjustmentBoundary().shrinkBoundary();var m,n,o,p,q=h.createBookmark(!0),r=g(f.document.getElementById(q.start)),s=0,t=g(f.document.getElementById(q.end)),u=0;if(r||t){if(r&&(m=r.parentNode),q.end||(t=r),t&&(n=t.parentNode),m===n){for(;r!==t;){if(p=r,r=r.nextSibling,!domUtils.isBlockElm(p.firstChild)){for(var v=f.document.createElement("p");p.firstChild;)v.appendChild(p.firstChild);p.appendChild(v)}l.appendChild(p)}if(p=f.document.createElement("span"),m.insertBefore(p,t),!domUtils.isBlockElm(t.firstChild)){for(v=f.document.createElement("p");t.firstChild;)v.appendChild(t.firstChild);t.appendChild(v)}l.appendChild(t),domUtils.breakParent(p,m),domUtils.isEmptyNode(p.previousSibling)&&domUtils.remove(p.previousSibling),domUtils.isEmptyNode(p.nextSibling)&&domUtils.remove(p.nextSibling);var w=b(m)||domUtils.getComputedStyle(m,"list-style-type")||("insertorderedlist"==a.toLowerCase()?"decimal":"disc");if(m.tagName.toLowerCase()==k&&w==c){for(var x,y=0,z=f.document.createDocumentFragment();x=l.firstChild;)if(domUtils.isTagNode(x,"ol ul"))z.appendChild(x);else for(;x.firstChild;)z.appendChild(x.firstChild),domUtils.remove(x);p.parentNode.insertBefore(z,p)}else o=f.document.createElement(k),e(o,c),o.appendChild(l),p.parentNode.insertBefore(o,p);return domUtils.remove(p),o&&d(o,k,c),void h.moveToBookmark(q).select()}if(r){for(;r;){if(p=r.nextSibling,domUtils.isTagNode(r,"ol ul"))l.appendChild(r);else{for(var A=f.document.createDocumentFragment(),B=0;r.firstChild;)domUtils.isBlockElm(r.firstChild)&&(B=1),A.appendChild(r.firstChild);if(B)l.appendChild(A);else{var C=f.document.createElement("p");C.appendChild(A),l.appendChild(C)}domUtils.remove(r)}r=p}m.parentNode.insertBefore(l,m.nextSibling),domUtils.isEmptyNode(m)?(h.setStartBefore(m),domUtils.remove(m)):h.setStartAfter(m),s=1}if(t&&domUtils.inDoc(n,f.document)){for(r=n.firstChild;r&&r!==t;){if(p=r.nextSibling,domUtils.isTagNode(r,"ol ul"))l.appendChild(r);else{for(A=f.document.createDocumentFragment(),B=0;r.firstChild;)domUtils.isBlockElm(r.firstChild)&&(B=1),A.appendChild(r.firstChild);B?l.appendChild(A):(C=f.document.createElement("p"),C.appendChild(A),l.appendChild(C)),domUtils.remove(r)}r=p}var D=domUtils.createElement(f.document,"div",{tmpDiv:1});domUtils.moveChild(t,D),l.appendChild(D),domUtils.remove(t),n.parentNode.insertBefore(l,n),h.setEndBefore(n),domUtils.isEmptyNode(n)&&domUtils.remove(n),u=1}}s||h.setStartBefore(f.document.getElementById(q.start)),q.end&&!u&&h.setEndAfter(f.document.getElementById(q.end)),h.enlarge(!0,function(a){return i[a.tagName]}),l=f.document.createDocumentFragment();for(var E,F=h.createBookmark(),G=domUtils.getNextDomNode(F.start,!1,j),H=h.cloneRange(),I=domUtils.isBlockElm;G&&G!==F.end&&domUtils.getPosition(G,F.end)&domUtils.POSITION_PRECEDING;)if(3==G.nodeType||dtd.li[G.tagName]){if(1==G.nodeType&&dtd.$list[G.tagName]){for(;G.firstChild;)l.appendChild(G.firstChild);E=domUtils.getNextDomNode(G,!1,j),domUtils.remove(G),G=E;continue}for(E=G,H.setStartBefore(G);G&&G!==F.end&&(!I(G)||domUtils.isBookmarkNode(G));)E=G,G=domUtils.getNextDomNode(G,!1,null,function(a){return!i[a.tagName]});G&&I(G)&&(p=domUtils.getNextDomNode(E,!1,j),p&&domUtils.isBookmarkNode(p)&&(G=domUtils.getNextDomNode(p,!1,j),E=p)),H.setEndAfter(E),G=domUtils.getNextDomNode(E,!1,j);var J=h.document.createElement("li");if(J.appendChild(H.extractContents()),domUtils.isEmptyNode(J)){for(var E=h.document.createElement("p");J.firstChild;)E.appendChild(J.firstChild);J.appendChild(E)}l.appendChild(J)}else G=domUtils.getNextDomNode(G,!0,j);h.moveToBookmark(F).collapse(!0),o=f.document.createElement(k),e(o,c),o.appendChild(l),h.insertNode(o),d(o,k,c);for(var x,y=0,K=domUtils.getElementsByTagName(o,"div");x=K[y++];)x.getAttribute("tmpDiv")&&domUtils.remove(x,!0);h.moveToBookmark(q).select()},queryCommandState:function(a){for(var b,c="insertorderedlist"==a.toLowerCase()?"ol":"ul",d=this.selection.getStartElementPath(),e=0;b=d[e++];){if("TABLE"==b.nodeName)return 0;if(c==b.nodeName.toLowerCase())return 1}return 0},queryCommandValue:function(a){for(var c,d,e="insertorderedlist"==a.toLowerCase()?"ol":"ul",f=this.selection.getStartElementPath(),g=0;d=f[g++];){if("TABLE"==d.nodeName){c=null;break}if(e==d.nodeName.toLowerCase()){c=d;break}}return c?b(c)||domUtils.getComputedStyle(c,"list-style-type"):null}}},function(){var a={textarea:function(a,b){var c=b.ownerDocument.createElement("textarea");return c.style.cssText="position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;",browser.ie&&browser.version<8&&(c.style.width=b.offsetWidth+"px",c.style.height=b.offsetHeight+"px",b.onresize=function(){c.style.width=b.offsetWidth+"px",c.style.height=b.offsetHeight+"px"}),b.appendChild(c),{setContent:function(a){c.value=a},getContent:function(){return c.value},select:function(){var a;browser.ie?(a=c.createTextRange(),a.collapse(!0),a.select()):(c.setSelectionRange(0,0),c.focus())},dispose:function(){b.removeChild(c),b.onresize=null,c=null,b=null}}},codemirror:function(a,b){var c=window.CodeMirror(b,{mode:"text/html",tabMode:"indent",lineNumbers:!0,lineWrapping:!0}),d=c.getWrapperElement();return d.style.cssText='position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,"Courier new",monospace;font-size:13px;',c.getScrollerElement().style.cssText="position:absolute;left:0;top:0;width:100%;height:100%;",c.refresh(),{getCodeMirror:function(){return c},setContent:function(a){c.setValue(a)},getContent:function(){return c.getValue()},select:function(){c.focus()},dispose:function(){b.removeChild(d),d=null,c=null}}}};UE.plugins.source=function(){function b(b){return a["codemirror"==f.sourceEditor&&window.CodeMirror?"codemirror":"textarea"](e,b)}var c,d,e=this,f=this.options,g=!1;f.sourceEditor=browser.ie?"textarea":f.sourceEditor||"codemirror",e.setOpt({sourceEditorFirst:!1});var h,i,j;e.commands.source={execCommand:function(){if(g=!g){j=e.selection.getRange().createAddress(!1,!0),e.undoManger&&e.undoManger.save(!0),browser.gecko&&(e.body.contentEditable=!1),h=e.iframe.style.cssText,e.iframe.style.cssText+="position:absolute;left:-32768px;top:-32768px;",e.fireEvent("beforegetcontent");var a=UE.htmlparser(e.body.innerHTML);e.filterOutputRule(a),a.traversal(function(a){if("element"==a.type)switch(a.tagName){case"td":case"th":case"caption":a.children&&1==a.children.length&&"br"==a.firstChild().tagName&&a.removeChild(a.firstChild());break;case"pre":a.innerText(a.innerText().replace(/ /g," "))}}),e.fireEvent("aftergetcontent");var f=a.toHtml(!0);c=b(e.iframe.parentNode),c.setContent(f),d=e.setContent,e.setContent=function(a){var b=UE.htmlparser(a);e.filterInputRule(b),a=b.toHtml(),c.setContent(a)},setTimeout(function(){c.select(),e.addListener("fullscreenchanged",function(){try{c.getCodeMirror().refresh()}catch(a){}})}),i=e.getContent,e.getContent=function(){return c.getContent()||"

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

    "}}else{e.iframe.style.cssText=h;var k=c.getContent()||"

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

    ";k=k.replace(new RegExp("[\\r\\t\\n ]*]*)>","g"),function(a,b){return b&&!dtd.$inlineWithA[b.toLowerCase()]?a.replace(/(^[\n\r\t ]*)|([\n\r\t ]*$)/g,""):a.replace(/(^[\n\r\t]*)|([\n\r\t]*$)/g,"")}),e.setContent=d,e.setContent(k),c.dispose(),c=null,e.getContent=i;var l=e.body.firstChild;if(l||(e.body.innerHTML="

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

    ",l=e.body.firstChild),e.undoManger&&e.undoManger.save(!0),browser.gecko){var m=document.createElement("input");m.style.cssText="position:absolute;left:0;top:-32768px",document.body.appendChild(m),e.body.contentEditable=!1,setTimeout(function(){domUtils.setViewportOffset(m,{left:-32768,top:0}),m.focus(),setTimeout(function(){e.body.contentEditable=!0,e.selection.getRange().moveToAddress(j).select(!0),domUtils.remove(m)})})}else try{e.selection.getRange().moveToAddress(j).select(!0)}catch(n){}}this.fireEvent("sourcemodechanged",g)},queryCommandState:function(){return 0|g},notNeedUndo:1};var k=e.queryCommandState;e.queryCommandState=function(a){return a=a.toLowerCase(),g?a in{source:1,fullscreen:1}?1:-1:k.apply(this,arguments)},"codemirror"==f.sourceEditor&&e.addListener("ready",function(){utils.loadFile(document,{src:f.codeMirrorJsUrl||f.UEDITOR_HOME_URL+"third-party/codemirror/codemirror.js",tag:"script",type:"text/javascript",defer:"defer"},function(){f.sourceEditorFirst&&setTimeout(function(){e.execCommand("source")},0)}),utils.loadFile(document,{tag:"link",rel:"stylesheet",type:"text/css",href:f.codeMirrorCssUrl||f.UEDITOR_HOME_URL+"third-party/codemirror/codemirror.css"})})}}(),UE.plugins.enterkey=function(){var a,b=this,c=b.options.enterTag;b.addListener("keyup",function(c,d){var e=d.keyCode||d.which;if(13==e){var f,g=b.selection.getRange(),h=g.startContainer;if(browser.ie)b.fireEvent("saveScene",!0,!0);else{if(/h\d/i.test(a)){if(browser.gecko){var i=domUtils.findParentByTagName(h,["h1","h2","h3","h4","h5","h6","blockquote","caption","table"],!0);i||(b.document.execCommand("formatBlock",!1,"

    "),f=1)}else if(1==h.nodeType){var j,k=b.document.createTextNode("");if(g.insertNode(k),j=domUtils.findParentByTagName(k,"div",!0)){for(var l=b.document.createElement("p");j.firstChild;)l.appendChild(j.firstChild);j.parentNode.insertBefore(l,j),domUtils.remove(j),g.setStartBefore(k).setCursor(),f=1}domUtils.remove(k)}b.undoManger&&f&&b.undoManger.save()}browser.opera&&g.select()}}}),b.addListener("keydown",function(d,e){var f=e.keyCode||e.which;if(13==f){if(b.fireEvent("beforeenterkeydown"))return void domUtils.preventDefault(e);b.fireEvent("saveScene",!0,!0),a="";var g=b.selection.getRange();if(!g.collapsed){var h=g.startContainer,i=g.endContainer,j=domUtils.findParentByTagName(h,"td",!0),k=domUtils.findParentByTagName(i,"td",!0);if(j&&k&&j!==k||!j&&k||j&&!k)return void(e.preventDefault?e.preventDefault():e.returnValue=!1)}if("p"==c)browser.ie||(h=domUtils.findParentByTagName(g.startContainer,["ol","ul","p","h1","h2","h3","h4","h5","h6","blockquote","caption"],!0),h||browser.opera?(a=h.tagName,"p"==h.tagName.toLowerCase()&&browser.gecko&&domUtils.removeDirtyAttr(h)):(b.document.execCommand("formatBlock",!1,"

    "),browser.gecko&&(g=b.selection.getRange(),h=domUtils.findParentByTagName(g.startContainer,"p",!0),h&&domUtils.removeDirtyAttr(h))));else if(e.preventDefault?e.preventDefault():e.returnValue=!1,g.collapsed){m=g.document.createElement("br"),g.insertNode(m);var l=m.parentNode;l.lastChild===m?(m.parentNode.insertBefore(m.cloneNode(!0),m),g.setStartBefore(m)):g.setStartAfter(m),g.setCursor()}else if(g.deleteContents(),h=g.startContainer,1==h.nodeType&&(h=h.childNodes[g.startOffset])){for(;1==h.nodeType;){if(dtd.$empty[h.tagName])return g.setStartBefore(h).setCursor(),b.undoManger&&b.undoManger.save(),!1;if(!h.firstChild){var m=g.document.createElement("br");return h.appendChild(m),g.setStart(h,0).setCursor(),b.undoManger&&b.undoManger.save(),!1}h=h.firstChild}h===g.startContainer.childNodes[g.startOffset]?(m=g.document.createElement("br"),g.insertNode(m).setCursor()):g.setStart(h,0).setCursor()}else m=g.document.createElement("br"),g.insertNode(m).setStartAfter(m).setCursor()}})},UE.plugins.keystrokes=function(){var a=this,b=!0;a.addListener("keydown",function(c,d){var e=d.keyCode||d.which,f=a.selection.getRange();if(!f.collapsed&&!(d.ctrlKey||d.shiftKey||d.altKey||d.metaKey)&&(e>=65&&e<=90||e>=48&&e<=57||e>=96&&e<=111||{13:1,8:1,46:1}[e])){var g=f.startContainer;if(domUtils.isFillChar(g)&&f.setStartBefore(g),g=f.endContainer,domUtils.isFillChar(g)&&f.setEndAfter(g),f.txtToElmBoundary(),f.endContainer&&1==f.endContainer.nodeType&&(g=f.endContainer.childNodes[f.endOffset],g&&domUtils.isBr(g)&&f.setEndAfter(g)),0==f.startOffset&&(g=f.startContainer,domUtils.isBoundaryNode(g,"firstChild")&&(g=f.endContainer,f.endOffset==(3==g.nodeType?g.nodeValue.length:g.childNodes.length)&&domUtils.isBoundaryNode(g,"lastChild"))))return a.fireEvent("saveScene"),a.body.innerHTML="

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

    ",f.setStart(a.body.firstChild,0).setCursor(!1,!0),void a._selectionChange()}if(e==keymap.Backspace){if(f=a.selection.getRange(),b=f.collapsed,a.fireEvent("delkeydown",d))return;var h,i;if(f.collapsed&&f.inFillChar()&&(h=f.startContainer,domUtils.isFillChar(h)?(f.setStartBefore(h).shrinkBoundary(!0).collapse(!0),domUtils.remove(h)):(h.nodeValue=h.nodeValue.replace(new RegExp("^"+domUtils.fillChar),""),f.startOffset--,f.collapse(!0).select(!0))),h=f.getClosedNode())return a.fireEvent("saveScene"),f.setStartBefore(h),domUtils.remove(h),f.setCursor(),a.fireEvent("saveScene"),void domUtils.preventDefault(d);if(!browser.ie&&(h=domUtils.findParentByTagName(f.startContainer,"table",!0),i=domUtils.findParentByTagName(f.endContainer,"table",!0),h&&!i||!h&&i||h!==i))return void d.preventDefault()}if(e==keymap.Tab){var j={ol:1,ul:1,table:1};if(a.fireEvent("tabkeydown",d))return void domUtils.preventDefault(d);var k=a.selection.getRange();a.fireEvent("saveScene");for(var l=0,m="",n=a.options.tabSize||4,o=a.options.tabNode||" ";l"});d.insertNode(g).setStart(g,0).setCursor(!1,!0)}}if(!b&&(3==d.startContainer.nodeType||1==d.startContainer.nodeType&&domUtils.isEmptyBlock(d.startContainer)))if(browser.ie){var k=d.document.createElement("span");d.insertNode(k).setStartBefore(k).collapse(!0),d.select(),domUtils.remove(k)}else d.select()}})},UE.plugins.fiximgclick=function(){function a(){this.editor=null,this.resizer=null,this.cover=null,this.doc=document,this.prePos={x:0,y:0},this.startPos={x:0,y:0}}var b=!1;return function(){var c=[[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]];a.prototype={init:function(a){var b=this;b.editor=a,b.startPos=this.prePos={x:0,y:0},b.dragId=-1;var c=[],d=b.cover=document.createElement("div"),e=b.resizer=document.createElement("div");for(d.id=b.editor.ui.id+"_imagescale_cover",d.style.cssText="position:absolute;display:none;z-index:"+b.editor.options.zIndex+";filter:alpha(opacity=0); opacity:0;background:#CCC;",domUtils.on(d,"mousedown click",function(){b.hide()}),i=0;i<8;i++)c.push('');e.id=b.editor.ui.id+"_imagescale",e.className="edui-editor-imagescale",e.innerHTML=c.join(""),e.style.cssText+=";display:none;border:1px solid #3b77ff;z-index:"+b.editor.options.zIndex+";",b.editor.ui.getDom().appendChild(d),b.editor.ui.getDom().appendChild(e),b.initStyle(),b.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 a=this;a.startPos.x=a.startPos.y=0,a.isDraging=!1},_eventHandler:function(a){var c=this;switch(a.type){case"mousedown":var d,d=a.target||a.srcElement;d.className.indexOf("edui-editor-imagescale-hand")!=-1&&c.dragId==-1&&(c.dragId=d.className.slice(-1),c.startPos.x=c.prePos.x=a.clientX,c.startPos.y=c.prePos.y=a.clientY,domUtils.on(c.doc,"mousemove",c.proxy(c._eventHandler,c)));break;case"mousemove":c.dragId!=-1&&(c.updateContainerStyle(c.dragId,{x:a.clientX-c.prePos.x,y:a.clientY-c.prePos.y}),c.prePos.x=a.clientX,c.prePos.y=a.clientY,b=!0,c.updateTargetElement());break;case"mouseup":c.dragId!=-1&&(c.updateContainerStyle(c.dragId,{x:a.clientX-c.prePos.x,y:a.clientY-c.prePos.y}),c.updateTargetElement(),c.target.parentNode&&c.attachTo(c.target),c.dragId=-1),domUtils.un(c.doc,"mousemove",c.proxy(c._eventHandler,c)),b&&(b=!1,c.editor.fireEvent("contentchange"))}},updateTargetElement:function(){var a=this;domUtils.setStyles(a.target,{width:a.resizer.style.width,height:a.resizer.style.height}),a.target.width=parseInt(a.resizer.style.width),a.target.height=parseInt(a.resizer.style.height),a.attachTo(a.target)},updateContainerStyle:function(a,b){var d,e=this,f=e.resizer;0!=c[a][0]&&(d=parseInt(f.style.left)+b.x,f.style.left=e._validScaledProp("left",d)+"px"),0!=c[a][1]&&(d=parseInt(f.style.top)+b.y,f.style.top=e._validScaledProp("top",d)+"px"),0!=c[a][2]&&(d=f.clientWidth+c[a][2]*b.x,f.style.width=e._validScaledProp("width",d)+"px"),0!=c[a][3]&&(d=f.clientHeight+c[a][3]*b.y,f.style.height=e._validScaledProp("height",d)+"px")},_validScaledProp:function(a,b){var c=this.resizer,d=document;switch(b=isNaN(b)?0:b,a){case"left":return b<0?0:b+c.clientWidth>d.clientWidth?d.clientWidth-c.clientWidth:b;case"top":return b<0?0:b+c.clientHeight>d.clientHeight?d.clientHeight-c.clientHeight:b;case"width":return b<=0?1:b+c.offsetLeft>d.clientWidth?d.clientWidth-c.offsetLeft:b;case"height":return b<=0?1:b+c.offsetTop>d.clientHeight?d.clientHeight-c.offsetTop:b}},hideCover:function(){this.cover.style.display="none"},showCover:function(){var a=this,b=domUtils.getXY(a.editor.ui.getDom()),c=domUtils.getXY(a.editor.iframe);domUtils.setStyles(a.cover,{width:a.editor.iframe.offsetWidth+"px",height:a.editor.iframe.offsetHeight+"px",top:c.y-b.y+"px",left:c.x-b.x+"px",position:"absolute",display:""})},show:function(a){var b=this;b.resizer.style.display="block",a&&b.attachTo(a),domUtils.on(this.resizer,"mousedown",b.proxy(b._eventHandler,b)),domUtils.on(b.doc,"mouseup",b.proxy(b._eventHandler,b)),b.showCover(),b.editor.fireEvent("afterscaleshow",b),b.editor.fireEvent("saveScene")},hide:function(){var a=this;a.hideCover(),a.resizer.style.display="none",domUtils.un(a.resizer,"mousedown",a.proxy(a._eventHandler,a)),domUtils.un(a.doc,"mouseup",a.proxy(a._eventHandler,a)),a.editor.fireEvent("afterscalehide",a)},proxy:function(a,b){return function(c){return a.apply(b||this,arguments)}},attachTo:function(a){var b=this,c=b.target=a,d=this.resizer,e=domUtils.getXY(c),f=domUtils.getXY(b.editor.iframe),g=domUtils.getXY(d.parentNode);domUtils.setStyles(d,{width:c.width+"px",height:c.height+"px",left:f.x+e.x-b.editor.document.body.scrollLeft-g.x-parseInt(d.style.borderLeftWidth)+"px",top:f.y+e.y-b.editor.document.body.scrollTop-g.y-parseInt(d.style.borderTopWidth)+"px"})}}}(),function(){var b,c=this;c.setOpt("imageScaleEnabled",!0),!browser.ie&&c.options.imageScaleEnabled&&c.addListener("click",function(d,e){var f=c.selection.getRange(),g=f.getClosedNode();if(g&&"IMG"==g.tagName&&"false"!=c.body.contentEditable){if(g.className.indexOf("edui-faked-music")!=-1||g.getAttribute("anchorname")||domUtils.hasClass(g,"loadingclass")||domUtils.hasClass(g,"loaderrorclass"))return;if(!b){b=new a,b.init(c),c.ui.getDom().appendChild(b.resizer);var h,i=function(a){b.hide(),b.target&&c.selection.getRange().selectNode(b.target).select()},j=function(a){var b=a.target||a.srcElement;!b||void 0!==b.className&&b.className.indexOf("edui-editor-imagescale")!=-1||i(a)};c.addListener("afterscaleshow",function(a){c.addListener("beforekeydown",i),c.addListener("beforemousedown",j),domUtils.on(document,"keydown",i),domUtils.on(document,"mousedown",j),c.selection.getNative().removeAllRanges()}),c.addListener("afterscalehide",function(a){c.removeListener("beforekeydown",i),c.removeListener("beforemousedown",j),domUtils.un(document,"keydown",i),domUtils.un(document,"mousedown",j);var d=b.target;d.parentNode&&c.selection.getRange().selectNode(d).select()}),domUtils.on(b.resizer,"mousedown",function(a){c.selection.getNative().removeAllRanges();var d=a.target||a.srcElement;d&&d.className.indexOf("edui-editor-imagescale-hand")==-1&&(h=setTimeout(function(){b.hide(),b.target&&c.selection.getRange().selectNode(d).select()},200))}),domUtils.on(b.resizer,"mouseup",function(a){var b=a.target||a.srcElement;b&&b.className.indexOf("edui-editor-imagescale-hand")==-1&&clearTimeout(h)})}b.show(g)}else b&&"none"!=b.resizer.style.display&&b.hide()}),browser.webkit&&c.addListener("click",function(a,b){if("IMG"==b.target.tagName&&"false"!=c.body.contentEditable){var d=new dom.Range(c.document);d.selectNode(b.target).select()}})}}(),UE.plugin.register("autolink",function(){var a=0;return browser.ie?{}:{bindEvents:{reset:function(){a=0},keydown:function(a,b){var c=this,d=b.keyCode||b.which;if(32==d||13==d){for(var e,f,g=c.selection.getNative(),h=g.getRangeAt(0).cloneRange(),i=h.startContainer;1==i.nodeType&&h.startOffset>0&&(i=h.startContainer.childNodes[h.startOffset-1]);)h.setStart(i,1==i.nodeType?i.childNodes.length:i.nodeValue.length),h.collapse(!0),i=h.startContainer;do{if(0==h.startOffset){for(i=h.startContainer.previousSibling;i&&1==i.nodeType;)i=i.lastChild;if(!i||domUtils.isFillChar(i))break;e=i.nodeValue.length}else i=h.startContainer,e=h.startOffset;h.setStart(i,e-1),f=h.toString().charCodeAt(0)}while(160!=f&&32!=f);if(h.toString().replace(new RegExp(domUtils.fillChar,"g"),"").match(/(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i)){for(;h.toString().length&&!/^(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i.test(h.toString());)try{h.setStart(h.startContainer,h.startOffset+1)}catch(j){for(var i=h.startContainer;!(next=i.nextSibling);){if(domUtils.isBody(i))return;i=i.parentNode}h.setStart(next,0)}if(domUtils.findParentByTagName(h.startContainer,"a",!0))return;var k,l=c.document.createElement("a"),m=c.document.createTextNode(" ");c.undoManger&&c.undoManger.save(),l.appendChild(h.extractContents()),l.href=l.innerHTML=l.innerHTML.replace(/<[^>]+>/g,""),k=l.getAttribute("href").replace(new RegExp(domUtils.fillChar,"g"),""),k=/^(?:https?:\/\/)/gi.test(k)?k:"http://"+k,l.setAttribute("_src",utils.html(k)),l.href=utils.html(k),h.insertNode(l),l.parentNode.insertBefore(m,l.nextSibling),h.setStart(m,0),h.collapse(!0),g.removeAllRanges(),g.addRange(h),c.undoManger&&c.undoManger.save()}}}}}},function(){function a(a){if(3==a.nodeType)return null;if("A"==a.nodeName)return a;for(var b=a.lastChild;b;){if("A"==b.nodeName)return b;if(3==b.nodeType){if(domUtils.isWhitespace(b)){b=b.previousSibling;continue}return null}b=b.lastChild}}var b={37:1,38:1,39:1,40:1,13:1,32:1};browser.ie&&this.addListener("keyup",function(c,d){var e=this,f=d.keyCode;if(b[f]){var g=e.selection.getRange(),h=g.startContainer;if(13==f){for(;h&&!domUtils.isBody(h)&&!domUtils.isBlockElm(h);)h=h.parentNode;if(h&&!domUtils.isBody(h)&&"P"==h.nodeName){var i=h.previousSibling;if(i&&1==i.nodeType){var i=a(i);i&&!i.getAttribute("_href")&&domUtils.remove(i,!0)}}}else if(32==f)3==h.nodeType&&/^\s$/.test(h.nodeValue)&&(h=h.previousSibling,h&&"A"==h.nodeName&&!h.getAttribute("_href")&&domUtils.remove(h,!0));else if(h=domUtils.findParentByTagName(h,"a",!0),h&&!h.getAttribute("_href")){var j=g.createBookmark();domUtils.remove(h,!0),g.moveToBookmark(j).select(!0)}}})}),UE.plugins.autoheight=function(){function a(){var a=this;clearTimeout(e),f||(!a.queryCommandState||a.queryCommandState&&1!=a.queryCommandState("source"))&&(e=setTimeout(function(){for(var b=a.body.lastChild;b&&1!=b.nodeType;)b=b.previousSibling;b&&1==b.nodeType&&(b.style.clear="both",d=Math.max(domUtils.getXY(b).y+b.offsetHeight+25,Math.max(h.minFrameHeight,h.initialFrameHeight)),d!=g&&(d!==parseInt(a.iframe.parentNode.style.height)&&(a.iframe.parentNode.style.height=d+"px"),a.body.style.height=d+"px",g=d),domUtils.removeStyle(b,"clear"))},50))}var b=this;if(b.autoHeightEnabled=b.options.autoHeightEnabled!==!1,b.autoHeightEnabled){var c,d,e,f,g=0,h=b.options;b.addListener("fullscreenchanged",function(a,b){f=b}),b.addListener("destroy",function(){b.removeListener("contentchange afterinserthtml keyup mouseup",a)}),b.enableAutoHeight=function(){var b=this;if(b.autoHeightEnabled){var d=b.document;b.autoHeightEnabled=!0,c=d.body.style.overflowY,d.body.style.overflowY="hidden",b.addListener("contentchange afterinserthtml keyup mouseup",a),setTimeout(function(){a.call(b)},browser.gecko?100:0),b.fireEvent("autoheightchanged",b.autoHeightEnabled)}},b.disableAutoHeight=function(){b.body.style.overflowY=c||"",b.removeListener("contentchange",a),b.removeListener("keyup",a),b.removeListener("mouseup",a),b.autoHeightEnabled=!1,b.fireEvent("autoheightchanged",b.autoHeightEnabled)},b.on("setHeight",function(){b.disableAutoHeight()}),b.addListener("ready",function(){b.enableAutoHeight();var c;domUtils.on(browser.ie?b.body:b.document,browser.webkit?"dragover":"drop",function(){ +clearTimeout(c),c=setTimeout(function(){a.call(b)},100)});var d;window.onscroll=function(){null===d?d=this.scrollY:0==this.scrollY&&0!=d&&(b.window.scrollTo(0,0),d=null)}})}},UE.plugins.autofloat=function(){function a(){return UE.ui?1:(alert(g.autofloatMsg),0)}function b(){var a=document.body.style;a.backgroundImage='url("about:blank")',a.backgroundAttachment="fixed"}function c(){var a=domUtils.getXY(k),b=domUtils.getComputedStyle(k,"position"),c=domUtils.getComputedStyle(k,"left");k.style.width=k.offsetWidth+"px",k.style.zIndex=1*f.options.zIndex+1,k.parentNode.insertBefore(q,k),o||p&&browser.ie?("absolute"!=k.style.position&&(k.style.position="absolute"),k.style.top=(document.body.scrollTop||document.documentElement.scrollTop)-l+i+"px"):(browser.ie7Compat&&r&&(r=!1,k.style.left=domUtils.getXY(k).x-document.documentElement.getBoundingClientRect().left+2+"px"),"fixed"!=k.style.position&&(k.style.position="fixed",k.style.top=i+"px",("absolute"==b||"relative"==b)&&parseFloat(c)&&(k.style.left=a.x+"px")))}function d(){r=!0,q.parentNode&&q.parentNode.removeChild(q),k.style.cssText=j}function e(){var a=m(f.container),b=f.options.toolbarTopOffset||0;a.top<0&&a.bottom-k.offsetHeight>b?c():d()}var f=this,g=f.getLang();f.setOpt({topOffset:0});var h=f.options.autoFloatEnabled!==!1,i=f.options.topOffset;if(h){var j,k,l,m,n=UE.ui.uiUtils,o=browser.ie&&browser.version<=6,p=browser.quirks,q=document.createElement("div"),r=!0,s=utils.defer(function(){e()},browser.ie?200:100,!0);f.addListener("destroy",function(){domUtils.un(window,["scroll","resize"],e),f.removeListener("keydown",s)}),f.addListener("ready",function(){if(a(f)){if(!f.ui)return;m=n.getClientRect,k=f.ui.getDom("toolbarbox"),l=m(k).top,j=k.style.cssText,q.style.height=k.offsetHeight+"px",o&&b(),domUtils.on(window,["scroll","resize"],e),f.addListener("keydown",s),f.addListener("beforefullscreenchange",function(a,b){b&&d()}),f.addListener("fullscreenchanged",function(a,b){b||e()}),f.addListener("sourcemodechanged",function(a,b){setTimeout(function(){e()},0)}),f.addListener("clearDoc",function(){setTimeout(function(){e()},0)})}})}},UE.plugins.video=function(){function a(a,b,d,e,f,g,h){a=utils.unhtmlForUrl(a),f=utils.unhtml(f),g=utils.unhtml(g).trim(),b=parseInt(b,10)||0,d=parseInt(d,10)||0;var i;switch(h){case"image":i="';break;case"embed":i='';break;case"video":var j=a.substr(a.lastIndexOf(".")+1);"ogv"==j&&(j="ogg"),i="'}return i}function b(b,c){utils.each(b.getNodesByTagName(c?"img":"embed video"),function(b){var d=b.getAttr("class");if(d&&d.indexOf("edui-faked-video")!=-1){var e=a(c?b.getAttr("_url"):b.getAttr("src"),b.getAttr("width"),b.getAttr("height"),null,b.getStyle("float")||"",d,c?"embed":"image");b.parentNode.replaceChild(UE.uNode.createElement(e),b)}if(d&&d.indexOf("edui-upload-video")!=-1){var e=a(c?b.getAttr("_url"):b.getAttr("src"),b.getAttr("width"),b.getAttr("height"),null,b.getStyle("float")||"",d,c?"video":"image");b.parentNode.replaceChild(UE.uNode.createElement(e),b)}})}var c=this;c.addOutputRule(function(a){b(a,!0)}),c.addInputRule(function(a){b(a)}),c.commands.insertvideo={execCommand:function(b,d,e){d=utils.isArray(d)?d:[d];for(var f,g,h=[],i="tmpVedio",j=0,k=d.length;j0)return 0;for(var c in dtd.$isNotEmpty)if(dtd.$isNotEmpty.hasOwnProperty(c)&&a.getElementsByTagName(c).length)return 0;return 1},b.getWidth=function(a){return a?parseInt(domUtils.getComputedStyle(a,"width"),10):0},b.getTableCellAlignState=function(a){!utils.isArray(a)&&(a=[a]);var b={},c=["align","valign"],d=null,e=!0;return utils.each(a,function(a){return utils.each(c,function(c){if(d=a.getAttribute(c),!b[c]&&d)b[c]=d;else if(!b[c]||d!==b[c])return e=!1,!1}),e}),e?b:null},b.getTableItemsByRange=function(a){var b=a.selection.getStart();b&&b.id&&0===b.id.indexOf("_baidu_bookmark_start_")&&b.nextSibling&&(b=b.nextSibling);var c=b&&domUtils.findParentByTagName(b,["td","th"],!0),d=c&&c.parentNode,e=b&&domUtils.findParentByTagName(b,"caption",!0),f=e?e.parentNode:d&&d.parentNode.parentNode;return{cell:c,tr:d,table:f,caption:e}},b.getUETableBySelected=function(a){var c=b.getTableItemsByRange(a).table;return c&&c.ueTable&&c.ueTable.selectedTds.length?c.ueTable:null},b.getDefaultValue=function(a,b){var c,d,e,f,g={thin:"0px",medium:"1px",thick:"2px"};if(b)return h=b.getElementsByTagName("td")[0],f=domUtils.getComputedStyle(b,"border-left-width"),c=parseInt(g[f]||f,10),f=domUtils.getComputedStyle(h,"padding-left"),d=parseInt(g[f]||f,10),f=domUtils.getComputedStyle(h,"border-left-width"),e=parseInt(g[f]||f,10),{tableBorder:c,tdPadding:d,tdBorder:e};b=a.document.createElement("table"),b.insertRow(0).insertCell(0).innerHTML="xxx",a.body.appendChild(b);var h=b.getElementsByTagName("td")[0];return f=domUtils.getComputedStyle(b,"border-left-width"),c=parseInt(g[f]||f,10),f=domUtils.getComputedStyle(h,"padding-left"),d=parseInt(g[f]||f,10),f=domUtils.getComputedStyle(h,"border-left-width"),e=parseInt(g[f]||f,10),domUtils.remove(b),{tableBorder:c,tdPadding:d,tdBorder:e}},b.getUETable=function(a){var c=a.tagName.toLowerCase();return a="td"==c||"th"==c||"caption"==c?domUtils.findParentByTagName(a,"table",!0):a,a.ueTable||(a.ueTable=new b(a)),a.ueTable},b.cloneCell=function(a,b,c){if(!a||utils.isString(a))return this.table.ownerDocument.createElement(a||"td");var d=domUtils.hasClass(a,"selectTdClass");d&&domUtils.removeClasses(a,"selectTdClass");var e=a.cloneNode(!0);return b&&(e.rowSpan=e.colSpan=1),!c&&domUtils.removeAttributes(e,"width height"),!c&&domUtils.removeAttributes(e,"style"),e.style.borderLeftStyle="",e.style.borderTopStyle="",e.style.borderLeftColor=a.style.borderRightColor,e.style.borderLeftWidth=a.style.borderRightWidth,e.style.borderTopColor=a.style.borderBottomColor,e.style.borderTopWidth=a.style.borderBottomWidth,d&&domUtils.addClass(a,"selectTdClass"),e},b.prototype={getMaxRows:function(){for(var a,b=this.table.rows,c=1,d=0;a=b[d];d++){for(var e,f=1,g=0;e=a.cells[g++];)f=Math.max(e.rowSpan||1,f);c=Math.max(f+d,c)}return c},getMaxCols:function(){for(var a,b=this.table.rows,c=0,d={},e=0;a=b[e];e++){for(var f,g=0,h=0;f=a.cells[h++];)if(g+=f.colSpan||1,f.rowSpan&&f.rowSpan>1)for(var i=1;ithis.rowsNum-1)?null:(e=c?h?i.endRowIndex+1:g.rowIndex+g.rowSpan:h?i.beginRowIndex-1:g.rowIndex-1,f=h?i.beginColIndex:g.colIndex,this.getCell(this.indexTable[e][f].rowIndex,this.indexTable[e][f].cellIndex))}catch(j){a(j)}},getSameEndPosCells:function(b,c){try{for(var d="x"===c.toLowerCase(),e=domUtils.getXY(b)[d?"x":"y"]+b["offset"+(d?"Width":"Height")],f=this.table.rows,g=null,h=[],i=0;ie&&d)break;if((b==j||e==l)&&(1==j[d?"colSpan":"rowSpan"]&&h.push(j),d))break}}return h}catch(m){a(m)}},setCellContent:function(a,b){a.innerHTML=b||(browser.ie?domUtils.fillChar:"
    ")},cloneCell:b.cloneCell,getSameStartPosXCells:function(b){try{for(var c,d=domUtils.getXY(b).x+b.offsetWidth,e=this.table.rows,f=[],g=0;gd)break;if(j==d&&1==h.colSpan){f.push(h);break}}}return f}catch(k){a(k)}},update:function(a){this.table=a||this.table,this.selectedTds=[],this.cellsRange={},this.indexTable=[];for(var b=this.table.rows,c=this.getMaxRows(),d=c-b.length,e=this.getMaxCols();d--;)this.table.insertRow(b.length);this.rowsNum=c,this.colsNum=e;for(var f=0,g=b.length;fc&&(j.rowSpan=c);for(var m=k,n=j.rowSpan||1,o=j.colSpan||1;this.indexTable[i][m];)m++;for(var p=0;p0)for(h=b;hf&&(m=Math.max(h,m));if(ee&&(l=Math.max(i,l));if(b>0)for(i=a;ig||d+b.colSpan-1>h)return null;j.push(this.getCell(c,b.cellIndex))}}return j},clearSelected:function(){b.removeSelectedClass(this.selectedTds),this.selectedTds=[],this.cellsRange={}},setSelected:function(a){var c=this.getCells(a);b.addSelectedClass(c),this.selectedTds=c,this.cellsRange=a},isFullRow:function(){var a=this.cellsRange;return a.endColIndex-a.beginColIndex+1==this.colsNum},isFullCol:function(){var a=this.cellsRange,b=this.table,c=b.getElementsByTagName("th"),d=a.endRowIndex-a.beginRowIndex+1;return c.length?d==this.rowsNum||d==this.rowsNum-1:d==this.rowsNum},getNextCell:function(b,c,d){try{var e,f,g=this.getCellInfo(b),h=this.selectedTds.length&&!d,i=this.cellsRange;return!c&&0==g.rowIndex||c&&(h?i.endRowIndex==this.rowsNum-1:g.rowIndex+g.rowSpan>this.rowsNum-1)?null:(e=c?h?i.endRowIndex+1:g.rowIndex+g.rowSpan:h?i.beginRowIndex-1:g.rowIndex-1,f=h?i.beginColIndex:g.colIndex,this.getCell(this.indexTable[e][f].rowIndex,this.indexTable[e][f].cellIndex))}catch(j){a(j)}},getPreviewCell:function(b,c){try{var d,e,f=this.getCellInfo(b),g=this.selectedTds.length,h=this.cellsRange;return!c&&(g?!h.beginColIndex:!f.colIndex)||c&&(g?h.endColIndex==this.colsNum-1:f.rowIndex>this.colsNum-1)?null:(d=c?g?h.beginRowIndex:f.rowIndex<1?0:f.rowIndex-1:g?h.beginRowIndex:f.rowIndex,e=c?g?h.endColIndex+1:f.colIndex:g?h.beginColIndex-1:f.colIndex<1?0:f.colIndex-1,this.getCell(this.indexTable[d][e].rowIndex,this.indexTable[d][e].cellIndex))}catch(i){a(i)}},moveContent:function(a,c){if(!b.isEmptyBlock(c)){if(b.isEmptyBlock(a))return void(a.innerHTML=c.innerHTML);var d=a.lastChild;for(3!=d.nodeType&&dtd.$block[d.tagName]||a.appendChild(a.ownerDocument.createElement("br"));d=c.firstChild;)a.appendChild(d)}},mergeRight:function(a){var b=this.getCellInfo(a),c=b.colIndex+b.colSpan,d=this.indexTable[b.rowIndex][c],e=this.getCell(d.rowIndex,d.cellIndex);a.colSpan=b.colSpan+d.colSpan,a.removeAttribute("width"),this.moveContent(a,e),this.deleteCell(e,d.rowIndex),this.update()},mergeDown:function(a){var b=this.getCellInfo(a),c=b.rowIndex+b.rowSpan,d=this.indexTable[c][b.colIndex],e=this.getCell(d.rowIndex,d.cellIndex);a.rowSpan=b.rowSpan+d.rowSpan,a.removeAttribute("height"),this.moveContent(a,e),this.deleteCell(e,d.rowIndex),this.update()},mergeRange:function(){var a=this.cellsRange,b=this.getCell(a.beginRowIndex,this.indexTable[a.beginRowIndex][a.beginColIndex].cellIndex);if("TH"==b.tagName&&a.endRowIndex!==a.beginRowIndex){var c=this.indexTable,d=this.getCellInfo(b);b=this.getCell(1,c[1][d.colIndex].cellIndex),a=this.getCellsRange(b,this.getCell(c[this.rowsNum-1][d.colIndex].rowIndex,c[this.rowsNum-1][d.colIndex].cellIndex))}for(var e,f=this.getCells(a),g=0;e=f[g++];)e!==b&&(this.moveContent(b,e),this.deleteCell(e));if(b.rowSpan=a.endRowIndex-a.beginRowIndex+1,b.rowSpan>1&&b.removeAttribute("height"),b.colSpan=a.endColIndex-a.beginColIndex+1,b.colSpan>1&&b.removeAttribute("width"),b.rowSpan==this.rowsNum&&1!=b.colSpan&&(b.colSpan=1),b.colSpan==this.colsNum&&1!=b.rowSpan){var h=b.parentNode.rowIndex;if(this.table.deleteRow)for(var g=h+1,i=h+1,j=b.rowSpan;g1&&g.rowIndex==a){var i=h.cloneNode(!0);i.rowSpan=h.rowSpan-1,i.innerHTML="",h.rowSpan=1;var j,k=a+1,l=this.table.rows[k],m=this.getPreviewMergedCellsNum(k,f)-e;m1?l.colSpan--:c[h].deleteCell(j.cellIndex),h+=j.rowSpan||1}}this.table.setAttribute("width",d-e),this.update()},splitToCells:function(a){var b=this,c=this.splitToRows(a);utils.each(c,function(a){b.splitToCols(a)})},splitToRows:function(a){var b=this.getCellInfo(a),c=b.rowIndex,d=b.colIndex,e=[];a.rowSpan=1,e.push(a);for(var f=c,g=c+b.rowSpan;f");for(var g=0;g'+(browser.ie&&browser.version<11?domUtils.fillChar:"
    ")+"");c.push("")}return"
    "+c.join("")+"
    "}b||(b=utils.extend({},{numCols:this.options.defaultCols,numRows:this.options.defaultRows,tdvalign:this.options.tdvalign}));var d=this,e=this.selection.getRange(),f=e.startContainer,h=domUtils.findParent(f,function(a){return domUtils.isBlockElm(a)},!0)||d.body,i=g(d),j=h.offsetWidth,k=Math.floor(j/b.numCols-2*i.tdPadding-i.tdBorder);!b.tdvalign&&(b.tdvalign=d.options.tdvalign),d.execCommand("inserthtml",c(b,k))}},UE.commands.insertparagraphbeforetable={queryCommandState:function(){return e(this).cell?0:-1},execCommand:function(){var a=e(this).table;if(a){var b=this.document.createElement("p");b.innerHTML=browser.ie?" ":"
    ",a.parentNode.insertBefore(b,a),this.selection.getRange().setStart(b,0).setCursor()}}},UE.commands.deletetable={queryCommandState:function(){var a=this.selection.getRange();return domUtils.findParentByTagName(a.startContainer,"table",!0)?0:-1},execCommand:function(a,b){var c=this.selection.getRange();if(b=b||domUtils.findParentByTagName(c.startContainer,"table",!0)){var d=b.nextSibling;d||(d=domUtils.createElement(this.document,"p",{innerHTML:browser.ie?domUtils.fillChar:"
    "}),b.parentNode.insertBefore(d,b)),domUtils.remove(b),c=this.selection.getRange(),3==d.nodeType?c.setStartBefore(d):c.setStart(d,0),c.setCursor(!1,!0),this.fireEvent("tablehasdeleted")}}},UE.commands.cellalign={queryCommandState:function(){return c(this).length?0:-1},execCommand:function(a,b){var d=c(this);if(d.length)for(var e,f=0;e=d[f++];)e.setAttribute("align",b)}},UE.commands.cellvalign={queryCommandState:function(){return c(this).length?0:-1},execCommand:function(a,b){var d=c(this);if(d.length)for(var e,f=0;e=d[f++];)e.setAttribute("vAlign",b)}},UE.commands.insertcaption={queryCommandState:function(){var a=e(this).table;return a&&0==a.getElementsByTagName("caption").length?1:-1},execCommand:function(){var a=e(this).table;if(a){var b=this.document.createElement("caption");b.innerHTML=browser.ie?domUtils.fillChar:"
    ",a.insertBefore(b,a.firstChild);var c=this.selection.getRange();c.setStart(b,0).setCursor()}}},UE.commands.deletecaption={queryCommandState:function(){var a=this.selection.getRange(),b=domUtils.findParentByTagName(a.startContainer,"table");return b?0==b.getElementsByTagName("caption").length?-1:1:-1},execCommand:function(){var a=this.selection.getRange(),b=domUtils.findParentByTagName(a.startContainer,"table");if(b){domUtils.remove(b.getElementsByTagName("caption")[0]);var c=this.selection.getRange();c.setStart(b.rows[0].cells[0],0).setCursor()}}},UE.commands.inserttitle={queryCommandState:function(){var a=e(this).table;if(a){var b=a.rows[0];return"th"!=b.cells[b.cells.length-1].tagName.toLowerCase()?0:-1}return-1},execCommand:function(){var a=e(this).table;a&&h(a).insertRow(0,"th");var b=a.getElementsByTagName("th")[0];this.selection.getRange().setStart(b,0).setCursor(!1,!0)}},UE.commands.deletetitle={queryCommandState:function(){var a=e(this).table;if(a){var b=a.rows[0];return"th"==b.cells[b.cells.length-1].tagName.toLowerCase()?0:-1}return-1},execCommand:function(){var a=e(this).table;a&&domUtils.remove(a.rows[0]);var b=a.getElementsByTagName("td")[0];this.selection.getRange().setStart(b,0).setCursor(!1,!0)}},UE.commands.inserttitlecol={queryCommandState:function(){var a=e(this).table;if(a){var b=a.rows[a.rows.length-1];return b.getElementsByTagName("th").length?-1:0}return-1},execCommand:function(b){var c=e(this).table;c&&h(c).insertCol(0,"th"),a(c,this);var d=c.getElementsByTagName("th")[0];this.selection.getRange().setStart(d,0).setCursor(!1,!0)}},UE.commands.deletetitlecol={queryCommandState:function(){var a=e(this).table;if(a){var b=a.rows[a.rows.length-1];return b.getElementsByTagName("th").length?0:-1}return-1},execCommand:function(){var b=e(this).table;if(b)for(var c=0;c=f.colsNum)return-1;var j=f.indexTable[g.rowIndex][i],k=c.rows[j.rowIndex].cells[j.cellIndex];return k&&d.tagName==k.tagName&&j.rowIndex==g.rowIndex&&j.rowSpan==g.rowSpan?0:-1},execCommand:function(a){var b=this.selection.getRange(),c=b.createBookmark(!0),d=e(this).cell,f=h(d);f.mergeRight(d),b.moveToBookmark(c).select()}},UE.commands.mergedown={queryCommandState:function(a){var b=e(this),c=b.table,d=b.cell;if(!c||!d)return-1;var f=h(c);if(f.selectedTds.length)return-1;var g=f.getCellInfo(d),i=g.rowIndex+g.rowSpan;if(i>=f.rowsNum)return-1;var j=f.indexTable[i][g.colIndex],k=c.rows[j.rowIndex].cells[j.cellIndex];return k&&d.tagName==k.tagName&&j.colIndex==g.colIndex&&j.colSpan==g.colSpan?0:-1},execCommand:function(){var a=this.selection.getRange(),b=a.createBookmark(!0),c=e(this).cell,d=h(c);d.mergeDown(c),a.moveToBookmark(b).select()}},UE.commands.mergecells={queryCommandState:function(){return f(this)?0:-1},execCommand:function(){var a=f(this);if(a&&a.selectedTds.length){var b=a.selectedTds[0];a.mergeRange();var c=this.selection.getRange();domUtils.isEmptyBlock(b)?c.setStart(b,0).collapse(!0):c.selectNodeContents(b),c.select()}}},UE.commands.insertrow={queryCommandState:function(){var a=e(this),b=a.cell;return b&&("TD"==b.tagName||"TH"==b.tagName&&a.tr!==a.table.rows[0])&&h(a.table).rowsNum0?-1:b&&(b.colSpan>1||b.rowSpan>1)?0:-1},execCommand:function(){var a=this.selection.getRange(),b=a.createBookmark(!0),c=e(this).cell,d=h(c);d.splitToCells(c),a.moveToBookmark(b).select()}},UE.commands.splittorows={queryCommandState:function(){var a=e(this),b=a.cell;if(!b)return-1;var c=h(a.table);return c.selectedTds.length>0?-1:b&&b.rowSpan>1?0:-1},execCommand:function(){var a=this.selection.getRange(),b=a.createBookmark(!0),c=e(this).cell,d=h(c);d.splitToRows(c),a.moveToBookmark(b).select()}},UE.commands.splittocols={queryCommandState:function(){var a=e(this),b=a.cell;if(!b)return-1;var c=h(a.table);return c.selectedTds.length>0?-1:b&&b.colSpan>1?0:-1},execCommand:function(){var a=this.selection.getRange(),b=a.createBookmark(!0),c=e(this).cell,d=h(c);d.splitToCols(c),a.moveToBookmark(b).select()}},UE.commands.adaptbytext=UE.commands.adaptbywindow={queryCommandState:function(){return e(this).table?0:-1},execCommand:function(b){var c=e(this),d=c.table;if(d)if("adaptbywindow"==b)a(d,this);else{var f=domUtils.getElementsByTagName(d,"td th");utils.each(f,function(a){a.removeAttribute("width")}),d.removeAttribute("width")}}},UE.commands.averagedistributecol={queryCommandState:function(){var a=f(this);return a&&(a.isFullRow()||a.isFullCol())?0:-1},execCommand:function(a){function b(){var a,b=e.table,c=0,f=0,h=g(d,b);if(e.isFullRow())c=b.offsetWidth,f=e.colsNum;else for(var i,j=e.cellsRange.beginColIndex,k=e.cellsRange.endColIndex,l=j;l<=k;)i=e.selectedTds[l],c+=i.offsetWidth,l+=i.colSpan,f+=1;return a=Math.ceil(c/f)-2*h.tdBorder-2*h.tdPadding}function c(a){utils.each(domUtils.getElementsByTagName(e.table,"th"),function(a){a.setAttribute("width","")});var b=e.isFullRow()?domUtils.getElementsByTagName(e.table,"td"):e.selectedTds;utils.each(b,function(b){1==b.colSpan&&b.setAttribute("width",a)})}var d=this,e=f(d);e&&e.selectedTds.length&&c(b())}},UE.commands.averagedistributerow={queryCommandState:function(){var a=f(this);return a?a.selectedTds&&/th/gi.test(a.selectedTds[0].tagName)?-1:a.isFullRow()||a.isFullCol()?0:-1:-1},execCommand:function(a){function b(){var a,b,c=0,f=e.table,h=g(d,f),i=parseInt(domUtils.getComputedStyle(f.getElementsByTagName("td")[0],"padding-top"));if(e.isFullCol()){var j,k,l=domUtils.getElementsByTagName(f,"caption"),m=domUtils.getElementsByTagName(f,"th");l.length>0&&(j=l[0].offsetHeight),m.length>0&&(k=m[0].offsetHeight),c=f.offsetHeight-(j||0)-(k||0),b=0==m.length?e.rowsNum:e.rowsNum-1}else{for(var n=e.cellsRange.beginRowIndex,o=e.cellsRange.endRowIndex,p=0,q=domUtils.getElementsByTagName(f,"tr"),r=n;r<=o;r++)c+=q[r].offsetHeight,p+=1;b=p}return a=browser.ie&&browser.version<9?Math.ceil(c/b):Math.ceil(c/b)-2*h.tdBorder-2*i}function c(a){var b=e.isFullCol()?domUtils.getElementsByTagName(e.table,"td"):e.selectedTds;utils.each(b,function(b){1==b.rowSpan&&b.setAttribute("height",a)})}var d=this,e=f(d);e&&e.selectedTds.length&&c(b())}},UE.commands.cellalignment={queryCommandState:function(){return e(this).table?0:-1},execCommand:function(a,b){var c=this,d=f(c);if(d)utils.each(d.selectedTds,function(a){domUtils.setAttributes(a,b)});else{var e=c.selection.getStart(),g=e&&domUtils.findParentByTagName(e,["td","th","caption"],!0);/caption/gi.test(g.tagName)?(g.style.textAlign=b.align,g.style.verticalAlign=b.vAlign):domUtils.setAttributes(g,b),c.selection.getRange().setCursor(!0)}},queryCommandValue:function(a){var b=e(this).cell;if(b||(b=c(this)[0]),b){var d=UE.UETable.getUETable(b).selectedTds;return!d.length&&(d=b),UE.UETable.getTableCellAlignState(d)}return null}},UE.commands.tablealignment={queryCommandState:function(){return browser.ie&&browser.version<8?-1:e(this).table?0:-1},execCommand:function(a,b){var c=this,d=c.selection.getStart(),e=d&&domUtils.findParentByTagName(d,["table"],!0);e&&e.setAttribute("align",b)}},UE.commands.edittable={queryCommandState:function(){return e(this).table?0:-1},execCommand:function(a,b){var c=this.selection.getRange(),d=domUtils.findParentByTagName(c.startContainer,"table");if(d){var e=domUtils.getElementsByTagName(d,"td").concat(domUtils.getElementsByTagName(d,"th"),domUtils.getElementsByTagName(d,"caption"));utils.each(e,function(a){a.style.borderColor=b})}}},UE.commands.edittd={queryCommandState:function(){return e(this).table?0:-1},execCommand:function(a,b){var c=this,d=f(c);if(d)utils.each(d.selectedTds,function(a){a.style.backgroundColor=b});else{var e=c.selection.getStart(),g=e&&domUtils.findParentByTagName(e,["td","th","caption"],!0);g&&(g.style.backgroundColor=b)}}},UE.commands.settablebackground={queryCommandState:function(){return c(this).length>1?0:-1},execCommand:function(a,b){var d,e;d=c(this),e=h(d[0]),e.setBackground(d,b)}},UE.commands.cleartablebackground={queryCommandState:function(){var a=c(this);if(!a.length)return-1;for(var b,d=0;b=a[d++];)if(""!==b.style.backgroundColor)return 0;return-1},execCommand:function(){var a=c(this),b=h(a[0]);b.removeBackground(a)}},UE.commands.interlacetable=UE.commands.uninterlacetable={queryCommandState:function(a){var b=e(this).table;if(!b)return-1;var c=b.getAttribute("interlaced");return"interlacetable"==a?"enabled"===c?-1:0:c&&"disabled"!==c?0:-1},execCommand:function(a,b){var c=e(this).table;"interlacetable"==a?(c.setAttribute("interlaced","enabled"),this.fireEvent("interlacetable",c,b)):(c.setAttribute("interlaced","disabled"),this.fireEvent("uninterlacetable",c))}},UE.commands.setbordervisible={queryCommandState:function(a){var b=e(this).table;return b?0:-1},execCommand:function(){var a=e(this).table;utils.each(domUtils.getElementsByTagName(a,"td"),function(a){a.style.borderWidth="1px",a.style.borderStyle="solid"})}}}(),UE.plugins.table=function(){function a(a){}function b(a,b){c(a,"width",!0),c(a,"height",!0)}function c(a,b,c){a.style[b]&&(c&&a.setAttribute(b,parseInt(a.style[b],10)),a.style[b]="")}function d(a){if("TD"==a.tagName||"TH"==a.tagName)return a;var b;return(b=domUtils.findParentByTagName(a,"td",!0)||domUtils.findParentByTagName(a,"th",!0))?b:null}function e(a){var b=new RegExp(domUtils.fillChar,"g");if(a[browser.ie?"innerText":"textContent"].replace(/^\s*$/,"").replace(b,"").length>0)return 0;for(var c in dtd.$isNotEmpty)if(a.getElementsByTagName(c).length)return 0;return 1}function f(a){return a.pageX||a.pageY?{x:a.pageX,y:a.pageY}:{x:a.clientX+N.document.body.scrollLeft-N.document.body.clientLeft,y:a.clientY+N.document.body.scrollTop-N.document.body.clientTop}}function g(b){if(!A())try{var c,e=d(b.target||b.srcElement);if(R&&(N.body.style.webkitUserSelect="none",(Math.abs(V.x-b.clientX)>T||Math.abs(V.y-b.clientY)>T)&&(t(),R=!1,U=0,v(b))),ca&&ha)return U=0,N.body.style.webkitUserSelect="none",N.selection.getNative()[browser.ie9below?"empty":"removeAllRanges"](),c=f(b),m(N,!0,ca,c,e),void("h"==ca?ga.style.left=k(ha,b)+"px":"v"==ca&&(ga.style.top=l(ha,b)+"px"));if(e){if(N.fireEvent("excludetable",e)===!0)return;c=f(b);var g=n(e,c),i=domUtils.findParentByTagName(e,"table",!0);if(j(i,e,b,!0)){if(N.fireEvent("excludetable",i)===!0)return;N.body.style.cursor="url("+N.options.cursorpath+"h.png),pointer"}else if(j(i,e,b)){if(N.fireEvent("excludetable",i)===!0)return;N.body.style.cursor="url("+N.options.cursorpath+"v.png),pointer"}else{N.body.style.cursor="text";/\d/.test(g)&&(g=g.replace(/\d/,""),e=Y(e).getPreviewCell(e,"v"==g)),m(N,!!e&&!!g,e?g:"",c,e)}}else h(!1,i,N)}catch(o){a(o)}}function h(a,b,c){if(a)i(b,c);else{if(fa)return;la=setTimeout(function(){!fa&&ea&&ea.parentNode&&ea.parentNode.removeChild(ea)},2e3)}}function i(a,b){function c(c,d){clearTimeout(g),g=setTimeout(function(){b.fireEvent("tableClicked",a,d)},300)}function d(c){clearTimeout(g);var d=Y(a),e=a.rows[0].cells[0],f=d.getLastCell(),h=d.getCellsRange(e,f);b.selection.getRange().setStart(e,0).setCursor(!1,!0),d.setSelected(h)}var e=domUtils.getXY(a),f=a.ownerDocument;if(ea&&ea.parentNode)return ea;ea=f.createElement("div"),ea.contentEditable=!1,ea.innerHTML="",ea.style.cssText="width:15px;height:15px;background-image:url("+b.options.UEDITOR_HOME_URL+"dialogs/table/dragicon.png);position: absolute;cursor:move;top:"+(e.y-15)+"px;left:"+e.x+"px;",domUtils.unSelectable(ea),ea.onmouseover=function(a){fa=!0},ea.onmouseout=function(a){fa=!1},domUtils.on(ea,"click",function(a,b){c(b,this)}),domUtils.on(ea,"dblclick",function(a,b){d(b)}),domUtils.on(ea,"dragstart",function(a,b){domUtils.preventDefault(b)});var g;f.body.appendChild(ea)}function j(a,b,c,d){var e=f(c),g=n(b,e);if(d){var h=a.getElementsByTagName("caption")[0],i=h?h.offsetHeight:0;return"v1"==g&&e.y-domUtils.getXY(a).y-i<8}return"h1"==g&&e.x-domUtils.getXY(a).x<8}function k(a,b){var c=Y(a);if(c){var d=c.getSameEndPosCells(a,"x")[0],e=c.getSameStartPosXCells(a)[0],g=f(b).x,h=(d?domUtils.getXY(d).x:domUtils.getXY(c.table).x)+20,i=e?domUtils.getXY(e).x+e.offsetWidth-20:N.body.offsetWidth+5||parseInt(domUtils.getComputedStyle(N.body,"width"),10);return h+=Q,i-=Q,gi?i:g}}function l(b,c){try{var d=domUtils.getXY(b).y,e=f(c).y;return ek[c]?(a=!1,!1):void l.push(d)});var b=a?l:k;utils.each(i,function(a,c){a.width=b[c]-G()})},0)}}}}function q(a){if(_(domUtils.getElementsByTagName(N.body,"td th")),utils.each(N.document.getElementsByTagName("table"),function(a){a.ueTable=null}),aa=M(N,a)){var b=domUtils.findParentByTagName(aa,"table",!0);ut=Y(b),ut&&ut.clearSelected(),da?r(a):(N.document.body.style.webkitUserSelect="",ia=!0,N.addListener("mouseover",x))}}function r(a){browser.ie&&(a=u(a)),t(),R=!0,O=setTimeout(function(){v(a)},W)}function s(a,b){for(var c=[],d=null,e=0,f=a.length;e0&&U--},W),2===U))return U=0,void p(b);if(2!=b.button){var c=this,d=c.selection.getRange(),e=domUtils.findParentByTagName(d.startContainer,"table",!0),f=domUtils.findParentByTagName(d.endContainer,"table",!0);if((e||f)&&(e===f?(e=domUtils.findParentByTagName(d.startContainer,["td","th","caption"],!0),f=domUtils.findParentByTagName(d.endContainer,["td","th","caption"],!0),e!==f&&c.selection.clearRange()):c.selection.clearRange()),ia=!1,c.document.body.style.webkitUserSelect="",ca&&ha&&(c.selection.getNative()[browser.ie9below?"empty":"removeAllRanges"](),U=0,ga=c.document.getElementById("ue_tableDragLine"))){var g=domUtils.getXY(ha),h=domUtils.getXY(ga);switch(ca){case"h":z(ha,h.x-g.x);break;case"v":B(ha,h.y-g.y-ha.offsetHeight)}return ca="",ha=null,I(c),void c.fireEvent("saveScene")}if(aa){var i=Y(aa),j=i?i.selectedTds[0]:null;if(j)d=new dom.Range(c.document),domUtils.isEmptyBlock(j)?d.setStart(j,0).setCursor(!1,!0):d.selectNodeContents(j).shrinkBoundary().setCursor(!1,!0);else if(d=c.selection.getRange().shrinkBoundary(),!d.collapsed){var e=domUtils.findParentByTagName(d.startContainer,["td","th"],!0),f=domUtils.findParentByTagName(d.endContainer,["td","th"],!0);(e&&!f||!e&&f||e&&f&&e!==f)&&d.setCursor(!1,!0)}aa=null,c.removeListener("mouseover",x)}else{var k=domUtils.findParentByTagName(b.target||b.srcElement,"td",!0);if(k||(k=domUtils.findParentByTagName(b.target||b.srcElement,"th",!0)),k&&("TD"==k.tagName||"TH"==k.tagName)){if(c.fireEvent("excludetable",k)===!0)return;d=new dom.Range(c.document),d.setStart(k,0).setCursor(!1,!0)}}c._selectionChange(250,b)}}}function x(a,b){if(!A()){var c=this,d=b.target||b.srcElement;if(ba=domUtils.findParentByTagName(d,"td",!0)||domUtils.findParentByTagName(d,"th",!0),aa&&ba&&("TD"==aa.tagName&&"TD"==ba.tagName||"TH"==aa.tagName&&"TH"==ba.tagName)&&domUtils.findParentByTagName(aa,"table")==domUtils.findParentByTagName(ba,"table")){var e=Y(ba);if(aa!=ba){c.document.body.style.webkitUserSelect="none",c.selection.getNative()[browser.ie9below?"empty":"removeAllRanges"]();var f=e.getCellsRange(aa,ba);e.setSelected(f)}else c.document.body.style.webkitUserSelect="",e.clearSelected()}b.preventDefault?b.preventDefault():b.returnValue=!1}}function y(a,b,c){var d=parseInt(domUtils.getComputedStyle(a,"line-height"),10),e=c+b;b=ef?(c&&g.push({left:a}),!1):void 0})}),g}function D(a,b,c){if(a-=G(),a<0)return 0;a-=E(b);var d=a<0?"left":"right";return a=Math.abs(a),utils.each(c,function(b){var c=b[d];c&&(a=Math.min(a,E(c)-Q))}),a=a<0?0:a,"left"===d?-a:a}function E(a){var b=0,b=a.offsetWidth-G();a.nextSibling||(b-=F(a)),b=b<0?0:b;try{a.width=b}catch(c){}return b}function F(a){if(tab=domUtils.findParentByTagName(a,"table",!1),void 0===tab.offsetVal){var b=a.previousSibling;b?tab.offsetVal=a.offsetWidth-b.offsetWidth===X.borderWidth?X.borderWidth:0:tab.offsetVal=0}return tab.offsetVal}function G(){if(void 0===X.tabcellSpace){var a=N.document.createElement("table"),b=N.document.createElement("tbody"),c=N.document.createElement("tr"),d=N.document.createElement("td"),e=null;d.style.cssText="border: 0;",d.width=1,c.appendChild(d),c.appendChild(e=d.cloneNode(!1)),b.appendChild(c),a.appendChild(b),a.style.cssText="visibility: hidden;",N.body.appendChild(a),X.paddingSpace=d.offsetWidth-1;var f=a.offsetWidth;d.style.cssText="",e.style.cssText="",X.borderWidth=(a.offsetWidth-f)/3,X.tabcellSpace=X.paddingSpace+X.borderWidth,N.body.removeChild(a)}return G=function(){return X.tabcellSpace},X.tabcellSpace}function H(a,b){ia||(ga=a.document.createElement("div"),domUtils.setAttributes(ga,{id:"ue_tableDragLine",unselectable:"on",contenteditable:!1,onresizestart:"return false",ondragstart:"return false",onselectstart:"return false",style:"background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)"}),a.body.appendChild(ga))}function I(a){if(!ia)for(var b;b=a.document.getElementById("ue_tableDragLine");)domUtils.remove(b)}function J(a,b){if(b){var c,d=domUtils.findParentByTagName(b,"table"),e=d.getElementsByTagName("caption"),f=d.offsetWidth,g=d.offsetHeight-(e.length>0?e[0].offsetHeight:0),h=domUtils.getXY(d),i=domUtils.getXY(b);switch(a){case"h":c="height:"+g+"px;top:"+(h.y+(e.length>0?e[0].offsetHeight:0))+"px;left:"+(i.x+b.offsetWidth),ga.style.cssText=c+"px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)";break;case"v":c="width:"+f+"px;left:"+h.x+"px;top:"+(i.y+b.offsetHeight),ga.style.cssText=c+"px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)"}}}function K(a,b){for(var c,d,e=domUtils.getElementsByTagName(a.body,"table"),f=0;d=e[f++];){var g=domUtils.getElementsByTagName(d,"td");g[0]&&(b?(c=g[0].style.borderColor.replace(/\s/g,""),/(#ffffff)|(rgb\(255,255,255\))/gi.test(c)&&domUtils.addClass(d,"noBorderTable")):domUtils.removeClasses(d,"noBorderTable"))}}function L(a,b,c){var d=a.body;return d.offsetWidth-(b?2*parseInt(domUtils.getComputedStyle(d,"margin-left"),10):0)-2*c.tableBorder-(a.options.offsetWidth||0)}function M(a,b){var c=domUtils.findParentByTagName(b.target||b.srcElement,["td","th"],!0),d=null;if(!c)return null;if(d=n(c,f(b)),!c)return null;if("h1"===d&&c.previousSibling){var e=domUtils.getXY(c),g=c.offsetWidth;Math.abs(e.x+g-b.clientX)>g/3&&(c=c.previousSibling)}else if("v1"===d&&c.parentNode.previousSibling){var e=domUtils.getXY(c),h=c.offsetHeight;Math.abs(e.y+h-b.clientY)>h/3&&(c=c.parentNode.previousSibling.firstChild)}return c&&a.fireEvent("excludetable",c)!==!0?c:null}var N=this,O=null,P=null,Q=5,R=!1,S=5,T=10,U=0,V=null,W=360,X=UE.UETable,Y=function(a){return X.getUETable(a)},Z=function(a){return X.getUETableBySelected(a)},$=function(a,b){return X.getDefaultValue(a,b)},_=function(a){return X.removeSelectedClass(a)};N.ready(function(){var a=this,b=a.selection.getText;a.selection.getText=function(){var c=Z(a);if(c){var d="";return utils.each(c.selectedTds,function(a){d+=a[browser.ie?"innerText":"textContent"]}),d}return b.call(a.selection)}});var aa=null,ba=null,ca="",da=!1,ea=null,fa=!1,ga=null,ha=null,ia=!1,ja=!0;N.setOpt({maxColNum:20,maxRowNum:100,defaultCols:5,defaultRows:5,tdvalign:"top",cursorpath:N.options.UEDITOR_HOME_URL+"themes/default/images/cursor_",tableDragable:!1,classList:["ue-table-interlace-color-single","ue-table-interlace-color-double"]}),N.getUETable=Y;var ka={deletetable:1,inserttable:1,cellvalign:1,insertcaption:1,deletecaption:1,inserttitle:1,deletetitle:1,mergeright:1,mergedown:1,mergecells:1,insertrow:1,insertrownext:1,deleterow:1,insertcol:1,insertcolnext:1,deletecol:1,splittocells:1,splittorows:1,splittocols:1,adaptbytext:1,adaptbywindow:1,adaptbycustomer:1,insertparagraph:1,insertparagraphbeforetable:1,averagedistributecol:1,averagedistributerow:1};N.ready(function(){utils.cssRule("table",".selectTdClass{background-color:#edf5fa !important}table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}table{margin-bottom:10px;border-collapse:collapse;display:table;}td,th{padding: 5px 10px;border: 1px solid #DDD;}caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}th{border-top:1px solid #BBB;background-color:#F7F7F7;}table tr.firstRow th{border-top-width:2px;}.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }td p{margin:0;padding:0;}",N.document);var a,c,f;N.addListener("keydown",function(b,d){var g=this,h=d.keyCode||d.which;if(8==h){var i=Z(g);i&&i.selectedTds.length&&(i.isFullCol()?g.execCommand("deletecol"):i.isFullRow()?g.execCommand("deleterow"):g.fireEvent("delcells"),domUtils.preventDefault(d));var j=domUtils.findParentByTagName(g.selection.getStart(),"caption",!0),k=g.selection.getRange();if(k.collapsed&&j&&e(j)){g.fireEvent("saveScene");var l=j.parentNode;domUtils.remove(j),l&&k.setStart(l.rows[0].cells[0],0).setCursor(!1,!0),g.fireEvent("saveScene")}}if(46==h&&(i=Z(g))){g.fireEvent("saveScene");for(var m,n=0;m=i.selectedTds[n++];)domUtils.fillNode(g.document,m);g.fireEvent("saveScene"),domUtils.preventDefault(d)}if(13==h){var o=g.selection.getRange(),j=domUtils.findParentByTagName(o.startContainer,"caption",!0);if(j){var l=domUtils.findParentByTagName(j,"table");return o.collapsed?j&&o.setStart(l.rows[0].cells[0],0).setCursor(!1,!0):(o.deleteContents(),g.fireEvent("saveScene")),void domUtils.preventDefault(d)}if(o.collapsed){var l=domUtils.findParentByTagName(o.startContainer,"table");if(l){var p=l.rows[0].cells[0],q=domUtils.findParentByTagName(g.selection.getStart(),["td","th"],!0),r=l.previousSibling;if(p===q&&(!r||1==r.nodeType&&"TABLE"==r.tagName)&&domUtils.isStartInblock(o)){var s=domUtils.findParent(g.selection.getStart(),function(a){return domUtils.isBlockElm(a)},!0);s&&(/t(h|d)/i.test(s.tagName)||s===q.firstChild)&&(g.execCommand("insertparagraphbeforetable"),domUtils.preventDefault(d))}}}}if((d.ctrlKey||d.metaKey)&&"67"==d.keyCode){a=null;var i=Z(g);if(i){var t=i.selectedTds;c=i.isFullCol(),f=i.isFullRow(),a=[[i.cloneCell(t[0],null,!0)]];for(var m,n=1;m=t[n];n++)m.parentNode!==t[n-1].parentNode?a.push([i.cloneCell(m,null,!0)]):a[a.length-1].push(i.cloneCell(m,null,!0))}}}),N.addListener("tablehasdeleted",function(){m(this,!1,"",null),ea&&domUtils.remove(ea)}),N.addListener("beforepaste",function(d,g){var h=this,i=h.selection.getRange();if(domUtils.findParentByTagName(i.startContainer,"caption",!0)){var j=h.document.createElement("div");return j.innerHTML=g.html,void(g.html=j[browser.ie9below?"innerText":"textContent"])}var k=Z(h);if(a){h.fireEvent("saveScene");var l,m,i=h.selection.getRange(),n=domUtils.findParentByTagName(i.startContainer,["td","th"],!0);if(n){var o=Y(n);if(f){var p=o.getCellInfo(n).rowIndex;"TH"==n.tagName&&p++;for(var q,r=0;q=a[r++];){for(var s,t=o.insertRow(p++,"td"),u=0;s=q[u];u++){var v=t.cells[u];v||(v=t.insertCell(u)),v.innerHTML=s.innerHTML,s.getAttribute("width")&&v.setAttribute("width",s.getAttribute("width")),s.getAttribute("vAlign")&&v.setAttribute("vAlign",s.getAttribute("vAlign")),s.getAttribute("align")&&v.setAttribute("align",s.getAttribute("align")),s.style.cssText&&(v.style.cssText=s.style.cssText)}for(var s,u=0;(s=t.cells[u])&&q[u];u++)s.innerHTML=q[u].innerHTML,q[u].getAttribute("width")&&s.setAttribute("width",q[u].getAttribute("width")),q[u].getAttribute("vAlign")&&s.setAttribute("vAlign",q[u].getAttribute("vAlign")),q[u].getAttribute("align")&&s.setAttribute("align",q[u].getAttribute("align")),q[u].style.cssText&&(s.style.cssText=q[u].style.cssText)}}else{if(c){y=o.getCellInfo(n);for(var s,w=0,u=0,q=a[0];s=q[u++];)w+=s.colSpan||1;for(h.__hasEnterExecCommand=!0,r=0;r1&&(x.rowSpan=1)}var z=$(h),A=h.body.offsetWidth-(ja?2*parseInt(domUtils.getComputedStyle(h.body,"margin-left"),10):0)-2*z.tableBorder-(h.options.offsetWidth||0);h.execCommand("insertHTML",""+k.innerHTML.replace(/>\s*<").replace(/\bth\b/gi,"td")+"
    ")}return h.fireEvent("contentchange"),h.fireEvent("saveScene"),g.html="",!0}var B,j=h.document.createElement("div");j.innerHTML=g.html,B=j.getElementsByTagName("table"),domUtils.findParentByTagName(h.selection.getStart(),"table")?(utils.each(B,function(a){domUtils.remove(a)}),domUtils.findParentByTagName(h.selection.getStart(),"caption",!0)&&(j.innerHTML=j[browser.ie?"innerText":"textContent"])):utils.each(B,function(a){b(a,!0),domUtils.removeAttributes(a,["style","border"]),utils.each(domUtils.getElementsByTagName(a,"td"),function(a){e(a)&&domUtils.fillNode(h.document,a),b(a,!0)})}),g.html=j.innerHTML}),N.addListener("afterpaste",function(){utils.each(domUtils.getElementsByTagName(N.body,"table"),function(a){if(a.offsetWidth>N.body.offsetWidth){var b=$(N,a);a.style.width=N.body.offsetWidth-(ja?2*parseInt(domUtils.getComputedStyle(N.body,"margin-left"),10):0)-2*b.tableBorder-(N.options.offsetWidth||0)+"px"}})}),N.addListener("blur",function(){a=null});var i;N.addListener("keydown",function(){clearTimeout(i),i=setTimeout(function(){var a=N.selection.getRange(),b=domUtils.findParentByTagName(a.startContainer,["th","td"],!0);if(b){var c=b.parentNode.parentNode.parentNode;c.offsetWidth>c.getAttribute("width")&&(b.style.wordBreak="break-all")}},100)}),N.addListener("selectionchange",function(){m(N,!1,"",null)}),N.addListener("contentchange",function(){var a=this;if(I(a),!Z(a)){var b=a.selection.getRange(),c=b.startContainer;c=domUtils.findParentByTagName(c,["td","th"],!0),utils.each(domUtils.getElementsByTagName(a.document,"table"),function(b){a.fireEvent("excludetable",b)!==!0&&(b.ueTable=new X(b),b.onmouseover=function(){a.fireEvent("tablemouseover",b)},b.onmousemove=function(){a.fireEvent("tablemousemove",b),a.options.tableDragable&&h(!0,this,a),utils.defer(function(){a.fireEvent("contentchange",50)},!0)},b.onmouseout=function(){a.fireEvent("tablemouseout",b),m(a,!1,"",null),I(a)},b.onclick=function(b){b=a.window.event||b;var c=d(b.target||b.srcElement);if(c){var e,f=Y(c),g=f.table,h=f.getCellInfo(c),i=a.selection.getRange();if(j(g,c,b,!0)){var k=f.getCell(f.indexTable[f.rowsNum-1][h.colIndex].rowIndex,f.indexTable[f.rowsNum-1][h.colIndex].cellIndex);return void(b.shiftKey&&f.selectedTds.length?f.selectedTds[0]!==k?(e=f.getCellsRange(f.selectedTds[0],k),f.setSelected(e)):i&&i.selectNodeContents(k).select():c!==k?(e=f.getCellsRange(c,k),f.setSelected(e)):i&&i.selectNodeContents(k).select())}if(j(g,c,b)){var l=f.getCell(f.indexTable[h.rowIndex][f.colsNum-1].rowIndex,f.indexTable[h.rowIndex][f.colsNum-1].cellIndex);b.shiftKey&&f.selectedTds.length?f.selectedTds[0]!==l?(e=f.getCellsRange(f.selectedTds[0],l),f.setSelected(e)):i&&i.selectNodeContents(l).select():c!==l?(e=f.getCellsRange(c,l),f.setSelected(e)):i&&i.selectNodeContents(l).select()}}})}),K(a,!0)}}),domUtils.on(N.document,"mousemove",g),domUtils.on(N.document,"mouseout",function(a){var b=a.target||a.srcElement;"TABLE"==b.tagName&&m(N,!1,"",null)}),N.addListener("interlacetable",function(a,b,c){if(b)for(var d=this,e=b.rows,f=e.length,g=function(a,b,c){return a[b]?a[b]:c?a[b%a.length]:""},h=0;h1?k:f.getCellInfo(d).rowIndex;var g=f.getTabNextCell(d,k);g?e(g)?a.setStart(g,0).setCursor(!1,!0):a.selectNodeContents(g).select():(N.fireEvent("saveScene"),N.__hasEnterExecCommand=!0,this.execCommand("insertrownext"),N.__hasEnterExecCommand=!1,a=this.selection.getRange(),a.setStart(c.rows[c.rows.length-1].cells[0],0).setCursor(),N.fireEvent("saveScene"))}return!0}}),browser.ie&&N.addListener("selectionchange",function(){m(this,!1,"",null)}),N.addListener("keydown",function(a,b){var c=this,d=b.keyCode||b.which;if(8!=d&&46!=d){var e=!(b.ctrlKey||b.metaKey||b.shiftKey||b.altKey);e&&_(domUtils.getElementsByTagName(c.body,"td"));var f=Z(c);f&&e&&f.clearSelected()}}),N.addListener("beforegetcontent",function(){K(this,!1),browser.ie&&utils.each(this.document.getElementsByTagName("caption"),function(a){domUtils.isEmptyNode(a)&&(a.innerHTML=" ")})}),N.addListener("aftergetcontent",function(){K(this,!0)}),N.addListener("getAllHtml",function(){_(N.document.getElementsByTagName("td"))}),N.addListener("fullscreenchanged",function(a,b){if(!b){var c=this.body.offsetWidth/document.body.offsetWidth,d=domUtils.getElementsByTagName(this.body,"table");utils.each(d,function(a){if(a.offsetWidth1||c[e].getAttribute("rowspan")>1)return-1;return b?"enablesort"==a^"sortEnabled"!=b.getAttribute("data-sort")?-1:0:-1},execCommand:function(a){var b=d(this).table;b.setAttribute("data-sort","enablesort"==a?"sortEnabled":"sortDisabled"),"enablesort"==a?domUtils.addClass(b,"sortEnabled"):domUtils.removeClasses(b,"sortEnabled")}}},UE.plugins.contextmenu=function(){var a=this;if(a.setOpt("enableContextMenu",!0),a.getOpt("enableContextMenu")!==!1){var b,c=a.getLang("contextMenu"),d=a.options.contextMenu||[{label:c.selectall,cmdName:"selectall"},{label:c.cleardoc,cmdName:"cleardoc",exec:function(){confirm(c.confirmclear)&&this.execCommand("cleardoc")}},"-",{label:c.unlink,cmdName:"unlink"},"-",{group:c.paragraph,icon:"justifyjustify",subMenu:[{label:c.justifyleft,cmdName:"justify",value:"left"},{label:c.justifyright,cmdName:"justify",value:"right"},{label:c.justifycenter,cmdName:"justify",value:"center"},{label:c.justifyjustify,cmdName:"justify",value:"justify"}]},"-",{group:c.table,icon:"table",subMenu:[{label:c.inserttable,cmdName:"inserttable"},{label:c.deletetable,cmdName:"deletetable"},"-",{label:c.deleterow,cmdName:"deleterow"},{label:c.deletecol,cmdName:"deletecol"},{label:c.insertcol,cmdName:"insertcol"},{label:c.insertcolnext,cmdName:"insertcolnext"},{label:c.insertrow,cmdName:"insertrow"},{label:c.insertrownext,cmdName:"insertrownext"},"-",{label:c.insertcaption,cmdName:"insertcaption"},{label:c.deletecaption,cmdName:"deletecaption"},{label:c.inserttitle,cmdName:"inserttitle"},{label:c.deletetitle,cmdName:"deletetitle"},{label:c.inserttitlecol,cmdName:"inserttitlecol"},{label:c.deletetitlecol,cmdName:"deletetitlecol"},"-",{label:c.mergecells,cmdName:"mergecells"},{label:c.mergeright,cmdName:"mergeright"},{label:c.mergedown,cmdName:"mergedown"},"-",{label:c.splittorows,cmdName:"splittorows"},{label:c.splittocols,cmdName:"splittocols"},{label:c.splittocells,cmdName:"splittocells"},"-",{label:c.averageDiseRow,cmdName:"averagedistributerow"},{label:c.averageDisCol,cmdName:"averagedistributecol"},"-",{label:c.edittd,cmdName:"edittd",exec:function(){UE.ui.edittd&&new UE.ui.edittd(this),this.getDialog("edittd").open()}},{label:c.edittable,cmdName:"edittable",exec:function(){UE.ui.edittable&&new UE.ui.edittable(this),this.getDialog("edittable").open()}},{label:c.setbordervisible,cmdName:"setbordervisible"}]},{group:c.tablesort,icon:"tablesort",subMenu:[{label:c.enablesort,cmdName:"enablesort"},{label:c.disablesort,cmdName:"disablesort"},"-",{label:c.reversecurrent,cmdName:"sorttable",value:"reversecurrent"},{label:c.orderbyasc,cmdName:"sorttable",value:"orderbyasc"},{label:c.reversebyasc,cmdName:"sorttable",value:"reversebyasc"},{label:c.orderbynum,cmdName:"sorttable",value:"orderbynum"},{label:c.reversebynum,cmdName:"sorttable",value:"reversebynum"}]},{group:c.borderbk,icon:"borderBack",subMenu:[{label:c.setcolor,cmdName:"interlacetable",exec:function(){this.execCommand("interlacetable")}},{label:c.unsetcolor,cmdName:"uninterlacetable",exec:function(){this.execCommand("uninterlacetable")}},{label:c.setbackground,cmdName:"settablebackground",exec:function(){this.execCommand("settablebackground",{repeat:!0,colorList:["#bbb","#ccc"]})}},{label:c.unsetbackground,cmdName:"cleartablebackground",exec:function(){this.execCommand("cleartablebackground")}},{label:c.redandblue,cmdName:"settablebackground",exec:function(){this.execCommand("settablebackground",{repeat:!0,colorList:["red","blue"]})}},{label:c.threecolorgradient,cmdName:"settablebackground",exec:function(){this.execCommand("settablebackground",{repeat:!0,colorList:["#aaa","#bbb","#ccc"]})}}]},{group:c.aligntd,icon:"aligntd",subMenu:[{cmdName:"cellalignment",value:{align:"left",vAlign:"top"}},{cmdName:"cellalignment",value:{align:"center",vAlign:"top"}},{cmdName:"cellalignment",value:{align:"right",vAlign:"top"}},{cmdName:"cellalignment",value:{align:"left",vAlign:"middle"}},{cmdName:"cellalignment",value:{align:"center",vAlign:"middle"}},{cmdName:"cellalignment",value:{align:"right",vAlign:"middle"}},{cmdName:"cellalignment",value:{align:"left",vAlign:"bottom"}},{cmdName:"cellalignment",value:{align:"center",vAlign:"bottom"}},{cmdName:"cellalignment",value:{align:"right",vAlign:"bottom"}}]},{group:c.aligntable,icon:"aligntable",subMenu:[{cmdName:"tablealignment",className:"left",label:c.tableleft,value:"left"},{cmdName:"tablealignment",className:"center",label:c.tablecenter,value:"center"},{cmdName:"tablealignment",className:"right",label:c.tableright,value:"right"}]},"-",{label:c.insertparagraphbefore,cmdName:"insertparagraph",value:!0},{label:c.insertparagraphafter,cmdName:"insertparagraph"},{label:c.copy,cmdName:"copy"},{label:c.paste,cmdName:"paste"}];if(d.length){var e=UE.ui.uiUtils;a.addListener("contextmenu",function(f,g){var h=e.getViewportOffsetByEvent(g);a.fireEvent("beforeselectionchange"),b&&b.destroy();for(var i,j=0,k=[];i=d[j];j++){var l;!function(b){function d(){switch(b.icon){case"table":return a.getLang("contextMenu.table");case"justifyjustify":return a.getLang("contextMenu.paragraph");case"aligntd":return a.getLang("contextMenu.aligntd");case"aligntable":return a.getLang("contextMenu.aligntable");case"tablesort":return c.tablesort;case"borderBack":return c.borderbk;default:return""}}if("-"==b)(l=k[k.length-1])&&"-"!==l&&k.push("-");else if(b.hasOwnProperty("group")){for(var e,f=0,g=[];e=b.subMenu[f];f++)!function(b){"-"==b?(l=g[g.length-1])&&"-"!==l?g.push("-"):g.splice(g.length-1):(a.commands[b.cmdName]||UE.commands[b.cmdName]||b.query)&&(b.query?b.query():a.queryCommandState(b.cmdName))>-1&&g.push({label:b.label||a.getLang("contextMenu."+b.cmdName+(b.value||""))||"",className:"edui-for-"+b.cmdName+(b.className?" edui-for-"+b.cmdName+"-"+b.className:""),onclick:b.exec?function(){b.exec.call(a)}:function(){a.execCommand(b.cmdName,b.value)}})}(e);g.length&&k.push({label:d(),className:"edui-for-"+b.icon,subMenu:{items:g,editor:a}})}else(a.commands[b.cmdName]||UE.commands[b.cmdName]||b.query)&&(b.query?b.query.call(a):a.queryCommandState(b.cmdName))>-1&&k.push({label:b.label||a.getLang("contextMenu."+b.cmdName),className:"edui-for-"+(b.icon?b.icon:b.cmdName+(b.value||"")),onclick:b.exec?function(){b.exec.call(a)}:function(){a.execCommand(b.cmdName,b.value)}})}(i)}if("-"==k[k.length-1]&&k.pop(),b=new UE.ui.Menu({items:k,className:"edui-contextmenu",editor:a}),b.render(),b.showAt(h),a.fireEvent("aftershowcontextmenu",b),domUtils.preventDefault(g),browser.ie){var m;try{m=a.selection.getNative().createRange()}catch(n){return}if(m.item){var o=new dom.Range(a.document);o.selectNode(m.item(0)).select(!0,!0)}}}),a.addListener("aftershowcontextmenu",function(b,c){if(a.zeroclipboard){var d=c.items;for(var e in d)"edui-for-copy"==d[e].className&&a.zeroclipboard.clip(d[e].getDom())}})}}},UE.plugins.shortcutmenu=function(){var a,b=this,c=b.options.shortcutMenu||[];c.length&&(b.addListener("contextmenu mouseup",function(b,d){var e=this,f={type:b,target:d.target||d.srcElement,screenX:d.screenX,screenY:d.screenY,clientX:d.clientX,clientY:d.clientY};if(setTimeout(function(){var d=e.selection.getRange();d.collapsed!==!1&&"contextmenu"!=b||(a||(a=new baidu.editor.ui.ShortCutMenu({editor:e,items:c,theme:e.options.theme,className:"edui-shortcutmenu"}),a.render(),e.fireEvent("afterrendershortcutmenu",a)),a.show(f,!!UE.plugins.contextmenu))}),"contextmenu"==b&&(domUtils.preventDefault(d),browser.ie9below)){var g;try{g=e.selection.getNative().createRange()}catch(d){return}if(g.item){var h=new dom.Range(e.document);h.selectNode(g.item(0)).select(!0,!0)}}}),b.addListener("keydown",function(b){"keydown"==b&&a&&!a.isHidden&&a.hide()}))},UE.plugins.basestyle=function(){var a={bold:["strong","b"],italic:["em","i"],subscript:["sub"],superscript:["sup"]},b=function(a,b){return domUtils.filterNodeList(a.selection.getStartElementPath(),b)},c=this;c.addshortcutkey({Bold:"ctrl+66",Italic:"ctrl+73",Underline:"ctrl+85"}),c.addInputRule(function(a){utils.each(a.getNodesByTagName("b i"),function(a){switch(a.tagName){case"b":a.tagName="strong";break;case"i":a.tagName="em"}})});for(var d in a)!function(a,d){c.commands[a]={execCommand:function(a){var e=c.selection.getRange(),f=b(this,d);if(e.collapsed){if(f){var g=c.document.createTextNode("");e.insertNode(g).removeInlineStyle(d),e.setStartBefore(g),domUtils.remove(g)}else{var h=e.document.createElement(d[0]);"superscript"!=a&&"subscript"!=a||(g=c.document.createTextNode(""),e.insertNode(g).removeInlineStyle(["sub","sup"]).setStartBefore(g).collapse(!0)),e.insertNode(h).setStart(h,0)}e.collapse(!0)}else"superscript"!=a&&"subscript"!=a||f&&f.tagName.toLowerCase()==a||e.removeInlineStyle(["sub","sup"]),f?e.removeInlineStyle(d):e.applyInlineStyle(d[0]);e.select()},queryCommandState:function(){return b(this,d)?1:0}}}(d,a[d])},UE.plugins.elementpath=function(){var a,b,c=this;c.setOpt("elementPathEnabled",!0),c.options.elementPathEnabled&&(c.commands.elementpath={execCommand:function(d,e){var f=b[e],g=c.selection.getRange();a=1*e,g.selectNode(f).select()},queryCommandValue:function(){var c=[].concat(this.selection.getStartElementPath()).reverse(),d=[];b=c;for(var e,f=0;e=c[f];f++)if(3!=e.nodeType){var g=e.tagName.toLowerCase();if("img"==g&&e.getAttribute("anchorname")&&(g="anchor"),d[f]=g,a==f){a=-1;break}}return d}})},UE.plugins.formatmatch=function(){function a(f,g){function h(a){return m&&a.selectNode(m),a.applyInlineStyle(d[d.length-1].tagName,null,d)}if(browser.webkit)var i="IMG"==g.target.tagName?g.target:null;c.undoManger&&c.undoManger.save();var j=c.selection.getRange(),k=i||j.getClosedNode();if(b&&k&&"IMG"==k.tagName)k.style.cssText+=";float:"+(b.style.cssFloat||b.style.styleFloat||"none")+";display:"+(b.style.display||"inline"),b=null;else if(!b){var l=j.collapsed;if(l){var m=c.document.createTextNode("match");j.insertNode(m).select()}c.__hasEnterExecCommand=!0;var n=c.options.removeFormatAttributes;c.options.removeFormatAttributes="",c.execCommand("removeformat"),c.options.removeFormatAttributes=n,c.__hasEnterExecCommand=!1,j=c.selection.getRange(),d.length&&h(j),m&&j.setStartBefore(m).collapse(!0),j.select(),m&&domUtils.remove(m)}c.undoManger&&c.undoManger.save(),c.removeListener("mouseup",a),e=0}var b,c=this,d=[],e=0;c.addListener("reset",function(){d=[],e=0}),c.commands.formatmatch={execCommand:function(f){if(e)return e=0,d=[],void c.removeListener("mouseup",a);var g=c.selection.getRange();if(b=g.getClosedNode(),!b||"IMG"!=b.tagName){g.collapse(!0).shrinkBoundary();var h=g.startContainer;d=domUtils.findParents(h,!0,function(a){return!domUtils.isBlockElm(a)&&1==a.nodeType});for(var i,j=0;i=d[j];j++)if("A"==i.tagName){d.splice(j,1);break}}c.addListener("mouseup",a),e=1},queryCommandState:function(){return e},notNeedUndo:1}},UE.plugin.register("searchreplace",function(){function a(a,b,c){var d=b.searchStr;b.dir==-1&&(a=a.split("").reverse().join(""),d=d.split("").reverse().join(""),c=a.length-c);for(var e,f=new RegExp(d,"g"+(b.casesensitive?"":"i"));e=f.exec(a);)if(e.index>=c)return b.dir==-1?a.length-e.index-b.searchStr.length:e.index;return-1}function b(b,c,d){var e,f,h=d.all||1==d.dir?"getNextDomNode":"getPreDomNode";domUtils.isBody(b)&&(b=b.firstChild);for(var i=1;b;){if(e=3==b.nodeType?b.nodeValue:b[browser.ie?"innerText":"textContent"],f=a(e,d,c),i=0,f!=-1)return{node:b,index:f};for(b=domUtils[h](b);b&&g[b.nodeName.toLowerCase()];)b=domUtils[h](b,!0);b&&(c=d.dir==-1?(3==b.nodeType?b.nodeValue:b[browser.ie?"innerText":"textContent"]).length:0)}}function c(a,b,d){for(var e,f=0,g=a.firstChild,h=0;g;){if(3==g.nodeType){if(h=g.nodeValue.replace(/(^[\t\r\n]+)|([\t\r\n]+$)/,"").length,f+=h,f>=b)return{node:g,index:h-(f-b)}}else if(!dtd.$empty[g.tagName]&&(h=g[browser.ie?"innerText":"textContent"].replace(/(^[\t\r\n]+)|([\t\r\n]+$)/,"").length,f+=h,f>=b&&(e=c(g,h-(f-b),d))))return e;g=domUtils.getNextDomNode(g)}}function d(a,d){var f,g=a.selection.getRange(),h=d.searchStr,i=a.document.createElement("span");if(i.innerHTML="$$ueditor_searchreplace_key$$",g.shrinkBoundary(!0),!g.collapsed){g.select();var j=a.selection.getText();if(new RegExp("^"+d.searchStr+"$",d.casesensitive?"":"i").test(j)){if(void 0!=d.replaceStr)return e(g,d.replaceStr),g.select(),!0;g.collapse(d.dir==-1)}}g.insertNode(i),g.enlargeToBlockElm(!0),f=g.startContainer;var k=f[browser.ie?"innerText":"textContent"].indexOf("$$ueditor_searchreplace_key$$");g.setStartBefore(i),domUtils.remove(i);var l=b(f,k,d);if(l){var m=c(l.node,l.index,h),n=c(l.node,l.index+h.length,h);return g.setStart(m.node,m.index).setEnd(n.node,n.index),void 0!==d.replaceStr&&e(g,d.replaceStr),g.select(),!0}g.setCursor()}function e(a,b){b=f.document.createTextNode(b),a.deleteContents().insertNode(b)}var f=this,g={table:1,tbody:1,tr:1,ol:1,ul:1};return{commands:{searchreplace:{execCommand:function(a,b){utils.extend(b,{all:!1,casesensitive:!1,dir:1},!0);var c=0;if(b.all){var e=f.selection.getRange(),g=f.body.firstChild;for(g&&1==g.nodeType?(e.setStart(g,0),e.shrinkBoundary(!0)):3==g.nodeType&&e.setStartBefore(g),e.collapse(!0).select(!0),void 0!==b.replaceStr&&f.fireEvent("saveScene");d(this,b);)c++;c&&f.fireEvent("saveScene")}else void 0!==b.replaceStr&&f.fireEvent("saveScene"),d(this,b)&&c++,c&&f.fireEvent("saveScene");return c},notNeedUndo:1}}}}),UE.plugins.customstyle=function(){var a=this;a.setOpt({customstyle:[{tag:"h1",name:"tc",style:"font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;"},{tag:"h1",name:"tl",style:"font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;"},{tag:"span",name:"im",style:"font-size:16px;font-style:italic;font-weight:bold;line-height:18px;"},{tag:"span",name:"hi",style:"font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;"}]}),a.commands.customstyle={execCommand:function(a,b){var c,d,e=this,f=b.tag,g=domUtils.findParent(e.selection.getStart(),function(a){return a.getAttribute("label")},!0),h={};for(var i in b)void 0!==b[i]&&(h[i]=b[i]);if(delete h.tag,g&&g.getAttribute("label")==b.label){if(c=this.selection.getRange(),d=c.createBookmark(),c.collapsed)if(dtd.$block[g.tagName]){var j=e.document.createElement("p");domUtils.moveChild(g,j),g.parentNode.insertBefore(j,g),domUtils.remove(g)}else domUtils.remove(g,!0);else{var k=domUtils.getCommonAncestor(d.start,d.end),l=domUtils.getElementsByTagName(k,f);new RegExp(f,"i").test(k.tagName)&&l.push(k);for(var m,n=0;m=l[n++];)if(m.getAttribute("label")==b.label){var o=domUtils.getPosition(m,d.start),p=domUtils.getPosition(m,d.end);if((o&domUtils.POSITION_FOLLOWING||o&domUtils.POSITION_CONTAINS)&&(p&domUtils.POSITION_PRECEDING||p&domUtils.POSITION_CONTAINS)&&dtd.$block[f]){var j=e.document.createElement("p");domUtils.moveChild(m,j),m.parentNode.insertBefore(j,m)}domUtils.remove(m,!0)}g=domUtils.findParent(k,function(a){return a.getAttribute("label")==b.label},!0),g&&domUtils.remove(g,!0)}c.moveToBookmark(d).select()}else if(dtd.$block[f]){if(this.execCommand("paragraph",f,h,"customstyle"),c=e.selection.getRange(),!c.collapsed){c.collapse(),g=domUtils.findParent(e.selection.getStart(),function(a){return a.getAttribute("label")==b.label},!0);var q=e.document.createElement("p");domUtils.insertAfter(g,q),domUtils.fillNode(e.document,q),c.setStart(q,0).setCursor()}}else{if(c=e.selection.getRange(),c.collapsed)return g=e.document.createElement(f),domUtils.setAttributes(g,h),void c.insertNode(g).setStart(g,0).setCursor();d=c.createBookmark(),c.applyInlineStyle(f,h).moveToBookmark(d).select()}},queryCommandValue:function(){var a=domUtils.filterNodeList(this.selection.getStartElementPath(),function(a){return a.getAttribute("label")});return a?a.getAttribute("label"):""}},a.addListener("keyup",function(b,c){var d=c.keyCode||c.which;if(32==d||13==d){var e=a.selection.getRange();if(e.collapsed){var f=domUtils.findParent(a.selection.getStart(),function(a){return a.getAttribute("label")},!0);if(f&&dtd.$block[f.tagName]&&domUtils.isEmptyNode(f)){var g=a.document.createElement("p");domUtils.insertAfter(f,g),domUtils.fillNode(a.document,g),domUtils.remove(f),e.setStart(g,0).setCursor()}}}})},UE.plugins.catchremoteimage=function(){var me=this,ajax=UE.ajax;me.options.catchRemoteImageEnable!==!1&&(me.setOpt({catchRemoteImageEnable:!1}),me.addListener("afterpaste",function(){me.fireEvent("catchRemoteImage")}),me.addListener("catchRemoteImage",function(){function catchremoteimage(a,b){var c=utils.serializeParam(me.queryCommandValue("serverparam"))||"",d=utils.formatUrl(catcherActionUrl+(catcherActionUrl.indexOf("?")==-1?"?":"&")+c),e=utils.isCrossDomainUrl(d),f={method:"POST",dataType:e?"jsonp":"",timeout:6e4,onsuccess:b.success,onerror:b.error};f[catcherFieldName]=a,ajax.request(d,f)}for(var catcherLocalDomain=me.getOpt("catcherLocalDomain"),catcherActionUrl=me.getActionUrl(me.getOpt("catcherActionName")),catcherUrlPrefix=me.getOpt("catcherUrlPrefix"),catcherFieldName=me.getOpt("catcherFieldName"),remoteImages=[],imgs=domUtils.getElementsByTagName(me.document,"img"),test=function(a,b){if(a.indexOf(location.host)!=-1||/(^\.)|(^\/)/.test(a))return!0;if(b)for(var c,d=0;c=b[d++];)if(a.indexOf(c)!==-1)return!0;return!1},i=0,ci;ci=imgs[i++];)if(!ci.getAttribute("word_img")){var src=ci.getAttribute("_src")||ci.src||"";/^(https?|ftp):/i.test(src)&&!test(src,catcherLocalDomain)&&remoteImages.push(src)}remoteImages.length&&catchremoteimage(remoteImages,{success:function(r){try{var info=void 0!==r.state?r:eval("("+r.responseText+")")}catch(e){return}var i,j,ci,cj,oldSrc,newSrc,list=info.list;for(i=0;ci=imgs[i++];)for(oldSrc=ci.getAttribute("_src")||ci.src||"",j=0;cj=list[j++];)if(oldSrc==cj.source&&"SUCCESS"==cj.state){newSrc=catcherUrlPrefix+cj.url,domUtils.setAttributes(ci,{src:newSrc,_src:newSrc});break}me.fireEvent("catchremotesuccess")},error:function(){me.fireEvent("catchremoteerror")}})}))},UE.plugin.register("snapscreen",function(){function getLocation(a){var b,c=document.createElement("a"),d=utils.serializeParam(me.queryCommandValue("serverparam"))||"";return c.href=a,browser.ie&&(c.href=c.href),b=c.search,d&&(b=b+(b.indexOf("?")==-1?"?":"&")+d,b=b.replace(/[&]+/gi,"&")),{port:c.port,hostname:c.hostname,path:c.pathname+b||+c.hash}}var me=this,snapplugin;return{commands:{snapscreen:{execCommand:function(cmd){function onSuccess(rs){try{if(rs=eval("("+rs+")"),"SUCCESS"==rs.state){var opt=me.options;me.execCommand("insertimage",{src:opt.snapscreenUrlPrefix+rs.url,_src:opt.snapscreenUrlPrefix+rs.url,alt:rs.title||"",floatStyle:opt.snapscreenImgAlign})}else alert(rs.state)}catch(e){alert(lang.callBackErrorMsg)}}var url,local,res,lang=me.getLang("snapScreen_plugin");if(!snapplugin){var container=me.container,doc=me.container.ownerDocument||me.container.document;snapplugin=doc.createElement("object");try{snapplugin.type="application/x-pluginbaidusnap"}catch(e){return}snapplugin.style.cssText="position:absolute;left:-9999px;width:0;height:0;",snapplugin.setAttribute("width","0"),snapplugin.setAttribute("height","0"),container.appendChild(snapplugin)}url=me.getActionUrl(me.getOpt("snapscreenActionName")),local=getLocation(url),setTimeout(function(){try{res=snapplugin.saveSnapshot(local.hostname,local.path,local.port)}catch(a){return void me.ui._dialogs.snapscreenDialog.open()}onSuccess(res)},50)},queryCommandState:function(){return navigator.userAgent.indexOf("Windows",0)!=-1?0:-1}}}}}),UE.commands.insertparagraph={execCommand:function(a,b){for(var c,d=this,e=d.selection.getRange(),f=e.startContainer;f&&!domUtils.isBody(f);)c=f,f=f.parentNode;if(c){var g=d.document.createElement("p");b?c.parentNode.insertBefore(g,c):c.parentNode.insertBefore(g,c.nextSibling),domUtils.fillNode(d.document,g),e.setStart(g,0).setCursor(!1,!0)}}},UE.plugin.register("webapp",function(){function a(a,c){return c?'':'"}var b=this;return{outputRule:function(b){utils.each(b.getNodesByTagName("img"),function(b){var c;if("edui-faked-webapp"==b.getAttr("class")){c=a({title:b.getAttr("title"),width:b.getAttr("width"),height:b.getAttr("height"),align:b.getAttr("align"),cssfloat:b.getStyle("float"),url:b.getAttr("_url"),logo:b.getAttr("_logo_url")},!0);var d=UE.uNode.createElement(c);b.parentNode.replaceChild(d,b)}})},inputRule:function(b){utils.each(b.getNodesByTagName("iframe"),function(b){if("edui-faked-webapp"==b.getAttr("class")){var c=UE.uNode.createElement(a({title:b.getAttr("title"),width:b.getAttr("width"),height:b.getAttr("height"),align:b.getAttr("align"),cssfloat:b.getStyle("float"),url:b.getAttr("src"),logo:b.getAttr("logo_url")}));b.parentNode.replaceChild(c,b)}})},commands:{webapp:{execCommand:function(b,c){var d=this,e=a(utils.extend(c,{align:"none"}),!1);d.execCommand("inserthtml",e)},queryCommandState:function(){var a=this,b=a.selection.getRange().getClosedNode(),c=b&&"edui-faked-webapp"==b.className;return c?1:0}}}}}),UE.plugins.template=function(){UE.commands.template={execCommand:function(a,b){b.html&&this.execCommand("inserthtml",b.html)}},this.addListener("click",function(a,b){var c=b.target||b.srcElement,d=this.selection.getRange(),e=domUtils.findParent(c,function(a){if(a.className&&domUtils.hasClass(a,"ue_t"))return a},!0);e&&d.selectNode(e).shrinkBoundary().select()}),this.addListener("keydown",function(a,b){var c=this.selection.getRange();if(!c.collapsed&&!(b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)){var d=domUtils.findParent(c.startContainer,function(a){if(a.className&&domUtils.hasClass(a,"ue_t"))return a},!0);d&&domUtils.removeClasses(d,["ue_t"])}})},UE.plugin.register("music",function(){function a(a,c,d,e,f,g){return g?'':"'}var b=this;return{outputRule:function(b){utils.each(b.getNodesByTagName("img"),function(b){var c;if("edui-faked-music"==b.getAttr("class")){var d=b.getStyle("float"),e=b.getAttr("align");c=a(b.getAttr("_url"),b.getAttr("width"),b.getAttr("height"),e,d,!0);var f=UE.uNode.createElement(c);b.parentNode.replaceChild(f,b)}})},inputRule:function(b){utils.each(b.getNodesByTagName("embed"),function(b){if("edui-faked-music"==b.getAttr("class")){var c=b.getStyle("float"),d=b.getAttr("align");html=a(b.getAttr("src"),b.getAttr("width"),b.getAttr("height"),d,c,!1);var e=UE.uNode.createElement(html);b.parentNode.replaceChild(e,b)}})},commands:{music:{execCommand:function(b,c){var d=this,e=a(c.url,c.width||400,c.height||95,"none",!1);d.execCommand("inserthtml",e)},queryCommandState:function(){var a=this,b=a.selection.getRange().getClosedNode(),c=b&&"edui-faked-music"==b.className;return c?1:0}}}}}),UE.plugin.register("autoupload",function(){function a(a,b){var c,d,e,f,g,h,i,j,k=b,l=/image\/\w+/i.test(a.type)?"image":"file",m="loading_"+(+new Date).toString(36);if(c=k.getOpt(l+"FieldName"),d=k.getOpt(l+"UrlPrefix"),e=k.getOpt(l+"MaxSize"),f=k.getOpt(l+"AllowFiles"),g=k.getActionUrl(k.getOpt(l+"ActionName")),i=function(a){var b=k.document.getElementById(m);b&&domUtils.remove(b),k.fireEvent("showmessage",{id:m,content:a,type:"error",timeout:4e3})},"image"==l?(h='',j=function(a){var b=d+a.url,c=k.document.getElementById(m);c&&(c.setAttribute("src",b),c.setAttribute("_src",b),c.setAttribute("title",a.title||""),c.setAttribute("alt",a.original||""),c.removeAttribute("id"),domUtils.removeClasses(c,"loadingclass"))}):(h='

    ',j=function(a){var b=d+a.url,c=k.document.getElementById(m),e=k.selection.getRange(),f=e.createBookmark();e.selectNode(c).select(),k.execCommand("insertfile",{url:b}),e.moveToBookmark(f).select()}),k.execCommand("inserthtml",h),!k.getOpt(l+"ActionName"))return void i(k.getLang("autoupload.errorLoadConfig"));if(a.size>e)return void i(k.getLang("autoupload.exceedSizeError"));var n=a.name?a.name.substr(a.name.lastIndexOf(".")):"";if(n&&"image"!=l||f&&(f.join("")+".").indexOf(n.toLowerCase()+".")==-1)return void i(k.getLang("autoupload.exceedTypeError"));var o=new XMLHttpRequest,p=new FormData,q=utils.serializeParam(k.queryCommandValue("serverparam"))||"",r=utils.formatUrl(g+(g.indexOf("?")==-1?"?":"&")+q);p.append(c,a,a.name||"blob."+a.type.substr("image/".length)),p.append("type","ajax"),o.open("post",r,!0),o.setRequestHeader("X-Requested-With","XMLHttpRequest"),o.addEventListener("load",function(a){try{var b=new Function("return "+utils.trim(a.target.response))();"SUCCESS"==b.state&&b.url?j(b):i(b.state)}catch(c){i(k.getLang("autoupload.loadError"))}}),o.send(p)}function b(a){return a.clipboardData&&a.clipboardData.items&&1==a.clipboardData.items.length&&/^image\//.test(a.clipboardData.items[0].type)?a.clipboardData.items:null}function c(a){return a.dataTransfer&&a.dataTransfer.files?a.dataTransfer.files:null}return{outputRule:function(a){utils.each(a.getNodesByTagName("img"),function(a){/\b(loaderrorclass)|(bloaderrorclass)\b/.test(a.getAttr("class"))&&a.parentNode.removeChild(a)}),utils.each(a.getNodesByTagName("p"),function(a){/\bloadpara\b/.test(a.getAttr("class"))&&a.parentNode.removeChild(a)})},bindEvents:{ready:function(d){var e=this;window.FormData&&window.FileReader&&(domUtils.on(e.body,"paste drop",function(d){var f,g=!1;if(f="paste"==d.type?b(d):c(d)){for(var h,i=f.length;i--;)h=f[i],h.getAsFile&&(h=h.getAsFile()),h&&h.size>0&&(a(h,e),g=!0);g&&d.preventDefault()}}),domUtils.on(e.body,"dragover",function(a){"Files"==a.dataTransfer.types[0]&&a.preventDefault()}),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:1px solid #cccccc;margin-left: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:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}",this.document))}}}}),UE.plugin.register("autosave",function(){function a(a){var f;if(!(new Date-c0?b._saveFlag=window.setTimeout(function(){a(b)},b.options.saveInterval):a(b))}},commands:{clearlocaldata:{execCommand:function(a,c){e&&b.getPreferences(e)&&b.removePreferences(e)},notNeedUndo:!0,ignoreContentChange:!0},getlocaldata:{execCommand:function(a,c){return e?b.getPreferences(e)||"":""},notNeedUndo:!0,ignoreContentChange:!0},drafts:{execCommand:function(a,c){e&&(b.body.innerHTML=b.getPreferences(e)||"

    "+domUtils.fillHtml+"

    ",b.focus(!0))},queryCommandState:function(){return e?null===b.getPreferences(e)?-1:0:-1},notNeedUndo:!0,ignoreContentChange:!0}}}}),UE.plugin.register("charts",function(){function a(a){var b=null,c=0;if(a.rows.length<2)return!1;if(a.rows[0].cells.length<2)return!1;b=a.rows[0].cells,c=b.length;for(var d,e=0;d=b[e];e++)if("th"!==d.tagName.toLowerCase())return!1;for(var f,e=1;f=a.rows[e];e++){if(f.cells.length!=c)return!1;if("th"!==f.cells[0].tagName.toLowerCase())return!1;for(var d,g=1;d=f.cells[g];g++){var h=utils.trim(d.innerText||d.textContent||"");if(h=h.replace(new RegExp(UE.dom.domUtils.fillChar,"g"),"").replace(/^\s+|\s+$/g,""),!/^\d*\.?\d+$/.test(h))return!1}}return!0}var b=this;return{bindEvents:{chartserror:function(){}},commands:{charts:{execCommand:function(c,d){var e=domUtils.findParentByTagName(this.selection.getRange().startContainer,"table",!0),f=[],g={};if(!e)return!1;if(!a(e))return b.fireEvent("chartserror"),!1;g.title=d.title||"",g.subTitle=d.subTitle||"",g.xTitle=d.xTitle||"",g.yTitle=d.yTitle||"",g.suffix=d.suffix||"",g.tip=d.tip||"",g.dataFormat=d.tableDataFormat||"",g.chartType=d.chartType||0;for(var h in g)g.hasOwnProperty(h)&&f.push(h+":"+g[h]); +e.setAttribute("data-chart",f.join(";")),domUtils.addClass(e,"edui-charts-table")},queryCommandState:function(b,c){var d=domUtils.findParentByTagName(this.selection.getRange().startContainer,"table",!0);return d&&a(d)?0:-1}}},inputRule:function(a){utils.each(a.getNodesByTagName("table"),function(a){void 0!==a.getAttr("data-chart")&&a.setAttr("style")})},outputRule:function(a){utils.each(a.getNodesByTagName("table"),function(a){void 0!==a.getAttr("data-chart")&&a.setAttr("style","display: none;")})}}}),UE.plugin.register("section",function(){function a(a){this.tag="",this.level=-1,this.dom=null,this.nextSection=null,this.previousSection=null,this.parentSection=null,this.startAddress=[],this.endAddress=[],this.children=[]}function b(b){var c=new a;return utils.extend(c,b)}function c(a,b){for(var c=b,d=0;d=0){var o=h.selection.getRange().selectNode(i).createAddress(!0).startAddress,p=b({tag:i.tagName,title:i.innerText||i.textContent||"",level:f,dom:i,startAddress:utils.clone(o,[]),endAddress:utils.clone(o,[]),children:[]});for(j.nextSection=p,p.previousSection=j,g=j;f<=g.level;)g=g.parentSection;p.parentSection=g,g.children.push(p),k=j=p}else 1===i.nodeType&&e(i,c),k&&k.endAddress[k.endAddress.length-1]++}for(var f=c||["h1","h2","h3","h4","h5","h6"],g=0;g=c.length);f++){if(c[f]>a[f]){d=!0;break}if(c[f]=c.length);f++){if(c[f]a[f])break}return d&&e}var g,h,i=this;if(b&&d&&d.level!=-1&&(g=e?d.endAddress:d.startAddress,h=c(g,i.body),g&&h&&!f(b.startAddress,b.endAddress,g))){var j,k,l=c(b.startAddress,i.body),m=c(b.endAddress,i.body);if(e)for(j=m;j&&!(domUtils.getPosition(l,j)&domUtils.POSITION_FOLLOWING)&&(k=j.previousSibling,domUtils.insertAfter(h,j),j!=l);)j=k;else for(j=l;j&&!(domUtils.getPosition(j,m)&domUtils.POSITION_FOLLOWING)&&(k=j.nextSibling,h.parentNode.insertBefore(j,h),j!=m);)j=k;i.fireEvent("updateSections")}}},deletesection:{execCommand:function(a,b,c){function d(a){for(var b=e.body,c=0;c'),!c.getOpt("imageActionName"))return void b(c.getLang("autoupload.errorLoadConfig"));var k=h.value,l=k?k.substr(k.lastIndexOf(".")):"";if(!l||j&&(j.join("")+".").indexOf(l.toLowerCase()+".")==-1)return void b(c.getLang("simpleupload.exceedTypeError"));var m=new XMLHttpRequest;if(m.open("post",i,!0),c.options.headers&&"[object Object]"===Object.prototype.toString.apply(c.options.headers))for(var n in c.options.headers)m.setRequestHeader(n,c.options.headers[n]);m.onload=function(){if(m.status>=200&&m.status<300||304==m.status){var a=JSON.parse(m.responseText),e=c.options.imageUrlPrefix+a.url;"SUCCESS"==a.state&&a.url?(loader=c.document.getElementById(d),loader.setAttribute("src",e),loader.setAttribute("_src",e),loader.setAttribute("title",a.title||""),loader.setAttribute("alt",a.original||""),loader.removeAttribute("id"),domUtils.removeClasses(loader,"loadingclass"),c.fireEvent("contentchange")):b(a.state)}else b(c.getLang("simpleupload.loadError"))},m.onerror=function(){b(c.getLang("simpleupload.loadError"))},m.send(new FormData(g)),g.reset()}})}var b,c=this,d=(+new Date).toString(36);return{bindEvents:{ready:function(){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:1px solid #cccccc;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:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}",this.document)},simpleuploadbtnready:function(d,e){b=e,c.afterConfigReady(a)}},outputRule:function(a){utils.each(a.getNodesByTagName("img"),function(a){/\b(loaderrorclass)|(bloaderrorclass)\b/.test(a.getAttr("class"))&&a.parentNode.removeChild(a)})}}}),UE.plugin.register("serverparam",function(){var a={};return{commands:{serverparam:{execCommand:function(b,c,d){void 0===c||null===c?a={}:utils.isString(c)?void 0===d||null===d?delete a[c]:a[c]=d:utils.isObject(c)?utils.extend(a,c,!0):utils.isFunction(c)&&utils.extend(a,c(),!0)},queryCommandValue:function(){return a||{}}}}}}),UE.plugin.register("insertfile",function(){function a(a){var b=a.substr(a.lastIndexOf(".")+1).toLowerCase(),c={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 c[b]?c[b]:c.txt}var b=this;return{commands:{insertfile:{execCommand:function(c,d){d=utils.isArray(d)?d:[d];var e,f,g,h,i="",j=b.getOpt("UEDITOR_HOME_URL"),k=j+("/"==j.substr(j.length-1)?"":"/")+"dialogs/attachment/fileTypeImages/";for(e=0;e'+h+"

    ";b.execCommand("insertHtml",i)}}}}}),UE.plugins.xssFilter=function(){function a(a){var b=a.tagName,d=a.attrs;return c.hasOwnProperty(b)?void UE.utils.each(d,function(d,e){c[b].indexOf(e)===-1&&a.setAttr(e)}):(a.parentNode.removeChild(a),!1)}var b=UEDITOR_CONFIG,c=b.whitList;c&&b.xssFilterRules&&(this.options.filterRules=function(){var b={};return UE.utils.each(c,function(c,d){b[d]=function(b){return a(b)}}),b}());var d=[];UE.utils.each(c,function(a,b){d.push(b)}),c&&b.inputXssFilter&&this.addInputRule(function(b){b.traversal(function(b){return"element"===b.type&&void a(b)})}),c&&b.outputXssFilter&&this.addOutputRule(function(b){b.traversal(function(b){return"element"===b.type&&void a(b)})})};var baidu=baidu||{};baidu.editor=baidu.editor||{},UE.ui=baidu.editor.ui={},function(){function a(){var a=document.getElementById("edui_fixedlayer");i.setViewportOffset(a,{left:0,top:0})}function b(b){d.on(window,"scroll",a),d.on(window,"resize",baidu.editor.utils.defer(a,0,!0))}var c=baidu.editor.browser,d=baidu.editor.dom.domUtils,e="$EDITORUI",f=window[e]={},g="ID"+e,h=0,i=baidu.editor.ui.uiUtils={uid:function(a){return a?a[g]||(a[g]=++h):++h},hook:function(a,b){var c;return a&&a._callbacks?c=a:(c=function(){var b;a&&(b=a.apply(this,arguments));for(var d=c._callbacks,e=d.length;e--;){var f=d[e].apply(this,arguments);void 0===b&&(b=f)}return b},c._callbacks=[]),c._callbacks.push(b),c},createElementByHtml:function(a){var b=document.createElement("div");return b.innerHTML=a,b=b.firstChild,b.parentNode.removeChild(b),b},getViewportElement:function(){return c.ie&&c.quirks?document.body:document.documentElement},getClientRect:function(a){var b;try{b=a.getBoundingClientRect()}catch(c){b={left:0,top:0,height:0,width:0}}for(var e,f={left:Math.round(b.left),top:Math.round(b.top),height:Math.round(b.bottom-b.top),width:Math.round(b.right-b.left)};(e=a.ownerDocument)!==document&&(a=d.getWindow(e).frameElement);)b=a.getBoundingClientRect(),f.left+=b.left,f.top+=b.top;return f.bottom=f.top+f.height,f.right=f.left+f.width,f},getViewportRect:function(){var a=i.getViewportElement(),b=0|(window.innerWidth||a.clientWidth),c=0|(window.innerHeight||a.clientHeight);return{left:0,top:0,height:c,width:b,bottom:c,right:b}},setViewportOffset:function(a,b){var c=i.getFixedLayer();a.parentNode===c?(a.style.left=b.left+"px",a.style.top=b.top+"px"):d.setViewportOffset(a,b)},getEventOffset:function(a){var b=a.target||a.srcElement,c=i.getClientRect(b),d=i.getViewportOffsetByEvent(a);return{left:d.left-c.left,top:d.top-c.top}},getViewportOffsetByEvent:function(a){var b=a.target||a.srcElement,c=d.getWindow(b).frameElement,e={left:a.clientX,top:a.clientY};if(c&&b.ownerDocument!==document){var f=i.getClientRect(c);e.left+=f.left,e.top+=f.top}return e},setGlobal:function(a,b){return f[a]=b,e+'["'+a+'"]'},unsetGlobal:function(a){delete f[a]},copyAttributes:function(a,b){for(var e=b.attributes,f=e.length;f--;){var g=e[f];"style"==g.nodeName||"class"==g.nodeName||c.ie&&!g.specified||a.setAttribute(g.nodeName,g.nodeValue)}b.className&&d.addClass(a,b.className),b.style.cssText&&(a.style.cssText+=";"+b.style.cssText)},removeStyle:function(a,b){if(a.style.removeProperty)a.style.removeProperty(b);else{if(!a.style.removeAttribute)throw"";a.style.removeAttribute(b)}},contains:function(a,b){return a&&b&&a!==b&&(a.contains?a.contains(b):16&a.compareDocumentPosition(b))},startDrag:function(a,b,c){function d(a){var c=a.clientX-g,d=a.clientY-h;b.ondragmove(c,d,a),a.stopPropagation?a.stopPropagation():a.cancelBubble=!0}function e(a){c.removeEventListener("mousemove",d,!0),c.removeEventListener("mouseup",e,!0),window.removeEventListener("mouseup",e,!0),b.ondragstop()}function f(){i.releaseCapture(),i.detachEvent("onmousemove",d),i.detachEvent("onmouseup",f),i.detachEvent("onlosecaptrue",f),b.ondragstop()}var c=c||document,g=a.clientX,h=a.clientY;if(c.addEventListener)c.addEventListener("mousemove",d,!0),c.addEventListener("mouseup",e,!0),window.addEventListener("mouseup",e,!0),a.preventDefault();else{var i=a.srcElement;i.setCapture(),i.attachEvent("onmousemove",d),i.attachEvent("onmouseup",f),i.attachEvent("onlosecaptrue",f),a.returnValue=!1}b.ondragstart()},getFixedLayer:function(){var d=document.getElementById("edui_fixedlayer");return null==d&&(d=document.createElement("div"),d.id="edui_fixedlayer",document.body.appendChild(d),c.ie&&c.version<=8?(d.style.position="absolute",b(),setTimeout(a)):d.style.position="fixed",d.style.left="0",d.style.top="0",d.style.width="0",d.style.height="0"),d},makeUnselectable:function(a){if(c.opera||c.ie&&c.version<9){if(a.unselectable="on",a.hasChildNodes())for(var b=0;b'}},a.inherits(c,b)}(),function(){var a=baidu.editor.utils,b=baidu.editor.dom.domUtils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.uiUtils,e=baidu.editor.ui.Mask=function(a){this.initOptions(a),this.initUIBase()};e.prototype={getHtmlTpl:function(){return'
    '},postRender:function(){var a=this;b.on(window,"resize",function(){setTimeout(function(){a.isHidden()||a._fill()})})},show:function(a){this._fill(),this.getDom().style.display="",this.getDom().style.zIndex=a},hide:function(){this.getDom().style.display="none",this.getDom().style.zIndex=""},isHidden:function(){return"none"==this.getDom().style.display},_onMouseDown:function(){return!1},_onClick:function(a,b){this.fireEvent("click",a,b)},_fill:function(){var a=this.getDom(),b=d.getViewportRect();a.style.width=b.width+"px",a.style.height=b.height+"px"}},a.inherits(e,c)}(),function(){function a(a,b){for(var c=0;c
    '+this.getContentHtmlTpl()+"
    "},getContentHtmlTpl:function(){return this.content?"string"==typeof this.content?this.content:this.content.renderHtml():""},_UIBase_postRender:e.prototype.postRender,postRender:function(){if(this.content instanceof e&&this.content.postRender(),this.captureWheel&&!this.captured){this.captured=!0;var a=(document.documentElement.clientHeight||document.body.clientHeight)-80,b=this.getDom().offsetHeight,f=c.getClientRect(this.combox.getDom()).top,g=this.getDom("content"),h=this.getDom("body").getElementsByTagName("iframe"),i=this;for(h.length&&(h=h[0]);f+b>a;)b-=30;g.style.height=b+"px",h&&(h.style.height=b+"px"),window.XMLHttpRequest?d.on(g,"onmousewheel"in document.body?"mousewheel":"DOMMouseScroll",function(a){a.preventDefault?a.preventDefault():a.returnValue=!1,a.wheelDelta?g.scrollTop-=a.wheelDelta/120*60:g.scrollTop-=a.detail/-3*60}):d.on(this.getDom(),"mousewheel",function(a){a.returnValue=!1,i.getDom("content").scrollTop-=a.wheelDelta/120*60})}this.fireEvent("postRenderAfter"),this.hide(!0),this._UIBase_postRender()},_doAutoRender:function(){!this.getDom()&&this.autoRender&&this.render()},mesureSize:function(){var a=this.getDom("content");return c.getClientRect(a)},fitSize:function(){if(this.captureWheel&&this.sized)return this.__size;this.sized=!0;var a=this.getDom("body");a.style.width="",a.style.height="";var b=this.mesureSize();if(this.captureWheel){a.style.width=-(-20-b.width)+"px";var c=parseInt(this.getDom("content").style.height,10);!window.isNaN(c)&&(b.height=c)}else a.style.width=b.width+"px";return a.style.height=b.height+"px",this.__size=b,this.captureWheel&&(this.getDom("content").style.overflow="auto"),b},showAnchor:function(a,b){this.showAnchorRect(c.getClientRect(a),b)},showAnchorRect:function(a,b,e){this._doAutoRender();var f=c.getViewportRect();this.getDom().style.visibility="hidden",this._show();var g,i,j,k,l=this.fitSize();b?(g=this.canSideLeft&&a.right+l.width>f.right&&a.left>l.width,i=this.canSideUp&&a.top+l.height>f.bottom&&a.bottom>l.height,j=g?a.left-l.width:a.right,k=i?a.bottom-l.height:a.top):(g=this.canSideLeft&&a.right+l.width>f.right&&a.left>l.width,i=this.canSideUp&&a.top+l.height>f.bottom&&a.bottom>l.height,j=g?a.right-l.width:a.left,k=i?a.top-l.height:a.bottom);var m=this.getDom();c.setViewportOffset(m,{left:j,top:k}),d.removeClasses(m,h),m.className+=" "+h[2*(i?1:0)+(g?1:0)],this.editor&&(m.style.zIndex=1*this.editor.container.style.zIndex+10,baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex=m.style.zIndex-1),this.getDom().style.visibility="visible"},showAt:function(a){var b=a.left,c=a.top,d={left:b,top:c,right:b,bottom:c,height:0,width:0};this.showAnchorRect(d,!1,!0)},_show:function(){if(this._hidden){var a=this.getDom();a.style.display="",this._hidden=!1,this.fireEvent("show")}},isHidden:function(){return this._hidden},show:function(){this._doAutoRender(),this._show()},hide:function(a){!this._hidden&&this.getDom()&&(this.getDom().style.display="none",this._hidden=!0,a||this.fireEvent("hide"))},queryAutoHide:function(a){return!a||!c.contains(this.getDom(),a)}},b.inherits(f,e),d.on(document,"mousedown",function(b){var c=b.target||b.srcElement;a(b,c)}),d.on(window,"scroll",function(b,c){a(b,c)})}(),function(){function a(a,b){for(var c='
    '+a+'
    ',d=0;d"+(60==d?'":"")+""),c+=d<70?'':"";return c+="
    '+b.getLang("themeColor")+'
    '+b.getLang("standardColor")+"
    =60?"border-width:1px;":d>=10&&d<20?"border-width:1px 1px 0 1px;":"border-width:0 1px 0 1px;")+'">
    "}var b=baidu.editor.utils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.ColorPicker=function(a){this.initOptions(a),this.noColorText=this.noColorText||this.editor.getLang("clearColor"),this.initUIBase()};d.prototype={getHtmlTpl:function(){return a(this.noColorText,this.editor)},_onTableClick:function(a){var b=a.target||a.srcElement,c=b.getAttribute("data-color");c&&this.fireEvent("pickcolor",c)},_onTableOver:function(a){var b=a.target||a.srcElement,c=b.getAttribute("data-color");c&&(this.getDom("preview").style.backgroundColor=c)},_onTableOut:function(){this.getDom("preview").style.backgroundColor=""},_onPickNoColor:function(){this.fireEvent("picknocolor")}},b.inherits(d,c);var e="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(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.TablePicker=function(a){this.initOptions(a),this.initTablePicker()};d.prototype={defaultNumRows:10,defaultNumCols:10,maxNumRows:20,maxNumCols:20,numRows:10,numCols:10,lengthOfCellSide:22,initTablePicker:function(){this.initUIBase()},getHtmlTpl:function(){return'
    '},_UIBase_render:c.prototype.render,render:function(a){this._UIBase_render(a),this.getDom("label").innerHTML="0"+this.editor.getLang("t_row")+" x 0"+this.editor.getLang("t_col")},_track:function(a,b){var c=this.getDom("overlay").style,d=this.lengthOfCellSide;c.width=a*d+"px",c.height=b*d+"px";var e=this.getDom("label");e.innerHTML=a+this.editor.getLang("t_col")+" x "+b+this.editor.getLang("t_row"),this.numCols=a,this.numRows=b},_onMouseOver:function(a,c){var d=a.relatedTarget||a.fromElement;b.contains(c,d)||c===d||(this.getDom("label").innerHTML="0"+this.editor.getLang("t_col")+" x 0"+this.editor.getLang("t_row"),this.getDom("overlay").style.visibility="")},_onMouseOut:function(a,c){var d=a.relatedTarget||a.toElement;b.contains(c,d)||c===d||(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(a,c){var d=(this.getDom("overlay").style,b.getEventOffset(a)),e=this.lengthOfCellSide,f=Math.ceil(d.left/e),g=Math.ceil(d.top/e);this._track(f,g)},_onClick:function(){this.fireEvent("picktable",this.numCols,this.numRows)}},a.inherits(d,c)}(),function(){var a=baidu.editor.browser,b=baidu.editor.dom.domUtils,c=baidu.editor.ui.uiUtils,d='onmousedown="$$.Stateful_onMouseDown(event, this);" onmouseup="$$.Stateful_onMouseUp(event, this);"'+(a.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:!1,target:null,Stateful_init:function(){this._Stateful_dGetHtmlTpl=this.getHtmlTpl,this.getHtmlTpl=this.Stateful_getHtmlTpl},Stateful_getHtmlTpl:function(){var a=this._Stateful_dGetHtmlTpl();return a.replace(/stateful/g,function(){return d})},Stateful_onMouseEnter:function(a,b){this.target=b,this.isDisabled()&&!this.alwalysHoverable||(this.addState("hover"),this.fireEvent("over"))},Stateful_onMouseLeave:function(a,b){this.isDisabled()&&!this.alwalysHoverable||(this.removeState("hover"),this.removeState("active"),this.fireEvent("out"))},Stateful_onMouseOver:function(a,b){var d=a.relatedTarget;c.contains(b,d)||b===d||this.Stateful_onMouseEnter(a,b)},Stateful_onMouseOut:function(a,b){var d=a.relatedTarget;c.contains(b,d)||b===d||this.Stateful_onMouseLeave(a,b)},Stateful_onMouseDown:function(a,b){this.isDisabled()||this.addState("active")},Stateful_onMouseUp:function(a,b){this.isDisabled()||this.removeState("active")},Stateful_postRender:function(){this.disabled&&!this.hasState("disabled")&&this.addState("disabled")},hasState:function(a){return b.hasClass(this.getStateDom(),"edui-state-"+a)},addState:function(a){this.hasState(a)||(this.getStateDom().className+=" edui-state-"+a)},removeState:function(a){this.hasState(a)&&b.removeClasses(this.getStateDom(),["edui-state-"+a])},getStateDom:function(){return this.getDom("state")},isChecked:function(){return this.hasState("checked")},setChecked:function(a){!this.isDisabled()&&a?this.addState("checked"):this.removeState("checked")},isDisabled:function(){return this.hasState("disabled")},setDisabled:function(a){a?(this.removeState("hover"),this.removeState("checked"),this.removeState("active"),this.addState("disabled")):this.removeState("disabled")}}}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.UIBase,c=baidu.editor.ui.Stateful,d=baidu.editor.ui.Button=function(a){if(a.name){var b=a.name,c=a.cssRules;a.className||(a.className="edui-for-"+b),a.cssRules=".edui-default .edui-for-"+b+" .edui-icon {"+c+"}"}this.initOptions(a),this.initButton()};d.prototype={uiName:"button",label:"",title:"",showIcon:!0,showText:!0,cssRules:"",initButton:function(){this.initUIBase(),this.Stateful_init(),this.cssRules&&a.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(a){var b=a.target||a.srcElement,c=b&&b.tagName&&b.tagName.toLowerCase();if("input"==c||"object"==c||"object"==c)return!1},_onClick:function(){this.isDisabled()||this.fireEvent("click")},setTitle:function(a){var b=this.getDom("label");b.innerHTML=a}},a.inherits(d,b),a.extend(d.prototype,c)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=(baidu.editor.dom.domUtils,baidu.editor.ui.UIBase),d=baidu.editor.ui.Stateful,e=baidu.editor.ui.SplitButton=function(a){this.initOptions(a),this.initSplitButton()};e.prototype={popup:null,uiName:"splitbutton",title:"",initSplitButton:function(){this.initUIBase(),this.Stateful_init();if(null!=this.popup){var a=this.popup;this.popup=null,this.setPopup(a)}},_UIBase_postRender:c.prototype.postRender,postRender:function(){this.Stateful_postRender(),this._UIBase_postRender()},setPopup:function(c){this.popup!==c&&(null!=this.popup&&this.popup.dispose(),c.addListener("show",a.bind(this._onPopupShow,this)),c.addListener("hide",a.bind(this._onPopupHide,this)),c.addListener("postrender",a.bind(function(){c.getDom("body").appendChild(b.createElementByHtml('
    ')),c.getDom().className+=" "+this.className},this)),this.popup=c)},_onPopupShow:function(){this.addState("opened")},_onPopupHide:function(){this.removeState("opened")},getHtmlTpl:function(){return'
    '},showPopup:function(){var a=b.getClientRect(this.getDom());a.top-=this.popup.SHADOW_RADIUS,a.height+=this.popup.SHADOW_RADIUS,this.popup.showAnchorRect(a)},_onArrowClick:function(a,b){this.isDisabled()||this.showPopup()},_onButtonClick:function(){this.isDisabled()||this.fireEvent("buttonclick")}},a.inherits(e,c),a.extend(e.prototype,d,!0)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=baidu.editor.ui.ColorPicker,d=baidu.editor.ui.Popup,e=baidu.editor.ui.SplitButton,f=baidu.editor.ui.ColorButton=function(a){this.initOptions(a),this.initColorButton()};f.prototype={initColorButton:function(){var a=this;this.popup=new d({content:new c({noColorText:a.editor.getLang("clearColor"),editor:a.editor,onpickcolor:function(b,c){a._onPickColor(c)},onpicknocolor:function(b,c){a._onPickNoColor(c)}}),editor:a.editor}),this.initSplitButton()},_SplitButton_postRender:e.prototype.postRender,postRender:function(){this._SplitButton_postRender(),this.getDom("button_body").appendChild(b.createElementByHtml('
    ')),this.getDom().className+=" edui-colorbutton"},setColor:function(a){this.getDom("colorlump").style.backgroundColor=a,this.color=a},_onPickColor:function(a){this.fireEvent("pickcolor",a)!==!1&&(this.setColor(a),this.popup.hide())},_onPickNoColor:function(a){this.fireEvent("picknocolor")!==!1&&this.popup.hide()}},a.inherits(f,e)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.Popup,c=baidu.editor.ui.TablePicker,d=baidu.editor.ui.SplitButton,e=baidu.editor.ui.TableButton=function(a){this.initOptions(a),this.initTableButton()};e.prototype={initTableButton:function(){var a=this;this.popup=new b({content:new c({editor:a.editor,onpicktable:function(b,c,d){ +a._onPickTable(c,d)}}),editor:a.editor}),this.initSplitButton()},_onPickTable:function(a,b){this.fireEvent("picktable",a,b)!==!1&&this.popup.hide()}},a.inherits(e,d)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.UIBase,c=baidu.editor.ui.AutoTypeSetPicker=function(a){this.initOptions(a),this.initAutoTypeSetPicker()};c.prototype={initAutoTypeSetPicker:function(){this.initUIBase()},getHtmlTpl:function(){var a=this.editor,b=a.options.autotypeset,c=a.getLang("autoTypeSet"),d="textAlignValue"+a.uid,e="imageBlockLineValue"+a.uid,f="symbolConverValue"+a.uid;return'
    "+c.mergeLine+'"+c.delLine+'
    "+c.removeFormat+'"+c.indent+'
    "+c.alignment+'"+a.getLang("justifyleft")+'"+a.getLang("justifycenter")+'"+a.getLang("justifyright")+'
    "+c.imageFloat+'"+a.getLang("default")+'"+a.getLang("justifyleft")+'"+a.getLang("justifycenter")+'"+a.getLang("justifyright")+'
    "+c.removeFontsize+'"+c.removeFontFamily+'
    "+c.removeHtml+'
    "+c.pasteFilter+'
    "+c.symbol+'"+c.bdc2sb+'"+c.tobdc+'
    "},_UIBase_render:b.prototype.render},a.inherits(c,b)}(),function(){function a(a){for(var c,d={},e=a.getDom(),f=a.editor.uid,g=null,h=null,i=domUtils.getElementsByTagName(e,"input"),j=i.length-1;c=i[j--];)if(g=c.getAttribute("type"),"checkbox"==g)if(h=c.getAttribute("name"),d[h]&&delete d[h],c.checked){var k=document.getElementById(h+"Value"+f);if(k){if(/input/gi.test(k.tagName))d[h]=k.value;else for(var l,m=k.getElementsByTagName("input"),n=m.length-1;l=m[n--];)if(l.checked){d[h]=l.value;break}}else d[h]=!0}else d[h]=!1;else d[c.getAttribute("value")]=c.checked;for(var o,p=domUtils.getElementsByTagName(e,"select"),j=0;o=p[j++];){var q=o.getAttribute("name");d[q]=d[q]?o.value:""}b.extend(a.editor.options.autotypeset,d),a.editor.setPreferences("autotypeset",d)}var b=baidu.editor.utils,c=baidu.editor.ui.Popup,d=baidu.editor.ui.AutoTypeSetPicker,e=baidu.editor.ui.SplitButton,f=baidu.editor.ui.AutoTypeSetButton=function(a){this.initOptions(a),this.initAutoTypeSetButton()};f.prototype={initAutoTypeSetButton:function(){var b=this;this.popup=new c({content:new d({editor:b.editor}),editor:b.editor,hide:function(){!this._hidden&&this.getDom()&&(a(this),this.getDom().style.display="none",this._hidden=!0,this.fireEvent("hide"))}});var e=0;this.popup.addListener("postRenderAfter",function(){var c=this;if(!e){var d=this.getDom(),f=d.getElementsByTagName("button")[0];f.onclick=function(){a(c),b.editor.execCommand("autotypeset"),c.hide()},domUtils.on(d,"click",function(d){var e=d.target||d.srcElement,f=b.editor.uid;if(e&&"INPUT"==e.tagName){if("imageBlockLine"==e.name||"textAlign"==e.name||"symbolConver"==e.name)for(var g=e.checked,h=document.getElementById(e.name+"Value"+f),i=h.getElementsByTagName("input"),j={imageBlockLine:"none",textAlign:"left",symbolConver:"tobdc"},k=0;k"),e.push('
    '),2===d&&e.push("");return'
    '+e.join("")+"
    "},getStateDom:function(){return this.target},_onClick:function(a){var c=a.target||a.srcElement;/icon/.test(c.className)&&(this.items[c.parentNode.getAttribute("index")].onclick(),b.postHide(a))},_UIBase_render:d.prototype.render},a.inherits(e,d),a.extend(e.prototype,c,!0)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.Stateful,c=baidu.editor.ui.uiUtils,d=baidu.editor.ui.UIBase,e=baidu.editor.ui.PastePicker=function(a){this.initOptions(a),this.initPastePicker()};e.prototype={initPastePicker:function(){this.initUIBase(),this.Stateful_init()},getHtmlTpl:function(){return'
    '+this.editor.getLang("pasteOpt")+'
    '},getStateDom:function(){return this.target},format:function(a){this.editor.ui._isTransfer=!0,this.editor.fireEvent("pasteTransfer",a)},_onClick:function(a){var b=domUtils.getNextDomNode(a),d=c.getViewportRect().height,e=c.getClientRect(b);e.top+e.height>d?b.style.top=-e.height-a.offsetHeight+"px":b.style.top="",/hidden/gi.test(domUtils.getComputedStyle(b,"visibility"))?(b.style.visibility="visible",domUtils.addClass(a,"edui-state-opened")):(b.style.visibility="hidden",domUtils.removeClasses(a,"edui-state-opened"))},_UIBase_render:d.prototype.render},a.inherits(e,d),a.extend(e.prototype,b,!0)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.Toolbar=function(a){this.initOptions(a),this.initToolbar()};d.prototype={items:null,initToolbar:function(){this.items=this.items||[],this.initUIBase()},add:function(a,b){void 0===b?this.items.push(a):this.items.splice(b,0,a)},getHtmlTpl:function(){for(var a=[],b=0;b'+a.join("")+""},postRender:function(){for(var a=this.getDom(),c=0;c
    '},postRender:function(){},queryAutoHide:function(){return!0}};h.prototype={items:null,uiName:"menu",initMenu:function(){this.items=this.items||[],this.initPopup(),this.initItems()},initItems:function(){for(var a=0;a'+a.join("")+""},_Popup_postRender:e.prototype.postRender,postRender:function(){for(var a=this,d=0;d
    '+this.renderLabelHtml()+"
    "},postRender:function(){var a=this;this.addListener("over",function(){a.ownerMenu.fireEvent("submenuover",a),a.subMenu&&a.delayShowSubMenu()}),this.subMenu&&(this.getDom().className+=" edui-hassubmenu",this.subMenu.render(),this.addListener("out",function(){a.delayHideSubMenu()}),this.subMenu.addListener("over",function(){clearTimeout(a._closingTimer),a._closingTimer=null,a.addState("opened")}),this.ownerMenu.addListener("hide",function(){a.hideSubMenu()}),this.ownerMenu.addListener("submenuover",function(b,c){c!==a&&a.delayHideSubMenu()}),this.subMenu._bakQueryAutoHide=this.subMenu.queryAutoHide,this.subMenu.queryAutoHide=function(b){return(!b||!c.contains(a.getDom(),b))&&this._bakQueryAutoHide(b)}),this.getDom().style.tabIndex="-1",c.makeUnselectable(this.getDom()),this.Stateful_postRender()},delayShowSubMenu:function(){var a=this;a.isDisabled()||(a.addState("opened"),clearTimeout(a._showingTimer),clearTimeout(a._closingTimer),a._closingTimer=null,a._showingTimer=setTimeout(function(){a.showSubMenu()},250))},delayHideSubMenu:function(){var a=this;a.isDisabled()||(a.removeState("opened"),clearTimeout(a._showingTimer),a._closingTimer||(a._closingTimer=setTimeout(function(){a.hasState("opened")||a.hideSubMenu(),a._closingTimer=null},400)))},renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "},getStateDom:function(){return this.getDom()},queryAutoHide:function(a){if(this.subMenu&&this.hasState("opened"))return this.subMenu.queryAutoHide(a)},_onClick:function(a,b){this.hasState("disabled")||this.fireEvent("click",a,b)!==!1&&(this.subMenu?this.showSubMenu():e.postHide(a))},showSubMenu:function(){var a=c.getClientRect(this.getDom());a.right-=5,a.left+=2,a.width-=7,a.top-=4,a.bottom+=4,a.height+=8,this.subMenu.showAnchorRect(a,!0,!0)},hideSubMenu:function(){this.subMenu.hide()}},a.inherits(j,d),a.extend(j.prototype,f,!0)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=baidu.editor.ui.Menu,d=baidu.editor.ui.SplitButton,e=baidu.editor.ui.Combox=function(a){this.initOptions(a),this.initCombox()};e.prototype={uiName:"combox",onbuttonclick:function(){this.showPopup()},initCombox:function(){var a=this;this.items=this.items||[];for(var b=0;bd.right&&(g=d.right-e.width);var h=a.top;h+e.height>d.bottom&&(h=d.bottom-e.height),c.style.left=Math.max(g,0)+"px",c.style.top=Math.max(h,0)+"px"},showAtCenter:function(){var a=f.getViewportRect();if(this.fullscreen){var b=this.getDom(),c=this.getDom("content");b.style.display="block";var d=UE.ui.uiUtils.getClientRect(b),g=UE.ui.uiUtils.getClientRect(c);b.style.left="-100000px",c.style.width=a.width-d.width+g.width+"px",c.style.height=a.height-d.height+g.height+"px",b.style.width=a.width+"px",b.style.height=a.height+"px",b.style.left=0,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"}else{this.getDom().style.display="";var h=this.fitSize(),i=0|this.getDom("titlebar").offsetHeight,j=a.width/2-h.width/2,k=a.height/2-(h.height-i)/2-i,l=this.getDom();this.safeSetOffset({left:Math.max(0|j,0),top:Math.max(0|k,0)}),e.hasClass(l,"edui-state-centered")||(l.className+=" edui-state-centered")}this._show()},getContentHtml:function(){var a="";return"string"==typeof this.content?a=this.content:this.iframeUrl&&(a=''),a},getHtmlTpl:function(){var a="";if(this.buttons){for(var b=[],c=0;c
    '+b.join("")+"
    "}return'
    '+(this.title||"")+"
    "+this.closeButton.renderHtml()+'
    '+(this.autoReset?"":this.getContentHtml())+"
    "+a+"
    "},postRender:function(){this.modalMask.getDom()||(this.modalMask.render(),this.modalMask.hide()),this.dragMask.getDom()||(this.dragMask.render(),this.dragMask.hide());var a=this;if(this.addListener("show",function(){a.modalMask.show(this.getDom().style.zIndex-2)}),this.addListener("hide",function(){a.modalMask.hide()}),this.buttons)for(var b=0;b',a.editor.container.style.zIndex&&(this.getDom().style.zIndex=1*a.editor.container.style.zIndex+1))}}),this.onbuttonclick=function(){this.showPopup()},this.initSplitButton()}},a.inherits(d,c)}(),function(){function a(a){var b=a.target||a.srcElement,c=g.findParent(b,function(a){return g.hasClass(a,"edui-shortcutmenu")||g.hasClass(a,"edui-popup")},!0);if(!c)for(var d,e=0;d=h[e++];)d.hide()}var b,c=baidu.editor.ui,d=c.UIBase,e=c.uiUtils,f=baidu.editor.utils,g=baidu.editor.dom.domUtils,h=[],i=!1,j=c.ShortCutMenu=function(a){this.initOptions(a),this.initShortCutMenu()};j.postHide=a,j.prototype={isHidden:!0,SPACE:5,initShortCutMenu:function(){this.items=this.items||[],this.initUIBase(),this.initItems(),this.initEvent(),h.push(this)},initEvent:function(){var a=this,c=a.editor.document;g.on(c,"mousemove",function(c){if(a.isHidden===!1){if(a.getSubMenuMark()||"contextmenu"==a.eventType)return;var d=!0,e=a.getDom(),f=e.offsetWidth,g=e.offsetHeight,h=f/2+a.SPACE,i=g/2,j=Math.abs(c.screenX-a.left),k=Math.abs(c.screenY-a.top);clearTimeout(b),b=setTimeout(function(){k>0&&ki&&ki+70&&k0&&jh&&jh+70&&j'+a+""}},f.inherits(j,d),g.on(document,"mousedown",function(b){a(b)}),g.on(window,"scroll",function(b){a(b)})}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.UIBase,c=baidu.editor.ui.Breakline=function(a){this.initOptions(a),this.initSeparator()};c.prototype={uiName:"Breakline",initSeparator:function(){this.initUIBase()},getHtmlTpl:function(){return"
    "}},a.inherits(c,b)}(),function(){var a=baidu.editor.utils,b=baidu.editor.dom.domUtils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.Message=function(a){this.initOptions(a),this.initMessage()};d.prototype={initMessage:function(){this.initUIBase()},getHtmlTpl:function(){return'
    ×
    '},reset:function(a){var b=this;a.keepshow||(clearTimeout(this.timer),b.timer=setTimeout(function(){b.hide()},a.timeout||4e3)),void 0!==a.content&&b.setContent(a.content),void 0!==a.type&&b.setType(a.type),b.show()},postRender:function(){var a=this,c=this.getDom("closer");c&&b.on(c,"click",function(){a.hide()})},setContent:function(a){this.getDom("content").innerHTML=a},setType:function(a){a=a||"info";var b=this.getDom("body");b.className=b.className.replace(/edui-message-type-[\w-]+/,"edui-message-type-"+a)},getContent:function(){return this.getDom("content").innerHTML},getType:function(){var a=this.getDom("body").match(/edui-message-type-([\w-]+)/);return a?a[1]:""},show:function(){this.getDom().style.display="block"},hide:function(){var a=this.getDom();a&&(a.style.display="none",a.parentNode&&a.parentNode.removeChild(a))}},a.inherits(d,c)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui,c=b.Dialog;b.buttons={},b.Dialog=function(a){var b=new c(a);return b.addListener("hide",function(){if(b.editor){var a=b.editor;try{if(browser.gecko){var c=a.window.scrollY,d=a.window.scrollX;a.body.focus(),a.window.scrollTo(d,c)}else a.focus()}catch(e){}}}),b};for(var d,e={anchor:"~/dialogs/anchor/anchor.html",insertimage:"~/dialogs/image/image.html",link:"~/dialogs/link/link.html",spechars:"~/dialogs/spechars/spechars.html",searchreplace:"~/dialogs/searchreplace/searchreplace.html",map:"~/dialogs/map/map.html",gmap:"~/dialogs/gmap/gmap.html",insertvideo:"~/dialogs/video/video.html",help:"~/dialogs/help/help.html",preview:"~/dialogs/preview/preview.html",emotion:"~/dialogs/emotion/emotion.html",wordimage:"~/dialogs/wordimage/wordimage.html",attachment:"~/dialogs/attachment/attachment.html",insertframe:"~/dialogs/insertframe/insertframe.html",edittip:"~/dialogs/table/edittip.html",edittable:"~/dialogs/table/edittable.html",edittd:"~/dialogs/table/edittd.html",webapp:"~/dialogs/webapp/webapp.html",snapscreen:"~/dialogs/snapscreen/snapscreen.html",scrawl:"~/dialogs/scrawl/scrawl.html",music:"~/dialogs/music/music.html",template:"~/dialogs/template/template.html",background:"~/dialogs/background/background.html",charts:"~/dialogs/charts/charts.html"},f=["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","drafts"],g=0;d=f[g++];)d=d.toLowerCase(),b[d]=function(a){return function(c){var d=new b.Button({className:"edui-for-"+a,title:c.options.labelMap[a]||c.getLang("labelMap."+a)||"",onclick:function(){c.execCommand(a)},theme:c.options.theme,showText:!1});return b.buttons[a]=d,c.addListener("selectionchange",function(b,e,f){var g=c.queryCommandState(a);g==-1?(d.setDisabled(!0),d.setChecked(!1)):f||(d.setDisabled(!1),d.setChecked(g))}),d}}(d);b.cleardoc=function(a){var c=new b.Button({className:"edui-for-cleardoc",title:a.options.labelMap.cleardoc||a.getLang("labelMap.cleardoc")||"",theme:a.options.theme,onclick:function(){confirm(a.getLang("confirmClear"))&&a.execCommand("cleardoc")}});return b.buttons.cleardoc=c,a.addListener("selectionchange",function(){c.setDisabled(a.queryCommandState("cleardoc")==-1)}),c};var h={justify:["left","right","center","justify"],imagefloat:["none","left","center","right"],directionality:["ltr","rtl"]};for(var i in h)!function(a,c){for(var d,e=0;d=c[e++];)!function(c){b[a.replace("float","")+c]=function(d){var e=new b.Button({className:"edui-for-"+a.replace("float","")+c,title:d.options.labelMap[a.replace("float","")+c]||d.getLang("labelMap."+a.replace("float","")+c)||"",theme:d.options.theme,onclick:function(){d.execCommand(a,c)}});return b.buttons[a]=e,d.addListener("selectionchange",function(b,f,g){e.setDisabled(d.queryCommandState(a)==-1),e.setChecked(d.queryCommandValue(a)==c&&!g)}),e}}(d)}(i,h[i]);for(var d,g=0;d=["backcolor","forecolor"][g++];)b[d]=function(a){return function(c){var d=new b.ColorButton({className:"edui-for-"+a,color:"default",title:c.options.labelMap[a]||c.getLang("labelMap."+a)||"",editor:c,onpickcolor:function(b,d){ +c.execCommand(a,d)},onpicknocolor:function(){c.execCommand(a,"default"),this.setColor("transparent"),this.color="default"},onbuttonclick:function(){c.execCommand(a,this.color)}});return b.buttons[a]=d,c.addListener("selectionchange",function(){d.setDisabled(c.queryCommandState(a)==-1)}),d}}(d);var j={noOk:["searchreplace","help","spechars","webapp","preview"],ok:["attachment","anchor","link","insertimage","map","gmap","insertframe","wordimage","insertvideo","insertframe","edittip","edittable","edittd","scrawl","template","music","background","charts"]};for(var i in j)!function(c,d){for(var f,g=0;f=d[g++];)browser.opera&&"searchreplace"===f||!function(d){b[d]=function(f,g,h){g=g||(f.options.iframeUrlMap||{})[d]||e[d],h=f.options.labelMap[d]||f.getLang("labelMap."+d)||"";var i;g&&(i=new b.Dialog(a.extend({iframeUrl:f.ui.mapUrl(g),editor:f,className:"edui-for-"+d,title:h,holdScroll:"insertimage"===d,fullscreen:/charts|preview/.test(d),closeDialog:f.getLang("closeDialog")},"ok"==c?{buttons:[{className:"edui-okbutton",label:f.getLang("ok"),editor:f,onclick:function(){i.close(!0)}},{className:"edui-cancelbutton",label:f.getLang("cancel"),editor:f,onclick:function(){i.close(!1)}}]}:{})),f.ui._dialogs[d+"Dialog"]=i);var j=new b.Button({className:"edui-for-"+d,title:h,onclick:function(){if(i)switch(d){case"wordimage":var a=f.execCommand("wordimage");a&&a.length&&(i.render(),i.open());break;case"scrawl":f.queryCommandState("scrawl")!=-1&&(i.render(),i.open());break;default:i.render(),i.open()}},theme:f.options.theme,disabled:"scrawl"==d&&f.queryCommandState("scrawl")==-1||"charts"==d});return b.buttons[d]=j,f.addListener("selectionchange",function(){var a={edittable:1};if(!(d in a)){var b=f.queryCommandState(d);j.getDom()&&(j.setDisabled(b==-1),j.setChecked(b))}}),j}}(f.toLowerCase())}(i,j[i]);b.snapscreen=function(a,c,d){d=a.options.labelMap.snapscreen||a.getLang("labelMap.snapscreen")||"";var f=new b.Button({className:"edui-for-snapscreen",title:d,onclick:function(){a.execCommand("snapscreen")},theme:a.options.theme});if(b.buttons.snapscreen=f,c=c||(a.options.iframeUrlMap||{}).snapscreen||e.snapscreen){var g=new b.Dialog({iframeUrl:a.ui.mapUrl(c),editor:a,className:"edui-for-snapscreen",title:d,buttons:[{className:"edui-okbutton",label:a.getLang("ok"),editor:a,onclick:function(){g.close(!0)}},{className:"edui-cancelbutton",label:a.getLang("cancel"),editor:a,onclick:function(){g.close(!1)}}]});g.render(),a.ui._dialogs.snapscreenDialog=g}return a.addListener("selectionchange",function(){f.setDisabled(a.queryCommandState("snapscreen")==-1)}),f},b.insertcode=function(c,d,e){d=c.options.insertcode||[],e=c.options.labelMap.insertcode||c.getLang("labelMap.insertcode")||"";var f=[];a.each(d,function(a,b){f.push({label:a,value:b,theme:c.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}})});var g=new b.Combox({editor:c,items:f,onselect:function(a,b){c.execCommand("insertcode",this.items[b].value)},onbuttonclick:function(){this.showPopup()},title:e,initValue:e,className:"edui-for-insertcode",indexByValue:function(a){if(a)for(var b,c=0;b=this.items[c];c++)if(b.value.indexOf(a)!=-1)return c;return-1}});return b.buttons.insertcode=g,c.addListener("selectionchange",function(a,b,d){if(!d){var f=c.queryCommandState("insertcode");if(f==-1)g.setDisabled(!0);else{g.setDisabled(!1);var h=c.queryCommandValue("insertcode");if(!h)return void g.setValue(e);h&&(h=h.replace(/['"]/g,"").split(",")[0]),g.setValue(h)}}}),g},b.fontfamily=function(c,d,e){if(d=c.options.fontfamily||[],e=c.options.labelMap.fontfamily||c.getLang("labelMap.fontfamily")||"",d.length){for(var f,g=0,h=[];f=d[g];g++){var i=c.getLang("fontfamily")[f.name]||"";!function(b,d){h.push({label:b,value:d,theme:c.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}})}(f.label||i,f.val)}var j=new b.Combox({editor:c,items:h,onselect:function(a,b){c.execCommand("FontFamily",this.items[b].value)},onbuttonclick:function(){this.showPopup()},title:e,initValue:e,className:"edui-for-fontfamily",indexByValue:function(a){if(a)for(var b,c=0;b=this.items[c];c++)if(b.value.indexOf(a)!=-1)return c;return-1}});return b.buttons.fontfamily=j,c.addListener("selectionchange",function(a,b,d){if(!d){var e=c.queryCommandState("FontFamily");if(e==-1)j.setDisabled(!0);else{j.setDisabled(!1);var f=c.queryCommandValue("FontFamily");f&&(f=f.replace(/['"]/g,"").split(",")[0]),j.setValue(f)}}}),j}},b.fontsize=function(a,c,d){if(d=a.options.labelMap.fontsize||a.getLang("labelMap.fontsize")||"",c=c||a.options.fontsize||[],c.length){for(var e=[],f=0;f'+(this.label||"")+""}})}var h=new b.Combox({editor:a,items:e,title:d,initValue:d,onselect:function(b,c){a.execCommand("FontSize",this.items[c].value)},onbuttonclick:function(){this.showPopup()},className:"edui-for-fontsize"});return b.buttons.fontsize=h,a.addListener("selectionchange",function(b,c,d){if(!d){var e=a.queryCommandState("FontSize");e==-1?h.setDisabled(!0):(h.setDisabled(!1),h.setValue(a.queryCommandValue("FontSize")))}}),h}},b.paragraph=function(c,d,e){if(e=c.options.labelMap.paragraph||c.getLang("labelMap.paragraph")||"",d=c.options.paragraph||[],!a.isEmptyObject(d)){var f=[];for(var g in d)f.push({value:g,label:d[g]||c.getLang("paragraph")[g],theme:c.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}});var h=new b.Combox({editor:c,items:f,title:e,initValue:e,className:"edui-for-paragraph",onselect:function(a,b){c.execCommand("Paragraph",this.items[b].value)},onbuttonclick:function(){this.showPopup()}});return b.buttons.paragraph=h,c.addListener("selectionchange",function(a,b,d){if(!d){var e=c.queryCommandState("Paragraph");if(e==-1)h.setDisabled(!0);else{h.setDisabled(!1);var f=c.queryCommandValue("Paragraph"),g=h.indexByValue(f);g!=-1?h.setValue(f):h.setValue(h.initValue)}}}),h}},b.customstyle=function(a){var c=a.options.customstyle||[],d=a.options.labelMap.customstyle||a.getLang("labelMap.customstyle")||"";if(c.length){for(var e,f=a.getLang("customstyle"),g=0,h=[];e=c[g++];)!function(b){var c={};c.label=b.label?b.label:f[b.name],c.style=b.style,c.className=b.className,c.tag=b.tag,h.push({label:c.label,value:c,theme:a.options.theme,renderLabelHtml:function(){return'
    <'+c.tag+" "+(c.className?' class="'+c.className+'"':"")+(c.style?' style="'+c.style+'"':"")+">"+c.label+"
    "}})}(e);var i=new b.Combox({editor:a,items:h,title:d,initValue:d,className:"edui-for-customstyle",onselect:function(b,c){a.execCommand("customstyle",this.items[c].value)},onbuttonclick:function(){this.showPopup()},indexByValue:function(a){for(var b,c=0;b=this.items[c++];)if(b.label==a)return c-1;return-1}});return b.buttons.customstyle=i,a.addListener("selectionchange",function(b,c,d){if(!d){var e=a.queryCommandState("customstyle");if(e==-1)i.setDisabled(!0);else{i.setDisabled(!1);var f=a.queryCommandValue("customstyle"),g=i.indexByValue(f);g!=-1?i.setValue(f):i.setValue(i.initValue)}}}),i}},b.inserttable=function(a,c,d){d=a.options.labelMap.inserttable||a.getLang("labelMap.inserttable")||"";var e=new b.TableButton({editor:a,title:d,className:"edui-for-inserttable",onpicktable:function(b,c,d){a.execCommand("InsertTable",{numRows:d,numCols:c,border:1})},onbuttonclick:function(){this.showPopup()}});return b.buttons.inserttable=e,a.addListener("selectionchange",function(){e.setDisabled(a.queryCommandState("inserttable")==-1)}),e},b.lineheight=function(a){var c=a.options.lineheight||[];if(c.length){for(var d,e=0,f=[];d=c[e++];)f.push({label:d,value:d,theme:a.options.theme,onclick:function(){a.execCommand("lineheight",this.value)}});var g=new b.MenuButton({editor:a,className:"edui-for-lineheight",title:a.options.labelMap.lineheight||a.getLang("labelMap.lineheight")||"",items:f,onbuttonclick:function(){var b=a.queryCommandValue("LineHeight")||this.value;a.execCommand("LineHeight",b)}});return b.buttons.lineheight=g,a.addListener("selectionchange",function(){var b=a.queryCommandState("LineHeight");if(b==-1)g.setDisabled(!0);else{g.setDisabled(!1);var c=a.queryCommandValue("LineHeight");c&&g.setValue((c+"").replace(/cm/,"")),g.setChecked(b)}}),g}};for(var k,l=["top","bottom"],m=0;k=l[m++];)!function(a){b["rowspacing"+a]=function(c){var d=c.options["rowspacing"+a]||[];if(!d.length)return null;for(var e,f=0,g=[];e=d[f++];)g.push({label:e,value:e,theme:c.options.theme,onclick:function(){c.execCommand("rowspacing",this.value,a)}});var h=new b.MenuButton({editor:c,className:"edui-for-rowspacing"+a,title:c.options.labelMap["rowspacing"+a]||c.getLang("labelMap.rowspacing"+a)||"",items:g,onbuttonclick:function(){var b=c.queryCommandValue("rowspacing",a)||this.value;c.execCommand("rowspacing",b,a)}});return b.buttons[a]=h,c.addListener("selectionchange",function(){var b=c.queryCommandState("rowspacing",a);if(b==-1)h.setDisabled(!0);else{h.setDisabled(!1);var d=c.queryCommandValue("rowspacing",a);d&&h.setValue((d+"").replace(/%/,"")),h.setChecked(b)}}),h}}(k);for(var n,o=["insertorderedlist","insertunorderedlist"],p=0;n=o[p++];)!function(a){b[a]=function(c){var d=c.options[a],e=function(){c.execCommand(a,this.value)},f=[];for(var g in d)f.push({label:d[g]||c.getLang()[a][g]||"",value:g,theme:c.options.theme,onclick:e});var h=new b.MenuButton({editor:c,className:"edui-for-"+a,title:c.getLang("labelMap."+a)||"",items:f,onbuttonclick:function(){var b=c.queryCommandValue(a)||this.value;c.execCommand(a,b)}});return b.buttons[a]=h,c.addListener("selectionchange",function(){var b=c.queryCommandState(a);if(b==-1)h.setDisabled(!0);else{h.setDisabled(!1);var d=c.queryCommandValue(a);h.setValue(d),h.setChecked(b)}}),h}}(n);b.fullscreen=function(a,c){c=a.options.labelMap.fullscreen||a.getLang("labelMap.fullscreen")||"";var d=new b.Button({className:"edui-for-fullscreen",title:c,theme:a.options.theme,onclick:function(){a.ui&&a.ui.setFullScreen(!a.ui.isFullScreen()),this.setChecked(a.ui.isFullScreen())}});return b.buttons.fullscreen=d,a.addListener("selectionchange",function(){var b=a.queryCommandState("fullscreen");d.setDisabled(b==-1),d.setChecked(a.ui.isFullScreen())}),d},b.emotion=function(a,c){var d="emotion",f=new b.MultiMenuPop({title:a.options.labelMap[d]||a.getLang("labelMap."+d)||"",editor:a,className:"edui-for-"+d,iframeUrl:a.ui.mapUrl(c||(a.options.iframeUrlMap||{})[d]||e[d])});return b.buttons[d]=f,a.addListener("selectionchange",function(){f.setDisabled(a.queryCommandState(d)==-1)}),f},b.autotypeset=function(a){var c=new b.AutoTypeSetButton({editor:a,title:a.options.labelMap.autotypeset||a.getLang("labelMap.autotypeset")||"",className:"edui-for-autotypeset",onbuttonclick:function(){a.execCommand("autotypeset")}});return b.buttons.autotypeset=c,a.addListener("selectionchange",function(){c.setDisabled(a.queryCommandState("autotypeset")==-1)}),c},b.simpleupload=function(a){var c="simpleupload",d=new b.Button({className:"edui-for-"+c,title:a.options.labelMap[c]||a.getLang("labelMap."+c)||"",onclick:function(){},theme:a.options.theme,showText:!1});return b.buttons[c]=d,a.addListener("ready",function(){var b=d.getDom("body"),c=b.children[0];a.fireEvent("simpleuploadbtnready",c)}),a.addListener("selectionchange",function(b,e,f){var g=a.queryCommandState(c);g==-1?(d.setDisabled(!0),d.setChecked(!1)):f||(d.setDisabled(!1),d.setChecked(g))}),d}}(),function(){function a(a){this.initOptions(a),this.initEditorUI()}var b=baidu.editor.utils,c=baidu.editor.ui.uiUtils,d=baidu.editor.ui.UIBase,e=baidu.editor.dom.domUtils,f=[];a.prototype={uiName:"editor",initEditorUI:function(){function a(a,b){a.setOpt({wordCount:!0,maximumWords:1e4,wordCountMsg:a.options.wordCountMsg||a.getLang("wordCountMsg"),wordOverFlowMsg:a.options.wordOverFlowMsg||a.getLang("wordOverFlowMsg")});var c=a.options,d=c.maximumWords,e=c.wordCountMsg,f=c.wordOverFlowMsg,g=b.getDom("wordcount");if(c.wordCount){var h=a.getContentLength(!0);h>d?(g.innerHTML=f,a.fireEvent("wordcountoverflow")):g.innerHTML=e.replace("{#leave}",d-h).replace("{#count}",h)}}this.editor.ui=this,this._dialogs={},this.initUIBase(),this._initToolbars();var b=this.editor,c=this;b.addListener("ready",function(){function d(){a(b,c),e.un(b.document,"click",arguments.callee)}b.getDialog=function(a){return b.ui._dialogs[a+"Dialog"]},e.on(b.window,"scroll",function(a){baidu.editor.ui.Popup.postHide(a)}),b.ui._actualFrameWidth=b.options.initialFrameWidth,UE.browser.ie&&6===UE.browser.version&&b.container.ownerDocument.execCommand("BackgroundImageCache",!1,!0),b.options.elementPathEnabled&&(b.ui.getDom("elementpath").innerHTML='
    '+b.getLang("elementPathTip")+":
    "),b.options.wordCount&&(e.on(b.document,"click",d),b.ui.getDom("wordcount").innerHTML=b.getLang("wordCountTip")),b.ui._scale(),b.options.scaleEnabled?(b.autoHeightEnabled&&b.disableAutoHeight(),c.enableScale()):c.disableScale(),b.options.elementPathEnabled||b.options.wordCount||b.options.scaleEnabled||(b.ui.getDom("elementpath").style.display="none",b.ui.getDom("wordcount").style.display="none",b.ui.getDom("scale").style.display="none"),b.selection.isFocus()&&b.fireEvent("selectionchange",!1,!0)}),b.addListener("mousedown",function(a,b){var c=b.target||b.srcElement;baidu.editor.ui.Popup.postHide(b,c),baidu.editor.ui.ShortCutMenu.postHide(b)}),b.addListener("delcells",function(){UE.ui.edittip&&new UE.ui.edittip(b),b.getDialog("edittip").open()});var d,f,g=!1;b.addListener("afterpaste",function(){b.queryCommandState("pasteplain")||(baidu.editor.ui.PastePicker&&(d=new baidu.editor.ui.Popup({content:new baidu.editor.ui.PastePicker({editor:b}),editor:b,className:"edui-wordpastepop"}),d.render()),g=!0)}),b.addListener("afterinserthtml",function(){clearTimeout(f),f=setTimeout(function(){if(d&&(g||b.ui._isTransfer)){if(d.isHidden()){var a=e.createElement(b.document,"span",{style:"line-height:0px;",innerHTML:"\ufeff"}),c=b.selection.getRange();c.insertNode(a);var f=getDomNode(a,"firstChild","previousSibling");f&&d.showAnchor(3==f.nodeType?f.parentNode:f),e.remove(a)}else d.show();delete b.ui._isTransfer,g=!1}},200)}),b.addListener("contextmenu",function(a,b){baidu.editor.ui.Popup.postHide(b)}),b.addListener("keydown",function(a,b){d&&d.dispose(b);var c=b.keyCode||b.which;b.altKey&&90==c&&UE.ui.buttons.fullscreen.onclick()}),b.addListener("wordcount",function(b){a(this,c)}),b.addListener("selectionchange",function(){b.options.elementPathEnabled&&c[(b.queryCommandState("elementpath")==-1?"dis":"en")+"ableElementPath"](),b.options.scaleEnabled&&c[(b.queryCommandState("scale")==-1?"dis":"en")+"ableScale"]()});var h=new baidu.editor.ui.Popup({editor:b,content:"",className:"edui-bubble",_onEditButtonClick:function(){this.hide(),b.ui._dialogs.linkDialog.open()},_onImgEditButtonClick:function(a){this.hide(),b.ui._dialogs[a]&&b.ui._dialogs[a].open()},_onImgSetFloat:function(a){this.hide(),b.execCommand("imagefloat",a)},_setIframeAlign:function(a){var b=h.anchorEl,c=b.cloneNode(!0);switch(a){case-2:c.setAttribute("align","");break;case-1:c.setAttribute("align","left");break;case 1:c.setAttribute("align","right")}b.parentNode.insertBefore(c,b),e.remove(b),h.anchorEl=c,h.showAnchor(h.anchorEl)},_updateIframe:function(){var a=b._iframe=h.anchorEl;e.hasClass(a,"ueditor_baidumap")?(b.selection.getRange().selectNode(a).select(),b.ui._dialogs.mapDialog.open(),h.hide()):(b.ui._dialogs.insertframeDialog.open(),h.hide())},_onRemoveButtonClick:function(a){b.execCommand(a),this.hide()},queryAutoHide:function(a){return a&&a.ownerDocument==b.document&&("img"==a.tagName.toLowerCase()||e.findParentByTagName(a,"a",!0))?a!==h.anchorEl:baidu.editor.ui.Popup.prototype.queryAutoHide.call(this,a)}});h.render(),b.options.imagePopup&&(b.addListener("mouseover",function(a,c){c=c||window.event;var d=c.target||c.srcElement;if(b.ui._dialogs.insertframeDialog&&/iframe/gi.test(d.tagName)){var e=h.formatHtml(""+b.getLang("property")+': '+b.getLang("default")+'  '+b.getLang("justifyleft")+'  '+b.getLang("justifyright")+'   '+b.getLang("modify")+"");e?(h.getDom("content").innerHTML=e,h.anchorEl=d,h.showAnchor(h.anchorEl)):h.hide()}}),b.addListener("selectionchange",function(a,c){if(c){var d="",f="",g=b.selection.getRange().getClosedNode(),i=b.ui._dialogs;if(g&&"IMG"==g.tagName){var j="insertimageDialog";if(g.className.indexOf("edui-faked-video")==-1&&g.className.indexOf("edui-upload-video")==-1||(j="insertvideoDialog"),g.className.indexOf("edui-faked-webapp")!=-1&&(j="webappDialog"),g.src.indexOf("http://api.map.baidu.com")!=-1&&(j="mapDialog"),g.className.indexOf("edui-faked-music")!=-1&&(j="musicDialog"),g.src.indexOf("http://maps.google.com/maps/api/staticmap")!=-1&&(j="gmapDialog"),g.getAttribute("anchorname")&&(j="anchorDialog",d=h.formatHtml(""+b.getLang("property")+': '+b.getLang("modify")+"  "+b.getLang("delete")+"")),g.getAttribute("word_img")&&(b.word_img=[g.getAttribute("word_img")],j="wordimageDialog"),(e.hasClass(g,"loadingclass")||e.hasClass(g,"loaderrorclass"))&&(j=""),!i[j])return;f=""+b.getLang("property")+': '+b.getLang("default")+'  '+b.getLang("justifyleft")+'  '+b.getLang("justifyright")+'  '+b.getLang("justifycenter")+"  '+b.getLang("modify")+"",!d&&(d=h.formatHtml(f))}if(b.ui._dialogs.linkDialog){var k,l=b.queryCommandValue("link");if(l&&(k=l.getAttribute("_href")||l.getAttribute("href",2))){var m=k;k.length>30&&(m=k.substring(0,20)+"..."),d&&(d+='
    '),d+=h.formatHtml(""+b.getLang("anthorMsg")+': '+m+' '+b.getLang("modify")+' '+b.getLang("clear")+""),h.showAnchor(l)}}d?(h.getDom("content").innerHTML=d,h.anchorEl=g||l,h.showAnchor(h.anchorEl)):h.hide()}}))},_initToolbars:function(){for(var a=this.editor,b=this.toolbars||[],c=[],d=0;d
    '+(this.toolbars.length?'
    '+this.renderToolbarBoxHtml()+"
    ":"")+'
    '},showWordImageDialog:function(){this._dialogs.wordimageDialog.open()},renderToolbarBoxHtml:function(){for(var a=[],b=0;b'+c+"");b.innerHTML='
    '+this.editor.getLang("elementPathTip")+": "+d.join(" > ")+"
    "}else b.style.display="none"},disableElementPath:function(){var a=this.getDom("elementpath");a.innerHTML="",a.style.display="none",this.elementPathEnabled=!1},enableElementPath:function(){var a=this.getDom("elementpath");a.style.display="",this.elementPathEnabled=!0,this._updateElementPath()},_scale:function(){function a(){o=e.getXY(h),p||(p=g.options.minFrameHeight+j.offsetHeight+k.offsetHeight),m.style.cssText="position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:"+h.offsetWidth+"px;height:"+h.offsetHeight+"px;z-index:"+(g.options.zIndex+1),e.on(f,"mousemove",b),e.on(i,"mouseup",c),e.on(f,"mouseup",c)}function b(a){d();var b=a||window.event;r=b.pageX||f.documentElement.scrollLeft+b.clientX,s=b.pageY||f.documentElement.scrollTop+b.clientY,t=r-o.x,u=s-o.y,t>=q&&(n=!0,m.style.width=t+"px"),u>=p&&(n=!0,m.style.height=u+"px")}function c(){n&&(n=!1,g.ui._actualFrameWidth=m.offsetWidth-2,h.style.width=g.ui._actualFrameWidth+"px",g.setHeight(m.offsetHeight-k.offsetHeight-j.offsetHeight-2,!0)),m&&(m.style.display="none"),d(),e.un(f,"mousemove",b),e.un(i,"mouseup",c),e.un(f,"mouseup",c)}function d(){browser.ie?f.selection.clear():window.getSelection().removeAllRanges()}var f=document,g=this.editor,h=g.container,i=g.document,j=this.getDom("toolbarbox"),k=this.getDom("bottombar"),l=this.getDom("scale"),m=this.getDom("scalelayer"),n=!1,o=null,p=0,q=g.options.minFrameWidth,r=0,s=0,t=0,u=0,v=this;this.editor.addListener("fullscreenchanged",function(a,b){if(b)v.disableScale();else if(v.editor.options.scaleEnabled){v.enableScale();var c=v.editor.document.createElement("span");v.editor.body.appendChild(c),v.editor.body.style.height=Math.max(e.getXY(c).y,v.editor.iframe.offsetHeight-20)+"px",e.remove(c)}}),this.enableScale=function(){1!=g.queryCommandState("source")&&(l.style.display="",this.scaleEnabled=!0,e.on(l,"mousedown",a))},this.disableScale=function(){l.style.display="none",this.scaleEnabled=!1,e.un(l,"mousedown",a)}},isFullScreen:function(){return this._fullscreen},postRender:function(){d.prototype.postRender.call(this);for(var a=0;a[\n\r\t]+([ ]{4})+/g,">").replace(/[\n\r\t]+([ ]{4})+[\n\r\t]+<"),c.className&&(b.className=c.className),c.style.cssText&&(b.style.cssText=c.style.cssText),/textarea/i.test(c.tagName)?(d.textarea=c,d.textarea.style.display="none"):c.parentNode.removeChild(c),c.id&&(b.id=c.id,e.removeAttributes(c,"id")),c=b,c.innerHTML=""}e.addClass(c,"edui-"+d.options.theme),d.ui.render(c);var h=d.options;d.container=d.ui.getDom();for(var i,j=e.findParents(c,!0),k=[],l=0;i=j[l];l++)k[l]=i.style.display,i.style.display="block";if(h.initialFrameWidth)h.minFrameWidth=h.initialFrameWidth;else{h.minFrameWidth=h.initialFrameWidth=c.offsetWidth;var m=c.style.width;/%$/.test(m)&&(h.initialFrameWidth=m)}h.initialFrameHeight?h.minFrameHeight=h.initialFrameHeight:h.initialFrameHeight=h.minFrameHeight=c.offsetHeight;for(var i,l=0;i=j[l];l++)i.style.display=k[l];c.style.height&&(c.style.height=""),d.container.style.width=h.initialFrameWidth+(/%$/.test(h.initialFrameWidth)?"":"px"),d.container.style.zIndex=h.zIndex,f.call(d,d.ui.getDom("iframeholder")),d.fireEvent("afteruiready")}d.langIsReady?b():d.addListener("langReady",b)})},d},UE.getEditor=function(a,b){var c=g[a];return c||(c=g[a]=new UE.ui.Editor(b),c.render(a)),c},UE.delEditor=function(a){var b;(b=g[a])&&(b.key&&b.destroy(),delete g[a])},UE.registerUI=function(a,c,d,e){b.each(a.split(/\s+/),function(a){UE._customizeUI[a]={id:e,execFn:c,index:d}})}}(),UE.registerUI("message",function(a){function b(){var a=g.ui.getDom("toolbarbox");a&&(c.style.top=a.offsetHeight+3+"px"),c.style.zIndex=Math.max(g.options.zIndex,g.iframe.style.zIndex)+1}var c,d=baidu.editor.ui,e=d.Message,f=[],g=a;g.addListener("ready",function(){c=document.getElementById(g.ui.id+"_message_holder"),b()}),g.addListener("showmessage",function(a,d){d=utils.isString(d)?{content:d}:d;var h=new e({timeout:d.timeout,type:d.type,content:d.content,keepshow:d.keepshow,editor:g}),i=d.id||"msg_"+(+new Date).toString(36);return h.render(c),f[i]=h,h.reset(d),b(),i}),g.addListener("updatemessage",function(a,b,d){d=utils.isString(d)?{content:d}:d;var e=f[b];e.render(c),e&&e.reset(d)}),g.addListener("hidemessage",function(a,b){var c=f[b];c&&c.hide()})}),UE.registerUI("autosave",function(a){var b=null,c=null;a.on("afterautosave",function(){clearTimeout(b),b=setTimeout(function(){c&&a.trigger("hidemessage",c),c=a.trigger("showmessage",{content:a.getLang("autosave.success"),timeout:2e3})},2e3)})})}(); \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor/ueditor.config.js b/yshop-drink-vue3/public/UEditor/ueditor.config.js new file mode 100644 index 0000000..c8b7772 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/ueditor.config.js @@ -0,0 +1,473 @@ +/** + * ueditor完整配置项 + * 可以在这里配置整个编辑器的特性 + */ +/** ************************提示******************************** + * 所有被注释的配置项均为UEditor默认值。 + * 修改默认配置请首先确保已经完全明确该参数的真实用途。 + * 主要有两种修改方案,一种是取消此处注释,然后修改成对应参数;另一种是在实例化编辑器时传入对应参数。 + * 当升级编辑器时,可直接使用旧版配置文件替换新版配置文件,不用担心旧版配置文件中因缺少新功能所需的参数而导致脚本报错。 + **************************提示********************************/ + +(function () { + /** + * 编辑器资源文件根路径。它所表示的含义是:以编辑器实例化页面为当前路径,指向编辑器资源文件(即dialog等文件夹)的路径。 + * 鉴于很多同学在使用编辑器的时候出现的种种路径问题,此处强烈建议大家使用"相对于网站根目录的相对路径"进行配置。 + * "相对于网站根目录的相对路径"也就是以斜杠开头的形如"/myProject/ueditor/"这样的路径。 + * 如果站点中有多个不在同一层级的页面需要实例化编辑器,且引用了同一UEditor的时候,此处的URL可能不适用于每个页面的编辑器。 + * 因此,UEditor提供了针对不同页面的编辑器可单独配置的根路径,具体来说,在需要实例化编辑器的页面最顶部写上如下代码即可。当然,需要令此处的URL等于对应的配置。 + * window.UEDITOR_HOME_URL = "/xxxx/xxxx/"; + */ + var URL = window.UEDITOR_HOME_URL || getUEBasePath(); + + /** + * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。 + */ + window.UEDITOR_CONFIG = { + + // 为编辑器实例添加一个路径,这个不能被注释 + UEDITOR_HOME_URL: URL, + + // 服务器统一请求接口路径 + serverUrl: URL + 'php/controller.php', + + // 工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义 + toolbars: [[ + 'source', '|', 'undo', 'redo', '|', + 'bold', 'italic', 'underline', 'strikethrough', '|', 'superscript', 'subscript', '|', 'forecolor', 'backcolor', '|', + 'removeformat', '|', 'insertorderedlist', 'insertunorderedlist', '|', 'selectall', 'cleardoc', 'paragraph', '|', + 'fontfamily', 'fontsize', '|', 'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', + 'link', 'unlink', '|', 'emotion', '|', + '|', 'horizontal', 'print', 'preview', 'fullscreen', 'drafts', 'formula' + ]], + // 当鼠标放在工具栏上时显示的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}'//编辑器层级的基数,可以用来改变字体等 + + //, iframeCssUrl: URL + '/themes/iframe.css' //给编辑区域的iframe引入一个css文件 + + // indentValue + // 首行缩进距离,默认是2em + //, indentValue:'2em' + + //, initialFrameWidth:1000 //初始化编辑器宽度,默认1000 + //, initialFrameHeight:320 //初始化编辑器高度,默认320 + + //, readonly : false //编辑器初始化结束后,编辑区域是否是只读的,默认是false + + //, autoClearEmptyNode : true //getContent时,是否删除空的inlineElement节点(包括嵌套的情况) + + // 启用自动保存 + //, enableAutoSave: true + // 自动保存间隔时间, 单位ms + //, saveInterval: 500 + + //, 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", "forecolor", "backcolor", "insertorderedlist", "insertunorderedlist"] + + // elementPathEnabled + // 是否启用元素路径,默认是显示 + //, elementPathEnabled : true + + // wordCount + //, wordCount:true //是否开启字数统计 + //, maximumWords:10000 //允许的最大字符数 + // 字数统计提示,{#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:true + // 浮动时工具栏距离浏览器顶部的高度,用于某些具有固定头部的页面 + //, 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:'] + + // webAppKey 百度应用的APIkey,每个站长必须首先去百度官网注册一个key后方能正常使用app功能,注册介绍,http://app.baidu.com/static/cms/getapikey.html + //, webAppKey: "" + + // 默认过滤规则相关配置项目 + //, disabledTableInTable:true //禁止表格嵌套 + //, allowDivTransToP:true //允许进入编辑器的div标签自动变成p标签 + //, rgb2Hex:true //默认产出的数据中的color自动从rgb格式变成16进制格式 + + // xss 过滤是否开启,inserthtml等操作 + xssFilterRules: true, + // input xss过滤 + inputXssFilter: true, + // output xss过滤 + outputXssFilter: true, + // xss过滤白名单 名单来源: https://raw.githubusercontent.com/leizongmin/js-xss/master/lib/default.js + whiteList: { + a: ['target', 'href', 'title', 'class', 'style'], + abbr: ['title', 'class', 'style'], + address: ['class', 'style'], + area: ['shape', 'coords', 'href', 'alt'], + article: [], + aside: [], + audio: ['autoplay', 'controls', 'loop', 'preload', 'src', 'class', 'style'], + b: ['class', 'style'], + bdi: ['dir'], + bdo: ['dir'], + big: [], + blockquote: ['cite', 'class', 'style'], + br: [], + caption: ['class', 'style'], + center: [], + cite: [], + code: ['class', 'style'], + col: ['align', 'valign', 'span', 'width', 'class', 'style'], + colgroup: ['align', 'valign', 'span', 'width', 'class', 'style'], + dd: ['class', 'style'], + del: ['datetime'], + details: ['open'], + div: ['class', 'style'], + dl: ['class', 'style'], + dt: ['class', 'style'], + em: ['class', 'style'], + font: ['color', 'size', 'face'], + footer: [], + h1: ['class', 'style'], + h2: ['class', 'style'], + h3: ['class', 'style'], + h4: ['class', 'style'], + h5: ['class', 'style'], + h6: ['class', 'style'], + header: [], + hr: [], + i: ['class', 'style'], + img: ['src', 'alt', 'title', 'width', 'height', 'id', '_src', 'loadingclass', 'class', 'data-latex'], + ins: ['datetime'], + li: ['class', 'style'], + mark: [], + nav: [], + ol: ['class', 'style'], + p: ['class', 'style'], + pre: ['class', 'style'], + s: [], + section: [], + small: [], + span: ['class', 'style'], + sub: ['class', 'style'], + sup: ['class', 'style'], + strong: ['class', 'style'], + table: ['width', 'border', 'align', 'valign', 'class', 'style'], + tbody: ['align', 'valign', 'class', 'style'], + td: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'], + tfoot: ['align', 'valign', 'class', 'style'], + th: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'], + thead: ['align', 'valign', 'class', 'style'], + tr: ['rowspan', 'align', 'valign', 'class', 'style'], + tt: [], + u: [], + ul: ['class', 'style'], + video: ['autoplay', 'controls', 'loop', 'preload', 'src', 'height', 'width', 'class', 'style'] + } + }; + + 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) { + let 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/yshop-drink-vue3/public/UEditor/ueditor.parse.js b/yshop-drink-vue3/public/UEditor/ueditor.parse.js new file mode 100644 index 0000000..408f397 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/ueditor.parse.js @@ -0,0 +1,1022 @@ +/*! + * UEditor + * version: ueditor + * build: Wed Dec 26 2018 17:25:05 GMT+0800 (CST) + */ + +(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{ background:white; 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;}', + 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 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('charts',function( utils ){ + + utils.cssRule('chartsContainerHeight','.edui-chart-container { height:'+(this.chartContainerHeight||300)+'px}'); + var resourceRoot = this.rootPath, + containers = this.root, + sources = null; + + //不存在指定的根路径, 则直接退出 + if ( !resourceRoot ) { + return; + } + + if ( sources = parseSources() ) { + + loadResources(); + + } + + + function parseSources () { + + if ( !containers ) { + return null; + } + + return extractChartData( containers ); + + } + + /** + * 提取数据 + */ + function extractChartData ( rootNode ) { + + var data = [], + tables = rootNode.getElementsByTagName( "table" ); + + for ( var i = 0, tableNode; tableNode = tables[ i ]; i++ ) { + + if ( tableNode.getAttribute( "data-chart" ) !== null ) { + + data.push( formatData( tableNode ) ); + + } + + } + + return data.length ? data : null; + + } + + function formatData ( tableNode ) { + + var meta = tableNode.getAttribute( "data-chart" ), + metaConfig = {}, + data = []; + + //提取table数据 + for ( var i = 0, row; row = tableNode.rows[ i ]; i++ ) { + + var rowData = []; + + for ( var j = 0, cell; cell = row.cells[ j ]; j++ ) { + + var value = ( cell.innerText || cell.textContent || '' ); + rowData.push( cell.tagName == 'TH' ? value:(value | 0) ); + + } + + data.push( rowData ); + + } + + //解析元信息 + meta = meta.split( ";" ); + for ( var i = 0, metaData; metaData = meta[ i ]; i++ ) { + + metaData = metaData.split( ":" ); + metaConfig[ metaData[ 0 ] ] = metaData[ 1 ]; + + } + + + return { + table: tableNode, + meta: metaConfig, + data: data + }; + + } + + //加载资源 + function loadResources () { + + loadJQuery(); + + } + + function loadJQuery () { + + //不存在jquery, 则加载jquery + if ( !window.jQuery ) { + + utils.loadFile(document,{ + src : resourceRoot + "/third-party/jquery-1.10.2.min.js", + tag : "script", + type : "text/javascript", + defer : "defer" + },function(){ + + loadHighcharts(); + + }); + + } else { + + loadHighcharts(); + + } + + } + + function loadHighcharts () { + + //不存在Highcharts, 则加载Highcharts + if ( !window.Highcharts ) { + + utils.loadFile(document,{ + src : resourceRoot + "/third-party/highcharts/highcharts.js", + tag : "script", + type : "text/javascript", + defer : "defer" + },function(){ + + loadTypeConfig(); + + }); + + } else { + + loadTypeConfig(); + + } + + } + + //加载图表差异化配置文件 + function loadTypeConfig () { + + utils.loadFile(document,{ + src : resourceRoot + "/dialogs/charts/chart.config.js", + tag : "script", + type : "text/javascript", + defer : "defer" + },function(){ + + render(); + + }); + + } + + //渲染图表 + function render () { + + var config = null, + chartConfig = null, + container = null; + + for ( var i = 0, len = sources.length; i < len; i++ ) { + + config = sources[ i ]; + + chartConfig = analysisConfig( config ); + + container = createContainer( config.table ); + + renderChart( container, typeConfig[ config.meta.chartType ], chartConfig ); + + } + + + } + + /** + * 渲染图表 + * @param container 图表容器节点对象 + * @param typeConfig 图表类型配置 + * @param config 图表通用配置 + * */ + function renderChart ( container, typeConfig, config ) { + + + $( container ).highcharts( $.extend( {}, typeConfig, { + + credits: { + enabled: false + }, + exporting: { + enabled: false + }, + title: { + text: config.title, + x: -20 //center + }, + subtitle: { + text: config.subTitle, + x: -20 + }, + xAxis: { + title: { + text: config.xTitle + }, + categories: config.categories + }, + yAxis: { + title: { + text: config.yTitle + }, + plotLines: [{ + value: 0, + width: 1, + color: '#808080' + }] + }, + tooltip: { + enabled: true, + valueSuffix: config.suffix + }, + legend: { + layout: 'vertical', + align: 'right', + verticalAlign: 'middle', + borderWidth: 1 + }, + series: config.series + + } )); + + } + + /** + * 创建图表的容器 + * 新创建的容器会替换掉对应的table对象 + * */ + function createContainer ( tableNode ) { + + var container = document.createElement( "div" ); + container.className = "edui-chart-container"; + + tableNode.parentNode.replaceChild( container, tableNode ); + + return container; + + } + + //根据config解析出正确的类别和图表数据信息 + function analysisConfig ( config ) { + + var series = [], + //数据类别 + categories = [], + result = [], + data = config.data, + meta = config.meta; + + //数据对齐方式为相反的方式, 需要反转数据 + if ( meta.dataFormat != "1" ) { + + for ( var i = 0, len = data.length; i < len ; i++ ) { + + for ( var j = 0, jlen = data[ i ].length; j < jlen; j++ ) { + + if ( !result[ j ] ) { + result[ j ] = []; + } + + result[ j ][ i ] = data[ i ][ j ]; + + } + + } + + data = result; + + } + + result = {}; + + //普通图表 + if ( meta.chartType != typeConfig.length - 1 ) { + + categories = data[ 0 ].slice( 1 ); + + for ( var i = 1, curData; curData = data[ i ]; i++ ) { + series.push( { + name: curData[ 0 ], + data: curData.slice( 1 ) + } ); + } + + result.series = series; + result.categories = categories; + result.title = meta.title; + result.subTitle = meta.subTitle; + result.xTitle = meta.xTitle; + result.yTitle = meta.yTitle; + result.suffix = meta.suffix; + + } else { + + var curData = []; + + for ( var i = 1, len = data[ 0 ].length; i < len; i++ ) { + + curData.push( [ data[ 0 ][ i ], data[ 1 ][ i ] | 0 ] ); + + } + + //饼图 + series[ 0 ] = { + type: 'pie', + name: meta.tip, + data: curData + }; + + result.series = series; + result.title = meta.title; + result.suffix = meta.suffix; + + } + + return result; + + } + +}); +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;}li{clear:both;}'+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}'); + } + } + }); + } + + +}); +UE.parse.register('vedio',function(utils){ + var video = this.root.getElementsByTagName('video'), + audio = this.root.getElementsByTagName('audio'); + + document.createElement('video');document.createElement('audio'); + if(video.length || audio.length){ + var sourcePath = utils.removeLastbs(this.rootPath), + jsurl = sourcePath + '/third-party/video-js/video.js', + cssurl = sourcePath + '/third-party/video-js/video-js.min.css', + swfUrl = sourcePath + '/third-party/video-js/video-js.swf'; + + if(window.videojs) { + videojs.autoSetup(); + } else { + utils.loadFile(document,{ + id : "video_css", + tag : "link", + rel : "stylesheet", + type : "text/css", + href : cssurl + }); + utils.loadFile(document,{ + id : "video_js", + src : jsurl, + tag : "script", + type : "text/javascript" + },function(){ + videojs.options.flash.swf = swfUrl; + videojs.autoSetup(); + }); + } + + } +}); + +})(); diff --git a/yshop-drink-vue3/public/UEditor/ueditor.parse.min.js b/yshop-drink-vue3/public/UEditor/ueditor.parse.min.js new file mode 100644 index 0000000..b9862ef --- /dev/null +++ b/yshop-drink-vue3/public/UEditor/ueditor.parse.min.js @@ -0,0 +1,7 @@ +/*! + * UEditor + * version: ueditor + * build: Wed Dec 26 2018 17:25:07 GMT+0800 (CST) + */ + +!function(){!function(){UE=window.UE||{};var a=!!window.ActiveXObject,b={removeLastbs:function(a){return a.replace(/\/$/,"")},extend:function(a,b){for(var c=arguments,d=!!this.isBoolean(c[c.length-1])&&c[c.length-1],e=this.isBoolean(c[c.length-1])?c.length-1:c.length,f=1;f=c&&a===b)return d=e,!1}),d},hasClass:function(a,b){b=b.replace(/(^[ ]+)|([ ]+$)/g,"").replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)if(!new RegExp("\\b"+c+"\\b","i").test(e))return!1;return d-1==b.length},addClass:function(a,c){if(a){c=this.trim(c).replace(/[ ]{2,}/g," ").split(" ");for(var d,e=0,f=a.className;d=c[e++];)new RegExp("\\b"+d+"\\b").test(f)||(f+=" "+d);a.className=b.trim(f)}},removeClass:function(a,b){b=this.isArray(b)?b:this.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)e=e.replace(new RegExp("\\b"+c+"\\b"),"");e=this.trim(e).replace(/[ ]{2,}/g," "),a.className=e,!e&&a.removeAttribute("className")},on:function(a,c,d){var e=this.isArray(c)?c:c.split(/\s+/),f=e.length;if(f)for(;f--;)if(c=e[f],a.addEventListener)a.addEventListener(c,d,!1);else{d._d||(d._d={els:[]});var g=c+d.toString(),h=b.indexOf(d._d.els,a);d._d[g]&&h!=-1||(h==-1&&d._d.els.push(a),d._d[g]||(d._d[g]=function(a){return d.call(a.srcElement,a||window.event)}),a.attachEvent("on"+c,d._d[g]))}a=null},off:function(a,c,d){var e=this.isArray(c)?c:c.split(/\s+/),f=e.length;if(f)for(;f--;)if(c=e[f],a.removeEventListener)a.removeEventListener(c,d,!1);else{var g=c+d.toString();try{a.detachEvent("on"+c,d._d?d._d[g]:d)}catch(h){}if(d._d&&d._d[g]){var i=b.indexOf(d._d.els,a);i!=-1&&d._d.els.splice(i,1),0==d._d.els.length&&delete d._d[g]}}},loadFile:function(){function a(a,c){try{for(var d,e=0;d=b[e++];)if(d.doc===a&&d.url==(c.src||c.href))return d}catch(f){return null}}var b=[];return function(c,d,e){var f=a(c,d);if(f)return void(f.ready?e&&e():f.funs.push(e));if(b.push({doc:c,url:d.src||d.href,funs:[e]}),!c.body){var g=[];for(var h in d)"tag"!=h&&g.push(h+'="'+d[h]+'"');return void c.write("<"+d.tag+" "+g.join(" ")+" >")}if(!d.id||!c.getElementById(d.id)){var i=c.createElement(d.tag);delete d.tag;for(var h in d)i.setAttribute(h,d[h]);i.onload=i.onreadystatechange=function(){if(!this.readyState||/loaded|complete/.test(this.readyState)){if(f=a(c,d),f.funs.length>0){f.ready=1;for(var b;b=f.funs.pop();)b()}i.onload=i.onreadystatechange=null}},i.onerror=function(){throw Error("The load "+(d.href||d.src)+" fails,check the url")},c.getElementsByTagName("head")[0].appendChild(i)}}}()};b.each(["String","Function","Array","Number","RegExp","Object","Boolean"],function(a){b["is"+a]=function(b){return Object.prototype.toString.apply(b)=="[object "+a+"]"}});var c={};UE.parse={register:function(a,b){c[a]=b},load:function(a){b.each(c,function(c){c.call(a,b)})}},uParse=function(a,c){b.domReady(function(){var d;if(document.querySelectorAll)d=document.querySelectorAll(a);else if(/^#/.test(a))d=[document.getElementById(a.replace(/^#/,""))];else if(/^\./.test(a)){var d=[];b.each(document.getElementsByTagName("*"),function(b){b.className&&new RegExp("\\b"+a.replace(/^\./,"")+"\\b","i").test(b.className)&&d.push(b)})}else d=document.getElementsByTagName(a);b.each(d,function(d){UE.parse.load(b.extend({root:d,selector:a},c))})})}}(),UE.parse.register("insertcode",function(a){var b=this.root.getElementsByTagName("pre");if(b.length)if("undefined"==typeof XRegExp){var c,d;void 0!==this.rootPath?(c=a.removeLastbs(this.rootPath)+"/third-party/SyntaxHighlighter/shCore.js",d=a.removeLastbs(this.rootPath)+"/third-party/SyntaxHighlighter/shCoreDefault.css"):(c=this.highlightJsUrl,d=this.highlightCssUrl),a.loadFile(document,{id:"syntaxhighlighter_css",tag:"link",rel:"stylesheet",type:"text/css",href:d}),a.loadFile(document,{id:"syntaxhighlighter_js",src:c,tag:"script",type:"text/javascript",defer:"defer"},function(){a.each(b,function(a){a&&/brush/i.test(a.className)&&SyntaxHighlighter.highlight(a)})})}else a.each(b,function(a){a&&/brush/i.test(a.className)&&SyntaxHighlighter.highlight(a)})}),UE.parse.register("table",function(a){function b(b,c){var d,e=b;for(c=a.isArray(c)?c:[c];e;){for(d=0;d0){var g=a[c];a[c]=a[e],a[e]=g}return a}function e(b){if(!a.hasClass(b.rows[0],"firstRow")){for(var c=1;c + + + + + + + +
    + +
    + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/attachment/attachment.css b/yshop-drink-vue3/public/UEditor22/dialogs/attachment/attachment.css new file mode 100644 index 0000000..e9d11af --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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: 13px; + 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; +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/attachment/attachment.html b/yshop-drink-vue3/public/UEditor22/dialogs/attachment/attachment.html new file mode 100644 index 0000000..1a52bb9 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/attachment/attachment.html @@ -0,0 +1,60 @@ + + + + + ueditor图片对话框 + + + + + + + + + + + + + + +
    +
    + + +
    +
    + +
    +
    +
    +
    + 0% + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
      +
    • +
    +
    +
    + + +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/attachment/attachment.js b/yshop-drink-vue3/public/UEditor22/dialogs/attachment/attachment.js new file mode 100644 index 0000000..bb2557f --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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($('
    '; + } + + 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'; + 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) { + 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 , 0.2); + } + + + 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 _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', + 'insertimage':'~/dialogs/image/image.html', + 'link':'~/dialogs/link/link.html', + 'spechars':'~/dialogs/spechars/spechars.html', + 'searchreplace':'~/dialogs/searchreplace/searchreplace.html', + 'map':'~/dialogs/map/map.html', + 'gmap':'~/dialogs/gmap/gmap.html', + 'insertvideo':'~/dialogs/video/video.html', + 'help':'~/dialogs/help/help.html', + 'preview':'~/dialogs/preview/preview.html', + 'emotion':'~/dialogs/emotion/emotion.html', + 'wordimage':'~/dialogs/wordimage/wordimage.html', + 'attachment':'~/dialogs/attachment/attachment.html', + 'insertframe':'~/dialogs/insertframe/insertframe.html', + 'edittip':'~/dialogs/table/edittip.html', + 'edittable':'~/dialogs/table/edittable.html', + 'edittd':'~/dialogs/table/edittd.html', + 'webapp':'~/dialogs/webapp/webapp.html', + 'snapscreen':'~/dialogs/snapscreen/snapscreen.html', + 'scrawl':'~/dialogs/scrawl/scrawl.html', + 'music':'~/dialogs/music/music.html', + 'template':'~/dialogs/template/template.html', + 'background':'~/dialogs/background/background.html', + 'charts': '~/dialogs/charts/charts.html' + }; + //为工具栏添加按钮,以下都是统一的按钮触发命令,所以写在一起 + 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', 'drafts']; + + 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); + 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', 'webapp','preview'], + ok:['attachment', 'anchor', 'link', 'insertimage', 'map', 'gmap', 'insertframe', 'wordimage', + 'insertvideo', 'insertframe', 'edittip', 'edittable', 'edittd', 'scrawl', 'template', 'music', 'background', 'charts'] + }; + + 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: /charts|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 (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) || ( cmd == 'charts' ) + }); + 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.snapscreen = function (editor, iframeUrl, title) { + title = editor.options.labelMap['snapscreen'] || editor.getLang("labelMap.snapscreen") || ''; + var ui = new editorui.Button({ + className:'edui-for-snapscreen', + title:title, + onclick:function () { + editor.execCommand("snapscreen"); + }, + theme:editor.options.theme + + }); + editorui.buttons['snapscreen'] = ui; + iframeUrl = iframeUrl || (editor.options.iframeUrlMap || {})["snapscreen"] || iframeUrlMap["snapscreen"]; + if (iframeUrl) { + var dialog = new editorui.Dialog({ + iframeUrl:editor.ui.mapUrl(iframeUrl), + editor:editor, + className:'edui-for-snapscreen', + title:title, + 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); + } + } + ] + + }); + dialog.render(); + editor.ui._dialogs["snapscreenDialog"] = dialog; + } + editor.addListener('selectionchange', function () { + ui.setDisabled(editor.queryCommandState('snapscreen') == -1); + }); + return ui; + }; + + 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 + "<\/" + ck.tag + ">" + + '
    '; + } + }); + })(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/ig.test(el.tagName)) { + var html = popup.formatHtml( + '' + editor.getLang("property") + ': ' + 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.className.indexOf("edui-faked-webapp") != -1) { + dialogName = "webappDialog" + } + if (img.src.indexOf("http://api.map.baidu.com") != -1) { + dialogName = "mapDialog" + } + if (img.className.indexOf("edui-faked-music") != -1) { + dialogName = "musicDialog" + } + if (img.src.indexOf("http://maps.google.com/maps/api/staticmap") != -1) { + dialogName = "gmapDialog" + } + if (img.getAttribute("anchorname")) { + dialogName = "anchorDialog"; + html = popup.formatHtml( + '' + editor.getLang("property") + ': ' + editor.getLang("modify") + '  ' + + '' + editor.getLang("delete") + ''); + } + if (img.getAttribute("word_img")) { + //todo 放到dialog去做查询 + editor.word_img = [img.getAttribute("word_img")]; + dialogName = "wordimageDialog" + } + if(domUtils.hasClass(img, 'loadingclass') || domUtils.hasClass(img, 'loaderrorclass')) { + dialogName = ""; + } + if (!dialogs[dialogName]) { + return; + } + str = '' + editor.getLang("property") + ': '+ + '' + editor.getLang("default") + '  ' + + '' + editor.getLang("justifyleft") + '  ' + + '' + editor.getLang("justifyright") + '  ' + + '' + editor.getLang("justifycenter") + '  '+ + '' + editor.getLang("modify") + ''; + + !html && (html = popup.formatHtml(str)) + + } + 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("anthorMsg") + ': ' + 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 = []; + 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'; + } + if (baidu.editor.ui[toolbarItem]) { + toolbarItemUi = new baidu.editor.ui[toolbarItem](editor); + } + + //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 无法准确的循环出对象的全部元素而导致的自定义 UI 不符合预期的 BUG by HaoChuan9421) + + // utils.each(UE._customizeUI,function(obj,key){ + // var itemUI,index; + // if(obj.id && obj.id != editor.key){ + // return false; + // } + // itemUI = obj.execFn.call(editor,editor,key); + // if(itemUI){ + // index = obj.index; + // if(index === undefined){ + // index = toolbarUi.items.length; + // } + // toolbarUi.add(itemUI,index) + // } + // }); + + + for(var key in UE._customizeUI){ + var obj = UE._customizeUI[key] + var itemUI,index; + if(!obj.id || obj.id == editor.key){ + itemUI = obj.execFn.call(editor,editor,key); + if(itemUI){ + index = obj.index; + if(index === undefined){ + index = toolbarUi.items.length; + } + toolbarUi.add(itemUI,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", + 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/ig.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) { + UE._customizeUI[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.addListener('ready', function(){ + holder = document.getElementById(me.ui.id + '_message_holder'); + updateHolderPos(); + // HaoChuan9421 + // 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(){ + 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; + } + +}); + + +// adapter/autosave.js +UE.registerUI('autosave', function(editor) { + var timer = null,uid = null; + editor.on('afterautosave',function(){ + clearTimeout(timer); + + timer = setTimeout(function(){ + if(uid){ + editor.trigger('hidemessage',uid); + } + uid = editor.trigger('showmessage',{ + content : editor.getLang('autosave.success'), + timeout : 2000 + }); + + },2000) + }) + +}); + + + +})(); diff --git a/yshop-drink-vue3/public/UEditor22/ueditor.all.min.js b/yshop-drink-vue3/public/UEditor22/ueditor.all.min.js new file mode 100644 index 0000000..1f48238 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/ueditor.all.min.js @@ -0,0 +1,18 @@ +/*! + * UEditor + * version: ueditor + * build: Wed Dec 26 2018 17:25:05 GMT+0800 (CST) + */ + +!function(){function getListener(a,b,c){var d;return b=b.toLowerCase(),(d=a.__allListeners||c&&(a.__allListeners={}))&&(d[b]||c&&(d[b]=[]))}function getDomNode(a,b,c,d,e,f){var g,h=d&&a[b];for(!h&&(h=a[c]);!h&&(g=(g||a).parentNode);){if("BODY"==g.tagName||f&&!f(g))return null;h=g[c]}return h&&e&&!e(h)?getDomNode(h,b,c,!1,e):h}UEDITOR_CONFIG=window.UEDITOR_CONFIG||{};var baidu=window.baidu||{};window.baidu=baidu,window.UE=baidu.editor=window.UE||{},UE.plugins={},UE.commands={},UE.instants={},UE.I18N={},UE._customizeUI={},UE.version="1.4.3";var dom=UE.dom={},browser=UE.browser=function(){var a=navigator.userAgent.toLowerCase(),b=window.opera,c={ie:/(msie\s|trident.*rv:)([\w.]+)/.test(a),opera:!!b&&b.version,webkit:a.indexOf(" applewebkit/")>-1,mac:a.indexOf("macintosh")>-1,quirks:"BackCompat"==document.compatMode};c.gecko="Gecko"==navigator.product&&!c.webkit&&!c.opera&&!c.ie;var d=0;if(c.ie){var e=a.match(/(?:msie\s([\w.]+))/),f=a.match(/(?:trident.*rv:([\w.]+))/);d=e&&f&&e[1]&&f[1]?Math.max(1*e[1],1*f[1]):e&&e[1]?1*e[1]:f&&f[1]?1*f[1]:0,c.ie11Compat=11==document.documentMode,c.ie9Compat=9==document.documentMode,c.ie8=!!document.documentMode,c.ie8Compat=8==document.documentMode,c.ie7Compat=7==d&&!document.documentMode||7==document.documentMode,c.ie6Compat=d<7||c.quirks,c.ie9above=d>8,c.ie9below=d<9,c.ie11above=d>10,c.ie11below=d<11}if(c.gecko){var g=a.match(/rv:([\d\.]+)/);g&&(g=g[1].split("."),d=1e4*g[0]+100*(g[1]||0)+1*(g[2]||0))}return/chrome\/(\d+\.\d)/i.test(a)&&(c.chrome=+RegExp.$1),/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(a)&&!/chrome/i.test(a)&&(c.safari=+(RegExp.$1||RegExp.$2)),c.opera&&(d=parseFloat(b.version())),c.webkit&&(d=parseFloat(a.match(/ applewebkit\/(\d+)/)[1])),c.version=d,c.isCompatible=!c.mobile&&(c.ie&&d>=6||c.gecko&&d>=10801||c.opera&&d>=9.5||c.air&&d>=1||c.webkit&&d>=522||!1),c}(),ie=browser.ie,webkit=browser.webkit,gecko=browser.gecko,opera=browser.opera,utils=UE.utils={each:function(a,b,c){if(null!=a)if(a.length===+a.length){for(var d=0,e=a.length;d=c&&a===b)return d=e,!1}),d},removeItem:function(a,b){for(var c=0,d=a.length;c'](?:(amp|lt|quot|gt|#39|nbsp|#\d+);)?/g,function(a,b){return b?a:{"<":"<","&":"&",'"':""",">":">","'":"'"}[a]}):""},unhtmlForUrl:function(a,b){return a?a.replace(b||/[<">']/g,function(a){return{"<":"<","&":"&",'"':""",">":">","'":"'"}[a]}):""},html:function(a){return a?a.replace(/&((g|l|quo)t|amp|#39|nbsp);/g,function(a){return{"<":"<","&":"&",""":'"',">":">","'":"'"," ":" "}[a]}):""},cssStyleToDomStyle:function(){var a=document.createElement("div").style,b={"float":void 0!=a.cssFloat?"cssFloat":void 0!=a.styleFloat?"styleFloat":"float"};return function(a){return b[a]||(b[a]=a.toLowerCase().replace(/-./g,function(a){return a.charAt(1).toUpperCase()}))}}(),loadFile:function(){function a(a,c){try{for(var d,e=0;d=b[e++];)if(d.doc===a&&d.url==(c.src||c.href))return d}catch(f){return null}}var b=[];return function(c,d,e){var f=a(c,d);if(f)return void(f.ready?e&&e():f.funs.push(e));if(b.push({doc:c,url:d.src||d.href,funs:[e]}),!c.body){var g=[];for(var h in d)"tag"!=h&&g.push(h+'="'+d[h]+'"');return void c.write("<"+d.tag+" "+g.join(" ")+" >")}if(!d.id||!c.getElementById(d.id)){var i=c.createElement(d.tag);delete d.tag;for(var h in d)i.setAttribute(h,d[h]);i.onload=i.onreadystatechange=function(){if(!this.readyState||/loaded|complete/.test(this.readyState)){if(f=a(c,d),f.funs.length>0){f.ready=1;for(var b;b=f.funs.pop();)b()}i.onload=i.onreadystatechange=null}},i.onerror=function(){throw Error("The load "+(d.href||d.src)+" fails,check the url settings of file ueditor.config.js ")},c.getElementsByTagName("head")[0].appendChild(i)}}}(),isEmptyObject:function(a){if(null==a)return!0;if(this.isArray(a)||this.isString(a))return 0===a.length;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0},fixColor:function(a,b){if(/color/i.test(a)&&/rgba?/.test(b)){var c=b.split(",");if(c.length>3)return"";b="#";for(var d,e=0;d=c[e++];)d=parseInt(d.replace(/[^\d]/gi,""),10).toString(16),b+=1==d.length?"0"+d:d;b=b.toUpperCase()}return b},optCss:function(a){function b(a,b){if(!a)return"";var c=a.top,d=a.bottom,e=a.left,f=a.right,g="";if(c&&e&&d&&f)g+=";"+b+":"+(c==d&&d==e&&e==f?c:c==d&&e==f?c+" "+e:e==f?c+" "+e+" "+d:c+" "+f+" "+d+" "+e)+";";else for(var h in a)g+=";"+b+"-"+h+":"+a[h]+";";return g}var c,d;return a=a.replace(/(padding|margin|border)\-([^:]+):([^;]+);?/gi,function(a,b,e,f){if(1==f.split(" ").length)switch(b){case"padding":return!c&&(c={}),c[e]=f,"";case"margin":return!d&&(d={}),d[e]=f,"";case"border":return"initial"==f?"":a}return a}),a+=b(c,"padding")+b(d,"margin"),a.replace(/^[ \n\r\t;]*|[ \n\r\t]*$/,"").replace(/;([ \n\r\t]+)|\1;/g,";").replace(/(&((l|g)t|quot|#39))?;{2,}/g,function(a,b){return b?b+";;":";"})},clone:function(a,b){var c;b=b||{};for(var d in a)a.hasOwnProperty(d)&&(c=a[d],"object"==typeof c?(b[d]=utils.isArray(c)?[]:{},utils.clone(a[d],b[d])):b[d]=c);return b},transUnitToPx:function(a){if(!/(pt|cm)/.test(a))return a;var b;switch(a.replace(/([\d.]+)(\w+)/,function(c,d,e){a=d,b=e}),b){case"cm":a=25*parseFloat(a);break;case"pt":a=Math.round(96*parseFloat(a)/72)}return a+(a?"px":"")},domReady:function(){function a(a){a.isReady=!0;for(var c;c=b.pop();c());}var b=[];return function(c,d){d=d||window;var e=d.document;c&&b.push(c),"complete"===e.readyState?a(e):(e.isReady&&a(e),browser.ie&&11!=browser.version?(!function(){if(!e.isReady){try{e.documentElement.doScroll("left")}catch(b){return void setTimeout(arguments.callee,0)}a(e)}}(),d.attachEvent("onload",function(){a(e)})):(e.addEventListener("DOMContentLoaded",function(){e.removeEventListener("DOMContentLoaded",arguments.callee,!1),a(e)},!1),d.addEventListener("load",function(){a(e)},!1)))}}(),cssRule:browser.ie&&11!=browser.version?function(a,b,c){var d,e;if(void 0===b||b&&b.nodeType&&9==b.nodeType){if(c=b&&b.nodeType&&9==b.nodeType?b:c||document,d=c.indexList||(c.indexList={}),e=d[a],void 0!==e)return c.styleSheets[e].cssText}else{if(c=c||document,d=c.indexList||(c.indexList={}),e=d[a],""===b)return void 0!==e&&(c.styleSheets[e].cssText="",delete d[a],!0);void 0!==e?sheetStyle=c.styleSheets[e]:(sheetStyle=c.createStyleSheet("",e=c.styleSheets.length),d[a]=e),sheetStyle.cssText=b}}:function(a,b,c){var d;return void 0===b||b&&b.nodeType&&9==b.nodeType?(c=b&&b.nodeType&&9==b.nodeType?b:c||document,d=c.getElementById(a),d?d.innerHTML:void 0):(c=c||document,d=c.getElementById(a),""===b?!!d&&(d.parentNode.removeChild(d),!0):void(d?d.innerHTML=b:(d=c.createElement("style"),d.id=a,d.innerHTML=b,c.getElementsByTagName("head")[0].appendChild(d))))},sort:function(a,b){b=b||function(a,b){return a.localeCompare(b)};for(var c=0,d=a.length;c0){var g=a[c];a[c]=a[e],a[e]=g}return a},serializeParam:function(a){var b=[];for(var c in a)if("method"!=c&&"timeout"!=c&&"async"!=c)if("function"!=(typeof a[c]).toLowerCase()&&"object"!=(typeof a[c]).toLowerCase())b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));else if(utils.isArray(a[c]))for(var d=0;d1||b!==a.parentNode){a.style.cssText=b.style.cssText+";"+a.style.cssText,b=b.parentNode;continue}b.style.cssText+=";"+a.style.cssText,"A"==b.tagName&&(b.style.textDecoration="underline")}if("A"!=b.tagName){b===a.parentNode&&domUtils.remove(a,!0);break}}b=b.parentNode}},mergeSibling:function(a,b,c){function d(a,b,c){var d;if((d=c[a])&&!domUtils.isBookmarkNode(d)&&1==d.nodeType&&domUtils.isSameElement(c,d)){for(;d.firstChild;)"firstChild"==b?c.insertBefore(d.lastChild,c.firstChild):c.appendChild(d.firstChild);domUtils.remove(d)}}!b&&d("previousSibling","firstChild",a),!c&&d("nextSibling","lastChild",a)},unSelectable:ie&&browser.ie9below||browser.opera?function(a){a.onselectstart=function(){return!1},a.onclick=a.onkeyup=a.onkeydown=function(){return!1},a.unselectable="on",a.setAttribute("unselectable","on");for(var b,c=0;b=a.all[c++];)switch(b.tagName.toLowerCase()){case"iframe":case"textarea":case"input":case"select":break;default:b.unselectable="on",a.setAttribute("unselectable","on")}}:function(a){a.style.MozUserSelect=a.style.webkitUserSelect=a.style.msUserSelect=a.style.KhtmlUserSelect="none"},removeAttributes:function(a,b){b=utils.isArray(b)?b:utils.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0;c=b[d++];){switch(c=attrFix[c]||c){case"className":a[c]="";break;case"style":a.style.cssText="";var e=a.getAttributeNode("style");!browser.ie&&e&&a.removeAttributeNode(e)}a.removeAttribute(c)}},createElement:function(a,b,c){return domUtils.setAttributes(a.createElement(b),c)},setAttributes:function(a,b){for(var c in b)if(b.hasOwnProperty(c)){var d=b[c];switch(c){case"class":a.className=d;break;case"style":a.style.cssText=a.style.cssText+";"+d;break;case"innerHTML":a[c]=d;break;case"value":a.value=d;break;default:a.setAttribute(attrFix[c]||c,d)}}return a},getComputedStyle:function(a,b){var c="width height top left";if(c.indexOf(b)>-1)return a["offset"+b.replace(/^\w/,function(a){return a.toUpperCase()})]+"px";if(3==a.nodeType&&(a=a.parentNode),browser.ie&&browser.version<9&&"font-size"==b&&!a.style.fontSize&&!dtd.$empty[a.tagName]&&!dtd.$nonChild[a.tagName]){var d=a.ownerDocument.createElement("span");d.style.cssText="padding:0;border:0;font-family:simsun;",d.innerHTML=".",a.appendChild(d);var e=d.offsetHeight;return a.removeChild(d),d=null,e+"px"}try{var f=domUtils.getStyle(a,b)||(window.getComputedStyle?domUtils.getWindow(a).getComputedStyle(a,"").getPropertyValue(b):(a.currentStyle||a.style)[utils.cssStyleToDomStyle(b)])}catch(g){return""}return utils.transUnitToPx(utils.fixColor(b,f))},removeClasses:function(a,b){b=utils.isArray(b)?b:utils.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)e=e.replace(new RegExp("\\b"+c+"\\b"),"");e=utils.trim(e).replace(/[ ]{2,}/g," "),e?a.className=e:domUtils.removeAttributes(a,["class"])},addClass:function(a,b){if(a){b=utils.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)new RegExp("\\b"+c+"\\b").test(e)||(e+=" "+c);a.className=utils.trim(e)}},hasClass:function(a,b){if(utils.isRegExp(b))return b.test(a.className);b=utils.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)if(!new RegExp("\\b"+c+"\\b","i").test(e))return!1;return d-1==b.length},preventDefault:function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},removeStyle:function(a,b){browser.ie?("color"==b&&(b="(^|;)"+b),a.style.cssText=a.style.cssText.replace(new RegExp(b+"[^:]*:[^;]+;?","ig"),"")):a.style.removeProperty?a.style.removeProperty(b):a.style.removeAttribute(utils.cssStyleToDomStyle(b)),a.style.cssText||domUtils.removeAttributes(a,["style"])},getStyle:function(a,b){var c=a.style[utils.cssStyleToDomStyle(b)];return utils.fixColor(b,c)},setStyle:function(a,b,c){a.style[utils.cssStyleToDomStyle(b)]=c,utils.trim(a.style.cssText)||this.removeAttributes(a,"style")},setStyles:function(a,b){for(var c in b)b.hasOwnProperty(c)&&domUtils.setStyle(a,c,b[c])},removeDirtyAttr:function(a){for(var b,c=0,d=a.getElementsByTagName("*");b=d[c++];)b.removeAttribute("_moz_dirty");a.removeAttribute("_moz_dirty")},getChildCount:function(a,b){var c=0,d=a.firstChild;for(b=b||function(){return 1};d;)b(d)&&c++,d=d.nextSibling;return c},isEmptyNode:function(a){return!a.firstChild||0==domUtils.getChildCount(a,function(a){return!domUtils.isBr(a)&&!domUtils.isBookmarkNode(a)&&!domUtils.isWhitespace(a)})},clearSelectedArr:function(a){for(var b;b=a.pop();)domUtils.removeAttributes(b,["class"])},scrollToView:function(a,b,c){var d=function(){var a=b.document,c="CSS1Compat"==a.compatMode;return{width:(c?a.documentElement.clientWidth:a.body.clientWidth)||0,height:(c?a.documentElement.clientHeight:a.body.clientHeight)||0}},e=function(a){if("pageXOffset"in a)return{x:a.pageXOffset||0,y:a.pageYOffset||0};var b=a.document;return{x:b.documentElement.scrollLeft||b.body.scrollLeft||0,y:b.documentElement.scrollTop||b.body.scrollTop||0}},f=d().height,g=f*-1+c;g+=a.offsetHeight||0;var h=domUtils.getXY(a);g+=h.y;var i=e(b).y;(g>i||g0)return 0;for(var c in dtd.$isNotEmpty)if(a.getElementsByTagName(c).length)return 0;return 1}},setViewportOffset:function(a,b){var c=0|parseInt(a.style.left),d=0|parseInt(a.style.top),e=a.getBoundingClientRect(),f=b.left-e.left,g=b.top-e.top;f&&(a.style.left=c+f+"px"),g&&(a.style.top=d+g+"px")},fillNode:function(a,b){var c=browser.ie?a.createTextNode(domUtils.fillChar):a.createElement("br");b.innerHTML="",b.appendChild(c)},moveChild:function(a,b,c){for(;a.firstChild;)c&&b.firstChild?b.insertBefore(a.lastChild,b.firstChild):b.appendChild(a.firstChild)},hasNoAttributes:function(a){return browser.ie?/^<\w+\s*?>/.test(a.outerHTML):0==a.attributes.length},isCustomeNode:function(a){return 1==a.nodeType&&a.getAttribute("_ue_custom_node_")},isTagNode:function(a,b){return 1==a.nodeType&&new RegExp("\\b"+a.tagName+"\\b","i").test(b)},filterNodeList:function(a,b,c){var d=[];if(!utils.isFunction(b)){var e=b;b=function(a){return utils.indexOf(utils.isArray(e)?e:e.split(" "),a.tagName.toLowerCase())!=-1}}return utils.each(a,function(a){b(a)&&d.push(a)}),0==d.length?null:1!=d.length&&c?d:d[0]},isInNodeEndBoundary:function(a,b){var c=a.startContainer;if(3==c.nodeType&&a.startOffset!=c.nodeValue.length)return 0;if(1==c.nodeType&&a.startOffset!=c.childNodes.length)return 0;for(;c!==b;){if(c.nextSibling)return 0;c=c.parentNode}return 1},isBoundaryNode:function(a,b){for(var c;!domUtils.isBody(a);)if(c=a,a=a.parentNode,c!==a[b])return!1;return!0},fillHtml:browser.ie11below?" ":"
    "},fillCharReg=new RegExp(domUtils.fillChar,"g");!function(){function a(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer===a.endContainer&&a.startOffset==a.endOffset}function b(a){return!a.collapsed&&1==a.startContainer.nodeType&&a.startContainer===a.endContainer&&a.endOffset-a.startOffset==1}function c(b,c,d,e){return 1==c.nodeType&&(dtd.$empty[c.tagName]||dtd.$nonChild[c.tagName])&&(d=domUtils.getNodeIndex(c)+(b?0:1),c=c.parentNode),b?(e.startContainer=c,e.startOffset=d,e.endContainer||e.collapse(!0)):(e.endContainer=c,e.endOffset=d,e.startContainer||e.collapse(!1)),a(e),e}function d(a,b){var c,d,e=a.startContainer,f=a.endContainer,g=a.startOffset,h=a.endOffset,i=a.document,j=i.createDocumentFragment();if(1==e.nodeType&&(e=e.childNodes[g]||(c=e.appendChild(i.createTextNode("")))),1==f.nodeType&&(f=f.childNodes[h]||(d=f.appendChild(i.createTextNode("")))),e===f&&3==e.nodeType)return j.appendChild(i.createTextNode(e.substringData(g,h-g))),b&&(e.deleteData(g,h-g),a.collapse(!0)),j;for(var k,l,m=j,n=domUtils.findParents(e,!0),o=domUtils.findParents(f,!0),p=0;n[p]==o[p];)p++;for(var q,r=p;q=n[r];r++){for(k=q.nextSibling,q==e?c||(3==a.startContainer.nodeType?(m.appendChild(i.createTextNode(e.nodeValue.slice(g))),b&&e.deleteData(g,e.nodeValue.length-g)):m.appendChild(b?e:e.cloneNode(!0))):(l=q.cloneNode(!1),m.appendChild(l));k&&k!==f&&k!==o[r];)q=k.nextSibling,m.appendChild(b?k:k.cloneNode(!0)),k=q;m=l}m=j,n[p]||(m.appendChild(n[p-1].cloneNode(!1)),m=m.firstChild);for(var s,r=p;s=o[r];r++){if(k=s.previousSibling,s==f?d||3!=a.endContainer.nodeType||(m.appendChild(i.createTextNode(f.substringData(0,h))),b&&f.deleteData(0,h)):(l=s.cloneNode(!1),m.appendChild(l)),r!=p||!n[p])for(;k&&k!==e;)s=k.previousSibling,m.insertBefore(b?k:k.cloneNode(!0),m.firstChild),k=s;m=l}return b&&a.setStartBefore(o[p]?n[p]?o[p]:n[p-1]:o[p-1]).collapse(!0),c&&domUtils.remove(c),d&&domUtils.remove(d),j}function e(a,b){try{if(g&&domUtils.inDoc(g,a))if(g.nodeValue.replace(fillCharReg,"").length)g.nodeValue=g.nodeValue.replace(fillCharReg,"");else{var c=g.parentNode;for(domUtils.remove(g);c&&domUtils.isEmptyInlineElement(c)&&(browser.safari?!(domUtils.getPosition(c,b)&domUtils.POSITION_CONTAINS):!c.contains(b));)g=c.parentNode,domUtils.remove(c),c=g; +}}catch(d){}}function f(a,b){var c;for(a=a[b];a&&domUtils.isFillChar(a);)c=a[b],domUtils.remove(a),a=c}var g,h=0,i=domUtils.fillChar,j=dom.Range=function(a){var b=this;b.startContainer=b.startOffset=b.endContainer=b.endOffset=null,b.document=a,b.collapsed=!0};j.prototype={cloneContents:function(){return this.collapsed?null:d(this,0)},deleteContents:function(){var a;return this.collapsed||d(this,1),browser.webkit&&(a=this.startContainer,3!=a.nodeType||a.nodeValue.length||(this.setStartBefore(a).collapse(!0),domUtils.remove(a))),this},extractContents:function(){return this.collapsed?null:d(this,2)},setStart:function(a,b){return c(!0,a,b,this)},setEnd:function(a,b){return c(!1,a,b,this)},setStartAfter:function(a){return this.setStart(a.parentNode,domUtils.getNodeIndex(a)+1)},setStartBefore:function(a){return this.setStart(a.parentNode,domUtils.getNodeIndex(a))},setEndAfter:function(a){return this.setEnd(a.parentNode,domUtils.getNodeIndex(a)+1)},setEndBefore:function(a){return this.setEnd(a.parentNode,domUtils.getNodeIndex(a))},setStartAtFirst:function(a){return this.setStart(a,0)},setStartAtLast:function(a){return this.setStart(a,3==a.nodeType?a.nodeValue.length:a.childNodes.length)},setEndAtFirst:function(a){return this.setEnd(a,0)},setEndAtLast:function(a){return this.setEnd(a,3==a.nodeType?a.nodeValue.length:a.childNodes.length)},selectNode:function(a){return this.setStartBefore(a).setEndAfter(a)},selectNodeContents:function(a){return this.setStart(a,0).setEndAtLast(a)},cloneRange:function(){var a=this;return new j(a.document).setStart(a.startContainer,a.startOffset).setEnd(a.endContainer,a.endOffset)},collapse:function(a){var b=this;return a?(b.endContainer=b.startContainer,b.endOffset=b.startOffset):(b.startContainer=b.endContainer,b.startOffset=b.endOffset),b.collapsed=!0,b},shrinkBoundary:function(a){function b(a){return 1==a.nodeType&&!domUtils.isBookmarkNode(a)&&!dtd.$empty[a.tagName]&&!dtd.$nonChild[a.tagName]}for(var c,d=this,e=d.collapsed;1==d.startContainer.nodeType&&(c=d.startContainer.childNodes[d.startOffset])&&b(c);)d.setStart(c,0);if(e)return d.collapse(!0);if(!a)for(;1==d.endContainer.nodeType&&d.endOffset>0&&(c=d.endContainer.childNodes[d.endOffset-1])&&b(c);)d.setEnd(c,c.childNodes.length);return d},getCommonAncestor:function(a,c){var d=this,e=d.startContainer,f=d.endContainer;return e===f?a&&b(this)&&(e=e.childNodes[d.startOffset],1==e.nodeType)?e:c&&3==e.nodeType?e.parentNode:e:domUtils.getCommonAncestor(e,f)},trimBoundary:function(a){this.txtToElmBoundary();var b=this.startContainer,c=this.startOffset,d=this.collapsed,e=this.endContainer;if(3==b.nodeType){if(0==c)this.setStartBefore(b);else if(c>=b.nodeValue.length)this.setStartAfter(b);else{var f=domUtils.split(b,c);b===e?this.setEnd(f,this.endOffset-c):b.parentNode===e&&(this.endOffset+=1),this.setStartBefore(f)}if(d)return this.collapse(!0)}return a||(c=this.endOffset,e=this.endContainer,3==e.nodeType&&(0==c?this.setEndBefore(e):(c=c.nodeValue.length&&a["set"+b.replace(/(\w)/,function(a){return a.toUpperCase()})+"After"](c):a["set"+b.replace(/(\w)/,function(a){return a.toUpperCase()})+"Before"](c))}return!a&&this.collapsed||(b(this,"start"),b(this,"end")),this},insertNode:function(a){var b=a,c=1;11==a.nodeType&&(b=a.firstChild,c=a.childNodes.length),this.trimBoundary(!0);var d=this.startContainer,e=this.startOffset,f=d.childNodes[e];return f?d.insertBefore(a,f):d.appendChild(a),b.parentNode===this.endContainer&&(this.endOffset=this.endOffset+c),this.setStartBefore(b)},setCursor:function(a,b){return this.collapse(!a).select(b)},createBookmark:function(a,b){var c,d=this.document.createElement("span");return d.style.cssText="display:none;line-height:0px;",d.appendChild(this.document.createTextNode("‍")),d.id="_baidu_bookmark_start_"+(b?"":h++),this.collapsed||(c=d.cloneNode(!0),c.id="_baidu_bookmark_end_"+(b?"":h++)),this.insertNode(d),c&&this.collapse().insertNode(c).setEndBefore(c),this.setStartAfter(d),{start:a?d.id:d,end:c?a?c.id:c:null,id:a}},moveToBookmark:function(a){var b=a.id?this.document.getElementById(a.start):a.start,c=a.end&&a.id?this.document.getElementById(a.end):a.end;return this.setStartBefore(b),domUtils.remove(b),c?(this.setEndBefore(c),domUtils.remove(c)):this.collapse(!0),this},enlarge:function(a,b){var c,d,e=domUtils.isBody,f=this.document.createTextNode("");if(a){for(d=this.startContainer,1==d.nodeType?d.childNodes[this.startOffset]?c=d=d.childNodes[this.startOffset]:(d.appendChild(f),c=d=f):c=d;;){if(domUtils.isBlockElm(d)){for(d=c;(c=d.previousSibling)&&!domUtils.isBlockElm(c);)d=c;this.setStartBefore(d);break}c=d,d=d.parentNode}for(d=this.endContainer,1==d.nodeType?((c=d.childNodes[this.endOffset])?d.insertBefore(f,c):d.appendChild(f),c=d=f):c=d;;){if(domUtils.isBlockElm(d)){for(d=c;(c=d.nextSibling)&&!domUtils.isBlockElm(c);)d=c;this.setEndAfter(d);break}c=d,d=d.parentNode}f.parentNode===this.endContainer&&this.endOffset--,domUtils.remove(f)}if(!this.collapsed){for(;!(0!=this.startOffset||b&&b(this.startContainer)||e(this.startContainer));)this.setStartBefore(this.startContainer);for(;!(this.endOffset!=(1==this.endContainer.nodeType?this.endContainer.childNodes.length:this.endContainer.nodeValue.length)||b&&b(this.endContainer)||e(this.endContainer));)this.setEndAfter(this.endContainer)}return this},enlargeToBlockElm:function(a){for(;!domUtils.isBlockElm(this.startContainer);)this.setStartBefore(this.startContainer);if(!a)for(;!domUtils.isBlockElm(this.endContainer);)this.setEndAfter(this.endContainer);return this},adjustmentBoundary:function(){if(!this.collapsed){for(;!domUtils.isBody(this.startContainer)&&this.startOffset==this.startContainer[3==this.startContainer.nodeType?"nodeValue":"childNodes"].length&&this.startContainer[3==this.startContainer.nodeType?"nodeValue":"childNodes"].length;)this.setStartAfter(this.startContainer);for(;!domUtils.isBody(this.endContainer)&&!this.endOffset&&this.endContainer[3==this.endContainer.nodeType?"nodeValue":"childNodes"].length;)this.setEndBefore(this.endContainer)}return this},applyInlineStyle:function(a,b,c){if(this.collapsed)return this;this.trimBoundary().enlarge(!1,function(a){return 1==a.nodeType&&domUtils.isBlockElm(a)}).adjustmentBoundary();for(var d,e,f=this.createBookmark(),g=f.end,h=function(a){return 1==a.nodeType?"br"!=a.tagName.toLowerCase():!domUtils.isWhitespace(a)},i=domUtils.getNextDomNode(f.start,!1,h),j=this.cloneRange();i&&domUtils.getPosition(i,g)&domUtils.POSITION_PRECEDING;)if(3==i.nodeType||dtd[a][i.tagName]){for(j.setStartBefore(i),d=i;d&&(3==d.nodeType||dtd[a][d.tagName])&&d!==g;)e=d,d=domUtils.getNextDomNode(d,1==d.nodeType,null,function(b){return dtd[a][b.tagName]});var k,l=j.setEndAfter(e).extractContents();if(c&&c.length>0){var m,n;n=m=c[0].cloneNode(!1);for(var o,p=1;o=c[p++];)m.appendChild(o.cloneNode(!1)),m=m.firstChild;k=m}else k=j.document.createElement(a);b&&domUtils.setAttributes(k,b),k.appendChild(l),j.insertNode(c?n:k);var q;if("span"==a&&b.style&&/text\-decoration/.test(b.style)&&(q=domUtils.findParentByTagName(k,"a",!0))?(domUtils.setAttributes(q,b),domUtils.remove(k,!0),k=q):(domUtils.mergeSibling(k),domUtils.clearEmptySibling(k)),domUtils.mergeChild(k,b),i=domUtils.getNextDomNode(k,!1,h),domUtils.mergeToParent(k),d===g)break}else i=domUtils.getNextDomNode(i,!0,h);return this.moveToBookmark(f)},removeInlineStyle:function(a){if(this.collapsed)return this;a=utils.isArray(a)?a:[a],this.shrinkBoundary().adjustmentBoundary();for(var b=this.startContainer,c=this.endContainer;;){if(1==b.nodeType){if(utils.indexOf(a,b.tagName.toLowerCase())>-1)break;if("body"==b.tagName.toLowerCase()){b=null;break}}b=b.parentNode}for(;;){if(1==c.nodeType){if(utils.indexOf(a,c.tagName.toLowerCase())>-1)break;if("body"==c.tagName.toLowerCase()){c=null;break}}c=c.parentNode}var d,e,f=this.createBookmark();b&&(e=this.cloneRange().setEndBefore(f.start).setStartBefore(b),d=e.extractContents(),e.insertNode(d),domUtils.clearEmptySibling(b,!0),b.parentNode.insertBefore(f.start,b)),c&&(e=this.cloneRange().setStartAfter(f.end).setEndAfter(c),d=e.extractContents(),e.insertNode(d),domUtils.clearEmptySibling(c,!1,!0),c.parentNode.insertBefore(f.end,c.nextSibling));for(var g,h=domUtils.getNextDomNode(f.start,!1,function(a){return 1==a.nodeType});h&&h!==f.end;)g=domUtils.getNextDomNode(h,!0,function(a){return 1==a.nodeType}),utils.indexOf(a,h.tagName.toLowerCase())>-1&&domUtils.remove(h,!0),h=g;return this.moveToBookmark(f)},getClosedNode:function(){var a;if(!this.collapsed){var c=this.cloneRange().adjustmentBoundary().shrinkBoundary();if(b(c)){var d=c.startContainer.childNodes[c.startOffset];d&&1==d.nodeType&&(dtd.$empty[d.tagName]||dtd.$nonChild[d.tagName])&&(a=d)}}return a},select:browser.ie?function(a,b){var c;this.collapsed||this.shrinkBoundary();var d=this.getClosedNode();if(d&&!b){try{c=this.document.body.createControlRange(),c.addElement(d),c.select()}catch(h){}return this}var j,k=this.createBookmark(),l=k.start;if(c=this.document.body.createTextRange(),c.moveToElementText(l),c.moveStart("character",1),this.collapsed){if(!a&&3!=this.startContainer.nodeType){var m=this.document.createTextNode(i),n=this.document.createElement("span");n.appendChild(this.document.createTextNode(i)),l.parentNode.insertBefore(n,l),l.parentNode.insertBefore(m,l),e(this.document,m),g=m,f(n,"previousSibling"),f(l,"nextSibling"),c.moveStart("character",-1),c.collapse(!0)}}else{var o=this.document.body.createTextRange();j=k.end,o.moveToElementText(j),c.setEndPoint("EndToEnd",o)}this.moveToBookmark(k),n&&domUtils.remove(n);try{c.select()}catch(h){}return this}:function(a){function b(a){function b(b,c,d){3==b.nodeType&&b.nodeValue.length0)j=k-1;else{if(!(l<0))return{container:d,offset:c(e)};i=k+1}}if(k==-1){if(h.moveToElementText(d),h.setEndPoint("StartToStart",a),f=h.text.replace(/(\r\n|\r)/g,"\n").length,g=d.childNodes,!f)return e=g[g.length-1],{container:e,offset:e.nodeValue.length};for(var m=g.length;f>0;)f-=g[--m].nodeValue.length;return{container:g[m],offset:-f}}if(h.collapse(l>0),h.setEndPoint(l>0?"StartToStart":"EndToStart",a),f=h.text.replace(/(\r\n|\r)/g,"\n").length,!f)return dtd.$empty[e.tagName]||dtd.$nonChild[e.tagName]?{container:d,offset:c(e)+(l>0?0:1)}:{container:e,offset:l>0?0:e.childNodes.length};for(;f>0;)try{var n=e;e=e[l>0?"previousSibling":"nextSibling"],f-=e.nodeValue.length}catch(o){return{container:d,offset:c(n)}}return{container:e,offset:l>0?-f:e.nodeValue.length+f}}function b(b,c){if(b.item)c.selectNode(b.item(0));else{var d=a(b,!0);c.setStart(d.container,d.offset),0!=b.compareEndPoints("StartToEnd",b)&&(d=a(b,!1),c.setEnd(d.container,d.offset))}return c}function c(a){var b;try{b=a.getNative().createRange()}catch(c){return null}var d=b.item?b.item(0):b.parentElement();return(d.ownerDocument||d)===a.document?b:null}var d=dom.Selection=function(a){var b,d=this;d.document=a,browser.ie9below&&(b=domUtils.getWindow(a).frameElement,domUtils.on(b,"beforedeactivate",function(){d._bakIERange=d.getIERange()}),domUtils.on(b,"activate",function(){try{!c(d)&&d._bakIERange&&d._bakIERange.select()}catch(a){}d._bakIERange=null})),b=a=null};d.prototype={rangeInBody:function(a,b){var c=browser.ie9below||b?a.item?a.item():a.parentElement():a.startContainer;return c===this.document.body||domUtils.inDoc(c,this.document)},getNative:function(){var a=this.document;try{return a?browser.ie9below?a.selection:domUtils.getWindow(a).getSelection():null}catch(b){return null}},getIERange:function(){var a=c(this);return!a&&this._bakIERange?this._bakIERange:a},cache:function(){this.clear(),this._cachedRange=this.getRange(),this._cachedStartElement=this.getStart(),this._cachedStartElementPath=this.getStartElementPath()},getStartElementPath:function(){if(this._cachedStartElementPath)return this._cachedStartElementPath;var a=this.getStart();return a?domUtils.findParents(a,!0,null,!0):[]},clear:function(){this._cachedStartElementPath=this._cachedRange=this._cachedStartElement=null},isFocus:function(){try{if(browser.ie9below){var a=c(this);return!(!a||!this.rangeInBody(a))}return!!this.getNative().rangeCount}catch(b){return!1}},getRange:function(){function a(a){for(var b=c.document.body.firstChild,d=a.collapsed;b&&b.firstChild;)a.setStart(b,0),b=b.firstChild;a.startContainer||a.setStart(c.document.body,0),d&&a.collapse(!0)}var c=this;if(null!=c._cachedRange)return this._cachedRange;var d=new baidu.editor.dom.Range(c.document);if(browser.ie9below){var e=c.getIERange();if(e)try{b(e,d)}catch(f){a(d)}else a(d)}else{var g=c.getNative();if(g&&g.rangeCount){var h=g.getRangeAt(0),i=g.getRangeAt(g.rangeCount-1);d.setStart(h.startContainer,h.startOffset).setEnd(i.endContainer,i.endOffset),d.collapsed&&domUtils.isBody(d.startContainer)&&!d.startOffset&&a(d)}else{if(this._bakRange&&domUtils.inDoc(this._bakRange.startContainer,this.document))return this._bakRange;a(d)}}return this._bakRange=d},getStart:function(){if(this._cachedStartElement)return this._cachedStartElement;var a,b,c,d,e=browser.ie9below?this.getIERange():this.getRange();if(browser.ie9below){if(!e)return this.document.body.firstChild;if(e.item)return e.item(0);for(a=e.duplicate(),a.text.length>0&&a.moveStart("character",1),a.collapse(1),b=a.parentElement(),d=c=e.parentElement();c=c.parentNode;)if(c==b){b=d;break}}else if(e.shrinkBoundary(),b=e.startContainer,1==b.nodeType&&b.hasChildNodes()&&(b=b.childNodes[Math.min(b.childNodes.length-1,e.startOffset)]),3==b.nodeType)return b.parentNode;return b},getText:function(){var a,b;return this.isFocus()&&(a=this.getNative())?(b=browser.ie9below?a.createRange():a.getRangeAt(0),browser.ie9below?b.text:b.toString()):""},clearRange:function(){this.getNative()[browser.ie9below?"empty":"removeAllRanges"]()}}}(),function(){function a(a,b){var c;if(b.textarea)if(utils.isString(b.textarea)){for(var d,e=0,f=domUtils.getElementsByTagName(a,"textarea");d=f[e++];)if(d.id=="ueditor_textarea_"+b.options.textarea){c=d;break}}else c=b.textarea;c||(a.appendChild(c=domUtils.createElement(document,"textarea",{name:b.options.textarea,id:"ueditor_textarea_"+b.options.textarea,style:"display:none"})),b.textarea=c),!c.getAttribute("name")&&c.setAttribute("name",b.options.textarea),c.value=b.hasContents()?b.options.allHtmlEnabled?b.getAllHtml():b.getContent(null,null,!0):""}function b(a){for(var b in a)return b}function c(a){a.langIsReady=!0,a.fireEvent("langReady")}var d,e=0,f=UE.Editor=function(a){var d=this;d.uid=e++,EventBase.call(d),d.commands={},d.options=utils.extend(utils.clone(a||{}),UEDITOR_CONFIG,!0),d.shortcutkeys={},d.inputRules=[],d.outputRules=[],d.setOpt(f.defaultOptions(d)),d.loadServerConfig(),utils.isEmptyObject(UE.I18N)?utils.loadFile(document,{src:d.options.langPath+d.options.lang+"/"+d.options.lang+".js",tag:"script",type:"text/javascript",defer:"defer"},function(){UE.plugin.load(d),c(d)}):(d.options.lang=b(UE.I18N),UE.plugin.load(d),c(d)),UE.instants["ueditorInstant"+d.uid]=d};f.prototype={registerCommand:function(a,b){this.commands[a]=b},ready:function(a){var b=this;a&&(b.isReady?a.apply(b):b.addListener("ready",a))},setOpt:function(a,b){var c={};utils.isString(a)?c[a]=b:c=a,utils.extend(this.options,c,!0)},getOpt:function(a){return this.options[a]},destroy:function(){var a=this;a.fireEvent("destroy");var b=a.container.parentNode,c=a.textarea;c?c.style.display="":(c=document.createElement("textarea"),b.parentNode.insertBefore(c,b)),c.style.width=a.iframe.offsetWidth+"px",c.style.height=a.iframe.offsetHeight+"px",c.value=a.getContent(),c.id=a.key,b.innerHTML="",domUtils.remove(b);var d=a.key;for(var e in a)a.hasOwnProperty(e)&&delete this[e];UE.delEditor(d)},render:function(a){var b=this,c=b.options,d=function(b){return parseInt(domUtils.getComputedStyle(a,b))};if(utils.isString(a)&&(a=document.getElementById(a)),a){c.initialFrameWidth?c.minFrameWidth=c.initialFrameWidth:c.minFrameWidth=c.initialFrameWidth=a.offsetWidth,c.initialFrameHeight?c.minFrameHeight=c.initialFrameHeight:c.initialFrameHeight=c.minFrameHeight=a.offsetHeight,a.style.width=/%$/.test(c.initialFrameWidth)?"100%":c.initialFrameWidth-d("padding-left")-d("padding-right")+"px",a.style.height=/%$/.test(c.initialFrameHeight)?"100%":c.initialFrameHeight-d("padding-top")-d("padding-bottom")+"px",a.style.zIndex=c.zIndex;var e=(ie&&browser.version<9?"":"")+""+(c.iframeCssUrl?"":"")+(c.initialStyle?"":"")+"";a.appendChild(domUtils.createElement(document,"iframe",{id:"ueditor_"+b.uid,width:"100%",height:"100%",frameborder:"0",src:"javascript:void(function(){document.open();"+(c.customDomain&&document.domain!=location.hostname?'document.domain="'+document.domain+'";':"")+'document.write("'+e+'");document.close();}())'})),a.style.overflow="hidden",setTimeout(function(){/%$/.test(c.initialFrameWidth)&&(c.minFrameWidth=c.initialFrameWidth=a.offsetWidth),/%$/.test(c.initialFrameHeight)&&(c.minFrameHeight=c.initialFrameHeight=a.offsetHeight,a.style.height=c.initialFrameHeight+"px")})}},_setup:function(b){var c=this,d=c.options;ie?(b.body.disabled=!0,b.body.contentEditable=!0,b.body.disabled=!1):b.body.contentEditable=!0,b.body.spellcheck=!1,c.document=b,c.window=b.defaultView||b.parentWindow,c.iframe=c.window.frameElement,c.body=b.body,c.selection=new dom.Selection(b);var e;browser.gecko&&(e=this.selection.getNative())&&e.removeAllRanges(),this._initEvents();for(var f=this.iframe.parentNode;!domUtils.isBody(f);f=f.parentNode)if("FORM"==f.tagName){c.form=f,c.options.autoSyncData?domUtils.on(c.window,"blur",function(){a(f,c)}):domUtils.on(f,"submit",function(){a(this,c)});break}if(d.initialContent)if(d.autoClearinitialContent){var g=c.execCommand;c.execCommand=function(){return c.fireEvent("firstBeforeExecCommand"),g.apply(c,arguments)},this._setDefaultContent(d.initialContent)}else this.setContent(d.initialContent,!1,!0);domUtils.isEmptyNode(c.body)&&(c.body.innerHTML="

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

    "),d.focus&&setTimeout(function(){c.focus(c.options.focusInEnd),!c.options.autoClearinitialContent&&c._selectionChange()},0),c.container||(c.container=this.iframe.parentNode),d.fullscreen&&c.ui&&c.ui.setFullScreen(!0);try{c.document.execCommand("2D-position",!1,!1)}catch(h){}try{c.document.execCommand("enableInlineTableEditing",!1,!1)}catch(h){}try{c.document.execCommand("enableObjectResizing",!1,!1)}catch(h){}c._bindshortcutKeys(),c.isReady=1,c.fireEvent("ready"),d.onready&&d.onready.call(c),browser.ie9below||domUtils.on(c.window,["blur","focus"],function(a){if("blur"==a.type){c._bakRange=c.selection.getRange();try{c._bakNativeRange=c.selection.getNative().getRangeAt(0),c.selection.getNative().removeAllRanges()}catch(a){c._bakNativeRange=null}}else try{c._bakRange&&c._bakRange.select()}catch(a){}}),browser.gecko&&browser.version<=10902&&(c.body.contentEditable=!1,setTimeout(function(){c.body.contentEditable=!0},100),setInterval(function(){c.body.style.height=c.iframe.offsetHeight-20+"px"},100)),!d.isShow&&c.setHide(),d.readonly&&c.setDisabled()},sync:function(b){var c=this,d=b?document.getElementById(b):domUtils.findParent(c.iframe.parentNode,function(a){return"FORM"==a.tagName},!0);d&&a(d,c)},setHeight:function(a,b){a!==parseInt(this.iframe.parentNode.style.height)&&(this.iframe.parentNode.style.height=a+"px"),!b&&(this.options.minFrameHeight=this.options.initialFrameHeight=a),this.body.style.height=a+"px",!b&&this.trigger("setHeight")},addshortcutkey:function(a,b){var c={};b?c[a]=b:c=a,utils.extend(this.shortcutkeys,c)},_bindshortcutKeys:function(){var a=this,b=this.shortcutkeys;a.addListener("keydown",function(c,d){var e=d.keyCode||d.which;for(var f in b)for(var g,h=b[f].split(","),i=0;g=h[i++];){g=g.split(":");var j=g[0],k=g[1];(/^(ctrl)(\+shift)?\+(\d+)$/.test(j.toLowerCase())||/^(\d+)$/.test(j))&&(("ctrl"==RegExp.$1?d.ctrlKey||d.metaKey:0)&&(""!=RegExp.$2?d[RegExp.$2.slice(1)+"Key"]:1)&&e==RegExp.$3||e==RegExp.$1)&&(a.queryCommandState(f,k)!=-1&&a.execCommand(f,k),domUtils.preventDefault(d))}})},getContent:function(a,b,c,d,e){var f=this;if(a&&utils.isFunction(a)&&(b=a,a=""),b?!b():!this.hasContents())return"";f.fireEvent("beforegetcontent");var g=UE.htmlparser(f.body.innerHTML,d);return f.filterOutputRule(g),f.fireEvent("aftergetcontent",a,g),g.toHtml(e)},getAllHtml:function(){var a=this,b=[];if(a.fireEvent("getAllHtml",b),browser.ie&&browser.version>8){var c="";utils.each(a.document.styleSheets,function(a){c+=a.href?'':""}),utils.each(a.document.getElementsByTagName("script"),function(a){c+=a.outerHTML})}return""+(a.options.charset?'':"")+(c||a.document.getElementsByTagName("head")[0].innerHTML)+b.join("\n")+""+a.getContent(null,null,!0)+""},getPlainTxt:function(){var a=new RegExp(domUtils.fillChar,"g"),b=this.body.innerHTML.replace(/[\n\r]/g,"");return b=b.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:""}),b.replace(a,"").replace(/\u00a0/g," ").replace(/ /g," ")},getContentTxt:function(){var a=new RegExp(domUtils.fillChar,"g");return this.body[browser.ie?"innerText":"textContent"].replace(a,"").replace(/\u00a0/g," ")},setContent:function(b,c,d){function e(a){return"DIV"==a.tagName&&a.getAttribute("cdata_tag")}var f=this;f.fireEvent("beforesetcontent",b);var g=UE.htmlparser(b);if(f.filterInputRule(g),b=g.toHtml(),f.body.innerHTML=(c?f.body.innerHTML:"")+b,"p"==f.options.enterTag){var h,i=this.body.firstChild;if(!i||1==i.nodeType&&(dtd.$cdata[i.tagName]||e(i)||domUtils.isCustomeNode(i))&&i===this.body.lastChild)this.body.innerHTML="

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

    "+this.body.innerHTML;else for(var j=f.document.createElement("p");i;){for(;i&&(3==i.nodeType||1==i.nodeType&&dtd.p[i.tagName]&&!dtd.$cdata[i.tagName]);)h=i.nextSibling,j.appendChild(i),i=h;if(j.firstChild){if(!i){f.body.appendChild(j);break}i.parentNode.insertBefore(j,i),j=f.document.createElement("p")}i=i.nextSibling}}f.fireEvent("aftersetcontent"),f.fireEvent("contentchange"),!d&&f._selectionChange(),f._bakRange=f._bakIERange=f._bakNativeRange=null;var k;browser.gecko&&(k=this.selection.getNative())&&k.removeAllRanges(),f.options.autoSyncData&&f.form&&a(f.form,f)},focus:function(a){try{var b=this,c=b.selection.getRange();if(a){var d=b.body.lastChild;d&&1==d.nodeType&&!dtd.$empty[d.tagName]&&(domUtils.isEmptyBlock(d)?c.setStartAtFirst(d):c.setStartAtLast(d),c.collapse(!0)),c.setCursor(!0)}else{if(!c.collapsed&&domUtils.isBody(c.startContainer)&&0==c.startOffset){var d=b.body.firstChild;d&&1==d.nodeType&&!dtd.$empty[d.tagName]&&c.setStartAtFirst(d).collapse(!0)}c.select(!0)}this.fireEvent("focus selectionchange")}catch(e){}},isFocus:function(){return this.selection.isFocus()},blur:function(){var a=this.selection.getNative();if(a.empty&&browser.ie){var b=document.body.createTextRange();b.moveToElementText(document.body),b.collapse(!0),b.select(),a.empty()}else a.removeAllRanges()},_initEvents:function(){var a=this,b=a.document,c=a.window;a._proxyDomEvent=utils.bind(a._proxyDomEvent,a),domUtils.on(b,["click","contextmenu","mousedown","keydown","keyup","keypress","mouseup","mouseover","mouseout","selectstart"],a._proxyDomEvent),domUtils.on(c,["focus","blur"],a._proxyDomEvent),domUtils.on(a.body,"drop",function(b){browser.gecko&&b.stopPropagation&&b.stopPropagation(),a.fireEvent("contentchange")}),domUtils.on(b,["mouseup","keydown"],function(b){"keydown"==b.type&&(b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)||2!=b.button&&a._selectionChange(250,b)})},_proxyDomEvent:function(a){return this.fireEvent("before"+a.type.replace(/^on/,"").toLowerCase())!==!1&&(this.fireEvent(a.type.replace(/^on/,""),a)!==!1&&this.fireEvent("after"+a.type.replace(/^on/,"").toLowerCase()))},_selectionChange:function(a,b){var c,e,f=this,g=!1;if(browser.ie&&browser.version<9&&b&&"mouseup"==b.type){var h=this.selection.getRange();h.collapsed||(g=!0,c=b.clientX,e=b.clientY)}clearTimeout(d),d=setTimeout(function(){if(f.selection&&f.selection.getNative()){var a;if(g&&"None"==f.selection.getNative().type){a=f.document.body.createTextRange();try{a.moveToPoint(c,e)}catch(d){a=null}}var h;a&&(h=f.selection.getIERange,f.selection.getIERange=function(){return a}),f.selection.cache(),h&&(f.selection.getIERange=h),f.selection._cachedRange&&f.selection._cachedStartElement&&(f.fireEvent("beforeselectionchange"),f.fireEvent("selectionchange",!!b),f.fireEvent("afterselectionchange"),f.selection.clear())}},a||50)},_callCmdFn:function(a,b){var c,d,e=b[0].toLowerCase();return c=this.commands[e]||UE.commands[e],d=c&&c[a],c&&d||"queryCommandState"!=a?d?d.apply(this,b):void 0:0},execCommand:function(a){a=a.toLowerCase();var b,c=this,d=c.commands[a]||UE.commands[a];return d&&d.execCommand?(d.notNeedUndo||c.__hasEnterExecCommand?(b=this._callCmdFn("execCommand",arguments),!c.__hasEnterExecCommand&&!d.ignoreContentChange&&!c._ignoreContentChange&&c.fireEvent("contentchange")):(c.__hasEnterExecCommand=!0,c.queryCommandState.apply(c,arguments)!=-1&&(c.fireEvent("saveScene"),c.fireEvent.apply(c,["beforeexeccommand",a].concat(arguments)),b=this._callCmdFn("execCommand",arguments),c.fireEvent.apply(c,["afterexeccommand",a].concat(arguments)),c.fireEvent("saveScene")),c.__hasEnterExecCommand=!1),!c.__hasEnterExecCommand&&!d.ignoreContentChange&&!c._ignoreContentChange&&c._selectionChange(),b):null},queryCommandState:function(a){return this._callCmdFn("queryCommandState",arguments)},queryCommandValue:function(a){return this._callCmdFn("queryCommandValue",arguments)},hasContents:function(a){if(a)for(var b,c=0;b=a[c++];)if(this.document.getElementsByTagName(b).length>0)return!0;if(!domUtils.isEmptyBlock(this.body))return!0;for(a=["div"],c=0;b=a[c++];)for(var d,e=domUtils.getElementsByTagName(this.document,b),f=0;d=e[f++];)if(domUtils.isCustomeNode(d))return!0;return!1},reset:function(){this.fireEvent("reset")},setEnabled:function(){var a,b=this;if("false"==b.body.contentEditable){b.body.contentEditable=!0,a=b.selection.getRange();try{a.moveToBookmark(b.lastBk),delete b.lastBk}catch(c){a.setStartAtFirst(b.body).collapse(!0)}a.select(!0),b.bkqueryCommandState&&(b.queryCommandState=b.bkqueryCommandState,delete b.bkqueryCommandState),b.bkqueryCommandValue&&(b.queryCommandValue=b.bkqueryCommandValue,delete b.bkqueryCommandValue),b.fireEvent("selectionchange")}},enable:function(){return this.setEnabled()},setDisabled:function(a){var b=this;a=a?utils.isArray(a)?a:[a]:[],"true"==b.body.contentEditable&&(b.lastBk||(b.lastBk=b.selection.getRange().createBookmark(!0)),b.body.contentEditable=!1,b.bkqueryCommandState=b.queryCommandState,b.bkqueryCommandValue=b.queryCommandValue,b.queryCommandState=function(c){return utils.indexOf(a,c)!=-1?b.bkqueryCommandState.apply(b,arguments):-1},b.queryCommandValue=function(c){return utils.indexOf(a,c)!=-1?b.bkqueryCommandValue.apply(b,arguments):null},b.fireEvent("selectionchange"))},disable:function(a){return this.setDisabled(a)},_setDefaultContent:function(){function a(){var b=this;b.document.getElementById("initContent")&&(b.body.innerHTML="

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

    ",b.removeListener("firstBeforeExecCommand focus",a),setTimeout(function(){b.focus(),b._selectionChange()},0))}return function(b){var c=this;c.body.innerHTML='

    '+b+"

    ",c.addListener("firstBeforeExecCommand focus",a)}}(),setShow:function(){var a=this,b=a.selection.getRange();if("none"==a.container.style.display){try{b.moveToBookmark(a.lastBk),delete a.lastBk}catch(c){b.setStartAtFirst(a.body).collapse(!0)}setTimeout(function(){b.select(!0)},100),a.container.style.display=""}},show:function(){return this.setShow(); +},setHide:function(){var a=this;a.lastBk||(a.lastBk=a.selection.getRange().createBookmark(!0)),a.container.style.display="none"},hide:function(){return this.setHide()},getLang:function(a){if(!this.options)return"";var b=UE.I18N[this.options.lang];if(!b)throw Error("not import language file");a=(a||"").split(".");for(var c,d=0;(c=a[d++])&&(b=b[c],b););return b},getContentLength:function(a,b){var c=this.getContent(!1,!1,!0).length;if(a){b=(b||[]).concat(["hr","img","iframe"]),c=this.getContentTxt().replace(/[\t\r\n]+/g,"").length;for(var d,e=0;d=b[e++];)c+=this.document.getElementsByTagName(d).length}return c},addInputRule:function(a){this.inputRules.push(a)},filterInputRule:function(a){for(var b,c=0;b=this.inputRules[c++];)b.call(this,a)},addOutputRule:function(a){this.outputRules.push(a)},filterOutputRule:function(a){for(var b,c=0;b=this.outputRules[c++];)b.call(this,a)},getActionUrl:function(a){var b=this.getOpt(a)||a,c=this.getOpt("imageUrl"),d=this.getOpt("serverUrl");return!d&&c&&(d=c.replace(/^(.*[\/]).+([\.].+)$/,"$1controller$2")),d?(d=d+(d.indexOf("?")==-1?"?":"&")+"action="+(b||""),utils.formatUrl(d)):""}},utils.inherits(f,EventBase)}(),UE.Editor.defaultOptions=function(a){var b=a.options.UEDITOR_HOME_URL;return{isShow:!0,initialContent:"",initialStyle:"",autoClearinitialContent:!1,iframeCssUrl:b+"themes/iframe.css",textarea:"editorValue",focus:!1,focusInEnd:!0,autoClearEmptyNode:!0,fullscreen:!1,readonly:!1,zIndex:999,imagePopup:!0,enterTag:"p",customDomain:!1,lang:"zh-cn",langPath:b+"lang/",theme:"default",themePath:b+"themes/",allHtmlEnabled:!1,scaleEnabled:!1,tableNativeEditInFF:!1,autoSyncData:!0,fileNameFormat:"{time}{rand:6}"}},function(){UE.Editor.prototype.loadServerConfig=function(){function showErrorMsg(a){console&&console.error(a)}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);me._serverConfigLoaded=!1,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),me.fireEvent("serverConfigLoaded"),me._serverConfigLoaded=!0}catch(e){showErrorMsg(me.getLang("loadconfigFormatError"))}},onerror:function(){showErrorMsg(me.getLang("loadconfigHttpError"))}})}catch(e){showErrorMsg(me.getLang("loadconfigError"))}})},UE.Editor.prototype.isServerConfigLoaded=function(){var a=this;return a._serverConfigLoaded||!1},UE.Editor.prototype.afterConfigReady=function(a){if(a&&utils.isFunction(a)){var b=this,c=function(){a.apply(b,arguments),b.removeListener("serverConfigLoaded",c)};b.isServerConfigLoaded()?a.call(b,"serverConfigLoaded"):b.addListener("serverConfigLoaded",c)}}}(),UE.ajax=function(){function a(a){var b=[];for(var c in a)if("method"!=c&&"timeout"!=c&&"async"!=c&&"dataType"!=c&&"callback"!=c&&void 0!=a[c]&&null!=a[c])if("function"!=(typeof a[c]).toLowerCase()&&"object"!=(typeof a[c]).toLowerCase())b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));else if(utils.isArray(a[c]))for(var d=0;d/gi,"").replace(/]*>[\s\S]*?.<\/v:shape>/gi,function(a){if(browser.opera)return"";try{if(/Bitmap/i.test(a))return"";var c=a.match(/width:([ \d.]*p[tx])/i)[1],d=a.match(/height:([ \d.]*p[tx])/i)[1],e=a.match(/src=\s*"([^"]*)"/i)[1];return''}catch(f){return""}}).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(a,b,c,d){return"class"==b&&"MsoListParagraph"==d?a:""}).replace(/<(font|span)[^>]*>(\s*)<\/\1>/gi,function(a,b,c){return c.replace(/[\t\r\n ]+/g," ")}).replace(/(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi,function(a,c,d,e){for(var f,g=[],h=e.replace(/^\s+|\s+$/,"").replace(/'/g,"'").replace(/"/gi,"'").replace(/[\d.]+(cm|pt)/g,function(a){return utils.transUnitToPx(a)}).split(/;\s*/g),i=0;f=h[i];i++){var j,k,l=f.split(":");if(2==l.length){if(j=l[0].toLowerCase(),k=l[1].toLowerCase(),/^(background)\w*/.test(j)&&0==k.replace(/(initial|\s)/g,"").length||/^(margin)\w*/.test(j)&&/^0\w+$/.test(k))continue;switch(j){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":case"mso-height":case"mso-width":case"mso-vertical-align-alt":/1&&(a(h,j,!0),b(h,j)),c(k,h,i,j);break;case"text":d(g,h);break;case"element":e(g,h,i,j);break;case"comment":f(g,h,i)}return h}function d(a,b){"pre"==a.parentNode.tagName?b.push(a.data):b.push(l[a.parentNode.tagName]?utils.html(a.data):a.data.replace(/[ ]{2}/g,"  "))}function e(d,e,f,g){var h="";if(d.attrs){h=[];var i=d.attrs;for(var j in i)h.push(j+(void 0!==i[j]?'="'+(k[j]?utils.html(i[j]).replace(/["]/g,function(a){return"""}):utils.unhtml(i[j]))+'"':""));h=h.join(" ")}if(e.push("<"+d.tagName+(h?" "+h:"")+(dtd.$empty[d.tagName]?"/":"")+">"),f&&!dtd.$inlineWithA[d.tagName]&&"pre"!=d.tagName&&d.children&&d.children.length&&(g=a(e,g,!0),b(e,g)),d.children&&d.children.length)for(var l,m=0;l=d.children[m++];)f&&"element"==l.type&&!dtd.$inlineWithA[l.tagName]&&m>1&&(a(e,g),b(e,g)),c(l,e,f,g);dtd.$empty[d.tagName]||(f&&!dtd.$inlineWithA[d.tagName]&&"pre"!=d.tagName&&d.children&&d.children.length&&(g=a(e,g),b(e,g)),e.push(""))}function f(a,b){b.push("")}function g(a,b){var c;if("element"==a.type&&a.getAttr("id")==b)return a;if(a.children&&a.children.length)for(var d,e=0;d=a.children[e++];)if(c=g(d,b))return c}function h(a,b,c){if("element"==a.type&&a.tagName==b&&c.push(a),a.children&&a.children.length)for(var d,e=0;d=a.children[e++];)h(d,b,c)}function i(a,b){if(a.children&&a.children.length)for(var c,d=0;c=a.children[d];)i(c,b),c.parentNode&&(c.children&&c.children.length&&b(c),c.parentNode&&d++);else b(a)}var j=UE.uNode=function(a){this.type=a.type,this.data=a.data,this.tagName=a.tagName,this.parentNode=a.parentNode,this.attrs=a.attrs||{},this.children=a.children},k={href:1,src:1,_src:1,_href:1,cdata_data:1},l={style:1,script:1},m=" ",n="\n";j.createElement=function(a){return/[<>]/.test(a)?UE.htmlparser(a).children[0]:new j({type:"element",children:[],tagName:a})},j.createText=function(a,b){return new UE.uNode({type:"text",data:b?a:utils.unhtml(a||"")})},j.prototype={toHtml:function(a){var b=[];return c(this,b,a,0),b.join("")},innerHTML:function(a){if("element"!=this.type||dtd.$empty[this.tagName])return this;if(utils.isString(a)){if(this.children)for(var b,c=0;b=this.children[c++];)b.parentNode=null;this.children=[];for(var b,d=UE.htmlparser(a),c=0;b=d.children[c++];)this.children.push(b),b.parentNode=this;return this}var d=new UE.uNode({type:"root",children:this.children});return d.toHtml()},innerText:function(a,b){if("element"!=this.type||dtd.$empty[this.tagName])return this;if(a){if(this.children)for(var c,d=0;c=this.children[d++];)c.parentNode=null;return this.children=[],this.appendChild(j.createText(a,b)),this}return this.toHtml().replace(/<[^>]+>/g,"")},getData:function(){return"element"==this.type?"":this.data},firstChild:function(){return this.children?this.children[0]:null},lastChild:function(){return this.children?this.children[this.children.length-1]:null},previousSibling:function(){for(var a,b=this.parentNode,c=0;a=b.children[c];c++)if(a===this)return 0==c?null:b.children[c-1]},nextSibling:function(){for(var a,b=this.parentNode,c=0;a=b.children[c++];)if(a===this)return b.children[c]},replaceChild:function(a,b){if(this.children){a.parentNode&&a.parentNode.removeChild(a);for(var c,d=0;c=this.children[d];d++)if(c===b)return this.children.splice(d,1,a),b.parentNode=null,a.parentNode=this,a}},appendChild:function(a){if("root"==this.type||"element"==this.type&&!dtd.$empty[this.tagName]){this.children||(this.children=[]),a.parentNode&&a.parentNode.removeChild(a);for(var b,c=0;b=this.children[c];c++)if(b===a){this.children.splice(c,1);break}return this.children.push(a),a.parentNode=this,a}},insertBefore:function(a,b){if(this.children){a.parentNode&&a.parentNode.removeChild(a);for(var c,d=0;c=this.children[d];d++)if(c===b)return this.children.splice(d,0,a),a.parentNode=this,a}},insertAfter:function(a,b){if(this.children){a.parentNode&&a.parentNode.removeChild(a);for(var c,d=0;c=this.children[d];d++)if(c===b)return this.children.splice(d+1,0,a),a.parentNode=this,a}},removeChild:function(a,b){if(this.children)for(var c,d=0;c=this.children[d];d++)if(c===a){if(this.children.splice(d,1),c.parentNode=null,b&&c.children&&c.children.length)for(var e,f=0;e=c.children[f];f++)this.children.splice(d+f,0,e),e.parentNode=this;return c}},getAttr:function(a){return this.attrs&&this.attrs[a.toLowerCase()]},setAttr:function(a,b){if(!a)return void delete this.attrs;if(this.attrs||(this.attrs={}),utils.isObject(a))for(var c in a)a[c]?this.attrs[c.toLowerCase()]=a[c]:delete this.attrs[c];else b?this.attrs[a.toLowerCase()]=b:delete this.attrs[a]},getIndex:function(){for(var a,b=this.parentNode,c=0;a=b.children[c];c++)if(a===this)return c;return-1},getNodeById:function(a){var b;if(this.children&&this.children.length)for(var c,d=0;c=this.children[d++];)if(b=g(c,a))return b},getNodesByTagName:function(a){a=utils.trim(a).replace(/[ ]{2,}/g," ").split(" ");var b=[],c=this;return utils.each(a,function(a){if(c.children&&c.children.length)for(var d,e=0;d=c.children[e++];)h(d,a,b)}),b},getStyle:function(a){var b=this.getAttr("style");if(!b)return"";var c=new RegExp("(^|;)\\s*"+a+":([^;]+)","i"),d=b.match(c);return d&&d[0]?d[2]:""},setStyle:function(a,b){function c(a,b){var c=new RegExp("(^|;)\\s*"+a+":([^;]+;?)","gi");d=d.replace(c,"$1"),b&&(d=a+":"+utils.unhtml(b)+";"+d)}var d=this.getAttr("style");if(d||(d=""),utils.isObject(a))for(var e in a)c(e,a[e]);else c(a,b);this.setAttr("style",utils.trim(d))},traversal:function(a){return this.children&&this.children.length&&i(this,a),this}}}();var htmlparser=UE.htmlparser=function(a,b){function c(a,b){if(m[a.tagName]){var c=k.createElement(m[a.tagName]);a.appendChild(c),c.appendChild(k.createText(b)),a=c}else a.appendChild(k.createText(b))}function d(a,b,c){var e;if(e=l[b]){for(var f,h=a;"root"!=h.type;){if(utils.isArray(e)?utils.indexOf(e,h.tagName)!=-1:e==h.tagName){a=h,f=!0;break}h=h.parentNode}f||(a=d(a,utils.isArray(e)?e[0]:e))}var i=new k({parentNode:a,type:"element",tagName:b.toLowerCase(),children:dtd.$empty[b]?null:[]});if(c){for(var m,n={};m=g.exec(c);)n[m[1].toLowerCase()]=j[m[1].toLowerCase()]?m[2]||m[3]||m[4]:utils.unhtml(m[2]||m[3]||m[4]);i.attrs=n}return a.children.push(i),dtd.$empty[b]?a:i}function e(a,b){a.children.push(new k({type:"comment",data:b,parentNode:a}))}var f=/<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\s\/<>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g,g=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,h={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};a=a.replace(new RegExp(domUtils.fillChar,"g"),""),b||(a=a.replace(new RegExp("[\\r\\t\\n"+(b?"":" ")+"]*]*)>[\\r\\t\\n"+(b?"":" ")+"]*","g"),function(a,c){return c&&h[c.toLowerCase()]?a.replace(/(^[\n\r]+)|([\n\r]+$)/g,""):a.replace(new RegExp("^[\\r\\n"+(b?"":" ")+"]+"),"").replace(new RegExp("[\\r\\n"+(b?"":" ")+"]+$"),"")}));for(var i,j={href:1,src:1},k=UE.uNode,l={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"},m={ol:"li",ul:"li"},n=0,o=0,p=new k({type:"root",children:[]}),q=p;i=f.exec(a);){n=i.index;try{if(n>o&&c(q,a.slice(o,n)),i[3])dtd.$cdata[q.tagName]?c(q,i[0]):q=d(q,i[3].toLowerCase(),i[4]);else if(i[1]){if("root"!=q.type)if(dtd.$cdata[q.tagName]&&!dtd.$cdata[i[1]])c(q,i[0]);else{for(var r=q;"element"==q.type&&q.tagName!=i[1].toLowerCase();)if(q=q.parentNode,"root"==q.type)throw q=r,"break";q=q.parentNode}}else i[2]&&e(q,i[2])}catch(s){}o=f.lastIndex}return o");break;case"div":if(b.getAttr("cdata_tag"))break;if(d=b.getAttr("class"),d&&/^line number\d+/.test(d))break;if(!e)break;for(var f,g=UE.uNode.createElement("p");f=b.firstChild();)"text"!=f.type&&UE.dom.dtd.$block[f.tagName]?g.firstChild()?(b.parentNode.insertBefore(g,b),g=UE.uNode.createElement("p")):b.parentNode.insertBefore(f,b):g.appendChild(f);g.firstChild()&&b.parentNode.insertBefore(g,b),b.parentNode.removeChild(b);break;case"dl":b.tagName="ul";break;case"dt":case"dd":b.tagName="li";break;case"li":var h=b.getAttr("class");h&&/list\-/.test(h)||b.setAttr();var i=b.getNodesByTagName("ol ul");UE.utils.each(i,function(a){b.parentNode.insertAfter(a,b)});break;case"td":case"th":case"caption":b.children&&b.children.length||b.appendChild(browser.ie11below?UE.uNode.createText(" "):UE.uNode.createElement("br"));break;case"table":a.options.disabledTableInTable&&c(b)&&(b.parentNode.insertBefore(UE.uNode.createText(b.innerText()),b),b.parentNode.removeChild(b))}}})}),a.addOutputRule(function(b){var c;b.traversal(function(b){if("element"==b.type){if(a.options.autoClearEmptyNode&&dtd.$inline[b.tagName]&&!dtd.$empty[b.tagName]&&(!b.attrs||utils.isEmptyObject(b.attrs)))return void(b.firstChild()?"span"!=b.tagName||b.attrs&&!utils.isEmptyObject(b.attrs)||b.parentNode.removeChild(b,!0):b.parentNode.removeChild(b));switch(b.tagName){case"div":(c=b.getAttr("cdata_tag"))&&(b.tagName=c,b.appendChild(UE.uNode.createText(b.getAttr("cdata_data"))),b.setAttr({cdata_tag:"",cdata_data:"",_ue_custom_node_:""}));break;case"a":(c=b.getAttr("_href"))&&b.setAttr({href:utils.html(c),_href:""});break;case"span":c=b.getAttr("id"),c&&/^_baidu_bookmark_/i.test(c)&&b.parentNode.removeChild(b);break;case"img":(c=b.getAttr("_src"))&&b.setAttr({src:b.getAttr("_src"),_src:""})}}})})},UE.commands.inserthtml={execCommand:function(a,b,c){var d,e,f=this;if(b&&f.fireEvent("beforeinserthtml",b)!==!0){if(d=f.selection.getRange(),e=d.document.createElement("div"),e.style.display="inline",!c){var g=UE.htmlparser(b);f.options.filterRules&&UE.filterNode(g,f.options.filterRules),f.filterInputRule(g),b=g.toHtml()}if(e.innerHTML=utils.trim(b),!d.collapsed){var h=d.startContainer;if(domUtils.isFillChar(h)&&d.setStartBefore(h),h=d.endContainer,domUtils.isFillChar(h)&&d.setEndAfter(h),d.txtToElmBoundary(),d.endContainer&&1==d.endContainer.nodeType&&(h=d.endContainer.childNodes[d.endOffset],h&&domUtils.isBr(h)&&d.setEndAfter(h)),0==d.startOffset&&(h=d.startContainer,domUtils.isBoundaryNode(h,"firstChild")&&(h=d.endContainer,d.endOffset==(3==h.nodeType?h.nodeValue.length:h.childNodes.length)&&domUtils.isBoundaryNode(h,"lastChild")&&(f.body.innerHTML="

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

    ",d.setStart(f.body.firstChild,0).collapse(!0)))),!d.collapsed&&d.deleteContents(),1==d.startContainer.nodeType){var i,j=d.startContainer.childNodes[d.startOffset];if(j&&domUtils.isBlockElm(j)&&(i=j.previousSibling)&&domUtils.isBlockElm(i)){for(d.setEnd(i,i.childNodes.length).collapse();j.firstChild;)i.appendChild(j.firstChild);domUtils.remove(j)}}}var j,k,i,l,m,n=0;d.inFillChar()&&(j=d.startContainer,domUtils.isFillChar(j)?(d.setStartBefore(j).collapse(!0),domUtils.remove(j)):domUtils.isFillChar(j,!0)&&(j.nodeValue=j.nodeValue.replace(fillCharReg,""),d.startOffset--,d.collapsed&&d.collapse(!0)));var o=domUtils.findParentByTagName(d.startContainer,"li",!0);if(o){for(var p,q;j=e.firstChild;){for(;j&&(3==j.nodeType||!domUtils.isBlockElm(j)||"HR"==j.tagName);)p=j.nextSibling,d.insertNode(j).collapse(),q=j,j=p;if(j)if(/^(ol|ul)$/i.test(j.tagName)){for(;j.firstChild;)q=j.firstChild,domUtils.insertAfter(o,j.firstChild),o=o.nextSibling;domUtils.remove(j)}else{var r;p=j.nextSibling,r=f.document.createElement("li"),domUtils.insertAfter(o,r),r.appendChild(j),q=j,j=p,o=r}}o=domUtils.findParentByTagName(d.startContainer,"li",!0),domUtils.isEmptyBlock(o)&&domUtils.remove(o),q&&d.setStartAfter(q).collapse(!0).select(!0)}else{for(;j=e.firstChild;){if(n){for(var s=f.document.createElement("p");j&&(3==j.nodeType||!dtd.$block[j.tagName]);)m=j.nextSibling,s.appendChild(j),j=m;s.firstChild&&(j=s)}if(d.insertNode(j),m=j.nextSibling,!n&&j.nodeType==domUtils.NODE_ELEMENT&&domUtils.isBlockElm(j)&&(k=domUtils.findParent(j,function(a){return domUtils.isBlockElm(a)}),k&&"body"!=k.tagName.toLowerCase()&&(!dtd[k.tagName][j.nodeName]||j.parentNode!==k))){if(dtd[k.tagName][j.nodeName])for(l=j.parentNode;l!==k;)i=l,l=l.parentNode;else i=k;domUtils.breakParent(j,i||l);var i=j.previousSibling;domUtils.trimWhiteTextNode(i),i.childNodes.length||domUtils.remove(i),!browser.ie&&(p=j.nextSibling)&&domUtils.isBlockElm(p)&&p.lastChild&&!domUtils.isBr(p.lastChild)&&p.appendChild(f.document.createElement("br")),n=1}var p=j.nextSibling;if(!e.firstChild&&p&&domUtils.isBlockElm(p)){d.setStart(p,0).collapse(!0);break}d.setEndAfter(j).collapse()}if(j=d.startContainer,m&&domUtils.isBr(m)&&domUtils.remove(m),domUtils.isBlockElm(j)&&domUtils.isEmptyNode(j))if(m=j.nextSibling)domUtils.remove(j),1==m.nodeType&&dtd.$block[m.tagName]&&d.setStart(m,0).collapse(!0).shrinkBoundary();else try{j.innerHTML=browser.ie?domUtils.fillChar:"
    "}catch(t){d.setStartBefore(j),domUtils.remove(j)}try{d.select(!0)}catch(t){}}setTimeout(function(){d=f.selection.getRange(),d.scrollToView(f.autoHeightEnabled,f.autoHeightEnabled?domUtils.getXY(f.iframe).y:0),f.fireEvent("afterinserthtml",b)},200)}}},UE.plugins.autotypeset=function(){function a(a,b){return a&&3!=a.nodeType?domUtils.isBr(a)?1:a&&a.parentNode&&l[a.tagName.toLowerCase()]?g&&g.contains(a)||a.getAttribute("pagebreak")?0:b?!domUtils.isEmptyBlock(a):domUtils.isEmptyBlock(a,new RegExp("[\\s"+domUtils.fillChar+"]","g")):void 0:0}function b(a){a.style.cssText||(domUtils.removeAttributes(a,["style"]),"span"==a.tagName.toLowerCase()&&domUtils.hasNoAttributes(a)&&domUtils.remove(a,!0))}function c(c,f){var h,l=this;if(f){if(!i.pasteFilter)return;h=l.document.createElement("div"),h.innerHTML=f.html}else h=l.document.body;for(var m,n=domUtils.getElementsByTagName(h,"*"),o=0;m=n[o++];)if(l.fireEvent("excludeNodeinautotype",m)!==!0){if(i.clearFontSize&&m.style.fontSize&&(domUtils.removeStyle(m,"font-size"),b(m)),i.clearFontFamily&&m.style.fontFamily&&(domUtils.removeStyle(m,"font-family"),b(m)),a(m)){if(i.mergeEmptyline)for(var p,q=m.nextSibling,r=domUtils.isBr(m);a(q)&&(p=q,q=p.nextSibling,!r||q&&(!q||domUtils.isBr(q)));)domUtils.remove(p);if(i.removeEmptyline&&domUtils.inDoc(m,h)&&!k[m.parentNode.tagName.toLowerCase()]){if(domUtils.isBr(m)&&(q=m.nextSibling,q&&!domUtils.isBr(q)))continue;domUtils.remove(m);continue}}if(a(m,!0)&&"SPAN"!=m.tagName&&(i.indent&&(m.style.textIndent=i.indentValue),i.textAlign&&(m.style.textAlign=i.textAlign)),i.removeClass&&m.className&&!j[m.className.toLowerCase()]){if(g&&g.contains(m))continue;domUtils.removeAttributes(m,["class"])}if(i.imageBlockLine&&"img"==m.tagName.toLowerCase()&&!m.getAttribute("emotion"))if(f){var s=m;switch(i.imageBlockLine){case"left":case"right":case"none":for(var p,t,q,u=s.parentNode;dtd.$inline[u.tagName]||"A"==u.tagName;)u=u.parentNode;if(p=u,"P"==p.tagName&&"center"==domUtils.getStyle(p,"text-align")&&!domUtils.isBody(p)&&1==domUtils.getChildCount(p,function(a){return!domUtils.isBr(a)&&!domUtils.isWhitespace(a)}))if(t=p.previousSibling,q=p.nextSibling,t&&q&&1==t.nodeType&&1==q.nodeType&&t.tagName==q.tagName&&domUtils.isBlockElm(t)){for(t.appendChild(p.firstChild);q.firstChild;)t.appendChild(q.firstChild);domUtils.remove(p),domUtils.remove(q)}else domUtils.setStyle(p,"text-align","");domUtils.setStyle(s,"float",i.imageBlockLine);break;case"center":if("center"!=l.queryCommandValue("imagefloat")){for(u=s.parentNode,domUtils.setStyle(s,"float","none"),p=s;u&&1==domUtils.getChildCount(u,function(a){return!domUtils.isBr(a)&&!domUtils.isWhitespace(a)})&&(dtd.$inline[u.tagName]||"A"==u.tagName);)p=u,u=u.parentNode;var v=l.document.createElement("p");domUtils.setAttributes(v,{style:"text-align:center"}),p.parentNode.insertBefore(v,p),v.appendChild(p),domUtils.setStyle(p,"float","")}}}else{var w=l.selection.getRange();w.selectNode(m).select(),l.execCommand("imagefloat",i.imageBlockLine)}i.removeEmptyNode&&i.removeTagNames[m.tagName.toLowerCase()]&&domUtils.hasNoAttributes(m)&&domUtils.isEmptyBlock(m)&&domUtils.remove(m)}if(i.tobdc){var x=UE.htmlparser(h.innerHTML);x.traversal(function(a){"text"==a.type&&(a.data=e(a.data))}),h.innerHTML=x.toHtml()}if(i.bdc2sb){var x=UE.htmlparser(h.innerHTML);x.traversal(function(a){"text"==a.type&&(a.data=d(a.data))}),h.innerHTML=x.toHtml()}f&&(f.html=h.innerHTML)}function d(a){for(var b="",c=0;c=65281&&d<=65373?String.fromCharCode(a.charCodeAt(c)-65248):12288==d?String.fromCharCode(a.charCodeAt(c)-12288+32):a.charAt(c)}return b}function e(a){a=utils.html(a);for(var b="",c=0;c0?e.substring(e.indexOf(d.options.imagePath),e.length-1).replace(/"|\(|\)/gi,""):"none"!=e?e.replace(/url\("?|"?\)/gi,""):"";var g=' ",b.push(g)},aftersetcontent:function(){0==c&&b()}},inputRule:function(d){c=!1,utils.each(d.getNodesByTagName("p"),function(d){var e=d.getAttr("data-background");e&&(c=!0,b(a(e)),d.parentNode.removeChild(d))})},outputRule:function(a){var b=this,c=(utils.cssRule(e,b.document)||"").replace(/[\n\r]+/g,"").match(f);c&&a.appendChild(UE.uNode.createElement('


    '))},commands:{background:{execCommand:function(a,c){b(c)},queryCommandValue:function(){var b=this,c=(utils.cssRule(e,b.document)||"").replace(/[\n\r]+/g,"").match(f);return c?a(c[1]):null},notNeedUndo:!0}}}}),UE.commands.imagefloat={execCommand:function(a,b){var c=this,d=c.selection.getRange();if(!d.collapsed){var e=d.getClosedNode();if(e&&"IMG"==e.tagName)switch(b){case"left":case"right":case"none":for(var f,g,h,i=e.parentNode;dtd.$inline[i.tagName]||"A"==i.tagName;)i=i.parentNode;if(f=i,"P"==f.tagName&&"center"==domUtils.getStyle(f,"text-align")){if(!domUtils.isBody(f)&&1==domUtils.getChildCount(f,function(a){return!domUtils.isBr(a)&&!domUtils.isWhitespace(a)}))if(g=f.previousSibling,h=f.nextSibling,g&&h&&1==g.nodeType&&1==h.nodeType&&g.tagName==h.tagName&&domUtils.isBlockElm(g)){for(g.appendChild(f.firstChild);h.firstChild;)g.appendChild(h.firstChild);domUtils.remove(f),domUtils.remove(h)}else domUtils.setStyle(f,"text-align","");d.selectNode(e).select()}domUtils.setStyle(e,"float","none"==b?"":b),"none"==b&&domUtils.removeAttributes(e,"align");break;case"center":if("center"!=c.queryCommandValue("imagefloat")){for(i=e.parentNode,domUtils.setStyle(e,"float",""),domUtils.removeAttributes(e,"align"),f=e;i&&1==domUtils.getChildCount(i,function(a){return!domUtils.isBr(a)&&!domUtils.isWhitespace(a)})&&(dtd.$inline[i.tagName]||"A"==i.tagName);)f=i,i=i.parentNode;d.setStartBefore(f).setCursor(!1),i=c.document.createElement("div"),i.appendChild(f),domUtils.setStyle(f,"float",""),c.execCommand("insertHtml",'

    '+i.innerHTML+"

    "),f=c.document.getElementById("_img_parent_tmp"),f.removeAttribute("id"),f=f.firstChild,d.selectNode(f).select(),h=f.parentNode.nextSibling,h&&domUtils.isEmptyNode(h)&&domUtils.remove(h)}}}},queryCommandValue:function(){var a,b,c=this.selection.getRange();return c.collapsed?"none":(a=c.getClosedNode(),a&&1==a.nodeType&&"IMG"==a.tagName?(b=domUtils.getComputedStyle(a,"float")||a.getAttribute("align"),"none"==b&&(b="center"==domUtils.getComputedStyle(a.parentNode,"text-align")?"center":b),{left:1,right:1,center:1}[b]?b:"none"):"none")},queryCommandState:function(){var a,b=this.selection.getRange();return b.collapsed?-1:(a=b.getClosedNode(),a&&1==a.nodeType&&"IMG"==a.tagName?0:-1)}},UE.commands.insertimage={execCommand:function(a,b){function c(a){utils.each("width,height,border,hspace,vspace".split(","),function(b){a[b]&&(a[b]=parseInt(a[b],10)||0)}),utils.each("src,_src".split(","),function(b){a[b]&&(a[b]=utils.unhtmlForUrl(a[b]))}),utils.each("title,alt".split(","),function(b){a[b]&&(a[b]=utils.unhtml(a[b]))})}if(b=utils.isArray(b)?b:[b],b.length){var d=this,e=d.selection.getRange(),f=e.getClosedNode();if(d.fireEvent("beforeinsertimage",b)!==!0){if(!f||!/img/i.test(f.tagName)||"edui-faked-video"==f.className&&f.className.indexOf("edui-upload-video")==-1||f.getAttribute("word_img")){var g,h=[],i="";if(g=b[0],1==b.length)c(g),i=''+g.alt+'","center"==g.floatStyle&&(i='

    '+i+"

    "),h.push(i);else for(var j=0;g=b[j++];)c(g),i="

    ",h.push(i);d.execCommand("insertHtml",h.join(""))}else{var k=b.shift(),l=k.floatStyle;delete k.floatStyle,domUtils.setAttributes(f,k),d.execCommand("imagefloat",l),b.length>0&&(e.setStartAfter(f).setCursor(!1,!0),d.execCommand("insertimage",b))}d.fireEvent("afterinsertimage",b)}}}},UE.plugins.justify=function(){var a=domUtils.isBlockElm,b={left:1,right:1,center:1,justify:1},c=function(b,c){var d=b.createBookmark(),e=function(a){return 1==a.nodeType?"br"!=a.tagName.toLowerCase()&&!domUtils.isBookmarkNode(a):!domUtils.isWhitespace(a)};b.enlarge(!0);for(var f,g=b.createBookmark(),h=domUtils.getNextDomNode(g.start,!1,e),i=b.cloneRange();h&&!(domUtils.getPosition(h,g.end)&domUtils.POSITION_FOLLOWING);)if(3!=h.nodeType&&a(h))h=domUtils.getNextDomNode(h,!0,e);else{for(i.setStartBefore(h);h&&h!==g.end&&!a(h);)f=h,h=domUtils.getNextDomNode(h,!1,null,function(b){return!a(b)});i.setEndAfter(f);var j=i.getCommonAncestor();if(!domUtils.isBody(j)&&a(j))domUtils.setStyles(j,utils.isString(c)?{"text-align":c}:c),h=j;else{var k=b.document.createElement("p");domUtils.setStyles(k,utils.isString(c)?{"text-align":c}:c);var l=i.extractContents();k.appendChild(l),i.insertNode(k),h=k}h=domUtils.getNextDomNode(h,!1,e)}return b.moveToBookmark(g).moveToBookmark(d)};UE.commands.justify={execCommand:function(a,b){var d,e=this.selection.getRange();return e.collapsed&&(d=this.document.createTextNode("p"),e.insertNode(d)),c(e,b),d&&(e.setStartBefore(d).collapse(!0),domUtils.remove(d)),e.select(),!0},queryCommandValue:function(){var a=this.selection.getStart(),c=domUtils.getComputedStyle(a,"text-align");return b[c]?c:"left"},queryCommandState:function(){var a=this.selection.getStart(),b=a&&domUtils.findParentByTagName(a,["td","th","caption"],!0);return b?-1:0}}},UE.plugins.font=function(){function a(a){for(var b;(b=a.parentNode)&&"SPAN"==b.tagName&&1==domUtils.getChildCount(b,function(a){return!domUtils.isBookmarkNode(a)&&!domUtils.isBr(a)});)b.style.cssText+=a.style.cssText,domUtils.remove(a,!0),a=b}function b(a,b,c){if(g[b]&&(a.adjustmentBoundary(),!a.collapsed&&1==a.startContainer.nodeType)){var d=a.startContainer.childNodes[a.startOffset];if(d&&domUtils.isTagNode(d,"span")){var e=a.createBookmark();utils.each(domUtils.getElementsByTagName(d,"span"),function(a){a.parentNode&&!domUtils.isBookmarkNode(a)&&("backcolor"==b&&domUtils.getComputedStyle(a,"background-color").toLowerCase()===c||(domUtils.removeStyle(a,g[b]),0==a.style.cssText.replace(/^\s+$/,"").length&&domUtils.remove(a,!0)))}),a.moveToBookmark(e)}}}function c(c,d,e){var f,g=c.collapsed,h=c.createBookmark();if(g)for(f=h.start.parentNode;dtd.$inline[f.tagName];)f=f.parentNode;else f=domUtils.getCommonAncestor(h.start,h.end);utils.each(domUtils.getElementsByTagName(f,"span"),function(b){if(b.parentNode&&!domUtils.isBookmarkNode(b)){if(/\s*border\s*:\s*none;?\s*/i.test(b.style.cssText))return void(/^\s*border\s*:\s*none;?\s*$/.test(b.style.cssText)?domUtils.remove(b,!0):domUtils.removeStyle(b,"border"));if(/border/i.test(b.style.cssText)&&"SPAN"==b.parentNode.tagName&&/border/i.test(b.parentNode.style.cssText)&&(b.style.cssText=b.style.cssText.replace(/border[^:]*:[^;]+;?/gi,"")),"fontborder"!=d||"none"!=e)for(var c=b.nextSibling;c&&1==c.nodeType&&"SPAN"==c.tagName;)if(domUtils.isBookmarkNode(c)&&"fontborder"==d)b.appendChild(c),c=b.nextSibling;else{if(c.style.cssText==b.style.cssText&&(domUtils.moveChild(c,b),domUtils.remove(c)),b.nextSibling===c)break;c=b.nextSibling}if(a(b),browser.ie&&browser.version>8){var f=domUtils.findParent(b,function(a){return"SPAN"==a.tagName&&/background-color/.test(a.style.cssText)});f&&!/background-color/.test(b.style.cssText)&&(b.style.backgroundColor=f.style.backgroundColor)}}}),c.moveToBookmark(h),b(c,d,e)}var d=this,e={forecolor:"color",backcolor:"background-color",fontsize:"font-size",fontfamily:"font-family",underline:"text-decoration",strikethrough:"text-decoration",fontborder:"border"},f={underline:1,strikethrough:1,fontborder:1},g={forecolor:"color",backcolor:"background-color",fontsize:"font-size",fontfamily:"font-family"};d.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]}),d.addInputRule(function(a){utils.each(a.getNodesByTagName("u s del font strike"),function(a){if("font"==a.tagName){var b=[];for(var c in a.attrs)switch(c){case"size":b.push("font-size:"+({1:"10",2:"12",3:"16",4:"18",5:"24",6:"32",7:"48"}[a.attrs[c]]||a.attrs[c])+"px");break;case"color":b.push("color:"+a.attrs[c]);break;case"face":b.push("font-family:"+a.attrs[c]);break;case"style":b.push(a.attrs[c])}a.attrs={style:b.join(";")}}else{var d="u"==a.tagName?"underline":"line-through";a.attrs={style:(a.getAttr("style")||"")+"text-decoration:"+d+";"}}a.tagName="span"})});for(var h in e)!function(a,b){UE.commands[a]={execCommand:function(d,e){e=e||(this.queryCommandState(d)?"none":"underline"==d?"underline":"fontborder"==d?"1px solid #000":"line-through");var g,h=this,i=this.selection.getRange();if("default"==e)i.collapsed&&(g=h.document.createTextNode("font"),i.insertNode(g).select()),h.execCommand("removeFormat","span,a",b),g&&(i.setStartBefore(g).collapse(!0),domUtils.remove(g)),c(i,d,e),i.select();else if(i.collapsed){var j=domUtils.findParentByTagName(i.startContainer,"span",!0);if(g=h.document.createTextNode("font"),!j||j.children.length||j[browser.ie?"innerText":"textContent"].replace(fillCharReg,"").length){if(i.insertNode(g),i.selectNode(g).select(),j=i.document.createElement("span"),f[a]){if(domUtils.findParentByTagName(g,"a",!0))return i.setStartBefore(g).setCursor(),void domUtils.remove(g);h.execCommand("removeFormat","span,a",b)}if(j.style.cssText=b+":"+e,g.parentNode.insertBefore(j,g),!browser.ie||browser.ie&&9==browser.version)for(var k=j.parentNode;!domUtils.isBlockElm(k);)"SPAN"==k.tagName&&(j.style.cssText=k.style.cssText+";"+j.style.cssText),k=k.parentNode;opera?setTimeout(function(){i.setStart(j,0).collapse(!0),c(i,d,e),i.select()}):(i.setStart(j,0).collapse(!0),c(i,d,e),i.select())}else i.insertNode(g),f[a]&&(i.selectNode(g).select(),h.execCommand("removeFormat","span,a",b,null),j=domUtils.findParentByTagName(g,"span",!0),i.setStartBefore(g)),j&&(j.style.cssText+=";"+b+":"+e),i.collapse(!0).select();domUtils.remove(g)}else f[a]&&h.queryCommandValue(a)&&h.execCommand("removeFormat","span,a",b),i=h.selection.getRange(),i.applyInlineStyle("span",{style:b+":"+e}),c(i,d,e),i.select();return!0},queryCommandValue:function(a){var c=this.selection.getStart();if("underline"==a||"strikethrough"==a){for(var d,e=c;e&&!domUtils.isBlockElm(e)&&!domUtils.isBody(e);){if(1==e.nodeType&&(d=domUtils.getComputedStyle(e,b),"none"!=d))return d;e=e.parentNode}return"none"}if("fontborder"==a){for(var f,g=c;g&&dtd.$inline[g.tagName];){if((f=domUtils.getComputedStyle(g,"border"))&&/1px/.test(f)&&/solid/.test(f))return f;g=g.parentNode}return""}if("FontSize"==a){var h=domUtils.getComputedStyle(c,b),g=/^([\d\.]+)(\w+)$/.exec(h);return g?Math.floor(g[1])+g[2]:h}return domUtils.getComputedStyle(c,b)},queryCommandState:function(a){if(!f[a])return 0;var b=this.queryCommandValue(a);return"fontborder"==a?/1px/.test(b)&&/solid/.test(b):"underline"==a?/underline/.test(b):/line\-through/.test(b)}}}(h,e[h])},UE.plugins.link=function(){function a(a){var b=a.startContainer,c=a.endContainer;(b=domUtils.findParentByTagName(b,"a",!0))&&a.setStartBefore(b),(c=domUtils.findParentByTagName(c,"a",!0))&&a.setEndAfter(c)}function b(b,c,d){var e=b.cloneRange(),f=d.queryCommandValue("link");a(b=b.adjustmentBoundary());var g=b.startContainer;if(1==g.nodeType&&f&&(g=g.childNodes[b.startOffset],g&&1==g.nodeType&&"A"==g.tagName&&/^(?:https?|ftp|file)\s*:\s*\/\//.test(g[browser.ie?"innerText":"textContent"])&&(g[browser.ie?"innerText":"textContent"]=utils.html(c.textValue||c.href))),e.collapsed&&!f||(b.removeInlineStyle("a"),e=b.cloneRange()),e.collapsed){var h=b.document.createElement("a"),i="";c.textValue?(i=utils.html(c.textValue),delete c.textValue):i=utils.html(c.href),domUtils.setAttributes(h,c),g=domUtils.findParentByTagName(e.startContainer,"a",!0),g&&domUtils.isInNodeEndBoundary(e,g)&&b.setStartAfter(g).collapse(!0),h[browser.ie?"innerText":"textContent"]=i,b.insertNode(h).selectNode(h)}else b.applyInlineStyle("a",c)}UE.commands.unlink={execCommand:function(){var b,c=this.selection.getRange();c.collapsed&&!domUtils.findParentByTagName(c.startContainer,"a",!0)||(b=c.createBookmark(),a(c),c.removeInlineStyle("a").moveToBookmark(b).select())},queryCommandState:function(){return!this.highlight&&this.queryCommandValue("link")?0:-1}},UE.commands.link={execCommand:function(a,c){var d;c._href&&(c._href=utils.unhtml(c._href,/[<">]/g)),c.href&&(c.href=utils.unhtml(c.href,/[<">]/g)),c.textValue&&(c.textValue=utils.unhtml(c.textValue,/[<">]/g)),b(d=this.selection.getRange(),c,this),d.collapse().select(!0)},queryCommandValue:function(){var a,b=this.selection.getRange();if(!b.collapsed){b.shrinkBoundary();var c=3!=b.startContainer.nodeType&&b.startContainer.childNodes[b.startOffset]?b.startContainer.childNodes[b.startOffset]:b.startContainer,d=3==b.endContainer.nodeType||0==b.endOffset?b.endContainer:b.endContainer.childNodes[b.endOffset-1],e=b.getCommonAncestor();if(a=domUtils.findParentByTagName(e,"a",!0),!a&&1==e.nodeType)for(var f,g,h,i=e.getElementsByTagName("a"),j=0;h=i[j++];)if(f=domUtils.getPosition(h,c),g=domUtils.getPosition(h,d),(f&domUtils.POSITION_FOLLOWING||f&domUtils.POSITION_CONTAINS)&&(g&domUtils.POSITION_PRECEDING||g&domUtils.POSITION_CONTAINS)){a=h;break}return a}if(a=b.startContainer,a=1==a.nodeType?a:a.parentNode,a&&(a=domUtils.findParentByTagName(a,"a",!0))&&!domUtils.isInNodeEndBoundary(b,a))return a},queryCommandState:function(){var a=this.selection.getRange().getClosedNode(),b=a&&("edui-faked-video"==a.className||a.className.indexOf("edui-upload-video")!=-1);return b?-1:0}}},UE.plugins.insertframe=function(){function a(){b._iframe&&delete b._iframe}var b=this;b.addListener("selectionchange",function(){a()})},UE.commands.scrawl={queryCommandState:function(){return browser.ie&&browser.version<=8?-1:0}},UE.plugins.removeformat=function(){var a=this;a.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"}),a.commands.removeformat={execCommand:function(a,b,c,d,e){function f(a){if(3==a.nodeType||"span"!=a.tagName.toLowerCase())return 0;if(browser.ie){var b=a.attributes;if(b.length){for(var c=0,d=b.length;c
    "+this.getContent(null,null,!0)+"
    "),b.close()},notNeedUndo:1},UE.plugins.selectall=function(){var a=this;a.commands.selectall={execCommand:function(){var a=this,b=a.body,c=a.selection.getRange();c.selectNodeContents(b),domUtils.isEmptyBlock(b)&&(browser.opera&&b.firstChild&&1==b.firstChild.nodeType&&c.setStartAtFirst(b.firstChild),c.collapse(!0)),c.select(!0)},notNeedUndo:1},a.addshortcutkey({selectAll:"ctrl+65"})},UE.plugins.paragraph=function(){var a=this,b=domUtils.isBlockElm,c=["TD","LI","PRE"],d=function(a,d,e,f){var g,h=a.createBookmark(),i=function(a){return 1==a.nodeType?"br"!=a.tagName.toLowerCase()&&!domUtils.isBookmarkNode(a):!domUtils.isWhitespace(a)};a.enlarge(!0);for(var j,k=a.createBookmark(),l=domUtils.getNextDomNode(k.start,!1,i),m=a.cloneRange();l&&!(domUtils.getPosition(l,k.end)&domUtils.POSITION_FOLLOWING);)if(3!=l.nodeType&&b(l))l=domUtils.getNextDomNode(l,!0,i);else{for(m.setStartBefore(l);l&&l!==k.end&&!b(l);)j=l,l=domUtils.getNextDomNode(l,!1,null,function(a){return!b(a)});m.setEndAfter(j),g=a.document.createElement(d),e&&(domUtils.setAttributes(g,e),f&&"customstyle"==f&&e.style&&(g.style.cssText=e.style)),g.appendChild(m.extractContents()),domUtils.isEmptyNode(g)&&domUtils.fillChar(a.document,g),m.insertNode(g);var n=g.parentNode;b(n)&&!domUtils.isBody(g.parentNode)&&utils.indexOf(c,n.tagName)==-1&&(f&&"customstyle"==f||(n.getAttribute("dir")&&g.setAttribute("dir",n.getAttribute("dir")),n.style.cssText&&(g.style.cssText=n.style.cssText+";"+g.style.cssText),n.style.textAlign&&!g.style.textAlign&&(g.style.textAlign=n.style.textAlign),n.style.textIndent&&!g.style.textIndent&&(g.style.textIndent=n.style.textIndent),n.style.padding&&!g.style.padding&&(g.style.padding=n.style.padding)),e&&/h\d/i.test(n.tagName)&&!/h\d/i.test(g.tagName)?(domUtils.setAttributes(n,e),f&&"customstyle"==f&&e.style&&(n.style.cssText=e.style),domUtils.remove(g,!0),g=n):domUtils.remove(g.parentNode,!0)),l=utils.indexOf(c,n.tagName)!=-1?n:g,l=domUtils.getNextDomNode(l,!1,i)}return a.moveToBookmark(k).moveToBookmark(h)};a.setOpt("paragraph",{p:"",h1:"",h2:"",h3:"",h4:"",h5:"",h6:""}),a.commands.paragraph={execCommand:function(a,b,c,e){var f=this.selection.getRange();if(f.collapsed){var g=this.document.createTextNode("p");if(f.insertNode(g),browser.ie){var h=g.previousSibling;h&&domUtils.isWhitespace(h)&&domUtils.remove(h),h=g.nextSibling,h&&domUtils.isWhitespace(h)&&domUtils.remove(h)}}if(f=d(f,b,c,e),g&&(f.setStartBefore(g).collapse(!0),pN=g.parentNode,domUtils.remove(g),domUtils.isBlockElm(pN)&&domUtils.isEmptyNode(pN)&&domUtils.fillNode(this.document,pN)),browser.gecko&&f.collapsed&&1==f.startContainer.nodeType){var i=f.startContainer.childNodes[f.startOffset];i&&1==i.nodeType&&i.tagName.toLowerCase()==b&&f.setStart(i,0).collapse(!0)}return f.select(),!0},queryCommandValue:function(){var a=domUtils.filterNodeList(this.selection.getStartElementPath(),"p h1 h2 h3 h4 h5 h6");return a?a.tagName.toLowerCase():""}}},function(){var a=domUtils.isBlockElm,b=function(a){return domUtils.filterNodeList(a.selection.getStartElementPath(),function(a){return a&&1==a.nodeType&&a.getAttribute("dir")})},c=function(c,d,e){var f,g=function(a){return 1==a.nodeType?!domUtils.isBookmarkNode(a):!domUtils.isWhitespace(a)},h=b(d);if(h&&c.collapsed)return h.setAttribute("dir",e),c;f=c.createBookmark(),c.enlarge(!0);for(var i,j=c.createBookmark(),k=domUtils.getNextDomNode(j.start,!1,g),l=c.cloneRange();k&&!(domUtils.getPosition(k,j.end)&domUtils.POSITION_FOLLOWING);)if(3!=k.nodeType&&a(k))k=domUtils.getNextDomNode(k,!0,g);else{for(l.setStartBefore(k);k&&k!==j.end&&!a(k);)i=k,k=domUtils.getNextDomNode(k,!1,null,function(b){return!a(b)});l.setEndAfter(i);var m=l.getCommonAncestor();if(!domUtils.isBody(m)&&a(m))m.setAttribute("dir",e),k=m;else{var n=c.document.createElement("p");n.setAttribute("dir",e);var o=l.extractContents();n.appendChild(o),l.insertNode(n),k=n}k=domUtils.getNextDomNode(k,!1,g)}return c.moveToBookmark(j).moveToBookmark(f)};UE.commands.directionality={execCommand:function(a,b){var d=this.selection.getRange();if(d.collapsed){var e=this.document.createTextNode("d");d.insertNode(e)}return c(d,this,b),e&&(d.setStartBefore(e).collapse(!0),domUtils.remove(e)),d.select(),!0},queryCommandValue:function(){var a=b(this);return a?a.getAttribute("dir"):"ltr"}}}(),UE.plugins.horizontal=function(){var a=this;a.commands.horizontal={execCommand:function(a){var b=this;if(b.queryCommandState(a)!==-1){b.execCommand("insertHtml","
    ");var c=b.selection.getRange(),d=c.startContainer;if(1==d.nodeType&&!d.childNodes[c.startOffset]){var e;(e=d.childNodes[c.startOffset-1])&&1==e.nodeType&&"HR"==e.tagName&&("p"==b.options.enterTag?(e=b.document.createElement("p"),c.insertNode(e),c.setStart(e,0).setCursor()):(e=b.document.createElement("br"),c.insertNode(e),c.setStartBefore(e).setCursor()))}return!0}},queryCommandState:function(){return domUtils.filterNodeList(this.selection.getStartElementPath(),"table")?-1:0}},a.addListener("delkeydown",function(a,b){var c=this.selection.getRange();if(c.txtToElmBoundary(!0),domUtils.isStartInblock(c)){var d=c.startContainer,e=d.previousSibling;if(e&&domUtils.isTagNode(e,"hr"))return domUtils.remove(e),c.select(),domUtils.preventDefault(b),!0}})},UE.commands.time=UE.commands.date={execCommand:function(a,b){function c(a,b){var c=("0"+a.getHours()).slice(-2),d=("0"+a.getMinutes()).slice(-2),e=("0"+a.getSeconds()).slice(-2);return b=b||"hh:ii:ss",b.replace(/hh/gi,c).replace(/ii/gi,d).replace(/ss/gi,e)}function d(a,b){var c=("000"+a.getFullYear()).slice(-4),d=c.slice(-2),e=("0"+(a.getMonth()+1)).slice(-2),f=("0"+a.getDate()).slice(-2);return b=b||"yyyy-mm-dd",b.replace(/yyyy/gi,c).replace(/yy/gi,d).replace(/mm/gi,e).replace(/dd/gi,f)}var e=new Date;this.execCommand("insertHtml","time"==a?c(e,b):d(e,b))}},UE.plugins.rowspacing=function(){var a=this;a.setOpt({rowspacingtop:["5","10","15","20","25"],rowspacingbottom:["5","10","15","20","25"]}),a.commands.rowspacing={execCommand:function(a,b,c){return this.execCommand("paragraph","p",{style:"margin-"+c+":"+b+"px"}),!0},queryCommandValue:function(a,b){var c,d=domUtils.filterNodeList(this.selection.getStartElementPath(),function(a){return domUtils.isBlockElm(a)});return d?(c=domUtils.getComputedStyle(d,"margin-"+b).replace(/[^\d]/g,""),c?c:0):0}}},UE.plugins.lineheight=function(){var a=this;a.setOpt({lineheight:["1","1.5","1.75","2","3","4","5"]}),a.commands.lineheight={execCommand:function(a,b){return this.execCommand("paragraph","p",{style:"line-height:"+("1"==b?"normal":b+"em")}),!0},queryCommandValue:function(){var a=domUtils.filterNodeList(this.selection.getStartElementPath(),function(a){return domUtils.isBlockElm(a)});if(a){var b=domUtils.getComputedStyle(a,"line-height");return"normal"==b?1:b.replace(/[^\d.]*/gi,"")}}}},UE.plugins.insertcode=function(){var a=this;a.ready(function(){utils.cssRule("pre","pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}",a.document)}),a.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"}),a.commands.insertcode={execCommand:function(a,b){var c=this,d=c.selection.getRange(),e=domUtils.findParentByTagName(d.startContainer,"pre",!0);if(e)e.className="brush:"+b+";toolbar:false;";else{var f="";if(d.collapsed)f=browser.ie&&browser.ie11below?browser.version<=8?" ":"":"
    ";else{var g=d.extractContents(),h=c.document.createElement("div");h.appendChild(g),utils.each(UE.filterNode(UE.htmlparser(h.innerHTML.replace(/[\r\t]/g,"")),c.options.filterTxtRules).children,function(a){if(browser.ie&&browser.ie11below&&browser.version>8)"element"==a.type?"br"==a.tagName?f+="\n":dtd.$empty[a.tagName]||(utils.each(a.children,function(b){"element"==b.type?"br"==b.tagName?f+="\n":dtd.$empty[a.tagName]||(f+=b.innerText()):f+=b.data}),/\n$/.test(f)||(f+="\n")):f+=a.data+"\n",!a.nextSibling()&&/\n$/.test(f)&&(f=f.replace(/\n$/,""));else if(browser.ie&&browser.ie11below)"element"==a.type?"br"==a.tagName?f+="
    ":dtd.$empty[a.tagName]||(utils.each(a.children,function(b){"element"==b.type?"br"==b.tagName?f+="
    ":dtd.$empty[a.tagName]||(f+=b.innerText()):f+=b.data}),/br>$/.test(f)||(f+="
    ")):f+=a.data+"
    ",!a.nextSibling()&&/
    $/.test(f)&&(f=f.replace(/
    $/,""));else if(f+="element"==a.type?dtd.$empty[a.tagName]?"":a.innerText():a.data,!/br\/?\s*>$/.test(f)){if(!a.nextSibling())return;f+="
    "}})}c.execCommand("inserthtml",'
    '+f+"
    ",!0),e=c.document.getElementById("coder"),domUtils.removeAttributes(e,"id");var i=e.previousSibling;i&&(3==i.nodeType&&1==i.nodeValue.length&&browser.ie&&6==browser.version||domUtils.isEmptyBlock(i))&&domUtils.remove(i);var d=c.selection.getRange();domUtils.isEmptyBlock(e)?d.setStart(e,0).setCursor(!1,!0):d.selectNodeContents(e).select()}},queryCommandValue:function(){var a=this.selection.getStartElementPath(),b="";return utils.each(a,function(a){if("PRE"==a.nodeName){var c=a.className.match(/brush:([^;]+)/);return b=c&&c[1]?c[1]:"",!1}}),b}},a.addInputRule(function(a){utils.each(a.getNodesByTagName("pre"),function(a){var b=a.getNodesByTagName("br");if(b.length)return void(browser.ie&&browser.ie11below&&browser.version>8&&utils.each(b,function(a){var b=UE.uNode.createText("\n");a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a)}));if(!(browser.ie&&browser.ie11below&&browser.version>8)){var c=a.innerText().split(/\n/);a.innerHTML(""),utils.each(c,function(b){b.length&&a.appendChild(UE.uNode.createText(b)),a.appendChild(UE.uNode.createElement("br"))})}})}),a.addOutputRule(function(a){utils.each(a.getNodesByTagName("pre"),function(a){var b="";utils.each(a.children,function(a){b+="text"==a.type?a.data.replace(/[ ]/g," ").replace(/\n$/,""):"br"==a.tagName?"\n":dtd.$empty[a.tagName]?a.innerText():""}),a.innerText(b.replace(/( |\n)+$/,""))})}),a.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};a.queryCommandState;a.queryCommandState=function(a){var b=this;return!b.notNeedCodeQuery[a.toLowerCase()]&&b.selection&&b.queryCommandValue("insertcode")?-1:UE.Editor.prototype.queryCommandState.apply(this,arguments)},a.addListener("beforeenterkeydown",function(){var b=a.selection.getRange(),c=domUtils.findParentByTagName(b.startContainer,"pre",!0);if(c){if(a.fireEvent("saveScene"),b.collapsed||b.deleteContents(),!browser.ie||browser.ie9above){var c,d=a.document.createElement("br");b.insertNode(d).setStartAfter(d).collapse(!0); +var e=d.nextSibling;e||browser.ie&&!(browser.version>10)?b.setStartAfter(d):b.insertNode(d.cloneNode(!1)),c=d.previousSibling;for(var f;c;)if(f=c,c=c.previousSibling,!c||"BR"==c.nodeName){c=f;break}if(c){for(var g="";c&&"BR"!=c.nodeName&&new RegExp("^[\\s"+domUtils.fillChar+"]*$").test(c.nodeValue);)g+=c.nodeValue,c=c.nextSibling;if("BR"!=c.nodeName){var h=c.nodeValue.match(new RegExp("^([\\s"+domUtils.fillChar+"]+)"));h&&h[1]&&(g+=h[1])}g&&(g=a.document.createTextNode(g),b.insertNode(g).setStartAfter(g))}b.collapse(!0).select(!0)}else if(browser.version>8){var i=a.document.createTextNode("\n"),j=b.startContainer;if(0==b.startOffset){var k=j.previousSibling;if(k){b.insertNode(i);var l=a.document.createTextNode(" ");b.setStartAfter(i).insertNode(l).setStart(l,0).collapse(!0).select(!0)}}else{b.insertNode(i).setStartAfter(i);var l=a.document.createTextNode(" ");j=b.startContainer.childNodes[b.startOffset],j&&!/^\n/.test(j.nodeValue)&&b.setStartBefore(i),b.insertNode(l).setStart(l,0).collapse(!0).select(!0)}}else{var d=a.document.createElement("br");b.insertNode(d),b.insertNode(a.document.createTextNode(domUtils.fillChar)),b.setStartAfter(d),c=d.previousSibling;for(var f;c;)if(f=c,c=c.previousSibling,!c||"BR"==c.nodeName){c=f;break}if(c){for(var g="";c&&"BR"!=c.nodeName&&new RegExp("^[ "+domUtils.fillChar+"]*$").test(c.nodeValue);)g+=c.nodeValue,c=c.nextSibling;if("BR"!=c.nodeName){var h=c.nodeValue.match(new RegExp("^([ "+domUtils.fillChar+"]+)"));h&&h[1]&&(g+=h[1])}g=a.document.createTextNode(g),b.insertNode(g).setStartAfter(g)}b.collapse(!0).select()}return a.fireEvent("saveScene"),!0}}),a.addListener("tabkeydown",function(b,c){var d=a.selection.getRange(),e=domUtils.findParentByTagName(d.startContainer,"pre",!0);if(e){if(a.fireEvent("saveScene"),c.shiftKey);else if(d.collapsed){var f=a.document.createTextNode(" ");d.insertNode(f).setStartAfter(f).collapse(!0).select(!0)}else{for(var g=d.createBookmark(),h=g.start.previousSibling;h;){if(e.firstChild===h&&!domUtils.isBr(h)){e.insertBefore(a.document.createTextNode(" "),h);break}if(domUtils.isBr(h)){e.insertBefore(a.document.createTextNode(" "),h.nextSibling);break}h=h.previousSibling}var i=g.end;for(h=g.start.nextSibling,e.firstChild===g.start&&e.insertBefore(a.document.createTextNode(" "),h.nextSibling);h&&h!==i;){if(domUtils.isBr(h)&&h.nextSibling){if(h.nextSibling===i)break;e.insertBefore(a.document.createTextNode(" "),h.nextSibling)}h=h.nextSibling}d.moveToBookmark(g).select()}return a.fireEvent("saveScene"),!0}}),a.addListener("beforeinserthtml",function(a,b){var c=this,d=c.selection.getRange(),e=domUtils.findParentByTagName(d.startContainer,"pre",!0);if(e){d.collapsed||d.deleteContents();var f="";if(browser.ie&&browser.version>8){utils.each(UE.filterNode(UE.htmlparser(b),c.options.filterTxtRules).children,function(a){"element"==a.type?"br"==a.tagName?f+="\n":dtd.$empty[a.tagName]||(utils.each(a.children,function(b){"element"==b.type?"br"==b.tagName?f+="\n":dtd.$empty[a.tagName]||(f+=b.innerText()):f+=b.data}),/\n$/.test(f)||(f+="\n")):f+=a.data+"\n",!a.nextSibling()&&/\n$/.test(f)&&(f=f.replace(/\n$/,""))});var g=c.document.createTextNode(utils.html(f.replace(/ /g," ")));d.insertNode(g).selectNode(g).select()}else{var h=c.document.createDocumentFragment();utils.each(UE.filterNode(UE.htmlparser(b),c.options.filterTxtRules).children,function(a){"element"==a.type?"br"==a.tagName?h.appendChild(c.document.createElement("br")):dtd.$empty[a.tagName]||(utils.each(a.children,function(b){"element"==b.type?"br"==b.tagName?h.appendChild(c.document.createElement("br")):dtd.$empty[a.tagName]||h.appendChild(c.document.createTextNode(utils.html(b.innerText().replace(/ /g," ")))):h.appendChild(c.document.createTextNode(utils.html(b.data.replace(/ /g," "))))}),"BR"!=h.lastChild.nodeName&&h.appendChild(c.document.createElement("br"))):h.appendChild(c.document.createTextNode(utils.html(a.data.replace(/ /g," ")))),a.nextSibling()||"BR"!=h.lastChild.nodeName||h.removeChild(h.lastChild)}),d.insertNode(h).select()}return!0}}),a.addListener("keydown",function(a,b){var c=this,d=b.keyCode||b.which;if(40==d){var e,f=c.selection.getRange(),g=f.startContainer;if(f.collapsed&&(e=domUtils.findParentByTagName(f.startContainer,"pre",!0))&&!e.nextSibling){for(var h=e.lastChild;h&&"BR"==h.nodeName;)h=h.previousSibling;(h===g||f.startContainer===e&&f.startOffset==e.childNodes.length)&&(c.execCommand("insertparagraph"),domUtils.preventDefault(b))}}}),a.addListener("delkeydown",function(b,c){var d=this.selection.getRange();d.txtToElmBoundary(!0);var e=d.startContainer;if(domUtils.isTagNode(e,"pre")&&d.collapsed&&domUtils.isStartInblock(d)){var f=a.document.createElement("p");return domUtils.fillNode(a.document,f),e.parentNode.insertBefore(f,e),domUtils.remove(e),d.setStart(f,0).setCursor(!1,!0),domUtils.preventDefault(c),!0}})},UE.commands.cleardoc={execCommand:function(a){var b=this,c=b.options.enterTag,d=b.selection.getRange();"br"==c?(b.body.innerHTML="
    ",d.setStart(b.body,0).setCursor()):(b.body.innerHTML="

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

    ",d.setStart(b.body.firstChild,0).setCursor(!1,!0)),setTimeout(function(){b.fireEvent("clearDoc")},0)}},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(a){utils.each(a.getNodesByTagName("img"),function(a){var b;(b=a.getAttr("anchorname"))&&(a.tagName="a",a.setAttr({anchorname:"",name:b,"class":""}))})},inputRule:function(a){utils.each(a.getNodesByTagName("a"),function(a){var b;(b=a.getAttr("name"))&&!a.getAttr("href")&&(a.tagName="img",a.setAttr({anchorname:a.getAttr("name"),"class":"anchorclass"}),a.setAttr("name"))})},commands:{anchor:{execCommand:function(a,b){var c=this.selection.getRange(),d=c.getClosedNode();if(d&&d.getAttribute("anchorname"))b?d.setAttribute("anchorname",b):(c.setStartBefore(d).setCursor(),domUtils.remove(d));else if(b){var e=this.document.createElement("img");c.collapse(!0),domUtils.setAttributes(e,{anchorname:b,"class":"anchorclass"}),c.insertNode(e).setStartAfter(e).setCursor(!1,!0)}}}}}}),UE.plugins.wordcount=function(){var a=this;a.setOpt("wordCount",!0),a.addListener("contentchange",function(){a.fireEvent("wordcount")});var b;a.addListener("ready",function(){var a=this;domUtils.on(a.body,"keyup",function(c){var d=c.keyCode||c.which,e={16:1,18:1,20:1,37:1,38:1,39:1,40:1};d in e||(clearTimeout(b),b=setTimeout(function(){a.fireEvent("wordcount")},200))})})},UE.plugins.pagebreak=function(){function a(a){if(domUtils.isEmptyBlock(a)){for(var b,d=a.firstChild;d&&1==d.nodeType&&domUtils.isEmptyBlock(d);)b=d,d=d.firstChild;!b&&(b=a),domUtils.fillNode(c.document,b)}}function b(a){return a&&1==a.nodeType&&"HR"==a.tagName&&"pagebreak"==a.className}var c=this,d=["td"];c.setOpt("pageBreakTag","_ueditor_page_break_tag_"),c.ready(function(){utils.cssRule("pagebreak",".pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}",c.document)}),c.addInputRule(function(a){a.traversal(function(a){if("text"==a.type&&a.data==c.options.pageBreakTag){var b=UE.uNode.createElement('
    ');a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a)}})}),c.addOutputRule(function(a){utils.each(a.getNodesByTagName("hr"),function(a){if("pagebreak"==a.getAttr("class")){var b=UE.uNode.createText(c.options.pageBreakTag);a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a)}})}),c.commands.pagebreak={execCommand:function(){var e=c.selection.getRange(),f=c.document.createElement("hr");domUtils.setAttributes(f,{"class":"pagebreak",noshade:"noshade",size:"5"}),domUtils.unSelectable(f);var g,h=domUtils.findParentByTagName(e.startContainer,d,!0),i=[];if(h)switch(h.tagName){case"TD":if(g=h.parentNode,g.previousSibling)g.parentNode.insertBefore(f,g),i=domUtils.findParents(f);else{var j=domUtils.findParentByTagName(g,"table");j.parentNode.insertBefore(f,j),i=domUtils.findParents(f,!0)}g=i[1],f!==g&&domUtils.breakParent(f,g),c.fireEvent("afteradjusttable",c.document)}else{if(!e.collapsed){e.deleteContents();for(var k=e.startContainer;!domUtils.isBody(k)&&domUtils.isBlockElm(k)&&domUtils.isEmptyNode(k);)e.setStartBefore(k).collapse(!0),domUtils.remove(k),k=e.startContainer}e.insertNode(f);for(var l,g=f.parentNode;!domUtils.isBody(g);)domUtils.breakParent(f,g),l=f.nextSibling,l&&domUtils.isEmptyBlock(l)&&domUtils.remove(l),g=f.parentNode;l=f.nextSibling;var m=f.previousSibling;if(b(m)?domUtils.remove(m):m&&a(m),l)b(l)?domUtils.remove(l):a(l),e.setEndAfter(f).collapse(!1);else{var n=c.document.createElement("p");f.parentNode.appendChild(n),domUtils.fillNode(c.document,n),e.setStart(n,0).collapse(!0)}e.select(!0)}}}},UE.plugin.register("wordimage",function(){var a=this,b=[];return{commands:{wordimage:{execCommand:function(){for(var b,c=domUtils.getElementsByTagName(a.body,"img"),d=[],e=0;b=c[e++];){var f=b.getAttribute("word_img");f&&d.push(f)}return d},queryCommandState:function(){b=domUtils.getElementsByTagName(a.body,"img");for(var c,d=0;c=b[d++];)if(c.getAttribute("word_img"))return 1;return-1},notNeedUndo:!0}},inputRule:function(b){utils.each(b.getNodesByTagName("img"),function(b){var c=b.attrs,d=parseInt(c.width)<128||parseInt(c.height)<43,e=a.options,f=e.UEDITOR_HOME_URL+"themes/default/images/spacer.gif";c.src&&/^(?:(file:\/+))/.test(c.src)&&b.setAttr({width:c.width,height:c.height,alt:c.alt,word_img:c.src,src:f,style:"background:url("+(d?e.themePath+e.theme+"/images/word.gif":e.langPath+e.lang+"/images/localimage.png")+") no-repeat center center;border:1px solid #ddd"})})}}}),UE.plugins.dragdrop=function(){var a=this;a.ready(function(){domUtils.on(this.body,"dragend",function(){var b=a.selection.getRange(),c=b.getClosedNode()||a.selection.getStart();if(c&&"IMG"==c.tagName){for(var d,e=c.previousSibling;(d=c.nextSibling)&&1==d.nodeType&&"SPAN"==d.tagName&&!d.firstChild;)domUtils.remove(d);(!e||1!=e.nodeType||domUtils.isEmptyBlock(e))&&e||d&&(!d||domUtils.isEmptyBlock(d))||(e&&"P"==e.tagName&&!domUtils.isEmptyBlock(e)?(e.appendChild(c),domUtils.moveChild(d,e),domUtils.remove(d)):d&&"P"==d.tagName&&!domUtils.isEmptyBlock(d)&&d.insertBefore(c,d.firstChild),e&&"P"==e.tagName&&domUtils.isEmptyBlock(e)&&domUtils.remove(e),d&&"P"==d.tagName&&domUtils.isEmptyBlock(d)&&domUtils.remove(d),b.selectNode(c).select(),a.fireEvent("saveScene"))}})}),a.addListener("keyup",function(b,c){var d=c.keyCode||c.which;if(13==d){var e,f=a.selection.getRange();(e=domUtils.findParentByTagName(f.startContainer,"p",!0))&&"center"==domUtils.getComputedStyle(e,"text-align")&&domUtils.removeStyle(e,"text-align")}})},UE.plugins.undo=function(){function a(a,b){if(a.length!=b.length)return 0;for(var c=0,d=a.length;cf&&this.list.shift(),this.index=this.list.length-1,this.clearKey(),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=!1,this.hasRedo=!1,this.clearKey()},this.clearKey=function(){m=0,k=null}}var d,e=this,f=e.options.maxUndoCount||20,g=e.options.maxInputCount||20,h=new RegExp(domUtils.fillChar+"|","gi"),i={ol:1,ul:1,table:1,tbody:1,tr:1,body:1},j=e.options.autoClearEmptyNode;e.undoManger=new c,e.undoManger.editor=e,e.addListener("saveScene",function(){var a=Array.prototype.splice.call(arguments,1);this.undoManger.save.apply(this.undoManger,a)}),e.addListener("reset",function(a,b){b||this.undoManger.reset()}),e.commands.redo=e.commands.undo={execCommand:function(a){this.undoManger[a]()},queryCommandState:function(a){return this.undoManger["has"+("undo"==a.toLowerCase()?"Undo":"Redo")]?0:-1},notNeedUndo:1};var k,l={16:1,17:1,18:1,37:1,38:1,39:1,40:1},m=0,n=!1;e.addListener("ready",function(){domUtils.on(this.body,"compositionstart",function(){n=!0}),domUtils.on(this.body,"compositionend",function(){n=!1})}),e.addshortcutkey({Undo:"ctrl+90",Redo:"ctrl+89"});var o=!0;e.addListener("keydown",function(a,b){function c(a){a.undoManger.save(!1,!0),a.fireEvent("selectionchange")}var e=this,f=b.keyCode||b.which;if(!(l[f]||b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)){if(n)return;if(!e.selection.getRange().collapsed)return e.undoManger.save(!1,!0),void(o=!1);0==e.undoManger.list.length&&e.undoManger.save(!0),clearTimeout(d),d=setTimeout(function(){if(n)var a=setInterval(function(){n||(c(e),clearInterval(a))},300);else c(e)},200),k=f,m++,m>=g&&c(e)}}),e.addListener("keyup",function(a,b){var c=b.keyCode||b.which;if(!(l[c]||b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)){if(n)return;o||(this.undoManger.save(!1,!0),o=!0)}}),e.stopCmdUndo=function(){e.__hasEnterExecCommand=!0},e.startCmdUndo=function(){e.__hasEnterExecCommand=!1}},UE.plugin.register("copy",function(){function a(){ZeroClipboard.config({debug:!1,swfPath:b.options.UEDITOR_HOME_URL+"third-party/zeroclipboard/ZeroClipboard.swf"});var a=b.zeroclipboard=new ZeroClipboard;a.on("copy",function(a){var c=a.client,d=b.selection.getRange(),e=document.createElement("div");e.appendChild(d.cloneContents()),c.setText(e.innerText||e.textContent),c.setHtml(e.innerHTML),d.select()}),a.on("mouseover mouseout",function(a){var b=a.target;"mouseover"==a.type?domUtils.addClass(b,"edui-state-hover"):"mouseout"==a.type&&domUtils.removeClasses(b,"edui-state-hover")}),a.on("wrongflash noflash",function(){ZeroClipboard.destroy()})}var b=this;return{bindEvents:{ready:function(){browser.ie||(window.ZeroClipboard?a():utils.loadFile(document,{src:b.options.UEDITOR_HOME_URL+"third-party/zeroclipboard/ZeroClipboard.js",tag:"script",type:"text/javascript",defer:"defer"},function(){a()}))}},commands:{copy:{execCommand:function(a){b.document.execCommand("copy")||alert(b.getLang("copymsg"))}}}}}),UE.plugins.paste=function(){function a(a){var b=this.document;if(!b.getElementById("baidu_pastebin")){var c=this.selection.getRange(),d=c.createBookmark(),e=b.createElement("div");e.id="baidu_pastebin",browser.webkit&&e.appendChild(b.createTextNode(domUtils.fillChar+domUtils.fillChar)),b.body.appendChild(e),d.start.style.display="",e.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:"+domUtils.getXY(d.start).y+"px",c.selectNodeContents(e).select(!0),setTimeout(function(){if(browser.webkit)for(var f,g=0,h=b.querySelectorAll("#baidu_pastebin");f=h[g++];){if(!domUtils.isEmptyNode(f)){e=f;break}domUtils.remove(f)}try{e.parentNode.removeChild(e)}catch(i){}c.moveToBookmark(d).select(!0),a(e)},0)}}function b(a){return a.replace(/<(\/?)([\w\-]+)([^>]*)>/gi,function(a,b,c,d){return c=c.toLowerCase(),{img:1}[c]?a:(d=d.replace(/([\w\-]*?)\s*=\s*(("([^"]*)")|('([^']*)')|([^\s>]+))/gi,function(a,b,c){return{src:1,href:1,name:1}[b.toLowerCase()]?b+"="+c+" ":""}),{span:1,div:1}[c]?"":"<"+b+c+" "+utils.trim(d)+">")})}function c(a){var c;if(a.firstChild){for(var h,i=domUtils.getElementsByTagName(a,"span"),j=0;h=i[j++];)"_baidu_cut_start"!=h.id&&"_baidu_cut_end"!=h.id||domUtils.remove(h);if(browser.webkit){for(var k,l=a.querySelectorAll("div br"),j=0;k=l[j++];){var m=k.parentNode;"DIV"==m.tagName&&1==m.childNodes.length&&(m.innerHTML="


    ",domUtils.remove(m))}for(var n,o=a.querySelectorAll("#baidu_pastebin"),j=0;n=o[j++];){var p=d.document.createElement("p");for(n.parentNode.insertBefore(p,n);n.firstChild;)p.appendChild(n.firstChild);domUtils.remove(n)}for(var q,r=a.querySelectorAll("meta"),j=0;q=r[j++];)domUtils.remove(q);var l=a.querySelectorAll("br");for(j=0;q=l[j++];)/^apple-/i.test(q.className)&&domUtils.remove(q)}if(browser.gecko){var s=a.querySelectorAll("[_moz_dirty]");for(j=0;q=s[j++];)q.removeAttribute("_moz_dirty")}if(!browser.ie)for(var q,t=a.querySelectorAll("span.Apple-style-span"),j=0;q=t[j++];)domUtils.remove(q,!0);c=a.innerHTML,c=UE.filterWord(c);var u=UE.htmlparser(c);if(d.options.filterRules&&UE.filterNode(u,d.options.filterRules),d.filterInputRule(u),browser.webkit){var v=u.lastChild();v&&"element"==v.type&&"br"==v.tagName&&u.removeChild(v),utils.each(d.body.querySelectorAll("div"),function(a){domUtils.isEmptyBlock(a)&&domUtils.remove(a,!0)})}if(c={html:u.toHtml()},d.fireEvent("beforepaste",c,u),!c.html)return;u=UE.htmlparser(c.html,!0),1===d.queryCommandState("pasteplain")?d.execCommand("insertHtml",UE.filterNode(u,d.options.filterTxtRules).toHtml(),!0):(UE.filterNode(u,d.options.filterTxtRules),e=u.toHtml(),f=c.html,g=d.selection.getRange().createAddress(!0),d.execCommand("insertHtml",d.getOpt("retainOnlyLabelPasted")===!0?b(f):f,!0)),d.fireEvent("afterpaste",c)}}var d=this;d.setOpt({retainOnlyLabelPasted:!1});var e,f,g;d.addListener("pasteTransfer",function(a,c){if(g&&e&&f&&e!=f){var h=d.selection.getRange();if(h.moveToAddress(g,!0),!h.collapsed){for(;!domUtils.isBody(h.startContainer);){var i=h.startContainer;if(1==i.nodeType){if(i=i.childNodes[h.startOffset],!i){h.setStartBefore(h.startContainer);continue}var j=i.previousSibling;j&&3==j.nodeType&&new RegExp("^[\n\r\t "+domUtils.fillChar+"]*$").test(j.nodeValue)&&h.setStartBefore(j)}if(0!=h.startOffset)break;h.setStartBefore(h.startContainer)}for(;!domUtils.isBody(h.endContainer);){var k=h.endContainer;if(1==k.nodeType){if(k=k.childNodes[h.endOffset],!k){h.setEndAfter(h.endContainer);continue}var l=k.nextSibling;l&&3==l.nodeType&&new RegExp("^[\n\r\t"+domUtils.fillChar+"]*$").test(l.nodeValue)&&h.setEndAfter(l)}if(h.endOffset!=h.endContainer[3==h.endContainer.nodeType?"nodeValue":"childNodes"].length)break;h.setEndAfter(h.endContainer)}}h.deleteContents(),h.select(!0),d.__hasEnterExecCommand=!0;var m=f;2===c?m=b(m):c&&(m=e),d.execCommand("inserthtml",m,!0),d.__hasEnterExecCommand=!1;for(var n=d.selection.getRange();!domUtils.isBody(n.startContainer)&&!n.startOffset&&n.startContainer[3==n.startContainer.nodeType?"nodeValue":"childNodes"].length;)n.setStartBefore(n.startContainer);var o=n.createAddress(!0);g.endAddress=o.startAddress}}),d.addListener("ready",function(){domUtils.on(d.body,"cut",function(){var a=d.selection.getRange();!a.collapsed&&d.undoManger&&d.undoManger.save()}),domUtils.on(d.body,browser.ie||browser.opera?"keydown":"paste",function(b){(!browser.ie&&!browser.opera||(b.ctrlKey||b.metaKey)&&"86"==b.keyCode)&&a.call(d,function(a){c(a)})})}),d.commands.paste={execCommand:function(b){browser.ie?(a.call(d,function(a){c(a)}),d.document.execCommand("paste")):alert(d.getLang("pastemsg"))}}},UE.plugins.pasteplain=function(){var a=this;a.setOpt({pasteplain:!1,filterTxtRules:function(){function a(a){a.tagName="p",a.setStyle()}function b(a){a.parentNode.removeChild(a,!0)}return{"-":"script style object iframe embed input select",p:{$:{}},br:{$:{}},div:function(a){for(var b,c=UE.uNode.createElement("p");b=a.firstChild();)"text"!=b.type&&UE.dom.dtd.$block[b.tagName]?c.firstChild()?(a.parentNode.insertBefore(c,a),c=UE.uNode.createElement("p")):a.parentNode.insertBefore(b,a):c.appendChild(b);c.firstChild()&&a.parentNode.insertBefore(c,a),a.parentNode.removeChild(a)},ol:b,ul:b,dl:b,dt:b,dd:b,li:b,caption:a,th:a,tr:a,h1:a,h2:a,h3:a,h4:a,h5:a,h6:a,td:function(a){var b=!!a.innerText();b&&a.parentNode.insertAfter(UE.uNode.createText("    "),a),a.parentNode.removeChild(a,a.innerText())}}}()});var b=a.options.pasteplain;a.commands.pasteplain={queryCommandState:function(){return b?1:0},execCommand:function(){b=0|!b},notNeedUndo:1}},UE.plugins.list=function(){function a(a){var b=[];for(var c in a)b.push(c);return b}function b(a){var b=a.className;return domUtils.hasClass(a,/custom_/)?b.match(/custom_(\w+)/)[1]:domUtils.getStyle(a,"list-style-type")}function c(a,c){utils.each(domUtils.getElementsByTagName(a,"ol ul"),function(f){if(domUtils.inDoc(f,a)){var g=f.parentNode;if(g.tagName==f.tagName){var h=b(f)||("OL"==f.tagName?"decimal":"disc"),i=b(g)||("OL"==g.tagName?"decimal":"disc");if(h==i){var l=utils.indexOf(k[f.tagName],h);l=l+1==k[f.tagName].length?0:l+1,e(f,k[f.tagName][l])}}var m=0,n=2;domUtils.hasClass(f,/custom_/)?/[ou]l/i.test(g.tagName)&&domUtils.hasClass(g,/custom_/)||(n=1):/[ou]l/i.test(g.tagName)&&domUtils.hasClass(g,/custom_/)&&(n=3);var o=domUtils.getStyle(f,"list-style-type");o&&(f.style.cssText="list-style-type:"+o),f.className=utils.trim(f.className.replace(/list-paddingleft-\w+/,""))+" list-paddingleft-"+n,utils.each(domUtils.getElementsByTagName(f,"li"),function(a){if(a.style.cssText&&(a.style.cssText=""),!a.firstChild)return void domUtils.remove(a);if(a.parentNode===f){if(m++,domUtils.hasClass(f,/custom_/)){var c=1,d=b(f);if("OL"==f.tagName){if(d)switch(d){case"cn":case"cn1":case"cn2":m>10&&(m%10==0||m>10&&m<20)?c=2:m>20&&(c=3);break;case"num2":m>9&&(c=2)}a.className="list-"+j[d]+m+" list-"+d+"-paddingleft-"+c}else a.className="list-"+j[d]+" list-"+d+"-paddingleft"}else a.className=a.className.replace(/list-[\w\-]+/gi,"");var e=a.getAttribute("class");null===e||e.replace(/\s/g,"")||domUtils.removeAttributes(a,"class")}}),!c&&d(f,f.tagName.toLowerCase(),b(f)||domUtils.getStyle(f,"list-style-type"),!0)}})}function d(a,d,e,f){var g=a.nextSibling;g&&1==g.nodeType&&g.tagName.toLowerCase()==d&&(b(g)||domUtils.getStyle(g,"list-style-type")||("ol"==d?"decimal":"disc"))==e&&(domUtils.moveChild(g,a),0==g.childNodes.length&&domUtils.remove(g)),g&&domUtils.isFillChar(g)&&domUtils.remove(g);var h=a.previousSibling;h&&1==h.nodeType&&h.tagName.toLowerCase()==d&&(b(h)||domUtils.getStyle(h,"list-style-type")||("ol"==d?"decimal":"disc"))==e&&domUtils.moveChild(a,h),h&&domUtils.isFillChar(h)&&domUtils.remove(h),!f&&domUtils.isEmptyBlock(a)&&domUtils.remove(a),b(a)&&c(a.ownerDocument,!0)}function e(a,b){j[b]&&(a.className="custom_"+b);try{domUtils.setStyle(a,"list-style-type",b)}catch(c){}}function f(a){var b=a.previousSibling;b&&domUtils.isEmptyBlock(b)&&domUtils.remove(b),b=a.nextSibling,b&&domUtils.isEmptyBlock(b)&&domUtils.remove(b)}function g(a){for(;a&&!domUtils.isBody(a);){if("TABLE"==a.nodeName)return null;if("LI"==a.nodeName)return a;a=a.parentNode}}var h=this,i={TD:1,PRE:1,BLOCKQUOTE:1},j={cn:"cn-1-",cn1:"cn-2-",cn2:"cn-3-",num:"num-1-",num1:"num-2-",num2:"num-3-",dash:"dash",dot:"dot"};h.setOpt({autoTransWordToList:!1,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,disablePInList:!1});var k={OL:a(h.options.insertorderedlist),UL:a(h.options.insertunorderedlist)},l=h.options.listiconpath;for(var m in j)h.options.insertorderedlist.hasOwnProperty(m)||h.options.insertunorderedlist.hasOwnProperty(m)||delete j[m];h.ready(function(){var a=[];for(var b in j){if("dash"==b||"dot"==b)a.push("li.list-"+j[b]+"{background-image:url("+l+j[b]+".gif)}"),a.push("ul.custom_"+b+"{list-style:none;}ul.custom_"+b+" li{background-position:0 3px;background-repeat:no-repeat}");else{for(var c=0;c<99;c++)a.push("li.list-"+j[b]+c+"{background-image:url("+l+"list-"+j[b]+c+".gif)}");a.push("ol.custom_"+b+"{list-style:none;}ol.custom_"+b+" li{background-position:0 3px;background-repeat:no-repeat}")}switch(b){case"cn":a.push("li.list-"+b+"-paddingleft-1{padding-left:25px}"),a.push("li.list-"+b+"-paddingleft-2{padding-left:40px}"),a.push("li.list-"+b+"-paddingleft-3{padding-left:55px}");break;case"cn1":a.push("li.list-"+b+"-paddingleft-1{padding-left:30px}"),a.push("li.list-"+b+"-paddingleft-2{padding-left:40px}"),a.push("li.list-"+b+"-paddingleft-3{padding-left:55px}");break;case"cn2":a.push("li.list-"+b+"-paddingleft-1{padding-left:40px}"),a.push("li.list-"+b+"-paddingleft-2{padding-left:55px}"),a.push("li.list-"+b+"-paddingleft-3{padding-left:68px}");break;case"num":case"num1":a.push("li.list-"+b+"-paddingleft-1{padding-left:25px}");break;case"num2":a.push("li.list-"+b+"-paddingleft-1{padding-left:35px}"),a.push("li.list-"+b+"-paddingleft-2{padding-left:40px}");break;case"dash":a.push("li.list-"+b+"-paddingleft{padding-left:35px}");break;case"dot":a.push("li.list-"+b+"-paddingleft{padding-left:20px}")}}a.push(".list-paddingleft-1{padding-left:0}"),a.push(".list-paddingleft-2{padding-left:"+h.options.listDefaultPaddingLeft+"px}"),a.push(".list-paddingleft-3{padding-left:"+2*h.options.listDefaultPaddingLeft+"px}"),utils.cssRule("list","ol,ul{margin:0;pading:0;"+(browser.ie?"":"width:95%")+"}li{clear:both;}"+a.join("\n"),h.document)}),h.ready(function(){domUtils.on(h.body,"cut",function(){setTimeout(function(){var a,b=h.selection.getRange();if(!b.collapsed&&(a=domUtils.findParentByTagName(b.startContainer,"li",!0))&&!a.nextSibling&&domUtils.isEmptyBlock(a)){var c,d=a.parentNode;if(c=d.previousSibling)domUtils.remove(d),b.setStartAtLast(c).collapse(!0),b.select(!0);else if(c=d.nextSibling)domUtils.remove(d),b.setStartAtFirst(c).collapse(!0),b.select(!0);else{var e=h.document.createElement("p");domUtils.fillNode(h.document,e),d.parentNode.insertBefore(e,d),domUtils.remove(d),b.setStart(e,0).collapse(!0),b.select(!0)}}})})}),h.addListener("beforepaste",function(a,c){var d,e=this,f=e.selection.getRange(),g=UE.htmlparser(c.html,!0);if(d=domUtils.findParentByTagName(f.startContainer,"li",!0)){var h=d.parentNode,i="OL"==h.tagName?"ul":"ol";utils.each(g.getNodesByTagName(i),function(c){if(c.tagName=h.tagName,c.setAttr(),c.parentNode===g)a=b(h)||("OL"==h.tagName?"decimal":"disc");else{var d=c.parentNode.getAttr("class");a=d&&/custom_/.test(d)?d.match(/custom_(\w+)/)[1]:c.parentNode.getStyle("list-style-type"),a||(a="OL"==h.tagName?"decimal":"disc")}var e=utils.indexOf(k[h.tagName],a);c.parentNode!==g&&(e=e+1==k[h.tagName].length?0:e+1);var f=k[h.tagName][e];j[f]?c.setAttr("class","custom_"+f):c.setStyle("list-style-type",f)})}c.html=g.toHtml()}),h.getOpt("disablePInList")===!0&&h.addOutputRule(function(a){utils.each(a.getNodesByTagName("li"),function(a){var b=[],c=0;utils.each(a.children,function(d){if("p"==d.tagName){for(var e;e=d.children.pop();)b.splice(c,0,e),e.parentNode=a,lastNode=e;if(e=b[b.length-1],!e||"element"!=e.type||"br"!=e.tagName){var f=UE.uNode.createElement("br");f.parentNode=a,b.push(f)}c=b.length}}),b.length&&(a.children=b)})}),h.addInputRule(function(a){function b(a,b){var e=b.firstChild();if(e&&"element"==e.type&&"span"==e.tagName&&/Wingdings|Symbol/.test(e.getStyle("font-family"))){for(var f in d)if(d[f]==e.data)return f;return"disc"}for(var f in c)if(c[f].test(a))return f}if(utils.each(a.getNodesByTagName("li"),function(a){for(var b,c=UE.uNode.createElement("p"),d=0;b=a.children[d];)"text"==b.type||dtd.p[b.tagName]?c.appendChild(b):c.firstChild()?(a.insertBefore(c,b),c=UE.uNode.createElement("p"),d+=2):d++;(c.firstChild()&&!c.parentNode||!a.firstChild())&&a.appendChild(c),c.firstChild()||c.innerHTML(browser.ie?" ":"
    ");var e=a.firstChild(),f=e.lastChild();f&&"text"==f.type&&/^\s*$/.test(f.data)&&e.removeChild(f)}),h.options.autoTransWordToList){var c={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]+\)/},d={square:"n"};utils.each(a.getNodesByTagName("p"),function(a){function d(a,b,d){if("ol"==a.tagName)if(browser.ie){var e=b.firstChild();"element"==e.type&&"span"==e.tagName&&c[d].test(e.innerText())&&b.removeChild(e)}else b.innerHTML(b.innerHTML().replace(c[d],""));else b.removeChild(b.firstChild());var f=UE.uNode.createElement("li");f.appendChild(b),a.appendChild(f)}if("MsoListParagraph"==a.getAttr("class")){a.setStyle("margin",""),a.setStyle("margin-left",""),a.setAttr("class","");var e,f=a,g=a;if("li"!=a.parentNode.tagName&&(e=b(a.innerText(),a))){var i=UE.uNode.createElement(h.options.insertorderedlist.hasOwnProperty(e)?"ol":"ul");for(j[e]?i.setAttr("class","custom_"+e):i.setStyle("list-style-type",e);a&&"li"!=a.parentNode.tagName&&b(a.innerText(),a);)f=a.nextSibling(),f||a.parentNode.insertBefore(i,a),d(i,a,e),a=f;!i.parentNode&&a&&a.parentNode&&a.parentNode.insertBefore(i,a)}var k=g.firstChild();k&&"element"==k.type&&"span"==k.tagName&&/^\s*( )+\s*$/.test(k.innerText())&&k.parentNode.removeChild(k)}})}}),h.addListener("contentchange",function(){c(h.document)}),h.addListener("keydown",function(a,b){function c(){b.preventDefault?b.preventDefault():b.returnValue=!1,h.fireEvent("contentchange"),h.undoManger&&h.undoManger.save()}function d(a,b){for(;a&&!domUtils.isBody(a);){if(b(a))return null;if(1==a.nodeType&&/[ou]l/i.test(a.tagName))return a;a=a.parentNode}return null}var e=b.keyCode||b.which;if(13==e&&!b.shiftKey){var g=h.selection.getRange(),i=domUtils.findParent(g.startContainer,function(a){return domUtils.isBlockElm(a)},!0),j=domUtils.findParentByTagName(g.startContainer,"li",!0);if(i&&"PRE"!=i.tagName&&!j){var k=i.innerHTML.replace(new RegExp(domUtils.fillChar,"g"),"");/^\s*1\s*\.[^\d]/.test(k)&&(i.innerHTML=k.replace(/^\s*1\s*\./,""),g.setStartAtLast(i).collapse(!0).select(),h.__hasEnterExecCommand=!0,h.execCommand("insertorderedlist"),h.__hasEnterExecCommand=!1)}var l=h.selection.getRange(),m=d(l.startContainer,function(a){return"TABLE"==a.tagName}),n=l.collapsed?m:d(l.endContainer,function(a){return"TABLE"==a.tagName});if(m&&n&&m===n){if(!l.collapsed){if(m=domUtils.findParentByTagName(l.startContainer,"li",!0),n=domUtils.findParentByTagName(l.endContainer,"li",!0),!m||!n||m!==n){var o=l.cloneRange(),p=o.collapse(!1).createBookmark();l.deleteContents(),o.moveToBookmark(p);var j=domUtils.findParentByTagName(o.startContainer,"li",!0);return f(j),o.select(),void c()}if(l.deleteContents(),j=domUtils.findParentByTagName(l.startContainer,"li",!0),j&&domUtils.isEmptyBlock(j))return v=j.previousSibling,next=j.nextSibling,s=h.document.createElement("p"),domUtils.fillNode(h.document,s),q=j.parentNode,v&&next?(l.setStart(next,0).collapse(!0).select(!0),domUtils.remove(j)):((v||next)&&v?j.parentNode.parentNode.insertBefore(s,q.nextSibling):q.parentNode.insertBefore(s,q),domUtils.remove(j),q.firstChild||domUtils.remove(q), +l.setStart(s,0).setCursor()),void c()}if(j=domUtils.findParentByTagName(l.startContainer,"li",!0)){if(domUtils.isEmptyBlock(j)){p=l.createBookmark();var q=j.parentNode;if(j!==q.lastChild?(domUtils.breakParent(j,q),f(j)):(q.parentNode.insertBefore(j,q.nextSibling),domUtils.isEmptyNode(q)&&domUtils.remove(q)),!dtd.$list[j.parentNode.tagName])if(domUtils.isBlockElm(j.firstChild))domUtils.remove(j,!0);else{for(s=h.document.createElement("p"),j.parentNode.insertBefore(s,j);j.firstChild;)s.appendChild(j.firstChild);domUtils.remove(j)}l.moveToBookmark(p).select()}else{var r=j.firstChild;if(!r||!domUtils.isBlockElm(r)){var s=h.document.createElement("p");for(!j.firstChild&&domUtils.fillNode(h.document,s);j.firstChild;)s.appendChild(j.firstChild);j.appendChild(s),r=s}var t=h.document.createElement("span");l.insertNode(t),domUtils.breakParent(t,j);var u=t.nextSibling;r=u.firstChild,r||(s=h.document.createElement("p"),domUtils.fillNode(h.document,s),u.appendChild(s),r=s),domUtils.isEmptyNode(r)&&(r.innerHTML="",domUtils.fillNode(h.document,r)),l.setStart(r,0).collapse(!0).shrinkBoundary().select(),domUtils.remove(t);var v=u.previousSibling;v&&domUtils.isEmptyBlock(v)&&(v.innerHTML="

    ",domUtils.fillNode(h.document,v.firstChild))}c()}}}if(8==e&&(l=h.selection.getRange(),l.collapsed&&domUtils.isStartInblock(l)&&(o=l.cloneRange().trimBoundary(),j=domUtils.findParentByTagName(l.startContainer,"li",!0),j&&domUtils.isStartInblock(o)))){if(m=domUtils.findParentByTagName(l.startContainer,"p",!0),m&&m!==j.firstChild){var q=domUtils.findParentByTagName(m,["ol","ul"]);return domUtils.breakParent(m,q),f(m),h.fireEvent("contentchange"),l.setStart(m,0).setCursor(!1,!0),h.fireEvent("saveScene"),void domUtils.preventDefault(b)}if(j&&(v=j.previousSibling)){if(46==e&&j.childNodes.length)return;if(dtd.$list[v.tagName]&&(v=v.lastChild),h.undoManger&&h.undoManger.save(),r=j.firstChild,domUtils.isBlockElm(r))if(domUtils.isEmptyNode(r))for(v.appendChild(r),l.setStart(r,0).setCursor(!1,!0);j.firstChild;)v.appendChild(j.firstChild);else t=h.document.createElement("span"),l.insertNode(t),domUtils.isEmptyBlock(v)&&(v.innerHTML=""),domUtils.moveChild(j,v),l.setStartBefore(t).collapse(!0).select(!0),domUtils.remove(t);else if(domUtils.isEmptyNode(j)){var s=h.document.createElement("p");v.appendChild(s),l.setStart(s,0).setCursor()}else for(l.setEnd(v,v.childNodes.length).collapse().select(!0);j.firstChild;)v.appendChild(j.firstChild);return domUtils.remove(j),h.fireEvent("contentchange"),h.fireEvent("saveScene"),void domUtils.preventDefault(b)}if(j&&!j.previousSibling){var q=j.parentNode,p=l.createBookmark();if(domUtils.isTagNode(q.parentNode,"ol ul"))q.parentNode.insertBefore(j,q),domUtils.isEmptyNode(q)&&domUtils.remove(q);else{for(;j.firstChild;)q.parentNode.insertBefore(j.firstChild,q);domUtils.remove(j),domUtils.isEmptyNode(q)&&domUtils.remove(q)}return l.moveToBookmark(p).setCursor(!1,!0),h.fireEvent("contentchange"),h.fireEvent("saveScene"),void domUtils.preventDefault(b)}}}),h.addListener("keyup",function(a,c){var e=c.keyCode||c.which;if(8==e){var f,g=h.selection.getRange();(f=domUtils.findParentByTagName(g.startContainer,["ol","ul"],!0))&&d(f,f.tagName.toLowerCase(),b(f)||domUtils.getComputedStyle(f,"list-style-type"),!0)}}),h.addListener("tabkeydown",function(){function a(a){if(h.options.maxListLevel!=-1){for(var b=a.parentNode,c=0;/[ou]l/i.test(b.tagName);)c++,b=b.parentNode;if(c>=h.options.maxListLevel)return!0}}var c=h.selection.getRange(),f=domUtils.findParentByTagName(c.startContainer,"li",!0);if(f){var g;if(!c.collapsed){h.fireEvent("saveScene"),g=c.createBookmark();for(var i,j,l=0,m=domUtils.findParents(f);j=m[l++];)if(domUtils.isTagNode(j,"ol ul")){i=j;break}var n=f;if(g.end)for(;n&&!(domUtils.getPosition(n,g.end)&domUtils.POSITION_FOLLOWING);)if(a(n))n=domUtils.getNextDomNode(n,!1,null,function(a){return a!==i});else{var o=n.parentNode,p=h.document.createElement(o.tagName),q=utils.indexOf(k[p.tagName],b(o)||domUtils.getComputedStyle(o,"list-style-type")),r=q+1==k[p.tagName].length?0:q+1,s=k[p.tagName][r];for(e(p,s),o.insertBefore(p,n);n&&!(domUtils.getPosition(n,g.end)&domUtils.POSITION_FOLLOWING);){if(f=n.nextSibling,p.appendChild(n),!f||domUtils.isTagNode(f,"ol ul")){if(f)for(;(f=f.firstChild)&&"LI"!=f.tagName;);else f=domUtils.getNextDomNode(n,!1,null,function(a){return a!==i});break}n=f}d(p,p.tagName.toLowerCase(),s),n=f}return h.fireEvent("contentchange"),c.moveToBookmark(g).select(),!0}if(a(f))return!0;var o=f.parentNode,p=h.document.createElement(o.tagName),q=utils.indexOf(k[p.tagName],b(o)||domUtils.getComputedStyle(o,"list-style-type"));q=q+1==k[p.tagName].length?0:q+1;var s=k[p.tagName][q];if(e(p,s),domUtils.isStartInblock(c))return h.fireEvent("saveScene"),g=c.createBookmark(),o.insertBefore(p,f),p.appendChild(f),d(p,p.tagName.toLowerCase(),s),h.fireEvent("contentchange"),c.moveToBookmark(g).select(!0),!0}}),h.commands.insertorderedlist=h.commands.insertunorderedlist={execCommand:function(a,c){c||(c="insertorderedlist"==a.toLowerCase()?"decimal":"disc");var f=this,h=this.selection.getRange(),j=function(a){return 1==a.nodeType?"br"!=a.tagName.toLowerCase():!domUtils.isWhitespace(a)},k="insertorderedlist"==a.toLowerCase()?"ol":"ul",l=f.document.createDocumentFragment();h.adjustmentBoundary().shrinkBoundary();var m,n,o,p,q=h.createBookmark(!0),r=g(f.document.getElementById(q.start)),s=0,t=g(f.document.getElementById(q.end)),u=0;if(r||t){if(r&&(m=r.parentNode),q.end||(t=r),t&&(n=t.parentNode),m===n){for(;r!==t;){if(p=r,r=r.nextSibling,!domUtils.isBlockElm(p.firstChild)){for(var v=f.document.createElement("p");p.firstChild;)v.appendChild(p.firstChild);p.appendChild(v)}l.appendChild(p)}if(p=f.document.createElement("span"),m.insertBefore(p,t),!domUtils.isBlockElm(t.firstChild)){for(v=f.document.createElement("p");t.firstChild;)v.appendChild(t.firstChild);t.appendChild(v)}l.appendChild(t),domUtils.breakParent(p,m),domUtils.isEmptyNode(p.previousSibling)&&domUtils.remove(p.previousSibling),domUtils.isEmptyNode(p.nextSibling)&&domUtils.remove(p.nextSibling);var w=b(m)||domUtils.getComputedStyle(m,"list-style-type")||("insertorderedlist"==a.toLowerCase()?"decimal":"disc");if(m.tagName.toLowerCase()==k&&w==c){for(var x,y=0,z=f.document.createDocumentFragment();x=l.firstChild;)if(domUtils.isTagNode(x,"ol ul"))z.appendChild(x);else for(;x.firstChild;)z.appendChild(x.firstChild),domUtils.remove(x);p.parentNode.insertBefore(z,p)}else o=f.document.createElement(k),e(o,c),o.appendChild(l),p.parentNode.insertBefore(o,p);return domUtils.remove(p),o&&d(o,k,c),void h.moveToBookmark(q).select()}if(r){for(;r;){if(p=r.nextSibling,domUtils.isTagNode(r,"ol ul"))l.appendChild(r);else{for(var A=f.document.createDocumentFragment(),B=0;r.firstChild;)domUtils.isBlockElm(r.firstChild)&&(B=1),A.appendChild(r.firstChild);if(B)l.appendChild(A);else{var C=f.document.createElement("p");C.appendChild(A),l.appendChild(C)}domUtils.remove(r)}r=p}m.parentNode.insertBefore(l,m.nextSibling),domUtils.isEmptyNode(m)?(h.setStartBefore(m),domUtils.remove(m)):h.setStartAfter(m),s=1}if(t&&domUtils.inDoc(n,f.document)){for(r=n.firstChild;r&&r!==t;){if(p=r.nextSibling,domUtils.isTagNode(r,"ol ul"))l.appendChild(r);else{for(A=f.document.createDocumentFragment(),B=0;r.firstChild;)domUtils.isBlockElm(r.firstChild)&&(B=1),A.appendChild(r.firstChild);B?l.appendChild(A):(C=f.document.createElement("p"),C.appendChild(A),l.appendChild(C)),domUtils.remove(r)}r=p}var D=domUtils.createElement(f.document,"div",{tmpDiv:1});domUtils.moveChild(t,D),l.appendChild(D),domUtils.remove(t),n.parentNode.insertBefore(l,n),h.setEndBefore(n),domUtils.isEmptyNode(n)&&domUtils.remove(n),u=1}}s||h.setStartBefore(f.document.getElementById(q.start)),q.end&&!u&&h.setEndAfter(f.document.getElementById(q.end)),h.enlarge(!0,function(a){return i[a.tagName]}),l=f.document.createDocumentFragment();for(var E,F=h.createBookmark(),G=domUtils.getNextDomNode(F.start,!1,j),H=h.cloneRange(),I=domUtils.isBlockElm;G&&G!==F.end&&domUtils.getPosition(G,F.end)&domUtils.POSITION_PRECEDING;)if(3==G.nodeType||dtd.li[G.tagName]){if(1==G.nodeType&&dtd.$list[G.tagName]){for(;G.firstChild;)l.appendChild(G.firstChild);E=domUtils.getNextDomNode(G,!1,j),domUtils.remove(G),G=E;continue}for(E=G,H.setStartBefore(G);G&&G!==F.end&&(!I(G)||domUtils.isBookmarkNode(G));)E=G,G=domUtils.getNextDomNode(G,!1,null,function(a){return!i[a.tagName]});G&&I(G)&&(p=domUtils.getNextDomNode(E,!1,j),p&&domUtils.isBookmarkNode(p)&&(G=domUtils.getNextDomNode(p,!1,j),E=p)),H.setEndAfter(E),G=domUtils.getNextDomNode(E,!1,j);var J=h.document.createElement("li");if(J.appendChild(H.extractContents()),domUtils.isEmptyNode(J)){for(var E=h.document.createElement("p");J.firstChild;)E.appendChild(J.firstChild);J.appendChild(E)}l.appendChild(J)}else G=domUtils.getNextDomNode(G,!0,j);h.moveToBookmark(F).collapse(!0),o=f.document.createElement(k),e(o,c),o.appendChild(l),h.insertNode(o),d(o,k,c);for(var x,y=0,K=domUtils.getElementsByTagName(o,"div");x=K[y++];)x.getAttribute("tmpDiv")&&domUtils.remove(x,!0);h.moveToBookmark(q).select()},queryCommandState:function(a){for(var b,c="insertorderedlist"==a.toLowerCase()?"ol":"ul",d=this.selection.getStartElementPath(),e=0;b=d[e++];){if("TABLE"==b.nodeName)return 0;if(c==b.nodeName.toLowerCase())return 1}return 0},queryCommandValue:function(a){for(var c,d,e="insertorderedlist"==a.toLowerCase()?"ol":"ul",f=this.selection.getStartElementPath(),g=0;d=f[g++];){if("TABLE"==d.nodeName){c=null;break}if(e==d.nodeName.toLowerCase()){c=d;break}}return c?b(c)||domUtils.getComputedStyle(c,"list-style-type"):null}}},function(){var a={textarea:function(a,b){var c=b.ownerDocument.createElement("textarea");return c.style.cssText="position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;",browser.ie&&browser.version<8&&(c.style.width=b.offsetWidth+"px",c.style.height=b.offsetHeight+"px",b.onresize=function(){c.style.width=b.offsetWidth+"px",c.style.height=b.offsetHeight+"px"}),b.appendChild(c),{setContent:function(a){c.value=a},getContent:function(){return c.value},select:function(){var a;browser.ie?(a=c.createTextRange(),a.collapse(!0),a.select()):(c.setSelectionRange(0,0),c.focus())},dispose:function(){b.removeChild(c),b.onresize=null,c=null,b=null}}},codemirror:function(a,b){var c=window.CodeMirror(b,{mode:"text/html",tabMode:"indent",lineNumbers:!0,lineWrapping:!0}),d=c.getWrapperElement();return d.style.cssText='position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,"Courier new",monospace;font-size:13px;',c.getScrollerElement().style.cssText="position:absolute;left:0;top:0;width:100%;height:100%;",c.refresh(),{getCodeMirror:function(){return c},setContent:function(a){c.setValue(a)},getContent:function(){return c.getValue()},select:function(){c.focus()},dispose:function(){b.removeChild(d),d=null,c=null}}}};UE.plugins.source=function(){function b(b){return a["codemirror"==f.sourceEditor&&window.CodeMirror?"codemirror":"textarea"](e,b)}var c,d,e=this,f=this.options,g=!1;f.sourceEditor=browser.ie?"textarea":f.sourceEditor||"codemirror",e.setOpt({sourceEditorFirst:!1});var h,i,j;e.commands.source={execCommand:function(){if(g=!g){j=e.selection.getRange().createAddress(!1,!0),e.undoManger&&e.undoManger.save(!0),browser.gecko&&(e.body.contentEditable=!1),h=e.iframe.style.cssText,e.iframe.style.cssText+="position:absolute;left:-32768px;top:-32768px;",e.fireEvent("beforegetcontent");var a=UE.htmlparser(e.body.innerHTML);e.filterOutputRule(a),a.traversal(function(a){if("element"==a.type)switch(a.tagName){case"td":case"th":case"caption":a.children&&1==a.children.length&&"br"==a.firstChild().tagName&&a.removeChild(a.firstChild());break;case"pre":a.innerText(a.innerText().replace(/ /g," "))}}),e.fireEvent("aftergetcontent");var f=a.toHtml(!0);c=b(e.iframe.parentNode),c.setContent(f),d=e.setContent,e.setContent=function(a){var b=UE.htmlparser(a);e.filterInputRule(b),a=b.toHtml(),c.setContent(a)},setTimeout(function(){c.select(),e.addListener("fullscreenchanged",function(){try{c.getCodeMirror().refresh()}catch(a){}})}),i=e.getContent,e.getContent=function(){return c.getContent()||"

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

    "}}else{e.iframe.style.cssText=h;var k=c.getContent()||"

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

    ";k=k.replace(new RegExp("[\\r\\t\\n ]*]*)>","g"),function(a,b){return b&&!dtd.$inlineWithA[b.toLowerCase()]?a.replace(/(^[\n\r\t ]*)|([\n\r\t ]*$)/g,""):a.replace(/(^[\n\r\t]*)|([\n\r\t]*$)/g,"")}),e.setContent=d,e.setContent(k),c.dispose(),c=null,e.getContent=i;var l=e.body.firstChild;if(l||(e.body.innerHTML="

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

    ",l=e.body.firstChild),e.undoManger&&e.undoManger.save(!0),browser.gecko){var m=document.createElement("input");m.style.cssText="position:absolute;left:0;top:-32768px",document.body.appendChild(m),e.body.contentEditable=!1,setTimeout(function(){domUtils.setViewportOffset(m,{left:-32768,top:0}),m.focus(),setTimeout(function(){e.body.contentEditable=!0,e.selection.getRange().moveToAddress(j).select(!0),domUtils.remove(m)})})}else try{e.selection.getRange().moveToAddress(j).select(!0)}catch(n){}}this.fireEvent("sourcemodechanged",g)},queryCommandState:function(){return 0|g},notNeedUndo:1};var k=e.queryCommandState;e.queryCommandState=function(a){return a=a.toLowerCase(),g?a in{source:1,fullscreen:1}?1:-1:k.apply(this,arguments)},"codemirror"==f.sourceEditor&&e.addListener("ready",function(){utils.loadFile(document,{src:f.codeMirrorJsUrl||f.UEDITOR_HOME_URL+"third-party/codemirror/codemirror.js",tag:"script",type:"text/javascript",defer:"defer"},function(){f.sourceEditorFirst&&setTimeout(function(){e.execCommand("source")},0)}),utils.loadFile(document,{tag:"link",rel:"stylesheet",type:"text/css",href:f.codeMirrorCssUrl||f.UEDITOR_HOME_URL+"third-party/codemirror/codemirror.css"})})}}(),UE.plugins.enterkey=function(){var a,b=this,c=b.options.enterTag;b.addListener("keyup",function(c,d){var e=d.keyCode||d.which;if(13==e){var f,g=b.selection.getRange(),h=g.startContainer;if(browser.ie)b.fireEvent("saveScene",!0,!0);else{if(/h\d/i.test(a)){if(browser.gecko){var i=domUtils.findParentByTagName(h,["h1","h2","h3","h4","h5","h6","blockquote","caption","table"],!0);i||(b.document.execCommand("formatBlock",!1,"

    "),f=1)}else if(1==h.nodeType){var j,k=b.document.createTextNode("");if(g.insertNode(k),j=domUtils.findParentByTagName(k,"div",!0)){for(var l=b.document.createElement("p");j.firstChild;)l.appendChild(j.firstChild);j.parentNode.insertBefore(l,j),domUtils.remove(j),g.setStartBefore(k).setCursor(),f=1}domUtils.remove(k)}b.undoManger&&f&&b.undoManger.save()}browser.opera&&g.select()}}}),b.addListener("keydown",function(d,e){var f=e.keyCode||e.which;if(13==f){if(b.fireEvent("beforeenterkeydown"))return void domUtils.preventDefault(e);b.fireEvent("saveScene",!0,!0),a="";var g=b.selection.getRange();if(!g.collapsed){var h=g.startContainer,i=g.endContainer,j=domUtils.findParentByTagName(h,"td",!0),k=domUtils.findParentByTagName(i,"td",!0);if(j&&k&&j!==k||!j&&k||j&&!k)return void(e.preventDefault?e.preventDefault():e.returnValue=!1)}if("p"==c)browser.ie||(h=domUtils.findParentByTagName(g.startContainer,["ol","ul","p","h1","h2","h3","h4","h5","h6","blockquote","caption"],!0),h||browser.opera?(a=h.tagName,"p"==h.tagName.toLowerCase()&&browser.gecko&&domUtils.removeDirtyAttr(h)):(b.document.execCommand("formatBlock",!1,"

    "),browser.gecko&&(g=b.selection.getRange(),h=domUtils.findParentByTagName(g.startContainer,"p",!0),h&&domUtils.removeDirtyAttr(h))));else if(e.preventDefault?e.preventDefault():e.returnValue=!1,g.collapsed){m=g.document.createElement("br"),g.insertNode(m);var l=m.parentNode;l.lastChild===m?(m.parentNode.insertBefore(m.cloneNode(!0),m),g.setStartBefore(m)):g.setStartAfter(m),g.setCursor()}else if(g.deleteContents(),h=g.startContainer,1==h.nodeType&&(h=h.childNodes[g.startOffset])){for(;1==h.nodeType;){if(dtd.$empty[h.tagName])return g.setStartBefore(h).setCursor(),b.undoManger&&b.undoManger.save(),!1;if(!h.firstChild){var m=g.document.createElement("br");return h.appendChild(m),g.setStart(h,0).setCursor(),b.undoManger&&b.undoManger.save(),!1}h=h.firstChild}h===g.startContainer.childNodes[g.startOffset]?(m=g.document.createElement("br"),g.insertNode(m).setCursor()):g.setStart(h,0).setCursor()}else m=g.document.createElement("br"),g.insertNode(m).setStartAfter(m).setCursor()}})},UE.plugins.keystrokes=function(){var a=this,b=!0;a.addListener("keydown",function(c,d){var e=d.keyCode||d.which,f=a.selection.getRange();if(!f.collapsed&&!(d.ctrlKey||d.shiftKey||d.altKey||d.metaKey)&&(e>=65&&e<=90||e>=48&&e<=57||e>=96&&e<=111||{13:1,8:1,46:1}[e])){var g=f.startContainer;if(domUtils.isFillChar(g)&&f.setStartBefore(g),g=f.endContainer,domUtils.isFillChar(g)&&f.setEndAfter(g),f.txtToElmBoundary(),f.endContainer&&1==f.endContainer.nodeType&&(g=f.endContainer.childNodes[f.endOffset],g&&domUtils.isBr(g)&&f.setEndAfter(g)),0==f.startOffset&&(g=f.startContainer,domUtils.isBoundaryNode(g,"firstChild")&&(g=f.endContainer,f.endOffset==(3==g.nodeType?g.nodeValue.length:g.childNodes.length)&&domUtils.isBoundaryNode(g,"lastChild"))))return a.fireEvent("saveScene"),a.body.innerHTML="

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

    ",f.setStart(a.body.firstChild,0).setCursor(!1,!0),void a._selectionChange()}if(e==keymap.Backspace){if(f=a.selection.getRange(),b=f.collapsed,a.fireEvent("delkeydown",d))return;var h,i;if(f.collapsed&&f.inFillChar()&&(h=f.startContainer,domUtils.isFillChar(h)?(f.setStartBefore(h).shrinkBoundary(!0).collapse(!0),domUtils.remove(h)):(h.nodeValue=h.nodeValue.replace(new RegExp("^"+domUtils.fillChar),""),f.startOffset--,f.collapse(!0).select(!0))),h=f.getClosedNode())return a.fireEvent("saveScene"),f.setStartBefore(h),domUtils.remove(h),f.setCursor(),a.fireEvent("saveScene"),void domUtils.preventDefault(d);if(!browser.ie&&(h=domUtils.findParentByTagName(f.startContainer,"table",!0),i=domUtils.findParentByTagName(f.endContainer,"table",!0),h&&!i||!h&&i||h!==i))return void d.preventDefault()}if(e==keymap.Tab){var j={ol:1,ul:1,table:1};if(a.fireEvent("tabkeydown",d))return void domUtils.preventDefault(d);var k=a.selection.getRange();a.fireEvent("saveScene");for(var l=0,m="",n=a.options.tabSize||4,o=a.options.tabNode||" ";l"});d.insertNode(g).setStart(g,0).setCursor(!1,!0)}}if(!b&&(3==d.startContainer.nodeType||1==d.startContainer.nodeType&&domUtils.isEmptyBlock(d.startContainer)))if(browser.ie){var k=d.document.createElement("span");d.insertNode(k).setStartBefore(k).collapse(!0),d.select(),domUtils.remove(k)}else d.select()}})},UE.plugins.fiximgclick=function(){function a(){this.editor=null,this.resizer=null,this.cover=null,this.doc=document,this.prePos={x:0,y:0},this.startPos={x:0,y:0}}var b=!1;return function(){var c=[[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]];a.prototype={init:function(a){var b=this;b.editor=a,b.startPos=this.prePos={x:0,y:0},b.dragId=-1;var c=[],d=b.cover=document.createElement("div"),e=b.resizer=document.createElement("div");for(d.id=b.editor.ui.id+"_imagescale_cover",d.style.cssText="position:absolute;display:none;z-index:"+b.editor.options.zIndex+";filter:alpha(opacity=0); opacity:0;background:#CCC;",domUtils.on(d,"mousedown click",function(){b.hide()}),i=0;i<8;i++)c.push('');e.id=b.editor.ui.id+"_imagescale",e.className="edui-editor-imagescale",e.innerHTML=c.join(""),e.style.cssText+=";display:none;border:1px solid #3b77ff;z-index:"+b.editor.options.zIndex+";",b.editor.ui.getDom().appendChild(d),b.editor.ui.getDom().appendChild(e),b.initStyle(),b.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 a=this;a.startPos.x=a.startPos.y=0,a.isDraging=!1},_eventHandler:function(a){var c=this;switch(a.type){case"mousedown":var d,d=a.target||a.srcElement;d.className.indexOf("edui-editor-imagescale-hand")!=-1&&c.dragId==-1&&(c.dragId=d.className.slice(-1),c.startPos.x=c.prePos.x=a.clientX,c.startPos.y=c.prePos.y=a.clientY,domUtils.on(c.doc,"mousemove",c.proxy(c._eventHandler,c)));break;case"mousemove":c.dragId!=-1&&(c.updateContainerStyle(c.dragId,{x:a.clientX-c.prePos.x,y:a.clientY-c.prePos.y}),c.prePos.x=a.clientX,c.prePos.y=a.clientY,b=!0,c.updateTargetElement());break;case"mouseup":c.dragId!=-1&&(c.updateContainerStyle(c.dragId,{x:a.clientX-c.prePos.x,y:a.clientY-c.prePos.y}),c.updateTargetElement(),c.target.parentNode&&c.attachTo(c.target),c.dragId=-1),domUtils.un(c.doc,"mousemove",c.proxy(c._eventHandler,c)),b&&(b=!1,c.editor.fireEvent("contentchange"))}},updateTargetElement:function(){var a=this;domUtils.setStyles(a.target,{width:a.resizer.style.width,height:a.resizer.style.height}),a.target.width=parseInt(a.resizer.style.width),a.target.height=parseInt(a.resizer.style.height),a.attachTo(a.target)},updateContainerStyle:function(a,b){var d,e=this,f=e.resizer;0!=c[a][0]&&(d=parseInt(f.style.left)+b.x,f.style.left=e._validScaledProp("left",d)+"px"),0!=c[a][1]&&(d=parseInt(f.style.top)+b.y,f.style.top=e._validScaledProp("top",d)+"px"),0!=c[a][2]&&(d=f.clientWidth+c[a][2]*b.x,f.style.width=e._validScaledProp("width",d)+"px"),0!=c[a][3]&&(d=f.clientHeight+c[a][3]*b.y,f.style.height=e._validScaledProp("height",d)+"px")},_validScaledProp:function(a,b){var c=this.resizer,d=document;switch(b=isNaN(b)?0:b,a){case"left":return b<0?0:b+c.clientWidth>d.clientWidth?d.clientWidth-c.clientWidth:b;case"top":return b<0?0:b+c.clientHeight>d.clientHeight?d.clientHeight-c.clientHeight:b;case"width":return b<=0?1:b+c.offsetLeft>d.clientWidth?d.clientWidth-c.offsetLeft:b;case"height":return b<=0?1:b+c.offsetTop>d.clientHeight?d.clientHeight-c.offsetTop:b}},hideCover:function(){this.cover.style.display="none"},showCover:function(){var a=this,b=domUtils.getXY(a.editor.ui.getDom()),c=domUtils.getXY(a.editor.iframe);domUtils.setStyles(a.cover,{width:a.editor.iframe.offsetWidth+"px",height:a.editor.iframe.offsetHeight+"px",top:c.y-b.y+"px",left:c.x-b.x+"px",position:"absolute",display:""})},show:function(a){var b=this;b.resizer.style.display="block",a&&b.attachTo(a),domUtils.on(this.resizer,"mousedown",b.proxy(b._eventHandler,b)),domUtils.on(b.doc,"mouseup",b.proxy(b._eventHandler,b)),b.showCover(),b.editor.fireEvent("afterscaleshow",b),b.editor.fireEvent("saveScene")},hide:function(){var a=this;a.hideCover(),a.resizer.style.display="none",domUtils.un(a.resizer,"mousedown",a.proxy(a._eventHandler,a)),domUtils.un(a.doc,"mouseup",a.proxy(a._eventHandler,a)),a.editor.fireEvent("afterscalehide",a)},proxy:function(a,b){return function(c){return a.apply(b||this,arguments)}},attachTo:function(a){var b=this,c=b.target=a,d=this.resizer,e=domUtils.getXY(c),f=domUtils.getXY(b.editor.iframe),g=domUtils.getXY(d.parentNode);domUtils.setStyles(d,{width:c.width+"px",height:c.height+"px",left:f.x+e.x-b.editor.document.body.scrollLeft-g.x-parseInt(d.style.borderLeftWidth)+"px",top:f.y+e.y-b.editor.document.body.scrollTop-g.y-parseInt(d.style.borderTopWidth)+"px"})}}}(),function(){var b,c=this;c.setOpt("imageScaleEnabled",!0),!browser.ie&&c.options.imageScaleEnabled&&c.addListener("click",function(d,e){var f=c.selection.getRange(),g=f.getClosedNode();if(g&&"IMG"==g.tagName&&"false"!=c.body.contentEditable){if(g.className.indexOf("edui-faked-music")!=-1||g.getAttribute("anchorname")||domUtils.hasClass(g,"loadingclass")||domUtils.hasClass(g,"loaderrorclass"))return;if(!b){b=new a,b.init(c),c.ui.getDom().appendChild(b.resizer);var h,i=function(a){b.hide(),b.target&&c.selection.getRange().selectNode(b.target).select()},j=function(a){var b=a.target||a.srcElement;!b||void 0!==b.className&&b.className.indexOf("edui-editor-imagescale")!=-1||i(a)};c.addListener("afterscaleshow",function(a){c.addListener("beforekeydown",i),c.addListener("beforemousedown",j),domUtils.on(document,"keydown",i),domUtils.on(document,"mousedown",j),c.selection.getNative().removeAllRanges()}),c.addListener("afterscalehide",function(a){c.removeListener("beforekeydown",i),c.removeListener("beforemousedown",j),domUtils.un(document,"keydown",i),domUtils.un(document,"mousedown",j);var d=b.target;d.parentNode&&c.selection.getRange().selectNode(d).select()}),domUtils.on(b.resizer,"mousedown",function(a){c.selection.getNative().removeAllRanges();var d=a.target||a.srcElement;d&&d.className.indexOf("edui-editor-imagescale-hand")==-1&&(h=setTimeout(function(){b.hide(),b.target&&c.selection.getRange().selectNode(d).select()},200))}),domUtils.on(b.resizer,"mouseup",function(a){var b=a.target||a.srcElement;b&&b.className.indexOf("edui-editor-imagescale-hand")==-1&&clearTimeout(h)})}b.show(g)}else b&&"none"!=b.resizer.style.display&&b.hide()}),browser.webkit&&c.addListener("click",function(a,b){if("IMG"==b.target.tagName&&"false"!=c.body.contentEditable){var d=new dom.Range(c.document);d.selectNode(b.target).select()}})}}(),UE.plugin.register("autolink",function(){var a=0;return browser.ie?{}:{bindEvents:{reset:function(){a=0},keydown:function(a,b){var c=this,d=b.keyCode||b.which;if(32==d||13==d){for(var e,f,g=c.selection.getNative(),h=g.getRangeAt(0).cloneRange(),i=h.startContainer;1==i.nodeType&&h.startOffset>0&&(i=h.startContainer.childNodes[h.startOffset-1]);)h.setStart(i,1==i.nodeType?i.childNodes.length:i.nodeValue.length),h.collapse(!0),i=h.startContainer;do{if(0==h.startOffset){for(i=h.startContainer.previousSibling;i&&1==i.nodeType;)i=i.lastChild;if(!i||domUtils.isFillChar(i))break;e=i.nodeValue.length}else i=h.startContainer,e=h.startOffset;h.setStart(i,e-1),f=h.toString().charCodeAt(0)}while(160!=f&&32!=f);if(h.toString().replace(new RegExp(domUtils.fillChar,"g"),"").match(/(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i)){for(;h.toString().length&&!/^(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i.test(h.toString());)try{h.setStart(h.startContainer,h.startOffset+1)}catch(j){for(var i=h.startContainer;!(next=i.nextSibling);){if(domUtils.isBody(i))return;i=i.parentNode}h.setStart(next,0)}if(domUtils.findParentByTagName(h.startContainer,"a",!0))return;var k,l=c.document.createElement("a"),m=c.document.createTextNode(" ");c.undoManger&&c.undoManger.save(),l.appendChild(h.extractContents()),l.href=l.innerHTML=l.innerHTML.replace(/<[^>]+>/g,""),k=l.getAttribute("href").replace(new RegExp(domUtils.fillChar,"g"),""),k=/^(?:https?:\/\/)/gi.test(k)?k:"http://"+k,l.setAttribute("_src",utils.html(k)),l.href=utils.html(k),h.insertNode(l),l.parentNode.insertBefore(m,l.nextSibling),h.setStart(m,0),h.collapse(!0),g.removeAllRanges(),g.addRange(h),c.undoManger&&c.undoManger.save()}}}}}},function(){function a(a){if(3==a.nodeType)return null;if("A"==a.nodeName)return a;for(var b=a.lastChild;b;){if("A"==b.nodeName)return b;if(3==b.nodeType){if(domUtils.isWhitespace(b)){b=b.previousSibling;continue}return null}b=b.lastChild}}var b={37:1,38:1,39:1,40:1,13:1,32:1};browser.ie&&this.addListener("keyup",function(c,d){var e=this,f=d.keyCode;if(b[f]){var g=e.selection.getRange(),h=g.startContainer;if(13==f){for(;h&&!domUtils.isBody(h)&&!domUtils.isBlockElm(h);)h=h.parentNode;if(h&&!domUtils.isBody(h)&&"P"==h.nodeName){var i=h.previousSibling;if(i&&1==i.nodeType){var i=a(i);i&&!i.getAttribute("_href")&&domUtils.remove(i,!0)}}}else if(32==f)3==h.nodeType&&/^\s$/.test(h.nodeValue)&&(h=h.previousSibling,h&&"A"==h.nodeName&&!h.getAttribute("_href")&&domUtils.remove(h,!0));else if(h=domUtils.findParentByTagName(h,"a",!0),h&&!h.getAttribute("_href")){var j=g.createBookmark();domUtils.remove(h,!0),g.moveToBookmark(j).select(!0)}}})}),UE.plugins.autoheight=function(){function a(){var a=this;clearTimeout(e),f||(!a.queryCommandState||a.queryCommandState&&1!=a.queryCommandState("source"))&&(e=setTimeout(function(){for(var b=a.body.lastChild;b&&1!=b.nodeType;)b=b.previousSibling;b&&1==b.nodeType&&(b.style.clear="both",d=Math.max(domUtils.getXY(b).y+b.offsetHeight+25,Math.max(h.minFrameHeight,h.initialFrameHeight)),d!=g&&(d!==parseInt(a.iframe.parentNode.style.height)&&(a.iframe.parentNode.style.height=d+"px"),a.body.style.height=d+"px",g=d),domUtils.removeStyle(b,"clear"))},50))}var b=this;if(b.autoHeightEnabled=b.options.autoHeightEnabled!==!1,b.autoHeightEnabled){var c,d,e,f,g=0,h=b.options;b.addListener("fullscreenchanged",function(a,b){f=b}),b.addListener("destroy",function(){b.removeListener("contentchange afterinserthtml keyup mouseup",a)}),b.enableAutoHeight=function(){var b=this;if(b.autoHeightEnabled){var d=b.document;b.autoHeightEnabled=!0,c=d.body.style.overflowY,d.body.style.overflowY="hidden",b.addListener("contentchange afterinserthtml keyup mouseup",a),setTimeout(function(){a.call(b)},browser.gecko?100:0),b.fireEvent("autoheightchanged",b.autoHeightEnabled)}},b.disableAutoHeight=function(){b.body.style.overflowY=c||"",b.removeListener("contentchange",a),b.removeListener("keyup",a),b.removeListener("mouseup",a),b.autoHeightEnabled=!1,b.fireEvent("autoheightchanged",b.autoHeightEnabled)},b.on("setHeight",function(){b.disableAutoHeight()}),b.addListener("ready",function(){b.enableAutoHeight();var c;domUtils.on(browser.ie?b.body:b.document,browser.webkit?"dragover":"drop",function(){ +clearTimeout(c),c=setTimeout(function(){a.call(b)},100)});var d;window.onscroll=function(){null===d?d=this.scrollY:0==this.scrollY&&0!=d&&(b.window.scrollTo(0,0),d=null)}})}},UE.plugins.autofloat=function(){function a(){return UE.ui?1:(alert(g.autofloatMsg),0)}function b(){var a=document.body.style;a.backgroundImage='url("about:blank")',a.backgroundAttachment="fixed"}function c(){var a=domUtils.getXY(k),b=domUtils.getComputedStyle(k,"position"),c=domUtils.getComputedStyle(k,"left");k.style.width=k.offsetWidth+"px",k.style.zIndex=1*f.options.zIndex+1,k.parentNode.insertBefore(q,k),o||p&&browser.ie?("absolute"!=k.style.position&&(k.style.position="absolute"),k.style.top=(document.body.scrollTop||document.documentElement.scrollTop)-l+i+"px"):(browser.ie7Compat&&r&&(r=!1,k.style.left=domUtils.getXY(k).x-document.documentElement.getBoundingClientRect().left+2+"px"),"fixed"!=k.style.position&&(k.style.position="fixed",k.style.top=i+"px",("absolute"==b||"relative"==b)&&parseFloat(c)&&(k.style.left=a.x+"px")))}function d(){r=!0,q.parentNode&&q.parentNode.removeChild(q),k.style.cssText=j}function e(){var a=m(f.container),b=f.options.toolbarTopOffset||0;a.top<0&&a.bottom-k.offsetHeight>b?c():d()}var f=this,g=f.getLang();f.setOpt({topOffset:0});var h=f.options.autoFloatEnabled!==!1,i=f.options.topOffset;if(h){var j,k,l,m,n=UE.ui.uiUtils,o=browser.ie&&browser.version<=6,p=browser.quirks,q=document.createElement("div"),r=!0,s=utils.defer(function(){e()},browser.ie?200:100,!0);f.addListener("destroy",function(){domUtils.un(window,["scroll","resize"],e),f.removeListener("keydown",s)}),f.addListener("ready",function(){if(a(f)){if(!f.ui)return;m=n.getClientRect,k=f.ui.getDom("toolbarbox"),l=m(k).top,j=k.style.cssText,q.style.height=k.offsetHeight+"px",o&&b(),domUtils.on(window,["scroll","resize"],e),f.addListener("keydown",s),f.addListener("beforefullscreenchange",function(a,b){b&&d()}),f.addListener("fullscreenchanged",function(a,b){b||e()}),f.addListener("sourcemodechanged",function(a,b){setTimeout(function(){e()},0)}),f.addListener("clearDoc",function(){setTimeout(function(){e()},0)})}})}},UE.plugins.video=function(){function a(a,b,d,e,f,g,h){a=utils.unhtmlForUrl(a),f=utils.unhtml(f),g=utils.unhtml(g).trim(),b=parseInt(b,10)||0,d=parseInt(d,10)||0;var i;switch(h){case"image":i="';break;case"embed":i='';break;case"video":var j=a.substr(a.lastIndexOf(".")+1);"ogv"==j&&(j="ogg"),i="'}return i}function b(b,c){utils.each(b.getNodesByTagName(c?"img":"embed video"),function(b){var d=b.getAttr("class");if(d&&d.indexOf("edui-faked-video")!=-1){var e=a(c?b.getAttr("_url"):b.getAttr("src"),b.getAttr("width"),b.getAttr("height"),null,b.getStyle("float")||"",d,c?"embed":"image");b.parentNode.replaceChild(UE.uNode.createElement(e),b)}if(d&&d.indexOf("edui-upload-video")!=-1){var e=a(c?b.getAttr("_url"):b.getAttr("src"),b.getAttr("width"),b.getAttr("height"),null,b.getStyle("float")||"",d,c?"video":"image");b.parentNode.replaceChild(UE.uNode.createElement(e),b)}})}var c=this;c.addOutputRule(function(a){b(a,!0)}),c.addInputRule(function(a){b(a)}),c.commands.insertvideo={execCommand:function(b,d,e){d=utils.isArray(d)?d:[d];for(var f,g,h=[],i="tmpVedio",j=0,k=d.length;j0)return 0;for(var c in dtd.$isNotEmpty)if(dtd.$isNotEmpty.hasOwnProperty(c)&&a.getElementsByTagName(c).length)return 0;return 1},b.getWidth=function(a){return a?parseInt(domUtils.getComputedStyle(a,"width"),10):0},b.getTableCellAlignState=function(a){!utils.isArray(a)&&(a=[a]);var b={},c=["align","valign"],d=null,e=!0;return utils.each(a,function(a){return utils.each(c,function(c){if(d=a.getAttribute(c),!b[c]&&d)b[c]=d;else if(!b[c]||d!==b[c])return e=!1,!1}),e}),e?b:null},b.getTableItemsByRange=function(a){var b=a.selection.getStart();b&&b.id&&0===b.id.indexOf("_baidu_bookmark_start_")&&b.nextSibling&&(b=b.nextSibling);var c=b&&domUtils.findParentByTagName(b,["td","th"],!0),d=c&&c.parentNode,e=b&&domUtils.findParentByTagName(b,"caption",!0),f=e?e.parentNode:d&&d.parentNode.parentNode;return{cell:c,tr:d,table:f,caption:e}},b.getUETableBySelected=function(a){var c=b.getTableItemsByRange(a).table;return c&&c.ueTable&&c.ueTable.selectedTds.length?c.ueTable:null},b.getDefaultValue=function(a,b){var c,d,e,f,g={thin:"0px",medium:"1px",thick:"2px"};if(b)return h=b.getElementsByTagName("td")[0],f=domUtils.getComputedStyle(b,"border-left-width"),c=parseInt(g[f]||f,10),f=domUtils.getComputedStyle(h,"padding-left"),d=parseInt(g[f]||f,10),f=domUtils.getComputedStyle(h,"border-left-width"),e=parseInt(g[f]||f,10),{tableBorder:c,tdPadding:d,tdBorder:e};b=a.document.createElement("table"),b.insertRow(0).insertCell(0).innerHTML="xxx",a.body.appendChild(b);var h=b.getElementsByTagName("td")[0];return f=domUtils.getComputedStyle(b,"border-left-width"),c=parseInt(g[f]||f,10),f=domUtils.getComputedStyle(h,"padding-left"),d=parseInt(g[f]||f,10),f=domUtils.getComputedStyle(h,"border-left-width"),e=parseInt(g[f]||f,10),domUtils.remove(b),{tableBorder:c,tdPadding:d,tdBorder:e}},b.getUETable=function(a){var c=a.tagName.toLowerCase();return a="td"==c||"th"==c||"caption"==c?domUtils.findParentByTagName(a,"table",!0):a,a.ueTable||(a.ueTable=new b(a)),a.ueTable},b.cloneCell=function(a,b,c){if(!a||utils.isString(a))return this.table.ownerDocument.createElement(a||"td");var d=domUtils.hasClass(a,"selectTdClass");d&&domUtils.removeClasses(a,"selectTdClass");var e=a.cloneNode(!0);return b&&(e.rowSpan=e.colSpan=1),!c&&domUtils.removeAttributes(e,"width height"),!c&&domUtils.removeAttributes(e,"style"),e.style.borderLeftStyle="",e.style.borderTopStyle="",e.style.borderLeftColor=a.style.borderRightColor,e.style.borderLeftWidth=a.style.borderRightWidth,e.style.borderTopColor=a.style.borderBottomColor,e.style.borderTopWidth=a.style.borderBottomWidth,d&&domUtils.addClass(a,"selectTdClass"),e},b.prototype={getMaxRows:function(){for(var a,b=this.table.rows,c=1,d=0;a=b[d];d++){for(var e,f=1,g=0;e=a.cells[g++];)f=Math.max(e.rowSpan||1,f);c=Math.max(f+d,c)}return c},getMaxCols:function(){for(var a,b=this.table.rows,c=0,d={},e=0;a=b[e];e++){for(var f,g=0,h=0;f=a.cells[h++];)if(g+=f.colSpan||1,f.rowSpan&&f.rowSpan>1)for(var i=1;ithis.rowsNum-1)?null:(e=c?h?i.endRowIndex+1:g.rowIndex+g.rowSpan:h?i.beginRowIndex-1:g.rowIndex-1,f=h?i.beginColIndex:g.colIndex,this.getCell(this.indexTable[e][f].rowIndex,this.indexTable[e][f].cellIndex))}catch(j){a(j)}},getSameEndPosCells:function(b,c){try{for(var d="x"===c.toLowerCase(),e=domUtils.getXY(b)[d?"x":"y"]+b["offset"+(d?"Width":"Height")],f=this.table.rows,g=null,h=[],i=0;ie&&d)break;if((b==j||e==l)&&(1==j[d?"colSpan":"rowSpan"]&&h.push(j),d))break}}return h}catch(m){a(m)}},setCellContent:function(a,b){a.innerHTML=b||(browser.ie?domUtils.fillChar:"
    ")},cloneCell:b.cloneCell,getSameStartPosXCells:function(b){try{for(var c,d=domUtils.getXY(b).x+b.offsetWidth,e=this.table.rows,f=[],g=0;gd)break;if(j==d&&1==h.colSpan){f.push(h);break}}}return f}catch(k){a(k)}},update:function(a){this.table=a||this.table,this.selectedTds=[],this.cellsRange={},this.indexTable=[];for(var b=this.table.rows,c=this.getMaxRows(),d=c-b.length,e=this.getMaxCols();d--;)this.table.insertRow(b.length);this.rowsNum=c,this.colsNum=e;for(var f=0,g=b.length;fc&&(j.rowSpan=c);for(var m=k,n=j.rowSpan||1,o=j.colSpan||1;this.indexTable[i][m];)m++;for(var p=0;p0)for(h=b;hf&&(m=Math.max(h,m));if(ee&&(l=Math.max(i,l));if(b>0)for(i=a;ig||d+b.colSpan-1>h)return null;j.push(this.getCell(c,b.cellIndex))}}return j},clearSelected:function(){b.removeSelectedClass(this.selectedTds),this.selectedTds=[],this.cellsRange={}},setSelected:function(a){var c=this.getCells(a);b.addSelectedClass(c),this.selectedTds=c,this.cellsRange=a},isFullRow:function(){var a=this.cellsRange;return a.endColIndex-a.beginColIndex+1==this.colsNum},isFullCol:function(){var a=this.cellsRange,b=this.table,c=b.getElementsByTagName("th"),d=a.endRowIndex-a.beginRowIndex+1;return c.length?d==this.rowsNum||d==this.rowsNum-1:d==this.rowsNum},getNextCell:function(b,c,d){try{var e,f,g=this.getCellInfo(b),h=this.selectedTds.length&&!d,i=this.cellsRange;return!c&&0==g.rowIndex||c&&(h?i.endRowIndex==this.rowsNum-1:g.rowIndex+g.rowSpan>this.rowsNum-1)?null:(e=c?h?i.endRowIndex+1:g.rowIndex+g.rowSpan:h?i.beginRowIndex-1:g.rowIndex-1,f=h?i.beginColIndex:g.colIndex,this.getCell(this.indexTable[e][f].rowIndex,this.indexTable[e][f].cellIndex))}catch(j){a(j)}},getPreviewCell:function(b,c){try{var d,e,f=this.getCellInfo(b),g=this.selectedTds.length,h=this.cellsRange;return!c&&(g?!h.beginColIndex:!f.colIndex)||c&&(g?h.endColIndex==this.colsNum-1:f.rowIndex>this.colsNum-1)?null:(d=c?g?h.beginRowIndex:f.rowIndex<1?0:f.rowIndex-1:g?h.beginRowIndex:f.rowIndex,e=c?g?h.endColIndex+1:f.colIndex:g?h.beginColIndex-1:f.colIndex<1?0:f.colIndex-1,this.getCell(this.indexTable[d][e].rowIndex,this.indexTable[d][e].cellIndex))}catch(i){a(i)}},moveContent:function(a,c){if(!b.isEmptyBlock(c)){if(b.isEmptyBlock(a))return void(a.innerHTML=c.innerHTML);var d=a.lastChild;for(3!=d.nodeType&&dtd.$block[d.tagName]||a.appendChild(a.ownerDocument.createElement("br"));d=c.firstChild;)a.appendChild(d)}},mergeRight:function(a){var b=this.getCellInfo(a),c=b.colIndex+b.colSpan,d=this.indexTable[b.rowIndex][c],e=this.getCell(d.rowIndex,d.cellIndex);a.colSpan=b.colSpan+d.colSpan,a.removeAttribute("width"),this.moveContent(a,e),this.deleteCell(e,d.rowIndex),this.update()},mergeDown:function(a){var b=this.getCellInfo(a),c=b.rowIndex+b.rowSpan,d=this.indexTable[c][b.colIndex],e=this.getCell(d.rowIndex,d.cellIndex);a.rowSpan=b.rowSpan+d.rowSpan,a.removeAttribute("height"),this.moveContent(a,e),this.deleteCell(e,d.rowIndex),this.update()},mergeRange:function(){var a=this.cellsRange,b=this.getCell(a.beginRowIndex,this.indexTable[a.beginRowIndex][a.beginColIndex].cellIndex);if("TH"==b.tagName&&a.endRowIndex!==a.beginRowIndex){var c=this.indexTable,d=this.getCellInfo(b);b=this.getCell(1,c[1][d.colIndex].cellIndex),a=this.getCellsRange(b,this.getCell(c[this.rowsNum-1][d.colIndex].rowIndex,c[this.rowsNum-1][d.colIndex].cellIndex))}for(var e,f=this.getCells(a),g=0;e=f[g++];)e!==b&&(this.moveContent(b,e),this.deleteCell(e));if(b.rowSpan=a.endRowIndex-a.beginRowIndex+1,b.rowSpan>1&&b.removeAttribute("height"),b.colSpan=a.endColIndex-a.beginColIndex+1,b.colSpan>1&&b.removeAttribute("width"),b.rowSpan==this.rowsNum&&1!=b.colSpan&&(b.colSpan=1),b.colSpan==this.colsNum&&1!=b.rowSpan){var h=b.parentNode.rowIndex;if(this.table.deleteRow)for(var g=h+1,i=h+1,j=b.rowSpan;g1&&g.rowIndex==a){var i=h.cloneNode(!0);i.rowSpan=h.rowSpan-1,i.innerHTML="",h.rowSpan=1;var j,k=a+1,l=this.table.rows[k],m=this.getPreviewMergedCellsNum(k,f)-e;m1?l.colSpan--:c[h].deleteCell(j.cellIndex),h+=j.rowSpan||1}}this.table.setAttribute("width",d-e),this.update()},splitToCells:function(a){var b=this,c=this.splitToRows(a);utils.each(c,function(a){b.splitToCols(a)})},splitToRows:function(a){var b=this.getCellInfo(a),c=b.rowIndex,d=b.colIndex,e=[];a.rowSpan=1,e.push(a);for(var f=c,g=c+b.rowSpan;f");for(var g=0;g'+(browser.ie&&browser.version<11?domUtils.fillChar:"
    ")+"");c.push("")}return"
    "+c.join("")+"
    "}b||(b=utils.extend({},{numCols:this.options.defaultCols,numRows:this.options.defaultRows,tdvalign:this.options.tdvalign}));var d=this,e=this.selection.getRange(),f=e.startContainer,h=domUtils.findParent(f,function(a){return domUtils.isBlockElm(a)},!0)||d.body,i=g(d),j=h.offsetWidth,k=Math.floor(j/b.numCols-2*i.tdPadding-i.tdBorder);!b.tdvalign&&(b.tdvalign=d.options.tdvalign),d.execCommand("inserthtml",c(b,k))}},UE.commands.insertparagraphbeforetable={queryCommandState:function(){return e(this).cell?0:-1},execCommand:function(){var a=e(this).table;if(a){var b=this.document.createElement("p");b.innerHTML=browser.ie?" ":"
    ",a.parentNode.insertBefore(b,a),this.selection.getRange().setStart(b,0).setCursor()}}},UE.commands.deletetable={queryCommandState:function(){var a=this.selection.getRange();return domUtils.findParentByTagName(a.startContainer,"table",!0)?0:-1},execCommand:function(a,b){var c=this.selection.getRange();if(b=b||domUtils.findParentByTagName(c.startContainer,"table",!0)){var d=b.nextSibling;d||(d=domUtils.createElement(this.document,"p",{innerHTML:browser.ie?domUtils.fillChar:"
    "}),b.parentNode.insertBefore(d,b)),domUtils.remove(b),c=this.selection.getRange(),3==d.nodeType?c.setStartBefore(d):c.setStart(d,0),c.setCursor(!1,!0),this.fireEvent("tablehasdeleted")}}},UE.commands.cellalign={queryCommandState:function(){return c(this).length?0:-1},execCommand:function(a,b){var d=c(this);if(d.length)for(var e,f=0;e=d[f++];)e.setAttribute("align",b)}},UE.commands.cellvalign={queryCommandState:function(){return c(this).length?0:-1},execCommand:function(a,b){var d=c(this);if(d.length)for(var e,f=0;e=d[f++];)e.setAttribute("vAlign",b)}},UE.commands.insertcaption={queryCommandState:function(){var a=e(this).table;return a&&0==a.getElementsByTagName("caption").length?1:-1},execCommand:function(){var a=e(this).table;if(a){var b=this.document.createElement("caption");b.innerHTML=browser.ie?domUtils.fillChar:"
    ",a.insertBefore(b,a.firstChild);var c=this.selection.getRange();c.setStart(b,0).setCursor()}}},UE.commands.deletecaption={queryCommandState:function(){var a=this.selection.getRange(),b=domUtils.findParentByTagName(a.startContainer,"table");return b?0==b.getElementsByTagName("caption").length?-1:1:-1},execCommand:function(){var a=this.selection.getRange(),b=domUtils.findParentByTagName(a.startContainer,"table");if(b){domUtils.remove(b.getElementsByTagName("caption")[0]);var c=this.selection.getRange();c.setStart(b.rows[0].cells[0],0).setCursor()}}},UE.commands.inserttitle={queryCommandState:function(){var a=e(this).table;if(a){var b=a.rows[0];return"th"!=b.cells[b.cells.length-1].tagName.toLowerCase()?0:-1}return-1},execCommand:function(){var a=e(this).table;a&&h(a).insertRow(0,"th");var b=a.getElementsByTagName("th")[0];this.selection.getRange().setStart(b,0).setCursor(!1,!0)}},UE.commands.deletetitle={queryCommandState:function(){var a=e(this).table;if(a){var b=a.rows[0];return"th"==b.cells[b.cells.length-1].tagName.toLowerCase()?0:-1}return-1},execCommand:function(){var a=e(this).table;a&&domUtils.remove(a.rows[0]);var b=a.getElementsByTagName("td")[0];this.selection.getRange().setStart(b,0).setCursor(!1,!0)}},UE.commands.inserttitlecol={queryCommandState:function(){var a=e(this).table;if(a){var b=a.rows[a.rows.length-1];return b.getElementsByTagName("th").length?-1:0}return-1},execCommand:function(b){var c=e(this).table;c&&h(c).insertCol(0,"th"),a(c,this);var d=c.getElementsByTagName("th")[0];this.selection.getRange().setStart(d,0).setCursor(!1,!0)}},UE.commands.deletetitlecol={queryCommandState:function(){var a=e(this).table;if(a){var b=a.rows[a.rows.length-1];return b.getElementsByTagName("th").length?0:-1}return-1},execCommand:function(){var b=e(this).table;if(b)for(var c=0;c=f.colsNum)return-1;var j=f.indexTable[g.rowIndex][i],k=c.rows[j.rowIndex].cells[j.cellIndex];return k&&d.tagName==k.tagName&&j.rowIndex==g.rowIndex&&j.rowSpan==g.rowSpan?0:-1},execCommand:function(a){var b=this.selection.getRange(),c=b.createBookmark(!0),d=e(this).cell,f=h(d);f.mergeRight(d),b.moveToBookmark(c).select()}},UE.commands.mergedown={queryCommandState:function(a){var b=e(this),c=b.table,d=b.cell;if(!c||!d)return-1;var f=h(c);if(f.selectedTds.length)return-1;var g=f.getCellInfo(d),i=g.rowIndex+g.rowSpan;if(i>=f.rowsNum)return-1;var j=f.indexTable[i][g.colIndex],k=c.rows[j.rowIndex].cells[j.cellIndex];return k&&d.tagName==k.tagName&&j.colIndex==g.colIndex&&j.colSpan==g.colSpan?0:-1},execCommand:function(){var a=this.selection.getRange(),b=a.createBookmark(!0),c=e(this).cell,d=h(c);d.mergeDown(c),a.moveToBookmark(b).select()}},UE.commands.mergecells={queryCommandState:function(){return f(this)?0:-1},execCommand:function(){var a=f(this);if(a&&a.selectedTds.length){var b=a.selectedTds[0];a.mergeRange();var c=this.selection.getRange();domUtils.isEmptyBlock(b)?c.setStart(b,0).collapse(!0):c.selectNodeContents(b),c.select()}}},UE.commands.insertrow={queryCommandState:function(){var a=e(this),b=a.cell;return b&&("TD"==b.tagName||"TH"==b.tagName&&a.tr!==a.table.rows[0])&&h(a.table).rowsNum0?-1:b&&(b.colSpan>1||b.rowSpan>1)?0:-1},execCommand:function(){var a=this.selection.getRange(),b=a.createBookmark(!0),c=e(this).cell,d=h(c);d.splitToCells(c),a.moveToBookmark(b).select()}},UE.commands.splittorows={queryCommandState:function(){var a=e(this),b=a.cell;if(!b)return-1;var c=h(a.table);return c.selectedTds.length>0?-1:b&&b.rowSpan>1?0:-1},execCommand:function(){var a=this.selection.getRange(),b=a.createBookmark(!0),c=e(this).cell,d=h(c);d.splitToRows(c),a.moveToBookmark(b).select()}},UE.commands.splittocols={queryCommandState:function(){var a=e(this),b=a.cell;if(!b)return-1;var c=h(a.table);return c.selectedTds.length>0?-1:b&&b.colSpan>1?0:-1},execCommand:function(){var a=this.selection.getRange(),b=a.createBookmark(!0),c=e(this).cell,d=h(c);d.splitToCols(c),a.moveToBookmark(b).select()}},UE.commands.adaptbytext=UE.commands.adaptbywindow={queryCommandState:function(){return e(this).table?0:-1},execCommand:function(b){var c=e(this),d=c.table;if(d)if("adaptbywindow"==b)a(d,this);else{var f=domUtils.getElementsByTagName(d,"td th");utils.each(f,function(a){a.removeAttribute("width")}),d.removeAttribute("width")}}},UE.commands.averagedistributecol={queryCommandState:function(){var a=f(this);return a&&(a.isFullRow()||a.isFullCol())?0:-1},execCommand:function(a){function b(){var a,b=e.table,c=0,f=0,h=g(d,b);if(e.isFullRow())c=b.offsetWidth,f=e.colsNum;else for(var i,j=e.cellsRange.beginColIndex,k=e.cellsRange.endColIndex,l=j;l<=k;)i=e.selectedTds[l],c+=i.offsetWidth,l+=i.colSpan,f+=1;return a=Math.ceil(c/f)-2*h.tdBorder-2*h.tdPadding}function c(a){utils.each(domUtils.getElementsByTagName(e.table,"th"),function(a){a.setAttribute("width","")});var b=e.isFullRow()?domUtils.getElementsByTagName(e.table,"td"):e.selectedTds;utils.each(b,function(b){1==b.colSpan&&b.setAttribute("width",a)})}var d=this,e=f(d);e&&e.selectedTds.length&&c(b())}},UE.commands.averagedistributerow={queryCommandState:function(){var a=f(this);return a?a.selectedTds&&/th/gi.test(a.selectedTds[0].tagName)?-1:a.isFullRow()||a.isFullCol()?0:-1:-1},execCommand:function(a){function b(){var a,b,c=0,f=e.table,h=g(d,f),i=parseInt(domUtils.getComputedStyle(f.getElementsByTagName("td")[0],"padding-top"));if(e.isFullCol()){var j,k,l=domUtils.getElementsByTagName(f,"caption"),m=domUtils.getElementsByTagName(f,"th");l.length>0&&(j=l[0].offsetHeight),m.length>0&&(k=m[0].offsetHeight),c=f.offsetHeight-(j||0)-(k||0),b=0==m.length?e.rowsNum:e.rowsNum-1}else{for(var n=e.cellsRange.beginRowIndex,o=e.cellsRange.endRowIndex,p=0,q=domUtils.getElementsByTagName(f,"tr"),r=n;r<=o;r++)c+=q[r].offsetHeight,p+=1;b=p}return a=browser.ie&&browser.version<9?Math.ceil(c/b):Math.ceil(c/b)-2*h.tdBorder-2*i}function c(a){var b=e.isFullCol()?domUtils.getElementsByTagName(e.table,"td"):e.selectedTds;utils.each(b,function(b){1==b.rowSpan&&b.setAttribute("height",a)})}var d=this,e=f(d);e&&e.selectedTds.length&&c(b())}},UE.commands.cellalignment={queryCommandState:function(){return e(this).table?0:-1},execCommand:function(a,b){var c=this,d=f(c);if(d)utils.each(d.selectedTds,function(a){domUtils.setAttributes(a,b)});else{var e=c.selection.getStart(),g=e&&domUtils.findParentByTagName(e,["td","th","caption"],!0);/caption/gi.test(g.tagName)?(g.style.textAlign=b.align,g.style.verticalAlign=b.vAlign):domUtils.setAttributes(g,b),c.selection.getRange().setCursor(!0)}},queryCommandValue:function(a){var b=e(this).cell;if(b||(b=c(this)[0]),b){var d=UE.UETable.getUETable(b).selectedTds;return!d.length&&(d=b),UE.UETable.getTableCellAlignState(d)}return null}},UE.commands.tablealignment={queryCommandState:function(){return browser.ie&&browser.version<8?-1:e(this).table?0:-1},execCommand:function(a,b){var c=this,d=c.selection.getStart(),e=d&&domUtils.findParentByTagName(d,["table"],!0);e&&e.setAttribute("align",b)}},UE.commands.edittable={queryCommandState:function(){return e(this).table?0:-1},execCommand:function(a,b){var c=this.selection.getRange(),d=domUtils.findParentByTagName(c.startContainer,"table");if(d){var e=domUtils.getElementsByTagName(d,"td").concat(domUtils.getElementsByTagName(d,"th"),domUtils.getElementsByTagName(d,"caption"));utils.each(e,function(a){a.style.borderColor=b})}}},UE.commands.edittd={queryCommandState:function(){return e(this).table?0:-1},execCommand:function(a,b){var c=this,d=f(c);if(d)utils.each(d.selectedTds,function(a){a.style.backgroundColor=b});else{var e=c.selection.getStart(),g=e&&domUtils.findParentByTagName(e,["td","th","caption"],!0);g&&(g.style.backgroundColor=b)}}},UE.commands.settablebackground={queryCommandState:function(){return c(this).length>1?0:-1},execCommand:function(a,b){var d,e;d=c(this),e=h(d[0]),e.setBackground(d,b)}},UE.commands.cleartablebackground={queryCommandState:function(){var a=c(this);if(!a.length)return-1;for(var b,d=0;b=a[d++];)if(""!==b.style.backgroundColor)return 0;return-1},execCommand:function(){var a=c(this),b=h(a[0]);b.removeBackground(a)}},UE.commands.interlacetable=UE.commands.uninterlacetable={queryCommandState:function(a){var b=e(this).table;if(!b)return-1;var c=b.getAttribute("interlaced");return"interlacetable"==a?"enabled"===c?-1:0:c&&"disabled"!==c?0:-1},execCommand:function(a,b){var c=e(this).table;"interlacetable"==a?(c.setAttribute("interlaced","enabled"),this.fireEvent("interlacetable",c,b)):(c.setAttribute("interlaced","disabled"),this.fireEvent("uninterlacetable",c))}},UE.commands.setbordervisible={queryCommandState:function(a){var b=e(this).table;return b?0:-1},execCommand:function(){var a=e(this).table;utils.each(domUtils.getElementsByTagName(a,"td"),function(a){a.style.borderWidth="1px",a.style.borderStyle="solid"})}}}(),UE.plugins.table=function(){function a(a){}function b(a,b){c(a,"width",!0),c(a,"height",!0)}function c(a,b,c){a.style[b]&&(c&&a.setAttribute(b,parseInt(a.style[b],10)),a.style[b]="")}function d(a){if("TD"==a.tagName||"TH"==a.tagName)return a;var b;return(b=domUtils.findParentByTagName(a,"td",!0)||domUtils.findParentByTagName(a,"th",!0))?b:null}function e(a){var b=new RegExp(domUtils.fillChar,"g");if(a[browser.ie?"innerText":"textContent"].replace(/^\s*$/,"").replace(b,"").length>0)return 0;for(var c in dtd.$isNotEmpty)if(a.getElementsByTagName(c).length)return 0;return 1}function f(a){return a.pageX||a.pageY?{x:a.pageX,y:a.pageY}:{x:a.clientX+N.document.body.scrollLeft-N.document.body.clientLeft,y:a.clientY+N.document.body.scrollTop-N.document.body.clientTop}}function g(b){if(!A())try{var c,e=d(b.target||b.srcElement);if(R&&(N.body.style.webkitUserSelect="none",(Math.abs(V.x-b.clientX)>T||Math.abs(V.y-b.clientY)>T)&&(t(),R=!1,U=0,v(b))),ca&&ha)return U=0,N.body.style.webkitUserSelect="none",N.selection.getNative()[browser.ie9below?"empty":"removeAllRanges"](),c=f(b),m(N,!0,ca,c,e),void("h"==ca?ga.style.left=k(ha,b)+"px":"v"==ca&&(ga.style.top=l(ha,b)+"px"));if(e){if(N.fireEvent("excludetable",e)===!0)return;c=f(b);var g=n(e,c),i=domUtils.findParentByTagName(e,"table",!0);if(j(i,e,b,!0)){if(N.fireEvent("excludetable",i)===!0)return;N.body.style.cursor="url("+N.options.cursorpath+"h.png),pointer"}else if(j(i,e,b)){if(N.fireEvent("excludetable",i)===!0)return;N.body.style.cursor="url("+N.options.cursorpath+"v.png),pointer"}else{N.body.style.cursor="text";/\d/.test(g)&&(g=g.replace(/\d/,""),e=Y(e).getPreviewCell(e,"v"==g)),m(N,!!e&&!!g,e?g:"",c,e)}}else h(!1,i,N)}catch(o){a(o)}}function h(a,b,c){if(a)i(b,c);else{if(fa)return;la=setTimeout(function(){!fa&&ea&&ea.parentNode&&ea.parentNode.removeChild(ea)},2e3)}}function i(a,b){function c(c,d){clearTimeout(g),g=setTimeout(function(){b.fireEvent("tableClicked",a,d)},300)}function d(c){clearTimeout(g);var d=Y(a),e=a.rows[0].cells[0],f=d.getLastCell(),h=d.getCellsRange(e,f);b.selection.getRange().setStart(e,0).setCursor(!1,!0),d.setSelected(h)}var e=domUtils.getXY(a),f=a.ownerDocument;if(ea&&ea.parentNode)return ea;ea=f.createElement("div"),ea.contentEditable=!1,ea.innerHTML="",ea.style.cssText="width:15px;height:15px;background-image:url("+b.options.UEDITOR_HOME_URL+"dialogs/table/dragicon.png);position: absolute;cursor:move;top:"+(e.y-15)+"px;left:"+e.x+"px;",domUtils.unSelectable(ea),ea.onmouseover=function(a){fa=!0},ea.onmouseout=function(a){fa=!1},domUtils.on(ea,"click",function(a,b){c(b,this)}),domUtils.on(ea,"dblclick",function(a,b){d(b)}),domUtils.on(ea,"dragstart",function(a,b){domUtils.preventDefault(b)});var g;f.body.appendChild(ea)}function j(a,b,c,d){var e=f(c),g=n(b,e);if(d){var h=a.getElementsByTagName("caption")[0],i=h?h.offsetHeight:0;return"v1"==g&&e.y-domUtils.getXY(a).y-i<8}return"h1"==g&&e.x-domUtils.getXY(a).x<8}function k(a,b){var c=Y(a);if(c){var d=c.getSameEndPosCells(a,"x")[0],e=c.getSameStartPosXCells(a)[0],g=f(b).x,h=(d?domUtils.getXY(d).x:domUtils.getXY(c.table).x)+20,i=e?domUtils.getXY(e).x+e.offsetWidth-20:N.body.offsetWidth+5||parseInt(domUtils.getComputedStyle(N.body,"width"),10);return h+=Q,i-=Q,gi?i:g}}function l(b,c){try{var d=domUtils.getXY(b).y,e=f(c).y;return ek[c]?(a=!1,!1):void l.push(d)});var b=a?l:k;utils.each(i,function(a,c){a.width=b[c]-G()})},0)}}}}function q(a){if(_(domUtils.getElementsByTagName(N.body,"td th")),utils.each(N.document.getElementsByTagName("table"),function(a){a.ueTable=null}),aa=M(N,a)){var b=domUtils.findParentByTagName(aa,"table",!0);ut=Y(b),ut&&ut.clearSelected(),da?r(a):(N.document.body.style.webkitUserSelect="",ia=!0,N.addListener("mouseover",x))}}function r(a){browser.ie&&(a=u(a)),t(),R=!0,O=setTimeout(function(){v(a)},W)}function s(a,b){for(var c=[],d=null,e=0,f=a.length;e0&&U--},W),2===U))return U=0,void p(b);if(2!=b.button){var c=this,d=c.selection.getRange(),e=domUtils.findParentByTagName(d.startContainer,"table",!0),f=domUtils.findParentByTagName(d.endContainer,"table",!0);if((e||f)&&(e===f?(e=domUtils.findParentByTagName(d.startContainer,["td","th","caption"],!0),f=domUtils.findParentByTagName(d.endContainer,["td","th","caption"],!0),e!==f&&c.selection.clearRange()):c.selection.clearRange()),ia=!1,c.document.body.style.webkitUserSelect="",ca&&ha&&(c.selection.getNative()[browser.ie9below?"empty":"removeAllRanges"](),U=0,ga=c.document.getElementById("ue_tableDragLine"))){var g=domUtils.getXY(ha),h=domUtils.getXY(ga);switch(ca){case"h":z(ha,h.x-g.x);break;case"v":B(ha,h.y-g.y-ha.offsetHeight)}return ca="",ha=null,I(c),void c.fireEvent("saveScene")}if(aa){var i=Y(aa),j=i?i.selectedTds[0]:null;if(j)d=new dom.Range(c.document),domUtils.isEmptyBlock(j)?d.setStart(j,0).setCursor(!1,!0):d.selectNodeContents(j).shrinkBoundary().setCursor(!1,!0);else if(d=c.selection.getRange().shrinkBoundary(),!d.collapsed){var e=domUtils.findParentByTagName(d.startContainer,["td","th"],!0),f=domUtils.findParentByTagName(d.endContainer,["td","th"],!0);(e&&!f||!e&&f||e&&f&&e!==f)&&d.setCursor(!1,!0)}aa=null,c.removeListener("mouseover",x)}else{var k=domUtils.findParentByTagName(b.target||b.srcElement,"td",!0);if(k||(k=domUtils.findParentByTagName(b.target||b.srcElement,"th",!0)),k&&("TD"==k.tagName||"TH"==k.tagName)){if(c.fireEvent("excludetable",k)===!0)return;d=new dom.Range(c.document),d.setStart(k,0).setCursor(!1,!0)}}c._selectionChange(250,b)}}}function x(a,b){if(!A()){var c=this,d=b.target||b.srcElement;if(ba=domUtils.findParentByTagName(d,"td",!0)||domUtils.findParentByTagName(d,"th",!0),aa&&ba&&("TD"==aa.tagName&&"TD"==ba.tagName||"TH"==aa.tagName&&"TH"==ba.tagName)&&domUtils.findParentByTagName(aa,"table")==domUtils.findParentByTagName(ba,"table")){var e=Y(ba);if(aa!=ba){c.document.body.style.webkitUserSelect="none",c.selection.getNative()[browser.ie9below?"empty":"removeAllRanges"]();var f=e.getCellsRange(aa,ba);e.setSelected(f)}else c.document.body.style.webkitUserSelect="",e.clearSelected()}b.preventDefault?b.preventDefault():b.returnValue=!1}}function y(a,b,c){var d=parseInt(domUtils.getComputedStyle(a,"line-height"),10),e=c+b;b=ef?(c&&g.push({left:a}),!1):void 0})}),g}function D(a,b,c){if(a-=G(),a<0)return 0;a-=E(b);var d=a<0?"left":"right";return a=Math.abs(a),utils.each(c,function(b){var c=b[d];c&&(a=Math.min(a,E(c)-Q))}),a=a<0?0:a,"left"===d?-a:a}function E(a){var b=0,b=a.offsetWidth-G();a.nextSibling||(b-=F(a)),b=b<0?0:b;try{a.width=b}catch(c){}return b}function F(a){if(tab=domUtils.findParentByTagName(a,"table",!1),void 0===tab.offsetVal){var b=a.previousSibling;b?tab.offsetVal=a.offsetWidth-b.offsetWidth===X.borderWidth?X.borderWidth:0:tab.offsetVal=0}return tab.offsetVal}function G(){if(void 0===X.tabcellSpace){var a=N.document.createElement("table"),b=N.document.createElement("tbody"),c=N.document.createElement("tr"),d=N.document.createElement("td"),e=null;d.style.cssText="border: 0;",d.width=1,c.appendChild(d),c.appendChild(e=d.cloneNode(!1)),b.appendChild(c),a.appendChild(b),a.style.cssText="visibility: hidden;",N.body.appendChild(a),X.paddingSpace=d.offsetWidth-1;var f=a.offsetWidth;d.style.cssText="",e.style.cssText="",X.borderWidth=(a.offsetWidth-f)/3,X.tabcellSpace=X.paddingSpace+X.borderWidth,N.body.removeChild(a)}return G=function(){return X.tabcellSpace},X.tabcellSpace}function H(a,b){ia||(ga=a.document.createElement("div"),domUtils.setAttributes(ga,{id:"ue_tableDragLine",unselectable:"on",contenteditable:!1,onresizestart:"return false",ondragstart:"return false",onselectstart:"return false",style:"background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)"}),a.body.appendChild(ga))}function I(a){if(!ia)for(var b;b=a.document.getElementById("ue_tableDragLine");)domUtils.remove(b)}function J(a,b){if(b){var c,d=domUtils.findParentByTagName(b,"table"),e=d.getElementsByTagName("caption"),f=d.offsetWidth,g=d.offsetHeight-(e.length>0?e[0].offsetHeight:0),h=domUtils.getXY(d),i=domUtils.getXY(b);switch(a){case"h":c="height:"+g+"px;top:"+(h.y+(e.length>0?e[0].offsetHeight:0))+"px;left:"+(i.x+b.offsetWidth),ga.style.cssText=c+"px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)";break;case"v":c="width:"+f+"px;left:"+h.x+"px;top:"+(i.y+b.offsetHeight),ga.style.cssText=c+"px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)"}}}function K(a,b){for(var c,d,e=domUtils.getElementsByTagName(a.body,"table"),f=0;d=e[f++];){var g=domUtils.getElementsByTagName(d,"td");g[0]&&(b?(c=g[0].style.borderColor.replace(/\s/g,""),/(#ffffff)|(rgb\(255,255,255\))/gi.test(c)&&domUtils.addClass(d,"noBorderTable")):domUtils.removeClasses(d,"noBorderTable"))}}function L(a,b,c){var d=a.body;return d.offsetWidth-(b?2*parseInt(domUtils.getComputedStyle(d,"margin-left"),10):0)-2*c.tableBorder-(a.options.offsetWidth||0)}function M(a,b){var c=domUtils.findParentByTagName(b.target||b.srcElement,["td","th"],!0),d=null;if(!c)return null;if(d=n(c,f(b)),!c)return null;if("h1"===d&&c.previousSibling){var e=domUtils.getXY(c),g=c.offsetWidth;Math.abs(e.x+g-b.clientX)>g/3&&(c=c.previousSibling)}else if("v1"===d&&c.parentNode.previousSibling){var e=domUtils.getXY(c),h=c.offsetHeight;Math.abs(e.y+h-b.clientY)>h/3&&(c=c.parentNode.previousSibling.firstChild)}return c&&a.fireEvent("excludetable",c)!==!0?c:null}var N=this,O=null,P=null,Q=5,R=!1,S=5,T=10,U=0,V=null,W=360,X=UE.UETable,Y=function(a){return X.getUETable(a)},Z=function(a){return X.getUETableBySelected(a)},$=function(a,b){return X.getDefaultValue(a,b)},_=function(a){return X.removeSelectedClass(a)};N.ready(function(){var a=this,b=a.selection.getText;a.selection.getText=function(){var c=Z(a);if(c){var d="";return utils.each(c.selectedTds,function(a){d+=a[browser.ie?"innerText":"textContent"]}),d}return b.call(a.selection)}});var aa=null,ba=null,ca="",da=!1,ea=null,fa=!1,ga=null,ha=null,ia=!1,ja=!0;N.setOpt({maxColNum:20,maxRowNum:100,defaultCols:5,defaultRows:5,tdvalign:"top",cursorpath:N.options.UEDITOR_HOME_URL+"themes/default/images/cursor_",tableDragable:!1,classList:["ue-table-interlace-color-single","ue-table-interlace-color-double"]}),N.getUETable=Y;var ka={deletetable:1,inserttable:1,cellvalign:1,insertcaption:1,deletecaption:1,inserttitle:1,deletetitle:1,mergeright:1,mergedown:1,mergecells:1,insertrow:1,insertrownext:1,deleterow:1,insertcol:1,insertcolnext:1,deletecol:1,splittocells:1,splittorows:1,splittocols:1,adaptbytext:1,adaptbywindow:1,adaptbycustomer:1,insertparagraph:1,insertparagraphbeforetable:1,averagedistributecol:1,averagedistributerow:1};N.ready(function(){utils.cssRule("table",".selectTdClass{background-color:#edf5fa !important}table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}table{margin-bottom:10px;border-collapse:collapse;display:table;}td,th{padding: 5px 10px;border: 1px solid #DDD;}caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}th{border-top:1px solid #BBB;background-color:#F7F7F7;}table tr.firstRow th{border-top-width:2px;}.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }td p{margin:0;padding:0;}",N.document);var a,c,f;N.addListener("keydown",function(b,d){var g=this,h=d.keyCode||d.which;if(8==h){var i=Z(g);i&&i.selectedTds.length&&(i.isFullCol()?g.execCommand("deletecol"):i.isFullRow()?g.execCommand("deleterow"):g.fireEvent("delcells"),domUtils.preventDefault(d));var j=domUtils.findParentByTagName(g.selection.getStart(),"caption",!0),k=g.selection.getRange();if(k.collapsed&&j&&e(j)){g.fireEvent("saveScene");var l=j.parentNode;domUtils.remove(j),l&&k.setStart(l.rows[0].cells[0],0).setCursor(!1,!0),g.fireEvent("saveScene")}}if(46==h&&(i=Z(g))){g.fireEvent("saveScene");for(var m,n=0;m=i.selectedTds[n++];)domUtils.fillNode(g.document,m);g.fireEvent("saveScene"),domUtils.preventDefault(d)}if(13==h){var o=g.selection.getRange(),j=domUtils.findParentByTagName(o.startContainer,"caption",!0);if(j){var l=domUtils.findParentByTagName(j,"table");return o.collapsed?j&&o.setStart(l.rows[0].cells[0],0).setCursor(!1,!0):(o.deleteContents(),g.fireEvent("saveScene")),void domUtils.preventDefault(d)}if(o.collapsed){var l=domUtils.findParentByTagName(o.startContainer,"table");if(l){var p=l.rows[0].cells[0],q=domUtils.findParentByTagName(g.selection.getStart(),["td","th"],!0),r=l.previousSibling;if(p===q&&(!r||1==r.nodeType&&"TABLE"==r.tagName)&&domUtils.isStartInblock(o)){var s=domUtils.findParent(g.selection.getStart(),function(a){return domUtils.isBlockElm(a)},!0);s&&(/t(h|d)/i.test(s.tagName)||s===q.firstChild)&&(g.execCommand("insertparagraphbeforetable"),domUtils.preventDefault(d))}}}}if((d.ctrlKey||d.metaKey)&&"67"==d.keyCode){a=null;var i=Z(g);if(i){var t=i.selectedTds;c=i.isFullCol(),f=i.isFullRow(),a=[[i.cloneCell(t[0],null,!0)]];for(var m,n=1;m=t[n];n++)m.parentNode!==t[n-1].parentNode?a.push([i.cloneCell(m,null,!0)]):a[a.length-1].push(i.cloneCell(m,null,!0))}}}),N.addListener("tablehasdeleted",function(){m(this,!1,"",null),ea&&domUtils.remove(ea)}),N.addListener("beforepaste",function(d,g){var h=this,i=h.selection.getRange();if(domUtils.findParentByTagName(i.startContainer,"caption",!0)){var j=h.document.createElement("div");return j.innerHTML=g.html,void(g.html=j[browser.ie9below?"innerText":"textContent"])}var k=Z(h);if(a){h.fireEvent("saveScene");var l,m,i=h.selection.getRange(),n=domUtils.findParentByTagName(i.startContainer,["td","th"],!0);if(n){var o=Y(n);if(f){var p=o.getCellInfo(n).rowIndex;"TH"==n.tagName&&p++;for(var q,r=0;q=a[r++];){for(var s,t=o.insertRow(p++,"td"),u=0;s=q[u];u++){var v=t.cells[u];v||(v=t.insertCell(u)),v.innerHTML=s.innerHTML,s.getAttribute("width")&&v.setAttribute("width",s.getAttribute("width")),s.getAttribute("vAlign")&&v.setAttribute("vAlign",s.getAttribute("vAlign")),s.getAttribute("align")&&v.setAttribute("align",s.getAttribute("align")),s.style.cssText&&(v.style.cssText=s.style.cssText)}for(var s,u=0;(s=t.cells[u])&&q[u];u++)s.innerHTML=q[u].innerHTML,q[u].getAttribute("width")&&s.setAttribute("width",q[u].getAttribute("width")),q[u].getAttribute("vAlign")&&s.setAttribute("vAlign",q[u].getAttribute("vAlign")),q[u].getAttribute("align")&&s.setAttribute("align",q[u].getAttribute("align")),q[u].style.cssText&&(s.style.cssText=q[u].style.cssText)}}else{if(c){y=o.getCellInfo(n);for(var s,w=0,u=0,q=a[0];s=q[u++];)w+=s.colSpan||1;for(h.__hasEnterExecCommand=!0,r=0;r1&&(x.rowSpan=1)}var z=$(h),A=h.body.offsetWidth-(ja?2*parseInt(domUtils.getComputedStyle(h.body,"margin-left"),10):0)-2*z.tableBorder-(h.options.offsetWidth||0);h.execCommand("insertHTML",""+k.innerHTML.replace(/>\s*<").replace(/\bth\b/gi,"td")+"
    ")}return h.fireEvent("contentchange"),h.fireEvent("saveScene"),g.html="",!0}var B,j=h.document.createElement("div");j.innerHTML=g.html,B=j.getElementsByTagName("table"),domUtils.findParentByTagName(h.selection.getStart(),"table")?(utils.each(B,function(a){domUtils.remove(a)}),domUtils.findParentByTagName(h.selection.getStart(),"caption",!0)&&(j.innerHTML=j[browser.ie?"innerText":"textContent"])):utils.each(B,function(a){b(a,!0),domUtils.removeAttributes(a,["style","border"]),utils.each(domUtils.getElementsByTagName(a,"td"),function(a){e(a)&&domUtils.fillNode(h.document,a),b(a,!0)})}),g.html=j.innerHTML}),N.addListener("afterpaste",function(){utils.each(domUtils.getElementsByTagName(N.body,"table"),function(a){if(a.offsetWidth>N.body.offsetWidth){var b=$(N,a);a.style.width=N.body.offsetWidth-(ja?2*parseInt(domUtils.getComputedStyle(N.body,"margin-left"),10):0)-2*b.tableBorder-(N.options.offsetWidth||0)+"px"}})}),N.addListener("blur",function(){a=null});var i;N.addListener("keydown",function(){clearTimeout(i),i=setTimeout(function(){var a=N.selection.getRange(),b=domUtils.findParentByTagName(a.startContainer,["th","td"],!0);if(b){var c=b.parentNode.parentNode.parentNode;c.offsetWidth>c.getAttribute("width")&&(b.style.wordBreak="break-all")}},100)}),N.addListener("selectionchange",function(){m(N,!1,"",null)}),N.addListener("contentchange",function(){var a=this;if(I(a),!Z(a)){var b=a.selection.getRange(),c=b.startContainer;c=domUtils.findParentByTagName(c,["td","th"],!0),utils.each(domUtils.getElementsByTagName(a.document,"table"),function(b){a.fireEvent("excludetable",b)!==!0&&(b.ueTable=new X(b),b.onmouseover=function(){a.fireEvent("tablemouseover",b)},b.onmousemove=function(){a.fireEvent("tablemousemove",b),a.options.tableDragable&&h(!0,this,a),utils.defer(function(){a.fireEvent("contentchange",50)},!0)},b.onmouseout=function(){a.fireEvent("tablemouseout",b),m(a,!1,"",null),I(a)},b.onclick=function(b){b=a.window.event||b;var c=d(b.target||b.srcElement);if(c){var e,f=Y(c),g=f.table,h=f.getCellInfo(c),i=a.selection.getRange();if(j(g,c,b,!0)){var k=f.getCell(f.indexTable[f.rowsNum-1][h.colIndex].rowIndex,f.indexTable[f.rowsNum-1][h.colIndex].cellIndex);return void(b.shiftKey&&f.selectedTds.length?f.selectedTds[0]!==k?(e=f.getCellsRange(f.selectedTds[0],k),f.setSelected(e)):i&&i.selectNodeContents(k).select():c!==k?(e=f.getCellsRange(c,k),f.setSelected(e)):i&&i.selectNodeContents(k).select())}if(j(g,c,b)){var l=f.getCell(f.indexTable[h.rowIndex][f.colsNum-1].rowIndex,f.indexTable[h.rowIndex][f.colsNum-1].cellIndex);b.shiftKey&&f.selectedTds.length?f.selectedTds[0]!==l?(e=f.getCellsRange(f.selectedTds[0],l),f.setSelected(e)):i&&i.selectNodeContents(l).select():c!==l?(e=f.getCellsRange(c,l),f.setSelected(e)):i&&i.selectNodeContents(l).select()}}})}),K(a,!0)}}),domUtils.on(N.document,"mousemove",g),domUtils.on(N.document,"mouseout",function(a){var b=a.target||a.srcElement;"TABLE"==b.tagName&&m(N,!1,"",null)}),N.addListener("interlacetable",function(a,b,c){if(b)for(var d=this,e=b.rows,f=e.length,g=function(a,b,c){return a[b]?a[b]:c?a[b%a.length]:""},h=0;h1?k:f.getCellInfo(d).rowIndex;var g=f.getTabNextCell(d,k);g?e(g)?a.setStart(g,0).setCursor(!1,!0):a.selectNodeContents(g).select():(N.fireEvent("saveScene"),N.__hasEnterExecCommand=!0,this.execCommand("insertrownext"),N.__hasEnterExecCommand=!1,a=this.selection.getRange(),a.setStart(c.rows[c.rows.length-1].cells[0],0).setCursor(),N.fireEvent("saveScene"))}return!0}}),browser.ie&&N.addListener("selectionchange",function(){m(this,!1,"",null)}),N.addListener("keydown",function(a,b){var c=this,d=b.keyCode||b.which;if(8!=d&&46!=d){var e=!(b.ctrlKey||b.metaKey||b.shiftKey||b.altKey);e&&_(domUtils.getElementsByTagName(c.body,"td"));var f=Z(c);f&&e&&f.clearSelected()}}),N.addListener("beforegetcontent",function(){K(this,!1),browser.ie&&utils.each(this.document.getElementsByTagName("caption"),function(a){domUtils.isEmptyNode(a)&&(a.innerHTML=" ")})}),N.addListener("aftergetcontent",function(){K(this,!0)}),N.addListener("getAllHtml",function(){_(N.document.getElementsByTagName("td"))}),N.addListener("fullscreenchanged",function(a,b){if(!b){var c=this.body.offsetWidth/document.body.offsetWidth,d=domUtils.getElementsByTagName(this.body,"table");utils.each(d,function(a){if(a.offsetWidth1||c[e].getAttribute("rowspan")>1)return-1;return b?"enablesort"==a^"sortEnabled"!=b.getAttribute("data-sort")?-1:0:-1},execCommand:function(a){var b=d(this).table;b.setAttribute("data-sort","enablesort"==a?"sortEnabled":"sortDisabled"),"enablesort"==a?domUtils.addClass(b,"sortEnabled"):domUtils.removeClasses(b,"sortEnabled")}}},UE.plugins.contextmenu=function(){var a=this;if(a.setOpt("enableContextMenu",!0),a.getOpt("enableContextMenu")!==!1){var b,c=a.getLang("contextMenu"),d=a.options.contextMenu||[{label:c.selectall,cmdName:"selectall"},{label:c.cleardoc,cmdName:"cleardoc",exec:function(){confirm(c.confirmclear)&&this.execCommand("cleardoc")}},"-",{label:c.unlink,cmdName:"unlink"},"-",{group:c.paragraph,icon:"justifyjustify",subMenu:[{label:c.justifyleft,cmdName:"justify",value:"left"},{label:c.justifyright,cmdName:"justify",value:"right"},{label:c.justifycenter,cmdName:"justify",value:"center"},{label:c.justifyjustify,cmdName:"justify",value:"justify"}]},"-",{group:c.table,icon:"table",subMenu:[{label:c.inserttable,cmdName:"inserttable"},{label:c.deletetable,cmdName:"deletetable"},"-",{label:c.deleterow,cmdName:"deleterow"},{label:c.deletecol,cmdName:"deletecol"},{label:c.insertcol,cmdName:"insertcol"},{label:c.insertcolnext,cmdName:"insertcolnext"},{label:c.insertrow,cmdName:"insertrow"},{label:c.insertrownext,cmdName:"insertrownext"},"-",{label:c.insertcaption,cmdName:"insertcaption"},{label:c.deletecaption,cmdName:"deletecaption"},{label:c.inserttitle,cmdName:"inserttitle"},{label:c.deletetitle,cmdName:"deletetitle"},{label:c.inserttitlecol,cmdName:"inserttitlecol"},{label:c.deletetitlecol,cmdName:"deletetitlecol"},"-",{label:c.mergecells,cmdName:"mergecells"},{label:c.mergeright,cmdName:"mergeright"},{label:c.mergedown,cmdName:"mergedown"},"-",{label:c.splittorows,cmdName:"splittorows"},{label:c.splittocols,cmdName:"splittocols"},{label:c.splittocells,cmdName:"splittocells"},"-",{label:c.averageDiseRow,cmdName:"averagedistributerow"},{label:c.averageDisCol,cmdName:"averagedistributecol"},"-",{label:c.edittd,cmdName:"edittd",exec:function(){UE.ui.edittd&&new UE.ui.edittd(this),this.getDialog("edittd").open()}},{label:c.edittable,cmdName:"edittable",exec:function(){UE.ui.edittable&&new UE.ui.edittable(this),this.getDialog("edittable").open()}},{label:c.setbordervisible,cmdName:"setbordervisible"}]},{group:c.tablesort,icon:"tablesort",subMenu:[{label:c.enablesort,cmdName:"enablesort"},{label:c.disablesort,cmdName:"disablesort"},"-",{label:c.reversecurrent,cmdName:"sorttable",value:"reversecurrent"},{label:c.orderbyasc,cmdName:"sorttable",value:"orderbyasc"},{label:c.reversebyasc,cmdName:"sorttable",value:"reversebyasc"},{label:c.orderbynum,cmdName:"sorttable",value:"orderbynum"},{label:c.reversebynum,cmdName:"sorttable",value:"reversebynum"}]},{group:c.borderbk,icon:"borderBack",subMenu:[{label:c.setcolor,cmdName:"interlacetable",exec:function(){this.execCommand("interlacetable")}},{label:c.unsetcolor,cmdName:"uninterlacetable",exec:function(){this.execCommand("uninterlacetable")}},{label:c.setbackground,cmdName:"settablebackground",exec:function(){this.execCommand("settablebackground",{repeat:!0,colorList:["#bbb","#ccc"]})}},{label:c.unsetbackground,cmdName:"cleartablebackground",exec:function(){this.execCommand("cleartablebackground")}},{label:c.redandblue,cmdName:"settablebackground",exec:function(){this.execCommand("settablebackground",{repeat:!0,colorList:["red","blue"]})}},{label:c.threecolorgradient,cmdName:"settablebackground",exec:function(){this.execCommand("settablebackground",{repeat:!0,colorList:["#aaa","#bbb","#ccc"]})}}]},{group:c.aligntd,icon:"aligntd",subMenu:[{cmdName:"cellalignment",value:{align:"left",vAlign:"top"}},{cmdName:"cellalignment",value:{align:"center",vAlign:"top"}},{cmdName:"cellalignment",value:{align:"right",vAlign:"top"}},{cmdName:"cellalignment",value:{align:"left",vAlign:"middle"}},{cmdName:"cellalignment",value:{align:"center",vAlign:"middle"}},{cmdName:"cellalignment",value:{align:"right",vAlign:"middle"}},{cmdName:"cellalignment",value:{align:"left",vAlign:"bottom"}},{cmdName:"cellalignment",value:{align:"center",vAlign:"bottom"}},{cmdName:"cellalignment",value:{align:"right",vAlign:"bottom"}}]},{group:c.aligntable,icon:"aligntable",subMenu:[{cmdName:"tablealignment",className:"left",label:c.tableleft,value:"left"},{cmdName:"tablealignment",className:"center",label:c.tablecenter,value:"center"},{cmdName:"tablealignment",className:"right",label:c.tableright,value:"right"}]},"-",{label:c.insertparagraphbefore,cmdName:"insertparagraph",value:!0},{label:c.insertparagraphafter,cmdName:"insertparagraph"},{label:c.copy,cmdName:"copy"},{label:c.paste,cmdName:"paste"}];if(d.length){var e=UE.ui.uiUtils;a.addListener("contextmenu",function(f,g){var h=e.getViewportOffsetByEvent(g);a.fireEvent("beforeselectionchange"),b&&b.destroy();for(var i,j=0,k=[];i=d[j];j++){var l;!function(b){function d(){switch(b.icon){case"table":return a.getLang("contextMenu.table");case"justifyjustify":return a.getLang("contextMenu.paragraph");case"aligntd":return a.getLang("contextMenu.aligntd");case"aligntable":return a.getLang("contextMenu.aligntable");case"tablesort":return c.tablesort;case"borderBack":return c.borderbk;default:return""}}if("-"==b)(l=k[k.length-1])&&"-"!==l&&k.push("-");else if(b.hasOwnProperty("group")){for(var e,f=0,g=[];e=b.subMenu[f];f++)!function(b){"-"==b?(l=g[g.length-1])&&"-"!==l?g.push("-"):g.splice(g.length-1):(a.commands[b.cmdName]||UE.commands[b.cmdName]||b.query)&&(b.query?b.query():a.queryCommandState(b.cmdName))>-1&&g.push({label:b.label||a.getLang("contextMenu."+b.cmdName+(b.value||""))||"",className:"edui-for-"+b.cmdName+(b.className?" edui-for-"+b.cmdName+"-"+b.className:""),onclick:b.exec?function(){b.exec.call(a)}:function(){a.execCommand(b.cmdName,b.value)}})}(e);g.length&&k.push({label:d(),className:"edui-for-"+b.icon,subMenu:{items:g,editor:a}})}else(a.commands[b.cmdName]||UE.commands[b.cmdName]||b.query)&&(b.query?b.query.call(a):a.queryCommandState(b.cmdName))>-1&&k.push({label:b.label||a.getLang("contextMenu."+b.cmdName),className:"edui-for-"+(b.icon?b.icon:b.cmdName+(b.value||"")),onclick:b.exec?function(){b.exec.call(a)}:function(){a.execCommand(b.cmdName,b.value)}})}(i)}if("-"==k[k.length-1]&&k.pop(),b=new UE.ui.Menu({items:k,className:"edui-contextmenu",editor:a}),b.render(),b.showAt(h),a.fireEvent("aftershowcontextmenu",b),domUtils.preventDefault(g),browser.ie){var m;try{m=a.selection.getNative().createRange()}catch(n){return}if(m.item){var o=new dom.Range(a.document);o.selectNode(m.item(0)).select(!0,!0)}}}),a.addListener("aftershowcontextmenu",function(b,c){if(a.zeroclipboard){var d=c.items;for(var e in d)"edui-for-copy"==d[e].className&&a.zeroclipboard.clip(d[e].getDom())}})}}},UE.plugins.shortcutmenu=function(){var a,b=this,c=b.options.shortcutMenu||[];c.length&&(b.addListener("contextmenu mouseup",function(b,d){var e=this,f={type:b,target:d.target||d.srcElement,screenX:d.screenX,screenY:d.screenY,clientX:d.clientX,clientY:d.clientY};if(setTimeout(function(){var d=e.selection.getRange();d.collapsed!==!1&&"contextmenu"!=b||(a||(a=new baidu.editor.ui.ShortCutMenu({editor:e,items:c,theme:e.options.theme,className:"edui-shortcutmenu"}),a.render(),e.fireEvent("afterrendershortcutmenu",a)),a.show(f,!!UE.plugins.contextmenu))}),"contextmenu"==b&&(domUtils.preventDefault(d),browser.ie9below)){var g;try{g=e.selection.getNative().createRange()}catch(d){return}if(g.item){var h=new dom.Range(e.document);h.selectNode(g.item(0)).select(!0,!0)}}}),b.addListener("keydown",function(b){"keydown"==b&&a&&!a.isHidden&&a.hide()}))},UE.plugins.basestyle=function(){var a={bold:["strong","b"],italic:["em","i"],subscript:["sub"],superscript:["sup"]},b=function(a,b){return domUtils.filterNodeList(a.selection.getStartElementPath(),b)},c=this;c.addshortcutkey({Bold:"ctrl+66",Italic:"ctrl+73",Underline:"ctrl+85"}),c.addInputRule(function(a){utils.each(a.getNodesByTagName("b i"),function(a){switch(a.tagName){case"b":a.tagName="strong";break;case"i":a.tagName="em"}})});for(var d in a)!function(a,d){c.commands[a]={execCommand:function(a){var e=c.selection.getRange(),f=b(this,d);if(e.collapsed){if(f){var g=c.document.createTextNode("");e.insertNode(g).removeInlineStyle(d),e.setStartBefore(g),domUtils.remove(g)}else{var h=e.document.createElement(d[0]);"superscript"!=a&&"subscript"!=a||(g=c.document.createTextNode(""),e.insertNode(g).removeInlineStyle(["sub","sup"]).setStartBefore(g).collapse(!0)),e.insertNode(h).setStart(h,0)}e.collapse(!0)}else"superscript"!=a&&"subscript"!=a||f&&f.tagName.toLowerCase()==a||e.removeInlineStyle(["sub","sup"]),f?e.removeInlineStyle(d):e.applyInlineStyle(d[0]);e.select()},queryCommandState:function(){return b(this,d)?1:0}}}(d,a[d])},UE.plugins.elementpath=function(){var a,b,c=this;c.setOpt("elementPathEnabled",!0),c.options.elementPathEnabled&&(c.commands.elementpath={execCommand:function(d,e){var f=b[e],g=c.selection.getRange();a=1*e,g.selectNode(f).select()},queryCommandValue:function(){var c=[].concat(this.selection.getStartElementPath()).reverse(),d=[];b=c;for(var e,f=0;e=c[f];f++)if(3!=e.nodeType){var g=e.tagName.toLowerCase();if("img"==g&&e.getAttribute("anchorname")&&(g="anchor"),d[f]=g,a==f){a=-1;break}}return d}})},UE.plugins.formatmatch=function(){function a(f,g){function h(a){return m&&a.selectNode(m),a.applyInlineStyle(d[d.length-1].tagName,null,d)}if(browser.webkit)var i="IMG"==g.target.tagName?g.target:null;c.undoManger&&c.undoManger.save();var j=c.selection.getRange(),k=i||j.getClosedNode();if(b&&k&&"IMG"==k.tagName)k.style.cssText+=";float:"+(b.style.cssFloat||b.style.styleFloat||"none")+";display:"+(b.style.display||"inline"),b=null;else if(!b){var l=j.collapsed;if(l){var m=c.document.createTextNode("match");j.insertNode(m).select()}c.__hasEnterExecCommand=!0;var n=c.options.removeFormatAttributes;c.options.removeFormatAttributes="",c.execCommand("removeformat"),c.options.removeFormatAttributes=n,c.__hasEnterExecCommand=!1,j=c.selection.getRange(),d.length&&h(j),m&&j.setStartBefore(m).collapse(!0),j.select(),m&&domUtils.remove(m)}c.undoManger&&c.undoManger.save(),c.removeListener("mouseup",a),e=0}var b,c=this,d=[],e=0;c.addListener("reset",function(){d=[],e=0}),c.commands.formatmatch={execCommand:function(f){if(e)return e=0,d=[],void c.removeListener("mouseup",a);var g=c.selection.getRange();if(b=g.getClosedNode(),!b||"IMG"!=b.tagName){g.collapse(!0).shrinkBoundary();var h=g.startContainer;d=domUtils.findParents(h,!0,function(a){return!domUtils.isBlockElm(a)&&1==a.nodeType});for(var i,j=0;i=d[j];j++)if("A"==i.tagName){d.splice(j,1);break}}c.addListener("mouseup",a),e=1},queryCommandState:function(){return e},notNeedUndo:1}},UE.plugin.register("searchreplace",function(){function a(a,b,c){var d=b.searchStr;b.dir==-1&&(a=a.split("").reverse().join(""),d=d.split("").reverse().join(""),c=a.length-c);for(var e,f=new RegExp(d,"g"+(b.casesensitive?"":"i"));e=f.exec(a);)if(e.index>=c)return b.dir==-1?a.length-e.index-b.searchStr.length:e.index;return-1}function b(b,c,d){var e,f,h=d.all||1==d.dir?"getNextDomNode":"getPreDomNode";domUtils.isBody(b)&&(b=b.firstChild);for(var i=1;b;){if(e=3==b.nodeType?b.nodeValue:b[browser.ie?"innerText":"textContent"],f=a(e,d,c),i=0,f!=-1)return{node:b,index:f};for(b=domUtils[h](b);b&&g[b.nodeName.toLowerCase()];)b=domUtils[h](b,!0);b&&(c=d.dir==-1?(3==b.nodeType?b.nodeValue:b[browser.ie?"innerText":"textContent"]).length:0)}}function c(a,b,d){for(var e,f=0,g=a.firstChild,h=0;g;){if(3==g.nodeType){if(h=g.nodeValue.replace(/(^[\t\r\n]+)|([\t\r\n]+$)/,"").length,f+=h,f>=b)return{node:g,index:h-(f-b)}}else if(!dtd.$empty[g.tagName]&&(h=g[browser.ie?"innerText":"textContent"].replace(/(^[\t\r\n]+)|([\t\r\n]+$)/,"").length,f+=h,f>=b&&(e=c(g,h-(f-b),d))))return e;g=domUtils.getNextDomNode(g)}}function d(a,d){var f,g=a.selection.getRange(),h=d.searchStr,i=a.document.createElement("span");if(i.innerHTML="$$ueditor_searchreplace_key$$",g.shrinkBoundary(!0),!g.collapsed){g.select();var j=a.selection.getText();if(new RegExp("^"+d.searchStr+"$",d.casesensitive?"":"i").test(j)){if(void 0!=d.replaceStr)return e(g,d.replaceStr),g.select(),!0;g.collapse(d.dir==-1)}}g.insertNode(i),g.enlargeToBlockElm(!0),f=g.startContainer;var k=f[browser.ie?"innerText":"textContent"].indexOf("$$ueditor_searchreplace_key$$");g.setStartBefore(i),domUtils.remove(i);var l=b(f,k,d);if(l){var m=c(l.node,l.index,h),n=c(l.node,l.index+h.length,h);return g.setStart(m.node,m.index).setEnd(n.node,n.index),void 0!==d.replaceStr&&e(g,d.replaceStr),g.select(),!0}g.setCursor()}function e(a,b){b=f.document.createTextNode(b),a.deleteContents().insertNode(b)}var f=this,g={table:1,tbody:1,tr:1,ol:1,ul:1};return{commands:{searchreplace:{execCommand:function(a,b){utils.extend(b,{all:!1,casesensitive:!1,dir:1},!0);var c=0;if(b.all){var e=f.selection.getRange(),g=f.body.firstChild;for(g&&1==g.nodeType?(e.setStart(g,0),e.shrinkBoundary(!0)):3==g.nodeType&&e.setStartBefore(g),e.collapse(!0).select(!0),void 0!==b.replaceStr&&f.fireEvent("saveScene");d(this,b);)c++;c&&f.fireEvent("saveScene")}else void 0!==b.replaceStr&&f.fireEvent("saveScene"),d(this,b)&&c++,c&&f.fireEvent("saveScene");return c},notNeedUndo:1}}}}),UE.plugins.customstyle=function(){var a=this;a.setOpt({customstyle:[{tag:"h1",name:"tc",style:"font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;"},{tag:"h1",name:"tl",style:"font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;"},{tag:"span",name:"im",style:"font-size:16px;font-style:italic;font-weight:bold;line-height:18px;"},{tag:"span",name:"hi",style:"font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;"}]}),a.commands.customstyle={execCommand:function(a,b){var c,d,e=this,f=b.tag,g=domUtils.findParent(e.selection.getStart(),function(a){return a.getAttribute("label")},!0),h={};for(var i in b)void 0!==b[i]&&(h[i]=b[i]);if(delete h.tag,g&&g.getAttribute("label")==b.label){if(c=this.selection.getRange(),d=c.createBookmark(),c.collapsed)if(dtd.$block[g.tagName]){var j=e.document.createElement("p");domUtils.moveChild(g,j),g.parentNode.insertBefore(j,g),domUtils.remove(g)}else domUtils.remove(g,!0);else{var k=domUtils.getCommonAncestor(d.start,d.end),l=domUtils.getElementsByTagName(k,f);new RegExp(f,"i").test(k.tagName)&&l.push(k);for(var m,n=0;m=l[n++];)if(m.getAttribute("label")==b.label){var o=domUtils.getPosition(m,d.start),p=domUtils.getPosition(m,d.end);if((o&domUtils.POSITION_FOLLOWING||o&domUtils.POSITION_CONTAINS)&&(p&domUtils.POSITION_PRECEDING||p&domUtils.POSITION_CONTAINS)&&dtd.$block[f]){var j=e.document.createElement("p");domUtils.moveChild(m,j),m.parentNode.insertBefore(j,m)}domUtils.remove(m,!0)}g=domUtils.findParent(k,function(a){return a.getAttribute("label")==b.label},!0),g&&domUtils.remove(g,!0)}c.moveToBookmark(d).select()}else if(dtd.$block[f]){if(this.execCommand("paragraph",f,h,"customstyle"),c=e.selection.getRange(),!c.collapsed){c.collapse(),g=domUtils.findParent(e.selection.getStart(),function(a){return a.getAttribute("label")==b.label},!0);var q=e.document.createElement("p");domUtils.insertAfter(g,q),domUtils.fillNode(e.document,q),c.setStart(q,0).setCursor()}}else{if(c=e.selection.getRange(),c.collapsed)return g=e.document.createElement(f),domUtils.setAttributes(g,h),void c.insertNode(g).setStart(g,0).setCursor();d=c.createBookmark(),c.applyInlineStyle(f,h).moveToBookmark(d).select()}},queryCommandValue:function(){var a=domUtils.filterNodeList(this.selection.getStartElementPath(),function(a){return a.getAttribute("label")});return a?a.getAttribute("label"):""}},a.addListener("keyup",function(b,c){var d=c.keyCode||c.which;if(32==d||13==d){var e=a.selection.getRange();if(e.collapsed){var f=domUtils.findParent(a.selection.getStart(),function(a){return a.getAttribute("label")},!0);if(f&&dtd.$block[f.tagName]&&domUtils.isEmptyNode(f)){var g=a.document.createElement("p");domUtils.insertAfter(f,g),domUtils.fillNode(a.document,g),domUtils.remove(f),e.setStart(g,0).setCursor()}}}})},UE.plugins.catchremoteimage=function(){var me=this,ajax=UE.ajax;me.options.catchRemoteImageEnable!==!1&&(me.setOpt({catchRemoteImageEnable:!1}),me.addListener("afterpaste",function(){me.fireEvent("catchRemoteImage")}),me.addListener("catchRemoteImage",function(){function catchremoteimage(a,b){var c=utils.serializeParam(me.queryCommandValue("serverparam"))||"",d=utils.formatUrl(catcherActionUrl+(catcherActionUrl.indexOf("?")==-1?"?":"&")+c),e=utils.isCrossDomainUrl(d),f={method:"POST",dataType:e?"jsonp":"",timeout:6e4,onsuccess:b.success,onerror:b.error};f[catcherFieldName]=a,ajax.request(d,f)}for(var catcherLocalDomain=me.getOpt("catcherLocalDomain"),catcherActionUrl=me.getActionUrl(me.getOpt("catcherActionName")),catcherUrlPrefix=me.getOpt("catcherUrlPrefix"),catcherFieldName=me.getOpt("catcherFieldName"),remoteImages=[],imgs=domUtils.getElementsByTagName(me.document,"img"),test=function(a,b){if(a.indexOf(location.host)!=-1||/(^\.)|(^\/)/.test(a))return!0;if(b)for(var c,d=0;c=b[d++];)if(a.indexOf(c)!==-1)return!0;return!1},i=0,ci;ci=imgs[i++];)if(!ci.getAttribute("word_img")){var src=ci.getAttribute("_src")||ci.src||"";/^(https?|ftp):/i.test(src)&&!test(src,catcherLocalDomain)&&remoteImages.push(src)}remoteImages.length&&catchremoteimage(remoteImages,{success:function(r){try{var info=void 0!==r.state?r:eval("("+r.responseText+")")}catch(e){return}var i,j,ci,cj,oldSrc,newSrc,list=info.list;for(i=0;ci=imgs[i++];)for(oldSrc=ci.getAttribute("_src")||ci.src||"",j=0;cj=list[j++];)if(oldSrc==cj.source&&"SUCCESS"==cj.state){newSrc=catcherUrlPrefix+cj.url,domUtils.setAttributes(ci,{src:newSrc,_src:newSrc});break}me.fireEvent("catchremotesuccess")},error:function(){me.fireEvent("catchremoteerror")}})}))},UE.plugin.register("snapscreen",function(){function getLocation(a){var b,c=document.createElement("a"),d=utils.serializeParam(me.queryCommandValue("serverparam"))||"";return c.href=a,browser.ie&&(c.href=c.href),b=c.search,d&&(b=b+(b.indexOf("?")==-1?"?":"&")+d,b=b.replace(/[&]+/gi,"&")),{port:c.port,hostname:c.hostname,path:c.pathname+b||+c.hash}}var me=this,snapplugin;return{commands:{snapscreen:{execCommand:function(cmd){function onSuccess(rs){try{if(rs=eval("("+rs+")"),"SUCCESS"==rs.state){var opt=me.options;me.execCommand("insertimage",{src:opt.snapscreenUrlPrefix+rs.url,_src:opt.snapscreenUrlPrefix+rs.url,alt:rs.title||"",floatStyle:opt.snapscreenImgAlign})}else alert(rs.state)}catch(e){alert(lang.callBackErrorMsg)}}var url,local,res,lang=me.getLang("snapScreen_plugin");if(!snapplugin){var container=me.container,doc=me.container.ownerDocument||me.container.document;snapplugin=doc.createElement("object");try{snapplugin.type="application/x-pluginbaidusnap"}catch(e){return}snapplugin.style.cssText="position:absolute;left:-9999px;width:0;height:0;",snapplugin.setAttribute("width","0"),snapplugin.setAttribute("height","0"),container.appendChild(snapplugin)}url=me.getActionUrl(me.getOpt("snapscreenActionName")),local=getLocation(url),setTimeout(function(){try{res=snapplugin.saveSnapshot(local.hostname,local.path,local.port)}catch(a){return void me.ui._dialogs.snapscreenDialog.open()}onSuccess(res)},50)},queryCommandState:function(){return navigator.userAgent.indexOf("Windows",0)!=-1?0:-1}}}}}),UE.commands.insertparagraph={execCommand:function(a,b){for(var c,d=this,e=d.selection.getRange(),f=e.startContainer;f&&!domUtils.isBody(f);)c=f,f=f.parentNode;if(c){var g=d.document.createElement("p");b?c.parentNode.insertBefore(g,c):c.parentNode.insertBefore(g,c.nextSibling),domUtils.fillNode(d.document,g),e.setStart(g,0).setCursor(!1,!0)}}},UE.plugin.register("webapp",function(){function a(a,c){return c?'':'"}var b=this;return{outputRule:function(b){utils.each(b.getNodesByTagName("img"),function(b){var c;if("edui-faked-webapp"==b.getAttr("class")){c=a({title:b.getAttr("title"),width:b.getAttr("width"),height:b.getAttr("height"),align:b.getAttr("align"),cssfloat:b.getStyle("float"),url:b.getAttr("_url"),logo:b.getAttr("_logo_url")},!0);var d=UE.uNode.createElement(c);b.parentNode.replaceChild(d,b)}})},inputRule:function(b){utils.each(b.getNodesByTagName("iframe"),function(b){if("edui-faked-webapp"==b.getAttr("class")){var c=UE.uNode.createElement(a({title:b.getAttr("title"),width:b.getAttr("width"),height:b.getAttr("height"),align:b.getAttr("align"),cssfloat:b.getStyle("float"),url:b.getAttr("src"),logo:b.getAttr("logo_url")}));b.parentNode.replaceChild(c,b)}})},commands:{webapp:{execCommand:function(b,c){var d=this,e=a(utils.extend(c,{align:"none"}),!1);d.execCommand("inserthtml",e)},queryCommandState:function(){var a=this,b=a.selection.getRange().getClosedNode(),c=b&&"edui-faked-webapp"==b.className;return c?1:0}}}}}),UE.plugins.template=function(){UE.commands.template={execCommand:function(a,b){b.html&&this.execCommand("inserthtml",b.html)}},this.addListener("click",function(a,b){var c=b.target||b.srcElement,d=this.selection.getRange(),e=domUtils.findParent(c,function(a){if(a.className&&domUtils.hasClass(a,"ue_t"))return a},!0);e&&d.selectNode(e).shrinkBoundary().select()}),this.addListener("keydown",function(a,b){var c=this.selection.getRange();if(!c.collapsed&&!(b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)){var d=domUtils.findParent(c.startContainer,function(a){if(a.className&&domUtils.hasClass(a,"ue_t"))return a},!0);d&&domUtils.removeClasses(d,["ue_t"])}})},UE.plugin.register("music",function(){function a(a,c,d,e,f,g){return g?'':"'}var b=this;return{outputRule:function(b){utils.each(b.getNodesByTagName("img"),function(b){var c;if("edui-faked-music"==b.getAttr("class")){var d=b.getStyle("float"),e=b.getAttr("align");c=a(b.getAttr("_url"),b.getAttr("width"),b.getAttr("height"),e,d,!0);var f=UE.uNode.createElement(c);b.parentNode.replaceChild(f,b)}})},inputRule:function(b){utils.each(b.getNodesByTagName("embed"),function(b){if("edui-faked-music"==b.getAttr("class")){var c=b.getStyle("float"),d=b.getAttr("align");html=a(b.getAttr("src"),b.getAttr("width"),b.getAttr("height"),d,c,!1);var e=UE.uNode.createElement(html);b.parentNode.replaceChild(e,b)}})},commands:{music:{execCommand:function(b,c){var d=this,e=a(c.url,c.width||400,c.height||95,"none",!1);d.execCommand("inserthtml",e)},queryCommandState:function(){var a=this,b=a.selection.getRange().getClosedNode(),c=b&&"edui-faked-music"==b.className;return c?1:0}}}}}),UE.plugin.register("autoupload",function(){function a(a,b){var c,d,e,f,g,h,i,j,k=b,l=/image\/\w+/i.test(a.type)?"image":"file",m="loading_"+(+new Date).toString(36);if(c=k.getOpt(l+"FieldName"),d=k.getOpt(l+"UrlPrefix"),e=k.getOpt(l+"MaxSize"),f=k.getOpt(l+"AllowFiles"),g=k.getActionUrl(k.getOpt(l+"ActionName")),i=function(a){var b=k.document.getElementById(m);b&&domUtils.remove(b),k.fireEvent("showmessage",{id:m,content:a,type:"error",timeout:4e3})},"image"==l?(h='',j=function(a){var b=d+a.url,c=k.document.getElementById(m);c&&(c.setAttribute("src",b),c.setAttribute("_src",b),c.setAttribute("title",a.title||""),c.setAttribute("alt",a.original||""),c.removeAttribute("id"),domUtils.removeClasses(c,"loadingclass"))}):(h='

    ',j=function(a){var b=d+a.url,c=k.document.getElementById(m),e=k.selection.getRange(),f=e.createBookmark();e.selectNode(c).select(),k.execCommand("insertfile",{url:b}),e.moveToBookmark(f).select()}),k.execCommand("inserthtml",h),!k.getOpt(l+"ActionName"))return void i(k.getLang("autoupload.errorLoadConfig"));if(a.size>e)return void i(k.getLang("autoupload.exceedSizeError"));var n=a.name?a.name.substr(a.name.lastIndexOf(".")):"";if(n&&"image"!=l||f&&(f.join("")+".").indexOf(n.toLowerCase()+".")==-1)return void i(k.getLang("autoupload.exceedTypeError"));var o=new XMLHttpRequest,p=new FormData,q=utils.serializeParam(k.queryCommandValue("serverparam"))||"",r=utils.formatUrl(g+(g.indexOf("?")==-1?"?":"&")+q);p.append(c,a,a.name||"blob."+a.type.substr("image/".length)),p.append("type","ajax"),o.open("post",r,!0),o.setRequestHeader("X-Requested-With","XMLHttpRequest"),o.addEventListener("load",function(a){try{var b=new Function("return "+utils.trim(a.target.response))();"SUCCESS"==b.state&&b.url?j(b):i(b.state)}catch(c){i(k.getLang("autoupload.loadError"))}}),o.send(p)}function b(a){return a.clipboardData&&a.clipboardData.items&&1==a.clipboardData.items.length&&/^image\//.test(a.clipboardData.items[0].type)?a.clipboardData.items:null}function c(a){return a.dataTransfer&&a.dataTransfer.files?a.dataTransfer.files:null}return{outputRule:function(a){utils.each(a.getNodesByTagName("img"),function(a){/\b(loaderrorclass)|(bloaderrorclass)\b/.test(a.getAttr("class"))&&a.parentNode.removeChild(a)}),utils.each(a.getNodesByTagName("p"),function(a){/\bloadpara\b/.test(a.getAttr("class"))&&a.parentNode.removeChild(a)})},bindEvents:{ready:function(d){var e=this;window.FormData&&window.FileReader&&(domUtils.on(e.body,"paste drop",function(d){var f,g=!1;if(f="paste"==d.type?b(d):c(d)){for(var h,i=f.length;i--;)h=f[i],h.getAsFile&&(h=h.getAsFile()),h&&h.size>0&&(a(h,e),g=!0);g&&d.preventDefault()}}),domUtils.on(e.body,"dragover",function(a){"Files"==a.dataTransfer.types[0]&&a.preventDefault()}),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:1px solid #cccccc;margin-left: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:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}",this.document))}}}}),UE.plugin.register("autosave",function(){function a(a){var f;if(!(new Date-c0?b._saveFlag=window.setTimeout(function(){a(b)},b.options.saveInterval):a(b))}},commands:{clearlocaldata:{execCommand:function(a,c){e&&b.getPreferences(e)&&b.removePreferences(e)},notNeedUndo:!0,ignoreContentChange:!0},getlocaldata:{execCommand:function(a,c){return e?b.getPreferences(e)||"":""},notNeedUndo:!0,ignoreContentChange:!0},drafts:{execCommand:function(a,c){e&&(b.body.innerHTML=b.getPreferences(e)||"

    "+domUtils.fillHtml+"

    ",b.focus(!0))},queryCommandState:function(){return e?null===b.getPreferences(e)?-1:0:-1},notNeedUndo:!0,ignoreContentChange:!0}}}}),UE.plugin.register("charts",function(){function a(a){var b=null,c=0;if(a.rows.length<2)return!1;if(a.rows[0].cells.length<2)return!1;b=a.rows[0].cells,c=b.length;for(var d,e=0;d=b[e];e++)if("th"!==d.tagName.toLowerCase())return!1;for(var f,e=1;f=a.rows[e];e++){if(f.cells.length!=c)return!1;if("th"!==f.cells[0].tagName.toLowerCase())return!1;for(var d,g=1;d=f.cells[g];g++){var h=utils.trim(d.innerText||d.textContent||"");if(h=h.replace(new RegExp(UE.dom.domUtils.fillChar,"g"),"").replace(/^\s+|\s+$/g,""),!/^\d*\.?\d+$/.test(h))return!1}}return!0}var b=this;return{bindEvents:{chartserror:function(){}},commands:{charts:{execCommand:function(c,d){var e=domUtils.findParentByTagName(this.selection.getRange().startContainer,"table",!0),f=[],g={};if(!e)return!1;if(!a(e))return b.fireEvent("chartserror"),!1;g.title=d.title||"",g.subTitle=d.subTitle||"",g.xTitle=d.xTitle||"",g.yTitle=d.yTitle||"",g.suffix=d.suffix||"",g.tip=d.tip||"",g.dataFormat=d.tableDataFormat||"",g.chartType=d.chartType||0;for(var h in g)g.hasOwnProperty(h)&&f.push(h+":"+g[h]); +e.setAttribute("data-chart",f.join(";")),domUtils.addClass(e,"edui-charts-table")},queryCommandState:function(b,c){var d=domUtils.findParentByTagName(this.selection.getRange().startContainer,"table",!0);return d&&a(d)?0:-1}}},inputRule:function(a){utils.each(a.getNodesByTagName("table"),function(a){void 0!==a.getAttr("data-chart")&&a.setAttr("style")})},outputRule:function(a){utils.each(a.getNodesByTagName("table"),function(a){void 0!==a.getAttr("data-chart")&&a.setAttr("style","display: none;")})}}}),UE.plugin.register("section",function(){function a(a){this.tag="",this.level=-1,this.dom=null,this.nextSection=null,this.previousSection=null,this.parentSection=null,this.startAddress=[],this.endAddress=[],this.children=[]}function b(b){var c=new a;return utils.extend(c,b)}function c(a,b){for(var c=b,d=0;d=0){var o=h.selection.getRange().selectNode(i).createAddress(!0).startAddress,p=b({tag:i.tagName,title:i.innerText||i.textContent||"",level:f,dom:i,startAddress:utils.clone(o,[]),endAddress:utils.clone(o,[]),children:[]});for(j.nextSection=p,p.previousSection=j,g=j;f<=g.level;)g=g.parentSection;p.parentSection=g,g.children.push(p),k=j=p}else 1===i.nodeType&&e(i,c),k&&k.endAddress[k.endAddress.length-1]++}for(var f=c||["h1","h2","h3","h4","h5","h6"],g=0;g=c.length);f++){if(c[f]>a[f]){d=!0;break}if(c[f]=c.length);f++){if(c[f]a[f])break}return d&&e}var g,h,i=this;if(b&&d&&d.level!=-1&&(g=e?d.endAddress:d.startAddress,h=c(g,i.body),g&&h&&!f(b.startAddress,b.endAddress,g))){var j,k,l=c(b.startAddress,i.body),m=c(b.endAddress,i.body);if(e)for(j=m;j&&!(domUtils.getPosition(l,j)&domUtils.POSITION_FOLLOWING)&&(k=j.previousSibling,domUtils.insertAfter(h,j),j!=l);)j=k;else for(j=l;j&&!(domUtils.getPosition(j,m)&domUtils.POSITION_FOLLOWING)&&(k=j.nextSibling,h.parentNode.insertBefore(j,h),j!=m);)j=k;i.fireEvent("updateSections")}}},deletesection:{execCommand:function(a,b,c){function d(a){for(var b=e.body,c=0;c'),!c.getOpt("imageActionName"))return void b(c.getLang("autoupload.errorLoadConfig"));var k=h.value,l=k?k.substr(k.lastIndexOf(".")):"";if(!l||j&&(j.join("")+".").indexOf(l.toLowerCase()+".")==-1)return void b(c.getLang("simpleupload.exceedTypeError"));var m=new XMLHttpRequest;if(m.open("post",i,!0),c.options.headers&&"[object Object]"===Object.prototype.toString.apply(c.options.headers))for(var n in c.options.headers)m.setRequestHeader(n,c.options.headers[n]);m.onload=function(){if(m.status>=200&&m.status<300||304==m.status){var a=JSON.parse(m.responseText),e=c.options.imageUrlPrefix+a.url;"SUCCESS"==a.state&&a.url?(loader=c.document.getElementById(d),loader.setAttribute("src",e),loader.setAttribute("_src",e),loader.setAttribute("title",a.title||""),loader.setAttribute("alt",a.original||""),loader.removeAttribute("id"),domUtils.removeClasses(loader,"loadingclass"),c.fireEvent("contentchange")):b(a.state)}else b(c.getLang("simpleupload.loadError"))},m.onerror=function(){b(c.getLang("simpleupload.loadError"))},m.send(new FormData(g)),g.reset()}})}var b,c=this,d=(+new Date).toString(36);return{bindEvents:{ready:function(){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:1px solid #cccccc;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:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}",this.document)},simpleuploadbtnready:function(d,e){b=e,c.afterConfigReady(a)}},outputRule:function(a){utils.each(a.getNodesByTagName("img"),function(a){/\b(loaderrorclass)|(bloaderrorclass)\b/.test(a.getAttr("class"))&&a.parentNode.removeChild(a)})}}}),UE.plugin.register("serverparam",function(){var a={};return{commands:{serverparam:{execCommand:function(b,c,d){void 0===c||null===c?a={}:utils.isString(c)?void 0===d||null===d?delete a[c]:a[c]=d:utils.isObject(c)?utils.extend(a,c,!0):utils.isFunction(c)&&utils.extend(a,c(),!0)},queryCommandValue:function(){return a||{}}}}}}),UE.plugin.register("insertfile",function(){function a(a){var b=a.substr(a.lastIndexOf(".")+1).toLowerCase(),c={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 c[b]?c[b]:c.txt}var b=this;return{commands:{insertfile:{execCommand:function(c,d){d=utils.isArray(d)?d:[d];var e,f,g,h,i="",j=b.getOpt("UEDITOR_HOME_URL"),k=j+("/"==j.substr(j.length-1)?"":"/")+"dialogs/attachment/fileTypeImages/";for(e=0;e'+h+"

    ";b.execCommand("insertHtml",i)}}}}}),UE.plugins.xssFilter=function(){function a(a){var b=a.tagName,d=a.attrs;return c.hasOwnProperty(b)?void UE.utils.each(d,function(d,e){c[b].indexOf(e)===-1&&a.setAttr(e)}):(a.parentNode.removeChild(a),!1)}var b=UEDITOR_CONFIG,c=b.whitList;c&&b.xssFilterRules&&(this.options.filterRules=function(){var b={};return UE.utils.each(c,function(c,d){b[d]=function(b){return a(b)}}),b}());var d=[];UE.utils.each(c,function(a,b){d.push(b)}),c&&b.inputXssFilter&&this.addInputRule(function(b){b.traversal(function(b){return"element"===b.type&&void a(b)})}),c&&b.outputXssFilter&&this.addOutputRule(function(b){b.traversal(function(b){return"element"===b.type&&void a(b)})})};var baidu=baidu||{};baidu.editor=baidu.editor||{},UE.ui=baidu.editor.ui={},function(){function a(){var a=document.getElementById("edui_fixedlayer");i.setViewportOffset(a,{left:0,top:0})}function b(b){d.on(window,"scroll",a),d.on(window,"resize",baidu.editor.utils.defer(a,0,!0))}var c=baidu.editor.browser,d=baidu.editor.dom.domUtils,e="$EDITORUI",f=window[e]={},g="ID"+e,h=0,i=baidu.editor.ui.uiUtils={uid:function(a){return a?a[g]||(a[g]=++h):++h},hook:function(a,b){var c;return a&&a._callbacks?c=a:(c=function(){var b;a&&(b=a.apply(this,arguments));for(var d=c._callbacks,e=d.length;e--;){var f=d[e].apply(this,arguments);void 0===b&&(b=f)}return b},c._callbacks=[]),c._callbacks.push(b),c},createElementByHtml:function(a){var b=document.createElement("div");return b.innerHTML=a,b=b.firstChild,b.parentNode.removeChild(b),b},getViewportElement:function(){return c.ie&&c.quirks?document.body:document.documentElement},getClientRect:function(a){var b;try{b=a.getBoundingClientRect()}catch(c){b={left:0,top:0,height:0,width:0}}for(var e,f={left:Math.round(b.left),top:Math.round(b.top),height:Math.round(b.bottom-b.top),width:Math.round(b.right-b.left)};(e=a.ownerDocument)!==document&&(a=d.getWindow(e).frameElement);)b=a.getBoundingClientRect(),f.left+=b.left,f.top+=b.top;return f.bottom=f.top+f.height,f.right=f.left+f.width,f},getViewportRect:function(){var a=i.getViewportElement(),b=0|(window.innerWidth||a.clientWidth),c=0|(window.innerHeight||a.clientHeight);return{left:0,top:0,height:c,width:b,bottom:c,right:b}},setViewportOffset:function(a,b){var c=i.getFixedLayer();a.parentNode===c?(a.style.left=b.left+"px",a.style.top=b.top+"px"):d.setViewportOffset(a,b)},getEventOffset:function(a){var b=a.target||a.srcElement,c=i.getClientRect(b),d=i.getViewportOffsetByEvent(a);return{left:d.left-c.left,top:d.top-c.top}},getViewportOffsetByEvent:function(a){var b=a.target||a.srcElement,c=d.getWindow(b).frameElement,e={left:a.clientX,top:a.clientY};if(c&&b.ownerDocument!==document){var f=i.getClientRect(c);e.left+=f.left,e.top+=f.top}return e},setGlobal:function(a,b){return f[a]=b,e+'["'+a+'"]'},unsetGlobal:function(a){delete f[a]},copyAttributes:function(a,b){for(var e=b.attributes,f=e.length;f--;){var g=e[f];"style"==g.nodeName||"class"==g.nodeName||c.ie&&!g.specified||a.setAttribute(g.nodeName,g.nodeValue)}b.className&&d.addClass(a,b.className),b.style.cssText&&(a.style.cssText+=";"+b.style.cssText)},removeStyle:function(a,b){if(a.style.removeProperty)a.style.removeProperty(b);else{if(!a.style.removeAttribute)throw"";a.style.removeAttribute(b)}},contains:function(a,b){return a&&b&&a!==b&&(a.contains?a.contains(b):16&a.compareDocumentPosition(b))},startDrag:function(a,b,c){function d(a){var c=a.clientX-g,d=a.clientY-h;b.ondragmove(c,d,a),a.stopPropagation?a.stopPropagation():a.cancelBubble=!0}function e(a){c.removeEventListener("mousemove",d,!0),c.removeEventListener("mouseup",e,!0),window.removeEventListener("mouseup",e,!0),b.ondragstop()}function f(){i.releaseCapture(),i.detachEvent("onmousemove",d),i.detachEvent("onmouseup",f),i.detachEvent("onlosecaptrue",f),b.ondragstop()}var c=c||document,g=a.clientX,h=a.clientY;if(c.addEventListener)c.addEventListener("mousemove",d,!0),c.addEventListener("mouseup",e,!0),window.addEventListener("mouseup",e,!0),a.preventDefault();else{var i=a.srcElement;i.setCapture(),i.attachEvent("onmousemove",d),i.attachEvent("onmouseup",f),i.attachEvent("onlosecaptrue",f),a.returnValue=!1}b.ondragstart()},getFixedLayer:function(){var d=document.getElementById("edui_fixedlayer");return null==d&&(d=document.createElement("div"),d.id="edui_fixedlayer",document.body.appendChild(d),c.ie&&c.version<=8?(d.style.position="absolute",b(),setTimeout(a)):d.style.position="fixed",d.style.left="0",d.style.top="0",d.style.width="0",d.style.height="0"),d},makeUnselectable:function(a){if(c.opera||c.ie&&c.version<9){if(a.unselectable="on",a.hasChildNodes())for(var b=0;b'}},a.inherits(c,b)}(),function(){var a=baidu.editor.utils,b=baidu.editor.dom.domUtils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.uiUtils,e=baidu.editor.ui.Mask=function(a){this.initOptions(a),this.initUIBase()};e.prototype={getHtmlTpl:function(){return'
    '},postRender:function(){var a=this;b.on(window,"resize",function(){setTimeout(function(){a.isHidden()||a._fill()})})},show:function(a){this._fill(),this.getDom().style.display="",this.getDom().style.zIndex=a},hide:function(){this.getDom().style.display="none",this.getDom().style.zIndex=""},isHidden:function(){return"none"==this.getDom().style.display},_onMouseDown:function(){return!1},_onClick:function(a,b){this.fireEvent("click",a,b)},_fill:function(){var a=this.getDom(),b=d.getViewportRect();a.style.width=b.width+"px",a.style.height=b.height+"px"}},a.inherits(e,c)}(),function(){function a(a,b){for(var c=0;c
    '+this.getContentHtmlTpl()+"
    "},getContentHtmlTpl:function(){return this.content?"string"==typeof this.content?this.content:this.content.renderHtml():""},_UIBase_postRender:e.prototype.postRender,postRender:function(){if(this.content instanceof e&&this.content.postRender(),this.captureWheel&&!this.captured){this.captured=!0;var a=(document.documentElement.clientHeight||document.body.clientHeight)-80,b=this.getDom().offsetHeight,f=c.getClientRect(this.combox.getDom()).top,g=this.getDom("content"),h=this.getDom("body").getElementsByTagName("iframe"),i=this;for(h.length&&(h=h[0]);f+b>a;)b-=30;g.style.height=b+"px",h&&(h.style.height=b+"px"),window.XMLHttpRequest?d.on(g,"onmousewheel"in document.body?"mousewheel":"DOMMouseScroll",function(a){a.preventDefault?a.preventDefault():a.returnValue=!1,a.wheelDelta?g.scrollTop-=a.wheelDelta/120*60:g.scrollTop-=a.detail/-3*60}):d.on(this.getDom(),"mousewheel",function(a){a.returnValue=!1,i.getDom("content").scrollTop-=a.wheelDelta/120*60})}this.fireEvent("postRenderAfter"),this.hide(!0),this._UIBase_postRender()},_doAutoRender:function(){!this.getDom()&&this.autoRender&&this.render()},mesureSize:function(){var a=this.getDom("content");return c.getClientRect(a)},fitSize:function(){if(this.captureWheel&&this.sized)return this.__size;this.sized=!0;var a=this.getDom("body");a.style.width="",a.style.height="";var b=this.mesureSize();if(this.captureWheel){a.style.width=-(-20-b.width)+"px";var c=parseInt(this.getDom("content").style.height,10);!window.isNaN(c)&&(b.height=c)}else a.style.width=b.width+"px";return a.style.height=b.height+"px",this.__size=b,this.captureWheel&&(this.getDom("content").style.overflow="auto"),b},showAnchor:function(a,b){this.showAnchorRect(c.getClientRect(a),b)},showAnchorRect:function(a,b,e){this._doAutoRender();var f=c.getViewportRect();this.getDom().style.visibility="hidden",this._show();var g,i,j,k,l=this.fitSize();b?(g=this.canSideLeft&&a.right+l.width>f.right&&a.left>l.width,i=this.canSideUp&&a.top+l.height>f.bottom&&a.bottom>l.height,j=g?a.left-l.width:a.right,k=i?a.bottom-l.height:a.top):(g=this.canSideLeft&&a.right+l.width>f.right&&a.left>l.width,i=this.canSideUp&&a.top+l.height>f.bottom&&a.bottom>l.height,j=g?a.right-l.width:a.left,k=i?a.top-l.height:a.bottom);var m=this.getDom();c.setViewportOffset(m,{left:j,top:k}),d.removeClasses(m,h),m.className+=" "+h[2*(i?1:0)+(g?1:0)],this.editor&&(m.style.zIndex=1*this.editor.container.style.zIndex+10,baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex=m.style.zIndex-1),this.getDom().style.visibility="visible"},showAt:function(a){var b=a.left,c=a.top,d={left:b,top:c,right:b,bottom:c,height:0,width:0};this.showAnchorRect(d,!1,!0)},_show:function(){if(this._hidden){var a=this.getDom();a.style.display="",this._hidden=!1,this.fireEvent("show")}},isHidden:function(){return this._hidden},show:function(){this._doAutoRender(),this._show()},hide:function(a){!this._hidden&&this.getDom()&&(this.getDom().style.display="none",this._hidden=!0,a||this.fireEvent("hide"))},queryAutoHide:function(a){return!a||!c.contains(this.getDom(),a)}},b.inherits(f,e),d.on(document,"mousedown",function(b){var c=b.target||b.srcElement;a(b,c)}),d.on(window,"scroll",function(b,c){a(b,c)})}(),function(){function a(a,b){for(var c='
    '+a+'
    ',d=0;d"+(60==d?'":"")+""),c+=d<70?'':"";return c+="
    '+b.getLang("themeColor")+'
    '+b.getLang("standardColor")+"
    =60?"border-width:1px;":d>=10&&d<20?"border-width:1px 1px 0 1px;":"border-width:0 1px 0 1px;")+'">
    "}var b=baidu.editor.utils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.ColorPicker=function(a){this.initOptions(a),this.noColorText=this.noColorText||this.editor.getLang("clearColor"),this.initUIBase()};d.prototype={getHtmlTpl:function(){return a(this.noColorText,this.editor)},_onTableClick:function(a){var b=a.target||a.srcElement,c=b.getAttribute("data-color");c&&this.fireEvent("pickcolor",c)},_onTableOver:function(a){var b=a.target||a.srcElement,c=b.getAttribute("data-color");c&&(this.getDom("preview").style.backgroundColor=c)},_onTableOut:function(){this.getDom("preview").style.backgroundColor=""},_onPickNoColor:function(){this.fireEvent("picknocolor")}},b.inherits(d,c);var e="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(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.TablePicker=function(a){this.initOptions(a),this.initTablePicker()};d.prototype={defaultNumRows:10,defaultNumCols:10,maxNumRows:20,maxNumCols:20,numRows:10,numCols:10,lengthOfCellSide:22,initTablePicker:function(){this.initUIBase()},getHtmlTpl:function(){return'
    '},_UIBase_render:c.prototype.render,render:function(a){this._UIBase_render(a),this.getDom("label").innerHTML="0"+this.editor.getLang("t_row")+" x 0"+this.editor.getLang("t_col")},_track:function(a,b){var c=this.getDom("overlay").style,d=this.lengthOfCellSide;c.width=a*d+"px",c.height=b*d+"px";var e=this.getDom("label");e.innerHTML=a+this.editor.getLang("t_col")+" x "+b+this.editor.getLang("t_row"),this.numCols=a,this.numRows=b},_onMouseOver:function(a,c){var d=a.relatedTarget||a.fromElement;b.contains(c,d)||c===d||(this.getDom("label").innerHTML="0"+this.editor.getLang("t_col")+" x 0"+this.editor.getLang("t_row"),this.getDom("overlay").style.visibility="")},_onMouseOut:function(a,c){var d=a.relatedTarget||a.toElement;b.contains(c,d)||c===d||(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(a,c){var d=(this.getDom("overlay").style,b.getEventOffset(a)),e=this.lengthOfCellSide,f=Math.ceil(d.left/e),g=Math.ceil(d.top/e);this._track(f,g)},_onClick:function(){this.fireEvent("picktable",this.numCols,this.numRows)}},a.inherits(d,c)}(),function(){var a=baidu.editor.browser,b=baidu.editor.dom.domUtils,c=baidu.editor.ui.uiUtils,d='onmousedown="$$.Stateful_onMouseDown(event, this);" onmouseup="$$.Stateful_onMouseUp(event, this);"'+(a.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:!1,target:null,Stateful_init:function(){this._Stateful_dGetHtmlTpl=this.getHtmlTpl,this.getHtmlTpl=this.Stateful_getHtmlTpl},Stateful_getHtmlTpl:function(){var a=this._Stateful_dGetHtmlTpl();return a.replace(/stateful/g,function(){return d})},Stateful_onMouseEnter:function(a,b){this.target=b,this.isDisabled()&&!this.alwalysHoverable||(this.addState("hover"),this.fireEvent("over"))},Stateful_onMouseLeave:function(a,b){this.isDisabled()&&!this.alwalysHoverable||(this.removeState("hover"),this.removeState("active"),this.fireEvent("out"))},Stateful_onMouseOver:function(a,b){var d=a.relatedTarget;c.contains(b,d)||b===d||this.Stateful_onMouseEnter(a,b)},Stateful_onMouseOut:function(a,b){var d=a.relatedTarget;c.contains(b,d)||b===d||this.Stateful_onMouseLeave(a,b)},Stateful_onMouseDown:function(a,b){this.isDisabled()||this.addState("active")},Stateful_onMouseUp:function(a,b){this.isDisabled()||this.removeState("active")},Stateful_postRender:function(){this.disabled&&!this.hasState("disabled")&&this.addState("disabled")},hasState:function(a){return b.hasClass(this.getStateDom(),"edui-state-"+a)},addState:function(a){this.hasState(a)||(this.getStateDom().className+=" edui-state-"+a)},removeState:function(a){this.hasState(a)&&b.removeClasses(this.getStateDom(),["edui-state-"+a])},getStateDom:function(){return this.getDom("state")},isChecked:function(){return this.hasState("checked")},setChecked:function(a){!this.isDisabled()&&a?this.addState("checked"):this.removeState("checked")},isDisabled:function(){return this.hasState("disabled")},setDisabled:function(a){a?(this.removeState("hover"),this.removeState("checked"),this.removeState("active"),this.addState("disabled")):this.removeState("disabled")}}}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.UIBase,c=baidu.editor.ui.Stateful,d=baidu.editor.ui.Button=function(a){if(a.name){var b=a.name,c=a.cssRules;a.className||(a.className="edui-for-"+b),a.cssRules=".edui-default .edui-for-"+b+" .edui-icon {"+c+"}"}this.initOptions(a),this.initButton()};d.prototype={uiName:"button",label:"",title:"",showIcon:!0,showText:!0,cssRules:"",initButton:function(){this.initUIBase(),this.Stateful_init(),this.cssRules&&a.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(a){var b=a.target||a.srcElement,c=b&&b.tagName&&b.tagName.toLowerCase();if("input"==c||"object"==c||"object"==c)return!1},_onClick:function(){this.isDisabled()||this.fireEvent("click")},setTitle:function(a){var b=this.getDom("label");b.innerHTML=a}},a.inherits(d,b),a.extend(d.prototype,c)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=(baidu.editor.dom.domUtils,baidu.editor.ui.UIBase),d=baidu.editor.ui.Stateful,e=baidu.editor.ui.SplitButton=function(a){this.initOptions(a),this.initSplitButton()};e.prototype={popup:null,uiName:"splitbutton",title:"",initSplitButton:function(){this.initUIBase(),this.Stateful_init();if(null!=this.popup){var a=this.popup;this.popup=null,this.setPopup(a)}},_UIBase_postRender:c.prototype.postRender,postRender:function(){this.Stateful_postRender(),this._UIBase_postRender()},setPopup:function(c){this.popup!==c&&(null!=this.popup&&this.popup.dispose(),c.addListener("show",a.bind(this._onPopupShow,this)),c.addListener("hide",a.bind(this._onPopupHide,this)),c.addListener("postrender",a.bind(function(){c.getDom("body").appendChild(b.createElementByHtml('
    ')),c.getDom().className+=" "+this.className},this)),this.popup=c)},_onPopupShow:function(){this.addState("opened")},_onPopupHide:function(){this.removeState("opened")},getHtmlTpl:function(){return'
    '},showPopup:function(){var a=b.getClientRect(this.getDom());a.top-=this.popup.SHADOW_RADIUS,a.height+=this.popup.SHADOW_RADIUS,this.popup.showAnchorRect(a)},_onArrowClick:function(a,b){this.isDisabled()||this.showPopup()},_onButtonClick:function(){this.isDisabled()||this.fireEvent("buttonclick")}},a.inherits(e,c),a.extend(e.prototype,d,!0)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=baidu.editor.ui.ColorPicker,d=baidu.editor.ui.Popup,e=baidu.editor.ui.SplitButton,f=baidu.editor.ui.ColorButton=function(a){this.initOptions(a),this.initColorButton()};f.prototype={initColorButton:function(){var a=this;this.popup=new d({content:new c({noColorText:a.editor.getLang("clearColor"),editor:a.editor,onpickcolor:function(b,c){a._onPickColor(c)},onpicknocolor:function(b,c){a._onPickNoColor(c)}}),editor:a.editor}),this.initSplitButton()},_SplitButton_postRender:e.prototype.postRender,postRender:function(){this._SplitButton_postRender(),this.getDom("button_body").appendChild(b.createElementByHtml('
    ')),this.getDom().className+=" edui-colorbutton"},setColor:function(a){this.getDom("colorlump").style.backgroundColor=a,this.color=a},_onPickColor:function(a){this.fireEvent("pickcolor",a)!==!1&&(this.setColor(a),this.popup.hide())},_onPickNoColor:function(a){this.fireEvent("picknocolor")!==!1&&this.popup.hide()}},a.inherits(f,e)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.Popup,c=baidu.editor.ui.TablePicker,d=baidu.editor.ui.SplitButton,e=baidu.editor.ui.TableButton=function(a){this.initOptions(a),this.initTableButton()};e.prototype={initTableButton:function(){var a=this;this.popup=new b({content:new c({editor:a.editor,onpicktable:function(b,c,d){ +a._onPickTable(c,d)}}),editor:a.editor}),this.initSplitButton()},_onPickTable:function(a,b){this.fireEvent("picktable",a,b)!==!1&&this.popup.hide()}},a.inherits(e,d)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.UIBase,c=baidu.editor.ui.AutoTypeSetPicker=function(a){this.initOptions(a),this.initAutoTypeSetPicker()};c.prototype={initAutoTypeSetPicker:function(){this.initUIBase()},getHtmlTpl:function(){var a=this.editor,b=a.options.autotypeset,c=a.getLang("autoTypeSet"),d="textAlignValue"+a.uid,e="imageBlockLineValue"+a.uid,f="symbolConverValue"+a.uid;return'
    "+c.mergeLine+'"+c.delLine+'
    "+c.removeFormat+'"+c.indent+'
    "+c.alignment+'"+a.getLang("justifyleft")+'"+a.getLang("justifycenter")+'"+a.getLang("justifyright")+'
    "+c.imageFloat+'"+a.getLang("default")+'"+a.getLang("justifyleft")+'"+a.getLang("justifycenter")+'"+a.getLang("justifyright")+'
    "+c.removeFontsize+'"+c.removeFontFamily+'
    "+c.removeHtml+'
    "+c.pasteFilter+'
    "+c.symbol+'"+c.bdc2sb+'"+c.tobdc+'
    "},_UIBase_render:b.prototype.render},a.inherits(c,b)}(),function(){function a(a){for(var c,d={},e=a.getDom(),f=a.editor.uid,g=null,h=null,i=domUtils.getElementsByTagName(e,"input"),j=i.length-1;c=i[j--];)if(g=c.getAttribute("type"),"checkbox"==g)if(h=c.getAttribute("name"),d[h]&&delete d[h],c.checked){var k=document.getElementById(h+"Value"+f);if(k){if(/input/gi.test(k.tagName))d[h]=k.value;else for(var l,m=k.getElementsByTagName("input"),n=m.length-1;l=m[n--];)if(l.checked){d[h]=l.value;break}}else d[h]=!0}else d[h]=!1;else d[c.getAttribute("value")]=c.checked;for(var o,p=domUtils.getElementsByTagName(e,"select"),j=0;o=p[j++];){var q=o.getAttribute("name");d[q]=d[q]?o.value:""}b.extend(a.editor.options.autotypeset,d),a.editor.setPreferences("autotypeset",d)}var b=baidu.editor.utils,c=baidu.editor.ui.Popup,d=baidu.editor.ui.AutoTypeSetPicker,e=baidu.editor.ui.SplitButton,f=baidu.editor.ui.AutoTypeSetButton=function(a){this.initOptions(a),this.initAutoTypeSetButton()};f.prototype={initAutoTypeSetButton:function(){var b=this;this.popup=new c({content:new d({editor:b.editor}),editor:b.editor,hide:function(){!this._hidden&&this.getDom()&&(a(this),this.getDom().style.display="none",this._hidden=!0,this.fireEvent("hide"))}});var e=0;this.popup.addListener("postRenderAfter",function(){var c=this;if(!e){var d=this.getDom(),f=d.getElementsByTagName("button")[0];f.onclick=function(){a(c),b.editor.execCommand("autotypeset"),c.hide()},domUtils.on(d,"click",function(d){var e=d.target||d.srcElement,f=b.editor.uid;if(e&&"INPUT"==e.tagName){if("imageBlockLine"==e.name||"textAlign"==e.name||"symbolConver"==e.name)for(var g=e.checked,h=document.getElementById(e.name+"Value"+f),i=h.getElementsByTagName("input"),j={imageBlockLine:"none",textAlign:"left",symbolConver:"tobdc"},k=0;k"),e.push('
    '),2===d&&e.push("");return'
    '+e.join("")+"
    "},getStateDom:function(){return this.target},_onClick:function(a){var c=a.target||a.srcElement;/icon/.test(c.className)&&(this.items[c.parentNode.getAttribute("index")].onclick(),b.postHide(a))},_UIBase_render:d.prototype.render},a.inherits(e,d),a.extend(e.prototype,c,!0)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.Stateful,c=baidu.editor.ui.uiUtils,d=baidu.editor.ui.UIBase,e=baidu.editor.ui.PastePicker=function(a){this.initOptions(a),this.initPastePicker()};e.prototype={initPastePicker:function(){this.initUIBase(),this.Stateful_init()},getHtmlTpl:function(){return'
    '+this.editor.getLang("pasteOpt")+'
    '},getStateDom:function(){return this.target},format:function(a){this.editor.ui._isTransfer=!0,this.editor.fireEvent("pasteTransfer",a)},_onClick:function(a){var b=domUtils.getNextDomNode(a),d=c.getViewportRect().height,e=c.getClientRect(b);e.top+e.height>d?b.style.top=-e.height-a.offsetHeight+"px":b.style.top="",/hidden/gi.test(domUtils.getComputedStyle(b,"visibility"))?(b.style.visibility="visible",domUtils.addClass(a,"edui-state-opened")):(b.style.visibility="hidden",domUtils.removeClasses(a,"edui-state-opened"))},_UIBase_render:d.prototype.render},a.inherits(e,d),a.extend(e.prototype,b,!0)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.Toolbar=function(a){this.initOptions(a),this.initToolbar()};d.prototype={items:null,initToolbar:function(){this.items=this.items||[],this.initUIBase()},add:function(a,b){void 0===b?this.items.push(a):this.items.splice(b,0,a)},getHtmlTpl:function(){for(var a=[],b=0;b'+a.join("")+""},postRender:function(){for(var a=this.getDom(),c=0;c
    '},postRender:function(){},queryAutoHide:function(){return!0}};h.prototype={items:null,uiName:"menu",initMenu:function(){this.items=this.items||[],this.initPopup(),this.initItems()},initItems:function(){for(var a=0;a'+a.join("")+""},_Popup_postRender:e.prototype.postRender,postRender:function(){for(var a=this,d=0;d
    '+this.renderLabelHtml()+"
    "},postRender:function(){var a=this;this.addListener("over",function(){a.ownerMenu.fireEvent("submenuover",a),a.subMenu&&a.delayShowSubMenu()}),this.subMenu&&(this.getDom().className+=" edui-hassubmenu",this.subMenu.render(),this.addListener("out",function(){a.delayHideSubMenu()}),this.subMenu.addListener("over",function(){clearTimeout(a._closingTimer),a._closingTimer=null,a.addState("opened")}),this.ownerMenu.addListener("hide",function(){a.hideSubMenu()}),this.ownerMenu.addListener("submenuover",function(b,c){c!==a&&a.delayHideSubMenu()}),this.subMenu._bakQueryAutoHide=this.subMenu.queryAutoHide,this.subMenu.queryAutoHide=function(b){return(!b||!c.contains(a.getDom(),b))&&this._bakQueryAutoHide(b)}),this.getDom().style.tabIndex="-1",c.makeUnselectable(this.getDom()),this.Stateful_postRender()},delayShowSubMenu:function(){var a=this;a.isDisabled()||(a.addState("opened"),clearTimeout(a._showingTimer),clearTimeout(a._closingTimer),a._closingTimer=null,a._showingTimer=setTimeout(function(){a.showSubMenu()},250))},delayHideSubMenu:function(){var a=this;a.isDisabled()||(a.removeState("opened"),clearTimeout(a._showingTimer),a._closingTimer||(a._closingTimer=setTimeout(function(){a.hasState("opened")||a.hideSubMenu(),a._closingTimer=null},400)))},renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "},getStateDom:function(){return this.getDom()},queryAutoHide:function(a){if(this.subMenu&&this.hasState("opened"))return this.subMenu.queryAutoHide(a)},_onClick:function(a,b){this.hasState("disabled")||this.fireEvent("click",a,b)!==!1&&(this.subMenu?this.showSubMenu():e.postHide(a))},showSubMenu:function(){var a=c.getClientRect(this.getDom());a.right-=5,a.left+=2,a.width-=7,a.top-=4,a.bottom+=4,a.height+=8,this.subMenu.showAnchorRect(a,!0,!0)},hideSubMenu:function(){this.subMenu.hide()}},a.inherits(j,d),a.extend(j.prototype,f,!0)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=baidu.editor.ui.Menu,d=baidu.editor.ui.SplitButton,e=baidu.editor.ui.Combox=function(a){this.initOptions(a),this.initCombox()};e.prototype={uiName:"combox",onbuttonclick:function(){this.showPopup()},initCombox:function(){var a=this;this.items=this.items||[];for(var b=0;bd.right&&(g=d.right-e.width);var h=a.top;h+e.height>d.bottom&&(h=d.bottom-e.height),c.style.left=Math.max(g,0)+"px",c.style.top=Math.max(h,0)+"px"},showAtCenter:function(){var a=f.getViewportRect();if(this.fullscreen){var b=this.getDom(),c=this.getDom("content");b.style.display="block";var d=UE.ui.uiUtils.getClientRect(b),g=UE.ui.uiUtils.getClientRect(c);b.style.left="-100000px",c.style.width=a.width-d.width+g.width+"px",c.style.height=a.height-d.height+g.height+"px",b.style.width=a.width+"px",b.style.height=a.height+"px",b.style.left=0,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"}else{this.getDom().style.display="";var h=this.fitSize(),i=0|this.getDom("titlebar").offsetHeight,j=a.width/2-h.width/2,k=a.height/2-(h.height-i)/2-i,l=this.getDom();this.safeSetOffset({left:Math.max(0|j,0),top:Math.max(0|k,0)}),e.hasClass(l,"edui-state-centered")||(l.className+=" edui-state-centered")}this._show()},getContentHtml:function(){var a="";return"string"==typeof this.content?a=this.content:this.iframeUrl&&(a=''),a},getHtmlTpl:function(){var a="";if(this.buttons){for(var b=[],c=0;c
    '+b.join("")+"
    "}return'
    '+(this.title||"")+"
    "+this.closeButton.renderHtml()+'
    '+(this.autoReset?"":this.getContentHtml())+"
    "+a+"
    "},postRender:function(){this.modalMask.getDom()||(this.modalMask.render(),this.modalMask.hide()),this.dragMask.getDom()||(this.dragMask.render(),this.dragMask.hide());var a=this;if(this.addListener("show",function(){a.modalMask.show(this.getDom().style.zIndex-2)}),this.addListener("hide",function(){a.modalMask.hide()}),this.buttons)for(var b=0;b',a.editor.container.style.zIndex&&(this.getDom().style.zIndex=1*a.editor.container.style.zIndex+1))}}),this.onbuttonclick=function(){this.showPopup()},this.initSplitButton()}},a.inherits(d,c)}(),function(){function a(a){var b=a.target||a.srcElement,c=g.findParent(b,function(a){return g.hasClass(a,"edui-shortcutmenu")||g.hasClass(a,"edui-popup")},!0);if(!c)for(var d,e=0;d=h[e++];)d.hide()}var b,c=baidu.editor.ui,d=c.UIBase,e=c.uiUtils,f=baidu.editor.utils,g=baidu.editor.dom.domUtils,h=[],i=!1,j=c.ShortCutMenu=function(a){this.initOptions(a),this.initShortCutMenu()};j.postHide=a,j.prototype={isHidden:!0,SPACE:5,initShortCutMenu:function(){this.items=this.items||[],this.initUIBase(),this.initItems(),this.initEvent(),h.push(this)},initEvent:function(){var a=this,c=a.editor.document;g.on(c,"mousemove",function(c){if(a.isHidden===!1){if(a.getSubMenuMark()||"contextmenu"==a.eventType)return;var d=!0,e=a.getDom(),f=e.offsetWidth,g=e.offsetHeight,h=f/2+a.SPACE,i=g/2,j=Math.abs(c.screenX-a.left),k=Math.abs(c.screenY-a.top);clearTimeout(b),b=setTimeout(function(){k>0&&ki&&ki+70&&k0&&jh&&jh+70&&j'+a+""}},f.inherits(j,d),g.on(document,"mousedown",function(b){a(b)}),g.on(window,"scroll",function(b){a(b)})}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.UIBase,c=baidu.editor.ui.Breakline=function(a){this.initOptions(a),this.initSeparator()};c.prototype={uiName:"Breakline",initSeparator:function(){this.initUIBase()},getHtmlTpl:function(){return"
    "}},a.inherits(c,b)}(),function(){var a=baidu.editor.utils,b=baidu.editor.dom.domUtils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.Message=function(a){this.initOptions(a),this.initMessage()};d.prototype={initMessage:function(){this.initUIBase()},getHtmlTpl:function(){return'
    ×
    '},reset:function(a){var b=this;a.keepshow||(clearTimeout(this.timer),b.timer=setTimeout(function(){b.hide()},a.timeout||4e3)),void 0!==a.content&&b.setContent(a.content),void 0!==a.type&&b.setType(a.type),b.show()},postRender:function(){var a=this,c=this.getDom("closer");c&&b.on(c,"click",function(){a.hide()})},setContent:function(a){this.getDom("content").innerHTML=a},setType:function(a){a=a||"info";var b=this.getDom("body");b.className=b.className.replace(/edui-message-type-[\w-]+/,"edui-message-type-"+a)},getContent:function(){return this.getDom("content").innerHTML},getType:function(){var a=this.getDom("body").match(/edui-message-type-([\w-]+)/);return a?a[1]:""},show:function(){this.getDom().style.display="block"},hide:function(){var a=this.getDom();a&&(a.style.display="none",a.parentNode&&a.parentNode.removeChild(a))}},a.inherits(d,c)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui,c=b.Dialog;b.buttons={},b.Dialog=function(a){var b=new c(a);return b.addListener("hide",function(){if(b.editor){var a=b.editor;try{if(browser.gecko){var c=a.window.scrollY,d=a.window.scrollX;a.body.focus(),a.window.scrollTo(d,c)}else a.focus()}catch(e){}}}),b};for(var d,e={anchor:"~/dialogs/anchor/anchor.html",insertimage:"~/dialogs/image/image.html",link:"~/dialogs/link/link.html",spechars:"~/dialogs/spechars/spechars.html",searchreplace:"~/dialogs/searchreplace/searchreplace.html",map:"~/dialogs/map/map.html",gmap:"~/dialogs/gmap/gmap.html",insertvideo:"~/dialogs/video/video.html",help:"~/dialogs/help/help.html",preview:"~/dialogs/preview/preview.html",emotion:"~/dialogs/emotion/emotion.html",wordimage:"~/dialogs/wordimage/wordimage.html",attachment:"~/dialogs/attachment/attachment.html",insertframe:"~/dialogs/insertframe/insertframe.html",edittip:"~/dialogs/table/edittip.html",edittable:"~/dialogs/table/edittable.html",edittd:"~/dialogs/table/edittd.html",webapp:"~/dialogs/webapp/webapp.html",snapscreen:"~/dialogs/snapscreen/snapscreen.html",scrawl:"~/dialogs/scrawl/scrawl.html",music:"~/dialogs/music/music.html",template:"~/dialogs/template/template.html",background:"~/dialogs/background/background.html",charts:"~/dialogs/charts/charts.html"},f=["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","drafts"],g=0;d=f[g++];)d=d.toLowerCase(),b[d]=function(a){return function(c){var d=new b.Button({className:"edui-for-"+a,title:c.options.labelMap[a]||c.getLang("labelMap."+a)||"",onclick:function(){c.execCommand(a)},theme:c.options.theme,showText:!1});return b.buttons[a]=d,c.addListener("selectionchange",function(b,e,f){var g=c.queryCommandState(a);g==-1?(d.setDisabled(!0),d.setChecked(!1)):f||(d.setDisabled(!1),d.setChecked(g))}),d}}(d);b.cleardoc=function(a){var c=new b.Button({className:"edui-for-cleardoc",title:a.options.labelMap.cleardoc||a.getLang("labelMap.cleardoc")||"",theme:a.options.theme,onclick:function(){confirm(a.getLang("confirmClear"))&&a.execCommand("cleardoc")}});return b.buttons.cleardoc=c,a.addListener("selectionchange",function(){c.setDisabled(a.queryCommandState("cleardoc")==-1)}),c};var h={justify:["left","right","center","justify"],imagefloat:["none","left","center","right"],directionality:["ltr","rtl"]};for(var i in h)!function(a,c){for(var d,e=0;d=c[e++];)!function(c){b[a.replace("float","")+c]=function(d){var e=new b.Button({className:"edui-for-"+a.replace("float","")+c,title:d.options.labelMap[a.replace("float","")+c]||d.getLang("labelMap."+a.replace("float","")+c)||"",theme:d.options.theme,onclick:function(){d.execCommand(a,c)}});return b.buttons[a]=e,d.addListener("selectionchange",function(b,f,g){e.setDisabled(d.queryCommandState(a)==-1),e.setChecked(d.queryCommandValue(a)==c&&!g)}),e}}(d)}(i,h[i]);for(var d,g=0;d=["backcolor","forecolor"][g++];)b[d]=function(a){return function(c){var d=new b.ColorButton({className:"edui-for-"+a,color:"default",title:c.options.labelMap[a]||c.getLang("labelMap."+a)||"",editor:c,onpickcolor:function(b,d){ +c.execCommand(a,d)},onpicknocolor:function(){c.execCommand(a,"default"),this.setColor("transparent"),this.color="default"},onbuttonclick:function(){c.execCommand(a,this.color)}});return b.buttons[a]=d,c.addListener("selectionchange",function(){d.setDisabled(c.queryCommandState(a)==-1)}),d}}(d);var j={noOk:["searchreplace","help","spechars","webapp","preview"],ok:["attachment","anchor","link","insertimage","map","gmap","insertframe","wordimage","insertvideo","insertframe","edittip","edittable","edittd","scrawl","template","music","background","charts"]};for(var i in j)!function(c,d){for(var f,g=0;f=d[g++];)browser.opera&&"searchreplace"===f||!function(d){b[d]=function(f,g,h){g=g||(f.options.iframeUrlMap||{})[d]||e[d],h=f.options.labelMap[d]||f.getLang("labelMap."+d)||"";var i;g&&(i=new b.Dialog(a.extend({iframeUrl:f.ui.mapUrl(g),editor:f,className:"edui-for-"+d,title:h,holdScroll:"insertimage"===d,fullscreen:/charts|preview/.test(d),closeDialog:f.getLang("closeDialog")},"ok"==c?{buttons:[{className:"edui-okbutton",label:f.getLang("ok"),editor:f,onclick:function(){i.close(!0)}},{className:"edui-cancelbutton",label:f.getLang("cancel"),editor:f,onclick:function(){i.close(!1)}}]}:{})),f.ui._dialogs[d+"Dialog"]=i);var j=new b.Button({className:"edui-for-"+d,title:h,onclick:function(){if(i)switch(d){case"wordimage":var a=f.execCommand("wordimage");a&&a.length&&(i.render(),i.open());break;case"scrawl":f.queryCommandState("scrawl")!=-1&&(i.render(),i.open());break;default:i.render(),i.open()}},theme:f.options.theme,disabled:"scrawl"==d&&f.queryCommandState("scrawl")==-1||"charts"==d});return b.buttons[d]=j,f.addListener("selectionchange",function(){var a={edittable:1};if(!(d in a)){var b=f.queryCommandState(d);j.getDom()&&(j.setDisabled(b==-1),j.setChecked(b))}}),j}}(f.toLowerCase())}(i,j[i]);b.snapscreen=function(a,c,d){d=a.options.labelMap.snapscreen||a.getLang("labelMap.snapscreen")||"";var f=new b.Button({className:"edui-for-snapscreen",title:d,onclick:function(){a.execCommand("snapscreen")},theme:a.options.theme});if(b.buttons.snapscreen=f,c=c||(a.options.iframeUrlMap||{}).snapscreen||e.snapscreen){var g=new b.Dialog({iframeUrl:a.ui.mapUrl(c),editor:a,className:"edui-for-snapscreen",title:d,buttons:[{className:"edui-okbutton",label:a.getLang("ok"),editor:a,onclick:function(){g.close(!0)}},{className:"edui-cancelbutton",label:a.getLang("cancel"),editor:a,onclick:function(){g.close(!1)}}]});g.render(),a.ui._dialogs.snapscreenDialog=g}return a.addListener("selectionchange",function(){f.setDisabled(a.queryCommandState("snapscreen")==-1)}),f},b.insertcode=function(c,d,e){d=c.options.insertcode||[],e=c.options.labelMap.insertcode||c.getLang("labelMap.insertcode")||"";var f=[];a.each(d,function(a,b){f.push({label:a,value:b,theme:c.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}})});var g=new b.Combox({editor:c,items:f,onselect:function(a,b){c.execCommand("insertcode",this.items[b].value)},onbuttonclick:function(){this.showPopup()},title:e,initValue:e,className:"edui-for-insertcode",indexByValue:function(a){if(a)for(var b,c=0;b=this.items[c];c++)if(b.value.indexOf(a)!=-1)return c;return-1}});return b.buttons.insertcode=g,c.addListener("selectionchange",function(a,b,d){if(!d){var f=c.queryCommandState("insertcode");if(f==-1)g.setDisabled(!0);else{g.setDisabled(!1);var h=c.queryCommandValue("insertcode");if(!h)return void g.setValue(e);h&&(h=h.replace(/['"]/g,"").split(",")[0]),g.setValue(h)}}}),g},b.fontfamily=function(c,d,e){if(d=c.options.fontfamily||[],e=c.options.labelMap.fontfamily||c.getLang("labelMap.fontfamily")||"",d.length){for(var f,g=0,h=[];f=d[g];g++){var i=c.getLang("fontfamily")[f.name]||"";!function(b,d){h.push({label:b,value:d,theme:c.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}})}(f.label||i,f.val)}var j=new b.Combox({editor:c,items:h,onselect:function(a,b){c.execCommand("FontFamily",this.items[b].value)},onbuttonclick:function(){this.showPopup()},title:e,initValue:e,className:"edui-for-fontfamily",indexByValue:function(a){if(a)for(var b,c=0;b=this.items[c];c++)if(b.value.indexOf(a)!=-1)return c;return-1}});return b.buttons.fontfamily=j,c.addListener("selectionchange",function(a,b,d){if(!d){var e=c.queryCommandState("FontFamily");if(e==-1)j.setDisabled(!0);else{j.setDisabled(!1);var f=c.queryCommandValue("FontFamily");f&&(f=f.replace(/['"]/g,"").split(",")[0]),j.setValue(f)}}}),j}},b.fontsize=function(a,c,d){if(d=a.options.labelMap.fontsize||a.getLang("labelMap.fontsize")||"",c=c||a.options.fontsize||[],c.length){for(var e=[],f=0;f'+(this.label||"")+""}})}var h=new b.Combox({editor:a,items:e,title:d,initValue:d,onselect:function(b,c){a.execCommand("FontSize",this.items[c].value)},onbuttonclick:function(){this.showPopup()},className:"edui-for-fontsize"});return b.buttons.fontsize=h,a.addListener("selectionchange",function(b,c,d){if(!d){var e=a.queryCommandState("FontSize");e==-1?h.setDisabled(!0):(h.setDisabled(!1),h.setValue(a.queryCommandValue("FontSize")))}}),h}},b.paragraph=function(c,d,e){if(e=c.options.labelMap.paragraph||c.getLang("labelMap.paragraph")||"",d=c.options.paragraph||[],!a.isEmptyObject(d)){var f=[];for(var g in d)f.push({value:g,label:d[g]||c.getLang("paragraph")[g],theme:c.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}});var h=new b.Combox({editor:c,items:f,title:e,initValue:e,className:"edui-for-paragraph",onselect:function(a,b){c.execCommand("Paragraph",this.items[b].value)},onbuttonclick:function(){this.showPopup()}});return b.buttons.paragraph=h,c.addListener("selectionchange",function(a,b,d){if(!d){var e=c.queryCommandState("Paragraph");if(e==-1)h.setDisabled(!0);else{h.setDisabled(!1);var f=c.queryCommandValue("Paragraph"),g=h.indexByValue(f);g!=-1?h.setValue(f):h.setValue(h.initValue)}}}),h}},b.customstyle=function(a){var c=a.options.customstyle||[],d=a.options.labelMap.customstyle||a.getLang("labelMap.customstyle")||"";if(c.length){for(var e,f=a.getLang("customstyle"),g=0,h=[];e=c[g++];)!function(b){var c={};c.label=b.label?b.label:f[b.name],c.style=b.style,c.className=b.className,c.tag=b.tag,h.push({label:c.label,value:c,theme:a.options.theme,renderLabelHtml:function(){return'
    <'+c.tag+" "+(c.className?' class="'+c.className+'"':"")+(c.style?' style="'+c.style+'"':"")+">"+c.label+"
    "}})}(e);var i=new b.Combox({editor:a,items:h,title:d,initValue:d,className:"edui-for-customstyle",onselect:function(b,c){a.execCommand("customstyle",this.items[c].value)},onbuttonclick:function(){this.showPopup()},indexByValue:function(a){for(var b,c=0;b=this.items[c++];)if(b.label==a)return c-1;return-1}});return b.buttons.customstyle=i,a.addListener("selectionchange",function(b,c,d){if(!d){var e=a.queryCommandState("customstyle");if(e==-1)i.setDisabled(!0);else{i.setDisabled(!1);var f=a.queryCommandValue("customstyle"),g=i.indexByValue(f);g!=-1?i.setValue(f):i.setValue(i.initValue)}}}),i}},b.inserttable=function(a,c,d){d=a.options.labelMap.inserttable||a.getLang("labelMap.inserttable")||"";var e=new b.TableButton({editor:a,title:d,className:"edui-for-inserttable",onpicktable:function(b,c,d){a.execCommand("InsertTable",{numRows:d,numCols:c,border:1})},onbuttonclick:function(){this.showPopup()}});return b.buttons.inserttable=e,a.addListener("selectionchange",function(){e.setDisabled(a.queryCommandState("inserttable")==-1)}),e},b.lineheight=function(a){var c=a.options.lineheight||[];if(c.length){for(var d,e=0,f=[];d=c[e++];)f.push({label:d,value:d,theme:a.options.theme,onclick:function(){a.execCommand("lineheight",this.value)}});var g=new b.MenuButton({editor:a,className:"edui-for-lineheight",title:a.options.labelMap.lineheight||a.getLang("labelMap.lineheight")||"",items:f,onbuttonclick:function(){var b=a.queryCommandValue("LineHeight")||this.value;a.execCommand("LineHeight",b)}});return b.buttons.lineheight=g,a.addListener("selectionchange",function(){var b=a.queryCommandState("LineHeight");if(b==-1)g.setDisabled(!0);else{g.setDisabled(!1);var c=a.queryCommandValue("LineHeight");c&&g.setValue((c+"").replace(/cm/,"")),g.setChecked(b)}}),g}};for(var k,l=["top","bottom"],m=0;k=l[m++];)!function(a){b["rowspacing"+a]=function(c){var d=c.options["rowspacing"+a]||[];if(!d.length)return null;for(var e,f=0,g=[];e=d[f++];)g.push({label:e,value:e,theme:c.options.theme,onclick:function(){c.execCommand("rowspacing",this.value,a)}});var h=new b.MenuButton({editor:c,className:"edui-for-rowspacing"+a,title:c.options.labelMap["rowspacing"+a]||c.getLang("labelMap.rowspacing"+a)||"",items:g,onbuttonclick:function(){var b=c.queryCommandValue("rowspacing",a)||this.value;c.execCommand("rowspacing",b,a)}});return b.buttons[a]=h,c.addListener("selectionchange",function(){var b=c.queryCommandState("rowspacing",a);if(b==-1)h.setDisabled(!0);else{h.setDisabled(!1);var d=c.queryCommandValue("rowspacing",a);d&&h.setValue((d+"").replace(/%/,"")),h.setChecked(b)}}),h}}(k);for(var n,o=["insertorderedlist","insertunorderedlist"],p=0;n=o[p++];)!function(a){b[a]=function(c){var d=c.options[a],e=function(){c.execCommand(a,this.value)},f=[];for(var g in d)f.push({label:d[g]||c.getLang()[a][g]||"",value:g,theme:c.options.theme,onclick:e});var h=new b.MenuButton({editor:c,className:"edui-for-"+a,title:c.getLang("labelMap."+a)||"",items:f,onbuttonclick:function(){var b=c.queryCommandValue(a)||this.value;c.execCommand(a,b)}});return b.buttons[a]=h,c.addListener("selectionchange",function(){var b=c.queryCommandState(a);if(b==-1)h.setDisabled(!0);else{h.setDisabled(!1);var d=c.queryCommandValue(a);h.setValue(d),h.setChecked(b)}}),h}}(n);b.fullscreen=function(a,c){c=a.options.labelMap.fullscreen||a.getLang("labelMap.fullscreen")||"";var d=new b.Button({className:"edui-for-fullscreen",title:c,theme:a.options.theme,onclick:function(){a.ui&&a.ui.setFullScreen(!a.ui.isFullScreen()),this.setChecked(a.ui.isFullScreen())}});return b.buttons.fullscreen=d,a.addListener("selectionchange",function(){var b=a.queryCommandState("fullscreen");d.setDisabled(b==-1),d.setChecked(a.ui.isFullScreen())}),d},b.emotion=function(a,c){var d="emotion",f=new b.MultiMenuPop({title:a.options.labelMap[d]||a.getLang("labelMap."+d)||"",editor:a,className:"edui-for-"+d,iframeUrl:a.ui.mapUrl(c||(a.options.iframeUrlMap||{})[d]||e[d])});return b.buttons[d]=f,a.addListener("selectionchange",function(){f.setDisabled(a.queryCommandState(d)==-1)}),f},b.autotypeset=function(a){var c=new b.AutoTypeSetButton({editor:a,title:a.options.labelMap.autotypeset||a.getLang("labelMap.autotypeset")||"",className:"edui-for-autotypeset",onbuttonclick:function(){a.execCommand("autotypeset")}});return b.buttons.autotypeset=c,a.addListener("selectionchange",function(){c.setDisabled(a.queryCommandState("autotypeset")==-1)}),c},b.simpleupload=function(a){var c="simpleupload",d=new b.Button({className:"edui-for-"+c,title:a.options.labelMap[c]||a.getLang("labelMap."+c)||"",onclick:function(){},theme:a.options.theme,showText:!1});return b.buttons[c]=d,a.addListener("ready",function(){var b=d.getDom("body"),c=b.children[0];a.fireEvent("simpleuploadbtnready",c)}),a.addListener("selectionchange",function(b,e,f){var g=a.queryCommandState(c);g==-1?(d.setDisabled(!0),d.setChecked(!1)):f||(d.setDisabled(!1),d.setChecked(g))}),d}}(),function(){function a(a){this.initOptions(a),this.initEditorUI()}var b=baidu.editor.utils,c=baidu.editor.ui.uiUtils,d=baidu.editor.ui.UIBase,e=baidu.editor.dom.domUtils,f=[];a.prototype={uiName:"editor",initEditorUI:function(){function a(a,b){a.setOpt({wordCount:!0,maximumWords:1e4,wordCountMsg:a.options.wordCountMsg||a.getLang("wordCountMsg"),wordOverFlowMsg:a.options.wordOverFlowMsg||a.getLang("wordOverFlowMsg")});var c=a.options,d=c.maximumWords,e=c.wordCountMsg,f=c.wordOverFlowMsg,g=b.getDom("wordcount");if(c.wordCount){var h=a.getContentLength(!0);h>d?(g.innerHTML=f,a.fireEvent("wordcountoverflow")):g.innerHTML=e.replace("{#leave}",d-h).replace("{#count}",h)}}this.editor.ui=this,this._dialogs={},this.initUIBase(),this._initToolbars();var b=this.editor,c=this;b.addListener("ready",function(){function d(){a(b,c),e.un(b.document,"click",arguments.callee)}b.getDialog=function(a){return b.ui._dialogs[a+"Dialog"]},e.on(b.window,"scroll",function(a){baidu.editor.ui.Popup.postHide(a)}),b.ui._actualFrameWidth=b.options.initialFrameWidth,UE.browser.ie&&6===UE.browser.version&&b.container.ownerDocument.execCommand("BackgroundImageCache",!1,!0),b.options.elementPathEnabled&&(b.ui.getDom("elementpath").innerHTML='
    '+b.getLang("elementPathTip")+":
    "),b.options.wordCount&&(e.on(b.document,"click",d),b.ui.getDom("wordcount").innerHTML=b.getLang("wordCountTip")),b.ui._scale(),b.options.scaleEnabled?(b.autoHeightEnabled&&b.disableAutoHeight(),c.enableScale()):c.disableScale(),b.options.elementPathEnabled||b.options.wordCount||b.options.scaleEnabled||(b.ui.getDom("elementpath").style.display="none",b.ui.getDom("wordcount").style.display="none",b.ui.getDom("scale").style.display="none"),b.selection.isFocus()&&b.fireEvent("selectionchange",!1,!0)}),b.addListener("mousedown",function(a,b){var c=b.target||b.srcElement;baidu.editor.ui.Popup.postHide(b,c),baidu.editor.ui.ShortCutMenu.postHide(b)}),b.addListener("delcells",function(){UE.ui.edittip&&new UE.ui.edittip(b),b.getDialog("edittip").open()});var d,f,g=!1;b.addListener("afterpaste",function(){b.queryCommandState("pasteplain")||(baidu.editor.ui.PastePicker&&(d=new baidu.editor.ui.Popup({content:new baidu.editor.ui.PastePicker({editor:b}),editor:b,className:"edui-wordpastepop"}),d.render()),g=!0)}),b.addListener("afterinserthtml",function(){clearTimeout(f),f=setTimeout(function(){if(d&&(g||b.ui._isTransfer)){if(d.isHidden()){var a=e.createElement(b.document,"span",{style:"line-height:0px;",innerHTML:"\ufeff"}),c=b.selection.getRange();c.insertNode(a);var f=getDomNode(a,"firstChild","previousSibling");f&&d.showAnchor(3==f.nodeType?f.parentNode:f),e.remove(a)}else d.show();delete b.ui._isTransfer,g=!1}},200)}),b.addListener("contextmenu",function(a,b){baidu.editor.ui.Popup.postHide(b)}),b.addListener("keydown",function(a,b){d&&d.dispose(b);var c=b.keyCode||b.which;b.altKey&&90==c&&UE.ui.buttons.fullscreen.onclick()}),b.addListener("wordcount",function(b){a(this,c)}),b.addListener("selectionchange",function(){b.options.elementPathEnabled&&c[(b.queryCommandState("elementpath")==-1?"dis":"en")+"ableElementPath"](),b.options.scaleEnabled&&c[(b.queryCommandState("scale")==-1?"dis":"en")+"ableScale"]()});var h=new baidu.editor.ui.Popup({editor:b,content:"",className:"edui-bubble",_onEditButtonClick:function(){this.hide(),b.ui._dialogs.linkDialog.open()},_onImgEditButtonClick:function(a){this.hide(),b.ui._dialogs[a]&&b.ui._dialogs[a].open()},_onImgSetFloat:function(a){this.hide(),b.execCommand("imagefloat",a)},_setIframeAlign:function(a){var b=h.anchorEl,c=b.cloneNode(!0);switch(a){case-2:c.setAttribute("align","");break;case-1:c.setAttribute("align","left");break;case 1:c.setAttribute("align","right")}b.parentNode.insertBefore(c,b),e.remove(b),h.anchorEl=c,h.showAnchor(h.anchorEl)},_updateIframe:function(){var a=b._iframe=h.anchorEl;e.hasClass(a,"ueditor_baidumap")?(b.selection.getRange().selectNode(a).select(),b.ui._dialogs.mapDialog.open(),h.hide()):(b.ui._dialogs.insertframeDialog.open(),h.hide())},_onRemoveButtonClick:function(a){b.execCommand(a),this.hide()},queryAutoHide:function(a){return a&&a.ownerDocument==b.document&&("img"==a.tagName.toLowerCase()||e.findParentByTagName(a,"a",!0))?a!==h.anchorEl:baidu.editor.ui.Popup.prototype.queryAutoHide.call(this,a)}});h.render(),b.options.imagePopup&&(b.addListener("mouseover",function(a,c){c=c||window.event;var d=c.target||c.srcElement;if(b.ui._dialogs.insertframeDialog&&/iframe/gi.test(d.tagName)){var e=h.formatHtml(""+b.getLang("property")+': '+b.getLang("default")+'  '+b.getLang("justifyleft")+'  '+b.getLang("justifyright")+'   '+b.getLang("modify")+"");e?(h.getDom("content").innerHTML=e,h.anchorEl=d,h.showAnchor(h.anchorEl)):h.hide()}}),b.addListener("selectionchange",function(a,c){if(c){var d="",f="",g=b.selection.getRange().getClosedNode(),i=b.ui._dialogs;if(g&&"IMG"==g.tagName){var j="insertimageDialog";if(g.className.indexOf("edui-faked-video")==-1&&g.className.indexOf("edui-upload-video")==-1||(j="insertvideoDialog"),g.className.indexOf("edui-faked-webapp")!=-1&&(j="webappDialog"),g.src.indexOf("http://api.map.baidu.com")!=-1&&(j="mapDialog"),g.className.indexOf("edui-faked-music")!=-1&&(j="musicDialog"),g.src.indexOf("http://maps.google.com/maps/api/staticmap")!=-1&&(j="gmapDialog"),g.getAttribute("anchorname")&&(j="anchorDialog",d=h.formatHtml(""+b.getLang("property")+': '+b.getLang("modify")+"  "+b.getLang("delete")+"")),g.getAttribute("word_img")&&(b.word_img=[g.getAttribute("word_img")],j="wordimageDialog"),(e.hasClass(g,"loadingclass")||e.hasClass(g,"loaderrorclass"))&&(j=""),!i[j])return;f=""+b.getLang("property")+': '+b.getLang("default")+'  '+b.getLang("justifyleft")+'  '+b.getLang("justifyright")+'  '+b.getLang("justifycenter")+"  '+b.getLang("modify")+"",!d&&(d=h.formatHtml(f))}if(b.ui._dialogs.linkDialog){var k,l=b.queryCommandValue("link");if(l&&(k=l.getAttribute("_href")||l.getAttribute("href",2))){var m=k;k.length>30&&(m=k.substring(0,20)+"..."),d&&(d+='
    '),d+=h.formatHtml(""+b.getLang("anthorMsg")+': '+m+' '+b.getLang("modify")+' '+b.getLang("clear")+""),h.showAnchor(l)}}d?(h.getDom("content").innerHTML=d,h.anchorEl=g||l,h.showAnchor(h.anchorEl)):h.hide()}}))},_initToolbars:function(){for(var a=this.editor,b=this.toolbars||[],c=[],d=0;d
    '+(this.toolbars.length?'
    '+this.renderToolbarBoxHtml()+"
    ":"")+'
    '},showWordImageDialog:function(){this._dialogs.wordimageDialog.open()},renderToolbarBoxHtml:function(){for(var a=[],b=0;b'+c+"");b.innerHTML='
    '+this.editor.getLang("elementPathTip")+": "+d.join(" > ")+"
    "}else b.style.display="none"},disableElementPath:function(){var a=this.getDom("elementpath");a.innerHTML="",a.style.display="none",this.elementPathEnabled=!1},enableElementPath:function(){var a=this.getDom("elementpath");a.style.display="",this.elementPathEnabled=!0,this._updateElementPath()},_scale:function(){function a(){o=e.getXY(h),p||(p=g.options.minFrameHeight+j.offsetHeight+k.offsetHeight),m.style.cssText="position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:"+h.offsetWidth+"px;height:"+h.offsetHeight+"px;z-index:"+(g.options.zIndex+1),e.on(f,"mousemove",b),e.on(i,"mouseup",c),e.on(f,"mouseup",c)}function b(a){d();var b=a||window.event;r=b.pageX||f.documentElement.scrollLeft+b.clientX,s=b.pageY||f.documentElement.scrollTop+b.clientY,t=r-o.x,u=s-o.y,t>=q&&(n=!0,m.style.width=t+"px"),u>=p&&(n=!0,m.style.height=u+"px")}function c(){n&&(n=!1,g.ui._actualFrameWidth=m.offsetWidth-2,h.style.width=g.ui._actualFrameWidth+"px",g.setHeight(m.offsetHeight-k.offsetHeight-j.offsetHeight-2,!0)),m&&(m.style.display="none"),d(),e.un(f,"mousemove",b),e.un(i,"mouseup",c),e.un(f,"mouseup",c)}function d(){browser.ie?f.selection.clear():window.getSelection().removeAllRanges()}var f=document,g=this.editor,h=g.container,i=g.document,j=this.getDom("toolbarbox"),k=this.getDom("bottombar"),l=this.getDom("scale"),m=this.getDom("scalelayer"),n=!1,o=null,p=0,q=g.options.minFrameWidth,r=0,s=0,t=0,u=0,v=this;this.editor.addListener("fullscreenchanged",function(a,b){if(b)v.disableScale();else if(v.editor.options.scaleEnabled){v.enableScale();var c=v.editor.document.createElement("span");v.editor.body.appendChild(c),v.editor.body.style.height=Math.max(e.getXY(c).y,v.editor.iframe.offsetHeight-20)+"px",e.remove(c)}}),this.enableScale=function(){1!=g.queryCommandState("source")&&(l.style.display="",this.scaleEnabled=!0,e.on(l,"mousedown",a))},this.disableScale=function(){l.style.display="none",this.scaleEnabled=!1,e.un(l,"mousedown",a)}},isFullScreen:function(){return this._fullscreen},postRender:function(){d.prototype.postRender.call(this);for(var a=0;a[\n\r\t]+([ ]{4})+/g,">").replace(/[\n\r\t]+([ ]{4})+[\n\r\t]+<"),c.className&&(b.className=c.className),c.style.cssText&&(b.style.cssText=c.style.cssText),/textarea/i.test(c.tagName)?(d.textarea=c,d.textarea.style.display="none"):c.parentNode.removeChild(c),c.id&&(b.id=c.id,e.removeAttributes(c,"id")),c=b,c.innerHTML=""}e.addClass(c,"edui-"+d.options.theme),d.ui.render(c);var h=d.options;d.container=d.ui.getDom();for(var i,j=e.findParents(c,!0),k=[],l=0;i=j[l];l++)k[l]=i.style.display,i.style.display="block";if(h.initialFrameWidth)h.minFrameWidth=h.initialFrameWidth;else{h.minFrameWidth=h.initialFrameWidth=c.offsetWidth;var m=c.style.width;/%$/.test(m)&&(h.initialFrameWidth=m)}h.initialFrameHeight?h.minFrameHeight=h.initialFrameHeight:h.initialFrameHeight=h.minFrameHeight=c.offsetHeight;for(var i,l=0;i=j[l];l++)i.style.display=k[l];c.style.height&&(c.style.height=""),d.container.style.width=h.initialFrameWidth+(/%$/.test(h.initialFrameWidth)?"":"px"),d.container.style.zIndex=h.zIndex,f.call(d,d.ui.getDom("iframeholder")),d.fireEvent("afteruiready")}d.langIsReady?b():d.addListener("langReady",b)})},d},UE.getEditor=function(a,b){var c=g[a];return c||(c=g[a]=new UE.ui.Editor(b),c.render(a)),c},UE.delEditor=function(a){var b;(b=g[a])&&(b.key&&b.destroy(),delete g[a])},UE.registerUI=function(a,c,d,e){b.each(a.split(/\s+/),function(a){UE._customizeUI[a]={id:e,execFn:c,index:d}})}}(),UE.registerUI("message",function(a){function b(){var a=g.ui.getDom("toolbarbox");a&&(c.style.top=a.offsetHeight+3+"px"),c.style.zIndex=Math.max(g.options.zIndex,g.iframe.style.zIndex)+1}var c,d=baidu.editor.ui,e=d.Message,f=[],g=a;g.addListener("ready",function(){c=document.getElementById(g.ui.id+"_message_holder"),b()}),g.addListener("showmessage",function(a,d){d=utils.isString(d)?{content:d}:d;var h=new e({timeout:d.timeout,type:d.type,content:d.content,keepshow:d.keepshow,editor:g}),i=d.id||"msg_"+(+new Date).toString(36);return h.render(c),f[i]=h,h.reset(d),b(),i}),g.addListener("updatemessage",function(a,b,d){d=utils.isString(d)?{content:d}:d;var e=f[b];e.render(c),e&&e.reset(d)}),g.addListener("hidemessage",function(a,b){var c=f[b];c&&c.hide()})}),UE.registerUI("autosave",function(a){var b=null,c=null;a.on("afterautosave",function(){clearTimeout(b),b=setTimeout(function(){c&&a.trigger("hidemessage",c),c=a.trigger("showmessage",{content:a.getLang("autosave.success"),timeout:2e3})},2e3)})})}(); \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/ueditor.config.js b/yshop-drink-vue3/public/UEditor22/ueditor.config.js new file mode 100644 index 0000000..ef4f297 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/ueditor.config.js @@ -0,0 +1,497 @@ +/** + * ueditor完整配置项 + * 可以在这里配置整个编辑器的特性 + */ +/**************************提示******************************** + * 所有被注释的配置项均为UEditor默认值。 + * 修改默认配置请首先确保已经完全明确该参数的真实用途。 + * 主要有两种修改方案,一种是取消此处注释,然后修改成对应参数;另一种是在实例化编辑器时传入对应参数。 + * 当升级编辑器时,可直接使用旧版配置文件替换新版配置文件,不用担心旧版配置文件中因缺少新功能所需的参数而导致脚本报错。 + **************************提示********************************/ + +(function () { + + /** + * 编辑器资源文件根路径。它所表示的含义是:以编辑器实例化页面为当前路径,指向编辑器资源文件(即dialog等文件夹)的路径。 + * 鉴于很多同学在使用编辑器的时候出现的种种路径问题,此处强烈建议大家使用"相对于网站根目录的相对路径"进行配置。 + * "相对于网站根目录的相对路径"也就是以斜杠开头的形如"/myProject/ueditor/"这样的路径。 + * 如果站点中有多个不在同一层级的页面需要实例化编辑器,且引用了同一UEditor的时候,此处的URL可能不适用于每个页面的编辑器。 + * 因此,UEditor提供了针对不同页面的编辑器可单独配置的根路径,具体来说,在需要实例化编辑器的页面最顶部写上如下代码即可。当然,需要令此处的URL等于对应的配置。 + * window.UEDITOR_HOME_URL = "/xxxx/xxxx/"; + */ + var URL = window.UEDITOR_HOME_URL || getUEBasePath(); + + /** + * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。 + */ + window.UEDITOR_CONFIG = { + + //为编辑器实例添加一个路径,这个不能被注释 + UEDITOR_HOME_URL: URL + + // 服务器统一请求接口路径 + , serverUrl: URL + "php/controller.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', 'music', 'attachment', 'map', 'gmap', 'insertframe', 'insertcode', 'webapp', 'pagebreak', 'template', 'background', '|', + 'horizontal', 'date', 'time', 'spechars', 'snapscreen', 'wordimage', '|', + 'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|', + 'print', 'preview', 'searchreplace', 'drafts', 'help' + ]] + //当鼠标放在工具栏上时显示的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}'//编辑器层级的基数,可以用来改变字体等 + + //,iframeCssUrl: URL + '/themes/iframe.css' //给编辑区域的iframe引入一个css文件 + + //indentValue + //首行缩进距离,默认是2em + //,indentValue:'2em' + + //,initialFrameWidth:1000 //初始化编辑器宽度,默认1000 + //,initialFrameHeight:320 //初始化编辑器高度,默认320 + + //,readonly : false //编辑器初始化结束后,编辑区域是否是只读的,默认是false + + //,autoClearEmptyNode : true //getContent时,是否删除空的inlineElement节点(包括嵌套的情况) + + //启用自动保存 + //,enableAutoSave: true + //自动保存间隔时间, 单位ms + //,saveInterval: 500 + + //,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", "forecolor", "backcolor", "insertorderedlist", "insertunorderedlist"] + + //elementPathEnabled + //是否启用元素路径,默认是显示 + //,elementPathEnabled : true + + //wordCount + //,wordCount:true //是否开启字数统计 + //,maximumWords:10000 //允许的最大字符数 + //字数统计提示,{#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:true + //浮动时工具栏距离浏览器顶部的高度,用于某些具有固定头部的页面 + //,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:'] + + //webAppKey 百度应用的APIkey,每个站长必须首先去百度官网注册一个key后方能正常使用app功能,注册介绍,http://app.baidu.com/static/cms/getapikey.html + //, webAppKey: "" + + //默认过滤规则相关配置项目 + //,disabledTableInTable:true //禁止表格嵌套 + //,allowDivTransToP:true //允许进入编辑器的div标签自动变成p标签 + //,rgb2Hex:true //默认产出的数据中的color自动从rgb格式变成16进制格式 + + // xss 过滤是否开启,inserthtml等操作 + ,xssFilterRules: true + //input xss过滤 + ,inputXssFilter: true + //output xss过滤 + ,outputXssFilter: true + // xss过滤白名单 名单来源: https://raw.githubusercontent.com/leizongmin/js-xss/master/lib/default.js + ,whiteList: { + a: ['target', 'href', 'title', 'class', 'style'], + abbr: ['title', 'class', 'style'], + address: ['class', 'style'], + area: ['shape', 'coords', 'href', 'alt'], + article: [], + aside: [], + audio: ['autoplay', 'controls', 'loop', 'preload', 'src', 'class', 'style'], + b: ['class', 'style'], + bdi: ['dir'], + bdo: ['dir'], + big: [], + blockquote: ['cite', 'class', 'style'], + br: [], + caption: ['class', 'style'], + center: [], + cite: [], + code: ['class', 'style'], + col: ['align', 'valign', 'span', 'width', 'class', 'style'], + colgroup: ['align', 'valign', 'span', 'width', 'class', 'style'], + dd: ['class', 'style'], + del: ['datetime'], + details: ['open'], + div: ['class', 'style'], + dl: ['class', 'style'], + dt: ['class', 'style'], + em: ['class', 'style'], + font: ['color', 'size', 'face'], + footer: [], + h1: ['class', 'style'], + h2: ['class', 'style'], + h3: ['class', 'style'], + h4: ['class', 'style'], + h5: ['class', 'style'], + h6: ['class', 'style'], + header: [], + hr: [], + i: ['class', 'style'], + img: ['src', 'alt', 'title', 'width', 'height', 'id', '_src', 'loadingclass', 'class', 'data-latex'], + ins: ['datetime'], + li: ['class', 'style'], + mark: [], + nav: [], + ol: ['class', 'style'], + p: ['class', 'style'], + pre: ['class', 'style'], + s: [], + section:[], + small: [], + span: ['class', 'style'], + sub: ['class', 'style'], + sup: ['class', 'style'], + strong: ['class', 'style'], + table: ['width', 'border', 'align', 'valign', 'class', 'style'], + tbody: ['align', 'valign', 'class', 'style'], + td: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'], + tfoot: ['align', 'valign', 'class', 'style'], + th: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'], + thead: ['align', 'valign', 'class', 'style'], + tr: ['rowspan', 'align', 'valign', 'class', 'style'], + tt: [], + u: [], + ul: ['class', 'style'], + video: ['autoplay', 'controls', 'loop', 'preload', 'src', 'height', 'width', 'class', 'style'] + } + }; + + 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/yshop-drink-vue3/public/UEditor22/ueditor.parse.js b/yshop-drink-vue3/public/UEditor22/ueditor.parse.js new file mode 100644 index 0000000..5e77074 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/ueditor.parse.js @@ -0,0 +1,1022 @@ +/*! + * UEditor + * version: ueditor + * build: Wed Dec 26 2018 17:25:05 GMT+0800 (CST) + */ + +(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{ background:white; 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;}', + 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 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('charts',function( utils ){ + + utils.cssRule('chartsContainerHeight','.edui-chart-container { height:'+(this.chartContainerHeight||300)+'px}'); + var resourceRoot = this.rootPath, + containers = this.root, + sources = null; + + //不存在指定的根路径, 则直接退出 + if ( !resourceRoot ) { + return; + } + + if ( sources = parseSources() ) { + + loadResources(); + + } + + + function parseSources () { + + if ( !containers ) { + return null; + } + + return extractChartData( containers ); + + } + + /** + * 提取数据 + */ + function extractChartData ( rootNode ) { + + var data = [], + tables = rootNode.getElementsByTagName( "table" ); + + for ( var i = 0, tableNode; tableNode = tables[ i ]; i++ ) { + + if ( tableNode.getAttribute( "data-chart" ) !== null ) { + + data.push( formatData( tableNode ) ); + + } + + } + + return data.length ? data : null; + + } + + function formatData ( tableNode ) { + + var meta = tableNode.getAttribute( "data-chart" ), + metaConfig = {}, + data = []; + + //提取table数据 + for ( var i = 0, row; row = tableNode.rows[ i ]; i++ ) { + + var rowData = []; + + for ( var j = 0, cell; cell = row.cells[ j ]; j++ ) { + + var value = ( cell.innerText || cell.textContent || '' ); + rowData.push( cell.tagName == 'TH' ? value:(value | 0) ); + + } + + data.push( rowData ); + + } + + //解析元信息 + meta = meta.split( ";" ); + for ( var i = 0, metaData; metaData = meta[ i ]; i++ ) { + + metaData = metaData.split( ":" ); + metaConfig[ metaData[ 0 ] ] = metaData[ 1 ]; + + } + + + return { + table: tableNode, + meta: metaConfig, + data: data + }; + + } + + //加载资源 + function loadResources () { + + loadJQuery(); + + } + + function loadJQuery () { + + //不存在jquery, 则加载jquery + if ( !window.jQuery ) { + + utils.loadFile(document,{ + src : resourceRoot + "/third-party/jquery-1.10.2.min.js", + tag : "script", + type : "text/javascript", + defer : "defer" + },function(){ + + loadHighcharts(); + + }); + + } else { + + loadHighcharts(); + + } + + } + + function loadHighcharts () { + + //不存在Highcharts, 则加载Highcharts + if ( !window.Highcharts ) { + + utils.loadFile(document,{ + src : resourceRoot + "/third-party/highcharts/highcharts.js", + tag : "script", + type : "text/javascript", + defer : "defer" + },function(){ + + loadTypeConfig(); + + }); + + } else { + + loadTypeConfig(); + + } + + } + + //加载图表差异化配置文件 + function loadTypeConfig () { + + utils.loadFile(document,{ + src : resourceRoot + "/dialogs/charts/chart.config.js", + tag : "script", + type : "text/javascript", + defer : "defer" + },function(){ + + render(); + + }); + + } + + //渲染图表 + function render () { + + var config = null, + chartConfig = null, + container = null; + + for ( var i = 0, len = sources.length; i < len; i++ ) { + + config = sources[ i ]; + + chartConfig = analysisConfig( config ); + + container = createContainer( config.table ); + + renderChart( container, typeConfig[ config.meta.chartType ], chartConfig ); + + } + + + } + + /** + * 渲染图表 + * @param container 图表容器节点对象 + * @param typeConfig 图表类型配置 + * @param config 图表通用配置 + * */ + function renderChart ( container, typeConfig, config ) { + + + $( container ).highcharts( $.extend( {}, typeConfig, { + + credits: { + enabled: false + }, + exporting: { + enabled: false + }, + title: { + text: config.title, + x: -20 //center + }, + subtitle: { + text: config.subTitle, + x: -20 + }, + xAxis: { + title: { + text: config.xTitle + }, + categories: config.categories + }, + yAxis: { + title: { + text: config.yTitle + }, + plotLines: [{ + value: 0, + width: 1, + color: '#808080' + }] + }, + tooltip: { + enabled: true, + valueSuffix: config.suffix + }, + legend: { + layout: 'vertical', + align: 'right', + verticalAlign: 'middle', + borderWidth: 1 + }, + series: config.series + + } )); + + } + + /** + * 创建图表的容器 + * 新创建的容器会替换掉对应的table对象 + * */ + function createContainer ( tableNode ) { + + var container = document.createElement( "div" ); + container.className = "edui-chart-container"; + + tableNode.parentNode.replaceChild( container, tableNode ); + + return container; + + } + + //根据config解析出正确的类别和图表数据信息 + function analysisConfig ( config ) { + + var series = [], + //数据类别 + categories = [], + result = [], + data = config.data, + meta = config.meta; + + //数据对齐方式为相反的方式, 需要反转数据 + if ( meta.dataFormat != "1" ) { + + for ( var i = 0, len = data.length; i < len ; i++ ) { + + for ( var j = 0, jlen = data[ i ].length; j < jlen; j++ ) { + + if ( !result[ j ] ) { + result[ j ] = []; + } + + result[ j ][ i ] = data[ i ][ j ]; + + } + + } + + data = result; + + } + + result = {}; + + //普通图表 + if ( meta.chartType != typeConfig.length - 1 ) { + + categories = data[ 0 ].slice( 1 ); + + for ( var i = 1, curData; curData = data[ i ]; i++ ) { + series.push( { + name: curData[ 0 ], + data: curData.slice( 1 ) + } ); + } + + result.series = series; + result.categories = categories; + result.title = meta.title; + result.subTitle = meta.subTitle; + result.xTitle = meta.xTitle; + result.yTitle = meta.yTitle; + result.suffix = meta.suffix; + + } else { + + var curData = []; + + for ( var i = 1, len = data[ 0 ].length; i < len; i++ ) { + + curData.push( [ data[ 0 ][ i ], data[ 1 ][ i ] | 0 ] ); + + } + + //饼图 + series[ 0 ] = { + type: 'pie', + name: meta.tip, + data: curData + }; + + result.series = series; + result.title = meta.title; + result.suffix = meta.suffix; + + } + + return result; + + } + +}); +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;}li{clear:both;}'+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}'); + } + } + }); + } + + +}); +UE.parse.register('vedio',function(utils){ + var video = this.root.getElementsByTagName('video'), + audio = this.root.getElementsByTagName('audio'); + + document.createElement('video');document.createElement('audio'); + if(video.length || audio.length){ + var sourcePath = utils.removeLastbs(this.rootPath), + jsurl = sourcePath + '/third-party/video-js/video.js', + cssurl = sourcePath + '/third-party/video-js/video-js.min.css', + swfUrl = sourcePath + '/third-party/video-js/video-js.swf'; + + if(window.videojs) { + videojs.autoSetup(); + } else { + utils.loadFile(document,{ + id : "video_css", + tag : "link", + rel : "stylesheet", + type : "text/css", + href : cssurl + }); + utils.loadFile(document,{ + id : "video_js", + src : jsurl, + tag : "script", + type : "text/javascript" + },function(){ + videojs.options.flash.swf = swfUrl; + videojs.autoSetup(); + }); + } + + } +}); + +})(); diff --git a/yshop-drink-vue3/public/UEditor22/ueditor.parse.min.js b/yshop-drink-vue3/public/UEditor22/ueditor.parse.min.js new file mode 100644 index 0000000..d996fd0 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/ueditor.parse.min.js @@ -0,0 +1,7 @@ +/*! + * UEditor + * version: ueditor + * build: Wed Dec 26 2018 17:25:07 GMT+0800 (CST) + */ + +!function(){!function(){UE=window.UE||{};var a=!!window.ActiveXObject,b={removeLastbs:function(a){return a.replace(/\/$/,"")},extend:function(a,b){for(var c=arguments,d=!!this.isBoolean(c[c.length-1])&&c[c.length-1],e=this.isBoolean(c[c.length-1])?c.length-1:c.length,f=1;f=c&&a===b)return d=e,!1}),d},hasClass:function(a,b){b=b.replace(/(^[ ]+)|([ ]+$)/g,"").replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)if(!new RegExp("\\b"+c+"\\b","i").test(e))return!1;return d-1==b.length},addClass:function(a,c){if(a){c=this.trim(c).replace(/[ ]{2,}/g," ").split(" ");for(var d,e=0,f=a.className;d=c[e++];)new RegExp("\\b"+d+"\\b").test(f)||(f+=" "+d);a.className=b.trim(f)}},removeClass:function(a,b){b=this.isArray(b)?b:this.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)e=e.replace(new RegExp("\\b"+c+"\\b"),"");e=this.trim(e).replace(/[ ]{2,}/g," "),a.className=e,!e&&a.removeAttribute("className")},on:function(a,c,d){var e=this.isArray(c)?c:c.split(/\s+/),f=e.length;if(f)for(;f--;)if(c=e[f],a.addEventListener)a.addEventListener(c,d,!1);else{d._d||(d._d={els:[]});var g=c+d.toString(),h=b.indexOf(d._d.els,a);d._d[g]&&h!=-1||(h==-1&&d._d.els.push(a),d._d[g]||(d._d[g]=function(a){return d.call(a.srcElement,a||window.event)}),a.attachEvent("on"+c,d._d[g]))}a=null},off:function(a,c,d){var e=this.isArray(c)?c:c.split(/\s+/),f=e.length;if(f)for(;f--;)if(c=e[f],a.removeEventListener)a.removeEventListener(c,d,!1);else{var g=c+d.toString();try{a.detachEvent("on"+c,d._d?d._d[g]:d)}catch(h){}if(d._d&&d._d[g]){var i=b.indexOf(d._d.els,a);i!=-1&&d._d.els.splice(i,1),0==d._d.els.length&&delete d._d[g]}}},loadFile:function(){function a(a,c){try{for(var d,e=0;d=b[e++];)if(d.doc===a&&d.url==(c.src||c.href))return d}catch(f){return null}}var b=[];return function(c,d,e){var f=a(c,d);if(f)return void(f.ready?e&&e():f.funs.push(e));if(b.push({doc:c,url:d.src||d.href,funs:[e]}),!c.body){var g=[];for(var h in d)"tag"!=h&&g.push(h+'="'+d[h]+'"');return void c.write("<"+d.tag+" "+g.join(" ")+" >")}if(!d.id||!c.getElementById(d.id)){var i=c.createElement(d.tag);delete d.tag;for(var h in d)i.setAttribute(h,d[h]);i.onload=i.onreadystatechange=function(){if(!this.readyState||/loaded|complete/.test(this.readyState)){if(f=a(c,d),f.funs.length>0){f.ready=1;for(var b;b=f.funs.pop();)b()}i.onload=i.onreadystatechange=null}},i.onerror=function(){throw Error("The load "+(d.href||d.src)+" fails,check the url")},c.getElementsByTagName("head")[0].appendChild(i)}}}()};b.each(["String","Function","Array","Number","RegExp","Object","Boolean"],function(a){b["is"+a]=function(b){return Object.prototype.toString.apply(b)=="[object "+a+"]"}});var c={};UE.parse={register:function(a,b){c[a]=b},load:function(a){b.each(c,function(c){c.call(a,b)})}},uParse=function(a,c){b.domReady(function(){var d;if(document.querySelectorAll)d=document.querySelectorAll(a);else if(/^#/.test(a))d=[document.getElementById(a.replace(/^#/,""))];else if(/^\./.test(a)){var d=[];b.each(document.getElementsByTagName("*"),function(b){b.className&&new RegExp("\\b"+a.replace(/^\./,"")+"\\b","i").test(b.className)&&d.push(b)})}else d=document.getElementsByTagName(a);b.each(d,function(d){UE.parse.load(b.extend({root:d,selector:a},c))})})}}(),UE.parse.register("insertcode",function(a){var b=this.root.getElementsByTagName("pre");if(b.length)if("undefined"==typeof XRegExp){var c,d;void 0!==this.rootPath?(c=a.removeLastbs(this.rootPath)+"/third-party/SyntaxHighlighter/shCore.js",d=a.removeLastbs(this.rootPath)+"/third-party/SyntaxHighlighter/shCoreDefault.css"):(c=this.highlightJsUrl,d=this.highlightCssUrl),a.loadFile(document,{id:"syntaxhighlighter_css",tag:"link",rel:"stylesheet",type:"text/css",href:d}),a.loadFile(document,{id:"syntaxhighlighter_js",src:c,tag:"script",type:"text/javascript",defer:"defer"},function(){a.each(b,function(a){a&&/brush/i.test(a.className)&&SyntaxHighlighter.highlight(a)})})}else a.each(b,function(a){a&&/brush/i.test(a.className)&&SyntaxHighlighter.highlight(a)})}),UE.parse.register("table",function(a){function b(b,c){var d,e=b;for(c=a.isArray(c)?c:[c];e;){for(d=0;d0){var g=a[c];a[c]=a[e],a[e]=g}return a}function e(b){if(!a.hasClass(b.rows[0],"firstRow")){for(var c=1;cT6f5o;DDGZdf(H-5l0Zma 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ξ(iT7y-*YBktkax{$khBX`vR|O zRhiCTuxRZyYp3>CmHG2;1WlPr~c4d#Ak=LK96;F#Flsr?fpu$8xzOwdkb!_pc`%Y zk%~(<0-!zcvs(9|-QOI{97}1V;bG!bA<<99i&D`zx1iH27%aYIfi;fz+ zN5&TQu%0w*e!s`^8@ds~c2SdZs7j@KXp}ZVcPDG*&N1sm6~Vnz?;DK&y~YlUy{_K& zV+q<4a`!p^5OF9Pyqn{8S^I210X8l}bFSAezGi*hvDSI@cKlvov2<-+5>U}>{UZStLB)}&ja42F2Gngb0q@K|E3Cxkw6d_$f^ho1%zmG3 zWY5~EtHBclG!rl(kJGkyXy?v1G%_# zMpyN{c2jKnA2)9F++~&S9JA@0ZdxbZv2bG^p0l86>B=r3Sx_hEdaE6RIk?A2_CcIO2#So+DHh%$g|j31kD2 z-3>QswBpTIZoHt+bqf5w?|;QOIREAO=L`&zmRJzPG&2ovWrLE_V#we8{HKJk|A>Ei zeZ?pilnOxu>a(bz?dEsXfV*+Q7?Xf&z^*5}BJ%q51(Q)ptuWWe6#3lhd0%C@WF>v7rC+Cb9@!jQ^GJwU9{b;>a7JVf0hk=VB?s#h+(X{)6 z61;9m?k-jde%ZEnxxl$^!s5rIy}O~UTq8)`Rmk#Y16OoCAy~9K-X#{z3O@!xahXuO z&3i8r#8vluj1cut2AwzIxa+R)GHg;$Pc{GS>%4a)db`D}9(PxtIWSf8`y=+FY2QFl zQIe!->ZN_fE;rwvE9TeiyJw``B#71AdA`n+c=vE`19PxK@3ib4^4}_&gQ+xiqX|On z^L=0Whi|{-bOe9l2cMxuK$9R<7RFSxsY!v!gqN|;U;F$k(${~)znWYz=@qCKh|N2? zO*eMM8G9ntHN+lHfF!TGD$~%oxbPnSqBwlWuNezC(Xx1wkKxeP_z%ZAb%`v+9m6|46L%x!qO2(9PzZ6 zS`L0ho1;fOEV{(&ksi2D7QHv%%*K~@2(KVHIl9-ptOJz}`TdJ;`N!Y?igBF-ponG@ zV6Rh-bV#^f@UC6r~o0(2y0gY+$K@q!E`M*R^p~S4=`+TsWoIpoXNHSEhV*cFr&aQX6Dt z2Mx3=$lhIpuI#!?&MP9CzTX6lfmxe(HJ49B@H$4ST^#59J%Z2ehdor&bhU#|w&=I^ z(qZQKyZA}W_Jo|ZO3aTIj~Th_h>sh`es;t*@P&14U(l{Q>q~YxF$x|FEx|MQN8@;p z3z_Q^8@-}uEmt>YfCEX5Aja9m84$TR8Sszaf6xE%oA0<(1r#yEF=}<3fTu{30kM&-h5uIrlQ!bF9ng1F(S;*+Ask55h*P*H0QE@+C)dkfAikDpK7 zSar!~_1M~8wrPB0{pPoeqj{N+{f*7{#>vmjbK-UZRH+?mvm8OQbNxT| z=lP6R`dlZ>YRIKYd)Jt2Zs#1i;(L+R$5uA%^O#w>?U&jph)uMfIj`OZ%j#p5S?+w4 zg-%=Y^k$K+ZJW1bbA>kXndrMWF@3(XsqMPJ6TaW3P>+di%&ul87)P_reZV@iu4O?o zj@U04IcfA$=R}+n+*|XjHD;sPOe_C>Nb~6~15ix~-GaqWHVxdcJR8ixixw`6*F6+& zxHDy=Vzeza>FOgLxCl}mR_V^>VN8727 z?eKiinovB1ui+-S?v6O(h$D{J7CsgDj(AwKNv?rCkw>$Cm3z*0hOOxY)1`M__a~xR zyVnphTo|YjMfqpne#bxh?mI3*K(t4%bd(X+zr=eJ>X>j%FuLON5cuzY^jrLNaE4AC z^&X}LNdj3Hmzw+M9}1WoqjJn8C6hvVUzJ>rOI{6M@MUknXAY=SsZpv^MI&j}3>FRr zin(xYHKS@m?S{sHsZgdG%EW)tf5DH#fJ!PxMFQWUIqlAFbVEls?O(UaP15v9w>0&Y zgpSGPl0rUQ9=wjmXT3Iu**T3(>9QAHH>d4Xl>CSV(>cu!e&f5l-ecj&%4>F|McM{= z3R%zyKL?Vsr0BQ3&nEAEo2Kr5I8YNLzd1jx>(iU`t!39Av|P9Hbq}Y#H|gJplI!kn zxZg|7X`t5{Nbauka}TZviU*Kd(F>Jh6kwc<@K<-Z`~)V^W9{D zZSvjS^8EHQT{|F1xDi^v{oNZ4b!hsLx;MgqUZ`^L6-P7&BZ(r6q|Yy}t}w6o{B*#; z91Dr$3EXmIO9!n5%98UzpHI$TaCLdbXi`$gh=~xrM$M^1w*CqRkgf7+g^C1G2pUL} znnIKp!vUHSr6^ThVeL7h1cX90YrmR$a7%>X^g=;xjtPhvLjotg0T)(sX*JU5ugq=c zVx!U|ZC{40VY~6|I+DoEO+LGpLg6cD4q3p2)NX8?)1_ z&C5QIbdsCPTuOz#(%>EO@nX)*>5+YF7Hz8!p4=Vrr(}-c+lU3*C|#b0`ChNqi_LT;f#y9`DE3 zjLR{v&If#{1#hI6gSb=`hGCL&uD+E0=&AshxGYJ~4koD09^rNf^eyyT4s zl4at92x3|DX|~MMZFg8JH?BL>Mj&NgV>}mqeD3f0aDlNvu0Mu#*F;W#n z{?FgMSi--e}}UgCS83x737C$#o#NY%=+@zOo0Kcj|BDHB08yWt&;vF{?FcTmh%iAEp=1 zT{9Pt#BDmKHcgE;8sk+Q=D~ujICmRVZOG46_uHl6`MN+VbLTyGA;0VB-8g2pop7r_ z9NulFU72?72Hg;|>z;Q=ZT{5eV9T_g-FjY?FGyA{hWlOjcX8ssSKcZXOw1n9$$wgg zEuXc#j@Ai3zUJ8a^4vC-?}OVmF19(g-vQGu*T3KwW~iQ^Hp=DJrmoy6ER$0crSy^y^_Wl; z3?=gZV#JG6Su;e+wOk?#LP@-k|!9u|p!L&ln8B_rRTzHLG#g~JE3+eIA z#Wk1iR8hc%keZYNOXoA8tMkhBlL;zbPrbLga*iy>K;3J_=e2G#|Jl|~Q%IhphURu` z1n4DY%Pwq95(LS_JvpR?_*Y_$A6|a9cIx{$HF&;1lls0uI{!Z=7Q@dzL;#T6a5&58 zeqk}f*xW?7&QE0Z9d}#6X9R}@vzkMizgD&D_PgGXJx?57o!`VZzQx43NtGKGeJ~{tVZk4PU;x$EIc~9bh|Mr*s!Sx7D1CRoXN*U@L zA#;*7Tr~!xYkqR_ivRkvAMr*LrCpMvqjxsprX|e;D}+c&&eeFr*kBSPznqLQ0$=rB z@Rj#CGq@}gm(iy&I@+Y~LQAwDCBu{DG*_xz)+MoaekYvp*`QCQHP^wZRZ!oqZD$^E zHx8`9g2GDWrWv-+pSMae*1blUmz&KTPdQ0_t2u3PZw=l}+tA(Nz6u%oNle%MR`V8yF<8Pecxp)9=agB z2^QaR(OLRF_nYdp7RK4fG*7L<$_<4_dhW-7?p%3DSR6yEmZE)_pIX1DB?mf+`@^dL zhr+JM`M$LO*5`Xp^-(NvylA`h$7zj>UFGZTJ2p6X$Vuo5lbY1#qvCt1JG}>1%4M`1{}df(sqe1_hdxy$O3FhM<^6 z#%5rS$AYm4b~)ll!&iJU7~qqdYq7>}P7u-TSJqJ@R`h$D_T;wd43Th>|u*%WXN-fR#m|37>0`rAskr1$-*RyRpWd%w3cb7sbN z#$)6PBt~N7hQJ^4IsbFM7)XF12ofhj;=n)#PLLV<%$YgwZEs2JUaKk}YIU9ys~;n&{D zp12p`_qRWh7Vw)7*ZgUj@vVhI=SUrA9jk=@t@}BB8-be-!7OAmY!|^LaL4ZaCQKyI_4voVcL9XWf zAKlOV4?q2mpUe@PlX6S1(0Q)jwS=bzN=BAF|K)G~l>hMKN3?WwZm5K}Pv|fyqlFft zDTQptGI#WSp;P5YF@AUdiFP*UPtu%kL}(gEy{8dKqd}`+&?q!1kxS;jWDKDfON5XKbadhIIIkXs^uurzOrYQqq@_slj*peZ7Gw6sIRlsIA*Ty3} zo1(c(aZvz#yZyMUdmOWP<6(Dq#Hac0E<^KUFf78hDhzG><|XcBt<&gA&ev_yiqFg# zeQNOf!NNGtIPbn8@w`g$c`!3j8EM^coQ3l~LvHX=y(FGzSO)!NTsN$p>#*~lgJCx>kb>G$lT{=YuPdwzj&)h6ZeS}}@KRk?E;bT-?`RDfz{-N@6DGoM4>ITQzpoE%E8 z-SN9kFUcX-e2C-av^#eFxInK?LoD*e9d!>2F8LUurxBQiBb1u|PE})V?iRsH2Cajm z^jaMs=9qW1Nhos7KmYWJ8=3Q8fA}-zUB^s2`s8#=nA;5T6jq@bHwORBci)rme&+w` zdy39z@eq5FLb4Pk>!I0BiZN@M3r54$yyd555B3XxZ*jx-r9pD02aG}?fdwr!S&tjE zts<7_v*DU(XrVWXI0@srQNC$fZcE|bdQ27dT6P1g&joy4JjW|7QfeN)hxIy*2i&OR z@jE3V7Gpd}Q1b&0=UA~sHe>9~3}M*FOd+D;LDMvhEJDF(JnZ~2#;_XEk2dhejxw5z z6GH6T;&0laHqY_!;ZBWpg}+HG#|z%WYhmZ$wrA{m?k@0+Un z1$xV*8t)|uxVz&w^Ok@5+u!ojzxf^iy1%2e3&gKc&zNLJpVMeh2nEM;Mw2jW5}%g$ z{9crQaQzK8+4D||zuvGBqb6Pna8Z(!N=Wa~jwq=>MBtHMlK_>Aw=`LQf9 z3lSL8-QKVLFN385mV9^JG^z z6}--3=Q75Bofw4_*loxSiFCiFzI;x2nvd@N;B6`apBF@eq2|N_U#in0M&C`w6ks+k z_NM}KKAulj-s5qzF;@19Fi#79N;Cf1Pk+PzoNwvcIgUb73P$gSt58I63fzC@-)R>7 z(;xnrA0(5lL!=??@F}?qXiFyXx$pRFMwz$#ZGX?Nx1afLvEbYJf-7xkMQ|?^j9i}~ ziO{;xRH2c(oasd9B+=oZ$`$ZE%J*r`ERxVg-e(Ep?sV~L`*(*`b!1*_BBiu$_yMZn zbqrAvLv_cw&5xT0?}7^k?Ak4UP2)<}BxEm>%Pws5vhMPLzBf#%Jwsd7apGM4CZ*%$ zL7GCSaS~raSzmBEtS#KOd~4>UbUX^$1s5EG%jW8FAmUZ91CUZ_fErT#8dM5ZK`epW zD9nO;c(f#9@>X7}`p4R|BlM}DO;59&F_#i8$K@A&k6;h+8CZ^^QZym)1zV$X^QXeL-qihi3jt+vc1@w@w-lVOTYB#2g;^0=Q5s3KVk`w*okG==k)Wbd3UjHdn>r^ebhgB_(i+`^vUx!B3|m-m zw@T4`ew!YQ^UZlbJa;x>!9|Ru*VsWDIHFte1OsnVu63^j`yuBz0=BbbxAWg&eZjiP zhj(}0+v0z^qq8rj>rjf`__Id@h`lyF$aZ)Z-g-?R(w81v=G%<&$M@NN*F4`zeqCX; zjuFEQ#JV@{pmS{Cft34}_X3En?P?-Q}coBsZ3ly0BA-?;Ll&v)oG*Z$tat2*lqsYxf=7;SeSat6OshVvx6 z&Fa@GLGc`^oD8WfV*W3sjO*t*w`OC;#6;njl<^-6QLKO2Z|ZRBla$dR^!a; z+J`!)378-*BqR)s;bcw-icnjk8=3_vEhPb|d6gQ!w?_eTdVUaqES7fn9gS(Qj&i;W zg?K*(k%J2^I5liA3WSyLM+D`qF+t3sSj2c^)oV9U{06S%6qC)&aOOpWP9n@u{^h5i z`Je88RV!D5cnleN$%C95Jx*}kb#*bu0&Y4 z^38mKSfP_bPIlDw&YIT5gE+amjWDrkw_y-h85ukb)#SK&}5rn}zfFrjZQ_@5%_{T^}BoKh2t+p)2^i@dXqy+d2&xk_Xp5833Zcf1Yot`L>RF28SNFXssusmKndel& zjF~E*wc&sJ{4>|>od0-s!-r)7gL;QYtA_H zpflc;LX#Sj7}v8I%ljqQjk0VKKUWg#c1!p182Z0&P~>HJPZdfTE;rC&CA1^(54TkxCjJQZrm|!HeMJd6}v*+#pZ;wX2mK1M-!6yEmVC@T6UoSWky( zO!TNMcEM3lMe>e@uWv-S;DYl+2(CmdSL99GwbrU0J9E4kQb3Yo;-hfL=5e->0w6qv zVQgH>6}Pnf?{`1(m;RY$suaZAGpp#>|D+5CM76^ zqf;norLI9X>@s{R&aZ9D-{r#3-7VKwGZyn1ZAyq4Vwo1Dl^T!dg1d&Oj5aKbbJt~h zF)YFLtYv1-x3dLT2AcC1yzbA7S)Ly2LU{E=5YZ5FtIUX$(t{ZMDO3a<)@3S;c4^d5 z5H(fMrrGYndl<;P_T@k>t(NEZ2OVTrtt$5n=Y6hy?8FHMqZcld4Lp6vYS+&HK99gT zd1GNUFj*-eK~IQwCiu`kYw+p0;wih~kMRKQI{x`0ExW!u-^KY;%KE8o{=ry!qCRtM zW9U@gnQhO%&0}{;PviNH0>{Gf`s6U*j(^L>c=`f`x#r6`vteahKdI!m2lu)*r%wL6 z^W3jAzn;=FyDnU@s@p*(-s=~;p8P56n&DbI?r6{F55L<-+ka_PhfaNG^e(6xNfa@| zr!i%<05a8>t1;%S4<5Ww-PDbIYAfN6dYa++Ym#zpTK;f<%fGN+`R2Rd@<9bHJ;j|| zGAa$72$mx1OuKvj{hJ$ZZ+rg5-95i7TAY?yiQIiIvKnKkv{G?;&4?)rOUy+0!!nYv z|F%hdD$boK_a zE*35WFQeh*o+}+T8tYbpD`#{vC|>`rtv*i7@C)}CTcaEJ$eMCi{n6`swovG5S*c4k zkn1lzlvEp!oO_S=;5~Q{+4^!{H3sLnxt$!wV8bFKoApfw$-YILZD4&$(I!~650b>| zJjUcVfy3)|d*6S{g}qH#7rrif>Z$P>W5?GwFC3>&4jZXsP`}3Rv%O%9SzW?}F>r>% z%+|HXncUmCVHy`dZ9r?3))SQ7?lqziE|AUF+aR~8Ln53hS)doAU^O4zs+){C@YE?v zeTC56KIQmb)1EsZg@l2&{MB90zqtF%ttj3*eF_hn6a#_WD5fphd#+2zKmPbVf7Uh> zI(k*a5-t*JHl$Jz6?2IG+%gBbpvm}g#!P03?f|ng_H(i z4zC+D@i+d2@)nr)#ymTvN&GSw{_@u!`TeKQxHcGytI(H7f?h=E%&=adcV?~fkACqLaMr+Wx(nt+4F(*l+g%C}2 z7@xa-RH0lf=6Kifp>4To5|)>U7#6wEQ9E|9kJKEbD<{}ce}`OY-!Gh1ovJF$K^42< zqMd#o9=dg7ZcW%aCS(welaI(>&t5D#kTsr3WUD7&32#U-Lcx^4Fi3 z|K^YQp?cw5z_O$2s3@r@9nLa${ONqbe{}sV|NN)l^Hb~0q}gh`NQrBi3is~(oC`ON zG6Vk3o$h|gZ*Q(?N{?80GH(ZNX*CXuMSeZp=}>NqvnWndSTqfNDlEGtKg?RZUvkT! zsF}hOS+l~gvwOm4wylnW#=3eMq1H#`V~&wS8|_I|!a&;s_sG1rcRf$gZwCd6_q`ha zN}+?HZH8YKRTo@v!3FOY4;R2+ukrBWQ0mURo-Ad`1s80>&DYjC^ELFG_X8Vh4ZSGK+=Cfvg`4?|Tn~6)XSlp z5qo0McR^}QomZipUB6;9IN2_;vhBoszu(~nIOYzuPj|k#Okoc&cHH{@3zq&Dv3BV8 z()OL-oF0dW!<;1^QD9#R=sq?D+IPIaAn+LP-Z}n^g3{>07>x>`h4dFTSyKJl*-wW#KTK`&aXC_`# z3`88>An*~!TEdAm0^#wK!PiE}>g&p5?vXItx3*)U)Umy>i1~6&^l8Rl-{0}CNc_Xu z4XqWjI?G0B%_0Y%Ktn?MLQ08$^uu@j-H*TH_qmW$LJ}l%)RZhj)*1;cpl)P0?ksU9 z3HQPx!LPSVuCK4TYFqAe&$q4f$qiA*dO-kjRS`&>cAKN)UmOE10 z^3fN3TK3^>8{*?O%3(-HFtterPpYy?YY?AF{ml@Ox5H-IxXd(O)I`WQC34wU< zJTCveDs3V(2jx%l$yGO2ft%FKQ!TK!?u&ilQoHZvy>)j$HlND3(h?5Om$mn;98as|Fnb*;r@ong&vyQ97H=@TE}s~Lwm-Lt-A8J_Z5zVYt}36B;$TytjxbwzYV z35`9$3!uQMitd6DpGBkaSUg=i7~l6&{`NPj$!pDa}vG5zg*t)O}gf{CYUMr~clY#7 zOT$VmWmA#aCMBezV|lO4zdD}^L_uv|mk)xJ&T9O#`YuXY=ou*C^&X_EbB;Su!`vHQ z*n>QH`!EJ-a^A677rY;QEfe6Epc)A=r}^0~*bR3-C@%Gar(x48HyCvTZB5^KeC!1m zTyVk5VMnZ%IN35HN>artnak88|H4b zS!u1%tI#PF56_~zA)WHai;w*ME93tDSMEemZ;6|eX%@-68&PJS znJqi6+c`JIxuGz#LSq&Nu^3_nO`+K7=Jchf6PTwtNt|y}16{|m@3~&I+*jNs!aa-)N{Q@9O4~*t?}a!oV$0>f$Rk}ryt_T9GplWpe6*rL@;-X z6?777H=Uk`4SPo&MCC;5V z_agjMGJQ7wXg23&)-a!GO``6o5-O8gNt7ZKVChC*jO;xr35#|Hea98T5AA}cJa+5J zt6&YIVY&+kGq9Wx*YWK!d|vAS6_7}~pwn=RgC1ZsNl!b82e&m|<+5JbiGj2G>=W!b z$+;N;s*zuX$;)IXwfTYxo@dy}me=_s#t^UG0UH(XjtSp*4dd2%^_3t-1YW8QZH~pOrH$@*y}vq&CsWLvk_TTMq!OOIKu{gCL+^w! z2$X5eSpDyMY5C+8N}D=itB6QVM^KQI_$g=ppZi;WY9x%TViYq!j%Z(PBy@d zBu?W_vha%CS>|4xWle7W&7$F2faQ{#H0Nq@g}H^HCQ%yV2`%9T-DPr#XpNEcjc-;s zRKukAP#P5v=4zV!)QGss!M@Y525Ck~&7mvQK)+pgv!?WN!rVK*ug%!R4Df3lGn6E{nGH_@4E$*p)ZrJ>aQ12)~qzZC8Gs9Y^pMCqfri zGSXV}_3#7=`j@W5`be|u{O8h_1~?qGT6gDcIvq82if3*6=Y%bj@_F>`FXP1&WJN;2V~e8YIvsHP4IR26xxfFv%{gor_LWI;!6jiB*^K1M z%oA!g|C+<7w4NGz0mYa}jTcj+5l~mgfU?zvC-1AABdc*=OmH!>_F;@M=dX)%ZH0d* zkvV*+iaJO!n!4R;?sTbP(PjR;o$+rLxBTRVw#-p8alM21RvUlZrRhj@!i!8UJ7@m z$F&K%tA){smk1XWT~RF=&ab!(ikg$69E`$=7j&u-@SwhdERIQ4$lN0I;(&^iDm7Hi zAHS77_PU&K=Z4a4Rf(BNH1`y*qb(Pa%xJyFSwu<7#okRnxFg zWhPFe8Z^z6;+a)wRq6YlJ2OlZof)%s#`SCtrDKtM{$z2@jW$ThAWq*HeLJv%Waax* z{o=ZL_;8^~ zQwVQt%OiAd^?ND|N~3VtIPutWaeqBoh}RtVHrvs@c6D;k-8&rrzg%Y9NkMNJGD!Pz zesvlG2l4(G?fBfD@08d#{!Yh_Ckcx9kY}v^{p7nm>{@RDL)@KJT4Hgd*NoDPiO+{} zH?#0EVRc!RkRh<4hBb&Jf^N9U@Y>xEk~>Jk+(~K1FZrH-)6e*mMZ*;ZGe;%7ed3T% zC`w6%QkMKy6U)@{f9FhALF-1q+FAy}dxuhzlFjG~bmBCcC@6N9Nv-m+U9eowGn9>6V4E>{!efd^4MKf7?+!*L#V!XJ)l*CA@QWT`&r* zAeA5~Ylhsz9Hz30jU-Md2v*A4_nUPwTw}Nn_1c$hlMA-u+zf!PNf=}p1ddq;UvnCT zQyLcT{(xWq-Z3t!zS8z|4shRK(_C05AFry6I>tvG-1Y@Tg#;uTL>ju3_}y~Juel?a>bVmqyOGt&4uwRg zLhl{(-1GNm*IYG9QQsO4rV>frdv|&ZQI?F+IyCqkt;lr$DR`-xb`$=W= zzNt1WO}XuJHO`Dyotw5r#ktQNvo>+Pn4zW6W@Bz)4yTl&EH`QAUvi91jJ5Uk?aBZj zKmSts*Ng^ZW&=^0^h7GE;*Y&EuVNDyybea@84NNU+kUm<^Y;t! z>ZPiW-Mi3KJ4xMx)5u^92t6S_rY>AEF7&Sx`<1QpdChTudav&>-gIXHMW7OHe@;&U#DDc{d;a1(BGk7*=s zM?$$YjN;hz68wKra$65neQzUu$dwB}RJ~#Zmw$3^4hd4&?`q+-;@a4lk zaf@Lv+0XEPdz0Xy;{rTyYZlWW z*uEc&X#pW|m+qQn^D+=k9au^2QVQP%$+BZ&tL)+Gr4R9!hejAf# zpv%1#QrhO4^-E9wn6@LetxA=jH%}B5?(3IxLWl#8x-oHzga@i|p;f^x1A=W6dE<8 z2z@c;O$%-$hj}|=S(dQuN%MxAw&fS=F$!0tstW3OiZM=owcRkjd^K)Q$B=3K=}^99 zFqc&*IJrQm&9bMI67h9asXP9aZLHF< z3;4yC%!O`KjsC78gkjd1(;E~MTocRQxXZ?ecFwg3Gj|#{+%k%hR3fLJ z3QK{{`JOC}E6j4{V^Xe~7AzxXe7Bf!gW?ml^LXwsuD;ZyZHsWs_+9;1YuU-l`rcjk zHBEy`C}@U|%!40oS9m$6PPl1sUX0K8iCwMjT-xC=v9nDd>HO!^e~$@4))pH3Ui-#~ zFO44pXEDy4!#zy#TI27zmBVB3l)iW@<;HPLIReG=y<=A!d#_{ZW3g|Zip9Qw)bDM3 zUtJTC*nug{?WNYEr(RngI>$ff+S4);5j2H2sxN)SyA47f8qsHNwVoyvY9VaAwK)DM zMR~FT4}_8B23|dUm8zI(Y6DA&CGffHssUyc4+Tp%kCYA=r3xA)gtipEYg^``mT?*fwh^h$;l3_79d^>^bo*~E?csu#gqy{<^d1&KR<{b;D0|+e7 zxSR9CV*=g}p^LnQUG8D<7_e^=KL4jV3}2!nS^X$> z>s~mX@45YVI-abPe)mm5=Zn3i@%A3)MGzr25`p@aN3}lB9J}DAyUo+fJoE&-IG*yT zPf(#bmwES80y+=G?KS|HKxn_OBjbNI#+}E(Cgm93=cld{zl_(evtwL;SACbNblJGz zCROFpNmh@M7#}iWU`a8gDoswYO_O8%Y;;}?Oo338bPJ`;)|?_rM)^7Sv{wzu40j_B zG;|pRr5vv!C&`76^DBPN!lzu2CZ1*xGXbz7dY#C2-P#ksSLB=~lAh3C&z!BeSD#C6E_KCme+ zGzdMdUP>nFK)$qvIdnnKu`U{7@Se-*zufM9AjyjUcgc)z`7Gwl{w@BD5^42xu0Vr1a&ZhrjTH9Llu^N z$9=zygyb$5PI1Sapj;AZ5M0BwQFU%+LQ7xizX_4J{~n_kuS%0aH7%85X#!o&aWew< zz+GQx+m?BnF-Mr;V5J&jN;07#=#ICgtE!elE}5jtqHSqV$c0&gkMows3&{;}LD6Sz zYD^Jc%>y=-t8o|Awe`W8%5z=rbR6wg%} zeXGs>F>}L9KcnNAhmvNmPA1Y3s8klFNM&O>?q#x$31jEry4>+#>XEN4x#0 zv%Kq>llU-eY1~O#(+pH`m*f!xXbmiL2X3e)#34!Is+rT8(3C<$&&S1r1_|%kp4^yG zrqhs-hrbzV^k!iDMTJ)SDPA3QHT{A(O$fip7zlfc#mf*ZIqZb*eDI@R`F!D(FuPJ8 z+Vk53Vzt&(dWZy-xDSajwjOgX7@mC^cX#e>VQ*Z+#?9~Yn4Zd$x;u7p-!;ywO>AOU zdGGSlJr$c`#IMyJk2el)F1&V35*sR`4|dI8$WBvd|ebAMXJ>tpI3 zA&evAttFQK5{3oW*N(Ne<0mI}J)J>P5iYiL#osZ3&&j|_zCm|lkxI;0cG$5MDo>3r4m_Wshww;Bz zOeu8IbDQs(UoE)KcjQtqiG<-UI(jHggnKtWn{$&AnhQxnR3#VX-oslsmxkZAbAIW2 z?%Ifdo0U}&h{{9>)(}anLYcH@RjJ-b=qMOrP%;Q(g%@EJ?g*45HIJYp3JGC`gvWHO zmJ=CwL*Wk`(U(*2I%5nyWN_g=x9q2f*AB88fX{bga$PAtO&23?8QYAEU5ZJk!k#UG z7rTeI2Iu{>!F9a-I-mBPh`)btwKP1RZ%ArC{!E)2W$&$|E;tj^wrN|0u8tw3v;D}y zOgT?%Q<>a`*XWa4H;haKv+(AbL`nb%I^p0AOC~g$BA(65%BYxbP_t)UGufP)KC7ol zB%a)vyHM1*E16GTXv5Sbvc5TD5nG2O6401{8M7oTnwDkhM}xmc>qTmW>ha1Y&ZOFe zi?TXA6vdOX6yqnm=NoJJ*v_ziN#8{INWFh?L0l=C_>_&Sn#7#alTzYp(a?8s-ByKf z+6CSlziLPFX7n(wylhj1VJ8C}6XI`|s%;wS9R|nP!%c$8tRbP@=@N!>cp&wqdWzPZ z81HjO_N;M6#@!}uG4?SYe*WHY$(!_c5IJX7uL~}CX&jV5dLJef@%KEgUU0#=VVW22 z+~<4)Ix%{D^dSwo+{TP>va%u$jyv7K7!w4l7fTVu9d(5y+?6GrIz2|NS^7+T^mbuX zdTAtLziL`$uBffNiVoybSeBkFMjY$P+V%+8>)~3kASDaQ7SE)gZ(cmP3kF%DWBD7^6^KNHJGRZ^;1KpBcRL)wS zmGUVbv5TpSyfkAz29C4qvh${^87qSu?~tS3^W;=1u_rn8#BF{qL(DGv*Go&zzZSOj zt;b9NrG&44EtSN^xz^|)@44?xa4ag}Yf}?nd#rmvDLS+E^PWUj_QfY1C!zW2=9c}} zU5gV~y*(4U?=I}RpSAmbZ=BNuF&z(lwTOGuICc9wTf=T`;1o=q&I`#iH#N4bCKd>x zk77htZwc`cO*=y(rk=c@Sw1Xd(UAWrC9=AyLXn_}-ch*qp1CxL7^$W#5D_%I0GNcw zvA8qS#I?-$HRtNo4X>XI*pS*m>xQi)R1_;lb|WRoeLp5kzt2wAp6e!YU0U2T*$q!A z?l}uC1!)p@IWzZ$MH1AF*5IQgdUdP>CG=xE<2SwWhkhC7n3UC*=2@w9QmN}=6-A~j zOR8sa_@79nNPDQH*5g%!B6_~Q?hD>M&TE=K5HCD-mr_RKZtuh~-LXHj1=Izvi8Ebn zTyRv#EHe;zQmM<(P2IFqXSGXC572j*b z8v-gq5~U@PMDV0!5$x(kmzm>ym^CC7 z8dYZQ{E%9%QbVpHHG1g2hvEnujJiNXN#0psuyQbK2eA+_Y5`7e8os zd`i`L4)#g=zenHagN<_Yx*Mn`Ut0_@1#b~PNk%I&U5&|`G5EKY{kA(F;=11|9tzsP zV^_|;aY&gkAzo@+*xaSxH7>qZpRyfAy6b*?BVh56vHM)ci&OQ7@%f~d$41-z;&BI@ ze_)@SOIbb#FZBdNLhQ%Ds!E5~*s`Ev3Y|k|un;8~2nBJc7efT*5@wE1Jb>cyvcaP( zG8&1P(MZC?L%tsgL#}Q<>%cImw8GXMapB&a*5S$;#4Hk`OVA$0oKgiF)B!KdMVYrs zSNd2dRHOC27%DTwjbc5Pp(L*cW}%R1Q%f-iHO!1(TxhfLjVPZ94`O!1%}LVZ#W4%x zG#95R;0bX~*-&#-WgMS` zs@7TkrzW8s8Wml}vX)fWK-G|vDv0Cm6r7m^y)=oVZn(T~-qXQl_=e}^3!aJ~21AMk z$gl``Gi^a6f{;gP=OD{1>W~a`}UWCt8wBvn_9Nxb-@L1 z1?Nf$f3GkS?g=qPJw>dRE4>Sbgz-@T2?3NP7Mt_cbGC_?X=)tU)W}m-#$c7;RD)zv zRomAJ)o*?6pD+-^1}CYIG;;8X%7vnN!RZm6 zk%x<#V=QuB4DR7=eZ;Qru?@4cFQXISB@#hjaKUThE9};1hwv`E_FbGgoM+F~holU; z;N{V~(P3CkiYHPfHH+a^)^#1Go6g&oI3Bs|L=;ULUZ&wYsWi|{%>aZ(5~UP+FZ5cI zgomI21{8s!k!HbEC?ZwlWLCX;mFXi&&V`IqM97p;x7OIH1x9JVsR3QCY z@R%}tQ?#lR-N$o!ggQK<5{b5Z%gozZh}oKWV70yz)nGXhUNtjEr-3+L ziQFQQQUWN&5D}WxkgeyA%uE_)K;w$Jjs7=Ltx3;=-ILt8NiDtQ%3g?aE#er4Hjs-^ zJboLof<~V+nw0ELQpLTnbm!;3@a^2WZW?@f3o6`^YU+UyctIjr{9WJETqWiLPN6Yn z)--sR>BMQoNbY<)Yw7z!u}Ebgy0UnOJ|!9om=2gtQsvYb#HqAGb%?IiL#sjAI5aiY zL;}cm@!(x>!37swaKQx^TyR=UH}=041?}^P;41V|s<+F=Ee@^JK(n4w1127zil~T& z8J9G2&XrQYDLWk3fQ#?Xq%m`1L2ciK4$0!x6&Gb$oDU+TCgH^pcjk@qq0cNG zing={-?R$8S1U?;%zEr9z!{EI8TgFaW3Pr{poxcDzA-g<#@im=d?H# z1TjCO4MTaIiEl$Z*E!0E7(^5QNaj+7eMpdC$q@RlW1_;WipmgSZ&OLwB&bi8k zMlx9dPb3XvHSRU&qCt^VT*E`xBHXA@a>BHwwZezC;d7VyrSBrnk=l|6<|>iM-Bl<8 zgFK4*##~s(D$%I3!MIZi^-MemNz+3B=G9{GE;ueWgJ55Kfp#d~(!E}A!Fz(k&K>%f zO4Sm<__EWJc)>#mu}~^oQtVvtWym1yUU6x2FNdM8TPY!0b`jBfb+`{X@D#B^v5ZT? zaKw!UA>*hkiAY-%W6o~Y(J;3RiN>WKBW75oX#(R0b|f^9Q~^Q=sT3K;xRvJ)^%{G} zNcWkB=VlDlcahOhu=n0@@RvlhHYpZJeqW-gC{VI z#w5;yM0RH>ic48}_Ylk?fqJ0@H?T;4E~?|)pCpCzF%hCO{gS4gG0%c|#OhH+V}`O< z5xSD;y?{zpuLMmEGn{4DGfz!;8&$b&8-6Moh-Y#KqeN=EiQK3Sx$Y)wK)2P}XtQ-C zpw(3EF2e|F>Sg=ngm6{{&9SI^7rZ|V1B^{_?8R=*dz=3DAfmHFS?k1`0A9;_`f~S6 zN`?!LiuE)wM?U#wD!Jf-3yuI8JYGa7O~L7NCg*}9cnV5jaSLjrNQjQe>I7yss$Hg( zR$l?`B}7B^gyRgk-V%apsAVEGS00X87(tN`Jm%|y(Obca(;6%^kr3P*6Q#J5adNdT zb8$+Y@9}DE68ZgxG$|r+eD=b9?r9`(J)6;}t~~!b;Z;Hi)Ra)=6d;+>h|)BPHVI8} z7AOlNHtTs}-WRqC z25ju?jlX^3=E!Eb`Hs)w`F--``tA1O>qY_q4oQfT%Ta%Ffb*7C~c$6`+ItaPEr__ z9`T%J4pp>8Qv9vcb$W_42dmX7_=oruW+MHJXy)i z6G+q2S)o&-73HHOdT;o<0?Qg7*cc=;mI*QgU3Tyg)^&9?NC$BhTtaNc9TP_zB7wTE z$|t)#pQ8DcM&^^oal!k517&=-=SOFbnDEB`yg1&g@qZ{b#{_#O#oKqhf15ashjA$1 zAr|3lZ-d9gQ3RLjzdJGdH&%mWmKk@0WJG539LuH%_ajJ1p@p^|T8wHGd_8 ziAxSg=tHh!G!nFW$AT*9ptXJY$90dF-S?Vn*6-rBTX|iD1$1+p%bMm#!Z^BaHS&z zOjeq^k!MbcH=YD1QYTB{RKx3#q%E zK6V%Js^(eyVp1VBL17j1P%?EWqg2Za8Mj!I-Rbxg9bI?YMAr_k4PsynS07L77b zLMz6iiqw4HHe8EQ$`Y3_3XAObW=FY>q}DKxwMyM&LoGflIGKV8FOw$WISHWO0(L&j z4k_6IyOj41l_*asebFF!QM~r`kAOqD^T(2rpDIZma^0^LyUJx(xd#K}^~>_L>vL1d zao^`Jk<5I0Z5Y@muU}6WyiIJ*uwy&hr$BsQ#_-qfyXSy|%fMeICiLNDU+${omFlx@ zOG)(}+RPYRSNlvZnI`F&#N0&4?kF{R`9|82dY0|WL0?5)PS-wCshSO;oT)^}j}rnS zSv+#td7(jToL|KHxd_QZsnZM^RZ^+mD-lX5fTAhVJw)7K#GS@>ph+pYpzg7bt+9j! z=dSeJqy=+HES*rxL{SN0wp3L^do6TsxTb3Sft5mPS{A9Luh*K1klgrYvEUEOU+CQ! zSgSBNhjy$7W%Wj@=!&Y)cu;7y(qIdbA>tqd@2O38cVmD1onVRwLz@g-<%fpbL2~LF z6VPyk+iI76b7A&UUNe7qdz0@@pcZ#VIEEp;RpbINk&#o)Fvzg4r|i3jGdHy5FoSmA zcRLNc4KanSi@y`&`PY%1;t`Ln+gP?}w>q?bF-_iEBJ<|TIv2(@o`=r;!9i#pJVN z3aPvncHM(Xq98PGv^1zFJ&qfsR!AP}Ty@4mQ$nmnsxdVc@i9?yrDwMF8c7^=BT|(Q z>spDF1Ol28lq!7ZP^$f-sq)5*G2T|HVrEK;(4pBVPBn%SRw9T^lZ^TBA{B#Dv;+&y zYVvark(gzI9^pF8$z4a*La$D8r!lA*2}q@;jQ~h3<^{`{B+8;1mv`22)d;t}@lCtn z`_l8b_Z^)Y=82?4WZ+;3Px_eFT!7*9G?F{5CuTr{f+&XK9_pg5C(MKQHDR-R$Ku3m zOz8mz-GLXF?z#`VEW0?+r^HSJ&-V}X7i`BkNeon&g9V7rU}iXDyxo>~+OBxpMp`K2uGW^=*v-A2I##)!1HiZ%- z9(2cHw3{9~i0r1SnmL`y9LUrZ0ksTUmFfuummyzhtbdY+;bqjgxKcO6VN~5rCZuYp zY4v6mFQ|rBFXU9h9VaxHIaUl(gA@7tTq3c$Ib=852^G>@5E_=nxY35W^fXdf)*O54 z8bUDwEe&EuS2E>#9w{4?|DV10Yi?voviyGT5ecyB_U-9i*=S@f*_!rA5BsL?|26a^ zvt85f%&IlrcecCltttYU;jRadNF+c21WAAdz&vKCA_*Y>L`Fu2haW!&O4Jg5(M&O8 zP*`*weKG!Bdf+?8uiiwogniF{RSlI=uPrH|0NN3OX1FRi1;MJIjL4;A*=Fp;TL*?| z*5e}rJK)G_@{D6R+Gdk$`B`dwoXehP>!;J#&EU@BcCU37b1lz|86St68walp%`^2= z!5r~Wm|T^@T0DXwGi9)u>q;GgJq5t0L8Ju2L#fiaF9Ig%v8Cwe~gy zTrBG2JdQcLj^ZQczVZ0OD2*8bV32E|Sg=sGREf{KQM|Akde-V_&Lk6-lE|9FyVs-c z58@eDFji%aX;rke0T<{}VnITSv&@Ms#uDMDE|cAAh2ydQB|HB{)=ny=)2PBSwh^zH zGk6!kFf6as@Si7shKSg8R1doQOrEqkR_Z5cAEXzu~#b|Ec$r zRQ0dhZO6#qPS5sS=d!Qv?mh0|ru6)Bg6ZeO?tSrIS(a1Bx?8!g1kO?uevi+%=bkgu zh2+;#=r4s^>3=UmeP+Q2P=Zf@h~jEI76U6Rv#_vcZeE{NTLYDk&#>`6tZyq4ijiiR zMeSN-^y2@q{;$q)4K~K!NhyPk+mfnr;TGqwa#WYlR(lCdZRO@CCQn zj2TDqG>diKd$MIXr`}LAo?<#aK9^nkj7thnjLBguBYX-@4eX}brsI1!7PMUHHQLFl z#h>1GtOwgjt}}BNa2!J%GLD$xB}}x}B4o*AQ&J5otQO@-9U?PP!&j(*T~)g*q7<>3 zwNi2wW$7d=4&1%^(J6*uHXxc%iF&N zRGnO}t>LJoYWQxr3WL^ju3cd*u)>LPb3EwjnTUX#VZ^5Doc_IUYulw zhZJqJb|@|^y9H_JS>}$e6b1w_p~{kN)i|~!sQ}r9P878o=(#i0e$?*XbSS`U>AlSc z_jJ5#?2DJi^dbMsspEJP`|h~=I(picveP>b5Vt1le~jw1OIbT)UGUQOea^yS-0#tA zcZ{ii-8j_d$AY_;iW2Q+I&McP^GKicgUxf=cAuevUviwdmGR&ZTHtVK!qx6sk@Kyz zJDYkCt1GdaeZSMaFGrqfS9D2Fp^I*=-)VvPhfobKbXj-LWtSUtwMN{rr$R$B=lxsi^u8hRc? z$r-@tP`>8GqX?xKUDuIHVX4AT*74iW2h}oGX0~E46Tuy_Q@sL1cqJvJ*Z@_m27v@f zEv1_AMoi5>uX7dVWw^FM=92iRbKTnSCu;8*Gp-$nC-iAibH}9lm45L5ZME zwJw`@HGr3Dv*pG#r+!wEm3t2iPCdVKh;y8Ra}PYz2ZO49nnCRl@BOv?`MK}yt_=tDd#AWkJhy7UF`+%@xVy=oz1Nuga|XpBT*P%fMo>V7-1M)vgc=fKF}!r-$0; z;Koo2sE##)3Ou;-=*|!C$(rbJekRe2^Nm8@^NdjKSItxOSW}>6(G_s9m0MtKk-Cz`@O!7Kz-1d18O3_*fsDU}|t8q<}kyy*ZcK>;oVdhj$$ca2kWmjm5o&pqC*R}AYfyKdM1+%TOwXe#i<*aj*_^qnuoN|APNdsJN$&XIu+Z?9GiQ-PTtvl3(WpSE zVU`l|{aPbNwWyO7i40zEf;vcb^v-S}-r`P=R|;n}Sg&L0AWm|Nx;+<6Bt%&xfrnZ8 z!eQYd^wNu<;v~S$A!Vc#5(Z^}u0u)m#Yr`wEe_c;NC=sf!FWhOf=6l=(Q9C9RcYR% z!NO=AdUqaj1`A3h36?3bSPx_^e96i%tXU-C_iN$XFx0G~qGBY2HHHZ+P&$u#KE)UW zdI?%-ipsp8oazom^OJVpH=|{f?*aShiqouQOJ&~z#sRse`mX_Z?RB@)b%f)B6{lif zC5i9+e|va2d19A7cq@Hr`(b~bXx1;6%&u?utc~)(yGW=+%Sy@Cj%X@Q0Eb$$H@)}p%_H0 zr6e~TiTG6%D?O?mj)qrXiJ+-ZQHQ*(FN}~xBrFUb1uwpQeKrksC zLN0|aCv*YH3qL1iwGOc@*G3tQ;7+A_^id7ti&1LenWzTw7Q#3#^70zIElKzK`!%ix zUJITZD6aLveoq6Oiyz^H@2Mkr#kuc$@E!ZxJ>rl!#oo!lGqp~qZ2P_O(Z|sCKV5`* z?_+w6vfRgCx$DD6Sl@_8PIi;*HLS51<3eKz;CXSJ4 zq^(f5R3cJ}+BTEOI+_`pBnY5GM0}bOQiiDW^O_w9jwD5*9&f<-s+q1|QGk@f3Zdo~ zgD#3kK23sBYF20l2>b#caUL zNUmFL?3|$n@7`_%cgHPWpLu4ot;BWPcn?3M)>ijWgLzI|>jK6tVmh(Qi zQ@p3J)V;OcjL(5vvqyRfK3#468)2I0U0Dr<9;Zj>MJYQhFtbh4uOUp#oA80VooEEunOpMjyQ{XVjE|_>R>evede_SjY14$rC_zk}-5#gyMzbjv*A6abGGD zVk=dsWjtn42Ap1?w}I@!l0D^2ZuPu2S<4WU2^COtAM52*6p=Wuj?B_C*@R`vJFK&y zm3CTSf}BfKkSB7AUF<8Mc)P;wbSMfOh7n$nANm`Vb9lO?VH=Y0l@ z(-ieC#cKR{jDPOyA@A*CKl{OLs_G#;Q53r3=Gvm)9ug#Zr(=07UL$JpTB-hh-w|S^ zrt#1tvvbE^mH+@C07*naRDZm$_|Xn``>PD+u$$PWxt=17bB+My+JcymKAz9D!hPsm z54XW{ViyN`?F)|Sb6~d=q&3|1c^Yf5``hldRQq${BU~DuvuK*m>t4L=qwgJ?IL-b0 z9+4UcGDUDVxbWB;og_3>Nq=*)1O;;-Y!zgvrF}JMl18EQ2znxWCt*2Y@qR%;97!qa z?TYb$@ZBux{gPnT>h>IQV-N=uL<*f5DN5f)zq(M)G)$dbB3n3!^I*^w=eroI?q%_OIaw^RzIQ)!J(5yOg;ilO2R zDa2g5TC+E})7qOV1)DvM7&cHAWRs!!3O88YNUkaCHXXlzv6Mp`$6I zSkN?6Vxh*$Bf!f*UsXXD8bNO|0K*Lii~;9CBx(&EibmG4)N_7<=?eKA;LW&4oV$*w zZA;nEe09Ee&W0_|r6bquUhBhV+#XKtvomJA2j)IF5m!9d>gHSvq{;dXAl_L3M3>86=ut*u1ijg=Jg)){}5h|T2g-WJ}2+K5+ z?KPF?-h`-xl*72)i;Y2{LiN3iV6S(BtSmHIKeX#y}p zr->{=GGmF*dDIT3WT=;*b0Q=OpFXKn!(np#&9qQl;(ceoismtz(-Z2%9bhUPu%$wC z;()lXvu=Jl+hNW)Bi_1j@fq%mOX5-sN9W$|XHh_X4!3;nQ~$tyDuDY{UWMH|`89p( zqucEX{amkCB;yc;RSp{D9frV`s>3y&@40X)!{NDwu_-=cVgDMg(KQ^yt)SJVAvJ4M zjHHl~GI${?q#`x&3Ew-fwPTyOP(lq-6?dVTmKSpd>#>w6=1?tc+V~x{Z9-0oMJbdL z)&N%h`dn*<-`hA}X^dV2KcrgYM6H^nggO+7eIZS$GV1R#P?~wVD(FU(r9A%xLpFkvaQz6_}g;-Elm)lOwO|$K0JR00$6^!fNO#z|d?4 zYQT{kl5h8tt)IQcR1xGEPAMU>5+PqpzBI9vK$1k(ROzA-9$M8E@ltE!2mzFw6IyAb z&L*)_ibWu&A>rcjW_(^k#KbMU=dy(DL1Y{Y=Fo|f(Wo!1CuYUMs}89FmqwkSQqO5j z@sZqFq)Zm213DF!RlngObwGFn=A`8McduE_0!UUQMZ0+uiK*8mgKW~Qhpyk9Kj60f zPvQ@o-w!^33wDckK3Y5C^!|EDP4cwgANt-_`?^yOZt>7{ zcwIxh+cld!r`zNnj?eL4gF}7$mSKl3`6y@-Su62`iSSsQPCC|uk+W_j{6*_%+akTl z#0~BshMADeNfO~&Z_alK>l(43D&i78bsjXyP6|CGBqmiE+-f!}EDaW-5iVLm#1RU` z6C#NL!$s+V1&UTLy+I19uq=u7u%ge(k0dPdFi!VEc4yE;FNp_nBng8nYLPw5l*s5I zXbn!yBGBtCGK?r_slqc9ayI(G$eQW88a$?sh4dIgrkcZRWFGtCxC%)!xn=~twWUNh za?ap=V(ez{=4{^Uur+bKvdQ=@W6qw;cu#DCI1lO$@+2sn@iv@#H%}MQP6_U2?8h{) zJGFNCd3Vj*%idX~_|5n8`7rHGL3xZ-vEHC}Wlb#ll_umrp<36(-XR5`<5jN>fKxM#UzFB>{r5;DU<8hxUnpcNQPH4B(Q7^Wa&xN)ccSMA-(!i;Qn zDP!#)_1|IzR8UQE?|7qn#wT2&cF%0U-ANjORTFJ#|F?5Dx5-?_>CNy&)Fajat*b#? z^7vVRY|a;yuP$_6YZigNwh8XY(5RUa0JkKK)Qsa3-1}fKExLzzsBap7v&t}~GfuyE zuKiCjeW*<*8RtN|o@Pd>=8!@dLr&LWrYohp=YFd=)R*7VzWY`Ir<0NUzI$E)d0x=m zsT9BIBE%t)gi3?`Y)ZdU&)eSNyzl)Pa16J$%KzkADdVK%n$KgOP}P(Yd(FrG9(c0Q z@JgEewcX3_emqAgs`oO_xfTclnpl?=kAt)9GDabxoB4HxHxu)kZQK0a$2qxqn1vS+ z+zO^4tdcCktzcC~z}FNh)t!|aMZ-LNq&f>EQ52~;#V|&9t29$(W4_X;&8oPU@HQ5Z z6e%`0LnK$VN=H+IK8(vFQx|oAW`@?Fwb?90wr`*}V<8fCfufXB>hTpi5gvigdb+fv zP(o}*l|h{WrwoQ7bg7ER(CQ1rv(Jlt(hOefXEOPH#*7o-03x_qtS;5pjPt@P$9`_# z4PrIZ#|Oq|p8(IeFNo;ew`aT^trmX92OtDeEGNE~LUCg#5v1)d^FAT>?gV*ehMO@A zLj+_kqh|#w4O1MFDvPc|iXj#+7ob`bwC$)1$#tSR5*2cIP%}eAp{*ZBaM`5{ZjrH@ z9=k;7b8ap83FjRQM)0j5-nOG&*ySIcm1 zD}5i0eJjl4wV5g~a36QbwA((-xjlb|uaVl`r45hu*vGzm1)004xK7nVKI`_62|Hc# zJ{`~LNZVdgSmL%38K`!3o?fRj_mMj3cw#Q#_5S^!>lBM%N8UU5y-nl2RQT#%Fl84# zX#?MHBeDIF`)ZGuV3X;*Y{&m>#(jT}amO)*^A+76X;uSc>DKVO8M53gJUwqaKo^6V5 zt1RoAhee;f-hfL^TA$nYT=Voi+&xxpV6#%#R%W=5Ko7XJ8v1v~RGm)l;ECT>OrN91 zg{I;D*NhEy_%n~8ZJ}oFBQxF=?OANLXVv|@_)Pt~3771?_Q46iHxhWteD9sd;?OB3 z1qeE1jFHxIXkjN%X^i7DXtUZ&U+J7pe8mZ+NUL>p8KKjR5`ruPj+RaRUIdb|u`VEj zIP(bbdJp6Bc3z@7D#4_hjdP$Qk%{+;6$W4^PD1EJaVf054`tA#o6K5mog!70wD!|c zoW{Wsk|vfk3MxFL%u*9e5f;@7!5pkaUpE|Y?W!7cQv-KJG=0_pZ?oDnQ$c2&imePv z?LVJ+BKMgwPU7!`4zwj|aR=u!W5$fng@ZNQGu{;fL;@<)c5p$(WiwN%6%%9p~ zkWKU_pkBYGg&`qQGL%w-rTW~}P^rYjR6IATVCJWvk2Z~w2%~_yy7K)iGFOV!pA)BL@5 zd{t$Evrt7*`cmj60zh@pA(j`yPK6L{se&+D6wP~658Ee%0fagZn{z#NU^w`>D__B% z)-c_>5lybQTThEx?5`m+v_3OQFFL`YH`u8bJ zr5Tq)1RfcY1fB3>J@8{S@bklh;(bkwO__6!i-GGVxMF%et4)G{i8Iu!U&LBrqOJy6 zGD!zM9dW@h}7NEGt91KBR$yFf}^ICfsb#E^#ov-B zt}u8RC&$g|K!C2xqm@Aw>Ku>MAgl>IXqpR+oaEzhE6vm#T*Kc^05t0IvVs%`6GRf7 zgvG&6IIELPnvX=#9L*iAYXxg@ep#*gr!UUe-0`DdZx(tLeCp$75zJV<7u%jSZa(3@jf#_VA`mPi8{ZUs+?-b$Fat5OC-OwbyvKBN$3 zQ4y>-;!Xmj6toH2;HYQ>#}?<|B4OX~o|pZzU{u$8$3bSQfH@jFs*ZjgGfv0!p|@4^ zJLBS*TX}=I&s`_nLIG~RIx}X>n6VA7HFFLmkC!H;_kq9t_zfgzky1y{mBK0!X)XvQ z5}lO5s9<6gb4nlixPsHWlSIfhpv)pHa-u`4mb1#TR{ZA=FFmg$2|U~ zHS0K?9u#-1)VcqtBI~;p&D+P;YSk+q!MD2d(*nv}sq>m=`N%^%3r@`xy~c}e_xr~@ z$Y#6^ZAI=Q#8f^yV4AL&pZdAE-(43*8nHnXalD@}&6E9HY1bI<@rtQn$f!og3xuye z(LzTw&;IkB3bwp#oBN-M_ogI%?0h~`AG!wEBvu1KvN9y+Umt(v=ZB7mMMfSY5D^Kb z%I2YmXtg$=)|EM)A_yxMb_phmX^bl>DY9V>Dp8l_R>DA>`Yfe@cZhf#k7`qOqgX-4 zfNnEmmUjHLPEcEL*t`_#hvHcc*o4a=K>;=Ms7G|KN}=s*VTpj(>|1R&RY6K&Swp`E zQGSRagu%NZq%NaFrIL!(T}l=GV-qO5%o)5HGqzB(cK4==IpcOK`A(nlZ4jEYeV zjbPY_zHYKTW5#ts_Pl1ycs<5knNMON2TRJYGVquF2YrH+5@OE6A`2IBc~C5OlM-I* z8b&)TyAA;sB5`g4eJQ9wlByzFpF<)7HT!7hU^PFf z++POov%x19D!0~(>j!l02$a`zOk|TeZ5e zgD0PP`golj&yn}87g7_(+x17!VOI>O3S@88-adKF&uhlUW-){FY1<7Li(_`z2adJI zYZen4tEc@ug+~?7)9>8i)6F>l2z+19uk)kDGP@81#m2s+29B_F;jw$*Ppe1%UHXYX zbeZpEzyVzgrXYlAd9h6vP>DIMiQz5`QIv+5AQY@Vf89$6lw>9M1KFH`2)YJQOcW7E zS);Y?EkZ*gLsskgv;}BD5oalhr4)J@5K+t~_l-O1DFj&%#-c+NtQf@5046=zOR)4+#TufkId_c=c${JWz8TYeaz~)?-Zu98Y51i7i_IsjFy`-8*%i&n2WhWGNi!+op8#sx6%!%C1?P4K#9MG8G##kA=SD(F{!Le!NoBFDPf6VS*loxkqNIp zb;C7dCZraCYL1`HNusD4Qo<&}5K3)}LTo!M4WtULfHbifAi24pMx`{#YDa5gn~GY$UoxVJjH8Mg^@qY#;_`zR?H4mEjk`zl(Lr3$j zlkM?5R52B$*5O$MGey7^TW@(mi=k^i9F3v9}+`2l({=O zLpu4+K4Fp1GU1p~q&^B;*Z2dE<5D2z zr!XW(C2G#R(lphDP6SPiwq{bT6Wp!R8f(-fo8pRbz9NJU1Byt&&2Y&qH6eXiET|VW zM+VMXCXlM2S&Ot)m4Tk`#pqH(R7o}Ch=hPj#IrJ%N|aJqYR58VrtxhvZSPWMD21d- zr$Vv%U57%UxKRnOAtJ+UlW;ef$F>e6N@aUw)m=wj>zP1V`q&qez3w|CFr_UXhZ21a<-G0N+}IS&PpM__x?*A9x_Z|=G26-v zr2CH5kFCy~WUzhW_op>@$FaYD;aae__<7Igc4<vbJ(zdLq^*6`RrO1+ zt{{a27*Wn}1?cDdmlss2>D!5gx^GO<;*IQGi?&&mF%E-)}#I7inDIq*rImn6VdD>+9O< zswaqdgt?tBhwVx92OrFg8CQf;JU3^|I5)hBnXnn3V>#Rz#88ZfK{4t0=i!lGDLfQm z0dx`qBFe^`JdDjZbV`8YFj$DIMCz(kkGrrPNE)IoS{FJ5rHJ4f0w>Kt-D{Su?r7Xk z6F+h{3`2$LS6A!uMjcHL%LdV!opX{)sAh^#2I%`Zeh3SPG-mJwx4P{lWSmaG8Ct$C zgj2lmHFb0z$BY}voG&%gXA%pWrDhJb2uW=#sB#<~pr+v5+u z=S)IbNG7YIwcnb@x27}u_FJ*=nQIHzZjPc9Gg8VVgw&Li(}u>l2|BCt=9bw8>1dGb#zLTonInpb`NZmZxASPfM))88L{Y(@!=Zj~SB(!XfWjze^ zrI0kClIrm)f|61qB?W4bCpGZw66>L-nB9TMO1ofhi0!r>L^sP>vL~K8_llR$*$&zv zOsE5&X(BQ$y5Ge)DV9@_mG{IgUCXIb={a#rZE$TE1C=X$3|!N7ZR&G}=)b~t*~F#A zMBW>xh-x7N@^?FQ>rN|IsVPNhm^@t%ASZc>t z=@5oWsdiSj26R-;OhbsfBvsUePBZH=Q1I};6NQvmt-fP!x1YiLeDKYym4WS)gWXEK z(?_Gx6elgZ^$P4Z@^#nVoq}^p#UF3GTgATXefwuM<0+0^)%UvM*M8sZ9-mJpHRETF zEEvttBcRH&N8RfM>fzdM*!TRJaR`T=U)Ops-X7{=#wcFmj4~wxsPe50{B^Y^X(qd} z)D%8&Nuvg9%SUs%Wx?F44}#Q8T)nphI!)vn2b#5eqtsn1;?vySkD z-E4Cl9^x&bwi$t~R25G&h?Zu?P)f~4HZd3$tG$8`TB15PeG}2YynVAx^^FgA3~%%dmnk-HQyCfcyAor=b?A5Za3*-8o1)r`+Sy{lr-L{C8d>_dkxqyCOWXMGlLlzq}zn zdTw#<{ogEM>xyAJGlQ{>1@LZU4QqiVi6K4kU-~tFc=*Ck0%_>!v+<|`y`a{<5aK3Y z#}*eDL>MHKtS2j^Bn;vdDQE^=J9uRL)FRVonkwtBpf*$=x{Ql4cmYo+L_p_|ijZVr z(Zw7);Z+>PLJ?E7F51Kjj=CaVz(5Iqx;5Yu{&`sv1yFI47ql1|BXw05p%=&zdJe9L z8<{mfBP20;9e5zq4Z>PO7-o>3-}O$)iN9*$?>LFs==|m|uP~hlW}$SXs@FKDn(<+H zU2m9$Yi4|A_?Cdvd=EUqhdyNPkA*Vhx^Z}(+OljxyA%USnO{rcmwtt$gqV>W76OZ; zVd`Cjr(N{sk;Ri%Qx|(zDqY!YAXQDz-8{x8hvZI{#?SE(N&(DDWaDaJm|PGKF%(Hs z1G~t`i>4}k(zFez`wGz&FEKU_?wDw;18h|7@VHB6EOSPsIsznNs7C1~Q3IF-mPzTv zEA>+7k|G|7pHfvmRg~|;njr}ox0%74ibcd#eBodvKAIrj3+`!R`Id~+A*#^s_qQ@G zuQZ)VzCPpSxHbW-OCQT~Op_Vc z3$Jx+Z?*YJl@ail$M5{pm#;hwnase#4#W5pul<+e4iOHKq|gEZkD z53K+IAOJ~3K~$b41CAjZh0Z!xO1g<6q`p76A#RX6T&$8nH_Qa7S-UN3Hj$uQR!V4* z${=-Tuz^9K6NR#EowCr5&V;03Sy-3Q^K_5;!G(4#U0IUItPvRyIy4Dbi2yTa);N!4 zs5U7wXYlR?Q+337pxnmXCNn+?^L=^EsD&Z(^*I5uw~eNh!s*0k#*7)C2cw?B3&&BB z$bM;3ejNtBo3Y3bWE^3Qv9k48 zQzv!1oxqozNM?8`7y~ZV*ug^I=;8{WNzF}bCPH%VirJzF6TN&jX+K!j*H!n0bVsZZ|jEyEwj`y)7(OVvsydk z6k;$fkSjQkLmwMWQWbcE7P?H;0KTe#nit%StO7~-ZhfsOkKpyHDVkG1mo0ITroi)z z^zyAfbnHOb?N55*_2I2W%hMG5TWFcn_wLmW;YnMMwB-#O{n>4taKCJIyD24;k89Jn z?APV|>sq^tfvw+#w6cwgS(n%+93B?xv+mCD@^-WXZD4G5>5Ia+-nxK|%H4hlAQP#7 zLAJ{yUeJd3G!7rTw@y9JL!WyYz57r=cilJtd-a7w_y3Hi*s?a!i4ph?8a)$UP|^{l zX(3Kh{}=bDbxU9Q*M7~P{0INE$UOX5^VluWE|JS4#d_Q$1E!)R5lli|n`Qseve3;K4w%VPa%69$fjG89heU#KIKJ zF?CGC`oP`M;v_eU#<(e_6cZQ<3$!LP23&6rG(TU~6rC+r(j z=YISa%zgTLFlX>)oCjlY=WGN)F1trml+KkOR`{1+|HhEQ_YDgb$)zY+1SK+Acr31% zgvVT|Su!Lte(J5pjR+pA>ZW^PAT&6VH*1A$6af>bODVF4017q?LHpDc_6O})0QXqL zEpD|guNtHi`$r=%EoLB&Nl-o$u&Cz-@%_FSDk%=8MZ-dT7U6e!fjg`v2%-ywq?zx- zz@r&ziDdEBtIFV=BV%)H8=LPP$W*+sSoB=j75=z}W4a_R6_`!0XIquJ8_3~)anAE> z)CR_Z?DjHt?}QHbGjssiG=w$@qB(vxW}>f)U4$0 zJ@MK4&_`n0_Ueuu7@rPZllJ$U?GXGDU&=RvNg^R8z9GdsYQU;Y6rhc z#~;l2ZY#bo3RYmLnP0Q;xL!rpPB!tw=gi<;=~&VFS@Bqnm{|%X!`k z=Ie2tm?w=hW?V1k+T|<2l!9Gx2`ivhZ6yqlgl}&A+iK0?>sLBF)HGeA9!~|;CUVmL zul;30GY@Y&LD7+a-e{o_+11ZY<2z)tkS!bg1*(ODo1iHIxb|Kg%VrL$qCgn5C#}C% zQ*-n1TrCRClA+T?HbU_eC}Mn*5_NQyzUqWnOA+IXD}V4z7U3JtFbpg`XsX}V>-b)c z>cl^5fH&h)U}~o^Pqb&uxK7NIxEc43>BRWlwYYbQIk@|Ta9qJs=HGriGKlk#Gua`F zkPwn92}M)9Wc+5sW}esT?$D;;ae7}8XB3Z834?QUtJF&!<31;9>~JviDx4B8TuD{P zr3q*_PAN{Y0hMZdPymbX_iprFw!~oC`5BNcD48a(rjS%fspEU!GgzV8?~O6+RgE;C zu|~q(DJ67o+C|AC)huxiN?wAaVk<{pbN#~Um}SssydMtTm-qfum~oGIGu8FL>y~iK z$9~UnIs7^mZElc6NKn&NO-Q9?&<k`-}&ib$+8Rxg$0RBCXvVp zVui0IYUz3sPDfXQ4(S43BCt}idN2;2sykc=uJnXaxKI#`BngTjB-8~hg=~e+oTWJr z<}6*}bE*^#vvJ2M>I^_niF@5FjNCCahoypiip5;h9% zAZk2d6gB?dIocO~reoD*{#p$6L~@}>6^?Pat{S{k&6!VDm)h-}&r*Tkcj9_*g=#c& zoN+1+W$I2dG{3=?_S5f|bFPB6Z8bZKORh%0c|vr-%lcs}%U52nbt-nf)1KnJ)*e6p z-oLi%_~dwQP=?jv8ZPaKbJdhxs;6AE557nZw0`DN$1-CtPQAqsDUv@K$Bm7A$q5(J z09QdP$FNWE&%gY_fBK*Q178;p{K^_MBgMxAh?>!v<4ITxSd~PU%F48na%rOye3&QcYVgx4@DXp@mDR1u^;s+*a5TlAUE16trDW1v<)gd-|s zX*AFpBsRSVujgz|QKi#_xM9U8rJaAwo&?3F^>jEHrz4ZXWse?sEY9E?dnE{3Xj214 z1qP3ry&if6Unah-ev53O2riELM%?DAD4L%U(~Ak40I!Lx%!S6sG1oPG9FD1YUR!W? z4xFMOHsd@ndt0Vs7w+fX-Y#|*H)h-y%<2TRly|$vyU+i*XPpjJjan&@Ikr0mZ9(@) za^bnf&2jvD;r-!+58iTs#o(xByj!x$iU0iTUvX9b;6hgn)Nl<|5*5fn5OOf+#|??5SIzD8AUC!cfC8``c*Z74_fG$jTD&!ylcVCNq-&g)x`W3 zF?|5sYk=1#diQvKGd?Hgk@IUWu7nUZd z$MN)wj{mk^QAqqRUw$H+hxkbbR}Visg`5(CV}vhU+vG0VSryxO$ub9O`;zXh|SeDxIi$G-67FmP#S%a|Nj6p)MMcGbVNLB4DW(*XP zdwA#Nj$hZ0^us`id4@fNSsN*?tOoBhVWa|A#5I|$GQ9Tz-8kBc$w7MS+@kM>>j{3& zdmPuS#(Hma7*)0?n%9o8Z%hyQ$}Y;G!zuIV_$)T}eWh}}`+}kq)j;!_{4s23*f##| z_+*0pxp8PnZ9&S1FrhpGs6G=xkqjC$cFAKH4;zWJ)mvF zcy3O0?JfHh=a}Ojt6x3zxvlST+FbP<+0^q-oTl};FaP$bZFfnG^${Gt4mT7Fod~@E zwd!(>H1>U&+(TCu;fcUrl9k1g-r{rgy->VO7&o;%aC}U8>sa>mddOLO)U~l*&LOJx zWQkmugS(37R5AD6|I@nj*NzWu@hb#C_UyO*-vg;;xU$8?Osf3Xzy8Ai@eluzuksT= zfBPGQd3edypf0&%qIH2yB3t4?`$T*cQ88(45PwsfG)O%*!AHeURY(S!1i_#fDnd?z z_pQGQDGBaE!BIBBnTivIfRlw8H&m3QLPw}&u6&^P0XIj;Tbc)vfi^@ExPdK}PH9LhZ0wPGxwWzxqp}SxhxZySs6wkWL7I;=ls1sg# z*%g-%m+4E7d6=E22}7Wr!7vO>hXyGHQAHjW{1{gB*5k>?dQ)@Tq9lKK25&2C@WR!F zecQM;j1LK`s|FJbgzG)(^J9Ab&K=mDlHs^j2-~!;*Qi>}f%NU+n#Z)~uw_khK%MPU z*loA*_Yd0twc^nDud$7W`lTfB4_{qb&KJANl5`*2FoWXs{#^QIfzQ1w2$GQ9*_l%!P--NT-+0 zUh$}6)1*jBQID8XRoFCCV}>a;sEhoaY_%QU=Aav5aHGDqdQj0s5+%7{rSMn=h73yt zEk;ST#*b@F)JQtOsCoSY2u~IBF4A5HvV<4g-^;LFi&Xzs zCk;*7`zd6rgB||d&Ne?7=e!?|Z7XCNly+(Nz`k+hQpC7(U$3qE*d(^0Xh_~B7urfYAyF5kZS||(88CL z`BE1Aw(9vU#Xgq>dP#8-Qfh-nrt)*nn%@aB{h|I+`_hbOaFA*>&$i+<<7Gc zUfjVQSmGq$|M~TA{7sFYvhqKr1q;o%8&VS|<`&5#QIznF6J#ul+TL!B9$}<4I#jEJ zjeUVSLC=)dMutiRdsY`A&8kI$gpiBbCVi8dL!EDo(=(AD957ZE^>w+&~1f!9o(h^pE`IagFK&Us1kxP6tQ{ zW4gi%XAem-ZQVGDcuXgy?>P{)^Dwj8xi-f$rMca+vgTW_?ne0V3!L)XW*Tg-cD;r{mRa-3>FQePTKfeapOUtlc}YGYH$`Qp-Mx z=qOPV6vU{t`@S&#^!UjC`SZ`XulUkAYssv7!?VV-z@5$svxS;Xqt&R5v7C+Lov1>o zxiW8=H$l8+00pFpBYHez#DmT~(okz8Sc#Dl+=-JtjK?1xk_!o?lZ2SDV$EQNY0cJ| z(d7&-3}z&)A>$CiWdI+@PlunEG4tjM+N}NaXdab7%m>*)r&WwCvN^)+vb!y zyB$0ounq@|Es&b>fG>@QuC-tq}Hfs|;b{^OlUcGzi_75AhzI@-)^E-ANmtI^r)ZY(HnC3~;1e0g$2F|Kly;AjP*ThFCb8? zAY`&AP%5P|g0x^pF(zGPJd_Baniz_xj9E2N3DK66P*d=NR9gm@plr5)H0YX8G=e)- z#mo_})(EPks{A>a@n|J9U?j}f%^lUy>}a#HI7UZY`Dxkl=hE{xA6SWyT~UKH@A!vb|BPzJlCrX%bteoK z)JI%MwLY);)hU9Cg&;~jf>cFKTq97*#3D;e#;62!(s2fA!iZ|6;E~yLF^a<4gaTxQ zgku6jJ>Slqhtz=^gDAZvip4xu0TZuA?1D>Tr~`9SM+ajmQ1lCb{_XGl@E%Vc6hTbG zkR3=h;Pc()zGr+W-Dw_=FM|7@$oXca>FitH|C;f!n1j31G56u~z$=|6R-|WK59GjW z#@q_`fJ39VOn%zDOaO6yLP3T9_WkcXcFH0NojYH<%!4M>48$=Jh6znEsF(>cp#1;r zy~}Sb%d+10i-@f1=2~l?bMHA<@<6sB*nkX66T^Vzp+<)PS^o_N?5T$a?13%FvSeMI zd+#~>u^wc1Wkz@qSOldNxpd-2g-Rh^ZUnUV3u_c=}%WSJQ{dsmg(D}f0~ zlWd;m>6Tf#7MCj8MHCgGwTaeJ4HFea1=CCR&w#QLVbDBI6*#XIP}I^iT|6nOQ)|@L zu54nMzG`hj zwcx&XJXJN_>*L{bJ#+hQao^hQwT}U>15el12d&TJYRShTkU2b=tp~X5Q$gAeoOz+x zz<>DmE5Di}!wN!BhYvO~cv>EWBuz3bO~8W`UD2$}+w;=NF>o%2Ne{iGYAP8(Npx`( zQHm(d9W&cmNyz*;dtewLmw{FU8o}r=Vps&CN|WGQR3=FZ>C9Yh;e_OCaEE}_9JRu* zUh}6~`E#o@gc8os=hqf<)5(qUfj6JQdr?THt>>==3l70tH|l<Bl07qaEu#;;Qi2X$2^+4NJh%u>^1@g?SC}68FRLu5R);WMBt~qET4KfU5B) z-}3iuL$P&w=Y_ITV=V*XNu{g;O`PftZw~GOHH4KE))?l2H)mTL-=uP3fk$INDXM9q)-4-$lzD-181bp{ zr>*nbFcPY0ofrvJEbS67ZVNG9N7S*O#XZsSBX0fgm0_9hPY=&HK%eTabmDllrPKU; zm$-|9c-mK;xWd)|!kzG0I^wqb_mKYmG9zp5CdWz4L3j0$Loe-gpYzv&WrHCx_c`Bt z?vJ&Zy-=|qhW&c_8-IJoAUx#e7aTTo$L@bwA1A=rgkl3<3;g?Ee+Cl;Q|9nGqPbgeou=hJ7pog)uO&={xJTgVROX<& z)FrxDfk_HOlXgdig1&{fES z>zIAm%&0O!`L!jD9wyEuK3$; zpZT)>#4s3Tny3V8RW`+#S|!x5&=fQ=N2_1~Tg!SiGfV3N(OqX#2Q45Hgf&ErP{FMS z%|+Naj1i2U_6M~n;aOMLydNh5ZGlP6AW^e^&lNV}RCh)<#+o82Td7PIm_rF?5`~sQ z?N3_4w*31x@x?2prBY`NV=Le?VGbd~-u=JC>&W1pIOcum*SyoT@A>6#Y(igf80KB+ zx4ttyf4qGVRx38{{CS#~Xh?LLD9{8# z9J~?DFAeJV+Vw>;cvqtRyh{_Xs?cs*w3KjMkyEA-&1?G9*g<&wAQZt{G6Zjz4qz3jm;k4*84lpyUnvFzJ(H!wIuV;Z|vE) z5AUtd9`bqbdd;D2b@@8EEKNP=ormEinHlft*?8|bIxaKm7uFo7OVx;0>wFV#dYN0Z7YBCsi0FM+%bVMl(2!X)v3_{N2T;j^*s!x``%uu50& zG(t+!#P_2#f!T=N30ljbxJB^Gw+ns=0kf?8bHB3rIM?sRExhJsruqTI9p5il@Nhi+ z?&l&=z2Ko(`b}bKhXo53oDyDRDbRhGDViB;`7YoqY82^QOozci%D~@mxBTVeGa||; zhFI6=@J1O5Awf7GH_g9|OI;7s4EhE!R5K83Z9+TYa=*er(mNs5Id@mx{~Vd6^k@jq zph{7a;u%n6r@+hAHvM6W z<}UR*(+m!vj^8I}aFwpfN%vTn$eZfvRiSrKEnW*P^Rf65YQ|lQqy3gT{MNtTdWBtq ze_T=-vS|+c^oP(gZ#+hO^_8biPrOS2;W5{6mw3}YW%EfE?{TNN)w9qHj{*^5uV!(^ z?ewhU?H4-TI5uv~XT9e6X&P_$49V?t)^i7We!$1PaZR^8L|NAnsGRPe?y;Z!mq2u{ zD~VhyJXLRb%6>R|kNv2x=z`}%5VYRAwAY8-c+ClJN~J*6ToZTQD>*;~*Q6o3I|G8@ z8H9xp0#%%%LQEU}pZLOmUj9fqcRrtGmd!k<#c>VH1)4HN;L;dl;w+58a!lN6!%Y}k z*7-GUS@$PX8k~pVVN7b2Xbc`eWg`=lq=sdaz#1q*HKCS3Ll^}LLRI5J8y6Z(;uOjG zYom^l;wqyE8#lJr5NZ6eix&N9n)tITW`@?rq=k)D6zjf!irXBUD30L>BI&_*x}*Jx zBD-Pi{eQuNABSj4?>28wy3pUR16`Qgk>u+t^q@T|1 z{2-B)V@~c@j& zC$!>%hWFYy-FeC>ic6zLU=a)`e?Fi1k6$nNPs)IMBfQZ(DVZb6N((iFZFn~`yUb3D zq_O#Ia;8!k#TiHe7860tsI}1oiU+8s@TNQHT$7g>R7J69lm;s`R-s5hi^e7zjm+#> z1Yv>qdOMGn**7sPf}e(wY9kK(9Kn`skF<$vJ4Mg=_GZmrq{654byWZ3gH<$7sq;KH zRCOmwx?sUWF%QhM%G6WhJ{7o^463gLqJ8jv@cZxb(Y)t9Pl@3EJ*#`H)=mn~6(nEn z3n#zd_p0z-HqI729Q$HiOK&-CWTxx;z2m8axycN@L%H7%g# z9sPNSf1&vcpI4K#Iz|81Wj5dsX%G{@91TAttd1Z__ED0Qj*d+*K*GW>h1w3MJ*|sn&K--3zeO`%1({b`nsYAf8G@>_gN-FU=kD+ ziYA@3)rt#95sGSVWD7(%8X0t^?uxTkWt75~%?8K05J}HFcY>~#>2d9xz2v871ozwY zhckE&@jf|)h1O#cWTs_qzWs&HDHgLn1c!R89h1rz`HMS_`#Kks_hlY#qfXw7Ju1e1 z$9gDUif$bH+fVG%Gk@%!Ul;y3rRPw{UCG<$4viA(-Kx}|eidU*tqy)n>@d0CHilfwkrUfhr@xGz%m(f|fzV#*3VOkU1q&7|SOD}z zUL3e-v|zzC?AK|}b+=}=Wb9uF_G|iIqXGSHd$&^$wa0oUy;hFgDk+j#Fd_rpF_h1B z;^&wMQM?5ax)W>>6-qHmDXhpEKLv<}2kCPsDdM66WB0%#QhcRJ3gKO8$q3vdl|FlW zn`k#pcSap3T0mf`Q;M#1>gjG%L-L+gPX|43&LGOTTJ!Vvf?uaCA)q#gZ1-sL&RNCk z*+!Zf$Rcu_0PmQSN;mNOgl~7cVCwK z^)S5V=k%$N6foaWvloTo(}V7*8qav`0Umhz#UY5(DVRM_i5{%N8%|Kk;Lk#lOo&q@m?Uj3TBLGj1bkYpxoC~QbLY3#`bLYQK&b2jxvVA3 zSji*Xj1~}{!D^?VYRF*}&D;EsuKXOg|LwN---oMedM}Ubld7m*(uv;Sz<1YuK3ed; zr^5GMap-5i>vh-f%S$iFAA9bb6V;;*_hPtpT!aVJ6)t#roKnyf+x?Hrn4izIPuE6&O1;?E3&~1mb}T6frci4$gYOLP!QQF$XWo%9ZUf z@NX`D<)6w5ZGu_`cXLn{o<4O2V;lsN2CCiAymiZ}Jja@Xc2n_fI1vq1!$o)MloHaN z92zPGQ{8zH4nv^?jAq~yQ&fau_t`LL1QGeKsNl7tDtsE(Tx_=d9gSZj_yCAUDv3r= zYb9!6Mbf%qxAseQP8C62^ZQ5&?}Jq|XQ*nAKp($w*RD`AbBAAIaJlhV$lfW==6WAp!Gc3^ZRMG1s+2Sl zfpAPLvvsL~LdYd;Gi&vd?kFNy2qMNWKCvlja;`3fD58#$!I20IlG(Juf{j<)GYAxd zQVK;ivxXsrr7vA|r-(4BqCN|=^vZ4T0iPs|(n2Uw(r%{d zp~1)13JvFTt^8b_sb@0@p+(Sku}AFMLUxL`m)T8GP@CK9zzp7g!SZgoGXK1{({sa* z=dLWomE_l6)~NsclDzM>bH&J1D{^@)`_>4rX;Qde$h^y>aW#lO#$xn)G@{qkZV$y% zWIu15WB)u)B!Y44d5?0A9mnC|jNPeu{ao4cj>sLuh@7k>cN$-#h`{&z>v6~Cz^}~* zSFYyq$M00LeOl91pTd_9z|*^^f6vuVeebw=qjO~)$*JQdpNYH1<{uqL=Jn1~@_3$l zY&+!W%LdhgW8!k&&fq3PI|B_Sf+B%Pr0KW{ULrGP2sYCq1&YGdoMv0rRoJ-kAEok7 zv|>$|ib1`|AW4K^f~XWV)-uvUiD*Q(Vo)(ggc8mgWfI{_R2uO6P{!tzNNOiC5Z$wG zQ11$uFkp<{0AV9R1<(}{j$6Y$5HWCL2&Wd~T#OHO;E(o!P22GIGV!%Jqi1O5n*MgJ zu?t#Nq6bmgGJ&GrsMd($=#)X~WOmqW9lXzav)exHLR(m{;Q29cuFMPeQ^H)Mt20$& z!Gee4mRgzx3l=PR+erR_B7Gk1fmaXgbf#SPY@P|78W|A6d3FBo%U7l#gD5=f;rh|% zQnEp^9&cqMgId=8MWD4Z=%s+m&MREHph{Qnlx}^HyKsF&SCxpY8#FUSV2WNt=aGpb ztj81iA;L1i^zDW-E0i+uxi)^;Zt>>bcQ1YRZY0+&MfH;@!qIgFwi zmsN2uLYsU>icM}3e7_d$wNJh;Wvsnm!9z1Mr`o5)4BZPnmkpr1vCBxov(+cQru(t) zNA{Yod%=PQ&x_mU!`DnlPnAq%)by=O<8$e1nzQue{MxL|vq*cLjT*mBm2az&u?5zt zl@`gYvBSKhI3yyu{+LG3+bhd@<#3*Vhr(+fVEH}0Lt>s5$(MhNWcm@g^D$2Xynh#HC`v_J zPzVMQMioZMpfaS7yRA`c1r-KU%#>CgB*Q(4%UD61qowrHjK)6$IofsAQ6d|I> zp3vJv$K%J17jn6vm)rrQuu|88uQ_*t_ zMMG(x{&pf6z$T4z-h`K4bS(@X{4|birwzZgEuSk?N{(aKmdtx;0YG;2%+hJ40Z2=m z1Stw4n8fWFyc;_M_l#5f8LyiMx`LxG#Wv z%JJgPbMh90{Nwd!C)LE}JF{!6xoG}~3*o!&zwiD3l-J!i`dFvpJQOcACOnmp%8mI- z`dv-cb9Rb7Hxlf9+`K1fzBgmXUC(&uO`US5>bUW2#Pe*g?28C3xQV{r2kxIszPE9C z$a?vu8C6{aGHc7Aa}6Wuj=k>Ay!DJ45REY1(GH2)e;+gymw{Eg;KSrN!QW1me`JN? z0VRc8JYr{NUPMz^OBD$)6^8D8H)0G-Y^-qJ(i%Y{*Z_q_k=#U@w9#k`S||~OI%ffE zH!i|yz#7nK)HxHWfGc>`>`^CvZzCTV`MG`LKNR@3F;tCa7xZ|Sh!k0=nps10#qhjt z$y!9G(L^YrghNvZ9Em#uyr;&p%l-CorH*8|-$%o4fpUwgHxg9d%R%5b-ddiEFcDEig^!Kv*>NlJ}q`O1{z7pj>trj610F# zt+*+r7+Y~flSL-gk?_mX76F>0YOGB7sK!VNw}f;{0#8GP=0Ourv6rFX-XMY^%Akr8 zSOgKyrcTI^M(otgAet$(iuccj2gMs7K7L|y_@!39c-GiS*Laybf&^)XE?NI)-hR5p{i3Yshi?? zuTnc8dU?Kg5v|6V3G3C0-|EEA)%mjBP^mzts`kh%`nBVZ^y3sYiYVfj-hinLlT5D5 z0P#Q{ynP(p$>JVL)3t@zOE1hW3#Pk&mA|bA>DU9q_dLjMqk=5>F+Aj+9rHOlYM;45 z1^RIs$@lyfp9*hoQhjH*>`Uwx6L0;VzO~PHotk~@^}?R|a9XMe!Ck>)zSXo0CRlo6Fc zsMszN1kt@d+28)+1yB*OGogKUVT4=0Sh4|k;xXbCcemy;ncRmP{d2(;?2D?r*aGcE z&Uzd?hZIC`y#{l^f*(h4cwe2f9tu}X?jHxa=WD@x!?8C8-m)0o41wK*>EbkRKwzZM ziOOY$E?+NQ$fQ@grgBMUJ6kZdO0}-4DZ+U)zJ;SM3}%=rP8T216k5?J1O-G{nekDT zb>#P>8c{Q-M4?IsXKg;Wbk938N(gDno>mRj8{Q&=zgg+qJw5bDh0bUbqXr*W1K%#r z`K?vHPL(D~Y7>CC(E95UsNGXfO;{IWlpeT629e1&?aG>>yLQZ)!?}~P&u71iLp$(8 z>=0fekaD20mkPi3T)nm7`mRjKp>2PC0X+{y*Wd5l-B<2r1E22l_`dR&V-_pl7QD?r zzuw){hcA47L?-?@$B((!i?-EjZSigSm&Ft^KX6b`JggKL}st2{*zL3gIT+$7X zb#1#NpID-zSJP#ko8$Pgd83=v~V-!O}_$cs8+foZ`CD7<%DxS4-O8-|CHDL%S zAvA?;I0a#aPzgpeN(8k9%>ZfWwB`518RE`oZ~S>`e7Tq?Lm|S!vrpCDUgzq#gL*Iy zaHh_>ZP`dLQ8V~$&P00lnMd~wyp(@>alEv$&sDr^HsBPoe}5i&kM3^GQ@G~~7Q7!^ z5A2RT(%l?8m$7ugBd`~*9omzw*WevzK3_6-3odb5>(1a z8z8Z_(WB5LsF7bmq=#MzO@hzU23NtlFJ1JEpNXNQq9&0ZdaHmlQO1%RINk!ajK=59 z!6{lAmiKX_wTht>fuYv~HuCz4_4+uno=`=RA*~alIio6{#uZ;T6Bod@>P$#x{km_R zO0W8h?w1$Bps6ZqKnYNSh=y8P#CUiYrnx#YmEGXCSEF!Hhkb>8dZ+Ao&71A57hgYi zN9S+@`}c!~nwj5fsLRc^e5tyOQ^H$+E}t9wl%nfaCdb0QP{4C9e1g}rG51=o^QExA zc;3%^+-qfUz=HdFmhZhT&JVGiS@8Tg#{GDSK7FWhy2~86Wk6RD1_~t$&$=DLypbcI z8IW~mCZd9i&^)tNllWYMhiMv%|2kc;UH`;cfCUVaM&JgBLyLxZV>DrnveNX7t2i5P zh$^E)c-93vnN^%ixS|C`gdv1MlqnjMryavs3PlT}r?+1tRW02E_u%7)4|r|-RvVjP zU=v%=3?@zT-us?GxwXKgU@Bb&bPoQq1>F>H4Rx>~gVg;CR>{ z&!1uu5S}y}Rbee08%BD41&*V9g zSuT`juu-RJhKlNvSv#}T*XY?mQ&@%Y0bwPIdPBw2Zw}>52P}kerwMFns2Lido`F+A z84y}Ds;B3ji_C@vs6f*+Jr7_QM?S3AwC$D)Gk)1tE<&ITxOaLb833(7QomHTF7%k0 zLSaBC7=<)ycX8ZOIdnU3*2c|1yX?}QdpI;2e@(bl%Dhx9TCm_=#AOZ7^*YA4@JuYY ziMKv1%zgKA2meUNB`4b5vGwS%g^u)U5_xt}o`aBQ( z+k3=YSwHNH9_`=b`##xaO>`<-DuVTlo+&#q6e2TiPC+%rOfowqxI=ZPh0tcf7N8ld z7-$|$G{#;Z=@E=pC`byfm{Ouq2v#DD*3~w}X*-*OKw2v5?a|)t@ymzQ0cYVk_wzcuOs&qPZ>=qE{FrxshQe? zNP$W)MFZ`1o}Ts+GfLi#@6*WczGM6RiNoLaVi4h`Z2RlLk9gibcHmwzx6Hc%SLs4W z%z~Uk8y{jta37BC!~9Zp4Z8);v!3<&aaH;4m=sMRL{j2;ru;uC_5#TLe*41frUyL_ z4}6GTdi;1U4|a**5VH0`Vi(^TU!Jl>U*vxE_0DY~M@PLLdHZAM<1hy(Ph<7*5{TFj z*KYjr_V;uX@eyHEMd`I}7L4JT2-+2Csz*{EOPZcbGrC3#Mv$Iy!q{N4Mpfa{RG>Ol z3#<9X0%HWDJI#XD6fj0}R>dfxV9G=wHBhOjI7O1y$pnMIuvR8@D6q1uiJQWyRq!DL zt`E)m;7%CSHufNI%Lx3zMy88zeAVEy2NOvx#V1^ZX~^JJ9ExUb--u==k-%tRN)?a> zr3qVAT69x*(pY`JZ=Hn5%5z{>biL3{AC33YhH}eCd=H;{!RyA0QSAG?64$;KEO>6b z{^j#=Ak37v_c3RmEFyjG-b!#c<44E%xj)+cugES#CX$p)@lFGs4bulTEQAs;ltPen$YPdR zLr(#g`CNk;MS9&`G(;S5&c+oI@O7Hln(=KrA*y}fC6z+y*J;R=`uG4sv%QKbA<&w4 zZ$P14%b(72DoKIezgc%l+#e_?ao^uxx>N72^I3M6-xlr?0D0+q`qY^Br}iJVyM!qo zGkM-7vT{t^C;D=#lm0y5?~5VqfB)9|-ed4wZL=?evzzE&^0vt7_V0OfF&7S(n~l)N znYeu2j~o+D=QBPQ`x~%_w!{AGZruC5{`pv@!fQqJ?A?2rvriU#UG94Se)GZiK1Db( zs548=Ox;T^&!u*OBrVe&Z;dA4CF|dUv{!HuS_t8Rsxb6`Oc1IDn`oGghzYdJY-LdB zs0fO)66FIzA-JHijfqAhM45cTBmM5og@F`tsZ&D{T!re5O{;{I%wT(F_Yfsq5OKU# z3c<(qn(d}?5y}@Do3=%*;4!DZPCAz-4cCF}M8BwDs#5sEA3 z(raq-^%vdP{K~U)$$5hoaR&a{J6V)-dA{+;y#xFo`|46QwKBa zraR%oKqT!EBs!(IQza#W=HO_mR7Oh?7U*NB65)s{L3HY(P^+`mN^1=@5Ou-@L=jE3 z%C#9qAT+2RG!I-ORV+hsZ;2 zmW@|72p3ZWG-olH+ad$i4@1GknQCV%#q8xNhz6x7HGn3FL930>nV2Z3%(T@&t-PHK z-fcn{uCg1KMda#Y-IpQhI`);d9=@1<8^hSVggoZ3{PtYk=HdGp&h*k0?-xD$_wj7B zOfK8vrTX)0e2zqf@HtqKowix{{P&l;wo}37F8@njg}(F!oGg}_+VA7O&5-vJ;?3*t zCJ>UL?GT2x=s{3YGgBH8nmDS#5Q+tJp&k*A6HG3&RuB^+8m&6f?Ffi8{Ek8K78HaP zinSorkRk{Tn9{r;po;N9;G-%QjVg+Vf-9&~5jG)&7)6yqg5Rm|$tzzKY7YRnp*!)D z5ohpJ#H=D{4Wd?lT8&&de4Z}2SPy*OZisE842FBqEO4J#DSYaFd{fWt37PF|4j{Nq zgc&{wDkDT8+IF`oCS6cTqb0Qze?KBC3l=O`uwcQ01q&7|cp8YLNQjD}Vu&c-z2H=h zGS}acX6GrkVpn&$dXT6hgbLqkrTQiHG2HRmMQeKTo{EwBn4YSVnv}^=jg@q@OfqA* zHe-~m^=r}CRHupViIX{6EWPYn#Y7R5K^0MzGt)J0I0T%@T{&^qPYoZ2Ur!Br7`O+#E9)uOr8A2!_tjowKL)r^PP(qlxN{U3Fy=HNY6q@mH zDzI%W+X6+yd%dBiGHDM!%OSNoht|ow6mC<<%8BzTrQj_-R1Z-;z3ctADbT$&S>HqP zz0Z8T-5=6McM1d?;hB2Kv%KJKV&5{s%pQIm!0}Tpb2~ZQR3E-nOq>5cf4$`9=qcj9 zd2ODPuB#7TSqJ1n?mYHPXL^dRd}?Ftsa?;4*LzPM=9Md`T7C(;ER%+3&0Spjwe^v4 z&!Wm{lFFDhJk>S(3nMc7rMpd%$ZAk$|CG8pL77m?0s;Zbn^M1}qn*)nWOOj%R4`(0vyU)M!HJl5D zubV9q!Vt11FCkL!BU#QY7mQEj-QA{4m`22;AMT(+D@qMlS6Vt_OF=*f@GA%-1@9wx>J?+!jC|)+ct? z*&mEuCh$nt_*6LL`kqoqWx>O7YHQC!5plOP;a#6-w{F}s5*|e;{W&uvML;4mcmVEM zKi5N_er~}9+`&|tBEW+dLW{tg;{l;5Qk4QNL9z6w6L-cCnkuG>w7}IF)LE-wE>whb z52|I&UwF+b>$ct`=fC}0iB?CBbo*6_@S`R!!94(6U%xEfe0>=;>AJ7$Rx(#D`UMT{|= z;;ELYntzp^j=L1^>SLs4C0*+go&chSDPRjUsWeH!l-8f<%vcG76ecR_jo-WSbroz{ z<98QeLokeuGX-3^2;~g z0#+1hHR})&R0`FEZ`1TPR5ahqVDy}Uma1OaX@1KHzuY2tshXI%o#);B_ZUockfU$$F9jf>Ve-%f}Mh0GqFX`zUro|Md42@^m?cZn(yp{Qb} zyU*ANF1*s*8FfHID3Kv`h_aF3^E7e3-5gIvb6Jo+ANFfE7CaWwDTr4CyJH7>Gd*)L zI$rRUc&c$>cid;>Z=G7!Zo&8Q);9weEVvbYGyJw8>%Fbjgl>b-Ghc%i3`0UPh`MXD zF|K~=-o4;dJ2kV>T4idLDV&S8rAGJLlP+4~%1R1>^Q}#MjDep#6*{XyabXq8kmh)t zw=J!|-&;$Q^HQ=tuQ|nqk2bQ6#(6k86f~f;V2q?q8iCY`y0fx^tD-B1+eRu8J% zKKDb~_|`MtbL`Wb2yzE49`TU9m_hShA`8!a9nT5b$t)kQzHXjqFHdrm!`^>RZeJ|D zCfpdK4`{gCgsxr-9!+aMK=kB?>+I%5;uFndr*eNz7i-V3jSG(eZM1#b>5f+{Vucp8M~xgs)CIEXTO(n{sS zn%`|kKDI4?EH?`1s+B+8V!XwoJpoW?T6djmcoN;3pmV9ZGnfuXH1XS{tsJMRa$HC=)%{YoMk? zG^VJ&E z0fLAD`l#{I_r8K_{dmFmu{72RL+<%nu;2$VcOAXjhxS#--_?8{Nu3munrR|n%ocX& zE)a&9r;%B>tlewjX}v}e(s}|(5LFzg9&Bo*Mf%(s=_gkZ1`~u7UlAA9MOYCGAzWxd zMfshKScA!-hUPh2fRS`aWcQyTjKDNist7Hzd@1+69Rp09HSoJ(#d;k1vN>mppjqK_ zooLlrYvGd(oXOAwufU3dDIN_Z)juNw+Y_Hj`vn+85KnbaSD0GG90o05#ussZx%kGW zRZIkPGCutV&VIb{hVS12fybX%|UMu`$~+Ef!@QOQzvLw`ug>F<>|8_^N#LoplM!x z)&!g#tL4f#aThb`1U4z3^Vy%zb?E1Q&{%eFHu0`tZW#aE(u%|M3Xhv17eScXnN*_C{F&pDb%KHT-nmlP)dN{ z3<85eqamTJ&mn%Q4Bq(kP56g1<*Yh?h(cg|YtB{%n1YBDJ6T13e$#*&nK{GRZYOjc z2v@dqJ9SQmw#G-`uh(m8o%lLkFraMQ`O7r165}I|>Fz-~ntKEtP3l=OmNgO9D z@w%2L3l9!xBr17JOQ-8HR!L&4%iMoAKr10*}V}Y{l7XV6DpF!HP6__m*V{YLawRBD0;ljm^L$ z(&Su~QHNCi+-!-}z*Ll9+r*!@7i?N1icwA23WQ`P^Hro`_5;WF6g(b6u@Vu?>|M3X zf&~i}oFw`>;66shf&~lS4z76JzVp(dh-5L1suU|bt1<)14W55je(c|eLXBjPM9=bB zSK{m{b+i_EI8}lzvzq2S>~@d3&^8v@Pc`F&Rveo_s@eK^KJ5 zgn}X}Y}Ee*_8zNQCI4_0Mltt+MozSc@LWmAk_+6BL~4HMnSouF9;yc#4;^RgpeO(&n) z-$HrcuXTDZy!1Hp(&vBIn1i?*zka><r0qdCRh&@_6if}p z&}fWiNtyMDQDG&DdgbG4g+#EOwoEu%8chQWrGzj+UTc0JP+{wh8qT0XkpYRIZYwer z#Dp_5&WhpZTM$8P;CyOm3;r+^Y;v@F{<%3DKro6J&7J0g_IB~;6xZHH!?5C~^#_K@ z`G)fg6JKzCJHNm$DpP@?#;U@FflE*XVjC3yL5k)}cHp@7^_H0x`$6`TtC2p#dEOgN zb(3Vlf_+>cQx`Fn$72xydw$%r{dv#Vf(1W@92;*w->=cT_R#VE`rmG=E1X4AJbe)u zOuKymJ1;!xHUMz>^zGK4YMGVuhG-XJp$m<~{By6r(_kBo7D+>F0ZjtYZk`_Lr^iZSMokt*MOdd3{9!|PvvRmL$8AAB$^(SIe znYJ5LK}@LXd>lqrC_{je6w)SwtIV-&CRfDp5F(T?OMw;~LHMh2HLV(>2LIx(f7-W6$eiPS0u$HGn4b@6?zhV|>ZO1{L=aCb zh5Q&iq*uHq=?dT!j^-f?5J+83yqA;7J^2{(^+1+$#bzG~L% z6HMeO*%QJ#q5Bdygk|;?Cf5uPE*E=Q z1M*6T&ZFYKO|CobOMdY80KS(ExR%>vmU1`-o^xzF9sa&o#cbnpH zWu8C9_2+f$uTvg^D@lO}T&2&a0;ZHuR%Wc+lQJ3IgdCwES=Y9AY7arQXRfr@n}wxu zw+KxlRX4?`2$Lz>*bB0(=j*z<>1!DD6R+hu@5cVFYD63q zs4tii*S>$>ZI@I0RqThqx8r^HxkJXgWrkkx8X$4|W@u)d6!zzt`906DsrwilXwVv2zsqxq}N_V5aNhsP}jWCB50o3Hz9*s!jT9@G1jXU zU$z$zjbTv6ab(k+brZG`m?lk9HOqt)Ae>4Drr`~zfhU#KL|IvZm^ddXnpKSd`0X?Q zdUMX_;;h{mr=Y2`E#Pj%X3a0_3;wfl%fDLvf&cc?AK838KPJAH`#+srTNa6CUK>8t$~XxTj8PK_bYS30TI1gRoa;d-c~3$ez5hG2*V; zocn6<_7}u&tv!AO*K5EJnLplhd%YB{u-C5De!iE{bD!-LWCmS&ELVV$RG+*85oWKQ z)|DcoA3#L<9OOG*gohJqm_mf$(t|s3qJQryGzTI*?{r8*b!(X|Gf`TX-yEjk(@^-d z{=`=*7t@AqwDgI?GDGOeCP~|d&Sue0tBkhG=yskX;_&;kj}$3n6s^&9^X6&Y8sb<7i6GzND;i^7L7 zgFj2!yq1Dbjq^4!Nnk@^aAlaBNmIo$G_!-PRZK0Nwiu4*J!iLWvW8$f0It>bR1lyr{^E^qYW%JW zvJE~D1HTyzKJm|ok$?GzKk$bS%K!W8Isf~YZ~QwNXCFTC-wbQYAu1p*p|W^&(I`ky zci#Nl+rVS35N><_ywkLw&F~wqdi$7ZLXYjkx6zPxZTv*IPGeej#t%dA7R6LvuL5Am zX=V!_)JLw(nTHazUix!CMDXj-;{~zTHHDpQm&%n5#w+hX@%p8=a6S7%N(+vI*IH*E z9Jf!KK=i<9KqxfaG{sc9NI?*}=A11NJk>FqKoxM$(X+T1Cg)lm^9b($yDbkGrrtcfdS zWYa3uVQ5O}fnXU6AIFhz-#+tkWqkUuMu78e#nJp6t$`_SLUCcVfyo=2s7wkH8wQMz zrBGC8t%88tz^_~9&+P&a_&OH8eXjZW&DpkzZ8iQ_;a`0CEB@v0Kk)(hU;gr$|MT-_ zCK>oA<4^o?G=B5nUZ=>)f&~js1N*`AsV#`!9$v>n;B#zndohcC+P^7Zk;-@_A}( zituL*C>Q*f0srIpkNK}Z{E>g#w*1e({h5FLZDLr#fBI4RV>Eu*T=1{A(`f~Gch>sJ zRhr>jUr0XIy!^4pc#W7j@VC{!Jw*mO+@Gb+>(qC-;qE^7l-GKS?eI|CMsvNrzecw+ zxD>tmQS7q854zHaVXn)1O?YkBdulkO{qC#ne~I>gse68x$jZ_OUlP&R6Ia&`*BLu+ zeVujN+k5%+i*WTA`)nu22^Cs6tz|8qk&H&|b!R{dob>t5aVAOC$m*o} zq~v?np{!Ivge}gRtZ6fZvu>77G1Lq$wv-BIIua-*&^*Omc6LFeDZBLZyQdOnSkS!k zLCgQo-kUVXvTWIT-*)$i$PUeEZu{CQR*~XFl5rr7WSa5EYOIN9rU5mOWF`(onoO*s zs_MPE_uc07Xfrb+-1pYNBNGW6Bo2BcfLPaXaDhZ-M0j|(`}V!pT8vF7lCd=$Gbl=M zl9fCyD~vib0-n+Yr$TK?>Z~GMGA2H-9g3ViOkg1}7x;L5%#X3<*m=GVW2P7fbxrLO zBx6YA-;_K2+tC&;s*3+Geb4`XaLmswY?T$i-<~jbEpLza`AY+P>5?40`^5Ps-<>2t zKi>6NhmNdkxU5ukZa=y`n8?z9adDjIj($OMeVi`!xwsu~QWo^tJ-UZ(`&jf$pX=sW zkB7xs)94->09gbWr^_(UGx~ng=tO0*ygw)Ng$TiU3W4A}(uqzw$=SEFCHV^y5nooJ38fGCdv67-|?4R8}hpFKkw)r2&Tl}k? zm(=R{cc0$zA7%&aE9{mfe={j~(G5kWdtr-fh3O>kbDt{!VK_}%4#@Y;r?YftHV=X#cRaPBeh zP;GbZF)w(}CYIo>X5SWVdBU*-Fhth%Tj><1FTZJF`E4gZ%bC|6>lkncILoVDmywp0 ze=ovAEduY7bG2+E`?4$GI$YW4{G!jg@c5hCw^y%eIVP}B5!|#<>*?b2XT`eYU6+%R z(_{2?t7z_1iT>1)ZrGQcWi?F0(9WE0VG9v(IY6_Hg{+2imaPFedHS+Je15M2t%8Ze z`TPsP@|R?Oo`{|J;F%{`qE(2U8F-SsiJ#>*jnD~{v=W&bK*c0RBpQtak$`A69p5Sf zlh|^Q644Cx`7<#xe=h-1Da(RJBP|J|qHL9~#-3MYMX7D(%~?WRKvRPe5$CZsp{eup zLr@}$;v9@h#||Y$Qa*{$6vD^4;g_Q+dls=GPzY>^QN%1p^TAqP4n6;Nw99`x+~Gep zhy1UH2mIV51~KqQCw#p-YmF-Mc(-I&nG`zzfA7oaC4E4n~DMT$T)ApH&a0J;^Km)ylS7*HUHlO#O%bt z{LC(WkIjH^QNMMZKc+pdMMK}`9tLLvJhPLM@`c3zY6<;g3BK*j_v=D19H36nWjl~F zcYyDLGjEH(&scq4#k!T0WZqp%7npV2H^sVjzr#64f#PkE`Eo>aB(oflEy`vcIV-s z1yH6IU$pFn98~}J#W(!T?l#}V#J}Hr&;NaNz*`c|1$Kvy-&GabwEU?}d~`MYg<^O{ zsl=sXvjV&xJ+6&@e!NrMwOZ(N!y@y$2-Y6U!r>`mRi)NBx3OH;9#_HRnGhD)e9Z*g zKG@p`ETlr7_q|wDWv+hr289a*=>oSd=vue!m{vZi?Wi<(5OH0AxCo?Om%&>N6mwZ- zLP?rX%SxHfBnM31W&R!@&eNvEJk4>T0+&l5eG#yEgA+rXXA}y8)y%ukjwsHcbdI?y zct}BL8^ttH((=vD4g+7Hb(~@L8;eYez$;%ejz$#WpzwTb zTi(waK2B?9A&^RsIVGwxXq9nr>}(5fobW$vz2Mzk_}}*S`Oob>(UhI!nG8#|M?((U z8T+$_Lxh=Text`NRZKTFzcalu z%lGvm=Ati^+pglF=gPC==R=>*bHXBnzo4`%zAi)YIBy+x-rvAuo*OOu)@dI0oI)Xv zLIrX5**=Pquhn-MH^WF+79vSGKobP9T(PqFdyyQl1m~osEgph+ZGlGB;@gblDh(^`6d_SJ> zdNju7v%EI+oyVsWw2iprQ7^RG(xw)N;1l?wV5=w?MQ|~ag5zVG_~&}cyh$`35TOu= zZA6=fm!pdRdgnFY3?}?9@&o^=`IZ0UF!Cu5XuW6X9j}KI#=hWq+VEZ@#|TH!Napa# zVNOsK@f#fAJu28~8G*<9F!$(jK32=uZiAEX+|iE_n*p=T;*u3kq(~M5$hWBL-_q~q z_vrDIv8r3}xTqI*i-k6ZST27oB~VJ2v2&TL=+#b?%)4}-$fD#GS`twbf?Eb1d0agi zQ(gC?bh$#sP=th$RMC`Eb&jk~>3z0Dch&`W4lpHlJTIpZd{+3h?709yC7zKKeAGI7 z;5ozLF-!QQ49X$a8j^%>M-%?Vc*vk_(N@8Ek{PaW2##ctWKgRy7ifVBco9lUDX}(^ zf-no7U+QCioVOgB;e3mT$7#g3iBX;Sx~lls-+j+_Tf0o(&6o$}-ya;YR}R@~YIdw( zcQT|Dq;0+czB%}fuJ2MF-alKww??TN1yZ(}k1&~noEg@@iKw=;qJ zeINV!xOu}}6v*9I=I&DJa%%*4E_}~Z#F}=ndwz%(nYv9=&OEmnI%PLGr%d*w;3#LQ z@LCQkJomgOI+$h%~cPTIXNXp_4!FH{^-oFpI)DNEHF8FrmuP*F4MOjVk7T1 z*DaZ0ryyByrSw7&aEpv5-D<kY5N+E)`9LWS6YS0*%CFTxVF9h#V5=NWLI5qp-;mjDid_!KsY({VI@ffhKs$ub)zAtSau4|{XDf8eeZgb4H1xL=n zi6b}=B1tmO%XNZai;X=sTR2RhW~g%{3{{UqP$wXUh~WWof|qP*5SBW5T?$aMPhCt9 z5mLv`b3_U;1_6))Gr{2yRgyq*jzg4G214Pn`IHnCRYzeCF(m{cHG(8hX%6!_`{od; z!ZC=#>!RYTvI5N(4Nh_{(02kTO%pROPz+0vp(>-{kfHNPQj%8=E%MXhj9=Qs%$JB4 z97>9wvWfg=u+3lXZ1eiX2p5cg!H$mr03ZNKL_t*jPw)9ZfBnFJtPl9_5GJki8jqip zG;PbL!zr`EQ~QF0y3YJT=Mnw9To(Eg%^p2^^ytx}M~@yodaPiPp>raH;If%HfCzpi zl(Z$!dr{dVm_ba5s7hwrx#d=wbmf@A1TQ%&C@Tk5F%tQEYgu5$Fc6Pe4i1C*&K$iH zV(EfR4@essxE$U%F?UP{S#vD34=I zzpl8|Wj^nz0PLnV-#C(o{avdp!bBF^?2^Sm^TSg>)Ga9jrKqwi8KwH} zCxU9CZQCW^a99MqE5HPmti-urxBN1lvM)lahIw9$i88gkEQb8`q~PU?U0gZj!-tRj z^zJ>Os`$m=ZEP4zAc!y+R(zNp^Qo;NRH%3k+lIQM7RZvZcs?E^z_SJOvPX{|J$l?K zPQ*e^i0(al^ytx}$CV&L5RVtZTbEGilrEP!yEB_PhLMux%$?bi=eYQLzYt*o91bsC z)-4xWf;cQiq8W2dL^OL7b{sr2p$Y{hLajzJ=`0cQ`y@F=VZgu#BpD>bLZ$^~gLK7< z5xhs5mLeLHmMzQqOusw(jA;{gLdWOq2hIO2zT zpQE~_l9I*+j$%!%3gW@C8tFok<~-bMfVZfxHPy^pdj^@O`@+SoxS6|1H^pu4j@g;- zXaE1Xp?@~-0~e8zuiv*%GR@cHl{_o-U3@dpEdaWzo|BZ z0$yMsE{mT4-gT;#YF*~6``bl{W@kIm2sElhx^*E8O?4YMG);BjqB zF;Bc4jrewJhp)EBxDYsKj30janYRZYNyCa_JmR>C5aH!ym$s=fRrZ@1t|&0`95*#J zwp4u1ySEqL!w2QyJ+=kpZ4453RoeFy1H6k$S}xm;m-)L@p^j4l-bxwbBH-Di1@m1_ zT8kiI)#vB7OWV%FV;d8$k6T=@8cQjEI6bl7b&2NV@Vi?tZ(*x1uV8~7^R>9E=l_%v zq}eG8i3`u?iqGz6<16dtu_g28$>282HM3aI4NvHa1~4AJP{#U?6`Q+eMTa=u^fB;V($L!hT*<&@ZQPqtK?(Q0^9LFA;i#);Qs)&V<)^qBo zmw_Re+OmwLZ=Z{?$}?V$fp>76Q$fxh9ivB&=ZGtBwshYYi8f~--cc;L+??4S>mtHM zV5nwUO;VJoMv9#Y{K7xC`%=vbG%pS(k~4$i$p0x$1+_$L&}yPtmS_rMN+D26z>$?K z+fJ2J&G4#>P59asjHO^N9y4^FF%C;Pdzess%7O2ompukw&}d@XG!Pt7 z6KasmV=mh~RL(80D+PErJ?8EFkhvH*PcTDbiM_m_$7M5pr-W73_{P}cK6DG6+YWd(Er2?E zK4<&xUG%+8YlFvzyfDrgkf)X7xIL@}y{l&C`L$d=bd~Y?srT8l*(F=~{bjHHG8wAX z&pT^+eA~F~dv-cQesw(cKD5bLtgoDNr#3ULOG~(q%9e8udf`HU)%M{s=V!94p2T;Y zxnP|rij$@1otdFs0GK6G@>)$XqCf;%%M>gx?z4bII59MLok{t^Zo#>H4Ce%r(IzE2 zq1DXis}Kr=5{K{3*|J9ik`h59V?4hdj&YjU(|kYMq!d1MTyz6p5Q5`X<!>Vh6ax_@JT70H7j#&){sPnx4 z_>n)qeZxUC+E9We%C_OVs^kybule=E5&zG}kGw0Ol9E*9L|7dYO{=K*><@UwYMgt` z;60Zi?KTw#7lY1o3hv;fL{Pg$*MnSpuX@&_$CE&&EA)yp*Fit_^>|8HRTy3k>Yi${ z;j%Dt@MUV0;wdEH1=hN(8o4CD_2Me?9GliN)eNQM<6v!s*106ciG)EdNRah6y|f_W6b-aq^T z+-ZP!iq|A(UU;Ih%Id&zTLIp49C-4E?%ib0P95ih*VgU&_vrCZI5*RL?`P5DS>a3; z?{4wP#@O@PqYsE59II>2vv+89USC~ftOk6~b*?vo!aJM;L7`J)J_|LFF0fMsb&yPH zOtNZb*7#atQOeob)@9RhS!5bPBs=9LgJ@l_Xhu@QaJjM~CB(aIG;Y~8K~ls-7*H{D z4ZAKdK={~3l#)hkrYSPgNGJoYtRR#ft+&9H1?{Y*91WOj%dDL-L(w)-7BHxWY>h^l zhuk)p!K`lBpU;@9q2egpMDT$ZyRUfpVwZ9}B5C5orw{!2<_$;l247UU#5A^y%D~rK zBYrb?q^a?LH6Qqo)TC;MDmmIv(#F(rYXi;+nocSpuYx-Z@KjDtCc7f6oY@9@;C-n9 zzm%OjTbgnmue)YY}ZlP}M`t_oIvUc2-JRPn6-R3>(caPO}JG-%k z$d!BX%RMOm7XLs!;nxg=A%b$t>c zqO=N$0#vhKUYD5@Kuqw?fhbM{zbMgMX7B*&xoK@%^^ z0WZP`G4MgK6iIDO-9(PHr4>WHhqmEGS+M)+6_b~*Ab5`F4Zps5!~UnYG(@x-GQ;pO z@%^CW+hN5t8h@V6*`wg^XV7R#<))}FnOmSu`Oa&R`Qu3x(e>*Ilk;=jyva_P>2IFoEgb- zz&TWpT4L-9UT?qPXxd=b()frcQWgV7)e!H?Z0~@g;xd2FJBq5Jjfr-D$}lFj2V-80 zCb*OXOUyH^k2#ngg9s*$fKWKkV0*&ut8M&ni{yll@89w3n|Dm-b9^XpQsLUjr0~2P zZ}Cl0qQ?jP)AWe88uL+&ce5Fx$o3G88f|QsE`vGqdHs3m&H}vE%*a!CSk~?Ao_B56 zxfu(N-E&)DEcBVq+j&~sZ@xev`*xjzwuvYG<^X%RrqOh7nvr5Ras;0?_4B(w$n^C-I`Hn1qT?I>o1! z%HZW-z{}APZ<EN%6}%jbDeB06s;LP4^&lIV2TM@T!39hOaSogy zg+o$-9Zd-ayWn4(Pf`4 z6SM^3D(Q_|4e(AqG-s&}PgIfcwg!T`787|)xGPbUll|h8pC89CetT!RZndB?|E!jM zR&8O8U=R~Dszg0q1tHyg7eSti;Ux!!xSU<|toY#psoUOZlhKNhREU-^XNVc4I0|Qo zCY;k8e4>aNbBT-*z8P#WJ)BaQ=ljWo-wZ1(C7QN{(&5p}RZ|0V5JsdT;>w1K?)PmD zT7R7%a$L`OIUG^7!az!j@fOwggkpOOt4gMOhkW|!SEhTPXg%npBC0{#u+@xOny!SoTKyRJ+!C4`dML#+l;9b-vmm#*FT{LU=vs>$Ed4%KBIUVbw+qWrW z@Vz|`_qN%y*sH&TXXh^O*_qCA(XlqA@ANpqMP7`H*S|ELKbEZCMJn#ArJEvot`YC> zA_UcCskEq&SY+`OOi?obEa8Y4jT$j6KF=>ROJ7u}hMzW!)%|A z9*)gu$!&zC+<0=TDQ`4p-Z;Qh)qGAOr?_Jab+S``*W-(LZieRTa9cdYbs5&@s+9E* z=+$ShkJZYEzR#|~YLoO`?8Z3T$NJ~C$EM=5@$j6!dYLuVQ>vW0@LHv_J+RD+D-c`) zd=BD#PT`#zQ_Yc8Crz?N0g;%pU5=d7Zjw&|SY)40UJ<(EcLFY6ayAcz)|5JF=Ya=i zg5W8FBlrR=QTRYul!Gc*Q!{KLfBb5f-;XOstuk+pN#ZC%Aga=!%-e+4HQR#`;p=Zm z+hZ)X6bS9C=F@S_-n?NrC@4$M%i%8DFJ2%!Tcn{!ooD*~1IItU!H#R3K&UDXQwsvy zMal2RV+!Y)H8cJ+{m3tM61j2;Cr))YZS{EA;SY^dC2Q{LG@yqV)31Wt zQ>x8lqq)qi^WyPj^-6D+t*O0zM&HO(mK^k%DXl8W5>dfA%Yx63ng0hj$LqoDFOdnq2Gxgk9x1JSHs8cacqAfBx$@Mb}^8sXlDhPS1=&nsXfEsj=O+O|d1 z*cwkL$0Nel5Svc1!viGMFs~_7!wX+9-hIVnv<2S5xJ11$d-I0byAO;Ss6?oT1xINH zn%J>|m*t49q9AI^4@V#QsXk^;9IdYqbwpK65*}qz4)~=>{JD-KTV(FCX}qa*;#0Z^ z;XZ3mkuKIU&`vDxOM}9V13b(Ae0rVX4_s$Kew$(nX9a5>0_S<{o$BxRen!{B~o8H%p)~ToGUqG^gWeA2dmrE$cKu?eQiyX26szNd$ z>o^K(Sro-_{%n-v4wn@xE z@%3mx*xiM#5on@5K4SLffO_wMp$nwos7b^asZwOC81R)F5M04LMt+?g@t0=KC!Yhg z5VN{yJ+WjvOJLXRG|f$L=XPi=%Oc9(lx8M0jRu5H;#oOA)1WPuV~ z7CCX9*B!EaWEan|nt>CdDXA-oObCXe3eK%>_(jfH08CFE&pV;OQ%aUuX;7xtGPkVC zsV-+=oGAnGgph+pX(MCjcrhCBYB0v9$SA>3vhUmsIC4tTmVpIcgo>Tf7KQkHHcceH z`vgg0XN2tTl3ays@1h4&*q+eVQ{Mmj3+dpHkc>h+t}K{qOG=TgM)YL??U z4m@XZQ@e?qDh@proXwiuS84Goo>G5)O4o7`F7h$m6r9JiJ3VgP?8G-YTXh|*s|>k| z>s)eeZ~c=`aF_SzKFinF;iL*>lZv7r2hLVlop=8hf-7Gd)7J^J-34y?%zUxmYOcVL z?C-r4C~<$O)3`gB@ zGf5}SX4JD8erH1Q%{SC9cX8uwT!Qf9j~pKz@aI4O6V1m1z8;Mk`VvQH@gT~ma7>B; zQjM?_c{4ra*ZGtq@id{x6gAD)o>0^aqK?8!4psQO=@B1G#fc#+WgC}W|Enoxa*8tY zCC}(SzO%x_nB(@Lu_(B zG?v%7{3e}|`3Y;>ndJngoj9_bW6Oh6nahLb?B z%&V)!5lyHq<^a!x#s!iyM2)ia1Sd#}Y=yvYsx4mOaZO^6hFKBW9S!kqC9ly0t~v*&+V)E9uRz?EUi3ygfeR^=QnXDDlzo z&Y>PA<`@JA!E+do`BcyOG@X%5kWk=~k~FJ^nkk9I+#6z^A_|{k!_V3fi-J)L9V7DQ z_m+#-DVGlL9^+!?D%^(43;?$=Ff2I{D`hOb{Q1qWgvmTrF+};M( z&3l(M=e}&4oGo2mj=Y_@@ngf4#;=>I8*2isu zbmA_!oc9Y(@GfL!Of%+fWEK;aa$2#oSEn$cGI$*Zyc!O8X#v+J8Z)M`X0Sb=2#$lj zW7Le7;|V*HA;V5EM(dikjaV6S7ICtLsM37%TZVu5BZGE|{_rQ#|N9TL?>}%nn^Tno zilRhCQE!xGLE!`56)47sdd~ZL#&ObY%8nzck~E=as43Ab+e##(P7TMdXRs()l4R~ERsw5B-2Lgv)Y37kX$`IO!6`oh45u>ug0T$=f zbwgW6s^J(ntZ?N3H>^+`w!2N-|H$m0{~rGjKQNjZ(`v{kO13O8R7WUxTPd4Ka%aGBcd9@ocR1<+^9F?#g4AM_mB9!~?;$>IkzmT zqB*O!IPzsz`^!oTKvGuGEO3+}lwt@*!f4f~&8VGlBn2rNRc!cnFyL>uM|_Lmo0e9D znR9#!%5j|WZ5jAOHDSlYU~9%65qIzmu1DUa%6)5PuoWJ=5zMyIW1jshO90cRfz^FO4MxcU?R-h znmI=FC7+HC(2lp5lZ)0BXny&Arj*X*oUd*OUAaVaHM6vuy}RgdA3JU{LwVU!nCFO# z2C7RB)@Mk`r%HtGKJ0<+001BWNkl>ICK#8u(Rk>- zb(_b3=xcc@xG#0tyS`ttl6kzZp0Ql~KH&i6wy<1}s&=JpT}j#_4)89sMm*2U?=n;( zW5I_tyz_W-+0dM>ditFAstAj18WTD*b3?DATqpTJM#u461a=4&;K^LIBt{ZpZZH?2 zF=J@TcSXs++?w!J5PaRzV9X5WqC{=bddeSOeaClOTNJ6mIl*FLKAkbG=lHT@^lF## z#Wto1?*fb~;_-}w_wOi=rVNT9)%Gqj8NsL`rpOBkyc&&|lqDkB;{A9&=V+EV)JVjL zKx0Of&J(aT)HzH%DuOx3v~8HhNE}prY8z&4!utYEhKZplB7w!4;iA5S8{nbYZobErWubH3|qG!LKyh z*+9T&+8Sy~66q`v;MyCPauOMOjDkR60j~+~y6mDs6BBb)W*9|k__iweLkN6j3D+1? zg`+})z*Y+dk3l#Ou>};{YQ@8zQoDiO)bnMd`U{kml)fw_a$vT=EnWYiiI)DL`3ZDY8ANCPX$OlI1eZs|0qZVg{2gL@~lLI0vLfd>}ZF6VJ45IWnaz1HbWsuT2=X zf*TB&io=LZ+lFFR^Si---)?R3RdReS4&6JTnb!z`;r13~Ie_4CTidX^L;dL^vmbw= znay(Rwh>pBSWyrU6OC)Js=$qgXlig(MREddLo}mF&;k*M#+bQ@W+YWwa=?`&a|omJ zBry)_h8c$Wf+i_@^P0x{E^}&KQZrztm^*vd7k5ui1$ZXzM6~9dO^q*&OUnT7LT=P4 zY1F5U)%53Mt?%9>tP1t4!;(YS4c6yn?mnwMzh~L@O~lzYxvxx6Z|iYAoQx@bapadE z$gtU-;2YU5yVlsoK;NC988%E zE1U^qb&O{Xp>#yA)Y8JdW*iFs#qb4x7)+R_mf9s|M2aRcDkex(phHhn1&YZwRt%W_ z@GJX2{Y0#fs0LLQnel<(0&UY$cux?A6h-Da21lbXKR#wWtVrI`#z;%{0c^-VfGR?= zoUu#J5jB#WBMBVO8)7nCQBWIvoKLAO;Z|~JC->5wt{hkm*d*T*TY1fF{aC*);9snz zPi64V+YOQBKRtR}4;PhNuHv#%(W^T}i}Bflx*u12JP>;2;U1d~ z1HAVSeHt5wb>bR}Os6L&%sLx7TuuSy5YQ=Y@|$ABUypa#Dl7KqGu|G2Lg3sMsi$rcR>*col%eStKQG^?SIoK+Jcxj>U5 zjTtRaC!;pOeC8!KKr2EtXggt*X^hmGzj%6v~O(7>irkLTx;SfgV`Tf=oEpTwOM;jaP0ZoZ!;25j&RrLJJ(F?vF zRd|j3a{Q5Z^FzMg+U7SezGh$^DLlyw&I>dNJw9Z5c);=AA*}#a!B*k%;z(vxp=3}E zh%sU*p;1YDhcwP8CIh^4__8Eo)G^Yi(jX)OF-My;|IQ#e*Jbn^b=z{>G?)a$94RIC zni*5cVmINI_R+4(*FOpHI%(52AAf^WdwjUff#TwpdmaPQqElYAU7sca{_gJieJuE{ za*U^Q&#sS6=);?SA2$8`HWdb7w%qmYDEIf=p6jYEp2ysF5iYt9eV@-*$4g!P{Z)99 z4;|#KJJZ{~-_`{XPCGhLrXdBkb2-H?pUdKZ zx@u2R!=tE&#zBE%8hPmhe>EAiTX=prJmRQsuuw2_fhM;6wn_ZWXvE)czvP8;9JELL zsoh7M~y8WJdJ+m=?1)}TdcEvshM7%e&5sR_gjv)FPJTeOg+7wBQzsc4o3 znTdF{iXBt3l|uJB*MO7w}lcUGNGGmV5`!{C{`UTRqcjGoO#UBsj>O&81(r)))l49^Y6q}`+M($cTMzSEIpnRR>g9j zVrf`P+4bkLJkTCJ9ui`T8i>oQS#=74^}SPoF;W>BC!S=lpTAv<*bK+r;5n!tV6<*Y%P-A4%uvVty{sF9lYxV zXp6e%)vVN_Ete5F&u<6sY?kgSLGX3$Cax1~ugfN`-qTIMI=_?q+*DYUA1sdk*tauQ zpVbAPYhbrYef>Q7=kuRa_vriJ%^^!K;ni{P_APtv4iAzs?iRS`Vbj{D$Mx}4Hr>}| zE<1HhZ#hd9I&l?`pqwZ#F2@E{)GSw#2qaaa8A-^>n>XzGs*3AMJ~br@NxUcrd>^)W zDFGiN<`PZtOi^Opvg?KKCtLhi#emw>8-m3aH` zHGJ@x#ayB(Mr+D(ip-tRilF2G&=hc)r+C;lOj9Bi9*-kNBZ_D5=#Uygy~9kp!0K`% z&0=#orPP(xx>FmRs@LDx52vzC7w~&}oW_FmxRmTa$hh=*$hzX}Ytq=U}3!B%Qu7|vKx?I^*kK4mz z;$lArWV)OpWN$fVitEP2yw>tS&e(}_BrFGVE)Wf3(k!adeb(ytvsiHKoI>bmdYwZ- z7IAT)M9e{m#*4D#t8zePi4+@-rKK!N8WGGqFN0$|4n$w#Tcen^d^O%;H1J3n2z9;| zt%MITvUe1DQ9FE7P?dr4sA772L=#)aRmHY=M$X~IP;Ho5q>hSrfg>XO-k8=c z-xn2{5(&j?%dDL-G@*^ko>N+XQVo^>OJGikIF6c{d1^_{0fHq^gpaY|$P8DOs99DH zg$t)BTNPk2%QYz?I5M{~rgJRou2FdqPTutN$}(?yJy#Kw=yKvWI^I*j*-m&LJMfn& zPr6UoZK|+7&^3J)m~ak(oX0tNUz{1b%?rA}G1XRP=uLSJ7Pv@AWgSdcHg2x)=1sfy zhsJHR$75{K&(2w-6Ycr@YWhBN$G9i4nTNJaxD9&8=VB`PyI9V!x02 zdm&o0BDAC!YKBSXiOtRBr7C&jEWd4C8EA%**;}IBhMXgpc3QSr5HZFk>ytp;Ga`N3W1$sz}7HO`Ytdk3TjdQVg899_V@X1^^$@2 z)FeVs#0!&QAf}oaTfQnvst_nT#i=GmS~K=zgZPqN8Nhtbkxo&s49mcW`5{h(LZJTt z*?Y6^N|NKu^JnHB5qH6wnN?&_Bt@;HL`ki+Tk4)ZI%jm|%$dJ>Ui!>KKg{%LiBfAN zsj6bFxd6CJEbeCW5OIMEB!C1m0VIIDA6b=IcMA`94|6v+v+wH`c*=BH_%2RLKl%f>J0iVkcS{*q)XL9euv5p>h`uhA`{rxO4 z;8jYKHY6(>Y_P!w8{9Ma@xNsgvD;vS4L)$lK!&39`fq|A>)Wkc$W@)4z_EC_yOWb4 zvT_FAoK52NBIQLsdF{BS%$+1o1w5f*PfMhOnRlcBk&g?1Ab#t@Y|D;GBkYK^eLsgqY0%8sqWY=#uTOF zn(0hfbg9>=iv=J|ioj8BIPjLdY}lJl$?lj7F+|i2Z!=;-P92^SdC<*EKno-dG&yn9 zv}A_JohV75k<9bO67xt<8JyjBTc@s4ZnPRtGkfFb<8fN%%ANlJaBV%db2{-*om?GyBh>Q`^WHajUwFv#<=oN$(Sg|QZIqcFKQ6P6_kAwh_x5e@{&61R z(wp#*>UFOgZ9I9emoiX+Abri43`8n|43WLQUdx1DF2x67bHLns=Z4Uep6Hio_mcF*e%9%P1`e$20^<_wv06mSf3`@rQAy*h|_6gk&Ss<)2NV52@_mQR)*1@8LWfcaHNMytARv&62gj z1{-W}vv^3GwhcDe;O4M72sjPZa6+Fyq!7CF1S@@3rbBi-2-yb(Q~}FIvW!bFhkl)Y zb%!KQR>3f$!8j{B#guUYW*tX)Nhjb%pv%t0l<%tYhtKx;^G`lvzl?y;Wg$0-Erf9q z*(t^(BEM=9e|LDmFPAMx5vHZ{2W8+#9ziSSZO2wD*&9u5mEK8t2*v7ICl=IcScO4r`Noo@j4Wa^=sKs^96l6BH-2$ z=$MAcZWN{{O_zF6aExWhK+9MPerL4JUv7>0t!Gc!Ehl{gJdx6ZZO=q4m?8YTBtAcS z#XruD_}Ud4PpJ%k7>w@+*eaY_6B?AgQH6IM*%DGj=3PhY9Zf5=IUylZgaXYO6^P}S zmtDs}n~?16PR69Vp%!DJ5lMo^5=$NVXbJlzErYOm476^{+Ln|-LV*tQDk(#&&Qa6Q zm_b?KrpSuvQdrC8TeFSFwdCG^Ui*<;$=sZb^*Pxr?|}GFB6nA9=Uo~GGdp3^Jogi; z0QbX#pPHLz?%@i3d}Td4Zhlf<7jJXji|3wCRw{!2_%G zO*w}yvv=fHb$Nq>H-xHIe#=%+_KFds0G8pPTd-;48YoPVq>RFZ94o$~`zrkC$w&NTYl}Z&i~U7QZfabVSSb=q zaG}YK9y-C{(Mp^zzAg_rG|+A<`kNeMzA zn^UVJD5WZr4NIA7G~u9La@fu&%-9=mVeZtPC_MI2&!BVyi`;S4)$CYbkC#KF=`wYj z@eq3LKo?Af&Xh)A);4q^C=oJT)!ko_qBw?g(%-kar~9BBysLENdEwIYX!zG(d+es^ zrj75ZKEBake!Di@1Wuo{T>twQwdXv#+?&K>T3FYg*Sm6r`^bl3=ZElb_u8ipnXdS` zM}o(APq0>SZ~hw1_El`eWuH6yd_2}ZJP#kzy*?zYxC|ch;pL@~l?&3+*EMBdBj;HA zjv|9Rf(%+|AcGLLuYG=%N#@=&WhOUL21Evj0wnY)g0EwhL7{_uf+3a&QJBWaL<5%K zu<6JyG-l+~vEvkPqkc%RsR&37N9r7wN@{Ahy2OvS#{9?W6Mnk$gs8%o zM_==*TQVM%?8Gfbtrxm}wyUR0C zwt|8r;j0zzbpvjq8v!sgwbH!aK3?y95RI9G!=#A`| zl~l#bL0>uPH;IjdH{eaDNLQ#jyXhv~J#O(9E;8W{yG;M~TYgs5@_pdq`kW1V+`?}B z0^Ij}f$OwxV2s{i4R%b><8SPn>(*ADSEIW2?nU2vtBsdPU%!`yLX5E*lR_zilFVq5 z(oyotYFcafI12yi$sT{T^OWz#G2hJQ{8RISS6Z{bHRk(P@Ley+5^3w2=gWrwakStc z<~6w-GtrKT_S$+m1eRX2L(6}d?(^%0wS)X#$sh z?_yJQQ4#t*H(qB7#82J#6%6lX#`)Cd;|-s^uSWjz`FMKFZ}S%JGTrc^*Y7JC(|LM} zcc1QaH`lVW$0YY`Objk=)0r_@rJe|S@9yKS;it^5pML#{cJtkB=tWGK_ZxS$a%{*{ zZXORdHS-!}Ip>x4oQ25=jf2pq3I-V>Y6xNdn!}$epyC*Y4IG>1kOh3rrVdv>7DNX> znaI)~Os3p1c44oKjH4qt(OD*W$#aDlyyAPE^Ecx?{^Qe+`Sq=e`sfA!bM}g_a%Swp zcf$@(y=0`qmwCw-2Qy-QM2;ojTBM01Ce|@xNf|22>?~uT6XA#3Tl}s@$}SPA0wi#_ zT<~%+M~dOFOG|=8%oEv-q|k{|YD7h7n}k%6Wlp^CjJxnXsX&Dp9b+vhlY#`6+H2>f z4!Tfs)ETK2=HozHHv}^jCkS+wu>dbq%Yl0@ke*i^Yq+lHQ`V=)3A2hbFq*EIPObOg z`|&<+Oc`QU#j^Z%;#bZ>g^vd`be zhWaMQ>up$IkE4~t#%hE6hsXF#pLgK6{^xn0)3rrJMTV$dA0t{R8~B-&YQuVsJL}UR zk|(kaPT~b>2!bI)$|u8bnmIdV#jcbTKxZ8dLI#eS4rutxy}*C|_!IuLdd8&5eD?g1 ze@QbA>6nDTzHYG>C)8c$XKl?F-7A`q`K_X0ClrKv%g8ca=$L4rLJ8_j+lKFiiXTn) zAv;MSj7BtF;>B`-ix4IDj;<=LXG}85dolMQLPak;KDPuKc+oCc=0xGbPBp>mj>?26 zLOIkg);ZB6W9gYxmAsf8QZE(+jr~C+4q|i$Nh6EYv8X$OM#P5w1wJ@%eyX!iYAgE# z%v0km3IX!4|GSI%|7aY%vskAdy(*3i+=u^uSnk>T!@HypK3o&OnH~25cYXSMp>zJw zPNCm3R-2dpM0wM98{85ep%d|tv8lIv9leObid04WB*0#F?fkqj?=|im$5k;iGQFgM z4^g9YAp$;VADB^vNL5voG2j@lawZ9+E}?bJccxSRYU?}vU*m0bRPt#$;In$hK{j%z z*tf`z7kH@nMZM(n`4L}w#z&DKl_N&e3G+q6tX?3af>BU*Bv44Cvz8sp{B-vt_B^o2 z4O^oTS)6YdM>OICsS1>#K!GMF5{Byu>5Q4PG-Fl>wIvSQmfSh})r2U@Vp$VI1c9uM zcp{}lYeu8WL2ghpX0Kk-EtW)-ph}xFtpt_`FX|;(WJq-#4tZB*<&1eb-UpvKR|+8< zywsa;001BWNklc4N~ zcUiOP!>Q?J&Tp{6{ls}%n2#}Hw80~Q$dDl2|F1vya@-6;|IWHjS|7UWYs171bMJk& z{^g;x?)2Iu^!j*sCII8IWD*Ms0@ilS)LG!wn3zz6F<*M(v-*H<>N%Y|(>UT|nea)DjJ)8R?iH`fL{}7ioRsYlnMI}cjvsDq z@sUQPY4Ay;7>_wz%$cW#tUZ|uM$eF$Gue$!1*F%pQx_VXnRm=0EG^SzqoiQ3n$o0} ztl$Ae92-(vlRFToEpwP#rXI-CZO9|S?2v4U4CJUB)JtYKss&sj^5)*V*Jd_o3+k!w z+%>t?gLLpNk}^0;H+o@5o|9^M;(4EWZ~a>D*zSjj^U~5Ts&`zE^vw-Zk*V}5tK!%p4ti~5NF zsfpmuRuk9@1*wX>3LXEeo$;z}=`3NfWK=1;ME0y>w~R9yb}U#XQknH#6BB^R!)7ve!WcaWY`EJh(6rsUwD1q-P$1x!#>JS(lTXO!+O0m$YLjLQYVR!U3#|6 zAxhMLZ>^o;NUzh4B0MR^JP~D{l|y%y*3sI6AkI&<;!k&<@yE}0c_PB|`Ha6`c6@_j zArU3gjS6OFe7!v2%T#lSFtUOj#<&S#s7ROSOvlhJTV5KdjM&dYH&tGx1y4=*t;sIi zT|zZ8o@@~^d|NMQ+z1+R>DfUuMs4Yss6>5uo`aAC4!RB{qFo=M>@c2;Dx_=ZP}Ggm zGf|W_Wh}#7jjvKoV@~Oj=i4x4v8yN-T#NRk}%+J{% zyy=kbYPg;)dk_xZWyA@m1jpY%tZbQ)>~7`^=!}Z}FU5=b-y|Ps@rCv(K;W19m5Uk_U+c zks&fPyl&>?fe_?1@)f|mCsZj3Oi;=gDK+vuIWuW#Ju&gb_XzyXbdSH8Jmve75#M$T z{<%5it7Xffk5H8TSaKklU*vBvBSkP1hzu8EJC| zUFK;uqN+yB=LBK+XP=Z*he;6XTeaJh5#t~ixi_|CufIB;o->sw&65N~i7I7x>X za`>bAmwBpACm!1|{H}2hg!)r9$@3AenfwxI@+Tiw}q9;TY1I{a{*^Jf6 z+|>~Jh>r?qGxO~@q}SJeXI80t=ToUDO0t#+lv*%~1%*S%#>;NWQ7Mc`d}1v>t|t89 z_z6Fr>_asEW%-;hmJ5!^bU8AP1%mQ3eT19hSZ6P%BV z32w^gG-QM#8;jCNiv_nS!Z||F$K#`6$8cLjC43d%Mr6K zF}IE`2JnRX5C(lcXZPHc@so^!*CT#+jR)o6-PUQ(DVl#aP9EHRBy3~QH@G`EZ}$|h zPN8oqoniyvp=L90u)zjzfy-*6*Z+HCTS3C*2azIRLx9Lsuxw;YLxzf;TIGzsU$?bj zQpTQD(~Kr1l7mF}K>^=4`2Eo~zqkK{T}I5B8UNhWeABc9kC=|JQQ(Djd^Vr)SxV## zRT!}+1%){wbf`lxK`>N>D9$8AcFGCQmverBk)&YXVde{dZKV9hWXcp6t5PUfZs=5) zc}Eh^s5nMW8P}dTCQH8-7uGwlcwpAl%p7*2Qm2+io&BO>Ka?!%896w?jTj=HGf9*h z;jqnQ1o42Hqq#3BDC#An>?DVyW=R*IQ;22+cTDtkm)d<0lwTh&xmPv6@5RBpZUOt7 zqDk*+D6Z~&T(7q8zThGu-OCcE-i1Wuu5o*(xbI$UwVpbBQOfIW;ITQ>E2FudPCdNC z`WT5g`YyE}1EZOrQz(B|FziDA^nFJxE)z2sSKOTZt+dd{2g&NH?5m<=e%{qIoggu=Oqq{d_=D*l`vN7IvM4Zw4q=fK%Qm4>;6YhtqZ_htq69+f z`Z*)e1)(D`U)B^sS$bgR;AHkD71Ry27*<3k)~CR>8aT4dtFEOLNCLs24o+J*p~+0P zC$!awujeo6q?a`4nL1bOq$jnGCxf#Z^bR42yW`fKVqZT$+u*A3HI|jt5ShI}uI7>B zUCF67*x<2Y^-L(-TPN=}AbL`XET>qWFJEg0aUL8YTkahfH*}E5D`P=X1l$vCPIyi{ zD=NlCWGu#$Z2WjU;djSVzGox8U9|kS@;P7RhTSAQ^$}eW`BdQ3!$XdmB`F460wR%0 zoss6jAzeAA{UMR!WEEVDQOZm;P>m|StZTk?Lqow%PW)tdn_nN5Y&8v|s-n(DPW_#? z0?TYz2sC2UsfDP-fd#jhfG|uT#lRwE7HvnU3YOl{Wv5KWldUP1jW*I#i2{v6W5%p) z=>XF}vP@R(=}B`YcO9eYluqGbxx}4b_TcO}*gzDv(tMUdhe-xbq4n4A(?0J(Ie2H& z-LCTa3*Ojl;jV#evu56-34R}N6&=A1F2_~%7~lOm@0JpA+qiGf)~WO)(Uv z3a-l9dsRl~i&E%6G+dN^ys3-79}qt+7xOmu_ib3t@B4arS=#*Sz2iA7DD&0(90q;4eCx63##duu_w0Ljvtg2KYsd*kEdJY<&wXj zAMmeT&5O?1lM&CP;)Q1ZHXri!yv4F3RYWu*289SClwx2#4L}$iRX0!zq~PR`nR;SR z3OodUl^YVyZc6-QYm46>Z?W69j3y)ME>owT9K}MQwvN_}CMt`Z$m*1U=ZvUgW+WVm z1uep1+t7+IDo4zgHBEMQwBi|K$PLS)Z*M`#g3M9ZvhYl&k>t?H8e4ug3IZ_{%&eu+ zjIK)R&iWX3BL8!GZ2Q;mYsSxmaPZb0yT`g|*kFSVHn`7NRR_4e+a_;=4X%Z?1KG`d zd%tkAQ)98&k6jU~c{@aYuuGg->#6z8oh}OIhOWfR&8bEcN(Hlowwb8}_D5p^U~S@~ zApG9$Q+_hpWd!{Di&y-8v*2sZjAOwMeM;lb&(aaUu!ebRQ5VV>adn)80#Te&1BK~v z$|G)=_s)K>f?Q;pn2BxTNhn#iiRbN-Dm$N)6~D7J<)dU2v82|5qpqO{WgopunfXu` zx6B<2Gl~#!192JHG!2u08O+<7Wz)d8qH$xihw(G%Z?bJ%to6tqmMsAUj7r-cD(6G=~O!AJvT@9+QB<}QhFWZzU~yR|9Sko z7wKocTa)i4u2KYi7H@OX2E2C4aTj>kQxm`NUavOaR(2LZ@sRqeqXrF=izJ=swYP9-eI}b=kT&k_x&{h z=h5i{$LUe8z5ce>Ij;-cFCd=ZU>zbSG$0qHqrL4IJrw8tvefJKxupiUAu6cLv6Cdj z2c3ZsObizT199#5Bc?=is@6y%bZQi%k`g6mN1K|R5O`MZW1=kcoG~qbFq-hk(~k(F z$fwPWU(OGBl{zex>=fH*DERroA-`;n_#$SqM5bP%+H39w7lK2HQ#cfEAbnb?BKQ!^ z>xsw=HKXb>6C!am=2!KSgD&w=4E*`dQ+_Q$RA*Vji)O(%1cDkJ!o04j&8SsbxZ%U^ ziYjhK&Kc7_(s`6SzR4{)Ms~bnUUwV@=UEiC$Ih~DFoQDpQN&lvhJ|+|Dab(QP7uL! zFJ>;%601Fa-emqHBt97_Wg6k0SXqLzSr+}c99yE*;P>IoE6kHq@151dIC-mag-d;4&Pvb2=Su{V;ulbvPouHlTW+n%VPq2rfQ| zU_;N1IYh=R;}TJUtj;n(p~_BC5V}l}I(A~kUb%%A@U(9Rzb#+zZMS4u2GB@l+NXdHjR`1~Dg{pAL)1|GxV{?t=R^fu zi~v+g7{w87fUgf{6u_VCe8l&|gwi{fRp#6J2(^MyEXkIrv#}JXc4L_gq7qm|FpY#^ z3Lbcp-V6r&1>%ByT-ulbQW z|7Em$4*9A%LJda6h-n-#OU7r1ulS;!F^d5oRYR0YKpe?Jz!8)fw6C)p z+P1ofUWvg52fuH%NiT|1xDu+0BWuXroS*JL<)_6Cr5i_8;ALCWHpa(g#0f0indQX7 zGc`uWQIkR5NJ!pC%Pa(1H(s?ZP0o}tQfSeOkkj!rRBVM2-gbRtITjq|mV?x5>zRP% zUUtYOU^rdQ6xE29#J7t>)P%h_B2Py&rD02FP)RtA2g=*==p4NB(h<)iXLyK%^|siY ztlcio${xJ04axEK`$oK%HrzBGYmJ9v4|a$yoZs5lPJGC?PzQ^PPkZmX1M|MycNZz} zcfCfguD8;Idx&=Kq3$cLQp#`{E+tk1@+#|O6%7*a?V_ISM_10010tc1fDU?gLHhSb zDty!mBT>qtAQVbtEz8c>3CbUjp71Bt78(=(Jst4rvVmn_QjICLCLFabU(SyB<#NtJ zG?8OkQ4W;Fgv0p@etojV zU+g|%x9M1p0^f8s%`&kUrznAiWsXER6gbL8#!%7T!R+%QF$9x9>9Jw3Ir?c@8lm+N?R4&GJpp|NtUFN_ayA=zMq4K{cPI2JzV!#YH~ zX)N=^Ma2?k%Lh3uSW-bS|9P!6IPTIQV>%F z35fSKX1ZeX3{aR-X#g`sy#I&ZF~S|C7d7v10C1-(oywsiqUMYc{&4##-))^-WWMr- zqpoAmN9=@(MQAw8&b)JuQlbe4E|dnry(jQ-Fb^abW?ka2ODqRRGnlgMI_BQ-q$=2v zK$AN>C}NqqO+!>s5w|`)(;?+dYrS(?mIYre=6q!>N7b0v2DZy7+GOb3wW&BHb$j^_Cc-gk(Qqee~Frn%c#Ari*02R!EjH(brAc`WS6;~(W zxX!ZA$_NN?$j&&f*)t#;k;K!G_;_!Z?}ZWW!Z+p|)N|CK7zdW+OIyW%0-X6E= z;9bZQb46otWryR&jmteVxL3esJ#fz3+~zj>%)RbNBWjlwpm(LbFcM#XnGp`>E&XZN}rc4|>KFRFyEWWUc~t zy@LcaIhF=^V@@;BJ9*Nb2;0|2|oD>Gpa6rZJ;HWz)eM+WC9)baiuE{ur zpnb&AAvlObtKjO0Lhc%#?d|OBCH^g^_2fk^0j5v;74H7?_5!&E=;vuA`T?qrB z$h+)CSKpNo`kJlb8I>Uv8eMP^YEke6$(WFt2B91YA6rC$gCg^igtv)N>pYdnA8$|i zjqQCtmXgE6Lw>QG@o6RO#0eh-<;&pw)8aXwFKRk3D8m+|XYf8pMTWgfFKy5t+$l~J z@3rn!2_mQ%;{D-~_(>XK@9P+OSb&9|bR}k?%S)b&1Ap|%_xY%C#GE4%ziQ{q1)hb# zj+BH(c!Be|Bo3`bfDj`?C3>IEZv8cyoH^`TYBMYZXbshp7Nx5fR0i8S6^&%(X4G}U z2_Q<&MjC477C~58BDT)cVjFYe^Z5aFp{NEzR!TRvLtyGgt{WCP_Xl*32=A>1?=I5Z z9{TChb?~++URN<{_n{w8M-bi*qtSXg)%)s``!E)Fh2w?u25j#7n7O>a82xE|uM1v( z&u~~vF+7_>sBhJG_v!v_6YG(gtK9Q-h(nHT;94~AHgMm@>ZaP`zG4o%k)Qh@v9hD@ zGA8$_zS22AP4+tXcbwI8T({LbNm#Ef=P0cun$oGV@vJELxE!;i5w%R~#$ir0Ib+_i zFUt2v+x+g`b7gr@xgX&fBZw#z)V%wPTB*ZBTuj4lsZc*ke; zl0!Ep5}B4I*_FnOgJir+9a)58xCTSN1^R4}#)X5_a%6@T5wcSzA(R!ft|qmK{n3a~ zfJN#!us-To76sz3y#6tcyZ$lzRNnn=&udFCLaZ>NLxg5P1qhPjrNqypj!7{@x?Du{W1 zrlf)FPVS5<1pd>`cle{x9#SuPWlNqn3tnP9Go=?)D2qaP*(IKL9hmg>iAC=yS?;AE z%nid?W@FYRx*}i*YOq~aWSlx>ilFRG#yE*Zy@3L?1^Elk+w%uo}p09y4ug81I|GntY z@D=|o!k7C77cAxUQlWj(3d^4NzRlVd0A#P1Ul`oe^{QJ=n zuOuU3!q_6=cx`l&8VQKz1i+aFqa>i6k^t zG%;`}9lO%E;dFN;mKp5r!pk}loQ)2vR>j}CuLSHUV;(<3hH$GZws-|Tg6hN$B{;X(oj-kAsEJ>m2ixx?F@SDfvG zKJ8HGRd()XE({4Dr(e8B<8pjhdEuKUII$IerOEZsQdzEx6@B(u^3^x3Z8w+ZBWM16 zH{9iTT}VoB!)zHA#@1C>k&E@TqfeINx9#FTRFXkIZyh3tlk6I|$}#*N@7>8b7+F(tC9 z^IbhDj+!H`v}K^S%yygji``xR!#GfdL>>jc{`QcU=0vR+yRj1kVnSoiVcXD}(*hbC zRLEWGB^p8?n^3!P&^0VQ5@OM(g{DMNRWz2ETT2MaP8hRXCSJ8hiX|ftWJ~10P;=Nv zj!)}Dx*&}DvP6k;`b^M4QR8yYkCI2{k!Hc$`EXEW?$>;SU|JG(+&Szv*q#RLFP~={N&2=C> zIn_EjAtZB912H3NB!-?~B@9tC4fN~b1!s0HPDp_)72k{!(`Lc{KH29l#!p#>1yqVR z4fTB1*Ya7Wj1i3m3m2Z(3y!R%Re%U4m}T5D5(1q&oeQ(Bqs@*6!7byd7t-LPumAuc z07*naR6my(n72!Ec6KKfjVJ1MK~h6P#N23ufC`#Hk|8E+Pq%qx!avRqXhXnaA6>HIR;pb{@}Me{>GshrV$;@BZJlsQD@p*AHOQy zc~<;khBt2=n|XaTtmx0-b$fa&VQ|LryQo zre}0Cv*UYSg+xRZ8zN?++RF@di85!VRmtww7C-fZEm6L?`5k^wx9B|cv-WGgZ5B*?izi`=FS>?*s$cTU?g;aWqN)fQPy^3S4t>I@thaj& zMxQ#a4xTengpx>520gyP1N4C{Q}kH>ZXN27L!fqJI$!W-+Y|n5cb{>Wc+ojJQrhK$ z?1q~XLtqk1#Neg19D1e}XuKD3CxI(SRGePYV3ArD8M-*a$f#w+oYAPF%N>WF(5O_Q zq+K*L7%2!UPRx!6#SLhC(fHA1i!Me!fAI}RX2e+b_hNk?Wim?d;643lpK?6y1e@2GdI2GkcGC4Q=*K(V`p6;WX_)J=kmasD|Xu3H=%NSK7 z3K!a@X6A_{nNA>O!3|0c$26XfQ+JtV$|Q|+L#k+WCn5w595xGT@7S)UNHV&VumBby zrA%_zF#AAzgn}wb+8$`H)GRBHw#&@TXDwO zx#zepfsO!K`!5BDXhYhyfQw)zn1BW8sq?cDB{B`L9h|4*G22qH9hKD7ylUq>Ct#u| zfs{H@N_-S5emvgh_a{4Shro;FoPWqOj-oS41>RNsb2sOgdB$PNltiXl^tyFv$U%{w zpd=6Vak7?$a$Ftl{hI;7$%rTsMSIZ$#2p>JC$`#`_s)DEV4ZCS<6}z(`@4&F$bO7Lv!7eRpZG_#?Yl=<5MiHsfL8bZP`JEGVZ3 z>8>|RZz9~eussiSa@|R@{mo3QH+4Ai@U|2KE=ac&k>lFMn|L-{9&jJsQ>-7#Uv*4w zl7!{0afRpd+^-G)9A_`8kW`=xq@2NwLX3$BTQTz8NyUz2#!`^l%+XOzBan&`GdPsY zf|~Co_@l7JZ|?6?j0a-SFo-Tl^pU`)udH zb9262w4~N}wm+fu%sh3dD3ch;O~=AA^8kxva7oG9-BLAy+hF(24U!J>wTgHD6(<8zTWku`^ZUYsVy~8^1;tb~@w52?j9)iqMmb^bx=Q-i}?x zK@MRRG-!h|>V%0o&slP$HGjSLg#UB;347UjZi!!ZN4!ck&#IDLjr{6pPBN%Q1+_bE zHj+SNnVfPTy$gbgV#C307N^NAb?Qh#$lj+=N;bqYKArMys#z@N?3M+iazxuE+#L;( zoQz~PNK!Zz!enQQuez4cUL4?2Nu^_wDeU|mfG1;AmTZ0e9i$jR+tImUr-Z>C$8&J2 z4&Frt<~JdSaQwUHT<_7s92=OER=5&-+uM+=yya=wLx;n0QT17f$hBDW-l-iQ&_a8H zcdz$2rZ46m1fkX(fe!^A!o0oewE7VG;v&3B3gIE8{yi2P+eUL-yw@a?)9+oRd3SHq z=HDUf$lVY*$$UyOWRE0gN?=+p- z+!eT3hznsrToNKEBOr=^WJXd(J;?NT>RFGH%(NJ3GQk8~ki@;1y?ds&S~Bx25$<}3 zlUZ5SRXx?y)!o%S`8{;kl696iaXj3^KmYt)Zg!cYw&xRH@=flUI=oX)2>}-E0@pxB z=#r7tX@TRMF~(q3wX`Ra(r%%1H`7+VP=NQkZh5me%Zi@)y?_=8+(Ie7rUv)gVmnUXH@rRja9dm}$fgtUVl(W; z?D*EEZSh_3_E<%`=oe>iQT^18U+EpEI3pD@mjb-0M)pF(er%XD9l-}CfaJ(xFuEWR zYut=ZGp%Q;wB!dG`K{Rv{$M)cRty}r3+^8-n5%H84Ucl>e%taOEtv=Jfo_op<@~n%nGm zJ@@UHFEiW=841d*Ub#D&(S^*y63HN20txiMQSNCi5wu1`$m6&oig~6@1Dy|8444~u z5n!oQm{b*Cw8uQo10T)ynGk7HOCg>*on;0Lb*K&Yn;oJkpBz5qD-t`+4!ga8^mJ=t z+v$nm7?O<}d;2uA87UnS6&A|{ea@iuIIHAYv+MQalIz8#0=#o~!pEPP*}B%`B2N8P z2O&@OXu0r{Zzz3HFQ!eLt;4$rm+i}RR#tWMcdrW1>m*&AnK^F`ez$8n_q?w`srBty ziZ^jmQ}Cj&&6-qBkC(q92l%Om=GWNoe(GI&!8GUFnuR&HFVq=jy;Ut4JYU(s+0Q=P zrYKi6q2AVKwZ+A7*_g|#FI3kwy;Glk#`^Yc>)xwe7dPGR^Ja7j-A=v+=mFF6b032W zLs3sun%S!=_OxQ6k=-~&-Eq&TIeqR)IbotCgdr$NA~G!afeJsK?eX);E+57nYEOK2 ze8^W~90WM%oG;p*`<|GK5GAl@5zS!YbYT=eS=Gdi@zCl~tsmXm_7v4icSBWBH9TjE zKx7>6d$k&EgpCeK6|u-PIYEqG5;#O6PePzwF8L?ByZpue9rn%n#(KWU&Ot8MUFV*i zNkzRg;Zd4%oDyAzSXHPfy(RjTNGfC*s6O8HWi65Ltoi5Im5cZ#ordKEbx z2e_k>i3kpKDrgAg!Lk03Ke@TjU){RPT~8cX$Nii+P7y(=EHTZ_-rf}InkNSjIqG|= zdb;ip*bM`Ymi&aJlK64O1eRtT+fYi3y!7gas*;fK%-MVv4V94gkFiCYXaK#x@7eEJUW0$TSKKk;*FEj1WpN(&i2mA)_P=M^JSlhPm(_i9gz@ z`JKIeZfi}~Wj^ia+>^vVxbv`Ud9-YqXJLo|q$=u`J^-iJs>{00vLU7?tKe-Y0Zd(0 z1WHr(5VSb;W6-pTKqmS?)<_>BeGFs=?OXo&&V+yV-feC<92_rr)b<>T&=Lq@L`&>c zHG9nrbK`N_mNpDALQuLs(dGeDMLkei2`zeor5i_{>9n+?5CjiS4|KWo7Hr!VX?t$% z?J%h#IVFrjW;+gX^qx1z`TH=I zXYqZ!=j)2M|=a1yTR}5zsCnn!1|7_<_Fv#jL$^)hhgAepI8h%DFlcSS4VP2tz6l6y0@|X z>6G?_mlgy;1CcQHdlLdh2u|=49i53L9Y~^NQGy6@zTo#}yZnoH-{D5@91JZF`hf$3 zr3j{mXhL&lCroL=ghe~>WEhZGBS4#a4%5Ie_HPK;aZ$1ea~qiF#2{l@Q3OLs4ogc6 zt_(pq?mPA>;pU`5bC2hYYNXGJWh^w*TOPSN+2NZs@ax4fy+l;P=)>uSo0mHNYXW&l z{QTVydH09!qJ4{W72Z1!@<28S_I5FHE)n3J@Oa_%7=*WHxVN|(ydin?EnW#uTd40J zR&T<$jltS>uT_n|&!cueHtXUpQi0y$)nYqSw^-q{>cWYD2ri{}+!$amIF&iOp<#DY zF{_L!2%ZfedO*+^aZv_$79rEAqvp(9nTDEZfv)cfG4aFcl#g%RCK%fwP*6s0Ydgb=Os|z zHR1MThXc?2r}ltjcXo4t;A^_#CNl!}wYaD`2u?x>s{HnyA5c|7*BdhlcyAnIxC>%_ zjio!D-wK`z@Xi*NZ#o34Nw}VjS0wat83>S{`P=V@`M+xU;En#f0={kr{B48u!ps$9 z6a+f&rmn9D&Sj7MqSqjDt@Z4-c!h9E|1+1B&65(OiQ{A>_tXS-o0|PNV@D#voa``k zL!nBBifqo1gys`=fUclgQv9?^`4PY$@3j4!m}%hdDP z(DEP;bV&$AVpRleBpY$ONF|=TUYuruoR2ISREXFZvy{IHL5O-%G^XyO)}$j6Px>4R zV}CcHPM}gTuNB&sU(^%+<=s2{AZ8vdGhe67+%r81Q^iRniI`XHN#KSCke=hTWMV)i zv}W|V&_SJusgYdh$ShJ{M9`$zx2&+lnOkO&1|&wzGT!&xnoQW&DK-oY9?4Z8XJ=qw zH^ZH3mnWY2`}v$@D1H7+$~~X!7eg@`9x!!MbhPidK0I8*j12^??gX zOD0U*30_1|f2$^u7nIG^+`@8)4jl0|p z$~VK3FVn!no#eTQq@;wnVWPNYs$|4aGG<*Gs7&b`Iy16^OTgSoF7zbYlrRILA_&Qg zn97l7j#7sQp^A`~13LunR5N@qhHOyRm^qeuCK}kC%~-he$&EyWa6lEBrbM$01;;BWFXj=ulP~>3SoQnbtKLEBcgJ4vADn23J}$l7nj? zQQA@Txu}iGDB_YRl+7+D=9U>W(9|`#8(_%X+1X|0(59lY=|dtUBRJe>Dq4l#%nx~z z2BfMHaU?s@ea&1skBDKE_J`3SB&TVOAKrO~kKTP3juzxviBaiN&)jIJu17Zb+%IEuRRdAI zY@f~x&#^w{D~j$6JH2>ri1e(!f9<$HH0Y^o^wDl#QLz0s;d%SmJ=gm@I&<#Ms!{RF z!0WIvn|5>a`>Vhvg?&3;zdPQ{TGEx+eX;eH2C8gKs)}hnVJ8L}5ds-cnVd?>Du#e- z>4b&|=H>UQLJWaWML@A`;3yyAP3DjGZ}Df%JG>tze4Xcfdhn3L!8ktqtvAcs;Ho<>dlkfDl^-eJ)%xLHT`CsQ;8hQ4K)5}nkv?xev; z8ZdzYq05;e85RQI^bV~%^OWdwVlbtyCP+4heqg7L>@+n#Byud*p1VX8rJ2oe6}~)r z!Z$giRYffoY7nHPVb|+0XZ&2*5T^mugrI?U?%rj#yNfOtl$cW|0m;X%pn^lq3zB>|6KGCV;`yM&yvWK;rGU85l)0_`v`A6jD?&z3icM83emdi2tSLA6OoHrVm3h*vt98@n~L-4HQ zt#$yP=Xh@_t|I&JZ9%njnmBM>&HQ<|%IwTpnc)l1x!o!L&NyA;Rq6l$L^j7%o;&t) z3V(kE;bd;SE`sKDoF`{D-_|(uA_*tY;<9)x4&o&kq%SjbbQYJf9~VJHPVDe%$N9>x z?DgY3X3tgOWWH{35mwEu&tml>bGvMq@yZ|oe&Xku2u8+GgaNE4IPArS-B2-&6KYig zCEGMuBH_3SsM3oURmCBr!vJCgQR-T#0t~7g4uQNJ*iAiuc&p~)JGb~*m|^pdPv-ae zHJPu}dDtfIFOFFz!$r|(48id}qgH|jms0EH;w96jQm$pR!RvQm%)VVT`X+@w8U)M= zeO^^decc%F>DbC)jO55xHjGrm+McY>;Lv18aSlVrR1^Q^?vMDx=?!F9^2M;^fg5um zrA!_Y9s)HbKwY}gDYQAUC>LXzJ4MZoWwLVx-j5n=wQ|Jkcd%NQS5&q9lWP>NzCQ zY6em290-lD%u6h{+?Y<7ijwoNR#J>EOzMb+!2RPnUn~cDt%y#!cNxfTh~zO4K5tY7 zA)^kxG^jXTKH?`?`QWENfo7My_ZX&``1QbpHgTvh1gBopZC?*g{F;;RU&NAL3F~xg ze7D$Qi;L}mocjN}mn*+u-X42>9Ruxe!*>2|ah13zxPy{iTG6qu8(f4WWs6Sp z7}yA4nP>ykDzH;enS_eQK!yP~qZ27{p_Hth1SOf_eUF-<1VRi*s0mV36py?oEtkwv z$4@7_{Nm<2{Pt`LUCWmTkNL)o`|5nL?76?_Sh|r%DrXR(w?yuZEZ||KWx3k$88d4x zr6=o{gYf|ed{tA+E_TDT4(ODh5qVUWmDGNE1a1BX9; z=Y9TUZwFhneA#szV)ViAK0`9HR#K4cB55Ea z3@Ov6jA_7d%$%h;hpA_&h6h21%#;cfSf&MgO=PdB@sw~g%$(>-6Kk3(@Mt;bo8tw` z7;%)!4OMW-Kpurv^ujSM)5FOk1dOTmeDwZL*}ZcYdvZjWRfx~waKTseBaS?yp&I4- z-yREnsQ~X;Qu3?f)y=*^FM>B|q5iJ$u}8;dYI#d@eYv>46qPM5!g)2gud}Vi7S|7} zxv*k4_#nIwV>h*M=}q7`*jGo_}{611e08LWgrNCpjvo&+>$ zNF*~RCNx^(bu7V#L)#~YA+zI=AI)a`!89Ad2*fiP@l*ccNWwU&r7pQX zb>Sejd{`_0{X0MA=V8Lv$A^5LmJ9>*YAnXSa7884F#^Mo$VM5zp<`Es+f~C}Y!D*L z-14OBIR@sj!d>Zyo*`!jDQyrO;dtmd_DmN>x~V~pQpbwAn{}$nQeiy&@HU04c(q;1T z5%-RtVB*vSl;LvE=?%f9Gk79$uJDAae(Q$t^B9%yLx6M9uJc6!-ghy|o6hl78}-ZV znqQZNWQDD`%$tQxic6ukm1eFlg97$#*8yee-0XvQo!}Iw0Itq{zA5weMd!nta-Yw_ z%f5%rIrTP-*Y^!qX*16g(R!}GHycGyz&tY{QEQ;7YId87sYZgA^H|R0l+h>*Ze({f z#1aIVlg$v%1XX5Lg$AV+7(8L#LpRW<@}u27{`FbFF80q=AId!O5mY74~~y{ zWF5;opiRINOvg<>%SoQ(NP4 zrIex-nr8NlwhMlLx8ct|c#j|Diusd6zM|uC5JGU;>@0Bzf>seSMK~oTs!)%THpY$# zcdCje)}YROXj!_kG@qc+JA}5xTa3GALFtKjvEMvpK&FKz}1Q-U$ zMim1Rg`gFOY2fquf;gML9$2xAuc8Ya8HGoGskZ>8F^#fw8k*E?#f`jIWR*y3rZP<9&MNENs( zw%B5e?>9;Xpy8vEtOR8@Hr(-=CIn&#XmS`j)Sy?T6URewx@}a$bSc?1&rTg9RR~0h zh-dl%I?1>vX5!qPRQzPJ$4_>4*p(&6^T!-m#n%@3P1o{CKj)DTNPs$2%*;_Uk_`;8 zWa?~m_ysseKLxnrq=c+0%f|k07x{(`CslW4^U<=CE%WoeDS!3u5BRacz2y^r6IvF! ziyQPdr^88FGJa8nWQqCEBNAz<$kKWmRrUznXeMZ--~u{(SO5SZ07*naREc@tGaq`A zMZ_T`Cn+R%I?pW4SmwllqpGYlP*ef~PM11vGz~j-1w%q}89NoB3Khqx=gXr*4hW=J zBPKMK5FCrjs;T>B#xS~*MN4MbGe6#chr56Lhx9`tND;_kKBpT74z0(4%AQssebW&y zBV=)5@&0q-dH??Or{B!5`rN|jXQkbFdYmp}K+gV+pZWhP@v1U+r+33n{pQlgcpU-3 zGeul3`uPR7bp4IZ)xMXTMaECx`=)_^IrhNMoOLs6cO5br7uxHM%Q<~*m#@Bgn}cU( z#g0%)yN;K0ug^Z}iSW>Ae7Cv$vYyw|?M+V3^Q<$zuz&Ez+Q9D#yf}=`NlO5yJU8(o z;XlS5fD|DRq0lNlQMu3nJ2A3TSJWCuik_2`(dCT0m72m(vV6FVYL$wa5wf%ErMI1j zK-SWDJNKn7YcC3SW5o|*3zdz}_}GW8)Z(4|ZsQz4ikWD}bePdrk%jim zhGYKe?oIydAN-h|l=$-C311E!%c!^~hBUAsBQ8W&+?7S@S){}el>Jy!4^A%-f^s8F z*oielX+Zw4PkiIBP)CN2q{5uQ!UmQkddrwOAt;hde?S)}MCiMg%HYPVMm*u3k*L&h zLYp9=3}J7Tv^0p?smq{{>eXv zAO4u(H(!ybLY0l(2S+?v9CJiunleMR=7GKfe4Adu)!>CGn$L@8)tQ~|)WHR>$D0d1 z|6X3GpCE7BLO2%DuJLx=-6r1LXLoh)Wg&%}{@%}iV13S)hqD3Rb;35!{~}lkBiKuQ z#up!1c$3z#Q>w$S@VwXe?b`wY8I6$0i9K2cbxA2yL36~4o1+Mg3zJYYtx8>8I#Qt@aaT66#X3C&m}^BOYnMV@<#z=OPd!f`pP;TaAf}5XOL8G_T{5 zF*!Vb&QXPG=(!~|cR&7^+0GvQ^6!z^jEM{6%)#P_xe2vb^y;{m!1Cqe)vN<=Vej@W zo{804u*DY7fvo`07H=|2!`m&zcZ)4v1bNIZ`O4uoCjb_l>=`j9S_$GNp=R1l*h8pA zFpOkIa;JA8Bc&z6C^1E(fPq7 zvd5I%EBE_>zZ>R!l3Tu6CX#2U>(cAZ6IB{YR!#$MHl7_aC5u?fyf*8;%NSf`sZwFa zmG%NbLdhh$taJV6Ex8U%a-@wF52}_A`X&E*|0Dk7)*agAG5@if^JwVFwUT0_&516T zwgQoeiF2G2t>@CmP9ifAQtnBfnTc|jiv7t134)vO)v)BA_jD3*6XqDlsi(^cEECYu z8A%nla$hl4s6fB$xiOuxQ%%UZFEy85Gx3^3H-6pD`C1Z{D?$7eb3j5UP2P1BY*}ZH z%L6Jxr6m!tu7h;Q;m_sH{s5NA}gU3l~*Smt1H%+h*t)fAS;Tedtr zR}J0^WtcXOaUG~m*9}+Qo9&|GU6RH8Lg%=mqhARn_(hAtw>ZJe4D!lRi(=VzHL};u zR$aI2xz1Q+?KbP4RrOS+>eT12;n==PVWG>M>pG6n_XVd^w;f!s?s+_G&CIK;+UQ*S zm_4ZmV@e{%$fT*6#hOYZYM^-_o0Z(TD5gqc%-nfKa%lzNqacT9jUAG`&~C~iEua8+?WOu@I`VyZRdQtZ278RFju3}nmWWH!kJbyMIoy&giYxV z*`SZeQ{!>bIIT9$FWZn}b1hYs64WvZiii-AwYb>&Z#c>3bt(+Y1%Hr@zx?ord_1|y z(USu{UmWsSg%l&bz+&j>ErSWFrKWJ{#@sSl6cMHNK<$}@bx0N1G2y*9VJ`+mgnoce z`#JZ6krL$Id8mn{4@7|w1Hr(}#|&uc&!{c^EHYyRCSf0~kPuyFy93+RT zF3Oi1^IEk~WJ^l~U*G>~xK$L##-aDMEf-|n({8tQe(Se?$n^I=qWk8M3c;!hmOb<> z2g^CVXEYQQ)K`=7I<08?GX1J;2JbcDbp{`sFVQyW+2XQzxjn~xZNgVOq+17ai1#GOB^W5QP z^y0WW*#!4e>cg0&QZKb;6^@D$C6+);Go262yAI5#Oqop@W=+G?9ql_BOT0VV;r+>s zn+^~Af&Xv5;O|n;rx-`#%&MAQ2Q*{qSQbo`jF44P&qT|m7n`gyM9&_`l_=h3>xs(@ z`)2qjBj->M0%OKb6mdsa)Wq`1ab+~rOI=$pLMt6V+o|~bWOt@@LrNJ8c6X;>rA}^NBJRc$&3w8%;vhRB6+44qVwkKp;Y#49 zs)!3GgkU){rmRz|Yo9>`Rj{16>4Eou_jl><>@obq6Pn44lm@ix$%~dJ^J7dmDWLw; zIo@Q%%LEy#pPz7D^@44AYK~1zU<)cna92c&u3%v`01ZtbnP22(HYC~>~mcMTYP2j|473e zc{``ian5~iZg5?ll5u#(@2WjM*k1HBDrl;<@ZQz50}J!kQ2t z^%mCWT8W()1}FmxG#Z&!k(t&sArf%ZGG<_Im}QETkziV`y|j-ruoA#1LL;SLTu?37 zATZ<>>oZGDNQm65cDRX>YFK*5v>*5|HvDX7pC;BkOauRZam3%WOFrup$2s9m#ViDB zO19p{!SPYr(V!@*0C^Nsai=u879GQ?^WRq$SvQbB8O(9R{DPr3DWd(NS}cT>u~Aux z$c$-2DPw~&j-OJcOdvxvx-9fb_;@S{s^n3nv9ruT#>8P#^DaC5&}uS?hb*ve z;74J?@9)3M{%p#;U-Gxd5BPuQ3;x~`Ps|7eCRIg+;6uU$Op3sgWM5}JLkT@`0`9sB z`NmDORn6|R@qFvkx@d6>NQ9_`l6qpXyaeduVY51m(DPmwsb$J%(&3@wFDAG7Z*RTJ zPICU?@BxofPai7OB2K2u11V)p1k;F**}Ua2;2{!1z|HX?Q`I$y(NP3Ob}aGkZo{Om zAi+HM{M~TOgPiFkl7L!_i5mgIi6i~C^f#}P@#Zdz2(=mhisV^$vC1A@_;f`D$D*7BOM(g6z4#e#2lQ^DK91lk9 zBmd?8F8}VJlgLWtT%-pmV2A@{13_h_dMXG#ANJ0jKmJqX{U0*? z=Z92zAXPK;Xby*m+*>~3(a?j=5O=a}2HS53)&bsm1*0omRbaP?t*i3laI+H&B~rfU z`JhVcU26rC_rjc^g1)ah>2$YM0h!G0$LGjVh4OCB!CUpyQy~@WC*Y zslqG>O;r~qObOJYkc}ZHET5iS$93DU6VQAUkQ~q@F4u7CG=wi+P-5v2aN00c=hezD=%(AYS#ftsD zBn)zt^>|#A-E{Xt6J_M|oi{csn{ej)^RQCry$D6+(MsEhAOw}M-9)K7w6T5-FIiNV zl0luCQ1uPJZjOl|^FQtVgnv1`$&=xTU$+M=2f>5VOJtFar5QtZOcjYrHdqclea^U+ z44CCyvS!)X-Py$~(_2O)GC_E!uGmGu6A#*szd4@sRqwQ+Yr6t|Ki{aDy0Q zQAtgSJI#a}8cL=wC|ywQFOK=DYe}I5kik#5J3emgmTJ4Q(GXV2G~XyiIy1JxPBPFA zR0zqHIuHEb?rm=V+keGDxIxw3Bkb4EE7f6#A3Wl#ymu!^ZEoxVT>NSuhw={AF@)W=3B|P=5CMu8TwTtg(BQ z%5&?lH-5gI;g>@(?yp8z<-GUny3FP0!Krz_ooT>{Blo<5K+p61FI3*V^bszP>oza1 z+x5K75GVo2xTcr>xlga_=6; zy`HNM=vqeK-HK`_t8AP-<S?SoeR(UX zs*VCfT-Xcys&Pt1^F>th&Kmx*L2-W6eKA%s{F{Ym6-Yiy^y7Jhx~GIx#$w;Ic-g!B z-(``%c#K|NAo?=#yoK!WJT+9W4wsvQ7rmD+em5(cc3Es!dp<9B{@Qsh!>_T~IkkIy zN=)U&?ewd{%PJy2eG-2vi*c3r>!b7RBInJZEiQqwTmQPR;`+ijYOruW>BlxsV_pAh zV>3)jKRMu}Nj76PL>!luA68OCt|h~zo|uHlw290@WFo>;l<1D9l9d`T61H~YvzFRA zRzb>m&J+a^WunS0ub6nD@MUurmg&Xl7%<7~H5E4|6}LTbBPowk=6>6ea?5*~`Ny|* z`2E>F`!eCn<0b#TJLdmt4|&iVo&u^3Q3JsoJeS}xL;@?JjgyV;lTj{bEVekoa z#7_ooHNG3`+i4rT;k7tpz*~-BYNy6u#!R6is1-pKwA3o%C0nHk87Bv$awiVLA}jM@ z;FmWl{`{RE@pG+t{P=+1*pi1aAR&?!mT6#_j2@6GkQLhO^l2#1Evzy|AC`ltAjDeYRC!x+EnFQ9kOJDCQ+Yq3&qz2`Ehn%w$FrBULO?{p3Wpp6n~d=dzJu zqGKjX@SM>xz7zLCwF}BVftgi!5VFF7CE8&iWkYdlQQoO*_UoD*iPU}Opj+}c(&MS) zoe=rS-afy#dy5}P&1bgYe_wpV-#k9z^XwdppjuN+m0+dzO>lH<3GSr<8;-3vzD}+E z5;n??PU`VQ{9KpbHjeXcSOpx2;9`Yt=&YG=VdM`At0?d!xCF3Z><@CW~IbS<}hdW zCQ~#j^W{Jn1Tr+iNx^v1wREB!Aaof9D>as@3r^)Wi4IwWL5vt0JY^b#cXp@TK$r~9 z&?sN$fiIQ|T2ZPLN>C{0_^}SAWy}IXWUQ^bV8eIy6CDqfR7mO&;KMHQ{<|O0{EI*1 zco<0S0nJR2dctt@HR1S>$IAtevg0PG_v6_rt}?(o=N35;+j%v3;Q;S!2H?Dmz+1l{ z`a1P+s-EL2RYzePFt6~|&!<;}vl8(a&(+mOsOElQEK@lbu4pcUjzSW?WNiDr7IYcTEgaLH} z!sugd`b1|p3pwS3x!bArrqso;?l-r}h@LLBIG=sxW9=O7YX+4_X&4XyFZ~S=O2#g% zLdA7pv(cnpgphkIRy=a$xJ~@1ZurZa6aHj2rSIX3`6IqzU@;N0C^17f^t8EzpI*_OZaa1wvC7q0|28yT)*0tY+9^^E!b{aoPxnhKn%9RD%TBL zyRyZrfWs&fGCJsMAL2ZVS*Vm*N-!qo1h;i&trBP|m{v7S5Gp`zDAd8+jV%NOMAvk~ zQeIPpIB>_uesNKSi7IsnC`t&W-9gHUW1KlovP31$yP@L!-CgbwNg~Ws=22d7WCMd` zx@pC4&u;RkI_2Hjgw`|v&(RV8;qZ{Z?K(G^Y3-lRs|I2aZj zi!mgjPJxLUjnqV~z=fodBYNflD(Fag4O+%Nr-X!1D5t}c8`H>cqs+3S8u>gYzFaQo z)QJ+&EJfVqSpzKNV-sBmeBXwwj=0cxrVYaFMdZg(+5L-OlJ`F%{OWIE$6>aM^@-|u z4v&ucJk5DfXJ&(|u0LK*K6#6miPP`f_Q_p@6}7J@JqjL96f4&|K&)!V3N6#U2;~O}G$Kqw zO-*DXffzHYW7w8`R0#|?P9HLc6q=)h=MpfLUUnJWP=iX8x{5R*GO^-(_c*O57JX0l zM3P9OH6Q2>?`g#}D1DvyI=3w6PHWDx&cp_O%9LM(oBXJrVw1$Ljt}_{PnP`MV$Ne5 z@J5&fA$leyK}>ORa*(w`=eLDsr|NKRqpndX%9UQkJ21tt=Un?7a|2a$m6aQV;8mmZ zAS-HS3GRZI;BN@!$yK@3EY2nKcyMkE#=qOS$zR^RO|31zI$H8YpIJ&KMlFB89LS!S zdjg3>t;jfwwx!L+Ac9d;I!hnJvBJ+GV@#!DzuDn%(Q=d%2V!&`+|i0#T5(%y_9TMC zBKJHQ5=--O{wa{jBh}O#0tzX!Uqx;=HPJGn6%U4vUkx2egb6j(P_nHS#x@)m&3h44 z3&Td%te$m9{M6S1bd?iv_B&;8Ws*8R_}~L(fAP;4o^;5)C&)Vu7M#AzOddQYKR)C^ zH)kG=y-vWD6b$wJ9dsX0do3GezH5Q_UDO*d!c#RhZ<%v_UU9gnoO+_qL(RPCGv^7X ztd9LUM)Yc)``2|0fp+{fL^RpG)*G=?j2 zfs<=Gq3FDBI6QUlt6GN@W#}pUFkbfezSdUCqPi(EvBGtDw$~Mx9hs{b!_9YpB*Bfr z#P<0-6EX^=h>ju+#VIa=9C@sS8_I>QH6>|l^}{HBYRPIwDBN1W=D*o z+UOYW#i2GavI&Y&#Y`kng+QYfwU(ylDZ|o@P7*x>(VUxc%FS4_UsW^`$(`|}ZF#s% z97m_Bgek`RD*SY|!%wICyqh9lEtdQ*PmcMIhX;I}GHny6nwrK9NmhFEVPq|VZJ9ZG z@#d}TSbym2`B!M1J_>k^R83?Q3vqCJYP0X$$FgB#1joft8JQ?!mQ0Y5swt<%a0DU& zMKBVI5e0^vc_6~itIS`$`z{~v-bDH(|7rPzFU?qr5(xAdZ5rs!FcE5Ma;R83v~5Q> z4EUI}L%^-flPF^!Ifp)HZp~)&4xh9=Ux%7SPVA7G)y96Pxf^PB5FSg*V_R^XThw)3 zi)(>e)HLoT!EB>tkRn9&kw@ zW$qTCpw;@P1j|J2A>GB)xz&8b`+xXvsDJ)3e*cSNbE+HQ1M$I^=z|A5?3OH#Tk57_ z(L{DzWs(w$DwV+dxlPnX>+tJepSKyj7sWH2tQT>>&YNRz_R{!jCi`{B+`TE!>A583 zFDQ1t2%}H(G*nJ@s9)1SU6;Vp^#+!)_x@~$!b)Yl_L%^j0%Lyu>{ z-65=Mol2u{^O3UY11sTMw~hXu<}`#Lfb5ii4&oeq($k`5HyFP{%DSp zsW7S#X+)VwMT|8;0@)z7Mw>E^;y{wjz65@t6K;ow{SXKu9GUTHKH@PwI#Fh+;+>>4 zP3FV8<_~m__rsKXZQ_4k-s7+5|37>0`ejLSUHARYiO9@*Z#}yDF)zFU3IwZxv z@9F98sf~r1ntI%uHzG1J&N=(+z2Nq;T&FaV-D>FfN?s_UXV!{u9lS4IL7QGPVW>1Q zXqre7O>rFpjY8oxPQBNj2Ak)G07KPpd_NT#jJCIGI>TJ42%R`dGdq32rRHN@GP9O{ zwet?Yed{_mClz;AbM7vdEOWW$i3+_rtDHE=2@6WpKxImwjgvl+QjbL4$nNVv5sj); zA%YEw6^C3!el|bh4w)l!YI6?iit7s3o5)U#cupLpjw3pH&%;NpFr2JlmJy}Ue?4)% zs+oie73ERa@r&h>c@QdB)H$P;`Pk>ZfVvYUATFgssH4gGIHKqOFVqfV&Pnau?3`cM zhWht@h&21i;a`&Wr^LN|(((xX#V^tON8C+`c~a^iqzFc-kh&Onc+5p!1ZTURET2j~ zKI6;1WIS_#ccK5!7bI)?B#VR3>frc!jPJxs)V2TsAOJ~3K~xuIPQU2*%+@TItRZ=Y zYs=45!(K0phkz&k-WidlC(qYgfA3zBkl0RGd|rN-&x6$jOEoQ);7$V*2~=n~d`qFvmFmX1!==kmbt;}?{pN5S5pzT` zQI%SSDhQP*;>F@%l@sgavq#XKq}U8ZiG-+k``{&0Vn z+LWI^nDbG;;4m7wsb~zOcNT+MrimaDF_d{u%=<*=zUj9sNmD?iSPV#nTu8mC>zUOx z5895Obt{%4xMg-kxS=!NuczFaG^iVEH%_u}(mE|*63AXeOfVx@rU`)w#(q_TLaLg3 z>z3QgC2Jhjfab>x*ST>uGkokd9fW5#b{{?%*2|D68Y;14wGwZh`F21C!38Dxk8 z6M?!`RAUhXQ3uPMn6t{6+;@mMQ6sxMQ+Df`cO){`QhbK208+=(V&MG>(dyvpTFAP0jP+NH>& z3L{#SK!e8x+LX2z=5oUORm~q>|1!U^ zcfcY&;_ucAjyk84K-5S!Wswqn%B(a)5JIfLm1W;E?>l-N2}MmbTcI*5`qx&(rh(m9b5jG?tD1ulh&YFC+*!7)`;3cH#VPMrGqlR2 zyyBpTuT{Iex4Vx<_?zPg{NJlNf46Qq$wIEC>8xyHT&r>}IWfN1r{`VJpy=>sRhdRQ0W~2E zi{id#Y6<-A^c{Zt#xC#Gf!nKleAGEdIH(a3Vk@*cvCN58RcMioL@Wz!-?8Xh)VN+Ol7SySB-DXeMP$+8A3Y*He84Z3clpqkv=W$@6ibmP;6gAb zJ>i-^h1Yyri!Vi3MV=$$@l4-;J#bmC(&H$a=Qo8H8Skfg{TIQ@Zmxe(Tt|^0Ui& zH9r6Od7e-Ftm9M;%}>6Hw>`KUD>tY5mIdw>U@qvow8FM3JsFVgh?~8GHBQh}9is5yqib*KUwycCuJntr=)CndbQdben1}U@X zGxxmZ#4?o$yIyfKI=fBeMwl}5fV#8pGDp_(KstiKyK#qIjhMnhTksVh)Xul}-{F1P z=kBuQKb+j*Ptq}uT&N^6iILhIqy)64TBJur$YMjVCd9-*E7h&D6>Qej5Y(LpZjMR$ zUIyH)%!fWN<*o$b+vXIUzWtfW4`XmOP)BPrtthQVDyfLQaW5~Kk@#P4eTDDsU#ChP zKU*B}akr+Gh*-c?Sh};cp4JUhK}~>$q_FH;7S`iocsEx}Ah?&_HD!o=3{8Q#IFF>G z5$7FkxZj?z(uA6@Q!Cf%h8>4pjU0qXg>xv02Pz!9Vp%~mct(>msg#Mr#Nm3?uqO?7 zv-69^l9nReBc3sp%lq#E({T>R5p-0XAYKA`9|l@vv&X2Heo+r)o=u<{D!LLHuKQg+ zm?m!h!T&=2-S4ry`;b+W*p0i)n?QB15rgG19Qq00Pd7eq_wxxr z48rgctrP-^LZg)SAsvJ`T!8FYp9vyV3Y7?TtY|_-BY_}+;6}u-oJ){4_?eBKx*4!s zdX_{^5155*=mg6IcWMtzLtq+(DSqyN zl`B<-)?wLqEOMqF7^;;tsl!OtP~VBQp)< z>$+hUD#$C=R{HObyN*QZflN5D4(tf*q|9!tnZyYXyN+M1T9zINQu;&@uqR4To(6b6 zl;*?-ahUT{z4adh>lhW#!CtA7K=Ph%uUdZPo8LtKw?Dx9KzMXala(;3!Hs(X;Cvf9AMsZGE~A z@7d<;b>sfOY@8m}hRWPC{{8382KYSR_aeMb*Yc(#jMWIIQ~^Q>?s`c@1JFUus8Om| zF^Lt88bK&Q9h8Hvm0)l*LvXhZ1y2T3ZqFGpgBWlTddrwWL}@}`M~b56jw-c}o_0>> zi3P?yWfs|K63e{?+O|2zJK52fR%QkqyZ$zcc;hJCL{f`ZEM8H*annBW@4DasM^>^(c) z!sP&6DkjN&5Sba~fD4#6moTp`!gjL$BKqd(55~&P$YL9=)+=%p=4s7zx#kBquJc=a z@9<8D{BpVA;cCe$WjY0mk(7;-+|gR0GyBlbHwv39Q_ISFJZQ0F7%OCEMRZ03P9RBU zWx^^Y)?~Uqvr9!))f}!?SWs$8#cn4kJ1*=1J0YOrthz$eJxPhYRiNpe zYpzT~!~MSH!+ycioT$}lKjTwCx3WU&L*Jn2hK8v_U*u-qM9NyRV(B3W(T2YT4z%YV z_;tSYo4?QM``@K|bVSv4Ow$C{Kz+DCKKU3HM?6?B_;}rsMJcWyzNr8|3774cE@d5# z>*IB^FnX>E-WN5%JCDn#npb!}JnqnObs)LITLT}1&#V373RiejF`o0&Rs{_cyw7MB z>X->)M2$?Uru4sw5~WDUL!lEE8m3`B^qCEGL=7dV8wF}cRY?&+bD=6m4`@)Pl`z$c zT7)2uh|{K?g*$UIR=K6OR4R_K=KZGOeUv?fS}Rp7AT>$z#7+2!#eX&_@Hs zti5wsnKQS)XSImM_sg*;l2E-k* z;p8)wnC*U}K}}>-iyyy9&d`ft?$jpK3e&2g2{koN)D|J(Sy-8IoO)K0SxH5gArRTq z$h(t<8ycAbsL_dY)VD19OqYbJ+T~!n$8IooO^It`P2y4L$(8XXcKOEj1Ex{===dT3 z^_RE#e_Lm%fgJ)8gmtxLtnP+-U_3R5jsaa6KcfV>?s85%WvJS*83@dWK0PV&_Acdp z$~#?7uY;}NZ3vcMBw;+V=LLqqwS<-}#>&@xB~<**{#W?5=^l4iN8IV=9J|v?jn$DJ zVVyGTF45;q)>4}a;wX_-HV!?}X{PbAHj+D{l)g;~L;=UhDYG_b<%v$9RbgqF8})>n zGU48G0YQj3ds_M+Lxu@(V=`kZft)%HG4AJ{hpD5B#b#m0js4!)aVPEu9$ClTe!)6M zf`?1HkROLlfHzd&bWlwZKs6u~fh>0)XvIZHM%@qXjYvFG8!@4q4w7$5$( z!E3ZkHsiC^ugix0@ZuNxxls*Y)fjKxW1sr0+f#no9=p}kc-dGzJ^?*;*j#X7ZwSth z&Fj$D{5oTMZJ$}^W~IU~^t_p8%u26Uv_zwUCPo?)CR)tG@ggLG4?RkhejWEx^}~v2 ziVQ*z*sy14F8ycO$<`MoNi7t+S_8XP%`^y=3N9VyPMe&iC6?J(c?k$bA|X0AYUh?V zyi3C*29g_d>p9Ln%hW^4Ok>4+doy-CqV#BTqE#%#St{&B=bLrpOW}ZzmTUf~J>t)n zbLPpZq~ZW@QF<>n45gmssE4BJxjn{|{yAq1Yy+b~G(%vQMaW^GbNbd^I`kge*uOQr zX5h4a20p#+$KJki<2bFp`Nfqx^l2b!sCF?2_SPK1;*%hc10g9fr@lwyg2Q8XajY29f(k<3U2 zy_A}s=FChow|1uFWnyJLsfK9~c0xsPrI!`cI`EDQv3DNCiU-|-2VKW;5IhMppo$$q zV5++uc9}cfnz>d$g}Nes*CZ@aAjoc2wG#~_>V1D zWzk&ndCJ;;6LD3+`yAnyeEmAZ;Y|7bbql<%@M>|{x_vrk`xgVJ$BH*8GN-vqK;u;}mf;g21DuJd_W<;hEs8q3Rw8>amVrhwmL+?eMGAiuEiiy@-M>q(A z#6XX6H}@Q-HC;~ZSYWTJnOvJNjf(ae&ugmA=^{Lso-lLed+hQ-^)7ePn*ZbE4nLWn zaGZs{X{Z}zr_UIfcBo{kQD}Ff7b+@_MK8gztvZk+8>8?N?@19)*%Dd_A#7|WHo@8U z>s~s!&$JZS<|#R+sU8QaT&h>|T3ASjwjJNrir={YWxlrCuxyunv{=vzq^R^(>@rr? zvCf$lMsI?uP!Z?_dU3kc(14INkfdvs!JS^nI~syM$X2>15y?zfq{t2ql5vIHka^_car1{Z*NBrSGXMWVttet9BV@pH2 zgfAZS}Dh@VM%Yd@`=~ zkk1xZYw!xsk8$nj@MQ_&3@@T519h+lVyLJ>V4@X`2BIsPOAnnV11Uat8Awu;`YsZv zbBcl{?xdWGN~SVASe4I^T5{r~rxznMT2{8+Mv7(8}F0c~= zwJMF5>p4m-M`=wqry+1FPPnF1L`!wT2FnH&VLmJUUEeq5>tVvm;XfSSjzmP-| zcGy>8ughdHmazn>GPcp3W4DZ-`8?z2Q^DUL3S(}#oq7mvTb|_nX=>ezSfZS--uWnX zzo`bErGBbI7oA=MaozIOl=;s7b$C zD~fDO&n<1Z5hkoXvmn!EV`V~Xj;73xDpL>4!i?iKal2j72E{@IFK!HBFa~*AL-SLd z{(ebDY*}G!{cJO*IOIT9EkSafxMrE}oWPf_?UVoAzeaDqi+y~AT42)dfh(#V?cI-w zcOJrF&x4~m56wu^hL{ScJDUU#20Udmj4MxXDC zw9eiJIKF9azZkFYeekOBqP}cj1Z=$SwyBk$*TuXgcpcP3UuU?FL0AdU#1aBjK?yF@ z8mU4gst{%HJ#!(r6Fh_XK-klw;XVXOqB>B|*!-K}JRuB5+?K(-^c6X1sMyg^OvQr^ z^vzQFYg6XFI47y6%RN1gQhdO6tD0*GrV@%M2E_!sONo2F>bQtqz!S)&NlrC5r#Kcc4OUOX$RArTW zGvGGZ*%>~D6F{qKL5=12dWZm}Y+4$)afN{XfqSd8klHJrH)EV?=VMMx-j?5$_+^ZDT6Azbz}!+=7HKl8YhU6%{ek> zof0cc5HkDKgq!t*1E~;!IhkWMrWElPClUHgEyB&6eRef+d$r<^m&g27P9z#;>eMlj zSkXzwLXV4~M5cWM;$%6ku8kvH&d)_0W;A~ut9jWnNd`~1@#n)hJ?;HH1_IBYyf~Mf z-@0}WnPA1F-ElI;D)+pXogZAg&Nr`LXXcp?=l8hVbu6lgdkI_GZt%6UL_fT!P|WLH zl$@Ot>zRuInIO6)xnBZ2hIYp6PM7jEdM_wiP9f+#_a96R>b!qnlqSG>1-i~axcUn1|mNB^_iOu7~QZX%1) zv^{qBBjSf2!^xaq96#bG{gPFv*=<3^2T#G`LHIN)=S?c&Y~!&3-X^2*hJ2W(#sw6D z4Tc}+z!1M|@}EWkC^79*YF%_C2wODW*mmiL0nJAWvqZ~iy@pp)IIB*Z?gVUL^A9% z8q?3*uk$l~^;6hu{P{&Ec0yz)mY%wZktO5a)4Flw z#!1So%xGP34+J8+;xu(l6$6u4QR4(lhzps(QSMmKVh-0l^5tquGno>^nIwU}C%NI3 zKn1-)ZJB-R*=Z&;vwarpjz4~Imp|`UtOXja*|!n|cAg%5>S7B>?vcs-^YsEHp^!S z-EYKftWcR%i&41<1Yx*u7-U69VeGCLt~W46b!JOBCUKL5}1 z0Y^Eo6DI7GS|dqIzg6@w)L2gMLC49VJX?Zq1!!(V5*resP+>8!^8GT#g{n8c)|0SJ zbAKFN^Vv}5Qz(6qF0fW(>Tv61#)FA*r&;iRa(;Vqi|-#CVBYhKqemQd9c@%BR-_zA zspG_YR=KD1jA#IqVC8i?oRl-`K9vAY!=TVfq4Y}WG0a1%E14DADFB9LFH}iY)RjEU zg!DbL7}?$1<>RA!kYM7z{l$ixY z92KMLJNkQ%;Nwr==!l2&6(23vEDb7@b>&C~9r87AW5RSBR{`ERoGm)xmaR>w&bnr^oyH301fk!Kpa@R`s7^q8`*)XJJ`I zcKV)wRtNs!``39#C!8Fvd9Yq_5;M7uEFIdM>AH@t&8(x7A|SC$R4!E_!)e`ErBuc= zC@PA(U=(%LoQynBe#^cDo_s@X3_%D%OaEpzG$#k>taxmFtKQ;s_#_0=j7A7nb^f7SKb{uzIv9++lJYHXXZ!9^Fk*E5^`d>MxF!rko zu7T*8sjv9vy5`2Wzl;6PzeC@z3AZ0HdG{t=T4Ste7bjGAK4Eg_5iEOdFHgALx3p4G znPQ~UL-++rbjMHm+MTMJ!T|sPAOJ~3K~$r}ebEA(3q4T=JZs>$p%=ZZi+c>-B#!XY z9?afKdhlm}Cymo7wdKXfaytPs_E>z@82xIV>UUq0jNE1P_S5Urr=E@1UUQ@F_lDpM6%{V6K7LWwOEJlI#0|F+wACI^fgq7ul`1MhBI>1|M;&}y48(Jh zU`K{3#ixz19m8CUc*Q*wy>WVzzM-nq|T*qZfp#zCm~(xOQ5&ucawp4-?y&1@_R+{p&X3!T>i zLpI_mqqruragZAV2RZv%W8!59@E|Vg9O#{cwS!AZ4yZxsg_JVWy_SDA zy}=LbJ^Iy(zv+)T>4+65u!QjvBo^D4PxudcX0nex%$A;%J!Mx&|%trSQvQ6#Ypb0)H)v zf2!re22IRDcQ-*o>4nC1&s}p5ZDWW z9VwNwS{xyhOjx*cXgzb!)H$#xfrDwqwGh}BV`he~G960iunvv}A(%3AXalVKj+?D= zv)ZAb*8Dw7{`App{`O=AR`YIk9bH!>dLB(WHi8(OC(-%lpFZ$mM=gQgoo=XZ;)1Cc z0h&v)faj0LXYOZJ)C-+a$KJdl=yN%(D4t264Qt|}bNfi$9oNuE7c|Kf0Z|2U+CEd| z%#4Qb?p)`GI~6;Vz)#bHqqf7Wf|yyTv#`XnE5Th7L9|9R;9itbvlm)o=b5=?+ME#! zsAy5l99n?f1h=jznZ}`FH6$%Uh*YYDEi8@?LMJjPe0H9x$$V}9Cd+oo!){Fu0j;1@ z=Xll8WjKg6?==lKn+owvPJQuQ43TxpJY1|fYFqlKL*rv80k)Tcd!7Jqdn!~Fl|ePr zKW%d{{z1kIbyFCw_y(x1{wO1=C?J(HdIsvL1Z}0x)utXp3YRHC|yQTYEvpz zVh9^i1_(o+oNe9{K->^lvVey|xg3>16hS1QgAKBaVU&tO9lpF8^ixohN@5Ohsgf5J&rB#h5)FTk+xH5%&UE z)gZmnroN0zZZ5ksjE2d9XUxPz7+%w@{7mdUCFQN#clDuxJ#;;v*Zy_{l#xKj`7 zL9%QrqFA9Wj%uwLC#A%<>OH>X6aHg+hmWVmm(~qCsvPzm$ClX%74N9>fo2-%S$Qav z<7I7qGH>~~cXCxD15+kQ*=sUq^sYWVO_v0I+ceu!2?X_0`Bo{0?VBB7czqMWG!k+# zW_Q4YFiU~PJ8r1+tNDQ0Z~l<m!Ck$q~Ne@iR*+c*K~L9qYpo!?N0d1^^)7U zqfRxDSym-;p?Rnz56J=t+@C<#e?#})GXb6rO`Y)Rhsot1@9Kbeg)6*%cscjwc0hO0 z&#v$oTr_xB)uzt{k6)`-bMmU-0;Xe#aE>DDUV7+;Zwe5^2sr9O)JPqK=tap=&51gw z@i88pOZAI^9=AR7J_MKL&=WQk#37W#q0rN`C}RdU#EP3Kkh=fp0`t-9g;ddhVI z5)=!?VgYkpOXpz5s0At&qB$hPJrjenA9iR%?7(_hHO+$Ei}~Au{0~<9_~&OBl!?Kxoy%UFXOo|9=6Nj+fVn+t*^KHa7Bx+AAGva zOB@$IVZB?I>fKrHpS-8TqhOqSP7)u0xf%C{C&jv_&t;h$TJy zDBqaf;OBYHCuz-$3XOpi@0q7HK_h!1aH|R2tSahMuG@fC;6c0MlXlG_L`(&>Jl2*^ zyDXo$HC`~=!loy7qmDY<*PGaS`xSxiy<0mLgK$!!L3{GWB=wyxCGXB zA2Iv-yKw&mJz3zXqd&Y){`fBS!v*t4bAG;BbL>WR1xhfegi9;EZzDDV-rJBJyuuZ( z@Y&#Mf4IVDfvZ*Z#eq;N4`W40e5jocK~8ihP-O2_grFsm3vN_i=#-IC3Gkd5nO13} z?a67PeU!W(;f$2Cp<3s*p&Hr{D407U39=F0X@DAKR!`WgBGrbXIKZ4PCyo*3$yoPm zI?JrdWOZVwXoyTynMGw{nVC6tgaouW3yh^_=6%P)GFWCm1g(;7$~wR*J70PO=ibMg@(5P{B`@Eq`(E9v}59789kKOqt{w$%8e+K=&Kd*a7LkE3MIh0>~4PA%H3u3^RY^|p=NIVeABz+Va3#dMc7D>ppSZ_bkcuK|zGtg+Q@!8vM{p)zo3t z_w+gAF`yx0K<`3!Cl5&o)CnSh5ppIXR3Q>Wfb689H*_~!eSiUfW^>ji zd?iKJyO|SPqX@gA+*IM#WWqE=YJ-Ha65+&^JAGmvoz^nJhTcA2{8=wUX>NPYo&-e* zHW)?-5R7P<5R`W+=hs&a%|HHc$v^r5-OoNmbWJsV4?cMSxySOHeD{~cPwvB`6^AEl ze%ZDxMagQ!ET}<}(@O9c0h<7CTY~lq7vp(0s#hhl^0;ew9q@Tw&+9f0Zz7&WrSP&+^(H=kfQZJ+qC0vMdy-axGQ@!HZ^IR0f}{Kt#~N zjaI$Tw!|DZgvo;P$wQ%A4Lw@pnmQ8__-O!>7==72!YgCt0BGE(Lu3{LQ&nafnS@gD z$&_BR){Ip)R;i~=nU0Rmgsd5_AiA=vg~B=Uz(k8-x&|R>ro~uFU}2f1wRAZV9Hv#p zdvVIwb;3ln*bcanaE_y&2D(}(Z>oZ7z$_yv5k+XK34I9M_B9_qc)*{pTUKGp4ViJ! z3n@D%RnKDLG(Ch3rLja1MR254@G^yJmz_;OmkAifL#*^xK_0vUUs&1llJ&i9YjTkY z-sbQ8l7K>-6e2kYed?$TuDfunsrZfQyL>ZLJY28&yL`g3DqeM|4IG=W=zF@9a1{ul zcpMJv%VhBD3tD+5al%J z8UnmEnRluAU~i9~ERUIYJ)#x;ETGn-CN!$-0SC3R7bB4X0dh{P5FTacQ8HFitUwq9 zRkp|TdFRsyRok(0H&$RvucKZ3M*ZgCi z&cP1p=svnw;<83h4v8P%B|Msw`Xzt8o^v}JtDrzplf|J&h+68DKJ;>LKI>Z;_+5#t zT;U2=04~nIz8OcyD_r48c=LP3x8YEFoA~VeGG(iBH3n$q8cw@#ee=7Vsic)(^vx)% zKGv5vlly3oJ@{b_y;DLlgl3=-x)97D=$UTH;YXn06gm3wYI`y% zKpedBYG4v7rYh_OVO9l#7IW&L0x5A~Fc(;KeF^M5vl2i94PJuPpfo|4IqV43B1mxD zGASq4C<}!}&a{0A2r7YFRmH7PakH+OsxqmRm<{g-;TH{smg-7C&^QLmhV^anvx|{9 znQ?6JlfxtadNt=0$y8y78&Uy@WeLrw+=*$VrJg1U${E<{9XdI+5iz%oLAj|9<6eSf zeTFK{lQ6aiJ?{G>>;2+N9fLQV3~@y1_cB*1@Vg;?yS{l>}xnZ~)w> zA~OwShc+i#5=)KT&pjvE=y8H)0u?XoX-u(GKBeDFL2hk-trPt!F%U4Fr@ZnWzDgP^t&!g?2cI z`1#noGtwwwv-g$Lpbk_^5FM`E4WR@;45r#CByxb>6p=`sK~kYL&Z01@VyUz_G#c26 z%G8Sh!_rcz(hc5a3wPE)N~w74snTdfRcUZ0LvP&_r_$o_mfT2LX}!=eR|$FtH$kIu zZCdkz*4zq#9dUvV$9Nk8I0bh@HPD1e@IbcWm6qM`oQqH1WX4kAXNwble6rw|U8au} zlQ?B3XF_i2g42hguhEN$N~b~^cP}kg4(6E_=+o9}Gs>9D)}1s2z`&>M3`FFNp2JhG z!L4)Wr9PKtxL#l}BSIJhe+5$o4VXbnnJTS$FDk!&{Tg4J?l41Hv@Q3$jzbla3hUmP zTjsb=BmoV9YEblKL*Z2%8{PwYGrB(0n_;2^B9@)(j!Q28c1Hu$?0p z)ie8+%i!Q6m_?Zl@4aq>b>H$$nNl}X{>#H(a*{i4O?EhNSS&jZgHdTk<;wM-ystI8 z=Gc&A$dZ|x^PumUi{LpBtn{6}$TMu5kwT}1C{i~3O)@|r$c9$E5n*u<(UNGB$iv zwQG`02Z0wS4NEa9cpfY~hAW3rwD;|MipPtxf1kA~->bs&D8W6B?((#m(v3;#=S0tZ z-LXAB<9~l9cv_*LOWyu90y_zzSRQE6jXWV^VpN?`yU;W4r4@SGiEMK zx)yh%9R^Hopr}geJxoJin2VEh2}sSXn5iR(hBBW+a5pT2t?9XV(QJHDFDMk8f9_v) zA3rwGJ14XP<#RPTpe8IESXK%0n%dx<*@UlFGrrnPxmi{CYR#Q&JVNORbY0Kf6Nfp| z6ClJ=U1LZ%NO=~e;cZP6CzF!V=1lJf63IXs$J2A6uBxK3XtRdgArfe+iYmlnbetLUc=11IFE!f#y%UK7O@eDp!%hf9FVx~J z(1*bBdd)odv}`M+K0CG_&l}TwDG8rZ&ldmmUhR~Azp+P8DV6S|nY}I(Rhd-qYr4ZX zrq{{8|4#`2==;R~^0)Zv1iA4(`Th~IT#y~&;W7EneV8wKv|RAh)q=w@7nIA`+OVyZ zYUn8~c@rbZkXU-Yp?GcaDWh|EO!njoPlc+9d-ThMa=PNuriUEA7tQp{uGXa(llI@X998~WVAp}7~KwYV{$k~hQ zCQQ>&NstmChT(uGP_p~TMq+)N@+pI~d|3;!`92~=v_gv~omnPZi>uRwirv1V5uuKe zX{A)+R0_Ku2rguxcc;f$rIwRq+?R?~%DAUeS&@L$%FK-kLZg96h%^!jxu{{5gSgSU zvjkSXuuch2hPY7I6|+j%QD-+el^Hu!OihSGz$1UX+~13c zTx#p38atZ=hom?>8tI&obfk}TanGul@Z}l*} zD-th$#$}tMI73#73mY3qWzAi4{&IfEPZviV_c6P9y4-L&7M9v^YR0J*R&|IOISndr z4|LAdc8CUoJ7`c^E0v)drPMfPny5&d(JWC+2ndPfK^g54W~py>9^q|QEs8+j+oOq| zx!q4UR%(cXoo)E|=!kKq{QK9B5QTebL1&qjtRX44Mqx(f?yTc>-;+I9F(xpGZ~~l+ zmBA~;wNYBXed}vq%@jGGube-xf$-6Uagdn5ElF`vez2_Mx$@CG^VfdN2S58eR{!V! zMmjk`{{FWt{=*OPGSEGIL>V`faRr}$M*jLKem3yClM{Yl3umHX|3RF`sTlS5u7tZj zE}g-<`I3CGc*as``u&WTLuuZ8 zoI5}7&St;9XbJm^7Gc*FgqJ0N??b%E{=Bw*-_n;_hVPD>Z3{Vd30jpZxrrx;LsBQS z1wq{!H0xXRdnzuH>-KY0Bnq5s43*t?$lWA{FbOvpf>$ROr*mT_!XkAna%SGmI7}T{ zD=Og0F`TtWnzuG%SqrCDSl7bZC1%e&49{mG^eNO07sO26B(jmjkyI&G8B7^4&T5Im z&Vr75kP`Ep>H0)cW8u!R7>k^kc|z)ls*T%6VLv0V>2I%EzxTe<-;>x8jV{JM(P$qDJ5K?do{(06xBofY zBu7+9gfXyc2#+KaM3t;c3jS5IA8^#9nNUX|6-ituTTY*wQPiMT18NjF5(7u)g%4!w zq2QuHXY;0hX*Ig?BJ|ob@01yEnC2Xdau6E$&>5YKQ7pN#ap9~Q%UanqQH&8`t+3HV zB5?@xDs%=5Rb~?NMCy@LD&O*2-YD`2fbX=;Ezd4s{KF#rYZOB%N_c&MHwdP8AHY%92 zlETTb;^&9=5plj+pV9R_xATmCS=qQz7Y*@sxRnxjv}5j&nvWqkBf{e{a#9OxhbnO| zODWHd)Sf@Fv}I^dL}lp)1b9mDL^L{;2%5ESUe*pHu(yU&FtB zMf$g|;O~CMYI(}hpPo>L6>2N;mtVufCs0QIt(@|&wq#QRVK*6GaEIQ%*!ke`zI_44 z^*5ID=#?wT6mq7?CIdtnQFc)u6^TR8`w`w^bm0ne|JqpI>^OS-bPEk4A-96b-(; za2%Dw=&*F~(YWXE)5Al4(!rhN^aB2z{S^hr2ExtlTzcXAVL8HxG9Wi=j+g;R6Z zu2fIV3{uGyZQFK{jV5rV44udQFA|0A_Bga<;ThCcgsO(t5@L-#~ z=W0{8oMay+WKQ<8p{V+{pEwcgrXp@jFP{>@Hgi_Cn>lThfjQz8EsnZ}KVA|Ja>t=2 z7Lu5Y&^aVE#A{40xw28k=s5Gj<6791!dQ(_pw@ORs*qD6OJasF7iE@bVbdT3*#ngf zQ+60JRtRIMlwriIqQGHJ%(~1`&h&(}LEq@68#l~g(a$)@p}08{$PP(`(S>3YYUSaR z=gOEJ*UC|W4>({+;=e7=_=mF-J|C7K&V05&$y9g7HeZF)L_R`pzj&co4OB|gmVT!D zh1P|Mr0vhI;LGK*BJQf!UFK~!A*Sw7Th$;Ef+NL7w2a(O3qI%CussCeuH zPpxuN;B+W#Jmw=2=v2>(iU=X}Gr`+7eO3s~#4()a)#B;VtuaoEKjIF803&Zx?h&A_tMEj4$dxW+4AqG8$?CTR zP(`<1ZlxucAxB^7Br!7!#H*jtWta){qV$sJ5t2c2XQNR}l~NgiwF$!p&ZKaf3&o6V zw3(<#MspIfMzY^aqN_qzWBY3g*_2|HQJkR^Hk*NU%2W>(&BIPPN{OSa^axf3Nnq-f zv7j#WsvLDaN2wzOU-PvoXH{7a8Oaz&3hR#QPFye=2OEu5cL=Wpi69DMR4>_7cY z9E;z6&h6t{*k;4><#Ml>f&um#=Z}6S(o!w#Ce*{D}Vd%M_g=KeqUqC@!#xLd~f0+E!b+H zUr7S-QcV*>GKxEbJ}3>zlg5T@14R=r4%%$i)(XwPxqTrz;Q>OrWSyD{KEp8&v_cT1 zcobj>W(tdL&O9ldRpu!%Pd!yr#MiVwvR%K+g3f1T&ahpt+lvz^dDbYD}DB>0*&Kh%pD#BszxRpB= z+9B>(spJIib!z~9=-n306pdN3PK1MQ!O|-K-_ytZm*I>*nKR3Yk4hkOgM_N1A(+QJ zV6n=&(OG4ShVD}zU(MpQpQyjG?<19GHcz05UI;~aGhw06-zZt{r0Hc&lA3- zcwfKfJ3EGjG{SB8{25XUbDeWbgrCge_N@i-cRxoy`7!mse@SPK-kGs^_>_LE^kqbs zOYHF@^23M7dc~iXPx$A}Q@+9xOLVrcMf&}Yd|g-WCeFwC-p~6G7Z?BcYws?`+kC@c zje0!Wd3`PM3KN0niMRS(Fdg;tKi$OjVOStI&4~KusO^XE5H07t;K|-C?$aFX#4?#) zxHr=RAZ-RtWKukgnHEjZNt>CQ-dF;82;?l#Ge7r!(x_@va_y~%i1*IE+r*2fb;9+0 zdQB7Sn9LC-dAcxhZU)dm_V5{-YvOP=r&pzuky#cJu@-g$sg8hPnkep^*~pp0fHPKS z?NRVe6{}IHDbT*-lITUqDOho;hPseFg=(ikkxEI<=*BpXVO&j!Ya~r9`Wc65&Mh06 zQDb*%plCvl1X?yYMxPQ#x#t+=s0wNYSH)982rGn~wH0DbeYA`uQFPXmMELdUDgUs1 z%7ay5^u(RqhgCuz*oaclFgtH%+Gauht0{#TP4ewL5&P$i7yov@>^tcyCEV+2)w}N& z=loYq@>cLnPe{-*i$_rM;Ia>pG{EXb5QA_#88` z$)we@-Hh$W%f3ic9M58vjg_#MuxKa*;x_%gAyrt2a*z{8+Hs)Hfg7p9kenjmHH32N zUZZ51adUGjj)}$RxoxSnAZSu72`h~M;ouHG8Z&>t{EBYTQIhaz+|W6YqL?(V%oBV# zn{ziMX6B>`El-)jji<{sCuXcXD4|@k9FWo6!k>smFiIShGDi>;BAQ&?_69p72&1<` zWWTnnqCrx03A&h1bVbKoQL#nZS^}7yC{%>)ERbsmQeaaB=?#?I9g|4@y%lm7k5#+o z+v!l>%L;t&=uXcE4l$*14dI9>N;oDobW61%bD5b4Glzo|77L?Sgu+}ql*H)9 z8HJ5^YzARtg-tcqVvG_rIc!8F=$4&BLg_4#vY<0(hSFC-%`j7{grX)0qZ=EXbs1UK z0>HwYquep;dwLf-Q8FILrzmdWy(c-)qiP1pIm~?sz7X3X>SRf%L=otCP&EO}SZhUV z4zdBoTNZ0;{**5j_bP>I0f(oxjMN*Nl=o6pJALJ)Qv;nqxlgZ=EPxEL`I4mk1TPz zuAJ0?lUf;ZYEqI14OgaZ+`DdNS9ySFjKMWE(JF*OrpLTm@hCD=jr*fy$3ps*q{5LT zZso*6C1x&(d${&6qRlQrwx}=?#j2L@$g3_Cg;7EYbk+POyGE$Xz@{v@myMs#KIUIG zPk5+>d73j;Bl!rPs3eLT>du`mbGH*_vx?G#fl#QXoYaxWR#<9g?NG$XTi?YLCu4iH zoDXqnb8>-5BHE5;0*s4ko;T!may*H(Ca%pSLQRS*bn7sH?>phX8h_a(?%etT`d5F0 z92~Ow*WWPfL1y>xrvnU?fdREM`X`S_4<8`QQ+~5t@vF_iFi<^`! z`JN2KBPpMNg(k<2(|My834zK<6n!eXEvABQDP-Fv&@iEByL)>3!RNMN_t3RHxJ!B) zQz^IA$5f@XH&JA($|>$>tz>ahE0PxdjGQuahocli7w(3tlclu%O^lYPV|azFFjnTQ zeZydzm@BhTH%twsOcE$vCn>BOT*;!O){Iqc2Iwx$^cyx(8LeWaV%1Tz=9|}XC_N4ev`l-`V4&ZMSfNv()EUD8Ols*x;ly9#+W zW^agG3`Bm%_}2gPghD&$*R*jx^I%7;0sSbK;d%J!L2*XtC04JDT8!OjVuxb~P}X zuE}wV{DB(E%za*%rtRGBOEge`%!S-0B$1`j)gpl1d$ zH?=gYL%|pg*3~Eqoh!IdvNDP@_mSIY1AqDP$55TmH)lvc3z4AaSGR7;u!wUzTMI^DI@?OV){V=iiX#+^(|oxf7ZGxq#$u|1Q`C@!FWb z6&3m#YaB^Pop6+dpV0BMe9Y`8KO+C=$84UQGOnJoxbq=CRybKx$BHu`XJ^>g57EVv8;_Z*g59qqszrLUCzCT~w%%$GM zO?5NBbw>kbzoXMCMMbx`|E^G zMdj4V-lu$CVKRPxN8-(=ysk(XjR)Bs#O8U8>-k7*#m) z5+V~du^EkZsf-SzhIf}}C`;lYfj=W;*;SNGrjsThvxBOD5R~yYw^ouclrX7Y$;c?i zToVgX4)cP;+y@oaV@6Tiu~SvDz`9XFRUAq|t8a7z>=aYM?N!GN@hxsY*g; ziqgEt`WZvY{OkHD|Mlb%zuv4l(M-xmWRx`{=9M}`;Ze8eXj-pdedhY2h1_K`c$d!Q z$sVHTPLe2ey#||PAPVe5GY(VY-lFHQ&n!qJgEDS7sm`exr{*j%JXJIi!aYpp^Ve^C zb#F%IP`w5cCCxUYUB}fNRD+tV8t8eg%up7Zxs_)erVedRbl@~{k?n6a!5D$P^!`L3bXXNvWRwgiYw%xmD1YiG~?Vary~ zSU6@QvDWp@LWLhP-KC$g?F7Cb=kls}-}dKuEnRu1kaNc{B zEsD2uh-+SRlK_DzDy_IMN4-gy`#$BZ(O~ub_MU70T-b%3%I5h5?RjFSj@gRQX-vVP zt2Km15V9r~xhHETE6hX*J<1S)NR7_rIg~CPVRYwgD6DFwRL6Xvx-qC=l28)jN@tLy zhT^2=@aAijube_7Ud*DdYqV5DC^&=FNW9(fY9utIm{d-N4W&4n>a5&@N-HsAnq9YuWl)f>-bSC0ye0x-{;T!7gxP*FOz)cCHpkU_OnjORwOjyLh=-iY!q!m_9|1-ae7kR+NHOBS|JL7JRl^@=ss?kzW~{$qbhc8h6XGp{8-s`1CZ155>MTHw z229eh!Z=96oXpH(4s-fUZADClK;)$2VWfz8o0DuuWN>4s#<~VAb>e1=M02Dhqetn0 zalPUvx9`#Cj^B-6G31WwH40OQ;!W@pWoFLZ-0@-8ahwv~ioev3{jwIGlnp2DoRzp~ zvgixVV(ypw&x`Vk?ux#Y0$a_K-aFm6g){ei>LykYXhkg1nWvrAhA2aXgsKa`B zLSHLZqUe{?Q}pC1>&=GWZI=9MSaWKES|*E-ZMS~821@*{#OwN=eCG>1f#=S)UbKq8 z4DEOm1;n@SKJ1Rqt7v4Lm)4i9N>cp#`sMtuE%4r<%XxR4UguZ$n+(73-?t;|nnQh2 z@MhPcl;$zky4=sXOYa*(IqlEBT>2E#{K@{~m-*s-+hg$J+Gx(UfVudLTzuu_+qPpI zwZwIwH3FeXN1HXlk=CJ?Cc+>Rh|{j5+Et4aDiex$?fPmP96~k2nJ+z8x zf-Im071TyVMpAdckb3_4(PRGM@k2g0XVuR_h{J~PRuc!wxImto3EyEC>9YIvMZd=b z9}74|ToLVX46kdFJBOOMm3xj;<~9jZVpHL?)DSt5%Fq-LN2!bw*Jz-%y0x{adLEUY zwtL&N5CZ*doe^`eS}2W1Iaa}?L%qYrsanB6vADi-$1Ep~X*026QM3?+Xd-Mrs@3ox z6rpMc5v)WhS&%TIcNh#tlWhSgP9Re5WO1;}p}|=_BOfMyyf|X@^-~_?ggcb#Y~0%C z3)vFZ88db6YtMb@m`j+iW6>yDx$w9MPfEwxSV0Qv&zB#aTd&)(ybRghFG|j>?}W&S zdPBCgBe`G&76J>e+!NuaUC$2|$K)UUh|Qh5*cV?TWk7DtvDF!Qvq6iqu?=ii^belE z*_tmlXZ&V;!kWo&q zddDo?e9r8WZMFrQ18ncN9Pb}1#3+ab7wP#ad{EJ zQz$?t(Usxnh@2UO)U%+3ef-( zpQzYTu&T$tBv&5ifw>F+bH0bI2YxFnRt{2ZD~fCGWWr#*tHzy0$K7tmK}v{N6FG8< zB+hE($uRQNjExmsTLJtWSJ<>(i|UpEFg5g^i^A)WNaWNSGa74!bb|K6eNX(&rsLxe z?!c!XBA?tPpA2kH&X_IcU=>@hNkhfUNM{>(w1m?Q%VFf-S4%!$Z#XN4HO&3u(i#lw z^T5ORG2ZI}?`3A3uAS$5$Gh(@8&`D}Ubnc-yN-6eEioO(@Ahb3#?5abueWRUGI7~` z|4agL)#KN^*ZUUFbI)IOZr_&UvVT9Q$T=F)K7DDM=)`Y<(n-)Q_wyvxpdq_-bw37{-B33Bi;~YIHP(zobRb|Yz^fP#~9ZsIT@{PUBeWB$w*{9<^>XLCo^ zLTB;*NcfIuqc0z)#1B%>ot)`pQo)X5c!}_+8jrkkB88=dRY}raVSL@Wf94wS%hz<- zLz&Ob>LO%szIS4{7jR*oI*vQxrzP>XdW+k4?y~xekKiC9e|$jiPD+XK>=Y>lDHR_I zX}LxopE0aQJ{v}UKUV(a##4&|@6udjVmQ15@jCP9_qxEliJSPo$Nqxu@P0BuzpHqM zzBJxsT<4MXw#7xXE$j4^xI^ri)WKUP{UVMw6(#ZbPDJIoX}o&{yDuT7v?Hm-M^lr?6E_cjQ zCL;|AjD*@e6bjv~6?B4H_?e}YqDastu}@2sJybS2hdW)!_4n?iS|Z`^Iz|VpPEuh3 zs0mh-6`8Yn=E=C?|9Si;etEXyOoftXA@EX#`REKCjQZ}bCDV0k0HSml3x_Tz`mSe| zbL9Tx$VpkZYr{i%RTT3SM&MK?yPgo$A?`DAcC_l}Yo@icPDLoztT1q@C~AsV#iW85 z8R(L-FlCO?YYJf?4}?tIW7tjGES#>NUz4Nct1A95?6 zq`E_uML45yZ-h?|kNKi*_`_yN*$7$_LIO<)hHBiqPUT2@KGw`FRfI~FSbJ0xs|t@w z<%t3Cf+ce$_TokVCA{1rviv*$uYWA?a76ZI|}quh~>ADZ*yuH)9N zTg*QB2tB+FkC*7l8G82+FC#K+0^J@fGFJTT3_CmJ!RnOXk0Zaekw2L+YWUv0WfLH8 zRooPK*Tgr;*5AZUysdGw=H0~iFQ%k$hr&$v!JgGOlXHL*^E7Fjrd&iTqQIM&jmCa5 z$)!K*H8(iET+Zy~ci+8Isc0)<7)O zD^(OT$4sa~&@P)ncyXtA1#g9^$8qX3aUjM_qiA#lEM}WLh<`By)@El>3A9zhhC-#G zvhGw5luwAHyO+#S${gk}JfF~os-c8v2&tbT2%EB^n6oDFAPK)dJ>geR9`aQwSnBAs zqpyyOQM7V8+Zn>YD{*dX+nlM2(7U3NIq2XpIY|=Lgkc<^w)wGCDe8gPy5d#vvZGR} zYt#MN-5`cvQ`b#bwzpz1&YJ;NTXBa`0m}leF|%pLyi>9Y8JH#I2<1={ImLA=8s3T1 zJzs&^OwcQV(wRpyqna}k3Ynu-N(}|rC{A}4BGJH!bDl)D*Pfd*T1Bn!SM%E(xbS}s zkNHw6i=ktfP-2=06G1bc<-~`x8TWFglW1g2!Z39(PRGjAQaGuFRihn;g6WRtdfANS zrSsCnar5(!v^8q_@9uA=_Et1b6ftLkb614>qWrllKe%;_|L6{K|1Ptovw8RwnZ+t( zt7Ryyjs+hFSZ?s;k|(P({y41o&9LONS~#;dkNb|@N8fe48wK7T6b#Sb4SpHObH5?* zx-Xrp=%6pt?S9pRqi<`+9d>M{n|L;a=C8AV{^a5-UVlto&#PbXmY%`OHu^G>|63N{ z<>2`KXMNY}#CCl?hj{It6%n*mS!TX1_k@^xVUOYkQT*(uGy4R=C3Qou6nXTg4@I^vQ{7xvx!7%`&>15@Uf-3Q*ssC+6&CYW1bA9Z!>NkA=y89@j1lI z98RtRk|UuN50s8dF<}4(^EQ7p6@TrRszxE~)0QZm2uWLtYoIQub|eUNPBc>1_II^} zcU6^GyT%%YrD=$!s5`v~S(FZ8mJ+?BhJ*-+ut?2@b{#b7n; z2s{V&sva|Ace@#fs&s9x$yBK}f*C52=&xNF2BQuumYwpsI=_5+!tYL3Z0MNfIlX|` zlvz(6U6C2Ts$2GDa~9vb-Vxcmc9m3#W7+bO>H=QKSj?+wW+s^hN{3R-*ifi8Qq2)j zTpa7bNT?*tEWGA$T)kO@B)nN%$Q~jz*@H-XeA*88Xd3u*AFJXnR6N8?s>ObXvI2ep z03ZNKL_t(EOAo0b{GvIE&l$qZggHVliFtB*DXj<#M7Q-4*hnaDR;yt!Pr_RRVo;$F zqAfu;Ez|@-?uy!0xUN`QP({fOcn#0I ztcb&`Zn)p|e4G;VqqvuZpo8=lC96GoDS(8;uLv7_Kl zB2W9veQoPjG?9WVnFTVHgkv>D6GnwQYTWNfem1+!M|VHKesCA-9ewbKTnz3WP|8Re z4EIVYBUU%$lZV*jGrnGJ_;nii7uj$!Zo-m8Cc&*(1I}&xR&nS19q&egcM~^p6E74~ z0(KKGAHGLR(J6bpi8mVCuWjG`9?5enFl3Ts0M$wMAyWG(LphJWeX}z1cUi)oFPKB6 z5gc#g4N)5icnF0mON!$A%^xDw@bAjX< za_E{OacN4HRV4&en2Pz>MlmO8LQ`UknVAReZjb&-ifbbSN5D~n199eVWC=CVCBmqJ zG@58J*p!itBu?jZzF05$?a5=lvWj(cdYPkMfqJg!->=c%rkI)*?os&F$&$j1PC~*z zNyjWf&eJsoLp4SlDNRvQk_OF|pe-r_CFqOpQRqsjjNr}R(V@{~pWUV@whhaM770;w zx`&`it;XPirp0F%SVcw1N$ExCrv`xw3spKvWGYBQptQZ0Lp5hDQCvBSYpC2757Cr$ zEtvb325K7nqK!H{HI+mfOQ78^PQ0$Vk?P0+#{CcP^TaBjpPt|(B!zHMM{D|MB02P4 zxRX0R?s{(JaG=yJeG)dJJodt4Gfs;!coPb$U}`Z3>+ycDE9fpFciW#^@fYGPQz^AO zD-&u8ZSJm}+w4Kh9I2$7nCHa3)bZze#>cnr(cQfVvjxM+65FikW{23g!PX@d*}ag5 z5j$H`PF6fTJ>!cy^0{qzJQT`k(fZ1*rS-Npi{FBHHwrxG(y!rfn)P^I1n-;#zkhdD z2(NQS<>K)1yAYR&;=IjB;;RdP<{Z6?s!x}3^xw*O&U<|S6tppsYu@txx=znqMC`7| zeJh0P;#D7y{q0cp?~j(`Os_llS38lEs}w9JTHZ6C$F2alcrRZ0Uf&Q`iW|UIY{Vxz zlmu39lAfD6J4{Kn4I+v>|k{6IKl?A$Tz;j1IMq z*yJbGvQ(X{yIPVe4b@5#w9GV_A-BX(i8;6^OhfF#t!|Iqgf~`&A~0GB1kYmTYMyf> z-&L4NqLc7G(?p;;HbFgY4$KT8D4s6RrMyKZw%;MLLwl16suH3e#C%fr#GwdB$vDhT zvKpvW5=I|+Ok!z9$RZk}I3;CHRr$A4`2E=_%i^T|kkkY*zN_Ug`Ww&DsMs%Rb@G;L z=fr(G6IL{A3X%)6tjs0TO$`#M*jO0xCjKEF%5vZPf!o)Fe zsGLRtRyqRMZ{WtoiBfTa;PP z@4x(#v+7uvQ51D+1m!^P)ZqZ-PVV?fgv050nWHEhO`MqVzzUDdI5iJXMvGZE+BsLx zOh)bd$XyiR=kwtGVwy|N1tO?5>L?!9z*KO#GwLKI>uWVS*tG8I{Ih(?Uj!-%;y5sGRS!YCpW zv2iQiuaZ!4+5i(`VOSjVZlSK18-Y|U3Yyf;O_9lfIuNi)EfIj~L3^vyELS3nlBr}B zW|{-_&?da%Y-i`pDrS|M1kDN_>XmrR;Z2H|lbXc2;y@KQLuwqWB4A!gk~mB~M=8;# zNth!N{BvrNsHz!pm=0I7ITEf=0Zm#HFU}wea_kp+KY$;#YWn>rhcfvhDb=Q zFq(%6dh?$wB-AY^q?*Vn(@B7{slr^8UJ_Y6<|&zkcv{hDVZSlBv5}a)+tO17)?OJb z=1?mVK9}sX38JWXx3E7@jhRD>VnZcGVWr{2TGt!yE;@d4bjWX?JmgPhL+$(aK5d@~ zCC&-WJL(g6Q|1Gdg;zjHt-vY*Ppk95jYsC30EIwaCwitdro(=YVP@CnSl2z*#7Kc= z`#=;FE<#Dloh1CsgilTR>EWFD?L*3kw;^}vqfOtHQ&GB8^$sb^>W zakJ)MDg2>~JgCOfg*>qukZ)|Z?Nd>|kMWKacphEF7Ox@+e*epccRy~<(KpA)?+1d2vbv$jrU5@zJ?krcZG(z2cFBWROKWjd3chOu-)>0IelkiCN_Ed#IK z>>V^vwNS%IP{WfhX%r_Sfp(beXzEk3>=r16O)7~Eg`DRZ2dP8MSX-b@n_5|x%0`Sq zpsUK zPP{^?n2$jzY%{GcLQ!qFlA|^y*fCdW#EhLY6=b~Rf*Z6z-~QH`79Qdzo2E?ZN}G)f z;hxT5-U`zsM(08{A&WCl8Xoj%Qi&ysNRwu}VQkzPRTw?!j80rbLy5v}lqi}eBs&hu zZW|#AyRO|sUc-F6(~jyj?in{WGO$qi^v*|&n+;!`owAXPNNT>E@uns~&ZrslB;3v& zcW0Tyt+_%7_qZrSDV%!cWJ2#O1caif3lz^=0UE&TC5YS=G0pZq^SB4fE2_;ZrlEc* zp?&596Fx1@U(6TWJ3K<~9Wl%jwp=nBNAeosRnD+ds{@UhbFpy$R1mvm$-dE8k=|!e!^@+nluhFXH`onHHya@515WkRuO76zymR8$FJ6fsDi8dZrp02nx zL+03?Y$IqSe;II(;w-ftk-#ScNeq>EIuG%biOy<`uN5gMQgHG{rP1q=+=Csz;$KMpx=~-e~IIGmfCPrHV!|7lnrbV~%r}$2g9L zGinqFQlK|ukvlrcocKU3BR)C<#yVHVHh0*e+^Wtj8IQ8^>(yia<;e*vgq-J5Z?Z!y zU6Z+%Q3OQmf z%?Xu7hpLXN?G<O^Howx+qzJ@6k>zVDfDt4yxNkhkr^xLzsmLfY~Y z-!0!{Xb#`qF_~y2?>gdg*<9hX@sf!2xz2=NI9}h;dD=^2-nz4ONpik50(#5t?dOf} zN-cAHE~id!dweRkUL<7i-)mlQVFUc!ny(kOBIOQf^FYepotvJY}04gA=Bv&-qj)qFiJOL!q)@Z(M zN-K1QJOcKuuF3;cPZ5iWgi1fibTL$^xY~WoAm9C%#PZuO|=rmy;)K za!1k`Y5|4q?n~Lbp1+%$b^4U^*Lalc8N%Dq1)q%HCFZ)~`kbh}d-uC2leN6>7i!ae z)2;z)AMQxlOnA(o!S22Snop!`8z@su*WL7<`=JebjN;DX`u3@@vZGjbNtkPD#gs;4 z2B#x26Q=`aE_9l}VjfW4F%R|EO)ac3sz?(VipIidu%WUkwIRfh*QR2Ry z<{EeVUM(oA>dLxvmK1)zUhp5gyZmPLgg^KOWVTfcZ4ln}dP=1-7w1k+-05b_Nf=Hx zB?(wkPOR|ADi4bBq=wg^POGPQoJ&8CcU_#f(`JJH%yYZlo|3X{Q)}91)wp*%t1MKw zEy5?Fe9&d?93L`2Izo<*u+d<-rfajZHjJcF(MmKQtRiOvWi{}}(=$G+g$G0Bv`p*T zvz)C7m*&eZ(xqN? zynBf0i^u!6Z`mR{!3FL(VmR|yu@ej z&ztPi`?n_NvODY7&YZ}udp%L9+#PL&PoPU}u1s4or;xftQlYCsl}SlaVkSo`Eg91t zLMcSXqk?#9kHzeqS;fuScxBW`eyjP8k)k`*O!dGE&4J=1brM0bGq-Kg9G@PE+CG~= zJqpMwj(h0lhazSxKAYWvg(PPj6pR0t1SutE8mP)ll$mD8VfSE7bj2m4?Tg6&-`?BA zNR}mgUO%&Qu6ulBW>r?!M`v|2%;-HdNJwk|i6t8}%woiX4+){!umB;p2vlOh3YCOd zA;Ab1h!vY+KRgyZ79+ue(Gw$D^IpGt-PQfNE33M)@*^_7-0wYREbN@?*FD@LBl5ed z!_=J>5$=BPx#ymH-2V1A`&+1iHXtiau%d!FCxGe{WT>JkHp_D4j=dHb<&TVSKi<#%N5B7f8Trid!u7wobe@C-+#N z7SBV(9|8{)|(ETU%0WkQy>I~B)5OOlev0#x!vps2+=kn?Aa`(f z3c~=i1cPBVkX^tWSr#~3GW0#aJw4^C<&y6TJS;t@eZf4`XkDp0Y^*!=3sd*b+FS7d zzRkcdfPe8#pZTrY#L?TfuvVp znCKV05u^FS$lqY0K7c1j?iM_ zt-11$YL7HGn#?=y3>tNO?nX3m)+#O$z4%gP?Pd~l;O92~j1t6u<^T zvXYTFer28zMz*iGg~RAot#gFAp@?`Qg$1E_xh#dgk9xiRl*yXO2wiS1CF;C-u$;Ll zshiR7b^QA5m_L8=m`6iF@*bTw-0+z!_=B^|jx`QCe$)6+;+J=RF3u_9*$b<3EcZcZVjDPa@TY7rtX`gAXg1Obb zBH;oD+4x|VxtBX`8Dxx-Q%z|Uo_XPs!Q;VM^u7}J5w4$VaaGgkU#M7RErVUZrONxM z<0qQ*x8UHA<#I_LmZ*jpjg@+T++g9b9Pq^{j~A!>dU49{lJNCVcwC4y zSzWcVaBr#LH})L+MFxHj{M&DPByZAM6f&|8Zb01Iv}szv4H&wy8~YL3yRgN21nz=y z^4i3FYOknBD0dk_eKkljpTYO^i8-=1eOgCGI$-0~&x~KqY#4MapMo z86j$fyo}DC1B0|Wr+B{-qA1~1*47c#>yg_3PpA%N1q8`!AG=A?tTa|m1gY#`bKoIT z$GSItlO5)rKgBE<~$p&|3d)(>vn5mEm#Y6E}6AEY%=I+e8 zjzv~}d3wapj~{XBFwZk|lq;x=7^}Iy=5nlHi;d?an5%}r#-{BOy(%JuHiRu&8f}n> zju&6^ZQAinS0@!3Lp({3+%~q!+FwhIH-xeY8;DH7r;%TgEy578E&)a2!L z*a_n^trDrh-jW8bvV0enQ$>Vg!g3h+i3)$b|31IzkNKx^#{SUJ8T2XUQ7xX$cHd_L zhpODkGxjBst#)8nft)xig{RA&qro^DjNT&E`Nh-tx7|-)|8GsF&YH*;6DCQR=Z;%h zxr1=8%Y1Tp$iaM$?Cnv8!qA^bph-h~#?2!0VOfH`TP}ILJmHr|Pk3O)HwF*Oz^Rp3 zuhSHLSx+~;v7Pqw4E!nZU%u^;TxPGu`LF35H}-DWHrDj@#6{n>ZTnii{yL13pH)i8 zn*+zYb=nnxmMe72@bss~7NAEg+g2eG!~P$zp8h@pYF)kHTy5M8!pbgV=5QW34mVJcuH z0A~eaO{B8{-5JqSE^8)9Tw4H5N4)m$sz@c*IZ~v`^MkbgtAYsAsN~Zms2ZhI)xVbb z>H+XHt-iYlG7Df?1_}WTmV?nFEG02`LizyR@6S8lOC9^3u>vl}paV%G%TflI8 z0+ML$7Qh*5FeFO=x}-{n(^1nly-+mfB{|HJuqP>+v8N$|0vc?ciC`AOJqvfvN?{PE z2bS)&EdmUlk<0ED0ArPAy#C2r16=pWsGSuOee^vHn9}-|$8lpnaGN-4qcidvYi-}8HDEdw$`Y|Ed_wd?Lu!p&)Sn>@ z*o9QNh_LTn^i-n)Kq^Zi8mW@_ikq+yfiOvwszHbcGlo|o5uyiMsmz#b?Jp-GlF^jm zq%wc4arxS{(XujY>jEN$uff5Fm$u!%rh3?NBgfRZR$C=j86Xd!SaEk(6*o0S-#T#x zmk@1Hp!Sy&X~HtP0+=SX*>!-S;5EYi)Y?C*Irl!)3lL{;U8M$!Qd}5NdT|zgVc|VX zH;VUQQ8VVMjm8QLQF^i&2RU(Pp6SNf z%)W+TkKn<0ijckb;*$`MSz2vQJ`5}{mLd#Dq+?nzg(XR4=tk;tycJSeI%*I?oXS#{ z+G9~DWvHyDj38ZWYYFpsCVW`(;e5`AcW&|E*)dPfmPpPcBi5d^mYONzBnr1x`Cyi~ zl{0(pg@;M_Zdmf9z_FFMKboTdX{5&ayhszy~=PBcD`+M2?%B!^(Wh8gm zw%qEKNWhETgty_yjcQq=T}+R2emI4+k!QbJQB5j(%R70QhsE4SRV;v_m!%cH>d9*i z-iG4rJ9>}89k{r*h3h>l(|4{37`!F(%WnC#tWhc#_iy(})c=~!-L^EXZNe)%Z92s} z&)u3~Z@(XnrAnH@k#%Pe$X3%ED{xV5^=VUfIsgWeurUtq6r-j{H3hdghgIdg5D$Q2 z!eHT)L>gR8oHW5|ot|k5fY%&qS=Gfsh-$b~Q_a?J!8k{v5{j5r)_uC?$Xe@?wP{;R zu(rvbB?cl1Nm{{}f`-URuD$X?C?%MsEFpN|L|sr5SP=&=Is)715tc%Ya&mtny)9uS z6g8a`bBEO4Ud|w3HZb6v3k(JNQs~PNeb`bsj!oNCtfjGr(xYR{Q^%p~vDd?lf~3lV zE)6dhoY4LOCzAQ=Cr|nE_?TzbWBCw0&kQacyH*BgHG8|%cB8qpj&rJ8muS=rjyL7v z%j-AoO18rXlGXQw*YroNYq(Sv)ofCSSw9!)mqOG>#@|Y@i;P}7xhduB001BWNklv%uS_*8^{#+5%hxWz~F z_n2;1UJ1G3*Z#=sGsb$A6Yk&8bFOl2%`8V0IYjb731i;&N z^f3_sf&lLg&BPj5zv4OHzB_$2i!Yn2<_=ubVV?XPwF;Bp-`J)%2~}*|l(!D>T2Ouq z)3JS>$qO&6cdpOhOPbe=iLuAr7Dwm0wrx2)KTUnxr*@BEr8>91CcXVAEtDeT2H82} z##u!+T3o-bA0PxRyvFt0T5+ao7;%o8R#m^Jf`|$AMq?sRUehImsi^@TZ9Rv*{<MqiN+4jajSx*-RQh3(tM&a2TXPotv0@pRC<+2J1aEoT4ySWnZ3= zEZRhvMEYq6wiuc+dGDN|?>Rg<;ctB`V6Oe?j13aJpd&$1} zB8syk^R)S_NjsO<|FtyS)n{B*y$#3nORS0MMP6W(M>JI5yD{$8V=;nKtJ**(z-9pb zrbf98rl<;>Ouy@-!j+_v?wdSBjACt7(fk^;FCIXwNPw{7q4GG?w91h|t^ij2;W=#H#-)Vp>G z?g0DgoL-foGTm23Iy%Y2WcB41etasPY-XLrB z>d*9YllQiq)EAlZw+j(sYLoJY5L0Bx)!Lvo9+OCw3Z~6Rr?q`7{8=4;cPhg%iL0-z);gZm6s_JRMs0&o zYiqP6mHC*yCl{FfRbRa6tQ!)}b_r0JY8{%2kfb(n9-a8sk4|b7KfrNdz&L7fXHr@H z)tO?94L;W0qk&cep0@sK6(ZwEt&fVj#1eNp#*B}Bji*3le4brL0OlIa){`5zlQOII zf{LIe(#tFbdwDSHFcE(H?1*p8@NSPigf#7E<{Ojv99vt-KDiI$uwVSa-nl3E6cn!d z(Y5nh10S*qNYGM_r9Hco0E5LENSfBKhxMA=>7%Y2YfuEN*!WzSRX|qndD7?~C&&s= z(l|Q@N+__B*waixMn*JgL>ZPP7(7EM=A3(^M7N%YV8J9K2)Qo4c0=2@nnO*g4uB~n zO_*CSoNZgHqw`TvB?W8Gs-205pe8JJz--A+x&!Xz1HM@t@yG`fvwHW}gEo=IY-n=k z2|h@f_tTs?P!u|MX7zbI$2cp6hX#)q1tfr4)*R$jWX(4m=htU1k^;HgxtqpGU(DWCZOvup-Sx^3 zH)`|h6dB9Lv$8&qZ)SqLMbqCwbE$osN+AR>Wc|gdSvY@^^vZYWtvxSqdF@~2x*LFs z2HCRqxy_I3jx^0x@L=Nup4L`(12O7Orl8V*pH?T<$*y!rBP;N#s24Rft8;i@ix`tt zpdt0UXk_=Cl0w=cz?EaA_9IiNPG#+iCo2F3738IhD@=U_@HS^-+JJrXSJW$zla)k% zI7`t&K{XmaPv_f4fHDQN1cn5c<$@&Qq%waz=oswFj8gh`vCK ztA*`{KC)w5%3__vz>lduw@&Xyq0pOiZbo0{agaL472K~BE7z@ftbr`SYT^Ut&S6gE znc|{k2}X_*5c|*yvn-q)bbNJs%wIg7@x2~Eo-?=Qc7ci)2~fJ%H4@X3WF;4ImHl)# z8+UPRqZ{VF=2IE*J!)1~YsXjZ6l7#=+ez0$WK-5|#7E<)R$f%3D2~H{dhL-G8lXK( z2&W_u;i9BMcCG8pYD4>gQk@iLUB^s2I+U4(ut$~z$?3hYG><-qCM^3U&ww+5V#d-+ zFv0cm)Ml$7(Ii0NzS>KYOJ(h16X@~L2k{CFz1F+Ynu&X;XlhmV?8Pa*^`=V;q;phEA)X(>DzmV9+K@ViBT*yxED zjJ0{p(`J}+43F*D*G;XmnL^7COsdQ!voAtPj{CrY2=8m+uFkkK-{W2u{`g>@pOrZr z9DvPZery>hwblMb1>Fn-&z>!Kc=Ci(>o}6c@$r)1df}uP#XC@?NWwJs{OzgE?}AMb z^Jet!6&!iLyEan!D+0^KsHR`!pWpxV?@+0|*J*12Z&FjV83kJV%oGS-5)HmgX8%n& zYcG4A%}xA=S!Z|kbKU^F?dCvf=`+NfzA1orp=keQJ5|3X8|#?-qH68Lrw8IWGP5i1 zGjG%02Ecoj*M1fC;O1J2Qqvvld+X=ZaWnin$b&B!K|-Y`{b&%gN_4PDiUV z=1}F>*O`?nXd)W5>{68(>-DRIz)Z}!LKU*emF;MO5)r{I($uuR)_~)xcV4YcB!HYt zupC;Ou#+Oa%B?mULP|6pP4P&tW#c-j^---yU&85%u}|Xm zyyKwL+UE{(ZMC2V9|O!2|L@r|{>j-hP9)KBi@6Dj<%pK1sjn~cIBxFOm+d>7pKI5* z_V)=E+x0w!JGJtB8XsoX)`70Qe+)RZHEcHC+cy4ou9VWwJ!0DCsQGkOsYIm&yPgu6 z08ml`7D_^_s${y8MVKXFPGY8tri`~9g&u(GT%3i)e4Lqa-VgLPa3*l>al>0*$(lt? zvQ@xnI={)iD(1>6%;XXLi5f+(^Wvl&!J>${2t%3Fu-1Q1Q_n#${`UM1ALNd&kDu}@ z9XQJ~_6N2CJWs)rzc299*^HmaMJYEP&e>2uqTp-q9huff^mg`xfQKG-e%Ll=4Jc%8??Xs z#p6dKhMO{YeD>h$Kl%Lrr~d%>kKfd2uDa>n*p2-`noU*EZfuuLos!G!X1{q$*1iZU zB5SF3$s^UTH6d>nX@d<|)wHte(5Gpn)Ty;FlbE&Wm=f3e#hI`AJcU^RH&IMd$immZ z$Cq`0AFb%o-6|7RkEPSp&Oj!OEu@}z%E}2V!Gi0U;Ukk)M#t1v&bhDB;KsQd6V9sm zOKonhgd?4W&8yxv36aBz&Gy9iS)1ilzE@bL8-tug*c26 zbxXH%$I~qQ)$tKuK0D?-XVPqs*{~#=fo|}3EdV_M@>jL(tn70>SYxK*=9{q_A;BU*;2|{pyGKTq1DW}JEc_Ve^oT6=pX4mitwn1(=ILyUPgu5PGCPP zGflzlIb*6|5vz^tjWdLEGZurfz&S64-obS2s7bO_Quk)CthFwo0^T$fQc_B7V&W2Y zd}E)+ItL8|4TS(yEx^DkP_)+@pU(DqKX-h4e#Ecjj9zE#_woE~&Y%Mn=TMaowBw_+ z&pyIHVbH>?rgiqVR?EKd1LJLlm{IXj2N z0LP*XfaW?YwUx*?zdzVu{~NV`Fa>w80r0AQ2K>vwzw)wY+jUc3M2`DX)^69&??^QM z`nDPU{^76gU3Vg)>u+)-@4ihXuHR&8jcf|f+}K6i`FvfXM0utAKYBl` z(w}N7)6^NBbhe8%rjAI8G{HKC*4AM48Ak_4lvN#8W7;;HmR7{SdA%c(K!Cu}U7Jw5 zCe<rJ}YJ&C499X4`MXrGB?mg*%VlXkH!vXreCAQWM*i zR)8hqBhZV!ZNZ3kRQdTT`l40k6I+4dRMRShA&mJO`ab4bS`Wdf4-96nimGVTLb*Fj zV8Eh1gd4pV3emjWL?J~DmRoHRL1hm_ngUHo_fvxXn~32|eSy;E#Eh9J2Pv~xl?Mk3 zoeRmK6ld1$aVEmgkDu|YlM@CqbD2kNp7nrX(oOEu^HbBe-MiHiSbuR%-E_xcqh8K- zzNh_ZbDfRp!CS_&a{kvpvuYtCYs}r|YwN)?8G|$Jb~%ET0k1+JU5*;Hq`|>wtL$)z z=Swx!XSN_>BoX#Bv#&xYHGRIWv4T;E)Oy1>E5z`$Enu_7+B#9y zOZFy-K#@ngm6>SN;Z-vW-+=u;1a@1q3jpu42VXz^ z{QjqZANW(?{u>zBOW8)i;z#1_y~8W|72BI=SMfu#3z5<{v=rXyIy-hh*YD0JL@iqhDXgK&j{UE%PBee!k2ud*3dg9eZSIpcaP`06bb0#I?lL z)p|qmXaV7&z89%*r3#S<)Ve2BMm0~Zb#-yw!N4>ovq(*@^r|hY@poxXxO<3Qn6fN| z-lOlBxmBSJr$YAHPphiw)d+t}d-Zzm5a28nsVT2@+}l|Cr2r=Ened)uZh4063^{tc zbweR7dS-ijobS*0^2rguJU(T}iQJ`VS`YM^BE@uiFDC1{(xn&fk8ZiAE8fRVHP(#HzAah3(9}0Zz&i$15+5Vh^`3#w5C_@##iWP1a`*-VIs4kqS z@Te^L%VEj4L%~E@nDIo76O|f7OY7s(oA384+5_P4fARRy)6EyQF?f9T;OoEm{QjqZ z5BP_`N3VHsH+Ew;c4Ig84%yVTn|{eQ250*Bs%04wT!~~qHXPW|2dR!&W180Loz?~* zBS4#;&wcV*V;HDpq}67}UTXAL$KyAc5kq*MN7VX-t)ku|uz16@`{=XCFdm7Aoos7UHvoi&G zo9TSx-)lrBR3l?SDN#qKswB;^K0Vf0i@)gP-YLhlnyLbZ;};yEcL_7qJa z5Y#(ZszObD&%VP)`v>GM^ZnTg&-wv0kw^%^Kv%*&lxz*u3)wpkQ{r%z>1q!W7p)9? z^bkB9jHktT-1nRnt10NVibGrh1znn6D^3=o(Yy*tA(fypI}vVo%H5o~r^>yge0;FS zt(-|YhmvqVkg~4Cpxh!eqeSYbrNl{bzCAzZ!O0mX1`AOZ*0VHYsBJg5J!>}r@45CJ z@b|uW{OHfOy|@+N0etr0>wjEDSH9pH%9^9e?hR_!V%z-tRX4cx0`oV&BwqD7W#h}{ zy2o!D_S>j8`r)R&?fSr237$uw4)haj!DgQbAUH zKL?O#EZJ(}H*bMVK-;eRo^aYSWtuKm5uRHEbW}%Y0uHQJtV(6DRwugFQV`!r`+QFQ z(d4(a>zuX+7}>@P-*XqwGtPBsteaPfykI(8zc5W2(f*b~YChJD35M2MCPbqTRc#=R zPaJt7;ywa0k(J|Y;4Zbl->RO`igE77B89VG>OCp#fR&+X^@FQmfZ@gkHf~cOslB_g zGAerE`8Ps*W$tjGiIfzvq1F>AGB`5ZW3hk0Z=OBltD~nZxw>}#mBxroz@JxeCk+%K0irFaHZ zPhLm@GgUebz}40IJa4JmNm#nE9E`z*a}RNmbBv{ck-!_cyL>L1;ESp z>^0i9hxx`{owfOGbw00Rjz>q=!?j6CYl_It#@Fl}QL6fJ*oJ!LXwI4}bqhF&S3wh| zf+14Vu-1Xx^o!+rYR0m9Vf<~{2s~bD^=0w4(mrWze66eQ>TE?u0%;uMtG20Q+-jM^ zsougmO@Oj(FhAosC;LjP2~F^0!iPWo1pZVbYb8UlHV3t8?}G`+BLH&%7HM z;~;hH=Z<8BEKW{>4L#N+%6!gWAD!^)XUCl74$0A@Pio78%Yw?QdvHB_9edN8*!R|4 zZ1*)h?G`NuTnf1|Ou4od$dz|2$jFwtS+s?aNWV)G4diDyokbrtL@6#5LhPp(r^h&F z;521U`<~v79%1mB04j>8Jr@g%-^;4OF4k)jk5WLFP;NzP(|ZweWu%5uqGf|-+OCmO zs&mv7X)Wr^O3%S8b89|lC=0&tdrn1BO*IXZi2zQdhnoz{1ZJY#&WXD!?0fXr8){HQ zP*Q<22A&LsN9ToO6wfeYSpyU=9>9-SnS%-{nd}8M!*bhu3wtu>y`1?V8+U~8 z&W5{r7S1uq5N=c$^dLk&_rvl{-MQQr=MT_*u=)gb_9-O<0C%$ z^^^BZf0+uFK!by=?qw4l1_q30Pu5V|>)l~i4mK4WP=DW)llKcaq`s4u4mhT#Hc=Fs zM7xh_8D1F_t&XwQD7QLQ#*!6il6pLkW9T@BR-0EN^#e$%^>4nKT5WlqZVZFf`Z%j8 zuM!TnImHVD1rwoU4bW+A$PO0ubs|bgsf~ zt()9hnrbM@rcyY}nLG1+dJ&pCC$QjQ>x)bZAJ7Lq|RdFsYY;ZB#?O9>kaoysV1 zgeZ$rcZFDo=3s6M~{=?wT6fd2~kyI1+lb=7Y!8_UjgPu5e}en=^ryXWWSQ!C%Z zJZwA1uCxAdd)n=?P0r%Q&G3~3`quNjetYLdRyKq8Q&6zRHa&m7-W5jlO{s%jr$$4y z@-Z*47q8w>p+&9ZGLca@qQ1O3@8stTtX6%)*axz~Acxip;lg=$4DGrM-sYTnO+{_Y z&(zix2zShzfNKCJCFF%xTGGh@??iV$JynppYz_*CsXJ zu#riK)&zEL^@~;Q&LVwm5T{6MI_{W9Cc)_V)^UuqU;U5LG7eTFiJ$7)s!hD;wXtoNi7=Va(A>0bO`U|y=ZDKg*|oD1T4|*?epz$#;=}y&ohUin;|8UOc8NR zUoQB08Kd?x`^(05w$<8ma-|ZC3V`%E;~cNU1IUL^PxM=)K0At#4U&dp>RO$y3SQNa zTHm`2pR--}i+9U8^}9=SM;;1~=vkhhF$N zb$m42XI~SYIQwqQ1xT5t2q*o(U)#Wg(_@|*lx~igG8-aTH0bdBpvZJAy4pWFBBef2 zQ*14PI2q?Xg?lM;H+9_0$|tiKA9gc7)Xe+yJ&G;qwI>5zz2`oFpbX;lW}FZ31mkO* zzdAkRH;bMVO*}Q{$a+fOhfgRgp}m_1M$ff>2>cho&%b#5XnBd7x-6!{}lK;FEYv-`|;XMO6ZN<*t=ubeG*3p^O6tR4i_}!&83n#POImzR(t~0 zfn0rl+9-VI`FxrN-9S{MuHKBToN2$HZaA$c8`BY4cdpDGFIL&Km_bEJl19j*8lX)Z zYZB-N+$d$`)F(}$K-#q5C+7-mlPeVl`3kw2R@~ZfpE zwu#sG#Jx?D=!9UT5ax~LtL&Q*>tW%>LZXM=$1KYb27c<)~a{Z^vFEP-JYfN* zZ{K>*>knfmA$A#6x8;4Wg29X9!RG!v6|q>ohqb@O3$g!C=D!9dA8b+OwHFE`qf!# zeO@VmU#*#TJ^BTpQJGp5MzB1dr}Y@D41^YAuFBzT#(R?4GiO#E_%iD_8{o^MCw#*a z%OU@hP`aw{X!34lE3ECoTwLA8^-EMwqC zC3*@@$2A_$19s%3bgIm#%rQ=C%C906gu$T<&bbzzN#T6Cq?l7Q;i|!;nQrxhww0fV zNUd9QvPRIM9|pXF)^?4}Mu8cNHVmzO!KPTrc{xO4Zz!OQ&wWtU)bL|<`-fmUhGSwb+T8YiV_H?|KcDIe0aYFDU0G@;cRSIU# z0MRtsLv6G@Te3AlvYqVWcdNI5e7$wX^K2);i%F<`{MHZF9#O$n{&IHv8T%1 zja)*c;;ftT>(di{cX~=mc@(M=pY}<6cWTq&H3K|G`Jt`nodOsM$_~X)x7vWduHU+D zWx}|R`?G|a=8Whc*J()QiyP{7{37%sEG4mUWm({~EI9Q=WtB3F{qkh8z@9&Es*0ur zZg?rU+gkgF_THQ`+5#M<#A)P0#qsuY;n-jlO}wYZ$DLzo#-k;inNh^S3+w=RjZwUl z5+8LP_wt-Wwc08ndI6>stmcs_zh5qSa1u3ro+N@C6NVfbYq@(~wu}OCm?dGBGg{{$ z0f#sTUE)s8e3%kE(1?-zF7=> zb9}->E1arwRE*w~z8F0bJgCcS+=u=E0bUOr1CM~O2vGNrf&a7qZeKip^ir*&|9^|X V6Od8He*pjh002ovPDHLkV1gBakC^}f literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/card02.jpg b/yshop-drink-vue3/public/card02.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6366b79037f94ac702da8ae098e3eed070fb6fed GIT binary patch literal 139459 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

    YbGj1P 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 Bhl&6I literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/card03.jpg b/yshop-drink-vue3/public/card03.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdf8d18ebf81c4f7437f67c16834a7b9f535e2f4 GIT binary patch literal 523516 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 z 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

    a8V3fO1Gb4c)28E+WM|`Qt%U5 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�P4 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ΝM1o&Nfb_3|0ZZlc02l3s+}&?%X2nK#^FA>QIHd?zw|} zxro7GWql35)uvZpXL)%E?ZNdIUc$-`(2NB^q-pnjmR8nTuJyR%jv{xy{Vx9g?>|bu zSY&B&30p}TwHEJq$GaFBnPhyt!t&BG8p-m)5)+dH?AmpZbLY>}ZMD&f;5*M<-~<2a zy?pA^S2=WW3L|5DQNbL6*zUk z@YXj?@R_e(;>f|hoOsh|W~VPBMTKUg$I@KP2hTjk3yUsx*4k)EX;mHEx+a$>Q1>q8K^>h{`b1 zOQ=pM2Et{2>6d?v-~GeCWMc0GS68oMo>*sXdVyYV0pF7JB0)Yk%ASc)D)~L+r9#IM z?Ou~!9B^%BnU8$vcW|1Q=$-!--+tjLgKB{Dt3B$LN4IBl>G}#Qi`!_esgyHhGFhqv zMGhV~%;2D;SjaOlP{PSLNJruaT{6WIW1|I}Y>C9mQYsCg6Biif&jnUMb$S50-xIE z2HP7OoS*$7T>BiQfguKWonUnTekLb|nLMy zLez&2SeEPyW#x^VoZitd_5Z4ze)rOt{*6_q=~ZLEaw|DHn=OV1s~q10I>_*??>vvT zZy`wp|N7^?o1^;=@WRXAM%e?rPy?LExy~%CIZs+>BX{L%3Tt9z}XU=T#(3=l% zVEi=ku;jfDT}Kxq&OiGsaqbA-Xph-%^?3W+?(aVHtMq-oxqJT<*N>09zZ^IAHd$YkY!y?f_fcA171^M~+Of{=ys%KDNx_gaSM9 z5SGVQtZ|j5U>l-Zm%I0S+C^kc1`4|mWPQ4^Ryb*Y0Ss$ z9};};cOO6m*SPh>FfYA)g|e5hxYVHMXSn6oyD68aa7ydUJ$;_8$Z&D?DpDJYuEr4s z-0aPCx?NVcUgT%qa{{c0kA3MI6eyF+IFvILR<>HS>Z|0FF5_OpgLjRQcQQPGevxxq z3k(cRP;fveW4!+Z|CP$b2>$vyMYqi5T91)Er#V$_ksaR0ay>@n2HD=)=K7WMtgLUc zxZXo12D=C!|NLj@&Ax>4Lxxyk!U<_?tgw4zFIU$(TwJIzJT%Ddw-zZB%BgvyTA@_& z@UntzrHJDwoQ#L^(lJY(6t{Kdt1~?R{0n&b94$X(uI6LGzKJOo z7B2IXKlzjRzR$DIKFiAT3YH4koaCA64Gc$|GdkjvFlOG>uVBZjT9X-WeZ+?)@>NYRGbb+&Ht}-*b zNVCzQn1Lt>@RXbKHMPNw1&K*_eUUL(kswG6QY$nTS=p!dC!nqL4NxZ%VGMEXyh_`X z?*8I9L7G=@fVgo}Fvj3o=^L{`qT{$Pd`uyeN~;?mOCkGepB)8OKYDM{*u5>&!%!KA zY%z-vphQd*`qZ{MY}e26;?rlbtj{noIKbH0FcTAF96or2!Mz!V#wNMz2j0S6%7Sh{ zu)4zai_=`caE+P%9x!&2G!3Z)rjtb~iR(C6i9{NKtt3X+bo;-~M5(UDZVGEbwiK{YeQ zwF_(PJ9&)D*RK%-yJ&SAoH_d<*REV5w01ML|0uO)gU^2QQ7TTE+ip6=%$2iLsueaj zT*8{q(v>Iq#wUB6e*Ip4?@Lef*-yL;`>wy^=ihc0Km7~u=W~yJhTpp9t32_0ujAg= zoS-zZ!NU(%DUTUgx3Hv-S5R!WJGhx4t}iaLxO|=4?moeVi|Z7!1+K5Y$X%~}kg4HG z9PcQLa~&>UyUw-w6`aW|M|Kxz)GVHR`7$Lr$LZJXA#4~fEM3D-bZTKxik0O}N}fV% zi7`F{S&M>@_=%77TV!2_(Q=+!Uvq-tVuoJ5hAQT1w7U=~ET_my%V(`^QJC1n>e?c4 z9MOpkyC#dYY7H!*Fn&a7csNDkM1u9&20HNh&Uc>Wp*P%2Cx{pv8zI7>*=*8i*U0B` z*vjRmlc%th!{Xv1aioc(kje20T)W77fA~Fo>a(Ba+V#uK&R*x(iQ~L<^*XyIrZC!& zb#uJqoj*p#hFmd=5ia-KbDAp`FS2_y$I|s>X0KeQ+16AhCOJAahPA80JKy#e7N=+U z+!sH`)C*U}OoQl~$Hpp$K#;Fbt zu)CtMEf=XI%8H2MHW-CPfh5vwwzg<=n(4@W6c;YOwX|Yz1>)6{ecjqGM&c8ycOE=Wxw=i|;2>Y~p62@U0$)7yNuK!Vd$A~T?)pWFxdRN1 z1l7`3Jdt>C0?1H`p~Y!T9i15*1LamM}U`wUnXl z+f+)5Ql*MARoZLU&^jcWbC?`9WSo#QsWyo!}sTPX(?G}Yxo`vZd3e^D)9X!P0L;G1M9_ ziIpIbHjYzZVq$_$v(C(wS$b{QTwlTW6F%^PpXJd2M_QY|N8s6a{1fnUY%N9@%3+B;P}bc;Emox6t%hS z)_vp(1ukB@z-wQ33#Cedpj~INF-)hmjn**(r3{tbqquR8N?|Wg&j;v=LuM$UlDWda z{D~5Q= zYKd&lBVQ?^OdG9h^yXJ^#z#@ZRWgMfSm5aul#&=+V(AcBWu#*fXCq)8g(f$#hfLf- zCYqq$qSu{gqdkZ8vv|EN@`XV%<3pUDx{K2f-$8f1&dblf%(W}mxpH}qPA4Mj`Y2aY zDwTAC=655h)5->>5XD1>aJhqxlGH|ei-68 z4kp%EQbM9{Sjt6zhb0WSQl&a1BvIreWx6}F`UjpA5<_~kQhgtuQZ53G)(N)o(1Awb zVabGiIhTG8mZVefQLlB_zH*t1@*+=UT}q`qsvsHIGsKZYhnbq1qO@xlr+@GVIIS#* zdYJ7RvuDpSKRv_B!XjInThzDfh@K?!1G-^|ORBZEq@q-;g7DaAHjpYur26U|EG*d| ziY2yf5yu9lB(6|c#$aptO2DOGZcoh$sT?@bNeXqgEQ~h9h`zxAq*26L<5;QoM+lwn zN>#sZAr)~PHn#%)@`GRE zmwxR*v@u+~e4XnvOE{Kfs~7XV?|zW=`Tl1)Gyw_)$8X; zR=b?IbC5GL%Y6Bdev94va!guzPTx{yaW$b5#|&k&ggV3c_)%WIc$T9lM!9@(p8HOJ z7q!*PJb8YN%iA?Noq)sRyLs@T+u3*9KK||xUgXc62 zi<{HLQ4?DlY~QfHvBY*qu(IUmS*=|e$F}XdiQ&4uj;*fx@YZK?HP}E$74Ie zaU!D-lm&(|)1bCalE!*wJ&x13yGW|U-n@e7|vYxwaW{{jB$&-@I(`pf^6t2cHq zUX8(E%F*sVi;FEj^~sNNXX}twt4*55{HNdik90a6MxzlI9ym>&7r1_p!jx=o-sal% z>qy7tWUs^WLKkTa!{ISWnltM6nI)Q&8z(sV)MftrZ~rFkhCpNydN$&%Kl&_>oV>ut zf9i4Gc>PWdrgzF4otT+zAZnGK$n!ir;Z#>gM&RX^(6XqBP{LOC>O^57xX9>a$LyiSNPV~Ut@ASLU82#bbM@+5Ecz{EVX?VJM`QBi3Gd!G$Kw^A83iFaqV|v_q%ra_N$G z!==pcmZ~L1R-%o;;842X>u?!U&75qh=U1KXy^=I2gcQ_#e=aW8IIj zWyW|nCHFF}ZSL~&ORv#r)bM?u<>h5guC3F(u)z8A7dZW{r#biWk5==q$&6%gpQGys z>~3wcb7zOW-Cd$6#%RsqAYnQi;5Z>U5v7qhP8}7fId~e%GA9he`RAumwwl9vuDUnF zGp3@n*m;LSNoRg4mXt!`S&ML;YB+3U^`3-}K%z~CvHHI2WnJC2D2c+qx8Rk!M9&Ql zN`NcW++Qd@?)>tvfAjWce`X_vs25jII^^Pobq=<7`0PJ>o;$a5>fLjE=68OFC!V~- zZ~WGO;XO~CqtRRAnfINi*J)GaF}tzPZ~d?T%nRT5acUi(Q>S-%R6NUM(4b*=IVf)+ z^}AW<6}+|m7G~1Ht+#mnm0L6#Pq4dxgGV0z5VvmZGRh8k?Tvy9&pyX2_j&DWU*+ki zEQ7u7c6J8b z+&xB^l02R8f#)ueM1q=oh;kifNrD&nWVt3z6-8mlij1Q4nCOgVcad>EU^F=3W(hUV zr{M*-fuN=x#-ky(x9)Iqc@>M{1J6HAqgE%I&N$fLuN+XrF|GCjpZe6t7>&nVedkSn z=!ZUuS6ZHV{&}uky+*sYLT6)*!|gkK>G!{gHqh=gDGR~R{`J4YWHRBipZzS8XrIY= zLZi{5)n1^tbeU$eO^KwxeT6Ka(CKtI)jWk#l4hfY)+Kv)ZZjT?P&T8CYdrhZI_*}* z+gGpRi9TO_>8qSMbBg`Jj3=LeoNMoF^5)SVk38`(FMs=M)EDaf#E-m(>o?!w=8ZQn zVZ_h>{lCXQ{)K-?v!(dvAHKp;U82nay;g&=n9^8)cfJ2Z+&nzw=zrxL9Xv^AQSjw& zf19JxP5#eUk4P>2o8P^{1LK!?`%AyW;odc_`-^NT$n})Gw?a@xbUO~Yw**Sjbp&ox zFe?rHoe5c*;VMBGDr$=X4|m!)rKucfX@W7fiqLCIyXn#kL)>~Br?X145wPmcSZsGG zk^%!bp3ktHvKLQDlb9%-5k)CcloLlWaWdiJr3bkDkw@9s*x>s08@&FVZ(*fF@5DJw z|A@0HASzM_1i3bNHIG@DGT!QQvc16Lmrt{`d7Gf-fK~)f8~g@EZ;k%-@3QmF?{M+b zC5{G16tkF3w~6wq8o_XqF^NhZfBac?-nxO9Z*pA+JkMwUaLB2%ml%yE3<|_LvjvYv@!koQ??VO{P%-N}`RTCJfedP@aeHx^r{2CY2Id7z$~biV~?c?#v?N z7UzRd3?78#sQQ&=0G$9wAUxYAz&> zT?M63fkD`kPE%1@O`aEMCxLQ;r!|gj(m8jQC(oVd$@hI9X0oyv=Mp z#uO=XVQH@RwG>4aTq(=E>iJoV*3P|CT=j6)P|3mP#dfN>&>VD}6$NEcV9WW*Pn#<8 zF995conLEKJ?*LUH#k2QPru0`#WouI;c_z84!|jK0zvj z)Dj1aa3snL@o?xUm$KBvgOtLxjP`G``SuRwmlEo=2K8p0TBE`G`WhE6U1a6dNlrcU zD5pO19`HQKQqui>`nx*}b|VfBj@aEl;PB{}XjU?vj>)owJS{<1i?T^)NT~>XSuNOe zSDsP=W9Hf)E3j_0a9gEtwIJ8JGRy#ovO=Lb0x80KO}fI&y`1;;>#8JX)ziHD3WfVU z`8EPobvLaL;+FHF5B~_J>zvpe+}^pcu*!E{dXx3_4K7`5@(=#rui<+T2B+vQoWOT| zKJmf_c=_dRTHZFVd}YMZ!HCHuAWbiSJ`Di8+7q2|oOh7Q>?h%BD& zj9l-sAH9X+EMc>NcEh6>49I2)pb6D@0Cqr$znmr=xk%fAJ}zeKa$K%0n9{@};he`kkhpMILztfCPtwicK;yZrp$`kP$azRBk1CLs9C z@4m?1?k-D9OLUgotgS7eRLEdFkJzDx5%5 za}3^elkWySCPfRsSEpm@_@Y2M6O5cukB>37pzcci5W-qOSnDEX9Y?`JV6n|M6V*a^ z3R_0VxWu=*N)#qB(==tQ4Z;gq@ibv=9k*7pxL)JgXP#uK*I;|F&F}xw%cNzA*IPs= z7mHwZ=>!|;0b|`@A}zV6$a90%C2C`VxGWg!0~VfWRi)r)iNEnreu0M<51BeH#rxln z5Dwo>Mx1@Hg_8-6qEm#z((+t9G;WcR9?e*M_q*7SCrl$YZ zmN9;V7^s^KC_zX)7m5}Lk)u3|5VtYbp}?T6MwKzb2B@Gz`}9LReePkNp7u!&?l8E0 zgRL7^xw?~+#8c8-(+EARkQFsVRMu~!EA-giw4l)jW!(y2l^1AJ!LJ1ZspLHmpp+6} zEH*DGO|@KGt1I!bF7cI%FcwEjW;jS&R&yvc(w3BSjgC>^NLlHU3SC{3nhIMeq`lX+ ztEOVA3cV~A7%efns1^gQkk;Z_fmgbC)}`0!U@ANcQ4+IcR*8=@vO!5ChxBjGc;!o1 zDx_L>NUIaFvb@5H^Jlp9(1R?TI>E*hkMdZfQzdUpLwr0S-aR0ljX1jFvVXWkzkkel zJSLsRjAtXVq`;K(lbz5gsZdf@-cfhnms2iI!=Kj^oN8mGa$KoU%EfAdDXS!>R;og$ z-runU@}fY@&FFWznN|9>5>6Yf0CB=vi*rjIGu@u-)@tsryxrga>5ccE!MAl@y*c8A zKlS4bq8W|WBHwxAI!}K1X|}g^c>LJ~PHZgj{P#yRYXP^f-z4q!xU)0nNB+!@v9Euh46^xV60v$|VRqzVWqh5Y}pJ zY+S_ge4JUv>SNEc)sLw6F7UxKk5U|O(f{si*j|S$T;wo@Ol!_x3fSI$lX|#LpfwNn zd^Q#qxII4R=3qi31DZ35>#y^Rzwy7(M&r6Gn9{>vILC3EA&MOiGLKrl%kk|Y%KaMO z`clZB`=ZA4KS}*UiJMMXbut3SB@8vr(kX-#6j?@^Wkl{tRz-tF&r<3XM2d18jCK&F zOSa~ajwAf$0)baYs*qaPq+K&8H6TrMNOPKI561|KQge_TGqyfs*&>rIjOWo369RH> zt94q#TfA^-l~ASZ?YzX7Zzx8iVYMR{4rSnBgu*DFvCi?eiwqkyT!&effNRKAiLv1M zH5$gF$eYC4VYyRq!M?*AP8UbGxH$MGpzbv}JT`dlDi3!C#92vPSQ0N_>bVs44&mNA zJl5!7yC=9F#|#%Nr5&+krexDanwjO1?gEn}BC0ny4x3m5t*k;aEiQP>rc(kb5T#|S zyNa|Lg+^J8V=`P_q7ty~@ZO@Jl!HN%B9XGFO6{R!XaXX?1&w74ipBB{6Flxr6;4`5 zj$InV4)wZWVP`-i^jTWy5Qh7BH5ad0hu%JfH839db)b$$A%&vgL%5>AH5syqKxxn! zCEI8heCp6{5VoITO!kh^qZFwHx=`$~fE!q}oFM~CQBDz} zAc?Z-Ix;l4C3v~PSX))6wZK((y>KPQsnpT7lt|-4An>vCWG5tLNnI5c{ojfztf3Xc zt*$L=WjKdkTdZ`d)1;t!Z}(mbYt=nUP8g+g;>h=~TE-YkVbNYyl}L4Q53Hz7T(fE)k4na65oAK@^E}+bmb|WW^CcOMduM>s=okojm*RL{jPoay1 zcs#;&L$YZ>5O@p^4w;UI)N2j8O@~pI((d@&y0L}RY!D4CNi<@mvB=4V248>un<&R) zlu2|^a^lQ6WWQj!yUKLdpmphsm?t2*K_P2Z}XKuin;XA1%{(Bi%W})hf}802}v3ev>aT|<-+ng zqBJ2%bCNh_U`moSMM{UT5z?(KQ51$KOBoJ^72*3nQ}g1&B5`SGAj$Itgyd*2!1H|` zf9e^IMlqw&kjqb8=J@!S*WY-J2OqjbS(F4pizu2Pgd$F+=sd!89o80mq5luk^9C2j99aD!$A+%+JrgRvS% zlmti)y#i?sGBJc+K&S=2vE#4Tp$xWO{XXQh zzzITvhC_cc!-@hU1hYn$*P@ixJ_y;G>-Y zY>8t^O6!6V2r`uN@#-F)`bpZ$8J8|@k`CYDVDCHZ@4U%ubVNDbAS*Z4@= zCQ%cNqpLKhW3WzDY%aCIS0%z|tg#s5REwTb)n{PTy&^k^3eYS>r7z;Hl%SHh8fy?1 z5Y?%qI;j}`xYymUSp=o5=6QNfL18YExclv-6e!2L_j70~@TCi8Ua^=P35ue?7(+b_ zQNByfb5TJx7t>0R3(Zk9Kd(1ht|Rpo!%KX znoaP%dnqBCCggdJ&Mjq{lEg7dl8|K?NgNX=2~lQAvy3!N{~tscX zvoT(+f$P@MI^ya(uh9(aRZ;lzS!#YrG>vhc2N2B{7!Ugdp2Sgt&O@BoSmx_re~rcEQ~ciN z2OJzkoO|R!UVix-G#X9%;~BMDjS`7+A<3qcrQxuDNEn6)99qp5BA=mLNp8V)1EMq` zN)lYx<;>Z$RgcA1^P(^e8I4AqIk~~k-XYq;XfmT#YjA68n=(x)JQpbhqv?q8Y)re? z;m+P2lvLP!k01>2Tt&N4Lz{vmiAkpWC^wP zY;JASXw?a%OQY2$O;Z}p7SeG^k_2M~UfbvWk3GrG&F|v-IV)!#96`7~t z_>_4C-VK`pf!`)^Lq^jH9qI57{@Fj}x#yqfl#op0g2Vj-JkMi&W%Zu=qvG!wtgcAy z(!%XqoA{2x=$uZ&#actDZM6#))%BW^l0;W&E(<89`d-3H^640~zE?&K!;n_1feb=^ zVB;*WzV#*>y%w`#Mj=b4WkwQfimX-z4z#ES=x&>lmblZ1nzGchF^yVCUTAD{kp~}t zmPvfTfBW6faDJhI4O^Uk=prI)F^M9S6u6F$<2vXpqsStB<+2|-_+`ba%*Ipd%A?^1 zxV|DSVp0vlbII}?#|hahB`f%5tsEV(KxTPMOuew=pYx_V6i0}8F&N~W z!coaRbEQxwMhJ-zrlRrO$6hS7z8A+YDzas@LvaEu0>_j{W%00-c|mS9sawb7mT?aI z(-?J_A>D{2cR;;Wr`c>!Z`5gZyR_OZYRwi-P(Zy4wHDf`k%|Lf5U}-*dP$b5`nH?J(CL+IuD_YvvUaEK2&-*R;NyXra*hSBs+j>1dXaMiE(> z;n-pgQ|1h25w6#y+X#R9xWD!H2jipt=bn3)n2g7~_~P&IgMZ@F)K)@V&%<>E?Ycvn z#GrC|%MHfvZ{s`h+&myzZbdX3bq=m4)Pp+X;gIFlD#n&P{p3Ro`hAK_Q_N)^5_#!F&y-H@AL0rG8*y5mDee? zp)?6A>nABn$kUYBaLj0LNUPUExDLr^M5;2B7ZQd6^;Ux$*RNM1MN>tWecz|mYO%Gs zNq;n9X=#b0gI#R1fwhK{Cr>dp31wa|8dq1R{lNjJ&z#0pirG;gAuUHo2jq#uaU7Ob zmT+x##IMyIgz)i*me}~U}<`22_OvYgx;w`K*N%je(M^VK1^*Y0}q(o3U6Ka9aa2C^S zE%M5%Z&a=_SD_22*J~V34)A^d-b2;e%3>|0Q~gJi7MBc9fFIq)3+lLjoznBka=|Pw z&?QJYw;5Z5o_C{^Qdl%ff#*4RzDF$#=dfVS*Kge>cPk=EoTo@nVoHrp3(6uvN(U(w zS~`?kA{+%_7vdwHdgv^B*RHaB@;s5d#&@q=r!4mWO0={|$K_f)eYK%rBYK}vm3nJBI=1kB@0*=J52MAlB z${ds=#le<20?j0zu(Gs3S!5iKBc8f+k;i0@n^#`upnrsEo+Dg2Lw7JCRfbp@a;4ZE z4p@~nI^7;oKE)b~p8vfb9}VdBdc^S%W9Ben;Zy+MIetvwVCN@T5ZC`6=ZEp7&LHj02dqwWCm7MUOhZA`ap;^AwG);(Lr@i)2?5led2Le&L2?> zZgI4Ch3VurgZ?IsL!UG@OyYzzn<9`nw&LkZ&qt|wk==;-DNj=&tV3Y6>O zgdw>x73oCEs&nWl9Hl69Me5YmmH}xX&x(rPA|$>FvC>laTK5+1T$dEaGENEx(>-?f z`=mvVHWt^nc%F}xqN-ykham8)jjJmN!w}E&Q1c3cwH7z<;6Bn#Q501*tkgKAAAZoaNi?C5A%?rj! zi%}$)L?yFqg5!4>?F{k5T`oMZ!MVpyakxL=sDH#@oU*pMjxWye+Uu|K$RiK&;(z^Z zKKTCkvD9nQKkhT0M7-61lhbD}aQ&TkSZMmJGy|0Da@_CZc^+kHaD?S>GGH(m^1#_s zBxy>!-R8p|{xI9y+kEbGpQE&rrG*Z@f}i`@zlJU~+uOJJ>Q`Q(KOGSGA@zEV4?h0^ z4v!A`?v?N2xejgLrQ2z<)NL{z59szf#L%nnevbxw~ z5+wwU7Dz>RVTIn3q(2zW?Gj5E;c#>F4zA?$8OrgHqUr!CdDlcQ zDYKkyWzkWJ$udHraE!$h3P(9KJcCe`^K6zz2xCdpg26Q8Z~yrpr8(W=;M!Hb@cG~8 z)H5Gv>mZ@sNb!OOg%4U4#2V5jkVW>1k7Lmvj5qj(EMpk6FVFM!!S(an&Mi=k1OII_c`_3JfDspeDNPgxDTnq|>s|q}0 zP!c?={2yLAB}8#dk!R#WqHT#WmAye*gOvi|DYULmaCak~Wm%$R)p5Oh!n=E2cXzQ8 z;;yW;a@3i*nc)7&?>?0UBcGfKR36HqZHD0a6A{` zdz4aO9hb~ngsoIUCNB|=1>siV8B|q{FEvWf)eN$l|5 zt9};8%I^WbZ3z~#qUY#t7C~pt5hnoimWEvm#@41jfm6iz1R9a z55Bec*(aLYy_+vzX2k{qH*Q3nb9S?uulYCW&;RcCX1sX<$UL;^)CXQh}s z78~Cck-uxmzgf_~uEm_lso4c+qc>r*6*N;>@1xtXqEe-PlzPJy>k~0GFClaN_-{YTe@Z$p|UXEFz)QhhDQDGbNfkA$uVOhH8#j)Evx#kX7k( zp)W21`=l>?*%@Up`ivWJM$iOV1dR!ciC!AADnl6v1}ABWQk=I{RT99wT%z8*PqpDT zIuAdolR7H(9{bnWo8QBYM?4x>8>;4BegC<7MI80__NAMmMiN(qxB6yt9d?^pzyt|3 z=yi{;AscgNk@0g%DOc(#iU?A)>JQtrpkQ{L==>WW@}h|U4c>2DG)8%*@xt9EhN%xd z!Mke~aqSVqC2JNjBb#}K@e0@RDu>EsTX)4Zz2%#3!p-sak3&cD{X+|ZgSj=|*c^Fj z7v2Ygq*_Y0gTH^tg9Xdjg}GxuY9j>Cicvclw5t-XoquxeCxt7^(Jvk2Z*v%5^Yc(G zvc8VvO|HqNPW9z=@T#@QMyiUvc-+m8-jur${`J50G5^hf@n7W5?RWTxzxVt6N5A)9 z@Mzt6g`|EJ5{4%Q8Kn>1UfIV+3+i$2^1V1ra)tF?2X9x*&wpHhL$xt06;UnXScruP z4Z>hL>BrjahA0z-_m%dHaXwv~XKF6iJ}!MVexCM-SnqAP@Htsttr|5yuU?EY+ndGq zdp_!ZrEzu*Qa>jLna*eACkv1c_MQD}O8u-6I}z%0O3urjK5rBW8Bg~pwJcL2L^mrK zh5;;76xtNHeS1k0BmK~m%Rm#L2}0W@Z_Q9BmI>+`QyDTT1fsNH2`z$U7}OXvlZV1K zXL>4kco7Jz<-S#@pa`*PA$DZh5`7tioRE@`VwA2!T#lHdCA3SQd$NPJKx!c@yZ{Q& z4RCalh$->xbjNNBDF%*?PFSvvSi}wsTbdS5Zo{oRk)tC8$qa+9p=czqB5^{DOC$~q zWzCQWe*)s;y=Wn806S*U-Y10<9zELd3tse&Ruo(VkrB0B^TDtgmdCk@}kRRG*R2>b|GF$ zK{(HeA`NX4$UQprBrz5dvg4(>zk=WVEAMc7wdBj6eafGn!Ly?ku_$HGKT+lXObLHq zReusIZpAEnW>Y6f0#eoLjxiFWkb)4+h$)g>*~X@z*-zZR_DNoL(_jhjWBjiL`=10; zF*R@7)CDbyprT}PGvFql*IqRgD-;tl0VyEGEvbq|Oa(=-5IH~UDS69k$h^A>ym!3d z{!!v?qb!<%LPkQM#K4eN5N^>}N2@zjB4%C%2n%=f$bCjDC@L3FD}*d`VibvB2_sXA zpc)Vpa=*g}1e!WJQghRoTzXVVX46G{ju3l~cWU=}G9hVFc-S_nQG zOLbzgX)&i-Jk|2M>_}#a35^6A^U041Y(3ysEo2e08$Qy+%Y$5% z2q>_dzi2AdTtEJ$wxcgkRqb^)o)3T9T{8nOTKZi~L=XQXua)qNp55=XjisL6yJR&=B$9nqkva<@bDfpqa4u1pNgEkT>^96LWFp4{Tz?IYef zS@LY%u^l@CM3h)t*)F`a43%<=QP3I-K?y>t`yW-5Fq-RDl;Zo)xb%hE`H_kzbJY!T z2QP8|_?;+gahxaP{y0m_JkzRy>MTjS?w*fDNg45AW04YP{xBx3we}b4O&?i7<8l@3 z@*IBEk>KS$MCQ_U!q-L#W3U3y}l zP>wnuy>1zD_0z6KW)#2uDJohvln@A}h(gx`Ef|HqbPjJIpyo_64J(QYeQ%UpFbxyb zp;RC4&@==wR0%|Dt(l!fB zgnrmEWb;fiL}#9rf>{BQ<0DhcZu^+c@Q}qa^8Jr{8kRhMkQnkBO+vF;Qet3J1~eFb zQ_$AuQ!*i%G7uS>ar6mE%!vuLLps{NmI7kp^HLJ4c28*^V?(G7%#RRrlumEXkJT35#{_HWgZ{Oyl@BJ>ns~etw@*|#a z3nlQ^`^>++&ivanfkBF8i+|rj`d=F65S1cWD1?O~;kuq8WQoO}$`8mAQooXKQ;_1#EQH$_cRt4W@LX>_KH%}hRMs;6$59#YO; zu^R@h2})n(O(V^6MK)uXJ2WfZkm*Y%XE(7|0;++Gk@4=N$>3DgP?w5XFc)TZN*haN zxI~f)3*bT~HkVCy) zwLLD3y5daF+-h=`wYY}4s?%bp%3mSZ#r7b8uzB6up$m2Asf?lVbK~W%&lQ2lSUr?^ z;%V%w|J8)0)Pzm&b;ry_jK(gW&ECHs`pbAX)q~AzI{)ZWv~z0jyb}6#1y4WkK>KY3 zg?0fz|7snTo8#vAdH1>BW=G84Zae+vcyVD1$6g>*vA$Y_l&kA7%1Fm~^&Tp!Bod2=`6pU2chGd9rpi$iWt9YW{mNkyx}amR2X^D;Fs%*mKREkSN_fp zbNbglKbwsi9iQQaKPojyi0s1^t*AUHfe@Xq6{5#=1w$<$B|tFR2Bc-*&NUcvp=fa( ztl|m3d&4-%Pc76W)oM50VNF^eeh7|611daErxi#-z}o0uJ2g31g^~+mgQKa&s##yq zT4Y#JNKHca~Uztfk)-a`w0`gr2rdtd^}S92av@N$c75 zgCqQg0!^sgx{A)TI%fndD}A492d+Vgtd_^zx|dk*GGzmKQ2K65STw|tT=lv$Mh(ea zn*~}sey08z1$EAZ$%G1#n)sPe`3Eozc`DkEaibB?GDn5YdkwPxnNT6AOtI)xoSePJ zId--$I>>&#aVvXe(I$c_U8g*Ge#-jK{uv*CaF1_)|JR7m&Uol!K(a|p z@^?+*-$fE3*uSHR|AkzvAfW+-JPho*9ow8a z&pbdt~slW1p>X+#Z$E=&TbS{Lc_2S1`+yV zY;s}KE4!R|zT2|PLxrdM;2UA4v56?ofHfN>F^nMljncbU6+&Cv>yv!UEXl*1gD_ee zPYI7)uAc6T1wu~El~wGq?R_ap0CI)5y4?EV<~&NV+Xd*0cT2-TST=5K)8EVzw{g?8 zD-s=esUNzU_kH+b;c>cp^715ZDD|%&7MfgC|5| z=eIYfp`*@|3pKG;RdyI6MhZe(#Q|(gx(u{HpPl;S$+{bOmi?mPBlsYeu!+KCRtNz~ zEMAb8P=mFKh!W@V$xOk-yNymm(K66=!xZx;gJn}V5+%iklwA2}yWNrd;z@1`?Q(%g z%WmiQ%`7_gq9|rNOoe3|36hC%gwp4!AYMwP%8Ykabk^}TO6h4DCtv4bz_f7t&JlgT zK-tip58e%=2P^D)WypT-q6H$6LZy6>4?4m@%%Atvgz!@+!S9oM09sA{E~Aso4&%BB z1)$|1f4XuHmiJb3Vk zv(1(!1!7QgI4FYrJ+<)n%);-9@!t(1o2fuloz=yRG;)*1^g=|T*#AD8{##RUJMz55 z6OWPe0Lj$3y=K{r)JQU}ciNj76ocE_S86{42sTrNL4te*-GE-M@7ePc(4HQdb zLe36Q32fDPy4$iV#`#cK_n9s$UC!7tVyVHjPT%B;_t7Em z&uN6HNmW)-y?XtfQLx`q$MxzGho8%J$=~&zJh`fqH$K@nq&nz~yQp^f-ZKA8s|jEo zLaI*TQZb@J8yx|a%?QJY_cSE#DGO4cuLke(N`NSVQoQIcqmF=ir)j=)%welJS9oZJ zs!Norjo}F+p~joRD!jMB2sGxV_hv>O{Mt?y!nfaBaOd`2nwSVG2#K!SvE6LJA~8jp zwxwMx>CNc+4hdFygbw{XE18ma933TA3us%Z&`m>PAvFOlR^zCuF(CoQrUvc;lu{(d zMBfc`ox@v?ZY7#sBz6OR4|(Ttx+3ntV}8!H?@2M|)3lC3seEEkz*>*=G=6Mc2mQ*u{{tF?n7Wj8Wv5o3ja|l`p2qv zSMUx@DOE`)#G1U-u7?Cys*zIFUu5d|lq#%2YSGe@hk|LY54xba5QB32C~@oPgj=^( zEEY?eAe@-GEpl}69B;eY)CrUXNuwug>gqnF_{`M`?byRcftbjHI!ScgB}`Cl7&Lo! zA0x48i6NjSY_`33=1du^kX;p@Yz&@9 zuMVK(U?=wq*;r)>2VFs}_f;(;QZDc26%qrG$ExZ0vzh>2>L^XU>~{8g^i?9Jxji#iss_zdR=hwHBOE03mG05W!XUL6TigVTSB%HIquJKdsf;e88QY@oeY3(~D#L zs%x?u_%~IKPQ|G-f?zUId)Oz$<}{jIlkpMdG)61U$oU`7B?ebg3_>YJY+~)+jO`=u z?3qFqFSv*3af?=@nV65~GK)v1E2#-!E>!93abCG(vzf=#I*ZMUx>rXqB?jf>2tNGQ zl6$vr)1963)6c(Tedf)EqZT)rxpj-wEO`9nIor*eUG9k~xp%O@M?e z&&H^v)=1|55w15O-u?-rxLur9$`l)NR=RG7s#}=$dCPWaDW+8b5l{52QkLA;uJT{2 zz|sU!mKv9Oa)UxjapD38@vmtHOGFu|VvMWCl+f8c#;eI)h?R0QQigQDD2;oN#IT28 zU&!)o`l=cn0rH6R918>j=e^N}h7gq>{P=TDpFZI`AHBzSzWqLDr)NArJ!Rbwq!4R& z*I#HcB5Hrn)c#H2Z;04uZfR(wS%ChxLx}&st0E4o!Sy~T@WA(f{?m83moB$4_gK^b zwmdL-kb03J2%!_gnZTFxkp6hTX3bmb7hzx~vu#5T#3Bx|=^5PaaBbQ{R7Lg+(%4!* z{46_ojm=&zbp^U|6B$3^!eToo29K%~`((hoyu15w(^9>DJpuI>Ulb3JCR{=*w z-teOAt7MIn zdge9fe#OT6CimQ4>zr;n7B9UKZ+imRuih*X)bT{S@zZze))>88Sl4Un3MY_w@+p-!fi+8=@E-32Ol5| z7YZ4niUD1JN9-l*(B*~WVh8l%q_-J~F^C{hcogAb2RXhAcR}v@pPbK&*=>O1Z&#$- z#SR$z*5)|(1f=u9Du8U}A@%houl*V!2hYJR(m{{!BP-+B;MjaN9>!nxO3ztdX|TwZ z?`bdlOS}3nM6O!+uO9o&waXcAXmr zHjTRn1VHRA=+A=4-wDVcXebjW?|Z;MzW%mUxSoX>1P<;b<$v|gLsv@-v2x!=P8am* z&_N-yY$GQ}Ek}#M?c=1dD-1fSO6~jjQxY3$ zvKoThBbZJ~k*-YWw=?$vQz7Fjl${!#y6M!;VBKfdUC+APvF**P7|nt~0)u7-Q^%Bt zFbmebVu%XC)nypU;OD>|mpxYdR?Af-&xUETg&^c?483BiWYr0-X=W2#Q;VV;D&HMU zzFBqJ^bou;=T8*9jCY>P&t7$uscw38Me?GOn_DEmJd>Kp=i|BC$dk}3EAMZs^8jzA zu4ykw@?O>fxY%X86gXVC|8G*=zt}Z=m9E5_sB6CX8N5l?i{ zt20N_=&UOx>>-WgmL;|il3jSryGrE%aW(7Uy&yd>dA+&h;xd;zc`_^L2D@CW%<;uD z@T#Jzy})KDT+@|{RYldV7~|I!*@GI5+9b*|LSuoDEIH&=GO5s=bJOS-4=q- z4}}~cgh<3;qL`6ltZ`+gZG@(QrZpru!!$IGB6BpL5`y1#nbd_NSfFGhXGKe4y={1O z8hCcP;rz_#3k*&SBBaKPFQx>^1coUoN8CPV?Bof1fuj)~da;wIQag+n;)Y2vUG~+R zX?)FM*U{&1thcx_dzh$7<8_)1sO70SHXoNUge&HW64Nb)+>*Of?kqq){;LFm&p%r; zY`1*xyB~7v_Pc!gk zU_B$%StU|xYaui%SNJjWk zb;p@Fh`BIIvFbWg0;aL@$b5nh6tXFrD;ZOr8(0j6p?5ok)DV-y5NV*>6?U67gDSmd zw|CIsSl4XT-_Mn`WFp8KCjG2ZAz+~{0>Kvz-B;^OUG1lo1=)m73+s|OFUrP@r@M{I zG#m8lf;1sT;wrEkTp2Wk#*@iuz>VT43b}aVYpz;!baG6)XsfJvm1nLC>Sn!mqW6gB zuND?Ia$|#Y0VD{ann`-HR|l|w1os+IGj_R5o+Ma>u++bu_;9-S0~+7Q|Ev41aM2eA z+wy|?o!H^;gc-2Dw%-pbptHXbyHHb8eBqp(OsL#NUdXw5%Z-~ii1R`SuN;`E*~^a^-Gfs{t{DSuZ2C1+!fo4jm&nO3HGB0!Mt1=UUmt8 zaX3%yE#LC2P8A3-Vg}vNd+=OENZz1aG5MM?tBV(4v)wV|fo{mC%9J>PQ0(=JH#XhP zv9LH_T=&JstCCPr*z|?Z9zG^j{(ll-5hB@~JEI{Gf~$7sK_^j$IsQ?ldc6giyx+Y3 z6CAcl?aTln%xrGz-aYd0it4`T`YL#uZ7Yyiy_0 z4(`)9#<;+5ixO#LL@krdxOHpEz5BOGaS!#|?Rrj6H=LhuDa9KW<8xOnReZ$bLWx3% z36mo7@^nRueVcg}MgCZ{O{F$VK%-P=xu>7f?qCn4rmSGj-{<9q|B>%wm5jTN^b zcio3Q*U{--^Ddnmn7fWetj{Tei@ofH-La{#CR4y0qTh2XE->gZ@T{X&<3Evr4MVk& z!(TV`d~1oX`AJ62DR)nL~f`*O)ymQyBI<{-&PyhL6 zeE89AzWdRA&em%lJ$cSDB>G$!ddHPF(J{fflz$(QznaYC@2c|GT>S^sJUKEvKo?m+ z*b(&%Br#}Pl`2~dq1T0X+46wpf|Nod5JF+O2;4qtxpU{3lUtFdEhy*2P)IQlEFrje zo>{7XGQ|gBQ7A$z$<4AYOsbVdt0HD`Kat#LCuo|wkcz@C50nCFu_A^95*bwK`ko;V zlr31-kP!x;H=`FQsiDths=zb^Hv!dzg`U#(KB3GLx}u;2hC#g|9}-xk6hnuBK@-pP zHfO`Yll2*ox-Dm=?4ajogNwssKmYMP^q%d3>id7BBT(f>WFu{TpcP!CToRp=#FZa zUcDG$Ha0;Yie9g`cwI~>yjUSju82OyZSt^Mez^FH&WZcZF|`ZA3gzI1a!vJIU%87i zbrIh(9_4ic@|UWDicB1fy~^q3F5f{%;0g%S&o3~3)5PU#>J0KGTugh*_vkBhgubE5 zu`fQCZ*E25x(@jZd15khM8@ugR5PNzH)sKh7+Go~xC(zAjHiR8%dRQdywM=P_7|h% z|9s+=H~0(#g1Lpxn8=oCO@{6B=d;hK0e;QSlDxqfDzCv`o04%4Sc}1S&XYsfj@j2( zP#n+gqU-WO<|BJq_VLH1pkl71sBXpXEDjG!n^x#L=l6#QA$gpGDvSD>OV=~!n9qeL zxL)*R6kgLX;}_MxU78SHbHGGpZ`*_%?k9RR&BQyJ=AL#lUgO??{;=z4xKVZviG=dO z{g&^4beG$0Vg2ke-KHlbK^9Bidw0~kqNBsKkTrYvFhCPM4l~`CtxW<_n*oEm zBBiTq!h@$BDhuwtf1ls{{%yMF4~fqQPRzJ})NudS5sTvw`SVX7@F#!zIdLhx|K4p> zm2T5jL-CBh=H1GWXSDxrax5`!s{-G?p^DXNqsg~pSXT)cDV>i0s4-fI~n+-(Ni#=gDhzCUsV)4R+I4dg5M2)K4gqy*S2*E0~8iFGXtQ2Zp z#K(6TizbDTBB^OeG0|96d6$3^r#T>D6g)C_(KIjoV9+THTK%H&YnI@7j^^U85eQm{ zH6d+fpou*(Len%n6XzEOF}{7j#WWMc87Uhde|U?({{469Hp;Vyfo|AwdUnpU^^U$k zbF})cUc>(^0so`R^RbF!h@g4!Hg{N1G?J}8uxbu2wj*e!lr52gyQ>wsaw&R=gq;-OSvo1ixWKy!{$$#@&`c+yqpFLS#V5 zBJ>1yA<#)+XTo_IINR(v->x~|70$Mgd_%?<0%#C4wch&AKwk($A*j%rt6n}!0~RBT z)rzKRh%u3(Pomv!%TP*%n)d9rg<;%B(W@{ykAfS87{?05xWMb=S?H^!tA&-? z;tEzLj~QBxN^kg7uO2L4iYH2WX%cpG+#EN@U(O?H4Zdq(AS2|1uF8lmF;4;u2XOkE z;}^K@*J_T=sycGeDYF-L6tC-&jTD&-tQz6g(Sqe_S;gXv)AKdY&T2t;?Cfy`qT(WP zNiHXJ@B$=;y(-`7^}E6LiY2eBfF&kZ7kjZn&gX;(_uo0@-aC=q($kqeumARk++VCHS^4Z|5BdE+`lmd2Rxp7u7^j=({Q8IR-}&8peCu0x*bM{Q!Ppk# z+4+V~zkJT~wI@vdU?>sVC0QEspp?FN_oMcOwI)v^DlZR4&OODHtQI8(w<8!~l^)ZM&n951NXg`4Rm~KF6`Bl3$HK|UiY9r2Cc&zZUt#Do zU9a>*q2wL5gJ$XCh>jerR%Gl|;61sIL~+}K7>&HGNv;*lgby3+~>~8T~<+0jw$6nnaH!#bAIsS zPm!K~BLV-di&dTx7p$tFkR>p1G_@UFnWj3t3}*xzNHMco2)B+ScTN_pj#e!1EWrvv zwn$WBbewaTrl-2GqZSB;W!z)K+~-1z|6fsZ5r*tpcP>iFIzcnNRoxIQ5n?37rgG{E z>(dQGF}k5Jj9EL8l19jBs@H68-VLN`Y>F9DN>$8pXr!`YKo~Tz#W*jo^c#Hu~wD7CEOf<;O!mWdro?mM=dE!*uG zyKbneS)nGidyILg`I%nmS{(R=FoPXPnW`7w3EaaUM%AJ+qI&_tRL(0(9^&^C$Xa>ZiVQgY$s=m;b7Z2j1~eKi=qlK1wKByWx~xeB&FUW;51 z^Lg$2BnOU8Q!MhLB+u;fYsb%@Qxt6`V3P!n8vp*;^Jlz!J8=L0Esj>k`n01T6cZs2 zJ=@(Qy3K|Zp)Ycof?#_!-w{0(tU`(>qU9bUUDP{yPGfO>$Wal|p_ztQL#s<-7|0ab zWV8!dF2IVS8FCLgxT?5N2nHHG(GaZ?{^Ba0AuQZFp~kJD!b)2+?A-YM|NL|QA)g~a z!nGY%%LR+OiQRfl9+bcN+lhbUU-=vS`gcF%M_>Gehfg+~Z+0LJAKt#r_ujkB=MPW$ z>8HoSef)SP&ako zZ93NLHM^bCiMTx+hE)D!nRUQp0!aZ$Zg~=-(Ke|n$17Ic3o}Od!46SL0&O&wDbS`! zigi5~hkd5xard2*hNb~6JyN79;41yj_~a)KS>HY9qxatB+36|U^^V(j?(y+=-sRmp zOaA-^pZx7)X17OMgi=OJJ3E_=IkwzQZUAvH9ibx4O9 zyRK)w-O=@486gC`shixt1S1rs9TDi}4SyYUdS4wyW^l-Z4w-WTPnyO_sTk+Gj;HG_ zr<;x^+sv+j#>fy7CM(*QAQ;2>nO86jLK|2fAF;Z1Oln&sL^K;i*Yj-G@#W?@eb=+G z;*+2*rqlQZ`r;L$X^_|FCzTgCse#%BrKk%FmT5K6tllxy1H>SQ z8#US|Tux;6t@EoyN!}D1cAap6)g<*2&VMFCF#rE3S*-kGct~%9|MWJ`+h+3e7w_>^ z_x!6|!`CU4@^wAhUv}Tb*AW4E(_+O}xkm@k;VU?|7k~auF7#ZSHzRDW2@8Tjv4JK9 zOfuP&l)O-gT3xCmfi!_Qe-%4oc7?#kRS?+g)~289e3seoZ6=~3;>GKOeaT+Xue+j6 zH8XOKDUq6n0kE9uhs^o;IlIp35zkLg*>#zKu}BFMp=iDm_Be5WYWIg(oG?GT%JMiU z4$l+11HGegxDU()V&nzTUXfYCHoGrs_TnUZ{8-yFDd(rMZ?ZYKPf7$+o;)&sqR-%? zcer=^eQw=ThGAf{9e8%S<;nS$&DMyOMoJr)Ka;O9%7?GH!PY8 zX0A|5D%|$CZCSBmU_f`qvW1VozvQ=n^LxDW&ON^T^m9J{>kFp|I}Nwv!j3YHi4v zq81pkIucKn>I&kGqnaZ}Ii%Z!npn-rqaldvL!bo9Q}X3H7}Yi*21KicM)W4e?c)_6 zy?2-I-A+6|KV`Fdf{LL6LvewWCM8mcBoXc%MeeVT8HUWy&WzJ_hN3jdeYs06)q*R5 zsnd~i!GaLYFlmS>U^J)=KHt<0?t>W1WE?Le$BRgt#Lv?N%L2go* zU4&5tmTd$Ro;}-f{`?a@`sjpr-#ek(ob&u)$2;$S!1um&_no9_Gp^KZVXI1+s9~Wd z52|R_A=aQFTZ$Hy%(Dkhm?9Zj>KkwAzJO1E4n#S+t6WCg zHudlGFq(b}L-qs|k!m>TNl4QySS%U_OAJ}*`<`95qZ^c5Kyj5HRrmTRj4n4qE07Sc zFaV`^<)v6aB~c_X1m|h>0dnd1vK0QT@954qJU`p8+g8=57$GD~f_EabASfvmQcT=? z@7pwOgQP@PGN;=Or_awh?|VA)j$EF)lFqScYm08aM(Vs$b)h1s-ofTtm5i&%%_11C zsySlZql_ZbhWD1|3Pbzq#Z}%oFH>l|(#z%zH{>h5cj_kdLS@S;QZhF-cLwU)$DqE7 zpVX`T{1?$pxakP|CGJMpO^^QTxW`u|dLlv=t-1jP8wLVK3q&oGqNA%E7BV0-*v)+X z#w71nJ@4k02z&UXywovp>QYr9!lGJ*AKVAbOzHc9T!t#PQfXp_>m!Vu>cI7S@G_I} zpCf;`oYaMR`0$Eu6_*qRFP($U%;?(vEb@897!zH`E-j|cww7aO*_9i^@T zfkGjIN=;m<61-Ryf-x*P$5+J@WQ#(ULd58!ar+p){aYW?FI)cX%P)DRu(s{)3oaoU-OiCCH)swe;gP`4T z?Q&=AN!|PBrPaJsUQ`>sSW9y*NAT5sT$n>uMGd2}(O8w4>LpxDw7#5tg{q1~P44Yd zg;S8Pl-yh;Oa3|?z_IG|Hshq5K>6mlIc|>EE>t0Onvocs-d~I*?yJ-~Ql75zrL!0t z%dUne;&JIsuJ;S?L5^yjBhP)@bD{+DYj#{kggmO1kNhr!oE^e97gm`sfFaZh{;Ihm~XLSFHXu{bm*Jd2#x18i%~=US(x>DbQbX_&>c)wZaRP?;2JplAY= zR+WT;bTmZ}i^mNBAb=)~R;XB{@2*V+ujF3#t1+DNz#;$^h`%@S!7Y!%N6?bl}xO;0!{3LMu zcnOW+t+DK{Nj{;Z)5%HQ%o95yxu{A8%dT+aLMqjNLLuiec~&6anoSZ&O@l~s>D8gI z*=^YFI(9`U7N;aGM9=8GLzW4#p-oGS;68eTk;zCHP;<%GT@kjL*lOZQmwD6|9(I{0 zL+0F+H9}P3c&liNw2PKzxujh#XjToouIGHWHHuVxhuZum7BD_wL!hTEl}eaSF5X3AK|v z%Hs288Qb;#w=YYk4wKAzbYtOAG*;^wW)W|J6c5fdRG&i|Glf#);IANI@Rl2M z7L z>RBBfJM`IH4O6Nwr1{PDTxA@D=8#LR_Fy^`hHjwmASH*%E*33q^6^myWw1iBjFk@2 zrYa>DthhhmVi}RRpzC@}K})2RNC^#;YH=45ZDWMevDxjMMz>fXF_FA=xB_2;qh+Eqw{l4Hv>fy-B8$_XQT*sTKKiqlEv-!$lrRG z-LPf1*>SeruzB*B&Ct=SV`ayERx1S%U{MF3%zWX9;&Qw;U~yb{#Z`WQM)wtoi(M$S z5%ax2BHj(u>x@qAIz1~PXqXnGFkghrp4&GXIL6cv%m}5Q#B4`gy$Nm#df{g_BcP9x z&2uwIPwvYBhJQ5wGz*gm(46?}5Y?-t`^OgjyjmzTj>A=HZ)AUN7Zb_r_mmPdYjPhEWxxdHt8?1~n-Yqj-!3VDaX{WTzx!VR%mk3F3*0 zvA6XIAt3aA|EA|}l@kVwCc0pX7MdWAFf&1-QX1H1gR?VkA8mN|-VwLH^)8#!rvxo* z&dxYq2Hw5*A=F8?t9#$((t}y5dQ8k?hu9vsQ#TRgIMDGiUFGefGXgs>;{?a{Znti8HfW~LI|vz4!eroX94Ofn(Dq*9=;(;2=ckypB-P*n zwi-=vbr>xjUEV-Yj+PB~-@DIy_ZwEnE7H*t3k7p&9-3vGI(}3&PAh^`Lp#;Vr&B8T zPA7Ft%j%M=S*On3VBQXmA#!r-4k0vb`+@b-=j80&v7vXR8cY!aNrhN*DkCD2C}I`z z(r`W~>tRc;4TA-WW;PNyEt$v9&w2EG!}G1O1#%3utHkl`+r0b15lxJgUC*%I@cHxS zeEHxBp{f_utI=GYEGd zk@E5#^WytlWzjSv(vO?PoF}(W?Cc-`8I!;3#6DacCK5ys%wWf$>U#Tvy|wC9VhF$J zWA1k(GEZFJEV6qA|MZ*V=D0b&?!+0FPLI{&EL-8x(l2Rd&q@*j2?#nP~&ap2t1vIlO4!oO|0Hppstk ze8sLSS65vE*(a?R`bgInsZWOsN_sqm81eVS`e7C5f?G!YaXHp%6Qck0QVO*S^Q!`0F3BTq(QtBX+wdth-z6 zhPz-ryY+_u=uZSK9Z@1Dw^wYo9eo~X77c`k!Fg=NAgCzI<%-*P?h>To?D>|Tef9}S z)x}Lr2l{SD(?D#5qouMsO1yjjHplNB!!74lSps-TLuI!moSiUcH>r)kAl9WQB{hOWz;K6}ol>rjo}9xD(EG?oxagdjv67)rrP z!B7g3qQbTaI|+2wunU26H6EXx^YG~zUp(&E_OLvHaMEz{&RvdID@ttH425+!@a2Oi zY}adYcDQPZfpw@gwFsl>MXUoVU$Nkh1N>#xOS_Pad{g=rqpim1n>Z%)VRlV&&4wTs z7Gw*1HuohXZSh2A58yQBcOgcpo-<)uAXV*}&26lr4w>iTt);(e16 zyo>+8($e5n3ViaS(yhI8&v>1+|4oj}tov8}jCHcxx^@G)d`)Bga9wgZ&*o;qyj)Q6 zd{qgxtM<9EqpO9VE7z~u1MJrdo)ssGO3XU5iGbDGSqHZJ-;9>a55&HNqS6RkbsN`DRI=@ zMulaH#HLU(Y|k^FoImCt{TPJLCx)V=hz2EN6-!_}OQtJU@l5^6a8Ok%G$D!yRd1p4<(p-a$1Nc5LH<6bEuHoKI&~W(sjy{XB&3AEqPF^ zxEiNF+)yD~KB&cnMp}wyhLRa**jnH`7uH4Cs_}Tc;gculJUZLb0n#Sk|L*&IXLZ8q zuH*Tx=jmq0>5~oHtPDZW(0Jy)SW!~OER%sgIOcXrV9aVF<9;d8E?1m-^xDPtlDb+5 zdwlt8?+A8vnd|yG-7A;SjJmj4b)!t-()mrY*Vk0rqRgR>a`3OJ?%VUD4^0SFQ7qI7 z%H9USiko3xx4S8aUAXx|eQlD5SH+b>8Ru_8=;V;hJxp>B*|ayZ6__W;b``Ak=D0a- zj<3I{h6hYZ0x7xAQqGwWf~z=}aV^$Ku&NEsT7cb)QD6z*Qx9L2D=du=^K6m|&q}ayJ%eLk#qTYhyMkx(a=824o3BXqF7a zKxrea0=Wn#39$jnX8$=;fhRbOaJoL3)GECRF&4p<5Zt3$Ot82ho3hTn?zD}cMp2`a zyOkzmge0hCOtcz&7lJF-kfPBxZe|`th)vj!mq=YKMOve0p3L=CYqDK*j9Kc) z6s<66r$%J~oaV;1ck}uD81CNNaD1W;DK0JyxLUQ8qHNYZIUA>&OuvQ25{d?f3Ja~K z0~FkL0hzTVEV@a%z_MMDcLTdpxOE#o`bhZo-?+=Y_Zt5EhyNuhI~6ooBC(*66)Z9) z9h=R-`P1j9zDHUGzVmC}=ko^-_`wgqVEuT_(eaW(q|1(0l&qe zifza?AkkQz2=Baen|I#7MY~Ln`D{wiYaN-di|e8TodeH z-4UBFf`^qcpIq6syC>-6Jdqk9Bv#qgk_N`k&8*S{PJa@{j} z8wptmhxg`n&*6;&+M90Tul(^QmD|58ot|P!xDXT~uDmxUcUSp)UJSfTDHHGc=J@)? zsl6l_xs*sSCk4Dtj%Rz5Xyii2NnbmWoBQ@%QnnsD#1|5zOA71;xj27nvWXk6LDtlL zD#^&@6GZog)V=CrE!~H?C*t0!APF=<_9b(fCwFoQIW&>-pK&PaUBa>h)CWl4-TN8vPUpOnNWSglY#N6@w@NYa)XV z3>p{+Wb0|nScSN^vobmGwwOxM~4K1Eq?T1VAOyqhzfqix@dQojjVy z2Bv23Xtf5C10g0D9DR_)C_$^K!Qp)m;RRX%L2%~jVcdxsT5N)y?$=3&t0!}fRYAPS zz`oEh=8jq>kRg`ffkYmh1;TlziQcpd5%l@4(uYRH)t1r6l+rj((zMzgRO!ep#2k^{&;hI$q!)@7LRETFm6}ZWB4S1w-9OQ zw(f72b0&8%3_>nCC3BhJ6^tP40t{8{LZe}e#I|X9xEc8D;bR`0Z|OrK9Ni|q{~_P` z_%2^Qd&bWmKH>T2Pch4oqHm&$h^hN`WDV6PuRsU{3+_ch!NgE02u?Ddcj_kefL)Xv zo(0kN`c*oW!=QU!X_|Nc#wtm1BbIA}{ugdYB3CA)icO1V3~`n$83dg&E(>+RvOQcf z)|U0Y|0Gz_sp>LjLNZ-nVDumHNk1yQzBoxD?1|2P9feq*-&G6ym8AXp^LZjXDZ5@U zPrv-=Z066mPw=i2LmA)8s>0ORmD`KT+yq=V$IbDV;Rswd`W7agt5=5A-M}<|#R~!# z3d`f(j9o7WeJSC2<=6=bn5OM5I>~ z&}9~5&3|`^^Y@a3eL@t85Y1)rWm19^j|oTj?wJo@(Aj5+%sPElF@1cU?CB`3#{flo z*N>nwfEazyTwqU4$?O4CexoC5>4JX2K6>+nP4-qrbcttA3&UEGT!oGrkPuND$hLFu!<@N&d_<-E!~U_h{M`O@dv9tO;c4 z`AO-Cn2)83dx>`I^UH{EXA?N64b3T`XviT82T` zZno@z9Py51l}9z){9H^32O3d^m=R5AO1!dLXLi}BlPmu2@?Z_uwpZrWnTwsfOG$&e z+Ua#0{)=FWHk*0DE(am8+9!mGFK7%l_(Bx|X;ux4Avo-EL>`Rr4U{zNz)eZgXx&g( z{ONb{!aZ!7=q87off#5A6Bd2GfWPoQNT{Mchg`f60;QBIE2a`~v&#zv`;jkrU0$8i zyf=E&vAQ{Kj=yZjRZxBKf}>Q+nwyp3=9pR_GN(9Hp%Zy=X83ib{_~_@+}TP^He#6D zGS#A{?Ynk5PhxGK3|>qQM&<7?gMo&5Z1o15yo*KjNddBYAzRqnDTp`>aZJd@snlYBF-o>FBn4_Lx1-z&~LUPrlLJq@$ zX2I0et27xc=8am7=sf;V@1Z$(F}vU5*q!Yz6rXK`Dtbm5#^Ss=bxUz&%eiM~m{d$5 zhO1TH-Ix3IvOF`P6i<&s9BT4h4hjaPHX#bJiUmai*^@d`go0Y{>hv}i69(^IjvYcZ z^6b2AUO}j1UCaog`|Ouk?};;3`!4eANnxRhmJ=Gzk?2&U5QP*9!PXqN$7sBVmL0kD z^;s?v5|17{3WpQ3yGg#G)&5O55bEj^~nFZ+$8G^$$4TRnYj<_XXN{QGsXoS8mv=*H>T9l##0|T7~29#|-@O-o3Y`vq`I`B;>t0SJC4?KRjVKWTSwhYqH zwJR1UcgX#YZQs%L1*{+ia)7l!8>~K12o_yLr4-*{&89?84NvlN+6#!xMqGYDr_5eZ zi8xp-?C>w7max=pO0d-Y-Ur#^76lBQy-uf z5Gxax&82bGTkkqsjDsh$T2-cGk|*{AP-^*lR{o~CwV zXnb?r9Dhj?y^BSt5nS~;OTf$Yl;8Gpa(VZ&*>`&&pv|hD@nFZf{QcEC)6Fr(lOfb% zDbxO>a6K>m%|_(RYwYq~cimBHG8FXkz>HC_VtbX)s#zDV7z@l2z6lXEj-S!>yuRKp z?%sA)a%ZnRlO`@bN9g}9ix5X{2LhvR<&5o`5_4Noz8>E_$d$JnvluxIp zTy(FT8tfKSRGW|~6fy;sYH40o9ZkG@mVuMr&v)N>_P{8Hs}<2DfDIg2Xu;*AeH2!4 z)zBK34nW*1hRT8B>)yB7`;-9{MYgAYZIuy~!v6io`|SCEQW44IH1lV?;L~X8&7u)r z3~rT?LPOLB%-C%*PoJ)N_xOG8z55P%`;3MyK{j4MXoTeoBph*m-m>d9v~7a~A(zbO z4r8gyUQ#WCrLnO|PJV#kTsXWn(BxZ#{zzXb!YFkJ zXw^z%jc`R$KU5Rf{fG z2yd}pFmy~D^@@t+2~HA#J@w4TO<=Txyak_3!H6V_qfd zV%k6HX-69EM3f1CHTC)7xJ#}CtA<6-g0rbt$I^_?ci>JNW}o4U=7hc<&2TOX;b^$N zQ#||QLq9>=!)brc$FCyq?oFU`H~hnw-@6yt(0r5c>vf)P7te1(Ley}p<8|#2%sKNj z2w4=6a8y0QjNnSvl}n=-3yHL3jGi{aN@3XwKkbYjSDZtF%eEU7&9j2t z7(BVHPI*oH8oQ7fe4R=9#pU<9Q+Sbac)Z}rI!ErlCNO# z{KA^W1TA$G9Fy?iKBjY?ri_Z^3R>!YWiL82zVGNm=wl;d71dSn_^HTVG*76Q-9d<^ zw5e329Ry883B*+2t9C}s3L3hpqpS-mO>3Hz{>*~=9_KNx6o^eA#K1{y{KT2}MiP6CawWzi&7=@^2r8#>OPJ!P{UFcDS~X>CENc;y~t z2$?LAr+s2qlr9%`I&hYavtD_+8~9?q<;nTLqjP14%btc5iBjnL4jT%CD%s2vPlGb{ zxuwDlLxttNKz-_xN$pG_sFZSvA9o#$@?uqTgcriR(r|$UJa)}ubLBGY%2j$fdl?NT zHKSAFv7dTP8|y?@S12{7#zx893cXi-jLCG>+v`r;4CU}zj#%@d{a`O$J1fVUDhL~yC?Zsk71vT;eT&89A zPy_qZ+u3)9!OKZ4fp#$3URfg5DAs6D5<(>KX$-6@uH4i+(xsA{uUAU50|NA`bOK(? z1u|~(k(=Y@_!<(3*Zq5|vIP|y72}>m-F4ktJ-5PKEW1 z^$7Qry;jETm0Cxc>m^j}wVK>j_+5zZ^?V5gQ+QK4L@5qE)adX-_y2S9U5qnGsUF5a z_OdF(yy!diz^{dKUGpYmA@(Ah@oG(o@h2%tg*cW2A)O$Rz|}3Z%N^V+ibe9(hSrE! z8zpr{{-PW_$Gw*8_+~K(Ng`!Z8dq|5OSn*}apQwBouB#WS$Iw2Z!@@SO)OKJ4)rQj z594a;`>LLKhO{_7O28x(u6PVAy8Vva3sG^NSxR z-2@So+U++)vXf!28;iA~b}>P)nL5V!fG5$7R~_4S{ZtP2YE@{N!5R()c zRV;dNqV9N|K?13o{9X)PzGq+1)cU8)id<$e3>D3}7o3ccLl z!$_1wkFm=GTJpht&10}Ja{p@ONh?S5PFdE(*{glySjffvtVJdW)_DAlQ?I@Z7@0th zfnJnt+wv>~c4^dsmWfq1T@qMDPz%$Xl>3pV%D;_4zfQ4H0fs8-<`j_;rZ-o!uE|cN zJ;Ry~-$I!CCt*qPB;Ph!M^2YZOR020MgM6N*9#kE;k#ocsjG zBrnDW(L)(zLugZrNCDyug5=ew#bPxXpO01!IYs{VZp%AE#}M{Jcc@VzwUA~`BaboI0P4*2oiL6NV9u8EQ{UC@Mp>|S= z=1M%72Ry>7foEUvoJM3(*sF$*FhuNXzUw?qk_%=T2f}amRSFpsDD@2{uI}xpst$mg zwvYG!BGb_*UxNUYGXrgk#t-?)j*7Z`PyPF1I!og#pIIWR**T44T&`gfq7kXK3!;Y# zu2PtZqXbg3tlp_Eumg$>MlYG9WGok?C^8hJGuRny z3$`<4sIbS9Yx~WxyiZI-A*F_9vBZdUeaHIjoG$lBSg_qGrOU+9U?!|P_o6$MmdAbO z%gvTg*5`b2e#Wz1;c0(Fu|QcJF)UzEW9Xr`!eGJGHO=K<2Pf)iVOf@ink=L1VW#{dn#B*`rSDw|y<1`}S?_-Mx=yb^C)9X<|ZROOro` zvLO%dqc{u>*vPrC*=#Afu-o-?+m1XaA;V{}2^E% zocR-3vlX|HE!ohbWQ8UP%LVjZ_T;jnO_IUqS=b6J8ytr%v2sm~C|2>{HVFWUL_$%d z*8>I8@%k?MEbU3da?r^>{P)d_*DtCF{whO0Z}@dz@4dT>&k!^{vZbaj0V;+>bGf{Bm}`p(tj;!NBlULo``(jqSHwXbj= zMu@!p0>_QzT&4>d-}^=;)aAKDwva;O&SzxL{; zz@WX038qL<^;9GZx!Pt88Fsa1A1mD|4?ihN2|P1?vZ-2YQ2EU@OQ@{QpBBN+F3c3_YbA2qmygEh2%{?R(zs>jpO6hHcj| z3_aNbg+MNWPK7~Wr^0zw&ijFfo6Jw2obt(&Gah$Jj)E+gJSTbc)e6O+Hz(2dn(2mu zN%HR9IIvAH3C=UCNl?TlVyrT@+6!8$QK9H$kT}oG$ARRM`F1b>q#A#R3*_i=z{y;t z^1`GQyIdI%V}iE^yF9s5oRjDeCx?5mT}T>3KuRW#D%dmV&I-9RNG z;5r7r{r)k({+r+7=w!kA>>SOIq~Y1KGk*Hh&pF!|8R*9%e+UO+C$HV~3NxC@sF)~K zaO9fzR9>8zUERg9OYb+?G+g7&8|{L+=PM@Fq0Y!aL99}%#JfKtHraBF=I0_tF*jcx z29LN^nTow{D>g8MU=ZyE(AvFBW>q2�aUi3BGC-*`%8H6c!sjiS58D?ClovuKsxw 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

    KwlbL)@RcI*u%p^4i66z5lWYs`OXUP+V7FL zP~tLA7r4kKm{NYd`c7}X9dqWH38tS05VinDkH3zly*-uCFJyZx_?YOAq_bZ%`8ZEk=UaEd5fQw5|i_?5_8{WHenxKeT5?O zzFLQ8O)3b1AaP-Sr9f~SWYu=HB3XM+`g5=cd25~06`TILJk>=k)pbmr5!$jXjS(la zc$(~sJjA^# z4^gN1u)sl1?saPR8iOFJ1O;C!zMf!nhHC7Om}D^yDGH)7;A2Azwd5Mtf#=+Wbx9FX zdqC1e)`S>y{k%zY$Qp-_bqoHSwS*Xn8ZT`bT$h$v^f+yJ6Sv$#ae+gj3)Id!ACjQ=@eq44H2g>utEqkWHitI8M2m0-dH*VYnLpp zImdK~_|PG<8!^Pkw39pzpuiJfxJjuc2U zKV|VyZpK+=y(kYs5V8!w%z%!^ID?8K_=>H)>-ebDM~9HJc#<6tqmk$vWttVjt+|Y5 zu4em!Gk5g4gsnIe0qBXtR%leB>OXd;Q%~(Be zw_@G8oj;hG9Z2Z}-a_|#o5L%tysPdWAQ>q6=;!v3Bm}*g_Yf3@1L1`iZlMZqy>*A_ zG_o}q;C;Y{RCO~uVRA55CmZh)dbUZl!9B&3KXcjVZnQ4KnRm|+&lyIoy>2=C_gv;u z#7-)2(Z@3#?@i7GpZ(HT>I@p|ibu z&3suihgOZBipdP}$H{9}b9>CQttK25Pq9awLr-4!0nJ6q8wz`Uoa@BUQVDe#97TvB z;%ow_QzC!(2R_7){Qgh!Q~&svdGn12y!0Hr@%o4_eE!os`@HZ&Kk$30KJ#_HcKZmQ z!BRoeZF5F)hOX@dB&283h;DS=B&VHA$(eD^&FMOwpOXqsVOj^a z?1XDqw|MVhA6u5VL5Z)bJiyXMN>6fnt+g}pT4qs}K6lkyZ@ryY5XTyem_#sknZ4${ zy&XRJ$?s)nXOGYS&hPNWFMfsbbef%JyKs{9y-29w ztz|Gs?5K5JxAfl+YcVD&W z-gl@5D+Jl%!C~Ou1&(C3P}Q96 zoQG4&W_QY#4_J*wye=}_BqSP z!RF*m6q7(rzWVwWLJm-GvES-C{!8Q9Khragw0D5+dl z6~q=;3sp5`Xwtp-2)DN3!ykQ_x86PAn{VF-V9Oa~Fk~`~gwRAQ5=1u|+RyLyz12&! zbvAWC+h;9lpb0X^-nofBU2na;AAsGm zb$d(~Y?V`X-cH_Q1h&V{+D9O1@Mx|(_x#4iUDS8ZuAXJ^Nwt-_$7^&BF9XOswWiz> z-%#4#Jb5I*q|1h@3r_1 zn*X%(^d9XVzAmA5`f|-RC7QF%b>U}b&BWI8yunBmkBV8NvnocV%|^u-7Z^P=xO+t9nn`!hBy6To$bjjjrj8T7 z?U^h5fgk*Ce*UNbDX)IxE_=YoKCsJw_#gcV2KL|b&p-VQoDq&jM?_L+Gm5sLJ(8Nb zLrC}3u%4aN9Qrs8ZbQn_rExZBRO%RUB7~@1Dd4-m{Y8H8d%u@I@S{J1t+%HQ2AsTG&TX{$r9SA@TW{xLonTluF|;m$Ad>hLx?uP`xe(sZc5334b--@b z&sRO9b5D;-1ZfCJI@csn76maB_y~2a7-K;L7>g*3HHnsQn)L)@{#n1Up8!_uf9A|LkWen6Nj5=RAD>hp!OtzsvZ&`vhPh zO5H4+oLG(8`Gckm-&}d%<;e7Odk}RoycCmcg|kU+VN%2GH*fRX@@xFczx-vs`sx7{ zuv@@U5NffR^sOmYo#o9=s}*%#Ry7eSF{sLnj#cuV>P!Nn$%Sva-7S*Gs452Y)R!pq z)?07ycc6Cyu%hs&|R6NsPV*>okpyERtYxGrr+C!AkUnzHJ)}u zUB*=v+pP1#PetbFlDj|CIWfn1FewYla1Hz!s&7A2P41n`U?x;GRsvQMP^*I?2GD?r z!HN(R_9Iz}Abn;*4U(844H1tacCWL0c*Lf^YgVRdPXfrgUae!6N{(2nwyINd8Oi}L zwZd<{e#p)1d%XN@A3=Av_(%5+_`=`*R~*(gg)rV?QFaiq6*Ut9+ITOf<6wq zGPr4gVVo}_Y{+M{Q)!^h9MH|?R#z3R74OxMK#&nc3{^~-s#*^dbxTHZ%Fs zjY|^F(r5WlfLw9b5wo73v+kjK8kYqcHVr;>fqXM37w5LoS+zp*yEQ!>!;|3noiz8) z%ZxF{0+&sO{5-$wQC#;$?gg7ZLtO}zZsy#bf;qa++C7nWR=Jc%Ew6G+&Si~0ugIdD z%5m>7W*@RG)6AbATAx=N)w>+1U3$|iS4CJ^($~2PnfGDzr0m-gi_9v}8hzyE8f^Ay znm^qYe^zj(B&o5pPo#Avzbj;_Hu7OM!&9>2l|{)O?O+kV3TKF(O+w+}9l?|1Y^#2! zxt)1}7c*NFAvQjB3oIHyLXIM|Nt5RF7*oa$>3nBX|2$vRzw+Ak%F(C+S>IcyFI5Laj-()QAwUU?RjY1C^Zx*RW2WMa*6~&bF#cj#p)KA<|{T z8y64pI0M2yW{{LOr{z`J%dh64ud#!4mx+MO?1x$2!4N`b!^|1GE?LUrq4XrgoJ9m@ z9U+FcrapwkQksN%AHRtEY3UWZnd9CS?5($pbKraH?R~!vPI&#Kb4fQ3eVp@Yn?Y&I z*1Mfd&@*GHc%U}^8tkxI18fE zk_^R|%73GRhI)QJi#(AmV2eNxgu*$ju}rHeKKK=}sf%5EUFqY<@-`gp%(W+Xwe;58 z6S&8B$Qb(4tloNC@60QSOJS9Nyh(uNJbjPUUzak63D%jM7%<0J=`WMVqib5OF8jV@ z);K`!Q8D&Ba-f%ijfk}DmT}=>MZm{deBg2QSjPC zTeDAi(5tuJ9vK+fz&X8@*Y_}}>WSjDvZN1UU9XG4#(h@nfcw(-H1ZMcE|or`um)=k zliIUW*aYS^QW!%}MNHDei!pY|p4LzT%c*FNk1ZfKKm>e!$km-4woAu@2M;)kf$Q5t zh6o3v2{o|2eI4&TRaHN6k)p2SWo*)1taGMrYdGY^7hmN1^>lxSqocM|byK;9W$)Q^ zj8x!*&wPM;hX?GB582z=;lb#TVo)ZD6z}KyC}ZziJ~fAbi=T6t2*}e6)>E5HNh|x7`P#@~^Pwk6d;5=S+eIWz_w7$0| z5_0=fx0f)rPsz+b-oRJT3+t8BwfptzYg?h~xH9*4yeF}h@L8yMn5)oRGY;-aUSLrb zt1-7b%_fL6<(s*YRq_}_SsUzlU)nrFYNsnvArj{_PSW2E1LVW&96pTIA%V9~yz&x1 z@PpsatsB?)wSV((`0Q_gIl)$=k9@-ugxXJl$aYask4NlJgg^1``~m*>AOGY0zy8YK zI(u6KMqZgrM}!b^)J31jHD|3Qgn$^~*;~&b2zT$@|pzkh&J@Fs!4W^>6&y>p*~)>_KJHoh8TY+zhRUcT!1U;NoW!yo)(|6TscPyIuF zTda+4CMN$kR2i>5|JeVj%0b=t=u zm89)KH1$jkt*~9d{(~_^RNlRF#8wG=L(8ZNv(05e$We9q^GYnOG0hb*>GzrxaLWm$ z?Rx|W!J}b>wMtzDb}YR2!1KTS(|?-1D_42_jd!>Tm;sDJg;$3X(M!NKxv6>YlP+Y8 zy!!fUDN>YsK8NKXm1=}QS(JzfwXccsao(>IV#G(L~6hDZUv#u3@d z{^S&hc8B10h*7`^6cOq}sK-$5WL1Ft7*&x*^xanonh8GA=Ow}s5pG`n$cRb^IYM#TA@^Eqx{luf0$9_kbH__xQ?5hA*`;VMKWE_Tt;afrIvj5Y>7L6 zk*d;^m?#?%8FuUiz50osKxp?GUSh>?4LqpYg{cPnO|x$Z>3bDrfi)Im4Bq<*9qKC> z6d8mHIHP5&sA3S-M#D+NvhD)B-BIsZo&L4WNw3W|Cs#s4?t0Z-?tL$`zt_td+^Ml> zosj5u8t3ZVuRb?<`5eU0xhW4=T+2=OLSufx+;n_mMqWP$&v!CNQj=yD%L4B2D~3LsNs8AREdUZ z3^8f~r~;~%5R_;_V@;PnQzIf9HHez?2|(_^$ueOz;DO$(aM!^FZap%?%)SBp2f`C; z%h+lKi3&?AWJWMqkD@Bbvy9<*L_hCw`0!zlpE!OgoD;da2mi7Qg&}HESKWF3Z12Z+ z<=Hv8f~niDYKi6-yOT-Wj5**Wb{a^6^(0hf2gB|red#vmlO$%>p-ayWQ)?+ z-&E;0-DGr3S!zXhDc!r{Wk13-nw4LxtI-u>BH0Lln@Z>AwWe$L)NNtX+8y2k7DMg? z7oLMD)Qg!pxa>ufIzW>Ssx@^0t;u{b)>kH}p>?Bbv*{AaH9Ie(8~g91Mo5x{ti`9Q38D+bAUwFeIzrJ154)~+15_t%CbUNW1X>W zf1O^bI;jw1U{s9T>Z_{O9xISXPZ$MmKDwXVZ@h)Ro#tbo`84IyMMA9ar7;9GRGMrI zqDEx%>Quj0x)np+i1d0I=^MCiui=0CoBuuczWQ!{_`myG{QARx#Dayr0~n5!zJVNJ z7!@*@nVz923o`3?-RoY*9e3Qpul&ldaQ@>75*?${l> z@QrD?pv7|0|bzIy2iuk7?pnGRsRmC~Shd=URKJws4$g})K zsTL*aW|>fJB`I7w=kVSWW7(lLKR>$W?${l>V|RQt;5^Y-uZael#s;-%C(vd!OrmW; zOijxS5HvwTP0X97J)!BJFD2B~!QJ(9ckGVc@xsN)E%B>fvW#ve7@4A7(Ozv-p;#i0 zK<*;e)ooKvaij7zv9W_>VomjQoe=SP2Z*`_B$4zbY}+B$g#QVhiUH%A-n7o!YBTWY zQ#YEC`ut70Iw5pg6J>I+D3<~{?euSL^>aaR9d8Q91klCWwxIzOU7Q$=O%(}knziArT-Nv4w{!V3pvWhJ9EVtfpkOv?9D96uU zNL#lw6Qb_HR8yOfD_5diV}NlPD5b}U$e2j4KK@EbeHzhDp<)^PlFCBnlyMmmQ?=Ku zEX&qvqO83PUyRCG12AKZ_!z)@78Vxp-m|>Cj7Snn;VP@PSF}LI-8A0r*d5((Q@9wK8C)v>AaB(`R3 zpDoq8vW2GpETlbmv&G3JzWw%X)4r8|pUB21@exUUe%YvMqctvx+guAV5mApP)aorB zi&8Kq@Ar`^G7Kf-s-W}(4j!H&5diD#bWx?5hwowwb<$xl7XU}l=-wIN1o%7`Y@ zci?5W@d!}WLOm-*;B!x$O4U;la_1QOjyj??NrAvsK^d`N`UzN4A~6sp3GH~vAvzF) zWK&oh!Kdc?rVq}FMT~sKL=!>?hzOZY#rbpR&b1427qquky<7GcOy$#-j zC=xw3DAU08Gcz1JG>>u196zzfv+D&V(92+mp{UFTRXD32SMM&>ZZ&Uryv#==y>y)^=l)>wo<6$&z=WLd=6NYBE+fO8#? zxB2g`VY@Z9MfDqnO|ErdKOxu|Q~$B)Z|j6al8g!Lk*aplH$Y2kpeLjtcpp1DCzxnA;nAA6W13$NtW zZ+IPtFRXIr;xcwH$EQF01wQua$3TRowGm=^$*8!SRQRAjLv}^dgJ9fwJ_!V^ZcclKP5ci7}qMC#jbhn3)mY`M`ZR zS9{Hg2+`MS6|F?1f=0wxT;?FgaOY}4((SaZAA lK+9?2eZy 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%0AO&!8>oh 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≫G3t?<|*$LJ<0t@b{h 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 N@pScbS?83{1OOw-wqgJP literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/logo.gif b/yshop-drink-vue3/public/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1559133cbc2302d27c9503b5a235ac0234a8253 GIT binary patch literal 8984 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

    ^jAC>NHj(45Ug=bYYvnjD@XUlkXW1W`#sc= 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 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/src/App.vue b/yshop-drink-vue3/src/App.vue new file mode 100644 index 0000000..7407d97 --- /dev/null +++ b/yshop-drink-vue3/src/App.vue @@ -0,0 +1,57 @@ + + + diff --git a/yshop-drink-vue3/src/api/express/index.ts b/yshop-drink-vue3/src/api/express/index.ts new file mode 100644 index 0000000..a07e035 --- /dev/null +++ b/yshop-drink-vue3/src/api/express/index.ts @@ -0,0 +1,53 @@ +import request from '@/config/axios' + +export interface ExpressVO { + id: number + code: string + name: string + sort: number +} +// 查询快递公司列表 +export const getExpressList = async () => { + return await request.get({ url: `/order/express/list` }) +} + +// 查询快递公司列表 +export const getExpressPage = async (params: ExpressPageReqVO) => { + return await request.get({ url: `/order/express/page`, params }) +} + +// 查询快递公司详情 +export const getExpress = async (id: number) => { + return await request.get({ url: `/order/express/get?id=` + id }) +} + +// 查询快递鸟公司配置详情 +export const getExpressSet = async () => { + return await request.get({ url: `/order/express/set` }) +} + +export const postExpressSet = async (data) => { + return await request.post({ url: `/order/express/set`,data }) +} + + + +// 新增快递公司 +export const createExpress = async (data: ExpressVO) => { + return await request.post({ url: `/order/express/create`, data }) +} + +// 修改快递公司 +export const updateExpress = async (data: ExpressVO) => { + return await request.put({ url: `/order/express/update`, data }) +} + +// 删除快递公司 +export const deleteExpress = async (id: number) => { + return await request.delete({ url: `/order/express/delete?id=` + id }) +} + +// 导出快递公司 Excel +export const exportExpress = async (params) => { + return await request.download({ url: `/order/express/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/infra/apiAccessLog/index.ts b/yshop-drink-vue3/src/api/infra/apiAccessLog/index.ts new file mode 100644 index 0000000..4fa50e1 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/apiAccessLog/index.ts @@ -0,0 +1,34 @@ +import request from '@/config/axios' + +export interface ApiAccessLogVO { + id: number + traceId: string + userId: number + userType: number + applicationName: string + requestMethod: string + requestParams: string + responseBody: string + requestUrl: string + userIp: string + userAgent: string + operateModule: string + operateName: string + operateType: number + beginTime: Date + endTime: Date + duration: number + resultCode: number + resultMsg: string + createTime: Date +} + +// 查询列表API 访问日志 +export const getApiAccessLogPage = (params: PageParam) => { + return request.get({ url: '/infra/api-access-log/page', params }) +} + +// 导出API 访问日志 +export const exportApiAccessLog = (params) => { + return request.download({ url: '/infra/api-access-log/export-excel', params }) +} diff --git a/yshop-drink-vue3/src/api/infra/apiErrorLog/index.ts b/yshop-drink-vue3/src/api/infra/apiErrorLog/index.ts new file mode 100644 index 0000000..59ee214 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/apiErrorLog/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +export interface ApiErrorLogVO { + id: number + traceId: string + userId: number + userType: number + applicationName: string + requestMethod: string + requestParams: string + requestUrl: string + userIp: string + userAgent: string + exceptionTime: Date + exceptionName: string + exceptionMessage: string + exceptionRootCauseMessage: string + exceptionStackTrace: string + exceptionClassName: string + exceptionFileName: string + exceptionMethodName: string + exceptionLineNumber: number + processUserId: number + processStatus: number + processTime: Date + resultCode: number + createTime: Date +} + +// 查询列表API 访问日志 +export const getApiErrorLogPage = (params: PageParam) => { + return request.get({ url: '/infra/api-error-log/page', params }) +} + +// 更新 API 错误日志的处理状态 +export const updateApiErrorLogPage = (id: number, processStatus: number) => { + return request.put({ + url: '/infra/api-error-log/update-status?id=' + id + '&processStatus=' + processStatus + }) +} + +// 导出API 访问日志 +export const exportApiErrorLog = (params) => { + return request.download({ + url: '/infra/api-error-log/export-excel', + params + }) +} diff --git a/yshop-drink-vue3/src/api/infra/codegen/index.ts b/yshop-drink-vue3/src/api/infra/codegen/index.ts new file mode 100644 index 0000000..441ca83 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/codegen/index.ts @@ -0,0 +1,122 @@ +import request from '@/config/axios' + +export type CodegenTableVO = { + id: number + tableId: number + isParentMenuIdValid: boolean + dataSourceConfigId: number + scene: number + tableName: string + tableComment: string + remark: string + moduleName: string + businessName: string + className: string + classComment: string + author: string + createTime: Date + updateTime: Date + templateType: number + parentMenuId: number +} + +export type CodegenColumnVO = { + id: number + tableId: number + columnName: string + dataType: string + columnComment: string + nullable: number + primaryKey: number + ordinalPosition: number + javaType: string + javaField: string + dictType: string + example: string + createOperation: number + updateOperation: number + listOperation: number + listOperationCondition: string + listOperationResult: number + htmlType: string +} + +export type DatabaseTableVO = { + name: string + comment: string +} + +export type CodegenDetailVO = { + table: CodegenTableVO + columns: CodegenColumnVO[] +} + +export type CodegenPreviewVO = { + filePath: string + code: string +} + +export type CodegenUpdateReqVO = { + table: CodegenTableVO | any + columns: CodegenColumnVO[] +} + +export type CodegenCreateListReqVO = { + dataSourceConfigId: number + tableNames: string[] +} + +// 查询列表代码生成表定义 +export const getCodegenTableList = (dataSourceConfigId: number) => { + return request.get({ url: '/infra/codegen/table/list?dataSourceConfigId=' + dataSourceConfigId }) +} + +// 查询列表代码生成表定义 +export const getCodegenTablePage = (params: PageParam) => { + return request.get({ url: '/infra/codegen/table/page', params }) +} + +// 查询详情代码生成表定义 +export const getCodegenTable = (id: number) => { + return request.get({ url: '/infra/codegen/detail?tableId=' + id }) +} + +// 新增代码生成表定义 +export const createCodegenTable = (data: CodegenCreateListReqVO) => { + return request.post({ url: '/infra/codegen/create', data }) +} + +// 修改代码生成表定义 +export const updateCodegenTable = (data: CodegenUpdateReqVO) => { + return request.put({ url: '/infra/codegen/update', data }) +} + +// 基于数据库的表结构,同步数据库的表和字段定义 +export const syncCodegenFromDB = (id: number) => { + return request.put({ url: '/infra/codegen/sync-from-db?tableId=' + id }) +} + +// 预览生成代码 +export const previewCodegen = (id: number) => { + return request.get({ url: '/infra/codegen/preview?tableId=' + id }) +} + +// 下载生成代码 +export const downloadCodegen = (id: number) => { + return request.download({ url: '/infra/codegen/download?tableId=' + id }) +} + +// 获得表定义 +export const getSchemaTableList = (params) => { + return request.get({ url: '/infra/codegen/db/table/list', params }) +} + +// 基于数据库的表结构,创建代码生成器的表定义 +export const createCodegenList = (data) => { + return request.post({ url: '/infra/codegen/create-list', data }) +} + +// 删除代码生成表定义 +export const deleteCodegenTable = (id: number) => { + return request.delete({ url: '/infra/codegen/delete?tableId=' + id }) +} diff --git a/yshop-drink-vue3/src/api/infra/config/index.ts b/yshop-drink-vue3/src/api/infra/config/index.ts new file mode 100644 index 0000000..5ef59f3 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/config/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +export interface ConfigVO { + id: number | undefined + category: string + name: string + key: string + value: string + type: number + visible: boolean + remark: string + createTime: Date +} + +// 查询参数列表 +export const getConfigPage = (params: PageParam) => { + return request.get({ url: '/infra/config/page', params }) +} + +// 查询参数详情 +export const getConfig = (id: number) => { + return request.get({ url: '/infra/config/get?id=' + id }) +} + +// 根据参数键名查询参数值 +export const getConfigKey = (configKey: string) => { + return request.get({ url: '/infra/config/get-value-by-key?key=' + configKey }) +} + +// 新增参数 +export const createConfig = (data: ConfigVO) => { + return request.post({ url: '/infra/config/create', data }) +} + +// 修改参数 +export const updateConfig = (data: ConfigVO) => { + return request.put({ url: '/infra/config/update', data }) +} + +// 删除参数 +export const deleteConfig = (id: number) => { + return request.delete({ url: '/infra/config/delete?id=' + id }) +} + +// 导出参数 +export const exportConfig = (params) => { + return request.download({ url: '/infra/config/export', params }) +} diff --git a/yshop-drink-vue3/src/api/infra/dataSourceConfig/index.ts b/yshop-drink-vue3/src/api/infra/dataSourceConfig/index.ts new file mode 100644 index 0000000..b413f34 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/dataSourceConfig/index.ts @@ -0,0 +1,35 @@ +import request from '@/config/axios' + +export interface DataSourceConfigVO { + id: number | undefined + name: string + url: string + username: string + password: string + createTime?: Date +} + +// 新增数据源配置 +export const createDataSourceConfig = (data: DataSourceConfigVO) => { + return request.post({ url: '/infra/data-source-config/create', data }) +} + +// 修改数据源配置 +export const updateDataSourceConfig = (data: DataSourceConfigVO) => { + return request.put({ url: '/infra/data-source-config/update', data }) +} + +// 删除数据源配置 +export const deleteDataSourceConfig = (id: number) => { + return request.delete({ url: '/infra/data-source-config/delete?id=' + id }) +} + +// 查询数据源配置详情 +export const getDataSourceConfig = (id: number) => { + return request.get({ url: '/infra/data-source-config/get?id=' + id }) +} + +// 查询数据源配置列表 +export const getDataSourceConfigList = () => { + return request.get({ url: '/infra/data-source-config/list' }) +} diff --git a/yshop-drink-vue3/src/api/infra/demo/demo01/index.ts b/yshop-drink-vue3/src/api/infra/demo/demo01/index.ts new file mode 100644 index 0000000..e34a05d --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/demo/demo01/index.ts @@ -0,0 +1,40 @@ +import request from '@/config/axios' + +export interface Demo01ContactVO { + id: number + name: string + sex: number + birthday: Date + description: string + avatar: string +} + +// 查询示例联系人分页 +export const getDemo01ContactPage = async (params) => { + return await request.get({ url: `/infra/demo01-contact/page`, params }) +} + +// 查询示例联系人详情 +export const getDemo01Contact = async (id: number) => { + return await request.get({ url: `/infra/demo01-contact/get?id=` + id }) +} + +// 新增示例联系人 +export const createDemo01Contact = async (data: Demo01ContactVO) => { + return await request.post({ url: `/infra/demo01-contact/create`, data }) +} + +// 修改示例联系人 +export const updateDemo01Contact = async (data: Demo01ContactVO) => { + return await request.put({ url: `/infra/demo01-contact/update`, data }) +} + +// 删除示例联系人 +export const deleteDemo01Contact = async (id: number) => { + return await request.delete({ url: `/infra/demo01-contact/delete?id=` + id }) +} + +// 导出示例联系人 Excel +export const exportDemo01Contact = async (params) => { + return await request.download({ url: `/infra/demo01-contact/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/infra/demo/demo02/index.ts b/yshop-drink-vue3/src/api/infra/demo/demo02/index.ts new file mode 100644 index 0000000..736a123 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/demo/demo02/index.ts @@ -0,0 +1,37 @@ +import request from '@/config/axios' + +export interface Demo02CategoryVO { + id: number + name: string + parentId: number +} + +// 查询示例分类列表 +export const getDemo02CategoryList = async () => { + return await request.get({ url: `/infra/demo02-category/list` }) +} + +// 查询示例分类详情 +export const getDemo02Category = async (id: number) => { + return await request.get({ url: `/infra/demo02-category/get?id=` + id }) +} + +// 新增示例分类 +export const createDemo02Category = async (data: Demo02CategoryVO) => { + return await request.post({ url: `/infra/demo02-category/create`, data }) +} + +// 修改示例分类 +export const updateDemo02Category = async (data: Demo02CategoryVO) => { + return await request.put({ url: `/infra/demo02-category/update`, data }) +} + +// 删除示例分类 +export const deleteDemo02Category = async (id: number) => { + return await request.delete({ url: `/infra/demo02-category/delete?id=` + id }) +} + +// 导出示例分类 Excel +export const exportDemo02Category = async (params) => { + return await request.download({ url: `/infra/demo02-category/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/infra/demo/demo03/erp/index.ts b/yshop-drink-vue3/src/api/infra/demo/demo03/erp/index.ts new file mode 100644 index 0000000..a2ab539 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/demo/demo03/erp/index.ts @@ -0,0 +1,91 @@ +import request from '@/config/axios' + +export interface Demo03StudentVO { + id: number + name: string + sex: number + birthday: Date + description: string +} + +// 查询学生分页 +export const getDemo03StudentPage = async (params) => { + return await request.get({ url: `/infra/demo03-student/page`, params }) +} + +// 查询学生详情 +export const getDemo03Student = async (id: number) => { + return await request.get({ url: `/infra/demo03-student/get?id=` + id }) +} + +// 新增学生 +export const createDemo03Student = async (data: Demo03StudentVO) => { + return await request.post({ url: `/infra/demo03-student/create`, data }) +} + +// 修改学生 +export const updateDemo03Student = async (data: Demo03StudentVO) => { + return await request.put({ url: `/infra/demo03-student/update`, data }) +} + +// 删除学生 +export const deleteDemo03Student = async (id: number) => { + return await request.delete({ url: `/infra/demo03-student/delete?id=` + id }) +} + +// 导出学生 Excel +export const exportDemo03Student = async (params) => { + return await request.download({ url: `/infra/demo03-student/export-excel`, params }) +} + +// ==================== 子表(学生课程) ==================== + +// 获得学生课程分页 +export const getDemo03CoursePage = async (params) => { + return await request.get({ url: `/infra/demo03-student/demo03-course/page`, params }) +} +// 新增学生课程 +export const createDemo03Course = async (data) => { + return await request.post({ url: `/infra/demo03-student/demo03-course/create`, data }) +} + +// 修改学生课程 +export const updateDemo03Course = async (data) => { + return await request.put({ url: `/infra/demo03-student/demo03-course/update`, data }) +} + +// 删除学生课程 +export const deleteDemo03Course = async (id: number) => { + return await request.delete({ url: `/infra/demo03-student/demo03-course/delete?id=` + id }) +} + +// 获得学生课程 +export const getDemo03Course = async (id: number) => { + return await request.get({ url: `/infra/demo03-student/demo03-course/get?id=` + id }) +} + +// ==================== 子表(学生班级) ==================== + +// 获得学生班级分页 +export const getDemo03GradePage = async (params) => { + return await request.get({ url: `/infra/demo03-student/demo03-grade/page`, params }) +} +// 新增学生班级 +export const createDemo03Grade = async (data) => { + return await request.post({ url: `/infra/demo03-student/demo03-grade/create`, data }) +} + +// 修改学生班级 +export const updateDemo03Grade = async (data) => { + return await request.put({ url: `/infra/demo03-student/demo03-grade/update`, data }) +} + +// 删除学生班级 +export const deleteDemo03Grade = async (id: number) => { + return await request.delete({ url: `/infra/demo03-student/demo03-grade/delete?id=` + id }) +} + +// 获得学生班级 +export const getDemo03Grade = async (id: number) => { + return await request.get({ url: `/infra/demo03-student/demo03-grade/get?id=` + id }) +} diff --git a/yshop-drink-vue3/src/api/infra/demo/demo03/inner/index.ts b/yshop-drink-vue3/src/api/infra/demo/demo03/inner/index.ts new file mode 100644 index 0000000..e366307 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/demo/demo03/inner/index.ts @@ -0,0 +1,57 @@ +import request from '@/config/axios' + +export interface Demo03StudentVO { + id: number + name: string + sex: number + birthday: Date + description: string +} + +// 查询学生分页 +export const getDemo03StudentPage = async (params) => { + return await request.get({ url: `/infra/demo03-student/page`, params }) +} + +// 查询学生详情 +export const getDemo03Student = async (id: number) => { + return await request.get({ url: `/infra/demo03-student/get?id=` + id }) +} + +// 新增学生 +export const createDemo03Student = async (data: Demo03StudentVO) => { + return await request.post({ url: `/infra/demo03-student/create`, data }) +} + +// 修改学生 +export const updateDemo03Student = async (data: Demo03StudentVO) => { + return await request.put({ url: `/infra/demo03-student/update`, data }) +} + +// 删除学生 +export const deleteDemo03Student = async (id: number) => { + return await request.delete({ url: `/infra/demo03-student/delete?id=` + id }) +} + +// 导出学生 Excel +export const exportDemo03Student = async (params) => { + return await request.download({ url: `/infra/demo03-student/export-excel`, params }) +} + +// ==================== 子表(学生课程) ==================== + +// 获得学生课程列表 +export const getDemo03CourseListByStudentId = async (studentId) => { + return await request.get({ + url: `/infra/demo03-student/demo03-course/list-by-student-id?studentId=` + studentId + }) +} + +// ==================== 子表(学生班级) ==================== + +// 获得学生班级 +export const getDemo03GradeByStudentId = async (studentId) => { + return await request.get({ + url: `/infra/demo03-student/demo03-grade/get-by-student-id?studentId=` + studentId + }) +} diff --git a/yshop-drink-vue3/src/api/infra/demo/demo03/normal/index.ts b/yshop-drink-vue3/src/api/infra/demo/demo03/normal/index.ts new file mode 100644 index 0000000..e366307 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/demo/demo03/normal/index.ts @@ -0,0 +1,57 @@ +import request from '@/config/axios' + +export interface Demo03StudentVO { + id: number + name: string + sex: number + birthday: Date + description: string +} + +// 查询学生分页 +export const getDemo03StudentPage = async (params) => { + return await request.get({ url: `/infra/demo03-student/page`, params }) +} + +// 查询学生详情 +export const getDemo03Student = async (id: number) => { + return await request.get({ url: `/infra/demo03-student/get?id=` + id }) +} + +// 新增学生 +export const createDemo03Student = async (data: Demo03StudentVO) => { + return await request.post({ url: `/infra/demo03-student/create`, data }) +} + +// 修改学生 +export const updateDemo03Student = async (data: Demo03StudentVO) => { + return await request.put({ url: `/infra/demo03-student/update`, data }) +} + +// 删除学生 +export const deleteDemo03Student = async (id: number) => { + return await request.delete({ url: `/infra/demo03-student/delete?id=` + id }) +} + +// 导出学生 Excel +export const exportDemo03Student = async (params) => { + return await request.download({ url: `/infra/demo03-student/export-excel`, params }) +} + +// ==================== 子表(学生课程) ==================== + +// 获得学生课程列表 +export const getDemo03CourseListByStudentId = async (studentId) => { + return await request.get({ + url: `/infra/demo03-student/demo03-course/list-by-student-id?studentId=` + studentId + }) +} + +// ==================== 子表(学生班级) ==================== + +// 获得学生班级 +export const getDemo03GradeByStudentId = async (studentId) => { + return await request.get({ + url: `/infra/demo03-student/demo03-grade/get-by-student-id?studentId=` + studentId + }) +} diff --git a/yshop-drink-vue3/src/api/infra/file/index.ts b/yshop-drink-vue3/src/api/infra/file/index.ts new file mode 100644 index 0000000..0e1b2e7 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/file/index.ts @@ -0,0 +1,45 @@ +import request from '@/config/axios' + +export interface FilePageReqVO extends PageParam { + path?: string + type?: string + createTime?: Date[] +} + +// 文件预签名地址 Response VO +export interface FilePresignedUrlRespVO { + // 文件配置编号 + configId: number + // 文件上传 URL + uploadUrl: string + // 文件 URL + url: string +} + +// 查询文件列表 +export const getFilePage = (params: FilePageReqVO) => { + return request.get({ url: '/infra/file/page', params }) +} + +// 删除文件 +export const deleteFile = (id: number) => { + return request.delete({ url: '/infra/file/delete?id=' + id }) +} + +// 获取文件预签名地址 +export const getFilePresignedUrl = (path: string) => { + return request.get({ + url: '/infra/file/presigned-url', + params: { path } + }) +} + +// 创建文件 +export const createFile = (data: any) => { + return request.post({ url: '/infra/file/create', data }) +} + +// 上传文件 +export const updateFile = (data: any) => { + return request.upload({ url: '/infra/file/upload', data }) +} diff --git a/yshop-drink-vue3/src/api/infra/fileConfig/index.ts b/yshop-drink-vue3/src/api/infra/fileConfig/index.ts new file mode 100644 index 0000000..ba40054 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/fileConfig/index.ts @@ -0,0 +1,61 @@ +import request from '@/config/axios' + +export interface FileClientConfig { + basePath: string + host?: string + port?: number + username?: string + password?: string + mode?: string + endpoint?: string + bucket?: string + accessKey?: string + accessSecret?: string + domain: string +} + +export interface FileConfigVO { + id: number + name: string + storage?: number + master: boolean + visible: boolean + config: FileClientConfig + remark: string + createTime: Date +} + +// 查询文件配置列表 +export const getFileConfigPage = (params: PageParam) => { + return request.get({ url: '/infra/file-config/page', params }) +} + +// 查询文件配置详情 +export const getFileConfig = (id: number) => { + return request.get({ url: '/infra/file-config/get?id=' + id }) +} + +// 更新文件配置为主配置 +export const updateFileConfigMaster = (id: number) => { + return request.put({ url: '/infra/file-config/update-master?id=' + id }) +} + +// 新增文件配置 +export const createFileConfig = (data: FileConfigVO) => { + return request.post({ url: '/infra/file-config/create', data }) +} + +// 修改文件配置 +export const updateFileConfig = (data: FileConfigVO) => { + return request.put({ url: '/infra/file-config/update', data }) +} + +// 删除文件配置 +export const deleteFileConfig = (id: number) => { + return request.delete({ url: '/infra/file-config/delete?id=' + id }) +} + +// 测试文件配置 +export const testFileConfig = (id: number) => { + return request.get({ url: '/infra/file-config/test?id=' + id }) +} diff --git a/yshop-drink-vue3/src/api/infra/job/index.ts b/yshop-drink-vue3/src/api/infra/job/index.ts new file mode 100644 index 0000000..033b2cb --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/job/index.ts @@ -0,0 +1,63 @@ +import request from '@/config/axios' + +export interface JobVO { + id: number + name: string + status: number + handlerName: string + handlerParam: string + cronExpression: string + retryCount: number + retryInterval: number + monitorTimeout: number + createTime: Date +} + +// 任务列表 +export const getJobPage = (params: PageParam) => { + return request.get({ url: '/infra/job/page', params }) +} + +// 任务详情 +export const getJob = (id: number) => { + return request.get({ url: '/infra/job/get?id=' + id }) +} + +// 新增任务 +export const createJob = (data: JobVO) => { + return request.post({ url: '/infra/job/create', data }) +} + +// 修改定时任务调度 +export const updateJob = (data: JobVO) => { + return request.put({ url: '/infra/job/update', data }) +} + +// 删除定时任务调度 +export const deleteJob = (id: number) => { + return request.delete({ url: '/infra/job/delete?id=' + id }) +} + +// 导出定时任务调度 +export const exportJob = (params) => { + return request.download({ url: '/infra/job/export-excel', params }) +} + +// 任务状态修改 +export const updateJobStatus = (id: number, status: number) => { + const params = { + id, + status + } + return request.put({ url: '/infra/job/update-status', params }) +} + +// 定时任务立即执行一次 +export const runJob = (id: number) => { + return request.put({ url: '/infra/job/trigger?id=' + id }) +} + +// 获得定时任务的下 n 次执行时间 +export const getJobNextTimes = (id: number) => { + return request.get({ url: '/infra/job/get_next_times?id=' + id }) +} diff --git a/yshop-drink-vue3/src/api/infra/jobLog/index.ts b/yshop-drink-vue3/src/api/infra/jobLog/index.ts new file mode 100644 index 0000000..dc80f1d --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/jobLog/index.ts @@ -0,0 +1,33 @@ +import request from '@/config/axios' + +export interface JobLogVO { + id: number + jobId: number + handlerName: string + handlerParam: string + cronExpression: string + executeIndex: string + beginTime: Date + endTime: Date + duration: string + status: number + createTime: string +} + +// 任务日志列表 +export const getJobLogPage = (params: PageParam) => { + return request.get({ url: '/infra/job-log/page', params }) +} + +// 任务日志详情 +export const getJobLog = (id: number) => { + return request.get({ url: '/infra/job-log/get?id=' + id }) +} + +// 导出定时任务日志 +export const exportJobLog = (params) => { + return request.download({ + url: '/infra/job-log/export-excel', + params + }) +} diff --git a/yshop-drink-vue3/src/api/infra/redis/index.ts b/yshop-drink-vue3/src/api/infra/redis/index.ts new file mode 100644 index 0000000..f27be77 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/redis/index.ts @@ -0,0 +1,8 @@ +import request from '@/config/axios' + +/** + * 获取redis 监控信息 + */ +export const getCache = () => { + return request.get({ url: '/infra/redis/get-monitor-info' }) +} diff --git a/yshop-drink-vue3/src/api/infra/redis/types.ts b/yshop-drink-vue3/src/api/infra/redis/types.ts new file mode 100644 index 0000000..548bfe9 --- /dev/null +++ b/yshop-drink-vue3/src/api/infra/redis/types.ts @@ -0,0 +1,176 @@ +export interface RedisMonitorInfoVO { + info: RedisInfoVO + dbSize: number + commandStats: RedisCommandStatsVO[] +} + +export interface RedisInfoVO { + io_threaded_reads_processed: string + tracking_clients: string + uptime_in_seconds: string + cluster_connections: string + current_cow_size: string + maxmemory_human: string + aof_last_cow_size: string + master_replid2: string + mem_replication_backlog: string + aof_rewrite_scheduled: string + total_net_input_bytes: string + rss_overhead_ratio: string + hz: string + current_cow_size_age: string + redis_build_id: string + errorstat_BUSYGROUP: string + aof_last_bgrewrite_status: string + multiplexing_api: string + client_recent_max_output_buffer: string + allocator_resident: string + mem_fragmentation_bytes: string + aof_current_size: string + repl_backlog_first_byte_offset: string + tracking_total_prefixes: string + redis_mode: string + redis_git_dirty: string + aof_delayed_fsync: string + allocator_rss_bytes: string + repl_backlog_histlen: string + io_threads_active: string + rss_overhead_bytes: string + total_system_memory: string + loading: string + evicted_keys: string + maxclients: string + cluster_enabled: string + redis_version: string + repl_backlog_active: string + mem_aof_buffer: string + allocator_frag_bytes: string + io_threaded_writes_processed: string + instantaneous_ops_per_sec: string + used_memory_human: string + total_error_replies: string + role: string + maxmemory: string + used_memory_lua: string + rdb_current_bgsave_time_sec: string + used_memory_startup: string + used_cpu_sys_main_thread: string + lazyfree_pending_objects: string + aof_pending_bio_fsync: string + used_memory_dataset_perc: string + allocator_frag_ratio: string + arch_bits: string + used_cpu_user_main_thread: string + mem_clients_normal: string + expired_time_cap_reached_count: string + unexpected_error_replies: string + mem_fragmentation_ratio: string + aof_last_rewrite_time_sec: string + master_replid: string + aof_rewrite_in_progress: string + lru_clock: string + maxmemory_policy: string + run_id: string + latest_fork_usec: string + tracking_total_items: string + total_commands_processed: string + expired_keys: string + errorstat_ERR: string + used_memory: string + module_fork_in_progress: string + errorstat_WRONGPASS: string + aof_buffer_length: string + dump_payload_sanitizations: string + mem_clients_slaves: string + keyspace_misses: string + server_time_usec: string + executable: string + lazyfreed_objects: string + db0: string + used_memory_peak_human: string + keyspace_hits: string + rdb_last_cow_size: string + aof_pending_rewrite: string + used_memory_overhead: string + active_defrag_hits: string + tcp_port: string + uptime_in_days: string + used_memory_peak_perc: string + current_save_keys_processed: string + blocked_clients: string + total_reads_processed: string + expire_cycle_cpu_milliseconds: string + sync_partial_err: string + used_memory_scripts_human: string + aof_current_rewrite_time_sec: string + aof_enabled: string + process_supervised: string + master_repl_offset: string + used_memory_dataset: string + used_cpu_user: string + rdb_last_bgsave_status: string + tracking_total_keys: string + atomicvar_api: string + allocator_rss_ratio: string + client_recent_max_input_buffer: string + clients_in_timeout_table: string + aof_last_write_status: string + mem_allocator: string + used_memory_scripts: string + used_memory_peak: string + process_id: string + master_failover_state: string + errorstat_NOAUTH: string + used_cpu_sys: string + repl_backlog_size: string + connected_slaves: string + current_save_keys_total: string + gcc_version: string + total_system_memory_human: string + sync_full: string + connected_clients: string + module_fork_last_cow_size: string + total_writes_processed: string + allocator_active: string + total_net_output_bytes: string + pubsub_channels: string + current_fork_perc: string + active_defrag_key_hits: string + rdb_changes_since_last_save: string + instantaneous_input_kbps: string + used_memory_rss_human: string + configured_hz: string + expired_stale_perc: string + active_defrag_misses: string + used_cpu_sys_children: string + number_of_cached_scripts: string + sync_partial_ok: string + used_memory_lua_human: string + rdb_last_save_time: string + pubsub_patterns: string + slave_expires_tracked_keys: string + redis_git_sha1: string + used_memory_rss: string + rdb_last_bgsave_time_sec: string + os: string + mem_not_counted_for_evict: string + active_defrag_running: string + rejected_connections: string + aof_rewrite_buffer_length: string + total_forks: string + active_defrag_key_misses: string + allocator_allocated: string + aof_base_size: string + instantaneous_output_kbps: string + second_repl_offset: string + rdb_bgsave_in_progress: string + used_cpu_user_children: string + total_connections_received: string + migrate_cached_sockets: string +} + +export interface RedisCommandStatsVO { + command: string + calls: number + usec: number +} diff --git a/yshop-drink-vue3/src/api/login/index.ts b/yshop-drink-vue3/src/api/login/index.ts new file mode 100644 index 0000000..ef86563 --- /dev/null +++ b/yshop-drink-vue3/src/api/login/index.ts @@ -0,0 +1,81 @@ +import request from '@/config/axios' +import { getRefreshToken } from '@/utils/auth' +import type { UserLoginVO } from './types' + +export interface SmsCodeVO { + mobile: string + scene: number +} + +export interface SmsLoginVO { + mobile: string + code: string +} + +// 登录 +export const login = (data: UserLoginVO) => { + return request.post({ url: '/system/auth/login', data }) +} + +// 刷新访问令牌 +export const refreshToken = () => { + return request.post({ url: '/system/auth/refresh-token?refreshToken=' + getRefreshToken() }) +} + +// 使用租户名,获得租户编号 +export const getTenantIdByName = (name: string) => { + return request.get({ url: '/system/tenant/get-id-by-name?name=' + name }) +} + +// 使用租户域名,获得租户信息 +export const getTenantByWebsite = (website: string) => { + return request.get({ url: '/system/tenant/get-by-website?website=' + website }) +} + +// 登出 +export const loginOut = () => { + return request.post({ url: '/system/auth/logout' }) +} + +// 获取用户权限信息 +export const getInfo = () => { + return request.get({ url: '/system/auth/get-permission-info' }) +} + +//获取登录验证码 +export const sendSmsCode = (data: SmsCodeVO) => { + return request.post({ url: '/system/auth/send-sms-code', data }) +} + +// 短信验证码登录 +export const smsLogin = (data: SmsLoginVO) => { + return request.post({ url: '/system/auth/sms-login', data }) +} + +// 社交快捷登录,使用 code 授权码 +export function socialLogin(type: string, code: string, state: string) { + return request.post({ + url: '/system/auth/social-login', + data: { + type, + code, + state + } + }) +} + +// 社交授权的跳转 +export const socialAuthRedirect = (type: number, redirectUri: string) => { + return request.get({ + url: '/system/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri + }) +} +// 获取验证图片以及 token +export const getCode = (data) => { + return request.postOriginal({ url: 'system/captcha/get', data }) +} + +// 滑动或者点选验证 +export const reqCheck = (data) => { + return request.postOriginal({ url: 'system/captcha/check', data }) +} diff --git a/yshop-drink-vue3/src/api/login/oauth2/index.ts b/yshop-drink-vue3/src/api/login/oauth2/index.ts new file mode 100644 index 0000000..aef1820 --- /dev/null +++ b/yshop-drink-vue3/src/api/login/oauth2/index.ts @@ -0,0 +1,41 @@ +import request from '@/config/axios' + +// 获得授权信息 +export const getAuthorize = (clientId: string) => { + return request.get({ url: '/system/oauth2/authorize?clientId=' + clientId }) +} + +// 发起授权 +export const authorize = ( + responseType: string, + clientId: string, + redirectUri: string, + state: string, + autoApprove: boolean, + checkedScopes: string[], + uncheckedScopes: string[] +) => { + // 构建 scopes + const scopes = {} + for (const scope of checkedScopes) { + scopes[scope] = true + } + for (const scope of uncheckedScopes) { + scopes[scope] = false + } + // 发起请求 + return request.post({ + url: '/system/oauth2/authorize', + headers: { + 'Content-type': 'application/x-www-form-urlencoded' + }, + params: { + response_type: responseType, + client_id: clientId, + redirect_uri: redirectUri, + state: state, + auto_approve: autoApprove, + scope: JSON.stringify(scopes) + } + }) +} diff --git a/yshop-drink-vue3/src/api/login/types.ts b/yshop-drink-vue3/src/api/login/types.ts new file mode 100644 index 0000000..fff8122 --- /dev/null +++ b/yshop-drink-vue3/src/api/login/types.ts @@ -0,0 +1,31 @@ +export type UserLoginVO = { + username: string + password: string + captchaVerification: string + socialType?: string + socialCode?: string + socialState?: string +} + +export type TokenType = { + id: number // 编号 + accessToken: string // 访问令牌 + refreshToken: string // 刷新令牌 + userId: number // 用户编号 + userType: number //用户类型 + clientId: string //客户端编号 + expiresTime: number //过期时间 +} + +export type UserVO = { + id: number + username: string + nickname: string + deptId: number + email: string + mobile: string + sex: number + avatar: string + loginIp: string + loginDate: string +} diff --git a/yshop-drink-vue3/src/api/mall/coupon/index.ts b/yshop-drink-vue3/src/api/mall/coupon/index.ts new file mode 100644 index 0000000..d004f17 --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/coupon/index.ts @@ -0,0 +1,55 @@ +import request from '@/config/axios' + +export interface VO { + id: number + shopId: string + shopName: string + title: string + switch: boolean + least: number + value: number + startTime: Date + endtIme: Date + weigh: number + type: boolean + exchangeCode: string + receive: number + distribute: number + score: number + instructions: string + image: string + limit: number +} +// 查询优惠券列表 +export const getCouponList = async () => { + return await request.get({ url: `/coupon/list` }) +} +// 查询优惠券列表 +export const getCouponPage = async (params: PageReqVO) => { + return await request.get({ url: `/coupon/page`, params }) +} + +// 查询优惠券详情 +export const getCoupon = async (id: number) => { + return await request.get({ url: `/coupon/get?id=` + id }) +} + +// 新增优惠券 +export const createCoupon = async (data: VO) => { + return await request.post({ url: `/coupon/create`, data }) +} + +// 修改优惠券 +export const updateCoupon = async (data: VO) => { + return await request.put({ url: `/coupon/update`, data }) +} + +// 删除优惠券 +export const deleteCoupon = async (id: number) => { + return await request.delete({ url: `/coupon/delete?id=` + id }) +} + +// 导出优惠券 Excel +export const exportCoupon = async (params) => { + return await request.download({ url: `/coupon/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/mall/coupon/user/index.ts b/yshop-drink-vue3/src/api/mall/coupon/user/index.ts new file mode 100644 index 0000000..dabe98f --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/coupon/user/index.ts @@ -0,0 +1,54 @@ +import request from '@/config/axios' + +export interface UserVO { + id: number + shopId: string + shopName: string + title: string + least: number + value: number + starttime: number + endtime: number + createtime: number + updatetime: number + type: boolean + score: number + instructions: string + image: string + userId: number + status: boolean + couponId: number + exchangeCode: string +} +export const getUserList = async (id) => { + return await request.get({ url: `/coupon/user/list?couponId=`+id }) +} +// 查询用户领的优惠券列表 +export const getUserPage = async (params: UserPageReqVO) => { + return await request.get({ url: `/coupon/user/page`, params }) +} + +// 查询用户领的优惠券详情 +export const getUser = async (id: number) => { + return await request.get({ url: `/coupon/user/get?id=` + id }) +} + +// 新增用户领的优惠券 +export const createUser = async (data: UserVO) => { + return await request.post({ url: `/coupon/user/create`, data }) +} + +// 修改用户领的优惠券 +export const updateUser = async (data: UserVO) => { + return await request.put({ url: `/coupon/user/update`, data }) +} + +// 删除用户领的优惠券 +export const deleteUser = async (id: number) => { + return await request.delete({ url: `/coupon/user/delete?id=` + id }) +} + +// 导出用户领的优惠券 Excel +export const exportUser = async (params) => { + return await request.download({ url: `/coupon/user/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/mall/order/storeOrder/index.ts b/yshop-drink-vue3/src/api/mall/order/storeOrder/index.ts new file mode 100644 index 0000000..84378a9 --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/order/storeOrder/index.ts @@ -0,0 +1,120 @@ +import request from '@/config/axios' + +export interface StoreOrderVO { + id: number + orderId: string + extendOrderId: string + uid: number + realName: string + userPhone: string + userAddress: string + cartId: string + freightPrice: number + totalNum: number + totalPrice: number + totalPostage: number + payPrice: number + payPostage: number + deductionPrice: number + couponId: number + couponPrice: number + paid: byte + payTime: Date + payType: string + status: boolean + refundStatus: byte + refundReasonWapImg: string + refundReasonWapExplain: string + refundReasonTime: Date + refundReasonWap: string + refundReason: string + refundPrice: number + deliverySn: string + deliveryName: string + deliveryType: string + deliveryId: string + gainIntegral: number + useIntegral: number + payIntegral: number + backIntegral: number + mark: string + unique: string + remark: string + merId: number + combinationId: number + pinkId: number + cost: number + seckillId: number + bargainId: number + verifyCode: string + storeId: number + shippingType: boolean + isChannel: byte + isSystemDel: boolean +} + +// 查询订单列表 +export const getStoreOrderPage = async (params: StoreOrderPageReqVO) => { + return await request.get({ url: `/order/store-order/page`, params }) +} + +// 查询订单详情 +export const getStoreOrder = async (id: number) => { + return await request.get({ url: `/order/store-order/get?id=` + id }) +} + +// 新增订单 +export const createStoreOrder = async (data: StoreOrderVO) => { + return await request.post({ url: `/order/store-order/create`, data }) +} + +// 修改订单 +export const updateStoreOrder = async (data: StoreOrderVO) => { + return await request.put({ url: `/order/store-order/update`, data }) +} + +// 删除订单 +export const deleteStoreOrder = async (id: number) => { + return await request.delete({ url: `/order/store-order/delete?id=` + id }) +} + +export const payStoreOrder = async (id: number) => { + return await request.get({ url: `/order/store-order/pay?id=` + id }) +} + +export const takeStoreOrder = async (id: number) => { + return await request.get({ url: `/order/store-order/take?id=` + id }) +} + +export const rufundStoreOrder = async (data) => { + return await request.post({ url: `/order/store-order/refund`,data }) +} + + +export const getStoreOrderRecordList = async (id: number) => { + return await request.get({ url: `/order/store-order/record-list?id=` + id }) +} + + + +// 导出订单 Excel +export const exportStoreOrder = async (params) => { + return await request.download({ url: `/order/store-order/export-excel`, params }) +} + +export const getLogistic = async (param1,param2) => { + return await request.get({ url: `/order/express/getLogistic?shipperCode=` + param1 + `&logisticCode=` + param2}) +} + +export const getOrderHtml = async (param1,param2) => { + return await request.get({ url: `/order/store-order/printOrder?id=` + param1 + `&electId=` + param2}) +} + +export const getShopCount = async () => { + return await request.get({ url: `/order/store-order/count`}) +} + +export const orderNoticeUrl = async () => { + return await request.get({ url: `/order/store-order/notice`}) +} + diff --git a/yshop-drink-vue3/src/api/mall/product/brand.ts b/yshop-drink-vue3/src/api/mall/product/brand.ts new file mode 100644 index 0000000..dc8acc2 --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/product/brand.ts @@ -0,0 +1,56 @@ +import request from '@/config/axios' + +/** + * 商品品牌 + */ +export interface BrandVO { + /** + * 品牌编号 + */ + id?: number + /** + * 品牌名称 + */ + name: string + /** + * 品牌图片 + */ + picUrl: string + /** + * 品牌排序 + */ + sort?: number + /** + * 品牌描述 + */ + description?: string + /** + * 开启状态 + */ + status: number +} + +// 创建商品品牌 +export const createBrand = (data: BrandVO) => { + return request.post({ url: '/product/brand/create', data }) +} + +// 更新商品品牌 +export const updateBrand = (data: BrandVO) => { + return request.put({ url: '/product/brand/update', data }) +} + +// 删除商品品牌 +export const deleteBrand = (id: number) => { + return request.delete({ url: `/product/brand/delete?id=${id}` }) +} + +// 获得商品品牌 +export const getBrand = (id: number) => { + return request.get({ url: `/product/brand/get?id=${id}` }) +} + +// 获得商品品牌列表 +export const getBrandParam = (params: PageParam) => { + return request.get({ url: '/product/brand/page', params }) +} diff --git a/yshop-drink-vue3/src/api/mall/product/category.ts b/yshop-drink-vue3/src/api/mall/product/category.ts new file mode 100644 index 0000000..7ae8128 --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/product/category.ts @@ -0,0 +1,60 @@ +import request from '@/config/axios' + +/** + * 产品分类 + */ +export interface CategoryVO { + /** + * 分类编号 + */ + id?: number + /** + * 父分类编号 + */ + parentId?: number + /** + * 分类名称 + */ + name: string + /** + * 分类图片 + */ + picUrl: string + /** + * 分类排序 + */ + sort?: number + /** + * 分类描述 + */ + description?: string + /** + * 开启状态 + */ + status: number +} + +// 创建商品分类 +export const createCategory = (data: CategoryVO) => { + return request.post({ url: '/product/category/create', data }) +} + +// 更新商品分类 +export const updateCategory = (data: CategoryVO) => { + return request.put({ url: '/product/category/update', data }) +} + +// 删除商品分类 +export const deleteCategory = (id: number) => { + return request.delete({ url: `/product/category/delete?id=${id}` }) +} + +// 获得商品分类 +export const getCategory = (id: number) => { + return request.get({ url: `/product/category/get?id=${id}` }) +} + +// 获得商品分类列表 +export const getCategoryList = (params: any) => { + return request.get({ url: '/product/category/list', params }) +} diff --git a/yshop-drink-vue3/src/api/mall/product/product.ts b/yshop-drink-vue3/src/api/mall/product/product.ts new file mode 100644 index 0000000..6ba7168 --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/product/product.ts @@ -0,0 +1,86 @@ +import request from '@/config/axios' + +export interface StoreProductVO { + id: number + image: string + sliderImage: string + storeName: string + storeInfo: string + keyword: string + barCode: string + cateId: string + price: number + vipPrice: number + otPrice: number + postage: number + unitName: string + sort: number + sales: number + stock: number + isShow: boolean + isHot: boolean + isBenefit: boolean + isBest: boolean + isNew: boolean + description: string + isPostage: byte + merUse: byte + giveIntegral: number + cost: number + isSeckill: byte + isBargain: byte + isGood: boolean + ficti: number + browse: number + codePath: string + isSub: boolean + tempId: number + specType: boolean + isIntegral: byte + integral: number +} + +// 查询商品列表 +export const getStoreProductPage = async (params: StoreProductPageReqVO) => { + return await request.get({ url: `/product/store-product/page`, params }) +} + +// 查询商品详情 +export const getStoreProduct = async (id: number) => { + return await request.get({ url: `/product/store-product/get?id=` + id }) +} + +// 查询商品详情 +export const getStoreProductInfo = async (id: number) => { + return await request.get({ url: `/product/store-product/info/` + id }) +} + +// 新增商品 +export const createStoreProduct = async (data) => { + return await request.post({ url: `/product/store-product/create`, data }) +} + +// 修改商品 +export const updateStoreProduct = async (data: StoreProductVO) => { + return await request.put({ url: `/product/store-product/update`, data }) +} + +// 删除商品 +export const deleteStoreProduct = async (id: number) => { + return await request.delete({ url: `/product/store-product/delete?id=` + id }) +} + +// 导出商品 Excel +export const exportStoreProduct = async (params) => { + return await request.download({ url: `/product/store-product/export-excel`, params }) +} +// 规格格式化 +export const isFormatAttr = async (id, data) => { + return await request.post({ url: '/product/store-product/isFormatAttr/' + id, data }) +} + +// 删除商品 +export const saleStoreProduct = async (id,isShow) => { + return await request.get({ url: `/product/store-product/sale?id=` + id + `&type=` + isShow }) +} + diff --git a/yshop-drink-vue3/src/api/mall/product/storeProductRelation/index.ts b/yshop-drink-vue3/src/api/mall/product/storeProductRelation/index.ts new file mode 100644 index 0000000..32ee58b --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/product/storeProductRelation/index.ts @@ -0,0 +1,39 @@ +import request from '@/config/axios' + +export interface StoreProductRelationVO { + id: number + uid: number + productId: number + type: string + category: string +} + +// 查询商品点赞和收藏列表 +export const getStoreProductRelationPage = async (params: StoreProductRelationPageReqVO) => { + return await request.get({ url: `/product/store-product-relation/page`, params }) +} + +// 查询商品点赞和收藏详情 +export const getStoreProductRelation = async (id: number) => { + return await request.get({ url: `/product/store-product-relation/get?id=` + id }) +} + +// 新增商品点赞和收藏 +export const createStoreProductRelation = async (data: StoreProductRelationVO) => { + return await request.post({ url: `/product/store-product-relation/create`, data }) +} + +// 修改商品点赞和收藏 +export const updateStoreProductRelation = async (data: StoreProductRelationVO) => { + return await request.put({ url: `/product/store-product-relation/update`, data }) +} + +// 删除商品点赞和收藏 +export const deleteStoreProductRelation = async (id: number) => { + return await request.delete({ url: `/product/store-product-relation/delete?id=` + id }) +} + +// 导出商品点赞和收藏 Excel +export const exportStoreProductRelation = async (params) => { + return await request.download({ url: `/product/store-product-relation/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/mall/product/storeProductReply/index.ts b/yshop-drink-vue3/src/api/mall/product/storeProductReply/index.ts new file mode 100644 index 0000000..65bb7a3 --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/product/storeProductReply/index.ts @@ -0,0 +1,47 @@ +import request from '@/config/axios' + +export interface StoreProductReplyVO { + id: number + uid: number + oid: number + unique: string + productId: number + replyType: string + productScore: boolean + serviceScore: boolean + comment: string + pics: string + merchantReplyContent: string + merchantReplyTime: Date + isReply: boolean +} + +// 查询评论列表 +export const getStoreProductReplyPage = async (params: StoreProductReplyPageReqVO) => { + return await request.get({ url: `/product/store-product-reply/page`, params }) +} + +// 查询评论详情 +export const getStoreProductReply = async (id: number) => { + return await request.get({ url: `/product/store-product-reply/get?id=` + id }) +} + +// 新增评论 +export const createStoreProductReply = async (data: StoreProductReplyVO) => { + return await request.post({ url: `/product/store-product-reply/create`, data }) +} + +// 修改评论 +export const updateStoreProductReply = async (data: StoreProductReplyVO) => { + return await request.put({ url: `/product/store-product-reply/update`, data }) +} + +// 删除评论 +export const deleteStoreProductReply = async (id: number) => { + return await request.delete({ url: `/product/store-product-reply/delete?id=` + id }) +} + +// 导出评论 Excel +export const exportStoreProductReply = async (params) => { + return await request.download({ url: `/product/store-product-reply/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/mall/shop/ads/index.ts b/yshop-drink-vue3/src/api/mall/shop/ads/index.ts new file mode 100644 index 0000000..5d16ac6 --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/shop/ads/index.ts @@ -0,0 +1,39 @@ +import request from '@/config/axios' + +export interface AdsVO { + id: number + image: string + switch: boolean + weigh: number + shopId: string +} + +// 查询广告图管理列表 +export const getAdsPage = async (params: AdsPageReqVO) => { + return await request.get({ url: `/shop/ads/page`, params }) +} + +// 查询广告图管理详情 +export const getAds = async (id: number) => { + return await request.get({ url: `/shop/ads/get?id=` + id }) +} + +// 新增广告图管理 +export const createAds = async (data: AdsVO) => { + return await request.post({ url: `/shop/ads/create`, data }) +} + +// 修改广告图管理 +export const updateAds = async (data: AdsVO) => { + return await request.put({ url: `/shop/ads/update`, data }) +} + +// 删除广告图管理 +export const deleteAds = async (id: number) => { + return await request.delete({ url: `/shop/ads/delete?id=` + id }) +} + +// 导出广告图管理 Excel +export const exportAds = async (params) => { + return await request.download({ url: `/shop/ads/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/mall/shop/materialGroup/index.ts b/yshop-drink-vue3/src/api/mall/shop/materialGroup/index.ts new file mode 100644 index 0000000..93b4e06 --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/shop/materialGroup/index.ts @@ -0,0 +1,36 @@ +import request from '@/config/axios' + +export interface MaterialGroupVO { + id: number + name: string +} + +// 查询素材分组列表 +export const getMaterialGroupPage = async (params: MaterialGroupPageReqVO) => { + return await request.get({ url: `/shop/material-group/page`, params }) +} + +// 查询素材分组详情 +export const getMaterialGroup = async (id: number) => { + return await request.get({ url: `/shop/material-group/get?id=` + id }) +} + +// 新增素材分组 +export const createMaterialGroup = async (data: MaterialGroupVO) => { + return await request.post({ url: `/shop/material-group/create`, data }) +} + +// 修改素材分组 +export const updateMaterialGroup = async (data: MaterialGroupVO) => { + return await request.put({ url: `/shop/material-group/update`, data }) +} + +// 删除素材分组 +export const deleteMaterialGroup = async (id: number) => { + return await request.delete({ url: `/shop/material-group/delete?id=` + id }) +} + +// 导出素材分组 Excel +export const exportMaterialGroup = async (params) => { + return await request.download({ url: `/shop/material-group/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/mall/shop/recharge/index.ts b/yshop-drink-vue3/src/api/mall/shop/recharge/index.ts new file mode 100644 index 0000000..7765535 --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/shop/recharge/index.ts @@ -0,0 +1,41 @@ +import request from '@/config/axios' + +export interface RechargeVO { + id: number + name: string + sales: number + value: number + weigh: number + status: boolean + sellPrice: number +} + +// 查询充值金额管理列表 +export const getRechargePage = async (params: RechargePageReqVO) => { + return await request.get({ url: `/shop/recharge/page`, params }) +} + +// 查询充值金额管理详情 +export const getRecharge = async (id: number) => { + return await request.get({ url: `/shop/recharge/get?id=` + id }) +} + +// 新增充值金额管理 +export const createRecharge = async (data: RechargeVO) => { + return await request.post({ url: `/shop/recharge/create`, data }) +} + +// 修改充值金额管理 +export const updateRecharge = async (data: RechargeVO) => { + return await request.put({ url: `/shop/recharge/update`, data }) +} + +// 删除充值金额管理 +export const deleteRecharge = async (id: number) => { + return await request.delete({ url: `/shop/recharge/delete?id=` + id }) +} + +// 导出充值金额管理 Excel +export const exportRecharge = async (params) => { + return await request.download({ url: `/shop/recharge/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/mall/shop/service/index.ts b/yshop-drink-vue3/src/api/mall/shop/service/index.ts new file mode 100644 index 0000000..65a7ff3 --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/shop/service/index.ts @@ -0,0 +1,45 @@ +import request from '@/config/axios' + +export interface ServiceVO { + id: number + name: string + image: string + type: string + content: string + pid: number + appId: string + pages: string + phone: string + weigh: number + status: boolean +} + +// 查询我的服务列表 +export const getServicePage = async (params: ServicePageReqVO) => { + return await request.get({ url: `/shop/service/page`, params }) +} + +// 查询我的服务详情 +export const getService = async (id: number) => { + return await request.get({ url: `/shop/service/get?id=` + id }) +} + +// 新增我的服务 +export const createService = async (data: ServiceVO) => { + return await request.post({ url: `/shop/service/create`, data }) +} + +// 修改我的服务 +export const updateService = async (data: ServiceVO) => { + return await request.put({ url: `/shop/service/update`, data }) +} + +// 删除我的服务 +export const deleteService = async (id: number) => { + return await request.delete({ url: `/shop/service/delete?id=` + id }) +} + +// 导出我的服务 Excel +export const exportService = async (params) => { + return await request.download({ url: `/shop/service/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/mall/shop/storeProductRule/index.ts b/yshop-drink-vue3/src/api/mall/shop/storeProductRule/index.ts new file mode 100644 index 0000000..f5fd419 --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/shop/storeProductRule/index.ts @@ -0,0 +1,37 @@ +import request from '@/config/axios' + +export interface StoreProductRuleVO { + id: number + ruleName: string + ruleValue: string +} + +// 查询商品规则值(规格)列表 +export const getStoreProductRulePage = async (params: StoreProductRulePageReqVO) => { + return await request.get({ url: `/product/store-product-rule/page`, params }) +} + +// 查询商品规则值(规格)详情 +export const getStoreProductRule = async (id: number) => { + return await request.get({ url: `/product/store-product-rule/get?id=` + id }) +} + +// 新增商品规则值(规格) +export const createStoreProductRule = async (data: StoreProductRuleVO,id: number) => { + return await request.post({ url: `/product/store-product-rule/save/` + id, data }) +} + +// 修改商品规则值(规格) +export const updateStoreProductRule = async (data: StoreProductRuleVO) => { + return await request.put({ url: `/product/store-product-rule/update`, data }) +} + +// 删除商品规则值(规格) +export const deleteStoreProductRule = async (id: number) => { + return await request.delete({ url: `/product/store-product-rule/delete?id=` + id }) +} + +// 导出商品规则值(规格) Excel +export const exportStoreProductRule = async (params) => { + return await request.download({ url: `/product/store-product-rule/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/mall/store/shop/index.ts b/yshop-drink-vue3/src/api/mall/store/shop/index.ts new file mode 100644 index 0000000..933c796 --- /dev/null +++ b/yshop-drink-vue3/src/api/mall/store/shop/index.ts @@ -0,0 +1,56 @@ +import request from '@/config/axios' + +export interface ShopVO { + id: number + name: string + mobile: string + image: string + images: string + address: string + addressMap: string + lng: string + lat: string + distance: number + minPrice: number + deliveryPrice: number + notice: string + status: boolean + adminId: string + uniprintId: string + startTime: Date + endTime: Date +} + +export const getShopList = async () => { + return await request.get({ url: `/store/shop/list` }) +} + +// 查询门店管理列表 +export const getShopPage = async (params: ShopPageReqVO) => { + return await request.get({ url: `/store/shop/page`, params }) +} + +// 查询门店管理详情 +export const getShop = async (id: number) => { + return await request.get({ url: `/store/shop/get?id=` + id }) +} + +// 新增门店管理 +export const createShop = async (data: ShopVO) => { + return await request.post({ url: `/store/shop/create`, data }) +} + +// 修改门店管理 +export const updateShop = async (data: ShopVO) => { + return await request.put({ url: `/store/shop/update`, data }) +} + +// 删除门店管理 +export const deleteShop = async (id: number) => { + return await request.delete({ url: `/store/shop/delete?id=` + id }) +} + +// 导出门店管理 Excel +export const exportShop = async (params) => { + return await request.download({ url: `/store/shop/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/member/user/index.ts b/yshop-drink-vue3/src/api/member/user/index.ts new file mode 100644 index 0000000..107ea4a --- /dev/null +++ b/yshop-drink-vue3/src/api/member/user/index.ts @@ -0,0 +1,69 @@ +import request from '@/config/axios' + +export interface UserVO { + id: number + username: string + password: string + realName: string + birthday: number + cardId: string + mark: string + partnerId: number + groupId: number + nickname: string + avatar: string + phone: string + addIp: string + lastIp: string + nowMoney: number + brokeragePrice: number + integral: number + signNum: number + status: boolean + level: byte + spreadUid: number + spreadTime: Date + userType: string + isPromoter: byte + payCount: number + spreadCount: number + addres: string + adminid: number + loginType: string + wxProfile: string +} + +// 查询用户列表 +export const getUserPage = async (params: UserPageReqVO) => { + return await request.get({ url: `/member/user/page`, params }) +} + +// 查询用户详情 +export const getUser = async (id: number) => { + return await request.get({ url: `/member/user/get?id=` + id }) +} + +// 新增用户 +export const createUser = async (data: UserVO) => { + return await request.post({ url: `/member/user/create`, data }) +} + +// 修改用户 +export const updateUser = async (data: UserVO) => { + return await request.put({ url: `/member/user/update`, data }) +} + +// 修改余额 +export const updateMony = async (data: UserVO) => { + return await request.put({ url: `/member/user/updateMony`, data }) +} + +// 删除用户 +export const deleteUser = async (id: number) => { + return await request.delete({ url: `/member/user/delete?id=` + id }) +} + +// 导出用户 Excel +export const exportUser = async (params) => { + return await request.download({ url: `/member/user/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/member/userAddress/index.ts b/yshop-drink-vue3/src/api/member/userAddress/index.ts new file mode 100644 index 0000000..9df8ee5 --- /dev/null +++ b/yshop-drink-vue3/src/api/member/userAddress/index.ts @@ -0,0 +1,47 @@ +import request from '@/config/axios' + +export interface UserAddressVO { + id: number + uid: number + realName: string + phone: string + province: string + city: string + cityId: number + district: string + detail: string + postCode: string + longitude: string + latitude: string + isDefault: byte +} + +// 查询用户地址列表 +export const getUserAddressPage = async (params: UserAddressPageReqVO) => { + return await request.get({ url: `/member/user-address/page`, params }) +} + +// 查询用户地址详情 +export const getUserAddress = async (id: number) => { + return await request.get({ url: `/member/user-address/get?id=` + id }) +} + +// 新增用户地址 +export const createUserAddress = async (data: UserAddressVO) => { + return await request.post({ url: `/member/user-address/create`, data }) +} + +// 修改用户地址 +export const updateUserAddress = async (data: UserAddressVO) => { + return await request.put({ url: `/member/user-address/update`, data }) +} + +// 删除用户地址 +export const deleteUserAddress = async (id: number) => { + return await request.delete({ url: `/member/user-address/delete?id=` + id }) +} + +// 导出用户地址 Excel +export const exportUserAddress = async (params) => { + return await request.download({ url: `/member/user-address/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/member/userBill/index.ts b/yshop-drink-vue3/src/api/member/userBill/index.ts new file mode 100644 index 0000000..f8b583d --- /dev/null +++ b/yshop-drink-vue3/src/api/member/userBill/index.ts @@ -0,0 +1,45 @@ +import request from '@/config/axios' + +export interface UserBillVO { + id: number + uid: number + linkId: string + pm: byte + title: string + category: string + type: string + number: number + balance: number + mark: string + status: boolean +} + +// 查询用户账单列表 +export const getUserBillPage = async (params: UserBillPageReqVO) => { + return await request.get({ url: `/member/user-bill/page`, params }) +} + +// 查询用户账单详情 +export const getUserBill = async (id: number) => { + return await request.get({ url: `/member/user-bill/get?id=` + id }) +} + +// 新增用户账单 +export const createUserBill = async (data: UserBillVO) => { + return await request.post({ url: `/member/user-bill/create`, data }) +} + +// 修改用户账单 +export const updateUserBill = async (data: UserBillVO) => { + return await request.put({ url: `/member/user-bill/update`, data }) +} + +// 删除用户账单 +export const deleteUserBill = async (id: number) => { + return await request.delete({ url: `/member/user-bill/delete?id=` + id }) +} + +// 导出用户账单 Excel +export const exportUserBill = async (params) => { + return await request.download({ url: `/member/user-bill/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/message/wechatTemplate/index.ts b/yshop-drink-vue3/src/api/message/wechatTemplate/index.ts new file mode 100644 index 0000000..64ce47b --- /dev/null +++ b/yshop-drink-vue3/src/api/message/wechatTemplate/index.ts @@ -0,0 +1,41 @@ +import request from '@/config/axios' + +export interface WechatTemplateVO { + id: number + tempkey: string + name: string + content: string + tempid: string + status: byte + type: string +} + +// 查询微信模板列表 +export const getWechatTemplatePage = async (params: WechatTemplatePageReqVO) => { + return await request.get({ url: `/message/wechat-template/page`, params }) +} + +// 查询微信模板详情 +export const getWechatTemplate = async (id: number) => { + return await request.get({ url: `/message/wechat-template/get?id=` + id }) +} + +// 新增微信模板 +export const createWechatTemplate = async (data: WechatTemplateVO) => { + return await request.post({ url: `/message/wechat-template/create`, data }) +} + +// 修改微信模板 +export const updateWechatTemplate = async (data: WechatTemplateVO) => { + return await request.put({ url: `/message/wechat-template/update`, data }) +} + +// 删除微信模板 +export const deleteWechatTemplate = async (id: number) => { + return await request.delete({ url: `/message/wechat-template/delete?id=` + id }) +} + +// 导出微信模板 Excel +export const exportWechatTemplate = async (params) => { + return await request.download({ url: `/message/wechat-template/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/mp/account/index.ts b/yshop-drink-vue3/src/api/mp/account/index.ts new file mode 100644 index 0000000..0ee78d4 --- /dev/null +++ b/yshop-drink-vue3/src/api/mp/account/index.ts @@ -0,0 +1,51 @@ +import request from '@/config/axios' + +export interface AccountVO { + id: number + name: string +} + +// 创建公众号账号 +export const createAccount = async (data) => { + return await request.post({ url: '/mp/account/create', data }) +} + +// 更新公众号账号 +export const updateAccount = async (data) => { + return request.put({ url: '/mp/account/update', data: data }) +} + +// 删除公众号账号 +export const deleteAccount = async (id) => { + return request.delete({ url: '/mp/account/delete?id=' + id, method: 'delete' }) +} + +// 获得公众号账号 +export const getAccount = async (id) => { + return request.get({ url: '/mp/account/get?id=' + id }) +} + +// 获得公众号账号分页 +export const getAccountPage = async (query) => { + return request.get({ url: '/mp/account/page', params: query }) +} + +// 获取公众号账号精简信息列表 +export const getSimpleAccountList = async () => { + return request.get({ url: '/mp/account/list-all-simple' }) +} + +// 生成公众号二维码 +export const generateAccountQrCode = async (id) => { + return request.put({ url: '/mp/account/generate-qr-code?id=' + id }) +} + +// 清空公众号 API 配额 +export const clearAccountQuota = async (id) => { + return request.put({ url: '/mp/account/clear-quota?id=' + id }) +} + +export const setAccountMain = async (id) => { + return request.put({ url: '/mp/account/set-main?id=' + id }) +} + diff --git a/yshop-drink-vue3/src/api/mp/account2/index.ts b/yshop-drink-vue3/src/api/mp/account2/index.ts new file mode 100644 index 0000000..19da729 --- /dev/null +++ b/yshop-drink-vue3/src/api/mp/account2/index.ts @@ -0,0 +1,36 @@ +import request from '@/config/axios' + +export interface AccountVO { + id?: number + name: string +} + +// 创建公众号账号 +export const createAccount = async (data) => { + return await request.post({ url: '/ma/account/create', data }) +} + +// 更新公众号账号 +export const updateAccount = async (data) => { + return request.put({ url: '/ma/account/update', data: data }) +} + +// 删除公众号账号 +export const deleteAccount = async (id) => { + return request.delete({ url: '/ma/account/delete?id=' + id, method: 'delete' }) +} + +// 获得公众号账号 +export const getAccount = async (id) => { + return request.get({ url: '/ma/account/get?id=' + id }) +} + +// 获得公众号账号分页 +export const getAccountPage = async (query) => { + return request.get({ url: '/ma/account/page', params: query }) +} + + +export const setAccountMain = async (id) => { + return request.put({ url: '/ma/account/set-main?id=' + id }) +} diff --git a/yshop-drink-vue3/src/api/mp/autoReply/index.ts b/yshop-drink-vue3/src/api/mp/autoReply/index.ts new file mode 100644 index 0000000..5045e6d --- /dev/null +++ b/yshop-drink-vue3/src/api/mp/autoReply/index.ts @@ -0,0 +1,39 @@ +import request from '@/config/axios' + +// 创建公众号的自动回复 +export const createAutoReply = (data) => { + return request.post({ + url: '/mp/auto-reply/create', + data: data + }) +} + +// 更新公众号的自动回复 +export const updateAutoReply = (data) => { + return request.put({ + url: '/mp/auto-reply/update', + data: data + }) +} + +// 删除公众号的自动回复 +export const deleteAutoReply = (id) => { + return request.delete({ + url: '/mp/auto-reply/delete?id=' + id + }) +} + +// 获得公众号的自动回复 +export const getAutoReply = (id) => { + return request.get({ + url: '/mp/auto-reply/get?id=' + id + }) +} + +// 获得公众号的自动回复分页 +export const getAutoReplyPage = (query) => { + return request.get({ + url: '/mp/auto-reply/page', + params: query + }) +} diff --git a/yshop-drink-vue3/src/api/mp/draft/index.ts b/yshop-drink-vue3/src/api/mp/draft/index.ts new file mode 100644 index 0000000..ce6a443 --- /dev/null +++ b/yshop-drink-vue3/src/api/mp/draft/index.ts @@ -0,0 +1,35 @@ +import request from '@/config/axios' + +// 获得公众号草稿分页 +export const getDraftPage = (query) => { + return request.get({ + url: '/mp/draft/page', + params: query + }) +} + +// 创建公众号草稿 +export const createDraft = (accountId, articles) => { + return request.post({ + url: '/mp/draft/create?accountId=' + accountId, + data: { + articles + } + }) +} + +// 更新公众号草稿 +export const updateDraft = (accountId, mediaId, articles) => { + return request.put({ + url: '/mp/draft/update?accountId=' + accountId + '&mediaId=' + mediaId, + method: 'put', + data: articles + }) +} + +// 删除公众号草稿 +export const deleteDraft = (accountId, mediaId) => { + return request.delete({ + url: '/mp/draft/delete?accountId=' + accountId + '&mediaId=' + mediaId + }) +} diff --git a/yshop-drink-vue3/src/api/mp/freePublish/index.ts b/yshop-drink-vue3/src/api/mp/freePublish/index.ts new file mode 100644 index 0000000..beef026 --- /dev/null +++ b/yshop-drink-vue3/src/api/mp/freePublish/index.ts @@ -0,0 +1,23 @@ +import request from '@/config/axios' + +// 获得公众号素材分页 +export const getFreePublishPage = (query) => { + return request.get({ + url: '/mp/free-publish/page', + params: query + }) +} + +// 删除公众号素材 +export const deleteFreePublish = (accountId, articleId) => { + return request.delete({ + url: '/mp/free-publish/delete?accountId=' + accountId + '&articleId=' + articleId + }) +} + +// 发布公众号素材 +export const submitFreePublish = (accountId, mediaId) => { + return request.post({ + url: '/mp/free-publish/submit?accountId=' + accountId + '&mediaId=' + mediaId + }) +} diff --git a/yshop-drink-vue3/src/api/mp/material/index.ts b/yshop-drink-vue3/src/api/mp/material/index.ts new file mode 100644 index 0000000..fcc37ab --- /dev/null +++ b/yshop-drink-vue3/src/api/mp/material/index.ts @@ -0,0 +1,16 @@ +import request from '@/config/axios' + +// 获得公众号素材分页 +export const getMaterialPage = (query) => { + return request.get({ + url: '/mp/material/page', + params: query + }) +} + +// 删除公众号永久素材 +export const deletePermanentMaterial = (id) => { + return request.delete({ + url: '/mp/material/delete-permanent?id=' + id + }) +} diff --git a/yshop-drink-vue3/src/api/mp/menu/index.ts b/yshop-drink-vue3/src/api/mp/menu/index.ts new file mode 100644 index 0000000..cc78647 --- /dev/null +++ b/yshop-drink-vue3/src/api/mp/menu/index.ts @@ -0,0 +1,26 @@ +import request from '@/config/axios' + +// 获得公众号菜单列表 +export const getMenuList = (accountId) => { + return request.get({ + url: '/mp/menu/list?accountId=' + accountId + }) +} + +// 保存公众号菜单 +export const saveMenu = (accountId, menus) => { + return request.post({ + url: '/mp/menu/save', + data: { + accountId, + menus + } + }) +} + +// 删除公众号菜单 +export const deleteMenu = (accountId) => { + return request.delete({ + url: '/mp/menu/delete?accountId=' + accountId + }) +} diff --git a/yshop-drink-vue3/src/api/mp/message/index.ts b/yshop-drink-vue3/src/api/mp/message/index.ts new file mode 100644 index 0000000..ad9b95d --- /dev/null +++ b/yshop-drink-vue3/src/api/mp/message/index.ts @@ -0,0 +1,17 @@ +import request from '@/config/axios' + +// 获得公众号消息分页 +export const getMessagePage = (query: PageParam) => { + return request.get({ + url: '/mp/message/page', + params: query + }) +} + +// 给粉丝发送消息 +export const sendMessage = (data) => { + return request.post({ + url: '/mp/message/send', + data: data + }) +} diff --git a/yshop-drink-vue3/src/api/mp/statistics/index.ts b/yshop-drink-vue3/src/api/mp/statistics/index.ts new file mode 100644 index 0000000..72cae60 --- /dev/null +++ b/yshop-drink-vue3/src/api/mp/statistics/index.ts @@ -0,0 +1,33 @@ +import request from '@/config/axios' + +// 获取消息发送概况数据 +export const getUpstreamMessage = (query) => { + return request.get({ + url: '/mp/statistics/upstream-message', + params: query + }) +} + +// 用户增减数据 +export const getUserSummary = (query) => { + return request.get({ + url: '/mp/statistics/user-summary', + params: query + }) +} + +// 获得用户累计数据 +export const getUserCumulate = (query) => { + return request.get({ + url: '/mp/statistics/user-cumulate', + params: query + }) +} + +// 获得接口分析数据 +export const getInterfaceSummary = (query) => { + return request.get({ + url: '/mp/statistics/interface-summary', + params: query + }) +} diff --git a/yshop-drink-vue3/src/api/mp/tag/index.ts b/yshop-drink-vue3/src/api/mp/tag/index.ts new file mode 100644 index 0000000..50183a5 --- /dev/null +++ b/yshop-drink-vue3/src/api/mp/tag/index.ts @@ -0,0 +1,60 @@ +import request from '@/config/axios' + +export interface TagVO { + id?: number + name: string + accountId: number + createTime: Date +} + +// 创建公众号标签 +export const createTag = (data: TagVO) => { + return request.post({ + url: '/mp/tag/create', + data: data + }) +} + +// 更新公众号标签 +export const updateTag = (data: TagVO) => { + return request.put({ + url: '/mp/tag/update', + data: data + }) +} + +// 删除公众号标签 +export const deleteTag = (id: number) => { + return request.delete({ + url: '/mp/tag/delete?id=' + id + }) +} + +// 获得公众号标签 +export const getTag = (id: number) => { + return request.get({ + url: '/mp/tag/get?id=' + id + }) +} + +// 获得公众号标签分页 +export const getTagPage = (query: PageParam) => { + return request.get({ + url: '/mp/tag/page', + params: query + }) +} + +// 获取公众号标签精简信息列表 +export const getSimpleTagList = () => { + return request.get({ + url: '/mp/tag/list-all-simple' + }) +} + +// 同步公众号标签 +export const syncTag = (accountId: number) => { + return request.post({ + url: '/mp/tag/sync?accountId=' + accountId + }) +} diff --git a/yshop-drink-vue3/src/api/mp/user/index.ts b/yshop-drink-vue3/src/api/mp/user/index.ts new file mode 100644 index 0000000..b89acc7 --- /dev/null +++ b/yshop-drink-vue3/src/api/mp/user/index.ts @@ -0,0 +1,31 @@ +import request from '@/config/axios' + +// 更新公众号粉丝 +export const updateUser = (data) => { + return request.put({ + url: '/mp/user/update', + data: data + }) +} + +// 获得公众号粉丝 +export const getUser = (id) => { + return request.get({ + url: '/mp/user/get?id=' + id + }) +} + +// 获得公众号粉丝分页 +export const getUserPage = (query) => { + return request.get({ + url: '/mp/user/page', + params: query + }) +} + +// 同步公众号粉丝 +export const syncUser = (accountId) => { + return request.post({ + url: '/mp/user/sync?accountId=' + accountId + }) +} diff --git a/yshop-drink-vue3/src/api/pay/merchantDetails/index.ts b/yshop-drink-vue3/src/api/pay/merchantDetails/index.ts new file mode 100644 index 0000000..36c077e --- /dev/null +++ b/yshop-drink-vue3/src/api/pay/merchantDetails/index.ts @@ -0,0 +1,51 @@ +import request from '@/config/axios' + +export interface MerchantDetailsVO { + detailsId: string + payType: string + appid: string + mchId: string + certStoreType: string + keyPrivate: string + keyPublic: string + keyCert: string + keyCertPwd: string + notifyUrl: string + returnUrl: string + signType: string + seller: string + subAppId: string + subMchId: string + inputCharset: string + isTest: boolean +} + +// 查询支付服务商配置列表 +export const getMerchantDetailsPage = async (params: MerchantDetailsPageReqVO) => { + return await request.get({ url: `/pay/merchant-details/page`, params }) +} + +// 查询支付服务商配置详情 +export const getMerchantDetails = async (id: number) => { + return await request.get({ url: `/pay/merchant-details/get?id=` + id }) +} + +// 新增支付服务商配置 +export const createMerchantDetails = async (data: MerchantDetailsVO) => { + return await request.post({ url: `/pay/merchant-details/create`, data }) +} + +// 修改支付服务商配置 +export const updateMerchantDetails = async (data: MerchantDetailsVO) => { + return await request.put({ url: `/pay/merchant-details/update`, data }) +} + +// 删除支付服务商配置 +export const deleteMerchantDetails = async (id: number) => { + return await request.delete({ url: `/pay/merchant-details/delete?id=` + id }) +} + +// 导出支付服务商配置 Excel +export const exportMerchantDetails = async (params) => { + return await request.download({ url: `/pay/merchant-details/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/score/order/index.ts b/yshop-drink-vue3/src/api/score/order/index.ts new file mode 100644 index 0000000..ea4f70f --- /dev/null +++ b/yshop-drink-vue3/src/api/score/order/index.ts @@ -0,0 +1,59 @@ +import request from '@/config/axios' + +export interface OrderVO { + id: number + userId: number + productId: number + number: number + score: number + totalScore: number + ip: string + expressNumber: string + expressCompany: string + customerName: string + customerPhone: string + customerAddress: string + status: boolean + havePaid: number + haveDelivered: number + haveReceived: number +} + +// 查询积分商城订单列表 +export const getOrderPage = async (params: OrderPageReqVO) => { + return await request.get({ url: `/score/order/page`, params }) +} + +// 查询积分商城订单详情 +export const getOrder = async (id: number) => { + return await request.get({ url: `/score/order/get?id=` + id }) +} + +// 新增积分商城订单 +export const createOrder = async (data: OrderVO) => { + return await request.post({ url: `/score/order/create`, data }) +} + +// 修改积分商城订单 +export const updateOrder = async (data: OrderVO) => { + return await request.put({ url: `/score/order/update`, data }) +} + +// 删除积分商城订单 +export const deleteOrder = async (id: number) => { + return await request.delete({ url: `/score/order/delete?id=` + id }) +} + +// 导出积分商城订单 Excel +export const exportOrder = async (params) => { + return await request.download({ url: `/score/order/export-excel`, params }) +} + +export const getLogistic = async (param1,param2) => { + return await request.get({ url: `/order/express/getLogistic?shipperCode=` + param1 + `&logisticCode=` + param2}) +} + +// 收货 +export const takeStoreOrder = async (id) => { + return await request.get({ url: `/score/order/take?id=` + id }) +} diff --git a/yshop-drink-vue3/src/api/score/product/index.ts b/yshop-drink-vue3/src/api/score/product/index.ts new file mode 100644 index 0000000..a0bc238 --- /dev/null +++ b/yshop-drink-vue3/src/api/score/product/index.ts @@ -0,0 +1,44 @@ +import request from '@/config/axios' + +export interface ProductVO { + id: number + title: string + image: string + images: string + desc: string + score: number + weigh: number + stock: number + sales: number + switch: boolean +} + +// 查询积分产品列表 +export const getProductPage = async (params: ProductPageReqVO) => { + return await request.get({ url: `/score/product/page`, params }) +} + +// 查询积分产品详情 +export const getProduct = async (id: number) => { + return await request.get({ url: `/score/product/get?id=` + id }) +} + +// 新增积分产品 +export const createProduct = async (data: ProductVO) => { + return await request.post({ url: `/score/product/create`, data }) +} + +// 修改积分产品 +export const updateProduct = async (data: ProductVO) => { + return await request.put({ url: `/score/product/update`, data }) +} + +// 删除积分产品 +export const deleteProduct = async (id: number) => { + return await request.delete({ url: `/score/product/delete?id=` + id }) +} + +// 导出积分产品 Excel +export const exportProduct = async (params) => { + return await request.download({ url: `/score/product/export-excel`, params }) +} diff --git a/yshop-drink-vue3/src/api/system/area/index.ts b/yshop-drink-vue3/src/api/system/area/index.ts new file mode 100644 index 0000000..e91a499 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/area/index.ts @@ -0,0 +1,11 @@ +import request from '@/config/axios' + +// 获得地区树 +export const getAreaTree = async () => { + return await request.get({ url: '/system/area/tree' }) +} + +// 获得 IP 对应的地区名 +export const getAreaByIp = async (ip: string) => { + return await request.get({ url: '/system/area/get-by-ip?ip=' + ip }) +} diff --git a/yshop-drink-vue3/src/api/system/dept/index.ts b/yshop-drink-vue3/src/api/system/dept/index.ts new file mode 100644 index 0000000..04d5c88 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/dept/index.ts @@ -0,0 +1,43 @@ +import request from '@/config/axios' + +export interface DeptVO { + id?: number + name: string + parentId: number + status: number + sort: number + leaderUserId: number + phone: string + email: string + createTime: Date +} + +// 查询部门(精简)列表 +export const getSimpleDeptList = async (): Promise => { + return await request.get({ url: '/system/dept/simple-list' }) +} + +// 查询部门列表 +export const getDeptPage = async (params: PageParam) => { + return await request.get({ url: '/system/dept/list', params }) +} + +// 查询部门详情 +export const getDept = async (id: number) => { + return await request.get({ url: '/system/dept/get?id=' + id }) +} + +// 新增部门 +export const createDept = async (data: DeptVO) => { + return await request.post({ url: '/system/dept/create', data: data }) +} + +// 修改部门 +export const updateDept = async (params: DeptVO) => { + return await request.put({ url: '/system/dept/update', data: params }) +} + +// 删除部门 +export const deleteDept = async (id: number) => { + return await request.delete({ url: '/system/dept/delete?id=' + id }) +} diff --git a/yshop-drink-vue3/src/api/system/dict/dict.data.ts b/yshop-drink-vue3/src/api/system/dict/dict.data.ts new file mode 100644 index 0000000..f428648 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/dict/dict.data.ts @@ -0,0 +1,49 @@ +import request from '@/config/axios' + +export type DictDataVO = { + id: number | undefined + sort: number | undefined + label: string + value: string + dictType: string + status: number + colorType: string + cssClass: string + remark: string + createTime: Date +} + +// 查询字典数据(精简)列表 +export const getSimpleDictDataList = () => { + return request.get({ url: '/system/dict-data/simple-list' }) +} + +// 查询字典数据列表 +export const getDictDataPage = (params: PageParam) => { + return request.get({ url: '/system/dict-data/page', params }) +} + +// 查询字典数据详情 +export const getDictData = (id: number) => { + return request.get({ url: '/system/dict-data/get?id=' + id }) +} + +// 新增字典数据 +export const createDictData = (data: DictDataVO) => { + return request.post({ url: '/system/dict-data/create', data }) +} + +// 修改字典数据 +export const updateDictData = (data: DictDataVO) => { + return request.put({ url: '/system/dict-data/update', data }) +} + +// 删除字典数据 +export const deleteDictData = (id: number) => { + return request.delete({ url: '/system/dict-data/delete?id=' + id }) +} + +// 导出字典类型数据 +export const exportDictData = (params) => { + return request.download({ url: '/system/dict-data/export', params }) +} diff --git a/yshop-drink-vue3/src/api/system/dict/dict.type.ts b/yshop-drink-vue3/src/api/system/dict/dict.type.ts new file mode 100644 index 0000000..eaa5fb6 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/dict/dict.type.ts @@ -0,0 +1,44 @@ +import request from '@/config/axios' + +export type DictTypeVO = { + id: number | undefined + name: string + type: string + status: number + remark: string + createTime: Date +} + +// 查询字典(精简)列表 +export const getSimpleDictTypeList = () => { + return request.get({ url: '/system/dict-type/list-all-simple' }) +} + +// 查询字典列表 +export const getDictTypePage = (params: PageParam) => { + return request.get({ url: '/system/dict-type/page', params }) +} + +// 查询字典详情 +export const getDictType = (id: number) => { + return request.get({ url: '/system/dict-type/get?id=' + id }) +} + +// 新增字典 +export const createDictType = (data: DictTypeVO) => { + return request.post({ url: '/system/dict-type/create', data }) +} + +// 修改字典 +export const updateDictType = (data: DictTypeVO) => { + return request.put({ url: '/system/dict-type/update', data }) +} + +// 删除字典 +export const deleteDictType = (id: number) => { + return request.delete({ url: '/system/dict-type/delete?id=' + id }) +} +// 导出字典类型 +export const exportDictType = (params) => { + return request.download({ url: '/system/dict-type/export', params }) +} diff --git a/yshop-drink-vue3/src/api/system/loginLog/index.ts b/yshop-drink-vue3/src/api/system/loginLog/index.ts new file mode 100644 index 0000000..7296f25 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/loginLog/index.ts @@ -0,0 +1,25 @@ +import request from '@/config/axios' + +export interface LoginLogVO { + id: number + logType: number + traceId: number + userId: number + userType: number + username: string + result: number + status: number + userIp: string + userAgent: string + createTime: Date +} + +// 查询登录日志列表 +export const getLoginLogPage = (params: PageParam) => { + return request.get({ url: '/system/login-log/page', params }) +} + +// 导出登录日志 +export const exportLoginLog = (params) => { + return request.download({ url: '/system/login-log/export', params }) +} diff --git a/yshop-drink-vue3/src/api/system/mail/account/index.ts b/yshop-drink-vue3/src/api/system/mail/account/index.ts new file mode 100644 index 0000000..15e0391 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/mail/account/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +export interface MailAccountVO { + id: number + mail: string + username: string + password: string + host: string + port: number + sslEnable: boolean + starttlsEnable: boolean +} + +// 查询邮箱账号列表 +export const getMailAccountPage = async (params: PageParam) => { + return await request.get({ url: '/system/mail-account/page', params }) +} + +// 查询邮箱账号详情 +export const getMailAccount = async (id: number) => { + return await request.get({ url: '/system/mail-account/get?id=' + id }) +} + +// 新增邮箱账号 +export const createMailAccount = async (data: MailAccountVO) => { + return await request.post({ url: '/system/mail-account/create', data }) +} + +// 修改邮箱账号 +export const updateMailAccount = async (data: MailAccountVO) => { + return await request.put({ url: '/system/mail-account/update', data }) +} + +// 删除邮箱账号 +export const deleteMailAccount = async (id: number) => { + return await request.delete({ url: '/system/mail-account/delete?id=' + id }) +} + +// 获得邮箱账号精简列表 +export const getSimpleMailAccountList = async () => { + return request.get({ url: '/system/mail-account/simple-list' }) +} diff --git a/yshop-drink-vue3/src/api/system/mail/log/index.ts b/yshop-drink-vue3/src/api/system/mail/log/index.ts new file mode 100644 index 0000000..13172a7 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/mail/log/index.ts @@ -0,0 +1,30 @@ +import request from '@/config/axios' + +export interface MailLogVO { + id: number + userId: number + userType: number + toMail: string + accountId: number + fromMail: string + templateId: number + templateCode: string + templateNickname: string + templateTitle: string + templateContent: string + templateParams: string + sendStatus: number + sendTime: Date + sendMessageId: string + sendException: string +} + +// 查询邮件日志列表 +export const getMailLogPage = async (params: PageParam) => { + return await request.get({ url: '/system/mail-log/page', params }) +} + +// 查询邮件日志详情 +export const getMailLog = async (id: number) => { + return await request.get({ url: '/system/mail-log/get?id=' + id }) +} diff --git a/yshop-drink-vue3/src/api/system/mail/template/index.ts b/yshop-drink-vue3/src/api/system/mail/template/index.ts new file mode 100644 index 0000000..fb7ce5e --- /dev/null +++ b/yshop-drink-vue3/src/api/system/mail/template/index.ts @@ -0,0 +1,50 @@ +import request from '@/config/axios' + +export interface MailTemplateVO { + id: number + name: string + code: string + accountId: number + nickname: string + title: string + content: string + params: string + status: number + remark: string +} + +export interface MailSendReqVO { + mail: string + templateCode: string + templateParams: Map +} + +// 查询邮件模版列表 +export const getMailTemplatePage = async (params: PageParam) => { + return await request.get({ url: '/system/mail-template/page', params }) +} + +// 查询邮件模版详情 +export const getMailTemplate = async (id: number) => { + return await request.get({ url: '/system/mail-template/get?id=' + id }) +} + +// 新增邮件模版 +export const createMailTemplate = async (data: MailTemplateVO) => { + return await request.post({ url: '/system/mail-template/create', data }) +} + +// 修改邮件模版 +export const updateMailTemplate = async (data: MailTemplateVO) => { + return await request.put({ url: '/system/mail-template/update', data }) +} + +// 删除邮件模版 +export const deleteMailTemplate = async (id: number) => { + return await request.delete({ url: '/system/mail-template/delete?id=' + id }) +} + +// 发送邮件 +export const sendMail = (data: MailSendReqVO) => { + return request.post({ url: '/system/mail-template/send-mail', data }) +} diff --git a/yshop-drink-vue3/src/api/system/menu/index.ts b/yshop-drink-vue3/src/api/system/menu/index.ts new file mode 100644 index 0000000..5a80668 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/menu/index.ts @@ -0,0 +1,49 @@ +import request from '@/config/axios' + +export interface MenuVO { + id: number + name: string + permission: string + type: number + sort: number + parentId: number + path: string + icon: string + component: string + componentName?: string + status: number + visible: boolean + keepAlive: boolean + alwaysShow?: boolean + createTime: Date +} + +// 查询菜单(精简)列表 +export const getSimpleMenusList = () => { + return request.get({ url: '/system/menu/simple-list' }) +} + +// 查询菜单列表 +export const getMenuList = (params) => { + return request.get({ url: '/system/menu/list', params }) +} + +// 获取菜单详情 +export const getMenu = (id: number) => { + return request.get({ url: '/system/menu/get?id=' + id }) +} + +// 新增菜单 +export const createMenu = (data: MenuVO) => { + return request.post({ url: '/system/menu/create', data }) +} + +// 修改菜单 +export const updateMenu = (data: MenuVO) => { + return request.put({ url: '/system/menu/update', data }) +} + +// 删除菜单 +export const deleteMenu = (id: number) => { + return request.delete({ url: '/system/menu/delete?id=' + id }) +} diff --git a/yshop-drink-vue3/src/api/system/notice/index.ts b/yshop-drink-vue3/src/api/system/notice/index.ts new file mode 100644 index 0000000..f643469 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/notice/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +export interface NoticeVO { + id: number | undefined + title: string + type: number + content: string + status: number + remark: string + creator: string + createTime: Date +} + +// 查询公告列表 +export const getNoticePage = (params: PageParam) => { + return request.get({ url: '/system/notice/page', params }) +} + +// 查询公告详情 +export const getNotice = (id: number) => { + return request.get({ url: '/system/notice/get?id=' + id }) +} + +// 新增公告 +export const createNotice = (data: NoticeVO) => { + return request.post({ url: '/system/notice/create', data }) +} + +// 修改公告 +export const updateNotice = (data: NoticeVO) => { + return request.put({ url: '/system/notice/update', data }) +} + +// 删除公告 +export const deleteNotice = (id: number) => { + return request.delete({ url: '/system/notice/delete?id=' + id }) +} + +// 推送公告 +export const pushNotice = (id: number) => { + return request.post({ url: '/system/notice/push?id=' + id }) +} diff --git a/yshop-drink-vue3/src/api/system/notify/message/index.ts b/yshop-drink-vue3/src/api/system/notify/message/index.ts new file mode 100644 index 0000000..e407c77 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/notify/message/index.ts @@ -0,0 +1,49 @@ +import request from '@/config/axios' +import qs from 'qs' + +export interface NotifyMessageVO { + id: number + userId: number + userType: number + templateId: number + templateCode: string + templateNickname: string + templateContent: string + templateType: number + templateParams: string + readStatus: boolean + readTime: Date + createTime: Date +} + +// 查询站内信消息列表 +export const getNotifyMessagePage = async (params: PageParam) => { + return await request.get({ url: '/system/notify-message/page', params }) +} + +// 获得我的站内信分页 +export const getMyNotifyMessagePage = async (params: PageParam) => { + return await request.get({ url: '/system/notify-message/my-page', params }) +} + +// 批量标记已读 +export const updateNotifyMessageRead = async (ids) => { + return await request.put({ + url: '/system/notify-message/update-read?' + qs.stringify({ ids: ids }, { indices: false }) + }) +} + +// 标记所有站内信为已读 +export const updateAllNotifyMessageRead = async () => { + return await request.put({ url: '/system/notify-message/update-all-read' }) +} + +// 获取当前用户的最新站内信列表 +export const getUnreadNotifyMessageList = async () => { + return await request.get({ url: '/system/notify-message/get-unread-list' }) +} + +// 获得当前用户的未读站内信数量 +export const getUnreadNotifyMessageCount = async () => { + return await request.get({ url: '/system/notify-message/get-unread-count' }) +} diff --git a/yshop-drink-vue3/src/api/system/notify/template/index.ts b/yshop-drink-vue3/src/api/system/notify/template/index.ts new file mode 100644 index 0000000..44355df --- /dev/null +++ b/yshop-drink-vue3/src/api/system/notify/template/index.ts @@ -0,0 +1,49 @@ +import request from '@/config/axios' + +export interface NotifyTemplateVO { + id?: number + name: string + nickname: string + code: string + content: string + type?: number + params: string + status: number + remark: string +} + +export interface NotifySendReqVO { + userId: number | null + templateCode: string + templateParams: Map +} + +// 查询站内信模板列表 +export const getNotifyTemplatePage = async (params: PageParam) => { + return await request.get({ url: '/system/notify-template/page', params }) +} + +// 查询站内信模板详情 +export const getNotifyTemplate = async (id: number) => { + return await request.get({ url: '/system/notify-template/get?id=' + id }) +} + +// 新增站内信模板 +export const createNotifyTemplate = async (data: NotifyTemplateVO) => { + return await request.post({ url: '/system/notify-template/create', data }) +} + +// 修改站内信模板 +export const updateNotifyTemplate = async (data: NotifyTemplateVO) => { + return await request.put({ url: '/system/notify-template/update', data }) +} + +// 删除站内信模板 +export const deleteNotifyTemplate = async (id: number) => { + return await request.delete({ url: '/system/notify-template/delete?id=' + id }) +} + +// 发送站内信 +export const sendNotify = (data: NotifySendReqVO) => { + return request.post({ url: '/system/notify-template/send-notify', data }) +} diff --git a/yshop-drink-vue3/src/api/system/oauth2/client.ts b/yshop-drink-vue3/src/api/system/oauth2/client.ts new file mode 100644 index 0000000..6f71aca --- /dev/null +++ b/yshop-drink-vue3/src/api/system/oauth2/client.ts @@ -0,0 +1,47 @@ +import request from '@/config/axios' + +export interface OAuth2ClientVO { + id: number + clientId: string + secret: string + name: string + logo: string + description: string + status: number + accessTokenValiditySeconds: number + refreshTokenValiditySeconds: number + redirectUris: string[] + autoApprove: boolean + authorizedGrantTypes: string[] + scopes: string[] + authorities: string[] + resourceIds: string[] + additionalInformation: string + isAdditionalInformationJson: boolean + createTime: Date +} + +// 查询 OAuth2 客户端的列表 +export const getOAuth2ClientPage = (params: PageParam) => { + return request.get({ url: '/system/oauth2-client/page', params }) +} + +// 查询 OAuth2 客户端的详情 +export const getOAuth2Client = (id: number) => { + return request.get({ url: '/system/oauth2-client/get?id=' + id }) +} + +// 新增 OAuth2 客户端 +export const createOAuth2Client = (data: OAuth2ClientVO) => { + return request.post({ url: '/system/oauth2-client/create', data }) +} + +// 修改 OAuth2 客户端 +export const updateOAuth2Client = (data: OAuth2ClientVO) => { + return request.put({ url: '/system/oauth2-client/update', data }) +} + +// 删除 OAuth2 +export const deleteOAuth2Client = (id: number) => { + return request.delete({ url: '/system/oauth2-client/delete?id=' + id }) +} diff --git a/yshop-drink-vue3/src/api/system/oauth2/token.ts b/yshop-drink-vue3/src/api/system/oauth2/token.ts new file mode 100644 index 0000000..ac89ae8 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/oauth2/token.ts @@ -0,0 +1,22 @@ +import request from '@/config/axios' + +export interface OAuth2TokenVO { + id: number + accessToken: string + refreshToken: string + userId: number + userType: number + clientId: string + createTime: Date + expiresTime: Date +} + +// 查询 token列表 +export const getAccessTokenPage = (params: PageParam) => { + return request.get({ url: '/system/oauth2-token/page', params }) +} + +// 删除 token +export const deleteAccessToken = (accessToken: string) => { + return request.delete({ url: '/system/oauth2-token/delete?accessToken=' + accessToken }) +} diff --git a/yshop-drink-vue3/src/api/system/operatelog/index.ts b/yshop-drink-vue3/src/api/system/operatelog/index.ts new file mode 100644 index 0000000..cdb713e --- /dev/null +++ b/yshop-drink-vue3/src/api/system/operatelog/index.ts @@ -0,0 +1,30 @@ +import request from '@/config/axios' + +export type OperateLogVO = { + id: number + traceId: string + userType: number + userId: number + userName: string + type: string + subType: string + bizId: number + action: string + extra: string + requestMethod: string + requestUrl: string + userIp: string + userAgent: string + creator: string + creatorName: string + createTime: Date +} + +// 查询操作日志列表 +export const getOperateLogPage = (params: PageParam) => { + return request.get({ url: '/system/operate-log/page', params }) +} +// 导出操作日志 +export const exportOperateLog = (params: any) => { + return request.download({ url: '/system/operate-log/export', params }) +} diff --git a/yshop-drink-vue3/src/api/system/permission/index.ts b/yshop-drink-vue3/src/api/system/permission/index.ts new file mode 100644 index 0000000..b3c7696 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/permission/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +export interface PermissionAssignUserRoleReqVO { + userId: number + roleIds: number[] +} + +export interface PermissionAssignRoleMenuReqVO { + roleId: number + menuIds: number[] +} + +export interface PermissionAssignRoleDataScopeReqVO { + roleId: number + dataScope: number + dataScopeDeptIds: number[] +} + +// 查询角色拥有的菜单权限 +export const getRoleMenuList = async (roleId: number) => { + return await request.get({ url: '/system/permission/list-role-menus?roleId=' + roleId }) +} + +// 赋予角色菜单权限 +export const assignRoleMenu = async (data: PermissionAssignRoleMenuReqVO) => { + return await request.post({ url: '/system/permission/assign-role-menu', data }) +} + +// 赋予角色数据权限 +export const assignRoleDataScope = async (data: PermissionAssignRoleDataScopeReqVO) => { + return await request.post({ url: '/system/permission/assign-role-data-scope', data }) +} + +// 查询用户拥有的角色数组 +export const getUserRoleList = async (userId: number) => { + return await request.get({ url: '/system/permission/list-user-roles?userId=' + userId }) +} + +// 赋予用户角色 +export const assignUserRole = async (data: PermissionAssignUserRoleReqVO) => { + return await request.post({ url: '/system/permission/assign-user-role', data }) +} diff --git a/yshop-drink-vue3/src/api/system/post/index.ts b/yshop-drink-vue3/src/api/system/post/index.ts new file mode 100644 index 0000000..0e6f2ca --- /dev/null +++ b/yshop-drink-vue3/src/api/system/post/index.ts @@ -0,0 +1,46 @@ +import request from '@/config/axios' + +export interface PostVO { + id?: number + name: string + code: string + sort: number + status: number + remark: string + createTime?: Date +} + +// 查询岗位列表 +export const getPostPage = async (params: PageParam) => { + return await request.get({ url: '/system/post/page', params }) +} + +// 获取岗位精简信息列表 +export const getSimplePostList = async (): Promise => { + return await request.get({ url: '/system/post/simple-list' }) +} + +// 查询岗位详情 +export const getPost = async (id: number) => { + return await request.get({ url: '/system/post/get?id=' + id }) +} + +// 新增岗位 +export const createPost = async (data: PostVO) => { + return await request.post({ url: '/system/post/create', data }) +} + +// 修改岗位 +export const updatePost = async (data: PostVO) => { + return await request.put({ url: '/system/post/update', data }) +} + +// 删除岗位 +export const deletePost = async (id: number) => { + return await request.delete({ url: '/system/post/delete?id=' + id }) +} + +// 导出岗位 +export const exportPost = async (params) => { + return await request.download({ url: '/system/post/export', params }) +} diff --git a/yshop-drink-vue3/src/api/system/role/index.ts b/yshop-drink-vue3/src/api/system/role/index.ts new file mode 100644 index 0000000..3325dde --- /dev/null +++ b/yshop-drink-vue3/src/api/system/role/index.ts @@ -0,0 +1,61 @@ +import request from '@/config/axios' + +export interface RoleVO { + id: number + name: string + code: string + sort: number + status: number + type: number + dataScope: number + dataScopeDeptIds: number[] + createTime: Date +} + +export interface UpdateStatusReqVO { + id: number + status: number +} + +// 查询角色列表 +export const getRolePage = async (params: PageParam) => { + return await request.get({ url: '/system/role/page', params }) +} + +// 查询角色(精简)列表 +export const getSimpleRoleList = async (): Promise => { + return await request.get({ url: '/system/role/simple-list' }) +} + +// 查询角色详情 +export const getRole = async (id: number) => { + return await request.get({ url: '/system/role/get?id=' + id }) +} + +// 新增角色 +export const createRole = async (data: RoleVO) => { + return await request.post({ url: '/system/role/create', data }) +} + +// 修改角色 +export const updateRole = async (data: RoleVO) => { + return await request.put({ url: '/system/role/update', data }) +} + +// 修改角色状态 +export const updateRoleStatus = async (data: UpdateStatusReqVO) => { + return await request.put({ url: '/system/role/update-status', data }) +} + +// 删除角色 +export const deleteRole = async (id: number) => { + return await request.delete({ url: '/system/role/delete?id=' + id }) +} + +// 导出角色 +export const exportRole = (params) => { + return request.download({ + url: '/system/role/export-excel', + params + }) +} diff --git a/yshop-drink-vue3/src/api/system/sms/smsChannel/index.ts b/yshop-drink-vue3/src/api/system/sms/smsChannel/index.ts new file mode 100644 index 0000000..bcdaa7f --- /dev/null +++ b/yshop-drink-vue3/src/api/system/sms/smsChannel/index.ts @@ -0,0 +1,43 @@ +import request from '@/config/axios' + +export interface SmsChannelVO { + id: number + code: string + status: number + signature: string + remark: string + apiKey: string + apiSecret: string + callbackUrl: string + createTime: Date +} + +// 查询短信渠道列表 +export const getSmsChannelPage = (params: PageParam) => { + return request.get({ url: '/system/sms-channel/page', params }) +} + +// 获得短信渠道精简列表 +export function getSimpleSmsChannelList() { + return request.get({ url: '/system/sms-channel/simple-list' }) +} + +// 查询短信渠道详情 +export const getSmsChannel = (id: number) => { + return request.get({ url: '/system/sms-channel/get?id=' + id }) +} + +// 新增短信渠道 +export const createSmsChannel = (data: SmsChannelVO) => { + return request.post({ url: '/system/sms-channel/create', data }) +} + +// 修改短信渠道 +export const updateSmsChannel = (data: SmsChannelVO) => { + return request.put({ url: '/system/sms-channel/update', data }) +} + +// 删除短信渠道 +export const deleteSmsChannel = (id: number) => { + return request.delete({ url: '/system/sms-channel/delete?id=' + id }) +} diff --git a/yshop-drink-vue3/src/api/system/sms/smsLog/index.ts b/yshop-drink-vue3/src/api/system/sms/smsLog/index.ts new file mode 100644 index 0000000..f989171 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/sms/smsLog/index.ts @@ -0,0 +1,37 @@ +import request from '@/config/axios' + +export interface SmsLogVO { + id: number | null + channelId: number | null + channelCode: string + templateId: number | null + templateCode: string + templateType: number | null + templateContent: string + templateParams: Map | null + apiTemplateId: string + mobile: string + userId: number | null + userType: number | null + sendStatus: number | null + sendTime: Date | null + apiSendCode: string + apiSendMsg: string + apiRequestId: string + apiSerialNo: string + receiveStatus: number | null + receiveTime: Date | null + apiReceiveCode: string + apiReceiveMsg: string + createTime: Date | null +} + +// 查询短信日志列表 +export const getSmsLogPage = (params: PageParam) => { + return request.get({ url: '/system/sms-log/page', params }) +} + +// 导出短信日志 +export const exportSmsLog = (params) => { + return request.download({ url: '/system/sms-log/export-excel', params }) +} diff --git a/yshop-drink-vue3/src/api/system/sms/smsTemplate/index.ts b/yshop-drink-vue3/src/api/system/sms/smsTemplate/index.ts new file mode 100644 index 0000000..868ddd4 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/sms/smsTemplate/index.ts @@ -0,0 +1,60 @@ +import request from '@/config/axios' + +export interface SmsTemplateVO { + id?: number + type?: number + status: number + code: string + name: string + content: string + remark: string + apiTemplateId: string + channelId?: number + channelCode?: string + params?: string[] + createTime?: Date +} + +export interface SendSmsReqVO { + mobile: string + templateCode: string + templateParams: Map +} + +// 查询短信模板列表 +export const getSmsTemplatePage = (params: PageParam) => { + return request.get({ url: '/system/sms-template/page', params }) +} + +// 查询短信模板详情 +export const getSmsTemplate = (id: number) => { + return request.get({ url: '/system/sms-template/get?id=' + id }) +} + +// 新增短信模板 +export const createSmsTemplate = (data: SmsTemplateVO) => { + return request.post({ url: '/system/sms-template/create', data }) +} + +// 修改短信模板 +export const updateSmsTemplate = (data: SmsTemplateVO) => { + return request.put({ url: '/system/sms-template/update', data }) +} + +// 删除短信模板 +export const deleteSmsTemplate = (id: number) => { + return request.delete({ url: '/system/sms-template/delete?id=' + id }) +} + +// 导出短信模板 +export const exportSmsTemplate = (params) => { + return request.download({ + url: '/system/sms-template/export-excel', + params + }) +} + +// 发送短信 +export const sendSms = (data: SendSmsReqVO) => { + return request.post({ url: '/system/sms-template/send-sms', data }) +} diff --git a/yshop-drink-vue3/src/api/system/social/client/index.ts b/yshop-drink-vue3/src/api/system/social/client/index.ts new file mode 100644 index 0000000..bf13ab4 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/social/client/index.ts @@ -0,0 +1,37 @@ +import request from '@/config/axios' + +export interface SocialClientVO { + id: number + name: string + socialType: number + userType: number + clientId: string + clientSecret: string + agentId: string + status: number +} + +// 查询社交客户端列表 +export const getSocialClientPage = async (params) => { + return await request.get({ url: `/system/social-client/page`, params }) +} + +// 查询社交客户端详情 +export const getSocialClient = async (id: number) => { + return await request.get({ url: `/system/social-client/get?id=` + id }) +} + +// 新增社交客户端 +export const createSocialClient = async (data: SocialClientVO) => { + return await request.post({ url: `/system/social-client/create`, data }) +} + +// 修改社交客户端 +export const updateSocialClient = async (data: SocialClientVO) => { + return await request.put({ url: `/system/social-client/update`, data }) +} + +// 删除社交客户端 +export const deleteSocialClient = async (id: number) => { + return await request.delete({ url: `/system/social-client/delete?id=` + id }) +} diff --git a/yshop-drink-vue3/src/api/system/social/user/index.ts b/yshop-drink-vue3/src/api/system/social/user/index.ts new file mode 100644 index 0000000..f11231b --- /dev/null +++ b/yshop-drink-vue3/src/api/system/social/user/index.ts @@ -0,0 +1,24 @@ +import request from '@/config/axios' + +export interface SocialUserVO { + id: number + type: number + openid: string + token: string + rawTokenInfo: string + nickname: string + avatar: string + rawUserInfo: string + code: string + state: string +} + +// 查询社交用户列表 +export const getSocialUserPage = async (params) => { + return await request.get({ url: `/system/social-user/page`, params }) +} + +// 查询社交用户详情 +export const getSocialUser = async (id: number) => { + return await request.get({ url: `/system/social-user/get?id=` + id }) +} diff --git a/yshop-drink-vue3/src/api/system/tenant/index.ts b/yshop-drink-vue3/src/api/system/tenant/index.ts new file mode 100644 index 0000000..176c375 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/tenant/index.ts @@ -0,0 +1,62 @@ +import request from '@/config/axios' + +export interface TenantVO { + id: number + name: string + contactName: string + contactMobile: string + status: number + domain: string + packageId: number + username: string + password: string + expireTime: Date + accountCount: number + createTime: Date +} + +export interface TenantPageReqVO extends PageParam { + name?: string + contactName?: string + contactMobile?: string + status?: number + createTime?: Date[] +} + +export interface TenantExportReqVO { + name?: string + contactName?: string + contactMobile?: string + status?: number + createTime?: Date[] +} + +// 查询租户列表 +export const getTenantPage = (params: TenantPageReqVO) => { + return request.get({ url: '/system/tenant/page', params }) +} + +// 查询租户详情 +export const getTenant = (id: number) => { + return request.get({ url: '/system/tenant/get?id=' + id }) +} + +// 新增租户 +export const createTenant = (data: TenantVO) => { + return request.post({ url: '/system/tenant/create', data }) +} + +// 修改租户 +export const updateTenant = (data: TenantVO) => { + return request.put({ url: '/system/tenant/update', data }) +} + +// 删除租户 +export const deleteTenant = (id: number) => { + return request.delete({ url: '/system/tenant/delete?id=' + id }) +} + +// 导出租户 +export const exportTenant = (params: TenantExportReqVO) => { + return request.download({ url: '/system/tenant/export-excel', params }) +} diff --git a/yshop-drink-vue3/src/api/system/tenantPackage/index.ts b/yshop-drink-vue3/src/api/system/tenantPackage/index.ts new file mode 100644 index 0000000..e01375a --- /dev/null +++ b/yshop-drink-vue3/src/api/system/tenantPackage/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +export interface TenantPackageVO { + id: number + name: string + status: number + remark: string + creator: string + updater: string + updateTime: string + menuIds: number[] + createTime: Date +} + +// 查询租户套餐列表 +export const getTenantPackagePage = (params: PageParam) => { + return request.get({ url: '/system/tenant-package/page', params }) +} + +// 获得租户 +export const getTenantPackage = (id: number) => { + return request.get({ url: '/system/tenant-package/get?id=' + id }) +} + +// 新增租户套餐 +export const createTenantPackage = (data: TenantPackageVO) => { + return request.post({ url: '/system/tenant-package/create', data }) +} + +// 修改租户套餐 +export const updateTenantPackage = (data: TenantPackageVO) => { + return request.put({ url: '/system/tenant-package/update', data }) +} + +// 删除租户套餐 +export const deleteTenantPackage = (id: number) => { + return request.delete({ url: '/system/tenant-package/delete?id=' + id }) +} +// 获取租户套餐精简信息列表 +export const getTenantPackageList = () => { + return request.get({ url: '/system/tenant-package/simple-list' }) +} diff --git a/yshop-drink-vue3/src/api/system/user/index.ts b/yshop-drink-vue3/src/api/system/user/index.ts new file mode 100644 index 0000000..beb6e51 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/user/index.ts @@ -0,0 +1,81 @@ +import request from '@/config/axios' + +export interface UserVO { + id: number + username: string + nickname: string + deptId: number + postIds: string[] + email: string + mobile: string + sex: number + avatar: string + loginIp: string + status: number + remark: string + loginDate: Date + createTime: Date +} + +// 查询用户管理列表 +export const getUserPage = (params: PageParam) => { + return request.get({ url: '/system/user/page', params }) +} + +// 查询所有用户列表 +export const getAllUser = () => { + return request.get({ url: '/system/user/all' }) +} + +// 查询用户详情 +export const getUser = (id: number) => { + return request.get({ url: '/system/user/get?id=' + id }) +} + +// 新增用户 +export const createUser = (data: UserVO) => { + return request.post({ url: '/system/user/create', data }) +} + +// 修改用户 +export const updateUser = (data: UserVO) => { + return request.put({ url: '/system/user/update', data }) +} + +// 删除用户 +export const deleteUser = (id: number) => { + return request.delete({ url: '/system/user/delete?id=' + id }) +} + +// 导出用户 +export const exportUser = (params) => { + return request.download({ url: '/system/user/export', params }) +} + +// 下载用户导入模板 +export const importUserTemplate = () => { + return request.download({ url: '/system/user/get-import-template' }) +} + +// 用户密码重置 +export const resetUserPwd = (id: number, password: string) => { + const data = { + id, + password + } + return request.put({ url: '/system/user/update-password', data: data }) +} + +// 用户状态修改 +export const updateUserStatus = (id: number, status: number) => { + const data = { + id, + status + } + return request.put({ url: '/system/user/update-status', data: data }) +} + +// 获取用户精简信息列表 +export const getSimpleUserList = (): Promise => { + return request.get({ url: '/system/user/simple-list' }) +} diff --git a/yshop-drink-vue3/src/api/system/user/profile.ts b/yshop-drink-vue3/src/api/system/user/profile.ts new file mode 100644 index 0000000..1e80e85 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/user/profile.ts @@ -0,0 +1,65 @@ +import request from '@/config/axios' + +export interface ProfileVO { + id: number + username: string + nickname: string + dept: { + id: number + name: string + } + roles: { + id: number + name: string + }[] + posts: { + id: number + name: string + }[] + socialUsers: { + type: number + openid: string + }[] + email: string + mobile: string + sex: number + avatar: string + status: number + remark: string + loginIp: string + loginDate: Date + createTime: Date +} + +export interface UserProfileUpdateReqVO { + nickname: string + email: string + mobile: string + sex: number +} + +// 查询用户个人信息 +export const getUserProfile = () => { + return request.get({ url: '/system/user/profile/get' }) +} + +// 修改用户个人信息 +export const updateUserProfile = (data: UserProfileUpdateReqVO) => { + return request.put({ url: '/system/user/profile/update', data }) +} + +// 用户密码重置 +export const updateUserPassword = (oldPassword: string, newPassword: string) => { + return request.put({ + url: '/system/user/profile/update-password', + data: { + oldPassword: oldPassword, + newPassword: newPassword + } + }) +} + +// 用户头像上传 +export const uploadAvatar = (data) => { + return request.upload({ url: '/system/user/profile/update-avatar', data: data }) +} diff --git a/yshop-drink-vue3/src/api/system/user/socialUser.ts b/yshop-drink-vue3/src/api/system/user/socialUser.ts new file mode 100644 index 0000000..79f4d40 --- /dev/null +++ b/yshop-drink-vue3/src/api/system/user/socialUser.ts @@ -0,0 +1,31 @@ +import request from '@/config/axios' + +// 社交绑定,使用 code 授权码 +export const socialBind = (type, code, state) => { + return request.post({ + url: '/system/social-user/bind', + data: { + type, + code, + state + } + }) +} + +// 取消社交绑定 +export const socialUnbind = (type, openid) => { + return request.delete({ + url: '/system/social-user/unbind', + data: { + type, + openid + } + }) +} + +// 社交授权的跳转 +export const socialAuthRedirect = (type, redirectUri) => { + return request.get({ + url: '/system/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri + }) +} diff --git a/yshop-drink-vue3/src/api/tools/material.js b/yshop-drink-vue3/src/api/tools/material.js new file mode 100644 index 0000000..855ac03 --- /dev/null +++ b/yshop-drink-vue3/src/api/tools/material.js @@ -0,0 +1,46 @@ +/* + * @Author: Gaoxs + * @Date: 2023-05-21 23:40:06 + * @LastEditors: Gaoxs + * @Description: + */ +import request from '@/config/axios' + +export async function getPage(query) { + return await request.get({ + url: '/shop/material/page', + + params: query + }) +} + +export async function addObj(obj) { + return await request.post({ + url: '/shop/material/create', + + data: obj + }) +} + +export async function getObj(id) { + return await request.ge({ + url: '/shop/material/' + id + }) +} + +export async function delObj(id) { + return await request.delete({ + url: '/shop/material/delete', + params: { + id + } + }) +} + +export async function putObj(obj) { + return await request.put({ + url: '/shop/material/update', + + data: obj + }) +} diff --git a/yshop-drink-vue3/src/api/tools/materialgroup.js b/yshop-drink-vue3/src/api/tools/materialgroup.js new file mode 100644 index 0000000..4c9b02d --- /dev/null +++ b/yshop-drink-vue3/src/api/tools/materialgroup.js @@ -0,0 +1,52 @@ +/* + * @Author: Gaoxs + * @Date: 2023-05-21 23:40:06 + * @LastEditors: Gaoxs + * @Description: + */ +import request from '@/config/axios' + +export async function getPage(query) { + return await request.get({ + url: '/shop/material-group/page', + + params: query + }) +} + +export async function getList(query) { + return await request.get({ + url: '/shop/material-group/list', + + params: query + }) +} + +export async function addObj(obj) { + return await request.post({ + url: '/shop/material-group/create', + + data: obj + }) +} + +export async function getObj(id) { + return await request.ge({ + url: '/shop/material-group/' + id + }) +} + +export async function delObj(id) { + return await request.delete({ + url: '/shop/material-group/delete', + params: { id } + }) +} + +export async function putObj(obj) { + return await request.put({ + url: '/shop/material-group/update', + + data: obj + }) +} diff --git a/yshop-drink-vue3/src/assets/imgs/avatar.gif b/yshop-drink-vue3/src/assets/imgs/avatar.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdbd32c675f85af4ed57021ac0638a21a3c6cad3 GIT binary patch literal 6334 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 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/src/assets/imgs/avatar.jpg b/yshop-drink-vue3/src/assets/imgs/avatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d46a70a46430e31744420865138cc7eedb8b77e1 GIT binary patch literal 6264 zcmbuDWmMGNx5t0O&^aUB-GkEIDM;r~(j~)yH1YsLHwXesHv>qAlqeFC(jYM)4I&{S zWpMHN-*xZ0ukYUH)p>E&=dAr*`<(r~UASEXAX@60>Hr7?0HC`BZkK^5fZ#3&2?&Xa z3CSR&5Hd=Nd-o_PS*U66l0}G_gZXX=!NmA^_{CtlauO19x)$0GwJnhL_Q-_DgqD_5 z(Es;<+g<>Q58MDZU=SOC1qFejpxb_c9ssbgz;}@U8z3wkFg7mU?Gk|h_X+@TAqs#X zia80nZ-z*uFcD zP)Y!!L(=9e+rcumPh+2YXE(J-QejRVpO0I!gpo~}BLMlcHz=;JP-D~&6C7Ho@}#Q6+@<03;Kb8wmX_-jgx(e>OVud(P*XF^Vl16sN3 zL9VSB`M_g%o1P)BrQX9$svj~GgHrVO^-|)7rKENg&rc-;oC!k)8e~5)HYqtZ2DASDJ8VEC2{_$OcaQB$S8L5D^GQ? z+s$*j6EqD70RKm}|D$LS78v_qHDf{U_Uv61dt8A`-ZyYSRaJk{$HGGBBjlXX+YC8V zKwC6zGPAqf`cyz$pIyrm(T+CDOVQ!GC`}aSwxBW1ad%G@#B25L_H>uJj_SdwyELe? z%Fe*gzZu@k_u1M3aj&S$SqNz`-S2$GASYKgNd~J_^|UX_DG1h-kMkwvwcS#nMa04V7ZUszQk&4N$!hAgCTqpAQhQTk8ON*f0ofdV2=AQy@IIWQN=Pws^DCr*gw;EVeJmQO)u{x?i}GaVh_sL#~;X+7GB*sV+YkAKOH z1g^{+L!LhAjVPHKFZ{%Zl7;fP!+=RU0=KZEB1ma_T2b`3fZ#yb9jF2X0D-ZvvGBpT z*tl5WJ1!7#2MWcx$0`I-!X;-DHZZh%$`YQ&E-0d0{DFeQJ6%-8$i8tZqKVR{uM@jzyiT0o z7c1-kPHi_&7&CHY^{doMimEv}v39dY#&Lgi=@(n{fNjE>B(JpcOwknSb2+tX++3cg z32t~n^3u%`AtMKa_^FzDw{tyaj}mT_SWwV&0ibLN*!>>|Owa%LbKvT4stf0)h_`1JuTz zwF(^utK=XF|Ct&@jJM8u8IOb7jQc*V9HTkqI4CC2!JgUU0{6MLFg9yAHpz3dDZx!@ z%o`8A+h+QIWx*?}R6xxZ68zM4BDx4){0`?SOX0o-f_=pGF+*6D2_s#3Xv5In#4PWP zm^HIklb(YU7j;~7_apAK8Th|gPZ1_+9E4lGMe)LS?_tSUeYcu}830qZ-I%ywSJLBQCSZ*o5 zCo0nC;jboG#KEqAdOUJ=+8r_QQkfjYgT#Y^(;!X6g@~ z_AifVbfl{4(J4zV*gr{36(ao(#RMe|fy1^js-iSUeI6-0np|F+Dw&E=9G_ecKU^vA zWN}f?U8B~?+h<|4H%<+0JW1%?Uve+}TEc~Fp?(8cl~Ve?ztZD{ z{~Twy!MMdpLAL%yl|zp!)gkn3(ZRQbSoH%#jIxSu*UBhKF_KY*!St}JmGuYDa}dV@ z_oh&%3MK5Gv1|}-V*SUam&DxL^F$R6P_Yf^%0k_9LI(d(DHl zPM&QTmtZpFK!M%pmuP3^N0zjRnhP%sU!^J~xher`D*M--%wWo?s)K_BH}(j((H1w? z7Z*GPd{)eY%@U4bUG2<~q*Uc((k`5%BAC@?DR(L0zLv)#<0>7~;bCt|0bO7%Ianpn zDn!%zLBCUU+O+z^aS_=Pt+MKzoWSkmc^{qLsu%`6;^r1aV{6ZqkAcYR77qj>|qEPS9${R0!P!M8cHKDuKPmO5kT`Ds^pNeal!XZCTLU=7b z{t^W-SpZzaE=Oecj8B7_iQm%=1)|lV(V(*nM^=yN!W*P~prKXZr*1bYLCYGHz^*?%h;PzP7OMlZ4Qx z{1%wAwuzq9MLM?!Mov+J?XDQ(a>oiy-+x zA5mNxTAM+pK^nSlVjC!DnfL{tR3swA>jL(F3!ReXLiLOu(mk)1Ad}H`k zDvyCLitK~}eGA+p|MqP!|JQHE(p$h(&Y~nosuYpdE>*XXA_t3$HF`8MP?;7g$AtFT z>28_cZ~Zc6)KBIYJ-A!6ezqZLJ0&`AJUW~N-q~jDs>2y!A+bVs>7Em=xlUaQHOtgA z)_5}rgeQT{prumS(l!aZ9s5J4+i-OWokXFjcY=$+q2NBgNtz7!HKOs$6>q+a$j}x8 z0|<95@%!M{&R^n|q_h5kYKUA9Y7M*SMm(G6<~Ls}3dg@m+*lS}DJj;lW>r*&VtU8t}8EzuB{!;QTLJr)#bnPeko9@_>%zJS|VkP zq(@GhDofDSCE1DSSyHNOve6_Tsc)O;jy!WK4{C5AfYY#(MCD_wj;l7OhwS&Owz;OQ z+Av;ow)s^N=-F9Ggp)!MI8FhVfZd9(Xa_%RD3J~3ahc1ri>JYDXehfQdP2SdhX6zX z06!G{F*%?|ff9Uo`jcl9VbGXN<*o?c9%Qcl!`HD!-*kV}U_C0F#y85{Nsrl#h%Ny0 zGhdHH-|}^l3G5c=HPMhdy0rPtsXd8UuT=QQhu-{%>ElrAU^o9n`5$7#;`4Lwj$|$k ze>h$|+(tcL=ESL?%JG zB%dfqN0c6Y{fo;V%L4S2J|Xw6vghC7DJdXikfoOoh5Z4nW!a5_)5XG&Jjql|qKKS|h#jfwPynLJ0 zBOycm3`flAZyQCqTfhJlF+<%mk4!n4g5%jj9OIo>Cr?ftGlPeo#N|c#7JhEmd z`*~xLs-WF2tr3RF9Z4y)J;@b>0iOk8DKtUaiRQ|+r4*)Ynp((I%| z6GaeKR9BXVY(8(q^c;0<6%VonVwDK@?IMeXA8xq@Gcn9G;@$#KYDGYlNZ?Z9+#(rJ z{`sQUY@6Y51Lq*;;-wYd(C_F0lm<*`M(e~&Octe=J*S6=E>mCK)cZ4l6~1}49`nAc zqVi>Keg?C8G^{SIKfT!5yNCo`Ap&)g_1B0rKJ7Focn>aKTVsHkx`_JMX{3tj$u>at zI0SBi$RkQF5%Pnj@VTx}*IL*ReCd#}IepcO#$zDEDdF=sdQab9>X{W|0q|qoCly&* zkrz3ljI^UWbrCq$Sal5;xgXQ{kL=wJWiAMvHHi4wlFVzedxwrHzxLmKU{l?0foUp! zxs?pYcFW}F(iw0GI%Y^X`%^z1YcYW+WS4A;aeK0y4$9x`n(=-AWoz<%9~9WzM3?tf zj8V%)_)lfghSRHxQx>3V&6H;~!$G~2k*)vyL+9h* zF6tK8_*R@WV+r44X30-hd~o-uDVBfaW4`imz^iwyWd5xC*;sP8E_^wJiksZA2vHjN z(CcFN<1gh-98!wbr?ZBtJBdz6GcqjloM9Rz&?okNLYl{Jqr7DcD~r*66j?E82c+Dv zRP0|fKL;#R`73fS-iECsC9$!Z+WMf)OGS(!6lwWBLZ5D;DR17`1pgDTscFN>6RZMW zIDEKJt(k8`A*6gX<>`7&e+#%B$D}~!7w)&!#?;>e4TY6BG8#Lqa1JL=OEVb(lY&hgHWmo}y^l9rQ@Ia0(-S;V1<%xVLlB}X8-sNxJojf$ zmiR_6G!Fs-?|u#=7(|?!Wprj1WZMv^t^#Mo{+YX41afAvNKDTy4qiJ#XO=Dwsu-*` z4Cq|_=(+NizBhTbH|&-)wGpvEpEMElu6=K6YU(XqYU(#nZ&KMM2{@=jDWN}zMHThr zGM5myaXMubt-3?=qw2uD`RkyMKOPa+ysoID^4sW=lUbRI15*91B2 zo6JX@O}Y1=6{<}TV}obhs!^(S1I1>71e{dFL_8$L8>!SV6_|+{nL|xI|rrLlSfjLJ4vr?#bx-ADLXnY zgilc@@O6GI!CNlI4s3moX%|TAUTsLKDDDg-)F{@VF+QmbF@Gg0^hGGjNuP~Jbxdt+ zd__@chTr1@HQmc4p09MYbO zez$-+ME&*W8Y&h_W&^6ePb80sWE(HDAh^ zi4~Lruc+lyf@zd+`#r0mg>i9E1YaGvm^(YcAKZ}u!yy2)i(^i{M->%1R<$YCVFrlXzFW1YXmrAb z)KGK^FX!mv^4#>o<|N&HW%_2uUyNKAuMMnSznr=&F${X=!u$>Fe=V55CBE}-!H_!> zMv2A14qNysIh$cP4!ekQ+J6kBzZGs_q2k1)JRjdyJZfZsyvu>XDZ}BE5g+WSz)jH! z{;YURbaD4rY^gw4mRqpF4Skk_XHWHujU|&Mcx!hSuHl)9T@*@G0!lNbZELl9Eukai zbh-8=6Z2KyBTXZ1-}`fraU%Ux)$%yF+9gRskBo9GIqpgGF<5AS>jg8XM;hx+BK&r! zE;rJg*Y;rabcZV?9Sw-Hcu8E@-LpjYEWy&GXL~VkR^a(MJgtdG{ojJ?4>5}t-j+P^+(<;A4L=tRZB~w^*Ys`;%i8B)xY+a}hH{7crjc+B=^6+Oo zH*Y&-{z2Uk)}URh-CaU3r=g>zo-K#=y=+}n#QG_*Ta{ap?J75@#D9$knHK|BvqUI^ z_46Fh)wAfUx!fAAsP2QLMmc}Qr)mFM_MdRY_n8)#DArG~RSr>3R@QnToH%m3_+J|q BLq7lj literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/src/assets/imgs/card01.jpg b/yshop-drink-vue3/src/assets/imgs/card01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f01bb0d271b41b1d4feacbeb467c411dd3bfd67b GIT binary patch literal 411857 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ξ(iT7y-*YBktkax{$khBX`vR|O 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 V6Od8He*pjh002ovPDHLkV1gBakC^}f literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/src/assets/imgs/card02.jpg b/yshop-drink-vue3/src/assets/imgs/card02.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6366b79037f94ac702da8ae098e3eed070fb6fed GIT binary patch literal 139459 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

    YbGj1P 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 Bhl&6I literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/src/assets/imgs/card03.jpg b/yshop-drink-vue3/src/assets/imgs/card03.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdf8d18ebf81c4f7437f67c16834a7b9f535e2f4 GIT binary patch literal 523516 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 z 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

    a8V3fO1Gb4c)28E+WM|`Qt%U5 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�P4 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Ν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�aUi3BGC-*`%8H6c!sjiS58D?ClovuKsxw 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

    KwlbL)@RcI*u%p^4i66z5lWYs`OXUP+V7FL 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 lK+9?2eZy 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%0AO&!8>oh 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≫G3t?<|*$LJ<0t@b{h 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

    384ptk;!3w6V|f>@KFSQJkmkrtiGQAj3gB#+K6r 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 NvOP|&09Jii_#cBOpN9Yd literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/src/assets/imgs/wechat.png b/yshop-drink-vue3/src/assets/imgs/wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..6afc5e41cfc29d258e0c6135981a7a09b7bcf126 GIT binary patch literal 1881 zcmV-f2d4OmP)Px+6G=otRA@uxT5F6HRTlovt)4-Yt`>DxqM{h1piEaoG!it+;>Ku9`iG12%)6qSb>G)jC#QP~(>XJx8!Ncf>R3nRXU>6!tR>8fLH z&-BPlcUM(+R|8q^kNH#I`M&erd#dK%bDQux7!;JpamncoOxXzv({Uli+0)aoy&Fxi zgW|7-ry`T%jKJPYsh*xLg z=_mZbD@VDSjI=d2u_EpTV{+vZ?vV_<2cWG_H(#rjMoE)uN^1inQ7hpBUdB=@VJ2&# zSJb3xM4tobrdkMkaJE{yxiV`Dvjn&heT6&y}!$;8dSkH)Ae?JF=Qm5e2{TXFM(B5|Eyoa>Qb zi=~@uyi9mKA2ex1-va0|S1@Cjl`zjd6m$He(YfOA2lTk($P%F!8(B{iu%3c|8#NUDitV7DNwa~y0EA>Nbu?!+#%Zpl`| zS!mMGWT{>nB&i=RX1p&z>&T{cvi!#-r=KUtUPy$~m@yH+X#h_IhzaOoa2J@m2-Ja) zvp%yVz0Z%1#K>~p3*cnG0Ri9!K=e0Rf?*>%ML^7F@KpdVER*{sfL|vCo4pKE#L#v# zaB7(X6~X03!V%dU_cx$N-CK7Lh*wlZbZ8J^7c=hf)6J(!aZw}{eTA9iOxAj=v~;sI zoQhpZoHI8gV8L}x2>16dHn$hNlaZu$7ZV-`Sa1{_zisL1%hhCb1&HpenHHmm34a}Z zHl?tk%_U${&4huEE#16GO=<}c+G?mXNX_VT$eG)(Z{L#FlJDf13 zwT=^8cR1@^18ig2*fT57iXNu0r3`tR}is!F3D zS-LqZVrT~#7+WP*wc$I8wj?7)>{&FwOswejRRN_jn0?GM7iE-*~8LJ*>%_n!r5g92N}TF>amg< z7w8c^%fQRTd_F)^0ge^BuM9CJW(o4j;mRO$E|-g#7nL+QE)|_6m_8UH&4TE8F+eMO zmv7ruN+{Q&tVcr#*}XmAJKu&+2whHunqA3x8Xmpl866NYqE9nuF2FB{tg_0@oST?x zXs;is)g8GVq5Zubcf0@iKm=5XK2^EU%QC`yjQdGD#%*)#Sn>+H(se%MS78C?tDhM*>{ z2+z+#h?%`D+hm7-cpO%fIisoQ3NXoT-I##Qerk*Cy!|bmvX4As9Cnj~MztAWNTY%M z50#sbQj>N>Oy-kOliFX1_$mg?uXksla(-wPS#Ojve@iP`2#b^O0DIsA?r(JL%Hz4@s4x|Xv_L12Fc30Q=P TM8y=K00000NkvXXu0mjf4<3N5 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/src/assets/map/json/china.json b/yshop-drink-vue3/src/assets/map/json/china.json new file mode 100644 index 0000000..bbc0a83 --- /dev/null +++ b/yshop-drink-vue3/src/assets/map/json/china.json @@ -0,0 +1,856 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "id": "710000", + "properties": { + "id": "710000", + "cp": [121.509062, 24.044332], + "name": "台湾", + "childNum": 6 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@°Ü¯Û"], + [ + "@@ƛĴÕƊÉɼģºðʀ\\ƎsÆNŌÔĚäœnÜƤɊĂǀĆĴžĤNJŨxĚĮǂƺòƌ‚–âÔ®ĮXŦţƸZûЋƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃNjƏďíåɛGɉ™¿@ăƑŽ¥ĘWǬÏĶŁâ" + ], + ["@@\\p|WoYG¿¥I†j@¢"], + ["@@…¡‰@ˆV^RqˆBbAŒnTXeRz¤Lž«³I"], + ["@@ÆEE—„kWqë @œ"], + ["@@fced"], + ["@@„¯ɜÄèaì¯ØǓIġĽ"], + ["@@çûĖ롖hòř "] + ], + "encodeOffsets": [ + [[122886, 24033]], + [[123335, 22980]], + [[122375, 24193]], + [[122518, 24117]], + [[124427, 22618]], + [[124862, 26043]], + [[126259, 26318]], + [[127671, 26683]] + ] + } + }, + { + "type": "Feature", + "id": "130000", + "properties": { + "id": "130000", + "cp": [114.502461, 38.045474], + "name": "河北", + "childNum": 3 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@o~†Z]‚ªr‰ºc_ħ²G¼s`jΟnüsœłNX_“M`ǽÓnUK…Ĝēs¤­©yrý§uģŒc†JŠ›e"], + ["@@U`Ts¿m‚"], + [ + "@@oºƋÄd–eVŽDJj£€J|Ådz•Ft~žKŨ¸IÆv|”‡¢r}膎onb˜}`RÎÄn°ÒdÞ²„^®’lnÐèĄlðӜ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcœŋ`–ZÔ’¶êqvFƚ†N®ĆTH®¦O’¾ŠIbÐã´BĐɢŴÆíȦp–ĐÞXR€·nndOž¤’OÀĈƒ­Qg˜µFo|gȒęSWb©osx|hYh•gŃfmÖĩnº€T̒Sp›¢dYĤ¶UĈjl’ǐpäìë|³kÛfw²Xjz~ÂqbTŠÑ„ěŨ@|oM‡’zv¢ZrÃVw¬ŧˏfŒ°ÐT€ªqŽs{Sž¯r æÝlNd®²Ğ džiGʂJ™¼lr}~K¨ŸƐÌWö€™ÆŠzRš¤lêmĞL΄’@¡|q]SvK€ÑcwpÏρ†ĿćènĪWlĄkT}ˆJ”¤~ƒÈT„d„™pddʾĬŠ”ŽBVt„EÀ¢ôPĎƗè@~‚k–ü\\rÊĔÖæW_§¼F˜†´©òDòj’ˆYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkv‚GpuARhÞÆǶgƊTǼƹS£¨¡ù³ŘÍ]¿Ây™ôEP xX¶¹܇O¡“gÚ¡IwÃ鑦ÅB‡Ï|ǰ…N«úmH¯‹âŸDùŽyŜžŲIÄuШDž•¸dɂ‡‚FŸƒ•›Oh‡đ©OŸ›iÃ`ww^ƒÌkŸ‘ÑH«ƇǤŗĺtFu…{Z}Ö@U‡´…ʚLg®¯Oı°ÃwŸ ^˜—€VbÉs‡ˆmA…ê]]w„§›RRl£‡ȭµu¯b{ÍDěïÿȧŽuT£ġƒěŗƃĝ“Q¨fV†Ƌ•ƅn­a@‘³@šď„yýIĹÊKšŭfċŰóŒxV@tˆƯŒJ”]eƒR¾fe|rHA˜|h~Ėƍl§ÏŠlTíb ØoˆÅbbx³^zÃ͚¶Sj®A”yÂhðk`š«P€”ˈµEF†Û¬Y¨Ļrõqi¼‰Wi°§’б´°^[ˆÀ|ĠO@ÆxO\\tŽa\\tĕtû{ġŒȧXýĪÓjùÎRb›š^ΛfK[ݏděYfíÙTyŽuUSyŌŏů@Oi½’éŅ­aVcř§ax¹XŻác‡žWU£ôãºQ¨÷Ñws¥qEH‰Ù|‰›šYQoŕÇyáĂ£MðoťÊ‰P¡mšWO¡€v†{ôvîēÜISpÌhp¨ ‘j†deŔQÖj˜X³à™Ĉ[n`Yp@Už–cM`’RKhŒEbœ”pŞlNut®Etq‚nsÁŠgA‹iú‹oH‡qCX‡”hfgu“~ϋWP½¢G^}¯ÅīGCŸÑ^ãziMáļMTÃƘrMc|O_ž¯Ŏ´|‡morDkO\\mĆJfl@c̬¢aĦtRıҙ¾ùƀ^juųœK­ƒUFy™—Ɲ…›īÛ÷ąV×qƥV¿aȉd³B›qPBm›aËđŻģm“Å®Vйd^K‡KoŸnYg“¯Xhqa”Ldu¥•ÍpDž¡KąÅƒkĝęěhq‡}HyÓ]¹ǧ£…Í÷¿qáµ§š™g‘¤o^á¾ZE‡¤i`ij{n•ƒOl»ŸWÝĔįhg›F[¿¡—ßkOüš_‰€ū‹i„DZàUtėGylƒ}ŒÓM}€jpEC~¡FtoQi‘šHkk{Ãmï‚" + ] + ], + "encodeOffsets": [[[119712, 40641]], [[121616, 39981]], [[116462, 37237]]] + } + }, + { + "type": "Feature", + "id": "140000", + "properties": { + "id": "140000", + "cp": [111.849248, 36.857014], + "name": "山西", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@Þĩ҃S‰ra}Á€yWix±Üe´lè“ßÓǏok‘ćiµVZģ¡coœ‘TS˹ĪmnÕńe–hZg{gtwªpXaĚThȑp{¶Eh—®RćƑP¿£‘Pmc¸mQÝW•ďȥoÅîɡųAďä³aωJ‘½¥PG­ąSM­™…EÅruµé€‘Yӎ•Ō_d›ĒCo­Èµ]¯_²ÕjāŽK~©ÅØ^ԛkïçămϑk]­±ƒcݯÑÃmQÍ~_a—pm…~ç¡q“ˆu{JÅŧ·Ls}–EyÁÆcI{¤IiCfUc•ƌÃp§]웫vD@¡SÀ‘µM‚ÅwuŽYY‡¡DbÑc¡hƒ×]nkoQdaMç~eD•ÛtT‰©±@¥ù@É¡‰ZcW|WqOJmĩl«ħşvOÓ«IqăV—¥ŸD[mI~Ó¢cehiÍ]Ɠ~ĥqXŠ·eƷœn±“}v•[ěďŽŕ]_‘œ•`‰¹ƒ§ÕōI™o©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs׌¥ŅxŸÊdÒ{ºvĴÎêÌɊ²¶€ü¨|ÞƸµȲ‘LLúÉƎ¤ϊęĔV`„_bª‹S^|ŸdŠzY|dz¥p†ZbÆ£¶ÒK}tĦÔņƠ‚PYzn€ÍvX¶Ěn ĠÔ„zý¦ª˜÷žÑĸَUȌ¸‚dòÜJð´’ìúNM¬ŒXZ´‘¤ŊǸ_tldIš{¦ƀðĠȤ¥NehXnYG‚‡R° ƬDj¬¸|CĞ„Kq‚ºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBŒÊ”TœŸ˜ʂōĖ’šĴŞ–ȀœÆÿȄlŤĒö„t”νî¼ĨXhŒ‘˜|ªM¤Ðz" + ], + "encodeOffsets": [[116874, 41716]] + } + }, + { + "type": "Feature", + "id": "150000", + "properties": { + "id": "150000", + "cp": [111.670801, 41.818311], + "name": "内蒙古", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + "@@¯PqƒFB…‰|S•³C|kñ•H‹d‘iÄ¥sˆʼnő…PóÑÑE^‘ÅPpy_YtS™hQ·aHwsOnʼnÚs©iqj›‰€USiº]ïWš‰«gW¡A–Rë¥_ŽsgÁnUI«m‰…„‹]j‡vV¼euhwqA„aW˜ƒ_µj…»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáG“›OUۗOB±•XŸkŇ¹£k|e]ol™ŸkVͼÕqtaÏõjgÁ£§U^Œ”RLˆËnX°Ç’Bz†^~wfvˆypV ¯„ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyx‹þp]Évïè‘vƀnÂĴÖ@‚‰†V~Ĉv¦wĖt—ējyÄDXÄxGQuv_›i¦aBçw‘˛wD™©{ŸtāmQ€{EJ§KPśƘƿ¥@‰sCT•É}ɃwˆƇy±ŸgÑ“}T[÷kÐ禫…SÒ¥¸ëBX½‰HáŵÀğtSÝÂa[ƣ°¯¦P]£ġ“–“Òk®G²„èQ°óMq}EŠóƐÇ\\ƒ‡@áügQ͋u¥Fƒ“T՛¿Jû‡]|mvāÎYua^WoÀa·­ząÒot×¶CLƗi¯¤mƎHNJ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶—ˆ¿A•†‹[¡Œ{d×uQAƒ›M•xV‹vMOmăl«ct[wº_šÇʊŽŸjb£ĦS_é“QZ“_lwgOiýe`YYLq§IÁˆdz£ÙË[ÕªuƏ³ÍT—s·bÁĽäė[›b[ˆŗfãcn¥îC¿÷µ[ŏÀQ­ōšĉm¿Á^£mJVm‡—L[{Ï_£›F¥Ö{ŹA}…×Wu©ÅaųijƳhB{·TQqÙIķˑZđ©Yc|M¡…L•eVUóK_QWk’_ĥ‘¿ãZ•»X\\ĴuUƒè‡lG®ěłTĠğDєOrÍd‚ÆÍz]‹±…ŭ©ŸÅ’]ŒÅÐ}UË¥©Tċ™ïxgckfWgi\\ÏĒ¥HkµE˜ë{»ÏetcG±ahUiñiWsɁˆ·c–C‚Õk]wȑ|ća}w…VaĚ᠞ŒG°ùnM¬¯†{ÈˆÐÆA’¥ÄêJxÙ¢”hP¢Ûˆº€µwWOŸóFŽšÁz^ÀŗÎú´§¢T¤ǻƺSė‰ǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇq‡Z‘ñiñC³ª—…»E`¨åXēÕqÉû[l•}ç@čƘóO¿¡ƒFUsA‰“ʽīccšocƒ‚ƒÇS}„“£‡IS~ălkĩXçmĈ…ŀЂoÐdxÒuL^T{r@¢‘žÍƒĝKén£kQ™‰yšÅõËXŷƏL§~}kqš»IHėDžjĝŸ»ÑÞoŸå°qTt|r©ÏS‹¯·eŨĕx«È[eMˆ¿yuˆ‘pN~¹ÏyN£{©’—g‹ħWí»Í¾s“əšDž_ÃĀɗ±ą™ijĉʍŌŷ—S›É“A‹±åǥɋ@럣R©ąP©}ĹªƏj¹erƒLDĝ·{i«ƫC£µsKCš…GS|úþX”gp›{ÁX¿Ÿć{ƱȏñZáĔyoÁhA™}ŅĆfdʼn„_¹„Y°ėǩÑ¡H¯¶oMQqð¡Ë™|‘Ñ`ƭŁX½·óۓxğįÅcQ‡ˆ“ƒs«tȋDžF“Ÿù^i‘t«Č¯[›hAi©á¥ÇĚ×l|¹y¯YȵƓ‹ñǙµï‚ċ™Ļ|Dœ™üȭ¶¡˜›oŽäÕG\\ďT¿Òõr¯œŸLguÏYęRƩšɷŌO\\İТæ^Ŋ IJȶȆbÜGŽĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľƒ]ėl¥Ë‡ĭûÁ„ƒėéV©±ćn©­ȇžÍq¯½•YÃÔʼn“ÉNѝÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱà‘ưN¢ƔÊuľýľώȪƺɂļžxœZĈ}ÌʼnŪ˜ĺœŽĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ǎ›¼ȳÐUf†dIxÿ\\G ˆzâɏÙOº·pqy£†@ŒŠqþ@Ǟ˽IBäƣzsÂZ†ÁàĻdñ°ŕzéØűzșCìDȐĴĺf®ŽÀľưø@ɜÖÞKĊŇƄ§‚͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘNJ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKdzͲOðÏȆƘ¼CϚǚ࢚˼ФԂ¤ƌžĞ̪Qʤ´¼mȠJˀŸƲÀɠmǐnǔĎȆÞǠN~€ʢĜ‚¶ƌĆĘźʆȬ˪ĚǏĞGȖƴƀj`ĢçĶāàŃºē̃ĖćšYŒÀŎüôQÐÂŎŞdžŞêƖš˜oˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^žªƂ`ªt¾äƚêĦĀ¼Ð€Ĕǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDĝŒ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°dždÀɞ_ĸdîàŎjʜêTĞªŌ‡ŜWÈ|tqĢUB~´°ÎFC•ŽU¼pĀēƄN¦¾O¶ŠłKĊOj“Ě”j´ĜYp˜{¦„ˆSĚÍ\\Tš×ªV–÷Ší¨ÅDK°ßtŇĔKš¨ǵÂcḷ̌ĚǣȄĽF‡lġUĵœŇ‹ȣFʉɁƒMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFŽxúQ„Er´W„rh¤Ɛ \\talĈDJ˜Ü|[Pll̚¸ƎGú´Pž¬W¦†^¦–H]prR“n|or¾wLVnÇIujkmon£cX^Bh`¥V”„¦U¤¸}€xRj–[^xN[~ªŠxQ„‚[`ªHÆÂExx^wšN¶Ê˜|¨ì†˜€MrœdYp‚oRzNy˜ÀDs~€bcfÌ`L–¾n‹|¾T‚°c¨È¢a‚r¤–`[|òDŞĔöxElÖdH„ÀI`„Ď\\Àì~ƎR¼tf•¦^¢ķ¶e”ÐÚMŒptgj–„ɡČÅyġLû™ŇV®ŠÄÈƀ†Ď°P|ªVV†ªj–¬ĚÒêp¬–E|ŬÂc|ÀtƐK fˆ{ĘFǜƌXƲąo½Ę‘\\¥–o}›Ûu£ç­kX‘{uĩ«āíÓUŅßŢq€Ť¥lyň[€oi{¦‹L‡ń‡ðFȪȖ”ĒL„¿Ì‹ˆfŒ£K£ʺ™oqNŸƒwğc`ue—tOj×°KJ±qƒÆġm‰Ěŗos¬…qehqsuœƒH{¸kH¡Š…ÊRǪÇƌbȆ¢´ä܍¢NìÉʖ¦â©Ġu¦öČ^â£Ăh–šĖMÈÄw‚\\fŦ°W ¢¾luŸD„wŠ\\̀ʉÌÛM…Ā[bӞEn}¶Vc…ê“sƒ" + ] + ], + "encodeOffsets": [[[129102, 52189]]] + } + }, + { + "type": "Feature", + "id": "210000", + "properties": { + "id": "210000", + "cp": [123.429096, 41.796767], + "name": "辽宁", + "childNum": 16 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@L–Ž@@s™a"], + ["@@MnNm"], + ["@@d‚c"], + ["@@eÀ‚C@b‚“‰"], + ["@@f‡…Xwkbr–Ä`qg"], + ["@@^jtW‘Q"], + ["@@~ Y]c"], + ["@@G`ĔN^_¿Z‚ÃM"], + ["@@iX¶B‹Y"], + ["@@„YƒZ"], + ["@@L_{Epf"], + ["@@^WqCT\\"], + ["@@\\[“‹§t|”¤_"], + ["@@m`n_"], + ["@@Ïxnj{q_×^Giip"], + [ + "@@@œé^B†‡ntˆaÊU—˜Ÿ]x ¯ÄPIJ­°h€ʙK³†VˆÕ@Y~†|EvĹsDŽ¦­L^p²ŸÒG ’Ël]„xxÄ_˜fT¤Ď¤cŽœP„–C¨¸TVjbgH²sdÎdHt`Bˆ—²¬GJję¶[ÐhjeXdlwhšðSȦªVÊπ‹Æ‘Z˜ÆŶ®²†^ŒÎyÅÎcPqń“ĚDMħĜŁH­ˆk„çvV[ij¼W–‚YÀäĦ’‘`XlžR`žôLUVžfK–¢†{NZdĒª’YĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~†źBŽ|¦ÕœEž¤Ð`\\|Kˆ˜UnnI]¤ÀÂĊnŎ™R®Ő¿¶\\ÀøíDm¦ÎbŨab‰œaĘ\\ľã‚¸a˜tÎSƐ´©v\\ÖÚÌǴ¤Â‡¨JKr€Z_Z€fjþhPkx€`Y”’RIŒjJcVf~sCN¤ ˆE‚œhæm‰–sHy¨SðÑÌ\\\\ŸĐRZk°IS§fqŒßýáЍÙÉÖ[^¯ǤŲ„ê´\\¦¬ĆPM¯£Ÿˆ»uïpùzEx€žanµyoluqe¦W^£ÊL}ñrkqWňûP™‰UP¡ôJŠoo·ŒU}£Œ„[·¨@XŒĸŸ“‹‹DXm­Ûݏº‡›GU‹CÁª½{íĂ^cj‡k“¶Ã[q¤“LÉö³cux«zZfƒ²BWÇ®Yß½ve±ÃC•ý£W{Ú^’q^sÑ·¨‹ÍOt“¹·C¥‡GD›rí@wÕKţ݋˜Ÿ«V·i}xËÍ÷‘i©ĝ‡ɝǡ]ƒˆ{c™±OW‹³Ya±Ÿ‰_穂Hžĕoƫ€Ňqƒr³‰Lys[„ñ³¯OS–ďOMisZ†±ÅFC¥Pq{‚Ã[Pg}\\—¿ghćO…•k^ģÁFıĉĥM­oEqqZûěʼn³F‘¦oĵ—hŸÕP{¯~TÍlª‰N‰ßY“Ð{Ps{ÃVU™™eĎwk±ʼnVÓ½ŽJãÇÇ»Jm°dhcÀff‘dF~ˆ€ĀeĖ€d`sx² šƒ®EżĀdQ‹Âd^~ăÔHˆ¦\\›LKpĄVez¤NP ǹӗR™ÆąJSh­a[¦´Âghwm€BÐ¨źhI|žVVŽ—Ž|p] Â¼èNä¶ÜBÖ¼“L`‚¼bØæŒKV”ŸpoœúNZÞÒKxpw|ÊEMnzEQšŽIZ”ŽZ‡NBˆčÚFÜçmĩ‚WĪñt‘ÞĵÇñZ«uD‚±|Əlij¥ãn·±PmÍa‰–da‡ CL‡Ǒkùó¡³Ï«QaċϑOÃ¥ÕđQȥċƭy‹³ÃA" + ] + ], + "encodeOffsets": [ + [[123686, 41445]], + [[126019, 40435]], + [[124393, 40128]], + [[126117, 39963]], + [[125322, 40140]], + [[126686, 40700]], + [[126041, 40374]], + [[125584, 40168]], + [[125453, 40165]], + [[125362, 40214]], + [[125280, 40291]], + [[125774, 39997]], + [[125976, 40496]], + [[125822, 39993]], + [[125509, 40217]], + [[122731, 40949]] + ] + } + }, + { + "type": "Feature", + "id": "220000", + "properties": { "id": "220000", "cp": [125.3245, 43.886841], "name": "吉林", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@‘p䔳PClƒFbbÍzš€wBG’ĭ€Z„Åi“»ƒlY­ċ²SgŽkÇ£—^S‰“qd¯•‹R…©éŽ£¯S†\\cZ¹iűƏCuƍÓX‡oR}“M^o•£…R}oªU­F…uuXHlEŕ‡€Ï©¤ÛmTŽþ¤D–²ÄufàÀ­XXȱAe„yYw¬dvõ´KÊ£”\\rµÄl”iˆdā]|DÂVŒœH¹ˆÞ®ÜWnŒC”Œķ W‹§@\\¸‹ƒ~¤‹Vp¸‰póIO¢ŠVOšŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð‡¼¤ N°ąO¥«³[ƒéǡű_°Õ\\ÚÊĝŽþâőàerR¨­JYlďQ[ ÏYëЧTGz•tnŠß¡gFkMŸāGÁ¤ia É‰™È¹`\\xs€¬dĆkNnuNUŠ–užP@‚vRY¾•–\\¢…ŒGªóĄ~RãÖÎĢù‚đŴÕhQŽxtcæëSɽʼníëlj£ƍG£nj°KƘµDsØÑpyƸ®¿bXp‚]vbÍZuĂ{nˆ^IüœÀSք”¦EŒvRÎûh@℈[‚Əȉô~FNr¯ôçR±ƒ­HÑl•’Ģ–^¤¢‚OðŸŒævxsŒ]ÞÁTĠs¶¿âƊGW¾ìA¦·TѬ†è¥€ÏÐJ¨¼ÒÖ¼ƒƦɄxÊ~S–tD@ŠĂ¼Ŵ¡jlºWžvЉˆzƦZЎ²CH— „Axiukd‹ŒGgetqmcžÛ£Ozy¥cE}|…¾cZ…k‚‰¿uŐã[oxGikfeäT@…šSUwpiÚFM©’£è^ڟ‚`@v¶eň†f h˜eP¶žt“äOlÔUgƒÞzŸU`lœ}ÔÆUvØ_Ō¬Öi^ĉi§²ÃŠB~¡Ĉ™ÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYx‘ƘDVÇĺĿg¿cwÅ\\¹˜¥Yĭlœ¤žOv†šLjM_a W`zļMž·\\swqÝSA‡š—q‰Śij¯Š‘°kŠRē°wx^Đkǂғ„œž“œŽ„‹\\]˜nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°“G³¼XÀ““™¤¹i´o¤ŃšŸÈ`̃DzÄUĞd\\i֚ŒˆmÈBĤÜɲDEh LG¾ƀľ{WaŒYÍȏĢĘÔRîĐj‹}Ǟ“ccj‡oUb½š{“h§Ǿ{K‹ƖµÎ÷žGĀÖŠåưÎs­l›•yiē«‹`姝H¥Ae^§„GK}iã\\c]v©ģZ“mÃ|“[M}ģTɟĵ‘Â`À–çm‰‘FK¥ÚíÁbXš³ÌQґHof{‰]e€pt·GŋĜYünĎųVY^’˜ydõkÅZW„«WUa~U·Sb•wGçǑ‚“iW^q‹F‚“›uNĝ—·Ew„‹UtW·Ýďæ©PuqEzwAV•—XR‰ãQ`­©GŒM‡ehc›c”ďϝd‡©ÑW_ϗYƅŒ»…é\\ƒɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_ý‘L¡‘ýŸqT^rme™\\Pp•ZZbƒyŸ’uybQ—efµ]UhĿDCmûvašÙNSkCwn‰cćfv~…Y‹„ÇG" + ], + "encodeOffsets": [[130196, 42528]] + } + }, + { + "type": "Feature", + "id": "230000", + "properties": { + "id": "230000", + "cp": [128.642464, 46.756967], + "name": "黑龙江", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + "@@UƒµNÿ¥īè灋•HÍøƕ¶LŒǽ|g¨|”™Ža¾pViˆdd”~ÈiŒíďÓQġėǐZ΋ŽXb½|ſÃH½ŸKFgɱCģÛÇA‡n™‹jÕc[VĝDZÃ˄Ç_™ £ń³pŽj£º”š¿”»WH´¯”U¸đĢmžtĜyzzNN|g¸÷äűѱĉā~mq^—Œ[ƒ”››”ƒǁÑďlw]¯xQĔ‰¯l‰’€°řĴrŠ™˜BˆÞTxr[tޏĻN_yŸX`biN™Ku…P›£k‚ZĮ—¦[ºxÆÀdhŽĹŀUÈƗCw’áZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFćš}¢‰A±Äj¨]ĊÕjŋ«×`VuÓś~_kŷVÝyh„“VkÄãPs”Oµ—fŸge‚Ň…µf@u_Ù ÙcŸªNªÙEojVx™T@†ãSefjlwH\\pŏäÀvŠŽlY†½d{†F~¦dyz¤PÜndsrhf‹HcŒvlwjFœ£G˜±DύƥY‡yϊu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|Cš˜zxAè¥bœfudTrFWÁ¹Am|˜ĔĕsķÆF‡´Nš‰}ć…UŠÕ@Áijſmužç’uð^ÊýowŒFzØÎĕNőžǏȎôªÌŒDŽàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°ƒUŸzou‡xe]}Ž…AyȑW¯ÌmK‡“Q]‹Īºif¸ÄX|sZt|½ÚUΠlkš^p{f¤lˆºlÆW –€A²˜PVܜPH”Êâ]ÎĈÌÜk´\\@qàsĔÄQºpRij¼èi†`¶—„bXƒrBgxfv»ŽuUiˆŒ^v~”J¬mVp´£Œ´VWrnP½ì¢BX‚¬h™ŠðX¹^TjVœŠriªj™tŊÄm€tPGx¸bgRšŽsT`ZozÆO]’ÒFô҆Oƒ‡ŊŒvŞ”p’cGŒêŠsx´DR–Œ{A†„EOr°Œ•žx|íœbˆ³Wm~DVjºéNN†Ëܲɶ­GƒxŷCStŸ}]ûō•SmtuÇÃĕN•™āg»šíT«u}ç½BĵÞʣ¥ëÊ¡Mێ³ãȅ¡ƋaǩÈÉQ‰†G¢·lG|›„tvgrrf«†ptęŘnŠÅĢr„I²¯LiØsPf˜_vĠd„xM prʹšL¤‹¤‡eˌƒÀđK“žïÙVY§]I‡óáĥ]ķ†Kˆ¥Œj|pŇ\\kzţ¦šnņäÔVĂîά|vW’®l¤èØr‚˜•xm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄ–Ą»ƢjȦOǺ¨ìSŖÆƬy”Qœv`–cwƒZSÌ®ü±DŽ]ŀç¬B¬©ńzƺŷɄeeOĨS’Œfm Ċ‚ƀP̎ēz©Ċ‚ÄÕÊmgŸÇsJ¥ƔˆŊśæ’΁Ñqv¿íUOµª‰ÂnĦÁ_½ä@ê텣P}Ġ[@gġ}g“ɊדûÏWXá¢užƻÌsNͽƎÁ§č՛AēeL³àydl›¦ĘVçŁpśdžĽĺſʃQíÜçÛġԏsĕ¬—Ǹ¯YßċġHµ ¡eå`ļƒrĉŘóƢFì“ĎWøxÊk†”ƈdƬv|–I|·©NqńRŀƒ¤é”eŊœŀ›ˆàŀU²ŕƀB‚Q£Ď}L¹Îk@©ĈuǰųǨ”Ú§ƈnTËÇéƟÊcfčŤ^Xm‡—HĊĕË«W·ċëx³ǔķÐċJā‚wİ_ĸ˜Ȁ^ôWr­°oú¬Ħ…ŨK~”ȰCĐ´Ƕ£’fNÎèâw¢XnŮeÂÆĶŽ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®‚ØCÔ ŬGƠ”ƦYĜ‡ĘÜƬDJ—g_ͥœ@čŅĻA“¶¯@wÎqC½Ĉ»NŸăëK™ďÍQ“Ùƫ[«Ãí•gßÔÇOÝáW‘ñuZ“¯ĥ€Ÿŕā¡ÑķJu¤E Ÿå¯°WKɱ_d_}}vyŸõu¬ï¹ÓU±½@gÏ¿rýD‰†g…Cd‰µ—°MFYxw¿CG£‹Rƛ½Õ{]L§{qqąš¿BÇƻğëšܭNJË|c²}Fµ}›ÙRsÓpg±ŠQNqǫŋRwŕnéÑÉKŸ†«SeYR…ŋ‹@{¤SJ}šD Ûǖ֍Ÿ]gr¡µŷjqWÛham³~S«“„›Þ]" + ] + ], + "encodeOffsets": [[[134456, 44547]]] + } + }, + { + "type": "Feature", + "id": "320000", + "properties": { + "id": "320000", + "cp": [119.767413, 33.041544], + "name": "江苏", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@cþÅPiŠ`ZŸRu¥É\\]~°ŽY`µ†Óƒ^phÁbnÀşúŽòa–ĬºTÖŒb‚˜e¦¦€{¸ZâćNpŒ©žHr|^ˆmjhŠSEb\\afv`sz^lkŽlj‹Ätg‹¤D˜­¾Xš¿À’|ДiZ„ȀåB·î}GL¢õcßjaŸyBFµÏC^ĭ•cÙt¿sğH]j{s©HM¢ƒQnDÀ©DaÜތ·jgàiDbPufjDk`dPOîƒhw¡ĥ‡¥šG˜ŸP²ĐobºrY†„î¶aHŢ´ ]´‚rılw³r_{£DB_Ûdåuk|ˆŨ¯F Cºyr{XFy™e³Þċ‡¿Â™kĭB¿„MvÛpm`rÚã”@ƹhågËÖƿxnlč¶Åì½Ot¾dJlŠVJʜǀœŞqvnOŠ^ŸJ”Z‘ż·Q}ê͎ÅmµÒ]Žƍ¦Dq}¬R^èĂ´ŀĻĊIԒtžIJyQŐĠMNtœR®òLh‰›Ěs©»œ}OӌGZz¶A\\jĨFˆäOĤ˜HYš†JvÞHNiÜaϚɖnFQlšNM¤ˆB´ĄNöɂtp–Ŭdf先‹qm¿QûŠùއÚb¤uŃJŴu»¹Ą•lȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Y™xci‡tğ®jű¢KOķ•Coy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋĝÄ͎ī‰çÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıDž_k}¢m[ÝóDµ—¡RLčiXy‡ÅNïă¡¸iĔϑNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCt‹OPrƒE^ÒoŠg™ĉIµžÛÅʹK…¤½phMŠü`o怆ŀ" + ], + "encodeOffsets": [[121740, 32276]] + } + }, + { + "type": "Feature", + "id": "330000", + "properties": { + "id": "330000", + "cp": [120.153576, 29.287459], + "name": "浙江", + "childNum": 45 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@E^dQ]K"], + ["@@jX^j‡"], + ["@@sfŠbU‡"], + ["@@qP\\xz[ck"], + ["@@‘Rƒ¢‚FX}°[s_"], + ["@@Cbœ\\—}"], + ["@@e|v\\la{u"], + ["@@v~u}"], + ["@@QxÂF¯}"], + ["@@¹nŒvÞs¯o"], + ["@@rSkUEj"], + ["@@bi­ZŒP"], + ["@@p[}INf"], + ["@@À¿€"], + ["@@¹dnbŒ…"], + ["@@rSŸBnR"], + ["@@g~h}"], + ["@@FlEk"], + ["@@OdPc"], + ["@@v[u\\"], + ["@@FjâL~wyoo~›sµL–\\"], + ["@@¬e¹aNˆ"], + ["@@\\nÔ¡q]L³ë\\ÿ®ŒQ֎"], + ["@@ÊA­©[¬"], + ["@@KxŒv­"], + ["@@@hlIk]"], + ["@@pW{o||j"], + ["@@Md|_mC"], + ["@@¢…X£ÏylD¼XˆtH"], + ["@@hlÜ[LykAvyfw^Ež›¤"], + ["@@fp¤Mus“R"], + ["@@®_ma~•LÁ¬šZ"], + ["@@iM„xZ"], + ["@@ZcYd"], + ["@@Z~dOSo|A¿qZv"], + ["@@@`”EN¡v"], + ["@@|–TY{"], + ["@@@n@m"], + ["@@XWkCT\\"], + ["@@ºwšZRkĕWO¢"], + ["@@™X®±Grƪ\\ÔáXq{‹"], + ["@@ůTG°ĄLHm°UC‹"], + [ + "@@¤Ž€aÜx~}dtüGæţŎíĔcŖpMËВj碷ðĄÆMzˆjWKĎ¢Q¶˜À_꒔_Bı€i«pZ€gf€¤Nrq]§ĂN®«H±‡yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªˆŠÁŖHŗʼnåqûõi¨hÜ·ƒñt»¹ýv_[«¸m‰YL¯‰Qª…mĉÅdMˆ•gÇjcº«•ęœ¬­K­´ƒB«Âącoċ\\xKd¡gěŧ«®á’[~ıxu·Å”KsËɏc¢Ù\\ĭƛëbf¹­ģSƒĜkáƉÔ­ĈZB{ŠaM‘µ‰fzʼnfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®‚\\ßðCšh™iqªĭiAu‡A­µ”_W¥ƣO\\lċĢttC¨£t`ˆ™PZäuXßBs‡Ļyek€OđġĵHuXBšµ]׌‡­­\\›°®¬F¢¾pµ¼kŘó¬Wät’¸|@ž•L¨¸µr“ºù³Ù~§WI‹ŸZWŽ®’±Ð¨ÒÉx€`‰²pĜ•rOògtÁZ}þÙ]„’¡ŒŸFK‚wsPlU[}¦Rvn`hq¬\\”nQ´ĘRWb”‚_ rtČFI֊kŠŠĦPJ¶ÖÀÖJĈĄTĚòžC ²@Pú…Øzœ©PœCÈÚœĒ±„hŖ‡l¬â~nm¨f©–iļ«m‡nt–u†ÖZÜÄj“ŠLŽ®E̜Fª²iÊxبžIÈhhst" + ], + ["@@o\\V’zRZ}y"], + ["@@†@°¡mۛGĕ¨§Ianá[ýƤjfæ‡ØL–•äGr™"] + ], + "encodeOffsets": [ + [[125592, 31553]], + [[125785, 31436]], + [[125729, 31431]], + [[125513, 31380]], + [[125223, 30438]], + [[125115, 30114]], + [[124815, 29155]], + [[124419, 28746]], + [[124095, 28635]], + [[124005, 28609]], + [[125000, 30713]], + [[125111, 30698]], + [[125078, 30682]], + [[125150, 30684]], + [[124014, 28103]], + [[125008, 31331]], + [[125411, 31468]], + [[125329, 31479]], + [[125626, 30916]], + [[125417, 30956]], + [[125254, 30976]], + [[125199, 30997]], + [[125095, 31058]], + [[125083, 30915]], + [[124885, 31015]], + [[125218, 30798]], + [[124867, 30838]], + [[124755, 30788]], + [[124802, 30809]], + [[125267, 30657]], + [[125218, 30578]], + [[125200, 30562]], + [[124968, 30474]], + [[125167, 30396]], + [[124955, 29879]], + [[124714, 29781]], + [[124762, 29462]], + [[124325, 28754]], + [[123990, 28459]], + [[125366, 31477]], + [[125115, 30363]], + [[125369, 31139]], + [[122495, 31878]], + [[125329, 30690]], + [[125192, 30787]] + ] + } + }, + { + "type": "Feature", + "id": "340000", + "properties": { "id": "340000", "cp": [117.283042, 31.26119], "name": "安徽", "childNum": 3 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@^iuLX^"], + ["@@‚e©Ehl"], + [ + "@@°ZÆëϵmkǀwÌÕæhºgBĝâqÙĊz›ÖgņtÀÁÊÆá’hEz|WzqD¹€Ÿ°E‡ŧl{ævÜcA`¤C`|´qžxIJkq^³³ŸGšµbƒíZ…¹qpa±ď OH—¦™Ħˆx¢„gPícOl_iCveaOjCh߸i݋bÛªCC¿€m„RV§¢A|t^iĠGÀtÚs–d]ĮÐDE¶zAb àiödK¡~H¸íæAžǿYƒ“j{ď¿‘™À½W—®£ChŒÃsiŒkkly]_teu[bFa‰Tig‡n{]Gqªo‹ĈMYá|·¥f¥—őaSÕė™NµñĞ«ImŒ_m¿Âa]uĜp …Z_§{Cƒäg¤°r[_Yj‰ÆOdý“[ŽI[á·¥“Q_n‡ùgL¾mv™ˊBÜÆ¶ĊJhšp“c¹˜O]iŠ]œ¥ jtsggJǧw×jÉ©±›EFˍ­‰Ki”ÛÃÕYv…s•ˆm¬njĻª•§emná}k«ŕˆƒgđ²Ù›DǤ›í¡ªOy›†×Où±@DŸñSęćăÕIÕ¿IµĥO‰‰jNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆßŽF¶žX®¿‰mŒ™w…RIޓfßoG‘³¾©uyH‘į{Ɓħ¯AFnuP…ÍÔzšŒV—dàôº^Ðæd´€‡oG¤{S‰¬ćxã}›ŧ×Kǥĩ«žÕOEзÖdÖsƘѨ[’Û^Xr¢¼˜§xvěƵ`K”§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔē…ßúLÃϖ_ÈÏ|]ÂÏFl”g`bšežž€n¾¢pU‚h~ƴ˶_‚r sĄ~cž”ƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³…]’u}›f…ïQl{skl“oNdŸjŸäËzDvčoQŠďHI¦rb“tHĔ~BmlRš—V_„ħTLnñH±’DžœL‘¼L˜ªl§Ťa¸ŒĚlK²€\\RòvDcÎJbt[¤€D@®hh~kt°ǾzÖ@¾ªdb„YhüóZ ň¶vHrľ\\ʗJuxAT|dmÀO„‹[ÃԋG·ĚąĐlŪÚpSJ¨ĸˆLvÞcPæķŨŽ®mАˆálŸwKhïgA¢ųƩޖ¤OȜm’°ŒK´" + ] + ], + "encodeOffsets": [[[121722, 32278]], [[119475, 30423]], [[119168, 35472]]] + } + }, + { + "type": "Feature", + "id": "350000", + "properties": { + "id": "350000", + "cp": [118.306239, 26.075302], + "name": "福建", + "childNum": 18 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@“zht´‡]"], + ["@@aj^~ĆG—©O"], + ["@@ed¨„C}}i"], + ["@@@vˆPGsQ"], + ["@@‰sBz‚ddW]Q"], + ["@@SލQ“{"], + ["@@NŽVucW"], + ["@@qptBAq"], + ["@@‰’¸[mu"], + ["@@Q\\pD]_"], + ["@@jSwUadpF"], + ["@@eXª~ƒ•"], + ["@@AjvFso"], + ["@@fT–›_Çí\\Ÿ™—v|ba¦jZÆy€°"], + ["@@IjJi"], + ["@@wJI€ˆxš«¼AoNe{M­"], + ["@@K‰±¡Óˆ”ČäeZ"], + [ + "@@k¡¹Eh~c®wBk‹UplÀ¡I•~Māe£bN¨gZý¡a±Öcp©PhžI”Ÿ¢Qq…ÇGj‹|¥U™ g[Ky¬ŏ–v@OpˆtÉEŸF„\\@ åA¬ˆV{Xģ‰ĐBy…cpě…¼³Ăp·¤ƒ¥o“hqqÚ¡ŅLsƒ^ᗞ§qlŸÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ß–ėu›ĕeûҍiÁŧSW¥˜QŠûŗ½ùěcݧSùĩąSWó«íęACµ›eR—åǃRCÒÇZÍ¢‹ź±^dlsŒtjD¸•‚ZpužÔâÒH¾oLUêÃÔjjēò´ĄW‚ƛ…^Ñ¥‹ĦŸ@Çò–ŠmŒƒOw¡õyJ†yD}¢ďÑÈġfŠZd–a©º²z£šN–ƒjD°Ötj¶¬ZSÎ~¾c°¶Ðm˜x‚O¸¢Pl´žSL|¥žA†ȪĖM’ņIJg®áIJČĒü` ŽQF‡¬h|ÓJ@zµ |ê³È ¸UÖŬŬÀEttĸr‚]€˜ðŽM¤ĶIJHtÏ A’†žĬkvsq‡^aÎbvŒd–™fÊòSD€´Z^’xPsÞrv‹ƞŀ˜jJd×ŘÉ ®A–ΦĤd€xĆqAŒ†ZR”ÀMźŒnĊ»ŒİÐZ— YX–æJŠyĊ²ˆ·¶q§·–K@·{s‘Xãô«lŗ¶»o½E¡­«¢±¨Yˆ®Ø‹¶^A™vWĶGĒĢžPlzfˆļŽtàAvWYãšO_‡¤sD§ssČġ[kƤPX¦Ž`¶“ž®ˆBBvĪjv©šjx[L¥àï[F…¼ÍË»ğV`«•Ip™}ccÅĥZE‹ãoP…´B@ŠD—¸m±“z«Ƴ—¿å³BRضˆœWlâþäą`“]Z£Tc— ĹGµ¶H™m@_©—kŒ‰¾xĨ‡ôȉðX«½đCIbćqK³Á‹Äš¬OAwã»aLʼn‡ËĥW[“ÂGI—ÂNxij¤D¢ŽîĎÎB§°_JœGsƒ¥E@…¤uć…P‘å†cuMuw¢BI¿‡]zG¹guĮck\\_" + ] + ], + "encodeOffsets": [ + [[123250, 27563]], + [[122541, 27268]], + [[123020, 27189]], + [[122916, 27125]], + [[122887, 26845]], + [[122808, 26762]], + [[122568, 25912]], + [[122778, 26197]], + [[122515, 26757]], + [[122816, 26587]], + [[123388, 27005]], + [[122450, 26243]], + [[122578, 25962]], + [[121255, 25103]], + [[120987, 24903]], + [[122339, 25802]], + [[121042, 25093]], + [[122439, 26024]] + ] + } + }, + { + "type": "Feature", + "id": "360000", + "properties": { + "id": "360000", + "cp": [115.592151, 27.676493], + "name": "江西", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@ĢĨƐgÂMD~ņªe^\\^§„ý©j׍cZ†Ø¨zdÒa¶ˆlҍJŒìõ`oz÷@¤u޸´†ôęöY¼‰HČƶajlÞƩ¥éZ[”|h}^U Œ ¥p„ĄžƦO lt¸Æ €Q\\€ŠaÆ|CnÂOjt­ĚĤd’ÈŒF`’¶„@Ð딠¦ōҞ¨Sêv†HĢûXD®…QgėWiØPÞìºr¤dž€NĠ¢l–•ĄtZoœCƞÔºCxrpĠV®Ê{f_Y`_ƒeq’’®Aot`@o‚DXfkp¨|Šs¬\\D‘ÄSfè©Hn¬…^DhÆyøJh“ØxĢĀLʈ„ƠPżċĄwȠ̦G®ǒĤäTŠÆ~ĦwŠ«|TF¡Šn€c³Ïå¹]ĉđxe{ÎӐ†vOEm°BƂĨİ|G’vz½ª´€H’àp”eJ݆Qšxn‹ÀŠW­žEµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[“r«_gŽmQu~¥V\\OkxtL E¢‹ƒ‘Ú^~ýê‹Pó–qo슱_Êw§ÑªåƗ⼋mĉŹ‹¿NQ“…YB‹ąrwģcÍ¥B•Ÿ­ŗÊcØiI—žƝĿuŒqtāwO]‘³YCñTeɕš‹caub͈]trlu€ī…B‘ПGsĵıN£ï—^ķqss¿FūūV՟·´Ç{éĈý‰ÿ›OEˆR_ŸđûIċâJh­ŅıN‘ȩĕB…¦K{Tk³¡OP·wn—µÏd¯}½TÍ«YiµÕsC¯„iM•¤™­•¦¯P|ÿUHv“he¥oFTu‰õ\\ŽOSs‹MòđƇiaºćXŸĊĵà·çhƃ÷ǜ{‘ígu^›đg’m[×zkKN‘¶Õ»lčÓ{XSƉv©_ÈëJbVk„ĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B„±’ÌŒK˜y’áV‡¼Ã~­…`g›ŸsÙfI›Ƌlę¹e|–~udjˆuTlXµf`¿JdŠ[\\˜„L‚‘²" + ], + "encodeOffsets": [[116689, 26234]] + } + }, + { + "type": "Feature", + "id": "370000", + "properties": { + "id": "370000", + "cp": [118.000923, 36.275807], + "name": "山东", + "childNum": 13 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@Xjd]{K"], + ["@@itbFHy"], + ["@@HlGk"], + ["@@T‚ŒGŸy"], + ["@@K¬˜•‹U"], + ["@@WdXc"], + ["@@PtOs"], + ["@@•LnXhc"], + ["@@ppVƒu]Or"], + ["@@cdzAUa"], + ["@@udRhnCI‡"], + ["@@ˆoIƒpR„"], + [ + "@@Ľč{fzƤî’Kš–ÎMĮ]†—ZFˆ½Y]â£ph’™š¶¨râøÀ†ÎǨ¤^ºÄ”Gzˆ~grĚĜlĞÆ„LĆdž¢Îo¦–cv“Kb€gr°Wh”mZp ˆL]LºcU‰Æ­n”żĤÌǜbAnrOAœ´žȊcÀbƦUØrĆUÜøœĬƞ†š˜Ez„VL®öØBkŖÝĐ˹ŧ̄±ÀbÎɜnb²ĦhņBĖ›žįĦåXćì@L¯´ywƕCéõė ƿ¸‘lµ¾Z|†ZWyFYŸ¨Mf~C¿`€à_RÇzwƌfQnny´INoƬˆèôº|sT„JUš›‚L„îVj„ǎ¾Ē؍‚Dz²XPn±ŴPè¸ŔLƔÜƺ_T‘üÃĤBBċȉöA´fa„˜M¨{«M`‡¶d¡ô‰Ö°šmȰBÔjjŒ´PM|”c^d¤u•ƒ¤Û´Œä«ƢfPk¶Môlˆ]Lb„}su^ke{lC‘…M•rDŠÇ­]NÑFsmoõľH‰yGă{{çrnÓE‰‹ƕZGª¹Fj¢ïW…uøCǷ돡ąuhÛ¡^Kx•C`C\\bÅxì²ĝÝ¿_N‰īCȽĿåB¥¢·IŖÕy\\‡¹kx‡Ã£Č×GDyÕ¤ÁçFQ¡„KtŵƋ]CgÏAùSed‡cÚź—ŠuYfƒyMmhUWpSyGwMPqŀ—›Á¼zK›¶†G•­Y§Ëƒ@–´śÇµƕBmœ@Io‚g——Z¯u‹TMx}C‘‰VK‚ï{éƵP—™_K«™pÛÙqċtkkù]gŽ‹Tğwo•ɁsMõ³ă‡AN£™MRkmEʕč™ÛbMjÝGu…IZ™—GPģ‡ãħE[iµBEuŸDPԛ~ª¼ętŠœ]ŒûG§€¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~ݏY’I“] P‰umŝrƿ›‰›Iā‹[x‰edz‹L‘¯v¯s¬ÁY…~}…ťuٌg›ƋpÝĄ_ņī¶ÏSR´ÁP~ž¿Cyžċßdwk´Ss•X|t‰`Ä Èð€AªìÎT°¦Dd–€a^lĎDĶÚY°Ž`ĪŴǒˆ”àŠv\\ebŒZH„ŖR¬ŢƱùęO•ÑM­³FۃWp[ƒ" + ] + ], + "encodeOffsets": [ + [[123806, 39303]], + [[123821, 39266]], + [[123742, 39256]], + [[123702, 39203]], + [[123649, 39066]], + [[123847, 38933]], + [[123580, 38839]], + [[123894, 37288]], + [[123043, 36624]], + [[123344, 38676]], + [[123522, 38857]], + [[123628, 38858]], + [[118260, 36742]] + ] + } + }, + { + "type": "Feature", + "id": "410000", + "properties": { + "id": "410000", + "cp": [113.665412, 33.757975], + "name": "河南", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@•ýL™ùµP³swIÓxcŢĞð†´E®žÚPt†ĴXØx¶˜@«ŕŕQGƒ‹Yfa[şu“ßǩ™đš_X³ijÕčC]kbc•¥CS¯ëÍB©÷‹–³­Siˆ_}m˜YTtž³xlàcȂzÀD}ÂOQ³ÐTĨ¯†ƗòËŖ[hœł‹Ŧv~††}ÂZž«¤lPǕ£ªÝŴÅR§ØnhcŒtâk‡nύ­ľŹUÓÝdKuķ‡I§oTũÙďkęĆH¸ÓŒ\\ăŒ¿PcnS{wBIvɘĽ[GqµuŸŇôYgûƒZcaŽ©@½Õǽys¯}lgg@­C\\£as€IdÍuCQñ[L±ęk·‹ţb¨©kK—’»›KC²‘òGKmĨS`ƒ˜UQ™nk}AGē”sqaJ¥ĐGR‰ĎpCuÌy ã iMc”plk|tRk†ðœev~^‘´†¦ÜŽSí¿_iyjI|ȑ|¿_»d}qŸ^{“Ƈdă}Ÿtqµ`Ƴĕg}V¡om½fa™Ço³TTj¥„tĠ—Ry”K{ùÓjuµ{t}uËR‘iŸvGŠçJFjµŠÍyqΘàQÂFewixGw½Yŷpµú³XU›½ġy™łå‰kÚwZXˆ·l„¢Á¢K”zO„Λ΀jc¼htoDHr…|­J“½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQ…Ťƒ]MÛfaQpě±ǽ¾]u­Fu‹÷nƒ™čįADp}AjmcEǒaª³o³ÆÍSƇĈÙDIzˑ赟^ˆKLœ—i—Þñ€[œƒaA²zz‰Ì÷Dœ|[šíijgf‚ÕÞd®|`ƒĆ~„oĠƑô³Ŋ‘D×°¯CsŠøÀ«ì‰UMhTº¨¸ǡîS–Ô„DruÂÇZ•ÖEŽ’vPZ„žW”~؋ÐtĄE¢¦Ðy¸bŠô´oŬ¬Ž²Ês~€€]®tªašpŎJ¨Öº„_ŠŔ–`’Ŗ^Ѝ\\Ĝu–”~m²Ƹ›¸fW‰ĦrƔ}Î^gjdfÔ¡J}\\n C˜¦þWxªJRÔŠu¬ĨĨmF†dM{\\d\\ŠYÊ¢ú@@¦ª²SŠÜsC–}fNècbpRmlØ^g„d¢aÒ¢CZˆZxvÆ¶N¿’¢T@€uCœ¬^ĊðÄn|žlGl’™Rjsp¢ED}€Fio~ÔNŽ‹„~zkĘHVsDzßjƒŬŒŠŢ`Pûàl¢˜\\ÀœEhŽİgÞē X¼Pk–„|m" + ], + "encodeOffsets": [[118256, 37017]] + } + }, + { + "type": "Feature", + "id": "420000", + "properties": { + "id": "420000", + "cp": [113.298572, 30.684355], + "name": "湖北", + "childNum": 3 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@AB‚"], + ["@@lskt"], + [ + "@@¾«}{ra®pîÃ\\™›{øCŠËyyB±„b\\›ò˜Ý˜jK›‡L ]ĎĽÌ’JyÚCƈćÎT´Å´pb©È‘dFin~BCo°BĎĚømvŒ®E^vǾ½Ĝ²Ro‚bÜeNŽ„^ĺ£R†¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I”¾®I†{GqpCgyl{‡£œÍƒÍyPL“¡ƒ¡¸kW‡xYlÙæŠšŁĢzœ¾žV´W¶ùŸo¾ZHxjwfx„GNÁ•³Xéæl¶‰EièIH‰ u’jÌQ~v|sv¶Ôi|ú¢Fh˜Qsğ¦ƒSiŠBg™ÐE^ÁÐ{–čnOÂȞUÎóĔ†ÊēIJ}Z³½Mŧïeyp·uk³DsѨŸL“¶_œÅuèw»—€¡WqÜ]\\‘Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟO‡ƒKÉġÿ×wg”÷IÅzCg†]m«ªGeçÃTC’«[‰t§{loWeC@ps_Bp‘­r‘„f_``Z|ei¡—oċMqow€¹DƝӛDYpûs•–‹Ykıǃ}s¥ç³[§ŸcYЧHK„«Qy‰]¢“wwö€¸ïx¼ņ¾Xv®ÇÀµRĠЋžHMž±cÏd„ƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\}pĭÉI±Ñy…¿³x¯N‰o‰|¹H™ÏÛm‹júË~Tš•u˜ęjCöAwě¬R’đl¯ Ñb­‰ŇT†Ŀ_[Œ‘IčĄʿnM¦ğ\\É[T·™k¹œ©oĕ@A¾w•ya¥Y\\¥Âaz¯ãÁ¡k¥ne£Ûw†E©Êō¶˓uoj_Uƒ¡cF¹­[Wv“P©w—huÕyBF“ƒ`R‹qJUw\\i¡{jŸŸEPïÿ½fć…QÑÀQ{ž‚°‡fLԁ~wXg—ītêݾ–ĺ‘Hdˆ³fJd]‹HJ²…E€ƒoU¥†HhwQsƐ»Xmg±çve›]Dm͂PˆoCc¾‹_h”–høYrŊU¶eD°Č_N~øĹĚ·`z’]Äþp¼…äÌQŒv\\rCŒé¾TnkžŐڀÜa‡“¼ÝƆ̶Ûo…d…ĔňТJq’Pb ¾|JŒ¾fXŠƐîĨ_Z¯À}úƲ‹N_ĒĊ^„‘ĈaŐyp»CÇĕKŠšñL³ŠġMŒ²wrIÒŭxjb[œžn«øœ˜—æˆàƒ ^²­h¯Ú€ŐªÞ¸€Y²ĒVø}Ā^İ™´‚LŠÚm„¥ÀJÞ{JVŒųÞŃx×sxxƈē ģMř–ÚðòIf–Ċ“Œ\\Ʈ±ŒdʧĘD†vČ_Àæ~DŒċ´A®µ†¨ØLV¦êHÒ¤" + ] + ], + "encodeOffsets": [[[113712, 34000]], [[115612, 30507]], [[113649, 34054]]] + } + }, + { + "type": "Feature", + "id": "430000", + "properties": { "id": "430000", "cp": [111.782279, 28.09409], "name": "湖南", "childNum": 3 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@—n„FTs"], + ["@@ßÅÆá‰½ÔXr—†CO™“…ËR‘ïÿĩ­TooQyšÓ[‹ŅBE¬–ÎÓXa„į§Ã¸G °ITxp‰úxÚij¥Ïš–̾ŠedžÄ©ĸG…œàGh‚€M¤–Â_U}Ċ}¢pczfŠþg¤€”ÇòAV‘‹M"], + [ + "@@©K—ƒA·³CQ±Á«³BUŠƑ¹AŠtćOw™D]ŒJiØSm¯b£‘ylƒ›X…HËѱH•«–‘C^õľA–Å§¤É¥„ïyuǙuA¢^{ÌC´­¦ŷJ£^[†“ª¿‡ĕ~•Ƈ…•N… skóā‡¹¿€ï]ă~÷O§­@—Vm¡‹Qđ¦¢Ĥ{ºjԏŽŒª¥nf´•~ÕoŸž×Ûą‹MąıuZœmZcÒ IJβSÊDŽŶ¨ƚƒ’CÖŎªQؼrŭŽ­«}NÏürʬŒmjr€@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hTœ}mĉ–¹¥ě‰Dÿë©ıÓ[Oº£ž“¥ót€ł¹MՄžƪƒ`Pš…Di–ÛUоÅ‌ìˆU’ñB“È£ýhe‰dy¡oċ€`pfmjP~‚kZa…ZsÐd°wj§ƒ@€Ĵ®w~^‚kÀÅKvNmX\\¨a“”сqvíó¿F„¤¡@ũÑVw}S@j}¾«pĂr–ªg àÀ²NJ¶¶Dô…K‚|^ª†Ž°LX¾ŴäPᜣEXd›”^¶›IJÞܓ~‘u¸ǔ˜Ž›MRhsR…e†`ÄofIÔ\\Ø  i”ćymnú¨cj ¢»–GČìƊÿШXeĈ¾Oð Fi ¢|[jVxrIQŒ„_E”zAN¦zLU`œcªx”OTu RLÄ¢dV„i`p˔vŎµªÉžF~ƒØ€d¢ºgİàw¸Áb[¦Zb¦–z½xBĖ@ªpº›šlS¸Ö\\Ĕ[N¥ˀmĎă’J\\‹ŀ`€…ňSڊĖÁĐiO“Ĝ«BxDõĚiv—ž–S™Ì}iùŒžÜnšÐºGŠ{Šp°M´w†ÀÒzJ²ò¨ oTçüöoÛÿñŽőФ‚ùTz²CȆȸǎۃƑÐc°dPÎŸğ˶[Ƚu¯½WM¡­Éž“’B·rížnZŸÒ `‡¨GA¾\\pē˜XhÆRC­üWGġu…T靧Ŏѝ©ò³I±³}_‘‹EÃħg®ęisÁPDmÅ{‰b[Rşs·€kPŸŽƥƒóRo”O‹ŸVŸ~]{g\\“êYƪ¦kÝbiċƵŠGZ»Ěõ…ó·³vŝž£ø@pyö_‹ëŽIkѵ‡bcѧy…×dY؎ªiþž¨ƒ[]f]Ņ©C}ÁN‡»hĻħƏ’ĩ" + ] + ], + "encodeOffsets": [[[115640, 30489]], [[112543, 27312]], [[116690, 26230]]] + } + }, + { + "type": "Feature", + "id": "440000", + "properties": { + "id": "440000", + "cp": [113.280637, 23.125178], + "name": "广东", + "childNum": 24 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@QdˆAua"], + ["@@ƒlxDLo"], + ["@@sbhNLo"], + ["@@Ă āŸ"], + ["@@WltO[["], + ["@@Krœ]S"], + ["@@e„„I]y"], + ["@@I|„Mym"], + ["@@ƒÛ³LSŒž¼Y"], + ["@@nvºB–ëui©`¾"], + ["@@zdšÛ›Jw®"], + ["@@†°…¯"], + ["@@a yAª¸ËJIx،@€ĀHAmßV¡o•fu•o"], + ["@@šs‰ŗÃÔėAƁ›ZšÄ ~°ČP‚‹äh"], + ["@@‹¶Ý’Ì‚vmĞh­ı‡Q"], + ["@@HœŠdSjĒ¢D}war…“u«ZqadYM"], + ["@@elŒ\\LqqU"], + ["@@~rMo\\"], + ["@@f„^ƒC"], + ["@@øPªoj÷ÍÝħXČx”°Q¨ıXNv"], + ["@@gÇƳˆŽˆ”oˆŠˆ[~tly"], + ["@@E–ÆC¿‘"], + ["@@OŽP"], + [ + "@@w‹†đóg‰™ĝ—[³‹¡VÙæÅöM̳¹pÁaËýý©D©Ü“JŹƕģGą¤{Ùū…ǘO²«BƱéA—Ò‰ĥ‡¡«BhlmtÃPµyU¯uc“d·w_bŝcīímGOŽ|KP’ȏ‡ŹãŝIŕŭŕ@Óoo¿ē‹±ß}Ž…ŭ‚ŸIJWÈCőâUâǙI›ğʼn©I›ijEׅÁ”³Aó›wXJþ±ÌŒÜӔĨ£L]ĈÙƺZǾĆĖMĸĤfŒÎĵl•ŨnȈ‘ĐtF”Š–FĤ–‚êk¶œ^k°f¶gŠŽœ}®Fa˜f`vXŲxl˜„¦–ÔÁ²¬ÐŸ¦pqÊ̲ˆi€XŸØRDÎ}†Ä@ZĠ’s„x®AR~®ETtĄZ†–ƈfŠŠHâÒÐA†µ\\S¸„^wĖkRzŠalŽŜ|E¨ÈNĀňZTŒ’pBh£\\ŒĎƀuXĖtKL–¶G|Ž»ĺEļĞ~ÜĢÛĊrˆO˜Ùîvd]nˆ¬VœÊĜ°R֟pM††–‚ƂªFbwžEÀˆ˜©Œž\\…¤]ŸI®¥D³|ˎ]CöAŤ¦…æ’´¥¸Lv¼€•¢ĽBaô–F~—š®²GÌҐEY„„œzk¤’°ahlV՞I^‹šCxĈPŽsB‰ƒºV‰¸@¾ªR²ĨN]´_eavSi‡vc•}p}Đ¼ƌkJœÚe thœ†_¸ ºx±ò_xN›Ë‹²‘@ƒă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIžÇª`ŠuTÅxYĒÖ¼k֞’µ‚MžjJÚwn\\h‘œĒv]îh|’È›Ƅøègž¸Ķß ĉĈWb¹ƀdéƌNTtP[ŠöSvrCZžžaGuœbo´ŖÒÇА~¡zCI…özx¢„Pn‹•‰Èñ @ŒĥÒ¦†]ƞŠV}³ăĔñiiÄÓVépKG½Ä‘ÓávYo–C·sit‹iaÀy„ŧΡÈYDÑům}‰ý|m[węõĉZÅxUO}÷N¹³ĉo_qtă“qwµŁYلǝŕ¹tïÛUïmRCº…ˆĭ|µ›ÕÊK™½R‘ē ó]‘–GªęAx–»HO£|ām‡¡diď×YïYWªʼnOeÚtĐ«zđ¹T…ā‡úE™á²\\‹ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀLJğ·¿ÃˆOj YÇ÷Qě‹i" + ] + ], + "encodeOffsets": [ + [[117381, 22988]], + [[116552, 22934]], + [[116790, 22617]], + [[116973, 22545]], + [[116444, 22536]], + [[116931, 22515]], + [[116496, 22490]], + [[116453, 22449]], + [[113301, 21439]], + [[118726, 21604]], + [[118709, 21486]], + [[113210, 20816]], + [[115482, 22082]], + [[113171, 21585]], + [[113199, 21590]], + [[115232, 22102]], + [[115739, 22373]], + [[115134, 22184]], + [[113056, 21175]], + [[119573, 21271]], + [[119957, 24020]], + [[115859, 22356]], + [[116561, 22649]], + [[116285, 22746]] + ] + } + }, + { + "type": "Feature", + "id": "450000", + "properties": { "id": "450000", "cp": [108.320004, 22.82402], "name": "广西", "childNum": 2 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@H– TQ§•A"], + [ + "@@ĨʪƒLƒƊDÎĹĐCǦė¸zÚGn£¾›rªŀÜt¬@֛ڈSx~øOŒ˜ŶÐÂæȠ\\„ÈÜObĖw^oބLf¬°bI lTØB̈F£Ć¹gñĤaY“t¿¤VSñœK¸¤nM†¼‚JE±„½¸šŠño‹ÜCƆæĪ^ŠĚQÖ¦^‡ˆˆf´Q†üÜʝz¯šlzUĺš@쇀p¶n]sxtx¶@„~ÒĂJb©gk‚{°‚~c°`ԙ¬rV\\“la¼¤ôá`¯¹LC†ÆbŒxEræO‚v[H­˜„[~|aB£ÖsºdAĐzNÂðsŽÞƔ…Ĥªbƒ–ab`ho¡³F«èVloޤ™ÔRzpp®SŽĪº¨ÖƒºN…ij„d`’a”¦¤F³ºDÎńĀìŠCžĜº¦Ċ•~nS›|gźvZkCÆj°zVÈÁƔ]LÊFZg…čP­kini«‹qǀcz͔Y®¬Ů»qR×ō©DՄ‘§ƙǃŵTÉĩ±ŸıdÑnYY›IJvNĆÌØÜ Öp–}e³¦m‹©iÓ|¹Ÿħņ›|ª¦QF¢Â¬ʖovg¿em‡^ucà÷gՎuŒíÙćĝ}FϼĹ{µHK•sLSđƃr‹č¤[Ag‘oS‹ŇYMÿ§Ç{Fśbky‰lQxĕƒ]T·¶[B…ÑÏGáşşƇe€…•ăYSs­FQ}­Bƒw‘tYğÃ@~…C̀Q ×W‡j˱rÉ¥oÏ ±«ÓÂ¥•ƒ€k—ŽwWűŒmcih³K›~‰µh¯e]lµ›él•E쉕E“ďs‡’mǖŧē`ãògK_ÛsUʝ“ćğ¶hŒöŒO¤Ǜn³Žc‘`¡y‹¦C‘ez€YŠwa™–‘[ďĵűMę§]X˜Î_‚훘Û]é’ÛUćİÕBƣ±…dƒy¹T^džûÅÑŦ·‡PĻþÙ`K€¦˜…¢ÍeœĥR¿Œ³£[~Œäu¼dl‰t‚†W¸oRM¢ď\\zœ}Æzdvň–{ÎXF¶°Â_„ÒÂÏL©Ö•TmuŸ¼ãl‰›īkiqéfA„·Êµ\\őDc¥ÝF“y›Ôć˜c€űH_hL܋êĺШc}rn`½„Ì@¸¶ªVLŒŠhŒ‹\\•Ţĺk~ŽĠið°|gŒtTĭĸ^x‘vK˜VGréAé‘bUu›MJ‰VÃO¡…qĂXËS‰ģãlýàŸ_ju‡YÛÒB†œG^˜é֊¶§ŽƒEG”ÅzěƒƯ¤Ek‡N[kdåucé¬dnYpAyČ{`]þ¯T’bÜÈk‚¡Ġ•vŒàh„ÂƄ¢Jî¶²" + ] + ], + "encodeOffsets": [[[111707, 21520]], [[107619, 25527]]] + } + }, + { + "type": "Feature", + "id": "460000", + "properties": { "id": "460000", "cp": [109.83119, 19.031971], "name": "海南", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@š¦Ŝil¢”XƦ‘ƞò–ïè§ŞCêɕrŧůÇąĻõ™·ĉ³œ̅kÇm@ċȧƒŧĥ‰Ľʉ­ƅſ“ȓÒ˦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\Ɔ¸ĠĎvʄȀœÐ¾jNðĀÒRŒšZdž™zÐŘΰH¨Ƣb²_Ġ " + ], + "encodeOffsets": [[112750, 20508]] + } + }, + { + "type": "Feature", + "id": "510000", + "properties": { + "id": "510000", + "cp": [104.065735, 30.659462], + "name": "四川", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@LqKr"], + [ + "@@Š[ĻéV£ž_ţġñpG •réÏ·~ąSfy×͂·ºſƽiÍıƣıĻmHH}siaX@iǰÁÃ×t«ƒ­Tƒ¤J–JJŒyJ•ÈŠ`Ohߦ¡uËhIyCjmÿw…ZG……Ti‹SˆsO‰žB²ŸfNmsPaˆ{M{ŠõE‘^Hj}gYpaeuž¯‘oáwHjÁ½M¡pM“–uå‡mni{fk”\\oƒÎqCw†EZ¼K›ĝŠƒAy{m÷L‡wO×SimRI¯rK™õBS«sFe‡]fµ¢óY_ÆPRcue°Cbo׌bd£ŌIHgtrnyPt¦foaXďx›lBowz‹_{ÊéWiêE„GhܸºuFĈIxf®Ž•Y½ĀǙ]¤EyŸF²ċ’w¸¿@g¢§RGv»–áŸW`ÃĵJwi]t¥wO­½a[׈]`Ãi­üL€¦LabbTÀå’c}Íh™Æhˆ‹®BH€î|Ék­¤S†y£„ia©taį·Ɖ`ō¥Uh“O…ƒĝLk}©Fos‰´›Jm„µlŁu—…ø–nÑJWΪ–YÀïAetTžŅ‚ӍG™Ë«bo‰{ıwodƟ½ƒžOġܑµxàNÖ¾P²§HKv¾–]|•B‡ÆåoZ`¡Ø`ÀmºĠ~ÌЧnDž¿¤]wğ@sƒ‰rğu‰~‘Io”[é±¹ ¿žſđӉ@q‹gˆ¹zƱřaí°KtǤV»Ã[ĩǭƑ^ÇÓ@ỗs›Zϕ‹œÅĭ€Ƌ•ěpwDóÖሯneQˌq·•GCœýS]xŸ·ý‹q³•O՜Œ¶Qzßti{ř‰áÍÇWŝŭñzÇW‹pç¿JŒ™‚Xœĩè½cŒF–ÂLiVjx}\\N†ŇĖ¥Ge–“JA¼ÄHfÈu~¸Æ«dE³ÉMA|b˜Ò…˜ćhG¬CM‚õŠ„ƤąAvƒüV€éŀ‰_V̳ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»Ÿ“˜ÕZ³ġqDo‰y`L¬gdp°şŠp¦ėìÅĮZްIä”h‚‘ˆzŠĵœf²å ›ĚрKp‹IN|‹„Ñz]ń……·FU×é»R³™MƒÉ»GM«€ki€™ér™}Ã`¹ăÞmȝnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²Ġ…þTº·àUȞÏʦ¶†I’«dĽĢdĬ¿–»Ĕ׊h\\c¬†ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvw–ˆxBèĻĒ©Ĉ“tCĢɽŠȣ¦āæ·HĽî“ôNԓ~^¤Ɗœu„œ^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ‘®Z´ğ~Sn|ªWÚ©òzPOȸ‚bð¢|‹øĞŠŒœŒQìÛÐ@Ğ™ǎRS¤Á§d…i“´ezÝúØã]Hq„kIŸþËQǦÃsǤ[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwn‘ÆƄmÀêErĒtD®ċæcQƒ”E®³^ĭ¥©l}äQto˜ŖÜqƎkµ–„ªÔĻĴ¡@Ċ°B²Èw^^RsºT£ڿœQP‘JvÄz„^Đ¹Æ¯fLà´GC²‘dt˜­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïžPȆ®âbMüÀXZ ¸£@Ś›»»QÉ­™]d“sÖ×_͖_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|Y‹Ô‚ZśÎs´xº±UŒ’ñˆt|O’ĩĠºNbgþŠJy^dÂY Į„]Řz¦gC‚³€R`Šz’¢AjŒ¸CL„¤RÆ»@­Ŏk\\Ç´£YW}z@Z}‰Ã¶“oû¶]´^N‡Ò}èN‚ª–P˜Íy¹`S°´†ATe€VamdUĐwʄvĮÕ\\ƒu‹Æŗ¨Yp¹àZÂm™Wh{á„}WØǍ•Éüw™ga§áCNęÎ[ĀÕĪgÖɪX˜øx¬½Ů¦¦[€—„NΆL€ÜUÖ´òrÙŠxR^–†J˜k„ijnDX{Uƒ~ET{ļº¦PZc”jF²Ė@Žp˜g€ˆ¨“B{ƒu¨ŦyhoÚD®¯¢˜ WòàFΤ¨GDäz¦kŮPœġq˚¥À]€Ÿ˜eŽâÚ´ªKxī„Pˆ—Ö|æ[xäJÞĥ‚s’NÖ½ž€I†¬nĨY´®Ð—ƐŠ€mD™ŝuäđđEb…e’e_™v¡}ìęNJē}q”É埁T¯µRs¡M@}ůa†a­¯wvƉåZwž\\Z{åû^›" + ] + ], + "encodeOffsets": [[[108815, 30935]], [[110617, 31811]]] + } + }, + { + "type": "Feature", + "id": "520000", + "properties": { + "id": "520000", + "cp": [106.713478, 26.578343], + "name": "贵州", + "childNum": 3 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@†G\\†lY£‘in"], + ["@@q‚|ˆ‚mc¯tχVSÎ"], + [ + "@@hÑ£Is‡NgßH†›HªķÃh_¹ƒ¡ĝħń¦uيùŽgS¯JHŸ|sÝÅtÁïyMDč»eÕtA¤{b\\}—ƒG®u\\åPFq‹wÅaD…žK°ºâ_£ùbµ”mÁ‹ÛœĹM[q|hlaªāI}тƒµ@swtwm^oµˆD鼊yV™ky°ÉžûÛR…³‚‡eˆ‡¥]RՋěħ[ƅåÛDpŒ”J„iV™™‰ÂF²I…»mN·£›LbÒYb—WsÀbŽ™pki™TZĄă¶HŒq`……ĥ_JŸ¯ae«ƒKpÝx]aĕÛPƒÇȟ[ÁåŵÏő—÷Pw}‡TœÙ@Õs«ĿÛq©½œm¤ÙH·yǥĘĉBµĨÕnđ]K„©„œá‹ŸG纍§Õßg‡ǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊžw¶øV¤w”²Ĉ]ʚKx|`ź¦ÂÈdr„cȁbe¸›`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pН`oÒh޶pa‚^ÓĔ}D»^Xyœ`d˜[Kv…JPhèhCrĂĚÂ^Êƌ wˆZL­Ġ£šÁbrzOIl’MM”ĪŐžËr×ÎeŦŽtw|Œ¢mKjSǘňĂStÎŦEtqFT†¾†E쬬ôxÌO¢Ÿ KгŀºäY†„”PVgŎ¦Ŋm޼VZwVlŒ„z¤…ž£Tl®ctĽÚó{G­A‡ŒÇgeš~Αd¿æaSba¥KKûj®_ć^\\ؾbP®¦x^sxjĶI_Ä X‚⼕Hu¨Qh¡À@Ëô}ޱžGNìĎlT¸ˆ…`V~R°tbÕĊ`¸úÛtπFDu€[ƒMfqGH·¥yA‰ztMFe|R‚_Gk†ChZeÚ°to˜v`x‹b„ŒDnÐ{E}šZ˜è€x—†NEފREn˜[Pv@{~rĆAB§‚EO¿|UZ~ì„Uf¨J²ĂÝÆ€‚sª–B`„s¶œfvö¦ŠÕ~dÔq¨¸º»uù[[§´sb¤¢zþFœ¢Æ…Àhˆ™ÂˆW\\ıŽËI݊o±ĭŠ£þˆÊs}¡R]ŒěƒD‚g´VG¢‚j±®è†ºÃmpU[Á›‘Œëº°r›ÜbNu¸}Žº¼‡`ni”ºÔXĄ¤¼Ôdaµ€Á_À…†ftQQgœR—‘·Ǔ’v”}Ýלĵ]µœ“Wc¤F²›OĩųãW½¯K‚©…]€{†LóµCIµ±Mß¿hŸ•©āq¬o‚½ž~@i~TUxŪÒ¢@ƒ£ÀEîôruń‚”“‚b[§nWuMÆLl¿]x}ij­€½" + ] + ], + "encodeOffsets": [[[112158, 27383]], [[112105, 27474]], [[112095, 27476]]] + } + }, + { + "type": "Feature", + "id": "530000", + "properties": { + "id": "530000", + "cp": [101.512251, 24.740609], + "name": "云南", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@[„ùx½}ÑRH‘YīĺûsÍn‘iEoã½Ya²ė{c¬ĝg•ĂsA•ØÅwď‚õzFjw}—«Dx¿}UũlŸê™@•HÅ­F‰¨ÇoJ´Ónũuą¡Ã¢pÒŌ“Ø TF²‚xa²ËX€‚cʋlHîAßËŁkŻƑŷÉ©h™W­æßU‡“Ës¡¦}•teèÆ¶StǀÇ}Fd£j‹ĈZĆÆ‹¤T‚č\\Dƒ}O÷š£Uˆ§~ŃG™‚åŃDĝ¸œTsd¶¶Bªš¤u¢ŌĎo~t¾ÍŶÒtD¦Ú„iôö‰€z›ØX²ghįh½Û±¯€ÿm·zR¦Ɵ`ªŊÃh¢rOԍ´£Ym¼èêf¯ŪĽn„†cÚbŒw\\zlvWžªâˆ ¦g–mĿBş£¢ƹřbĥkǫßeeZkÙIKueT»sVesb‘aĕ  ¶®dNœĄÄpªyސ¼—„³BE˜®l‡ŽGœŭCœǶwêżĔÂe„pÍÀQƞpC„–¼ŲÈ­AÎô¶R„ä’Q^Øu¬°š_Èôc´¹ò¨P΢hlϦ´Ħ“Æ´sâDŽŲPnÊD^¯°’Upv†}®BP̪–jǬx–Söwlfòªv€qĸ|`H€­viļ€ndĜ­Ćhň•‚em·FyށqóžSᝑ³X_ĞçêtryvL¤§z„¦c¦¥jnŞk˜ˆlD¤øz½ĜàžĂŧMÅ|áƆàÊcðÂF܎‚áŢ¥\\\\º™İøÒÐJĴ‡„îD¦zK²ǏÎEh~’CD­hMn^ÌöÄ©ČZÀžaü„fɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~Äqššê€ljN¬¼H„ÊšNQ´ê¼VظE††^ŃÒyŒƒM{ŒJLoÒœęæŸe±Ķ›y‰’‡gã“¯JYÆĭĘëo¥Š‰o¯hcK«z_pŠrC´ĢÖY”—¼ v¸¢RŽÅW³Â§fǸYi³xR´ďUˊ`êĿU„û€uĆBƒƣö‰N€DH«Ĉg†——Ñ‚aB{ÊNF´¬c·Åv}eÇÃGB»”If•¦HňĕM…~[iwjUÁKE•Ž‹¾dĪçW›šI‹èÀŒoÈXòyŞŮÈXâÎŚŠj|àsRy‹µÖ›–Pr´þŒ ¸^wþTDŔ–Hr¸‹žRÌmf‡żÕâCôox–ĜƌÆĮŒ›Ð–œY˜tâŦÔ@]ÈǮƒ\\μģUsȯLbîƲŚºyh‡rŒŠ@ĒԝƀŸÀ²º\\êp“’JŠ}ĠvŠqt„Ġ@^xÀ£È†¨mËÏğ}n¹_¿¢×Y_æpˆÅ–A^{½•Lu¨GO±Õ½ßM¶w’ÁĢۂP‚›Ƣ¼pcIJxŠ|ap̬HšÐŒŊSfsðBZ¿©“XÏÒK•k†÷Eû¿‰S…rEFsÕūk”óVǥʼniTL‚¡n{‹uxţÏh™ôŝ¬ğōN“‘NJkyPaq™Âğ¤K®‡YŸxÉƋÁ]āęDqçgOg†ILu—\\_gz—]W¼ž~CÔē]bµogpў_oď`´³Țkl`IªºÎȄqÔþž»E³ĎSJ»œ_f·‚adÇqƒÇc¥Á_Źw{™L^ɱćx“U£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏɸ½řÍcÊG|µƕƣG˛÷Ÿk°_^ý|_zċBZocmø¯hhcæ\\lˆMFlư£Ĝ„ÆyH“„F¨‰µêÕ]—›HA…àӄ^it `þßäkŠĤÎT~Wlÿ¨„ÔPzUC–NVv [jâôDôď[}ž‰z¿–msSh‹¯{jïğl}šĹ[–őŒ‰gK‹©U·µË@¾ƒm_~q¡f¹…ÅË^»‘f³ø}Q•„¡Ö˳gͱ^ǁ…\\ëÃA_—¿bW›Ï[¶ƛ鏝£F{īZgm@|kHǭƁć¦UĔťƒ×ë}ǝƒeďºȡȘÏíBə£āĘPªij¶“ʼnÿ‡y©n‰ď£G¹¡I›Š±LÉĺÑdĉ܇W¥˜‰}g˜Á†{aqÃ¥aŠıęÏZ—ï`" + ], + "encodeOffsets": [[104636, 22969]] + } + }, + { + "type": "Feature", + "id": "540000", + "properties": { "id": "540000", "cp": [89.132212, 30.860361], "name": "西藏", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@hžľxŽŖ‰xƒÒVކºÅâAĪÝȆµę¯Ňa±r_w~uSÕň‘qOj]ɄQ…£Z……UDûoY’»©M[‹L¼qãË{V͕çWViŽ]ë©Ä÷àyƛh›ÚU°ŒŒa”d„cQƒ~Mx¥™cc¡ÙaSyF—ցk­ŒuRýq¿Ôµ•QĽ³aG{¿FµëªéĜÿª@¬·–K‰·àariĕĀ«V»Ŷ™Ĵū˜gèLǴŇƶaf‹tŒèBŚ£^Šâ†ǐÝ®–šM¦ÁǞÿ¬LhŸŽJ¾óƾƺcxw‹f]Y…´ƒ¦|œQLn°aœdĊ…œ\\¨o’œǀÍŎœ´ĩĀd`tÊQŞŕ|‚¨C^©œĈ¦„¦ÎJĊ{ŽëĎjª²rЉšl`¼Ą[t|¦St辉PŒÜK¸€d˜Ƅı]s¤—î_v¹ÎVòŦj˜£Əsc—¬_Ğ´|٘¦Avަw`ăaÝaa­¢e¤ı²©ªSªšÈMĄwžÉØŔì@T‘¤—Ę™\\õª@”þo´­xA s”ÂtŎKzó´ÇĊµ¢rž^nĊ­Æ¬×üGž¢‚³ {âĊ]š™G‚~bÀgVjzlhǶf€žOšfdЉªB]pj„•TO–tĊ‚n¤}®¦ƒČ¥d¢¼»ddš”Y¼Žt—¢eȤJ¤}Ǿ¡°§¤AГlc@ĝ”sªćļđAç‡wx•UuzEÖġ~AN¹ÄÅȀݦ¿ģŁéì±H…ãd«g[؉¼ēÀ•cīľġ¬cJ‘µ…ÐʥVȝ¸ßS¹†ý±ğkƁ¼ą^ɛ¤Ûÿ‰b[}¬ōõÃ]ËNm®g@•Bg}ÍF±ǐyL¥íCˆƒIij€Ï÷њį[¹¦[⚍EÛïÁÉdƅß{âNÆāŨߝ¾ě÷yC£‡k­´ÓH@¹†TZ¥¢įƒ·ÌAЧ®—Zc…v½ŸZ­¹|ŕWZqgW“|ieZÅYVӁqdq•bc²R@†c‡¥Rã»Ge†ŸeƃīQ•}J[ғK…¬Ə|o’ėjġĠÑN¡ð¯EBčnwôɍėªƒ²•CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛ†ęgſ¶ҍć`ĘąŌJޚä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷‡f±iMݑ›‰@ĥ°G¬ÃM¥n£Øą‚ğ¯ß”§aëbéüÑOčœk£{\\‘eµª×M‘šÉfm«Ƒ{Å׃Gŏǩãy³©WÑăû‚··‘Q—òı}¯ã‰I•éÕÂZ¨īès¶ZÈsŽæĔTŘvŽgÌsN@îá¾ó@‰˜ÙwU±ÉT廣TđŸWxq¹Zo‘b‹s[׌¯cĩv‡Œėŧ³BM|¹k‰ªħ—¥TzNYnݍßpęrñĠĉRS~½ŠěVVе‚õ‡«ŒM££µB•ĉ¥áºae~³AuĐh`Ü³ç@BۘïĿa©|z²Ý¼D”£à貋ŸƒIƒû›I ā€óK¥}rÝ_Á´éMaň¨€~ªSĈ½Ž½KÙóĿeƃÆBŽ·¬ën×W|Uº}LJrƳ˜lŒµ`bÔ`QˆˆÐÓ@s¬ñIŒÍ@ûws¡åQÑßÁ`ŋĴ{Ī“T•ÚÅTSij‚‹Yo|Ç[ǾµMW¢ĭiÕØ¿@˜šMh…pÕ]j†éò¿OƇĆƇp€êĉâlØw–ěsˆǩ‚ĵ¸c…bU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB™Š\\”qTGªÇĜçPoŠÿfñòą¦óQīÈáP•œābß{ƒZŗĸIæÅ„hnszÁCËìñšÏ·ąĚÝUm®ó­L·ăU›Èíoù´Êj°ŁŤ_uµ^‘°Œìǖ@tĶĒ¡Æ‡M³Ģ«˜İĨÅ®ğ†RŽāð“ggheÆ¢z‚Ê©Ô\\°ÝĎz~ź¤Pn–MĪÖB£Ÿk™n鄧żćŠ˜ĆK„ǰ¼L¶è‰âz¨u¦¥LDĘz¬ýÎmĘd¾ß”Fz“hg²™Fy¦ĝ¤ċņbΛ@y‚Ąæm°NĮZRÖíŽJ²öLĸÒ¨Y®ƌÐV‰à˜tt_ڀÂyĠzž]Ţh€zĎ{†ĢX”ˆc|šÐqŽšfO¢¤ög‚ÌHNŽ„PKŖœŽ˜Uú´xx[xˆvĐCûŠìÖT¬¸^}Ìsòd´_އKgžLĴ…ÀBon|H@–Êx˜—¦BpŰˆŌ¿fµƌA¾zLjRxжF”œkĄźRzŀˆ~¶[”´Hnª–VƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxdžB’šú^´W†£–d„kɾĬpœw‚˂ØɦļĬIŚœÊ•n›Ŕa¸™~J°î”lɌxĤÊÈðhÌ®‚g˜T´øŽàCˆŽÀ^ªerrƘdž¢İP|Ė ŸWœªĦ^¶´ÂL„aT±üWƜ˜ǀRšŶUńšĖ[QhlLüA†‹Ü\\†qR›Ą©" + ], + "encodeOffsets": [[90849, 37210]] + } + }, + { + "type": "Feature", + "id": "610000", + "properties": { + "id": "610000", + "cp": [108.948024, 34.263161], + "name": "陕西", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@˜p¢—ȮµšûG™Ħ}Ħšðǚ¶òƄ€jɂz°{ºØkÈęâ¦jª‚Bg‚\\œċ°s¬Ž’]jžú ‚E”Ȍdž¬s„t‡”RˆÆdĠݎwܔ¸ôW¾ƮłÒ_{’Ìšû¼„jº¹¢GǪÒ¯ĘƒZ`ºŊƒecņąš~BÂgzpâēòYǠȰÌTΨÂWœ|fcŸă§uF—Œ@NŸ¢XLƒŠRMº[ğȣſï|¥J™kc`sʼnǷ’Y¹‹W@µ÷K…ãï³ÛIcñ·VȋڍÒķø©—þ¥ƒy‚ÓŸğęmWµÎumZyOŅƟĥÓ~sÑL¤µaŅY¦ocyZ{‰y c]{ŒTa©ƒ`U_Ěē£ωÊƍKù’K¶ȱÝƷ§{û»ÅÁȹÍéuij|¹cÑd‘ŠìUYƒŽO‘uF–ÕÈYvÁCqӃT•Ǣí§·S¹NgŠV¬ë÷Át‡°Dد’C´ʼnƒópģ}„ċcE˅FŸŸéGU¥×K…§­¶³B‹Č}C¿åċ`wġB·¤őcƭ²ő[Å^axwQO…ÿEËߌ•ĤNĔŸwƇˆÄŠńwĪ­Šo[„_KÓª³“ÙnK‰Çƒěœÿ]ď€ă_d©·©Ýŏ°Ù®g]±„Ÿ‡ß˜å›—¬÷m\\›iaǑkěX{¢|ZKlçhLt€Ňîŵ€œè[€É@ƉĄEœ‡tƇÏ˜³­ħZ«mJ…›×¾‘MtÝĦ£IwÄå\\Õ{‡˜ƒOwĬ©LÙ³ÙgBƕŀr̛ĢŭO¥lãyC§HÍ£ßEñŸX¡—­°ÙCgpťz‘ˆb`wI„vA|§”‡—hoĕ@E±“iYd¥OϹS|}F@¾oAO²{tfžÜ—¢Fǂ҈W²°BĤh^Wx{@„¬‚­F¸¡„ķn£P|ŸªĴ@^ĠĈæb–Ôc¶l˜Yi…–^Mi˜cϰÂ[ä€vï¶gv@À“Ĭ·lJ¸sn|¼u~a]’ÆÈtŌºJp’ƒþ£KKf~ЦUbyäIšĺãn‡Ô¿^­žŵMT–hĠܤko¼Ŏìąǜh`[tŒRd²IJ_œXPrɲ‰l‘‚XžiL§àƒ–¹ŽH˜°Ȧqº®QC—bA†„ŌJ¸ĕÚ³ĺ§ `d¨YjžiZvRĺ±öVKkjGȊĐePОZmļKÀ€‚[ŠŽ`ösìh†ïÎoĬdtKÞ{¬èÒÒBŒÔpIJÇĬJŊ¦±J«ˆY§‹@·pH€µàåVKe›pW†ftsAÅqC·¬ko«pHÆuK@oŸHĆۄķhx“e‘n›S³àǍrqƶRbzy€¸ËАl›¼EºpĤ¼Œx¼½~Ğ’”à@†ÚüdK^ˆmÌSj" + ], + "encodeOffsets": [[110234, 38774]] + } + }, + { + "type": "Feature", + "id": "620000", + "properties": { + "id": "620000", + "cp": [103.823557, 36.058039], + "name": "甘肃", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@VuUv"], + [ + "@@ũ‹EĠtt~nkh`Q‰¦ÅÄÜdw˜Ab×ĠąJˆ¤DüègĺqBqœj°lI¡ĨÒ¤úSHbš‡ŠjΑBаaZˆ¢KJŽ’O[|A£žDx}Nì•HUnrk„ kp€¼Y kMJn[aG‚áÚÏ[½rc†}aQxOgsPMnUs‡nc‹Z…ž–sKúvA›t„Þġ’£®ĀYKdnFwš¢JE°”Latf`¼h¬we|€Æ‡šbj}GA€·~WŽ”—`†¢MC¤tL©IJ°qdf”O‚“bÞĬ¹ttu`^ZúE`Œ[@„Æsîz®¡’C„ƳƜG²“R‘¢R’m”fŽwĸg܃‚ą G@pzJM½mŠhVy¸uÈÔO±¨{LfæU¶ßGĂq\\ª¬‡²I‚¥IʼnÈīoı‹ÓÑAçÑ|«LÝcspīðÍg…të_õ‰\\ĉñLYnĝg’ŸRǡÁiHLlõUĹ²uQjYi§Z_c¨Ÿ´ĹĖÙ·ŋI…ƒaBD˜­R¹ȥr—¯G•ºß„K¨jWk’ɱŠOq›Wij\\a­‹Q\\sg_ĆǛōëp»£lğۀgS•ŶN®À]ˆÓäm™ĹãJaz¥V}‰Le¤L„ýo‘¹IsŋÅÇ^‘Žbz…³tmEÁ´aйcčecÇN•ĊãÁ\\蝗dNj•]j†—ZµkÓda•ćå]ğij@ ©O{¤ĸm¢ƒE·®ƒ«|@Xwg]A챝‡XǁÑdzªc›wQÚŝñsÕ³ÛV_ýƒ˜¥\\ů¥©¾÷w—Ž©WÕÊĩhÿÖÁRo¸V¬âDb¨šhûx–Ê×nj~Zâƒg|šXÁnßYoº§ZÅŘvŒ[„ĭÖʃuďxcVbnUSf…B¯³_Tzº—ΕO©çMÑ~Mˆ³]µ^püµ”ŠÄY~y@X~¤Z³€[Èōl@®Å¼£QKƒ·Di‹¡By‘ÿ‰Q_´D¥hŗyƒ^ŸĭÁZ]cIzý‰ah¹MĪğP‘s{ò‡‹‘²Vw¹t³Ŝˁ[ŽÑ}X\\gsFŸ£sPAgěp×ëfYHāďÖqēŭOÏë“dLü•\\iŒ”t^c®šRʺ¶—¢H°mˆ‘rYŸ£BŸ¹čIoľu¶uI]vģSQ{ƒUŻ”Å}QÂ|̋°ƅ¤ĩŪU ęĄžÌZҞ\\v˜²PĔ»ƢNHƒĂyAmƂwVmž`”]ȏb•”H`‰Ì¢²ILvĜ—H®¤Dlt_„¢JJÄämèÔDëþgºƫ™”aʎÌrêYi~ ÎݤNpÀA¾Ĕ¼b…ð÷’Žˆ‡®‚”üs”zMzÖĖQdȨý†v§Tè|ªH’þa¸|šÐ ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\h¹¶v†·À|\\ƁĚN´Ĝ€çèÁz]ġ¤²¨QÒŨTIl‡ªťØ}¼˗ƦvÄùØE‹’«Fï˛Iq”ōŒTvāÜŏ‚íÛߜÛV—j³âwGăÂíNOŠˆŠPìyV³ʼnĖýZso§HіiYw[߆\\X¦¥c]ÔƩÜ·«j‡ÐqvÁ¦m^ċ±R™¦΋ƈťĚgÀ»IïĨʗƮްƝ˜ĻþÍAƉſ±tÍEÕÞāNU͗¡\\ſčåÒʻĘm ƭÌŹöʥ’ëQ¤µ­ÇcƕªoIýˆ‰Iɐ_mkl³ă‰Ɠ¦j—¡Yz•Ňi–}Msßõ–īʋ —}ƒÁVmŸ_[n}eı­Uĥ¼‘ª•I{ΧDӜƻėoj‘qYhĹT©oūĶ£]ďxĩ‹ǑMĝ‰q`B´ƃ˺Ч—ç~™²ņj@”¥@đ´ί}ĥtPńǾV¬ufӃÉC‹tÓ̻‰…¹£G³€]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼ‚ĤŊɲĖ­Kq´ï¦—ºĒDzņɾªǀÞĈĂD†½ĄĎÌŗĞrôñnŽœN¼â¾ʄľԆ|DŽŽ֦ज़ȗlj̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏijëCȚDŲyê×Ŗyò¯ļcÂßY…tÁƤyAã˾J@ǝrý‹‰@¤…rz¸oP¹ɐÚyᐇHŸĀ[Jw…cVeȴϜ»ÈŽĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔ—ĹŊũ~ËUă{ŸĻƹɁύȩþĽvĽƓÉ@ē„ĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶Ž¨c~c¼īŒeXǚ‹\\đ¾JŽwÀďksãA‹fÕ¦L}wa‚o”Z’‹D½†Ml«]eÒÅaɲáo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LF‹LzĈ„ôe]gx}•|KK}xklL]c¦£fRtív¦†PĤoH{tK" + ] + ], + "encodeOffsets": [[[108619, 36299]], [[108589, 36341]]] + } + }, + { + "type": "Feature", + "id": "630000", + "properties": { "id": "630000", "cp": [96.778916, 35.623178], "name": "青海", "childNum": 2 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@InJm"], + [ + "@@CƒÆ½OŃĦsΰ~dz¦@@“Ņiš±è}ؘƄ˹A³r_ĞŠǒNΌĐw¤^ŬĵªpĺSZg’rpiƼĘԛ¨C|͖J’©Ħ»®VIJ~f\\m `Un„˜~ʌŸ•ĬàöNt•~ňjy–¢Zi˜Ɣ¥ĄŠk´nl`JʇŠJþ©pdƖ®È£¶ìRʦ‘źõƮËnŸʼėæÑƀĎ[‚˜¢VÎĂMÖÝÎF²sƊƀÎBļýƞ—¯ʘƭðħ¼Jh¿ŦęΌƇš¥²Q]Č¥nuÂÏriˆ¸¬ƪÛ^Ó¦d€¥[Wà…x\\ZŽjҕ¨GtpþYŊĕ´€zUO뇉P‰îMĄÁxH´á˜iÜUà›îÜՁĂÛSuŎ‹r“œJð̬EŒ‘FÁú×uÃÎkr“Ē{V}İ«O_ÌËĬ©ŽÓŧSRѱ§Ģ£^ÂyèçěM³Ƃę{[¸¿u…ºµ[gt£¸OƤĿéYŸõ·kŸq]juw¥Dĩƍ€õÇPéĽG‘ž©ã‡¤G…uȧþRcÕĕNy“yût“ˆ­‡ø‘†ï»a½ē¿BMoᣟÍj}éZËqbʍš“Ƭh¹ìÿÓAçãnIáI`ƒks£CG­ě˜Uy×Cy•…’Ÿ@¶ʡÊBnāzG„ơMē¼±O÷õJËĚăVŸĪũƆ£Œ¯{ËL½Ìzż“„VR|ĠTbuvJvµhĻĖH”Aëáa…­OÇðñęNw‡…œľ·L›mI±íĠĩPÉ×®ÿs—’cB³±JKßĊ«`…ađ»·QAmO’‘Vţéÿ¤¹SQt]]Çx€±¯A@ĉij¢Ó祖•ƒl¶ÅÛr—ŕspãRk~¦ª]Į­´“FR„åd­ČsCqđéFn¿Åƃm’Éx{W©ºƝºįkÕƂƑ¸wWūЩÈFž£\\tÈ¥ÄRÈýÌJ ƒlGr^×äùyÞ³fj”c†€¨£ÂZ|ǓMĝšÏ@ëÜőR‹›ĝ‰Œ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³’­ÞIňµç½©C¡į÷¯B»|St»›]vƒųƒs»”}MÓ ÿʪƟǭA¡fs˜»PY¼c¡»¦c„ċ­¥£~msĉP•–Siƒ^o©A‰Šec‚™PeǵŽkg‚yUi¿h}aH™šĉ^|ᴟ¡HØûÅ«ĉ®]m€¡qĉ¶³ÈyôōLÁst“BŸ®wn±ă¥HSò뚣˜S’ë@לÊăxÇN©™©T±ª£IJ¡fb®ÞbŽb_Ą¥xu¥B—ž{łĝ³«`d˜Ɛt—¤ťiñžÍUuºí`£˜^tƃIJc—·ÛLO‹½Šsç¥Ts{ă\\_»™kϊ±q©čiìĉ|ÍIƒ¥ć¥›€]ª§D{ŝŖÉR_sÿc³Īō›ƿΑ›§p›[ĉ†›c¯bKm›R¥{³„Z†e^ŽŒwx¹dƽŽôIg §Mĕ ƹĴ¿—ǣÜ̓]‹Ý–]snåA{‹eŒƭ`ǻŊĿ\\ijŬű”YÂÿ¬jĖqŽßbЏ•L«¸©@ěĀ©ê¶ìÀEH|´bRľž–Ó¶rÀQþ‹vl®Õ‚E˜TzÜdb ˜hw¤{LR„ƒd“c‹b¯‹ÙVgœ‚ƜßzÃô쮍^jUèXΖ|UäÌ»rKŽ\\ŒªN‘¼pZCü†VY††¤ɃRi^rPҒTÖ}|br°qňb̰ªiƶGQ¾²„x¦PœmlŜ‘[Ĥ¡ΞsĦŸÔÏâ\\ªÚŒU\\f…¢N²§x|¤§„xĔsZPòʛ²SÐqF`ª„VƒÞŜĶƨVZŒÌL`ˆ¢dŐIqr\\oäõ–F礻Ŷ×h¹]Clـ\\¦ďÌį¬řtTӺƙgQÇÓHţĒ”´ÃbEÄlbʔC”|CˆŮˆk„Ʈ[ʼ¬ňœ´KŮÈΰÌζƶlð”ļA†TUvdTŠG†º̼ŠÔ€ŒsÊDԄveOg" + ] + ], + "encodeOffsets": [[[105308, 37219]], [[95370, 40081]]] + } + }, + { + "type": "Feature", + "id": "640000", + "properties": { "id": "640000", "cp": [106.278179, 37.26637], "name": "宁夏", "childNum": 2 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + "@@KëÀęĞ«OęȿȕŸı]ʼn¡åįÕÔ«Ǵõƪ™ĚQÐZhv K°›öqÀѐS[ÃÖHƖčË‡nL]ûc…Ùß@‚“ĝ‘¾}w»»‹oģF¹œ»kÌÏ·{zPƒ§B­¢íyÅt@ƒ@áš]Yv_ssģ¼i߁”ĻL¾ġsKD£¡N_…“˜X¸}B~Haiˆ™Åf{«x»ge_bs“KF¯¡Ix™mELcÿZ¤­Ģ‘ƒÝœsuBLù•t†ŒYdˆmVtNmtOPhRw~bd…¾qÐ\\âÙH\\bImlNZŸ»loƒŸqlVm–Gā§~QCw¤™{A\\‘PKŸNY‡¯bF‡kC¥’sk‹Šs_Ã\\ă«¢ħkJi¯r›rAhĹûç£CU‡ĕĊ_ԗBixÅُĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~–hw^‚ófćƒKyEŒ­K­zuÔ¡qQ¤xZÑ¢^ļöܾEpž±âbÊÑÆ^fk¬…NC¾‘Œ“YpxbK~¥Že֎ŒäBlt¿Đx½I[ĒǙŒWž‹f»Ĭ}d§dµùEuj¨‚IÆ¢¥dXªƅx¿]mtÏwßR͌X¢͎vÆzƂZò®ǢÌʆCrâºMÞzžÆMҔÊÓŊZľ–r°Î®Ȉmª²ĈUªĚøºˆĮ¦ÌĘk„^FłĬhĚiĀ˾iİbjÕ" + ], + ["@@mfwěwMrŢªv@G‰"] + ], + "encodeOffsets": [[[109366, 40242]], [[108600, 36303]]] + } + }, + { + "type": "Feature", + "id": "650000", + "properties": { "id": "650000", "cp": [85.617733, 40.792818], "name": "新疆", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@QØĔ²X¨”~ǘBºjʐߨvK”ƔX¨vĊOžÃƒ·¢i@~c—‡ĝe_«”Eš“}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuX…ê•Îf`œC‚¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥Oéȇ¿ÖğǤǷÂF҇zÉx[]­Ĥĝ‰œ¦EP}ûƥé¿İƷTėƫœŕƅ™ƱB»Đ±’ēO…¦E–•}‘`cȺrĦáŖuҞª«IJ‡πdƺÏØZƴwʄ¤ĖGЙǂZ̓èH¶}ÚZצʥĪï|ÇĦMŔ»İĝLj‹ì¥Βœba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»›òmqóŘĝč˾ăC…ćāƿÝɽ©DZŅ¹đ¥˜³ðLrÁ®ɱĕģʼnǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕŠUv£ƁQï“Ƶkŏ½ΉÃŭdzLқʻ«ƭ\\lƒ‡ŭD‡“{ʓDkaFÃÄa“³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍö•€ůʼnT¡c_‡ËKY‹ƧUśĵ„݃U_©rETÏʜ±OñtYw獃{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\‚ś’nkO›w¥±ƒT»ƷFɯàĩÞáB¹Æ…ÑUw„੍žĽw[“mG½Èå~‡Æ÷QyŠěCFmĭZī—ŵVÁ™ƿQƛ—ûXS²‰b½KϽĉS›©ŷXĕŸ{ŽĕK·¥Ɨcqq©f¿]‡ßDõU³h—­gËÇïģÉɋw“k¯í}I·šœbmœÉ–ř›īJɥĻˁ×xo›ɹī‡l•c…¤³Xù]‘™DžA¿w͉ì¥wÇN·ÂËnƾƍdǧđ®Ɲv•Um©³G\\“}µĿ‡QyŹl㓛µEw‰LJQ½yƋBe¶ŋÀů‡ož¥A—˜Éw@•{Gpm¿Aij†ŽKLhˆ³`ñcËtW‚±»ÕS‰ëüÿďD‡u\\wwwù³—V›LŕƒOMËGh£õP¡™er™Ïd{“‡ġWÁ…č|yšg^ğyÁzÙs`—s|ÉåªÇ}m¢Ń¨`x¥’ù^•}ƒÌ¥H«‰Yªƅ”Aйn~Ꝛf¤áÀz„gŠÇDIԝ´AňĀ҄¶ûEYospõD[{ù°]u›Jq•U•|Soċxţ[õÔĥkŋÞŭZ˺óYËüċrw €ÞkrťË¿XGÉbřaDü·Ē÷Aê[Ää€I®BÕИÞ_¢āĠpŠÛÄȉĖġDKwbm‡ÄNô‡ŠfœƫVÉvi†dz—H‘‹QµâFšù­Âœ³¦{YGžƒd¢ĚÜO „€{Ö¦ÞÍÀPŒ^b–ƾŠlŽ[„vt×ĈÍE˨¡Đ~´î¸ùÎh€uè`¸ŸHÕŔVºwĠââWò‡@{œÙNÝ´ə²ȕn{¿¥{l—÷eé^e’ďˆXj©î\\ªÑò˜Üìc\\üqˆÕ[Č¡xoÂċªbØ­Œø|€¶ȴZdÆÂšońéŒGš\\”¼C°ÌƁn´nxšÊOĨ’ہƴĸ¢¸òTxÊǪMīИÖŲÃɎOvˆʦƢ~FއRěò—¿ġ~åŊœú‰Nšžš¸qŽ’Ę[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾œĄYÒ©ÊfºmԈĘcDoĬMŬ’˜S¤„s²‚”ʘچžȂVŦ –ŽèW°ªB|IJXŔþÈJĦÆæFĚêŠYĂªĂ]øªŖNÞüA€’fɨJ€˜¯ÎrDDšĤ€`€mz\\„§~D¬{vJÂ˜«lµĂb–¤p€ŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMT”‡òP˜÷fØĶK¢ȝ˔Sô¹òEð­”`Ɩ½ǒÂň×äı–§ĤƝ§C~¡‚hlå‚ǺŦŞkâ’~}ŽFøàIJaĞ‚fƠ¥Ž„Ŕdž˜®U¸ˆźXœv¢aƆúŪtŠųƠjd•ƺŠƺÅìnrh\\ĺ¯äɝĦ]èpĄ¦´LƞĬŠ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹œ\\ĜÑŚŸ¶ZƄ³àjĨoâŠȴLʉȮŒĐ­ĚăŽÀêZǚŐ¤qȂ\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTŠiƢ¾ªì°`öøu®Ê¾ãØ" + ], + "encodeOffsets": [[88824, 50096]] + } + }, + { + "type": "Feature", + "id": "110000", + "properties": { + "id": "110000", + "cp": [116.405285, 39.904989], + "name": "北京", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@ĽOÁ›ûtŷmiÍt_H»Ĩ±d`й­{bw…Yr“³S]§§o¹€qGtm_Sŧ€“oa›‹FLg‘QN_•dV€@Zom_ć\\ߚc±x¯oœRcfe…£’o§ËgToÛJíĔóu…|wP¤™XnO¢ÉˆŦ¯rNÄā¤zâŖÈRpŢZŠœÚ{GŠrFt¦Òx§ø¹RóäV¤XdˆżâºWbwڍUd®bêņ¾‘jnŎGŃŶŠnzÚSeîĜZczî¾i]͜™QaúÍÔiþĩȨWĢ‹ü|Ėu[qb[swP@ÅğP¿{\\‡¥A¨Ï‘Ѩj¯ŠX\\¯œMK‘pA³[H…īu}}" + ], + "encodeOffsets": [[120023, 41045]] + } + }, + { + "type": "Feature", + "id": "120000", + "properties": { + "id": "120000", + "cp": [117.190182, 39.125596], + "name": "天津", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@ŬgX§Ü«E…¶Ḟ“¬O_™ïlÁg“z±AXe™µÄĵ{¶]gitgšIj·›¥îakS€‰¨ÐƎk}ĕ{gB—qGf{¿a†U^fI“ư‹³õ{YƒıëNĿžk©ïËZŏ‘R§òoY×Ógc…ĥs¡bġ«@dekąI[nlPqCnp{ˆō³°`{PNdƗqSÄĻNNâyj]äžÒD ĬH°Æ]~¡HO¾ŒX}ÐxŒgp“gWˆrDGˆŒpù‚Š^L‚ˆrzWxˆZ^¨´T\\|~@I‰zƒ–bĤ‹œjeĊªz£®Ĕvě€L†mV¾Ô_ȔNW~zbĬvG†²ZmDM~”~" + ], + "encodeOffsets": [[120237, 41215]] + } + }, + { + "type": "Feature", + "id": "310000", + "properties": { + "id": "310000", + "cp": [121.472644, 31.231706], + "name": "上海", + "childNum": 6 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@ɧư¬EpƸÁxc‡"], + ["@@©„ªƒ"], + ["@@”MA‹‘š"], + ["@@Qp݁E§ÉC¾"], + ["@@bŝՕÕEȣÚƥêImɇǦèÜĠŒÚžÃƌÃ͎ó"], + ["@@ǜûȬɋŠŭ™×^‰sYŒɍDŋ‘ŽąñCG²«ªč@h–_p¯A{‡oloY€¬j@IJ`•gQڛhr|ǀ^MIJvtbe´R¯Ô¬¨YŽô¤r]ì†Ƭį"] + ], + "encodeOffsets": [ + [[124702, 32062]], + [[124547, 32200]], + [[124808, 31991]], + [[124726, 32110]], + [[124903, 32376]], + [[124438, 32149]] + ] + } + }, + { + "type": "Feature", + "id": "500000", + "properties": { + "id": "500000", + "cp": [107.304962, 29.533155], + "name": "重庆", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + "@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êЖqHŸðqĖ䒊¥^CƒIj–²p…\\_ æüY|[YxƊæuž°xb®…Űb@~¢NQt°¶‚S栓Ê~rljĔëĚ¢~šuf`‘‚†fa‚ĔJåĊ„nÖ]„jƎćÊ@Š£¾a®£Ű{ŶĕF‹ègLk{Y|¡ĜWƔtƬJÑxq‹±ĢN´‰òK‰™–LÈüD|s`ŋ’ć]ƒÃ‰`đŒMûƱ½~Y°ħ`ƏíW‰½eI‹½{aŸ‘OIrÏ¡ĕŇa†p†µÜƅġ‘œ^ÖÛbÙŽŏml½S‹êqDu[R‹ãË»†ÿw`»y‘¸_ĺę}÷`M¯ċfCVµqʼn÷Z•gg“Œ`d½pDO‡ÎCnœ^uf²ènh¼WtƏxRGg¦…pV„†FI±ŽG^ŒIc´ec‡’G•ĹÞ½sëĬ„h˜xW‚}Kӈe­Xsbk”F¦›L‘ØgTkïƵNï¶}Gy“w\\oñ¡nmĈzjŸ•@™Óc£»Wă¹Ój“_m»ˆ¹·~MvÛaqœ»­‰êœ’\\ÂoVnŽÓØÍ™²«‹bq¿efE „€‹Ĝ^Qž~ Évý‡ş¤²Į‰pEİ}zcĺƒL‹½‡š¿gņ›¡ýE¡ya£³t\\¨\\vú»¼§·Ñr_oÒý¥u‚•_n»_ƒ•At©Þűā§IVeëƒY}{VPÀFA¨ąB}q@|Ou—\\Fm‰QF݅Mw˜å}]•€|FmϋCaƒwŒu_p—¯sfÙgY…DHl`{QEfNysBЦzG¸rHe‚„N\\CvEsÐùÜ_·ÖĉsaQ¯€}_U‡†xÃđŠq›NH¬•Äd^ÝŰR¬ã°wećJEž·vÝ·Hgƒ‚éFXjÉê`|yŒpxkAwœWĐpb¥eOsmzwqChóUQl¥F^laf‹anòsr›EvfQdÁUVf—ÎvÜ^efˆtET¬ôA\\œ¢sJŽnQTjP؈xøK|nBz‰„œĞ»LY‚…FDxӄvr“[ehľš•vN”¢o¾NiÂxGp⬐z›bfZo~hGi’]öF|‰|Nb‡tOMn eA±ŠtPT‡LjpYQ|†SH††YĀxinzDJ€Ìg¢và¥Pg‰_–ÇzII‹€II•„£®S¬„Øs쐣ŒN" + ], + ["@@ifjN@s"] + ], + "encodeOffsets": [[[109628, 30765]], [[111725, 31320]]] + } + }, + { + "type": "Feature", + "id": "810000", + "properties": { + "id": "810000", + "cp": [114.173355, 22.320048], + "name": "香港", + "childNum": 5 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@AlBk"], + ["@@mŽn"], + ["@@EpFo"], + ["@@ea¢pl¸Eõ¹‡hj[ƒ]ÔCΖ@lj˜¡uBXŸ…•´‹AI¹…[‹yDUˆ]W`çwZkmc–…M›žp€Åv›}I‹oJlcaƒfёKްä¬XJmРđhI®æÔtSHn€Eˆ„ÒrÈc"], + ["@@rMUw‡AS®€e"] + ], + "encodeOffsets": [ + [[117111, 23002]], + [[117072, 22876]], + [[117045, 22887]], + [[116975, 23082]], + [[116882, 22747]] + ] + } + }, + { + "type": "Feature", + "id": "820000", + "properties": { "id": "820000", "cp": [113.54909, 22.198951], "name": "澳门", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": ["@@kÊd°å§s"], + "encodeOffsets": [[116279, 22639]] + } + } + ], + "UTF8Encoding": true +} diff --git a/yshop-drink-vue3/src/assets/svgs/403.svg b/yshop-drink-vue3/src/assets/svgs/403.svg new file mode 100644 index 0000000..4500596 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/403.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/404.svg b/yshop-drink-vue3/src/assets/svgs/404.svg new file mode 100644 index 0000000..5244d8d --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/500.svg b/yshop-drink-vue3/src/assets/svgs/500.svg new file mode 100644 index 0000000..9c02092 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/500.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/icon.svg b/yshop-drink-vue3/src/assets/svgs/icon.svg new file mode 100644 index 0000000..7024bec --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/login-bg.svg b/yshop-drink-vue3/src/assets/svgs/login-bg.svg new file mode 100644 index 0000000..bbe06c1 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/login-bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/login-box-bg.svg b/yshop-drink-vue3/src/assets/svgs/login-box-bg.svg new file mode 100644 index 0000000..ab10040 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/login-box-bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/member_balance.svg b/yshop-drink-vue3/src/assets/svgs/member_balance.svg new file mode 100644 index 0000000..5395b23 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/member_balance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/member_expenditure_balance.svg b/yshop-drink-vue3/src/assets/svgs/member_expenditure_balance.svg new file mode 100644 index 0000000..02d498c --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/member_expenditure_balance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/member_level.svg b/yshop-drink-vue3/src/assets/svgs/member_level.svg new file mode 100644 index 0000000..cbcc686 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/member_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/member_point.svg b/yshop-drink-vue3/src/assets/svgs/member_point.svg new file mode 100644 index 0000000..b849ddb --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/member_point.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/member_recharge_balance.svg b/yshop-drink-vue3/src/assets/svgs/member_recharge_balance.svg new file mode 100644 index 0000000..7519bb2 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/member_recharge_balance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/message.svg b/yshop-drink-vue3/src/assets/svgs/message.svg new file mode 100644 index 0000000..14ca817 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/money.svg b/yshop-drink-vue3/src/assets/svgs/money.svg new file mode 100644 index 0000000..c1580de --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_app.svg b/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_app.svg new file mode 100644 index 0000000..ebf1188 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_app.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_bar.svg b/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_bar.svg new file mode 100644 index 0000000..eb1e1e8 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_bar.svg @@ -0,0 +1,2 @@ + diff --git a/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_pc.svg b/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_pc.svg new file mode 100644 index 0000000..2a75277 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_pc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_qr.svg b/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_qr.svg new file mode 100644 index 0000000..4833750 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_qr.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_wap.svg b/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_wap.svg new file mode 100644 index 0000000..87075db --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/pay/icon/alipay_wap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/pay/icon/mock.svg b/yshop-drink-vue3/src/assets/svgs/pay/icon/mock.svg new file mode 100644 index 0000000..27b09ea --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/pay/icon/mock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_app.svg b/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_app.svg new file mode 100644 index 0000000..ad40b2a --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_app.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_bar.svg b/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_bar.svg new file mode 100644 index 0000000..11292e6 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_bar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_lite.svg b/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_lite.svg new file mode 100644 index 0000000..0c925cf --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_lite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_native.svg b/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_native.svg new file mode 100644 index 0000000..bf3ba2b --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_native.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_pub.svg b/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_pub.svg new file mode 100644 index 0000000..3a6d15b --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/pay/icon/wx_pub.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/peoples.svg b/yshop-drink-vue3/src/assets/svgs/peoples.svg new file mode 100644 index 0000000..aab852e --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/peoples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/assets/svgs/shopping.svg b/yshop-drink-vue3/src/assets/svgs/shopping.svg new file mode 100644 index 0000000..f395bc7 --- /dev/null +++ b/yshop-drink-vue3/src/assets/svgs/shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yshop-drink-vue3/src/components/AppLinkInput/AppLinkSelectDialog.vue b/yshop-drink-vue3/src/components/AppLinkInput/AppLinkSelectDialog.vue new file mode 100644 index 0000000..63f1966 --- /dev/null +++ b/yshop-drink-vue3/src/components/AppLinkInput/AppLinkSelectDialog.vue @@ -0,0 +1,207 @@ + + + diff --git a/yshop-drink-vue3/src/components/AppLinkInput/data.ts b/yshop-drink-vue3/src/components/AppLinkInput/data.ts new file mode 100644 index 0000000..1916e08 --- /dev/null +++ b/yshop-drink-vue3/src/components/AppLinkInput/data.ts @@ -0,0 +1,228 @@ +// APP 链接分组 +export interface AppLinkGroup { + // 分组名称 + name: string + // 链接列表 + links: AppLink[] +} +// APP 链接 +export interface AppLink { + // 链接名称 + name: string + // 链接地址 + path: string + // 链接的类型 + type?: APP_LINK_TYPE_ENUM +} + +// APP 链接类型(需要特殊处理,例如商品详情) +export const enum APP_LINK_TYPE_ENUM { + // 拼团活动 + ACTIVITY_COMBINATION, + // 秒杀活动 + ACTIVITY_SECKILL, + // 文章详情 + ARTICLE_DETAIL, + // 优惠券详情 + COUPON_DETAIL, + // 自定义页面详情 + DIY_PAGE_DETAIL, + // 品类列表 + PRODUCT_CATEGORY_LIST, + // 商品列表 + PRODUCT_LIST, + // 商品详情 + PRODUCT_DETAIL_NORMAL, + // 拼团商品详情 + PRODUCT_DETAIL_COMBINATION, + // 秒杀商品详情 + PRODUCT_DETAIL_SECKILL +} + +// APP 链接列表(做一下持久化?) +export const APP_LINK_GROUP_LIST = [ + { + name: '商城', + links: [ + { + name: '首页', + path: '/pages/index/index' + }, + { + name: '商品分类', + path: '/pages/index/category', + type: APP_LINK_TYPE_ENUM.PRODUCT_CATEGORY_LIST + }, + { + name: '购物车', + path: '/pages/index/cart' + }, + { + name: '个人中心', + path: '/pages/index/user' + }, + { + name: '商品搜索', + path: '/pages/index/search' + }, + { + name: '自定义页面', + path: '/pages/index/page', + type: APP_LINK_TYPE_ENUM.DIY_PAGE_DETAIL + }, + { + name: '客服', + path: '/pages/chat/index' + }, + { + name: '系统设置', + path: '/pages/public/setting' + }, + { + name: '常见问题', + path: '/pages/public/faq' + } + ] + }, + { + name: '商品', + links: [ + { + name: '商品列表', + path: '/pages/goods/list', + type: APP_LINK_TYPE_ENUM.PRODUCT_LIST + }, + { + name: '商品详情', + path: '/pages/goods/index', + type: APP_LINK_TYPE_ENUM.PRODUCT_DETAIL_NORMAL + }, + { + name: '拼团商品详情', + path: '/pages/goods/groupon', + type: APP_LINK_TYPE_ENUM.PRODUCT_DETAIL_COMBINATION + }, + { + name: '秒杀商品详情', + path: '/pages/goods/seckill', + type: APP_LINK_TYPE_ENUM.PRODUCT_DETAIL_SECKILL + } + ] + }, + { + name: '营销活动', + links: [ + { + name: '拼团订单', + path: '/pages/activity/groupon/order' + }, + { + name: '营销商品', + path: '/pages/activity/index' + }, + { + name: '拼团活动', + path: '/pages/activity/groupon/list', + type: APP_LINK_TYPE_ENUM.ACTIVITY_COMBINATION + }, + { + name: '秒杀活动', + path: '/pages/activity/seckill/list', + type: APP_LINK_TYPE_ENUM.ACTIVITY_SECKILL + }, + { + name: '签到中心', + path: '/pages/app/sign' + }, + { + name: '优惠券中心', + path: '/pages/coupon/list' + }, + { + name: '优惠券详情', + path: '/pages/coupon/detail', + type: APP_LINK_TYPE_ENUM.COUPON_DETAIL + }, + { + name: '文章详情', + path: '/pages/public/richtext', + type: APP_LINK_TYPE_ENUM.ARTICLE_DETAIL + } + ] + }, + { + name: '分销商城', + links: [ + { + name: '分销中心', + path: '/pages/commission/index' + }, + { + name: '推广商品', + path: '/pages/commission/goods' + }, + { + name: '分销订单', + path: '/pages/commission/order' + }, + { + name: '我的团队', + path: '/pages/commission/team' + } + ] + }, + { + name: '支付', + links: [ + { + name: '充值余额', + path: '/pages/pay/recharge' + }, + { + name: '充值记录', + path: '/pages/pay/recharge-log' + } + ] + }, + { + name: '用户中心', + links: [ + { + name: '用户信息', + path: '/pages/user/info' + }, + { + name: '用户订单', + path: '/pages/order/list' + }, + { + name: '售后订单', + path: '/pages/order/aftersale/list' + }, + { + name: '商品收藏', + path: '/pages/user/goods-collect' + }, + { + name: '浏览记录', + path: '/pages/user/goods-log' + }, + { + name: '地址管理', + path: '/pages/user/address/list' + }, + { + name: '用户佣金', + path: '/pages/user/wallet/commission' + }, + { + name: '用户余额', + path: '/pages/user/wallet/money' + }, + { + name: '用户积分', + path: '/pages/user/wallet/score' + } + ] + } +] as AppLinkGroup[] diff --git a/yshop-drink-vue3/src/components/AppLinkInput/index.vue b/yshop-drink-vue3/src/components/AppLinkInput/index.vue new file mode 100644 index 0000000..ff71382 --- /dev/null +++ b/yshop-drink-vue3/src/components/AppLinkInput/index.vue @@ -0,0 +1,43 @@ + + diff --git a/yshop-drink-vue3/src/components/Backtop/index.ts b/yshop-drink-vue3/src/components/Backtop/index.ts new file mode 100644 index 0000000..96de88d --- /dev/null +++ b/yshop-drink-vue3/src/components/Backtop/index.ts @@ -0,0 +1,3 @@ +import Backtop from './src/Backtop.vue' + +export { Backtop } diff --git a/yshop-drink-vue3/src/components/Backtop/src/Backtop.vue b/yshop-drink-vue3/src/components/Backtop/src/Backtop.vue new file mode 100644 index 0000000..5d79f51 --- /dev/null +++ b/yshop-drink-vue3/src/components/Backtop/src/Backtop.vue @@ -0,0 +1,17 @@ + + + diff --git a/yshop-drink-vue3/src/components/Card/index.ts b/yshop-drink-vue3/src/components/Card/index.ts new file mode 100644 index 0000000..f4c0d86 --- /dev/null +++ b/yshop-drink-vue3/src/components/Card/index.ts @@ -0,0 +1,3 @@ +import CardTitle from './src/CardTitle.vue' + +export { CardTitle } diff --git a/yshop-drink-vue3/src/components/Card/src/CardTitle.vue b/yshop-drink-vue3/src/components/Card/src/CardTitle.vue new file mode 100644 index 0000000..76a8356 --- /dev/null +++ b/yshop-drink-vue3/src/components/Card/src/CardTitle.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/ColorInput/index.vue b/yshop-drink-vue3/src/components/ColorInput/index.vue new file mode 100644 index 0000000..63ff73c --- /dev/null +++ b/yshop-drink-vue3/src/components/ColorInput/index.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/ConfigGlobal/index.ts b/yshop-drink-vue3/src/components/ConfigGlobal/index.ts new file mode 100644 index 0000000..dda2462 --- /dev/null +++ b/yshop-drink-vue3/src/components/ConfigGlobal/index.ts @@ -0,0 +1,3 @@ +import ConfigGlobal from './src/ConfigGlobal.vue' + +export { ConfigGlobal } diff --git a/yshop-drink-vue3/src/components/ConfigGlobal/src/ConfigGlobal.vue b/yshop-drink-vue3/src/components/ConfigGlobal/src/ConfigGlobal.vue new file mode 100644 index 0000000..5bd90cf --- /dev/null +++ b/yshop-drink-vue3/src/components/ConfigGlobal/src/ConfigGlobal.vue @@ -0,0 +1,62 @@ + + + diff --git a/yshop-drink-vue3/src/components/ContentDetailWrap/index.ts b/yshop-drink-vue3/src/components/ContentDetailWrap/index.ts new file mode 100644 index 0000000..1871cac --- /dev/null +++ b/yshop-drink-vue3/src/components/ContentDetailWrap/index.ts @@ -0,0 +1,3 @@ +import ContentDetailWrap from './src/ContentDetailWrap.vue' + +export { ContentDetailWrap } diff --git a/yshop-drink-vue3/src/components/ContentDetailWrap/src/ContentDetailWrap.vue b/yshop-drink-vue3/src/components/ContentDetailWrap/src/ContentDetailWrap.vue new file mode 100644 index 0000000..a9eacc0 --- /dev/null +++ b/yshop-drink-vue3/src/components/ContentDetailWrap/src/ContentDetailWrap.vue @@ -0,0 +1,58 @@ + + + diff --git a/yshop-drink-vue3/src/components/ContentWrap/index.ts b/yshop-drink-vue3/src/components/ContentWrap/index.ts new file mode 100644 index 0000000..8c22cc8 --- /dev/null +++ b/yshop-drink-vue3/src/components/ContentWrap/index.ts @@ -0,0 +1,3 @@ +import ContentWrap from './src/ContentWrap.vue' + +export { ContentWrap } diff --git a/yshop-drink-vue3/src/components/ContentWrap/src/ContentWrap.vue b/yshop-drink-vue3/src/components/ContentWrap/src/ContentWrap.vue new file mode 100644 index 0000000..454e95c --- /dev/null +++ b/yshop-drink-vue3/src/components/ContentWrap/src/ContentWrap.vue @@ -0,0 +1,37 @@ + + + diff --git a/yshop-drink-vue3/src/components/CountTo/index.ts b/yshop-drink-vue3/src/components/CountTo/index.ts new file mode 100644 index 0000000..2119f02 --- /dev/null +++ b/yshop-drink-vue3/src/components/CountTo/index.ts @@ -0,0 +1,3 @@ +import CountTo from './src/CountTo.vue' + +export { CountTo } diff --git a/yshop-drink-vue3/src/components/CountTo/src/CountTo.vue b/yshop-drink-vue3/src/components/CountTo/src/CountTo.vue new file mode 100644 index 0000000..7a19bec --- /dev/null +++ b/yshop-drink-vue3/src/components/CountTo/src/CountTo.vue @@ -0,0 +1,182 @@ + + + diff --git a/yshop-drink-vue3/src/components/Crontab/index.ts b/yshop-drink-vue3/src/components/Crontab/index.ts new file mode 100644 index 0000000..6beeef8 --- /dev/null +++ b/yshop-drink-vue3/src/components/Crontab/index.ts @@ -0,0 +1,2 @@ +import Crontab from './src/Crontab.vue' +export { Crontab } diff --git a/yshop-drink-vue3/src/components/Crontab/src/Crontab.vue b/yshop-drink-vue3/src/components/Crontab/src/Crontab.vue new file mode 100644 index 0000000..e61fef8 --- /dev/null +++ b/yshop-drink-vue3/src/components/Crontab/src/Crontab.vue @@ -0,0 +1,1015 @@ + + + + diff --git a/yshop-drink-vue3/src/components/Cropper/index.ts b/yshop-drink-vue3/src/components/Cropper/index.ts new file mode 100644 index 0000000..8fcc618 --- /dev/null +++ b/yshop-drink-vue3/src/components/Cropper/index.ts @@ -0,0 +1,4 @@ +import CropperImage from './src/Cropper.vue' +import CropperAvatar from './src/CropperAvatar.vue' + +export { CropperImage, CropperAvatar } diff --git a/yshop-drink-vue3/src/components/Cropper/src/CopperModal.vue b/yshop-drink-vue3/src/components/Cropper/src/CopperModal.vue new file mode 100644 index 0000000..27052b8 --- /dev/null +++ b/yshop-drink-vue3/src/components/Cropper/src/CopperModal.vue @@ -0,0 +1,261 @@ + + + diff --git a/yshop-drink-vue3/src/components/Cropper/src/Cropper.vue b/yshop-drink-vue3/src/components/Cropper/src/Cropper.vue new file mode 100644 index 0000000..871aed8 --- /dev/null +++ b/yshop-drink-vue3/src/components/Cropper/src/Cropper.vue @@ -0,0 +1,183 @@ + + + diff --git a/yshop-drink-vue3/src/components/Cropper/src/CropperAvatar.vue b/yshop-drink-vue3/src/components/Cropper/src/CropperAvatar.vue new file mode 100644 index 0000000..9464c2a --- /dev/null +++ b/yshop-drink-vue3/src/components/Cropper/src/CropperAvatar.vue @@ -0,0 +1,142 @@ + + + diff --git a/yshop-drink-vue3/src/components/Cropper/src/types.ts b/yshop-drink-vue3/src/components/Cropper/src/types.ts new file mode 100644 index 0000000..bcad3b4 --- /dev/null +++ b/yshop-drink-vue3/src/components/Cropper/src/types.ts @@ -0,0 +1,8 @@ +import type Cropper from 'cropperjs' + +export interface CropendResult { + imgBase64: string + imgInfo: Cropper.Data +} + +export type { Cropper } diff --git a/yshop-drink-vue3/src/components/Descriptions/index.ts b/yshop-drink-vue3/src/components/Descriptions/index.ts new file mode 100644 index 0000000..243bc39 --- /dev/null +++ b/yshop-drink-vue3/src/components/Descriptions/index.ts @@ -0,0 +1,4 @@ +import Descriptions from './src/Descriptions.vue' +import DescriptionsItemLabel from './src/DescriptionsItemLabel.vue' + +export { Descriptions, DescriptionsItemLabel } diff --git a/yshop-drink-vue3/src/components/Descriptions/src/Descriptions.vue b/yshop-drink-vue3/src/components/Descriptions/src/Descriptions.vue new file mode 100644 index 0000000..184d95c --- /dev/null +++ b/yshop-drink-vue3/src/components/Descriptions/src/Descriptions.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/Descriptions/src/DescriptionsItemLabel.vue b/yshop-drink-vue3/src/components/Descriptions/src/DescriptionsItemLabel.vue new file mode 100644 index 0000000..4efb2fb --- /dev/null +++ b/yshop-drink-vue3/src/components/Descriptions/src/DescriptionsItemLabel.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/Dialog/index.ts b/yshop-drink-vue3/src/components/Dialog/index.ts new file mode 100644 index 0000000..1655dad --- /dev/null +++ b/yshop-drink-vue3/src/components/Dialog/index.ts @@ -0,0 +1,3 @@ +import Dialog from './src/Dialog.vue' + +export { Dialog } diff --git a/yshop-drink-vue3/src/components/Dialog/src/Dialog.vue b/yshop-drink-vue3/src/components/Dialog/src/Dialog.vue new file mode 100644 index 0000000..a1eb550 --- /dev/null +++ b/yshop-drink-vue3/src/components/Dialog/src/Dialog.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/DictTag/index.ts b/yshop-drink-vue3/src/components/DictTag/index.ts new file mode 100644 index 0000000..4db2742 --- /dev/null +++ b/yshop-drink-vue3/src/components/DictTag/index.ts @@ -0,0 +1,3 @@ +import DictTag from './src/DictTag.vue' + +export { DictTag } diff --git a/yshop-drink-vue3/src/components/DictTag/src/DictTag.vue b/yshop-drink-vue3/src/components/DictTag/src/DictTag.vue new file mode 100644 index 0000000..db37f71 --- /dev/null +++ b/yshop-drink-vue3/src/components/DictTag/src/DictTag.vue @@ -0,0 +1,60 @@ + diff --git a/yshop-drink-vue3/src/components/DocAlert/index.vue b/yshop-drink-vue3/src/components/DocAlert/index.vue new file mode 100644 index 0000000..0073266 --- /dev/null +++ b/yshop-drink-vue3/src/components/DocAlert/index.vue @@ -0,0 +1,34 @@ + + + diff --git a/yshop-drink-vue3/src/components/Draggable/index.vue b/yshop-drink-vue3/src/components/Draggable/index.vue new file mode 100644 index 0000000..2175946 --- /dev/null +++ b/yshop-drink-vue3/src/components/Draggable/index.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/Echart/index.ts b/yshop-drink-vue3/src/components/Echart/index.ts new file mode 100644 index 0000000..4822092 --- /dev/null +++ b/yshop-drink-vue3/src/components/Echart/index.ts @@ -0,0 +1,3 @@ +import Echart from './src/Echart.vue' + +export { Echart } diff --git a/yshop-drink-vue3/src/components/Echart/src/Echart.vue b/yshop-drink-vue3/src/components/Echart/src/Echart.vue new file mode 100644 index 0000000..fd3342d --- /dev/null +++ b/yshop-drink-vue3/src/components/Echart/src/Echart.vue @@ -0,0 +1,115 @@ + + + diff --git a/yshop-drink-vue3/src/components/Editor/index.ts b/yshop-drink-vue3/src/components/Editor/index.ts new file mode 100644 index 0000000..3fbf0a9 --- /dev/null +++ b/yshop-drink-vue3/src/components/Editor/index.ts @@ -0,0 +1,8 @@ +import Editor from './src/Editor.vue' +import { IDomEditor } from '@wangeditor/editor' + +export interface EditorExpose { + getEditorRef: () => Promise +} + +export { Editor } diff --git a/yshop-drink-vue3/src/components/Editor/src/Editor.vue b/yshop-drink-vue3/src/components/Editor/src/Editor.vue new file mode 100644 index 0000000..eff8274 --- /dev/null +++ b/yshop-drink-vue3/src/components/Editor/src/Editor.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/Error/index.ts b/yshop-drink-vue3/src/components/Error/index.ts new file mode 100644 index 0000000..a52c6f9 --- /dev/null +++ b/yshop-drink-vue3/src/components/Error/index.ts @@ -0,0 +1,3 @@ +import Error from './src/Error.vue' + +export { Error } diff --git a/yshop-drink-vue3/src/components/Error/src/Error.vue b/yshop-drink-vue3/src/components/Error/src/Error.vue new file mode 100644 index 0000000..3fd7a17 --- /dev/null +++ b/yshop-drink-vue3/src/components/Error/src/Error.vue @@ -0,0 +1,58 @@ + + + diff --git a/yshop-drink-vue3/src/components/Form/index.ts b/yshop-drink-vue3/src/components/Form/index.ts new file mode 100644 index 0000000..484c7a2 --- /dev/null +++ b/yshop-drink-vue3/src/components/Form/index.ts @@ -0,0 +1,15 @@ +import Form from './src/Form.vue' +import { ElForm } from 'element-plus' +import { FormSchema, FormSetPropsType } from '@/types/form' + +export interface FormExpose { + setValues: (data: Recordable) => void + setProps: (props: Recordable) => void + delSchema: (field: string) => void + addSchema: (formSchema: FormSchema, index?: number) => void + setSchema: (schemaProps: FormSetPropsType[]) => void + formModel: Recordable + getElFormRef: () => ComponentRef +} + +export { Form } diff --git a/yshop-drink-vue3/src/components/Form/src/Form.vue b/yshop-drink-vue3/src/components/Form/src/Form.vue new file mode 100644 index 0000000..3acc10a --- /dev/null +++ b/yshop-drink-vue3/src/components/Form/src/Form.vue @@ -0,0 +1,307 @@ + + + diff --git a/yshop-drink-vue3/src/components/Form/src/componentMap.ts b/yshop-drink-vue3/src/components/Form/src/componentMap.ts new file mode 100644 index 0000000..5af9b40 --- /dev/null +++ b/yshop-drink-vue3/src/components/Form/src/componentMap.ts @@ -0,0 +1,55 @@ +import type { Component } from 'vue' +import { + ElCascader, + ElCheckboxGroup, + ElColorPicker, + ElDatePicker, + ElInput, + ElInputNumber, + ElRadioGroup, + ElRate, + ElSelect, + ElSelectV2, + ElTreeSelect, + ElSlider, + ElSwitch, + ElTimePicker, + ElTimeSelect, + ElTransfer, + ElAutocomplete, + ElDivider +} from 'element-plus' +import { InputPassword } from '@/components/InputPassword' +import { Editor } from '@/components/Editor' +import { UploadImg, UploadImgs, UploadFile } from '@/components/UploadFile' +import { ComponentName } from '@/types/components' + +const componentMap: Recordable = { + Radio: ElRadioGroup, + Checkbox: ElCheckboxGroup, + CheckboxButton: ElCheckboxGroup, + Input: ElInput, + Autocomplete: ElAutocomplete, + InputNumber: ElInputNumber, + Select: ElSelect, + Cascader: ElCascader, + Switch: ElSwitch, + Slider: ElSlider, + TimePicker: ElTimePicker, + DatePicker: ElDatePicker, + Rate: ElRate, + ColorPicker: ElColorPicker, + Transfer: ElTransfer, + Divider: ElDivider, + TimeSelect: ElTimeSelect, + SelectV2: ElSelectV2, + TreeSelect: ElTreeSelect, + RadioButton: ElRadioGroup, + InputPassword: InputPassword, + Editor: Editor, + UploadImg: UploadImg, + UploadImgs: UploadImgs, + UploadFile: UploadFile +} + +export { componentMap } diff --git a/yshop-drink-vue3/src/components/Form/src/components/useRenderCheckbox.tsx b/yshop-drink-vue3/src/components/Form/src/components/useRenderCheckbox.tsx new file mode 100644 index 0000000..e151839 --- /dev/null +++ b/yshop-drink-vue3/src/components/Form/src/components/useRenderCheckbox.tsx @@ -0,0 +1,26 @@ +import { FormSchema } from '@/types/form' +import { ElCheckbox, ElCheckboxButton } from 'element-plus' +import { defineComponent } from 'vue' + +export const useRenderCheckbox = () => { + const renderCheckboxOptions = (item: FormSchema) => { + // 如果有别名,就取别名 + const labelAlias = item?.componentProps?.optionsAlias?.labelField + const valueAlias = item?.componentProps?.optionsAlias?.valueField + const Com = (item.component === 'Checkbox' ? ElCheckbox : ElCheckboxButton) as ReturnType< + typeof defineComponent + > + return item?.componentProps?.options?.map((option) => { + const { ...other } = option + return ( + + {option[labelAlias || 'label']} + + ) + }) + } + + return { + renderCheckboxOptions + } +} diff --git a/yshop-drink-vue3/src/components/Form/src/components/useRenderRadio.tsx b/yshop-drink-vue3/src/components/Form/src/components/useRenderRadio.tsx new file mode 100644 index 0000000..d1005ca --- /dev/null +++ b/yshop-drink-vue3/src/components/Form/src/components/useRenderRadio.tsx @@ -0,0 +1,26 @@ +import { FormSchema } from '@/types/form' +import { ElRadio, ElRadioButton } from 'element-plus' +import { defineComponent } from 'vue' + +export const useRenderRadio = () => { + const renderRadioOptions = (item: FormSchema) => { + // 如果有别名,就取别名 + const labelAlias = item?.componentProps?.optionsAlias?.labelField + const valueAlias = item?.componentProps?.optionsAlias?.valueField + const Com = (item.component === 'Radio' ? ElRadio : ElRadioButton) as ReturnType< + typeof defineComponent + > + return item?.componentProps?.options?.map((option) => { + const { ...other } = option + return ( + + {option[labelAlias || 'label']} + + ) + }) + } + + return { + renderRadioOptions + } +} diff --git a/yshop-drink-vue3/src/components/Form/src/components/useRenderSelect.tsx b/yshop-drink-vue3/src/components/Form/src/components/useRenderSelect.tsx new file mode 100644 index 0000000..59b72e6 --- /dev/null +++ b/yshop-drink-vue3/src/components/Form/src/components/useRenderSelect.tsx @@ -0,0 +1,57 @@ +import { FormSchema } from '@/types/form' +import { ComponentOptions } from '@/types/components' +import { ElOption, ElOptionGroup } from 'element-plus' +import { getSlot } from '@/utils/tsxHelper' +import { Slots } from 'vue' + +export const useRenderSelect = (slots: Slots) => { + // 渲染 select options + const renderSelectOptions = (item: FormSchema) => { + // 如果有别名,就取别名 + const labelAlias = item?.componentProps?.optionsAlias?.labelField + return item?.componentProps?.options?.map((option) => { + if (option?.options?.length) { + return ( + + {() => { + return option?.options?.map((v) => { + return renderSelectOptionItem(item, v) + }) + }} + + ) + } else { + return renderSelectOptionItem(item, option) + } + }) + } + + // 渲染 select option item + const renderSelectOptionItem = (item: FormSchema, option: ComponentOptions) => { + // 如果有别名,就取别名 + const labelAlias = item?.componentProps?.optionsAlias?.labelField + const valueAlias = item?.componentProps?.optionsAlias?.valueField + + const { label, value, ...other } = option + + return ( + + {{ + default: () => + // option 插槽名规则,{field}-option + item?.componentProps?.optionsSlot + ? getSlot(slots, `${item.field}-option`, { item: option }) + : undefined + }} + + ) + } + + return { + renderSelectOptions + } +} diff --git a/yshop-drink-vue3/src/components/Form/src/helper.ts b/yshop-drink-vue3/src/components/Form/src/helper.ts new file mode 100644 index 0000000..cdfc8ca --- /dev/null +++ b/yshop-drink-vue3/src/components/Form/src/helper.ts @@ -0,0 +1,148 @@ +import type { Slots } from 'vue' +import { getSlot } from '@/utils/tsxHelper' +import { PlaceholderModel } from './types' +import { FormSchema } from '@/types/form' +import { ColProps } from '@/types/components' + +/** + * + * @param schema 对应组件数据 + * @returns 返回提示信息对象 + * @description 用于自动设置placeholder + */ +export const setTextPlaceholder = (schema: FormSchema): PlaceholderModel => { + const { t } = useI18n() + const textMap = ['Input', 'Autocomplete', 'InputNumber', 'InputPassword'] + const selectMap = ['Select', 'SelectV2', 'TimePicker', 'DatePicker', 'TimeSelect', 'TimeSelect'] + if (textMap.includes(schema?.component as string)) { + return { + placeholder: t('common.inputText') + schema.label + } + } + if (selectMap.includes(schema?.component as string)) { + // 一些范围选择器 + const twoTextMap = ['datetimerange', 'daterange', 'monthrange', 'datetimerange', 'daterange'] + if ( + twoTextMap.includes( + (schema?.componentProps?.type || schema?.componentProps?.isRange) as string + ) + ) { + return { + startPlaceholder: t('common.startTimeText'), + endPlaceholder: t('common.endTimeText'), + rangeSeparator: '-' + } + } else { + return { + placeholder: t('common.selectText') + schema.label + } + } + } + return {} +} + +/** + * + * @param col 内置栅格 + * @returns 返回栅格属性 + * @description 合并传入进来的栅格属性 + */ +export const setGridProp = (col: ColProps = {}): ColProps => { + const colProps: ColProps = { + // 如果有span,代表用户优先级更高,所以不需要默认栅格 + ...(col.span + ? {} + : { + xs: 24, + sm: 12, + md: 12, + lg: 12, + xl: 12 + }), + ...col + } + return colProps +} + +/** + * + * @param item 传入的组件属性 + * @returns 默认添加 clearable 属性 + */ +export const setComponentProps = (item: FormSchema): Recordable => { + const notNeedClearable = ['ColorPicker'] + const componentProps: Recordable = notNeedClearable.includes(item.component as string) + ? { ...item.componentProps } + : { + clearable: true, + ...item.componentProps + } + // 需要删除额外的属性 + delete componentProps?.slots + return componentProps +} + +/** + * + * @param slots 插槽 + * @param slotsProps 插槽属性 + * @param field 字段名 + */ +export const setItemComponentSlots = ( + slots: Slots, + slotsProps: Recordable = {}, + field: string +): Recordable => { + const slotObj: Recordable = {} + for (const key in slotsProps) { + if (slotsProps[key]) { + // 由于组件有可能重复,需要有一个唯一的前缀 + slotObj[key] = (data: Recordable) => { + return getSlot(slots, `${field}-${key}`, data) + } + } + } + return slotObj +} + +/** + * + * @param schema Form表单结构化数组 + * @param formModel FormModel + * @returns FormModel + * @description 生成对应的formModel + */ +export const initModel = (schema: FormSchema[], formModel: Recordable) => { + const model: Recordable = { ...formModel } + schema.map((v) => { + // 如果是hidden,就删除对应的值 + if (v.hidden) { + delete model[v.field] + } else if (v.component && v.component !== 'Divider') { + const hasField = Reflect.has(model, v.field) + // 如果先前已经有值存在,则不进行重新赋值,而是采用现有的值 + model[v.field] = hasField ? model[v.field] : v.value !== void 0 ? v.value : '' + } + }) + return model +} + +/** + * @param slots 插槽 + * @param field 字段名 + * @returns 返回FormIiem插槽 + */ +export const setFormItemSlots = (slots: Slots, field: string): Recordable => { + const slotObj: Recordable = {} + if (slots[`${field}-error`]) { + slotObj['error'] = (data: Recordable) => { + return getSlot(slots, `${field}-error`, data) + } + } + if (slots[`${field}-label`]) { + slotObj['label'] = (data: Recordable) => { + return getSlot(slots, `${field}-label`, data) + } + } + return slotObj +} diff --git a/yshop-drink-vue3/src/components/Form/src/types.ts b/yshop-drink-vue3/src/components/Form/src/types.ts new file mode 100644 index 0000000..dcd01e7 --- /dev/null +++ b/yshop-drink-vue3/src/components/Form/src/types.ts @@ -0,0 +1,17 @@ +import { FormSchema } from '@/types/form' + +export interface PlaceholderModel { + placeholder?: string + startPlaceholder?: string + endPlaceholder?: string + rangeSeparator?: string +} + +export type FormProps = { + schema?: FormSchema[] + isCol?: boolean + model?: Recordable + autoSetPlaceholder?: boolean + isCustom?: boolean + labelWidth?: string | number +} & Recordable diff --git a/yshop-drink-vue3/src/components/FormCreate/index.ts b/yshop-drink-vue3/src/components/FormCreate/index.ts new file mode 100644 index 0000000..9d32778 --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/index.ts @@ -0,0 +1,4 @@ +import { useFormCreateDesigner } from './src/useFormCreateDesigner' +import { useApiSelect } from './src/components/useApiSelect' + +export { useFormCreateDesigner, useApiSelect } diff --git a/yshop-drink-vue3/src/components/FormCreate/src/components/DictSelect.vue b/yshop-drink-vue3/src/components/FormCreate/src/components/DictSelect.vue new file mode 100644 index 0000000..204746d --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/components/DictSelect.vue @@ -0,0 +1,59 @@ + + + + diff --git a/yshop-drink-vue3/src/components/FormCreate/src/components/useApiSelect.tsx b/yshop-drink-vue3/src/components/FormCreate/src/components/useApiSelect.tsx new file mode 100644 index 0000000..a67e6f6 --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/components/useApiSelect.tsx @@ -0,0 +1,143 @@ +import request from '@/config/axios' +import { isEmpty } from '@/utils/is' +import { ApiSelectProps } from '@/components/FormCreate/src/type' +import { jsonParse } from '@/utils' + +export const useApiSelect = (option: ApiSelectProps) => { + return defineComponent({ + name: option.name, + props: { + // 选项标签 + labelField: { + type: String, + default: () => option.labelField ?? 'label' + }, + // 选项的值 + valueField: { + type: String, + default: () => option.valueField ?? 'value' + }, + // api 接口 + url: { + type: String, + default: () => option.url ?? '' + }, + // 请求类型 + method: { + type: String, + default: 'GET' + }, + // 请求参数 + data: { + type: String, + default: '' + }, + // 选择器类型,下拉框 select、多选框 checkbox、单选框 radio + selectType: { + type: String, + default: 'select' + }, + // 是否多选 + multiple: { + type: Boolean, + default: false + } + }, + setup(props) { + const attrs = useAttrs() + const options = ref([]) // 下拉数据 + const getOptions = async () => { + options.value = [] + // 接口选择器 + if (isEmpty(props.url)) { + return + } + let data = [] + switch (props.method) { + case 'GET': + data = await request.get({ url: props.url }) + break + case 'POST': + data = await request.post({ url: props.url, data: jsonParse(props.data) }) + break + } + + if (Array.isArray(data)) { + options.value = data.map((item: any) => ({ + label: item[props.labelField], + value: item[props.valueField] + })) + return + } + console.error(`接口[${props.url}] 返回结果不是一个数组`) + } + + onMounted(async () => { + await getOptions() + }) + + const buildSelect = () => { + if (props.multiple) { + // fix:多写此步是为了解决 multiple 属性问题 + return ( + + {options.value.map((item, index) => ( + + ))} + + ) + } + return ( + + {options.value.map((item, index) => ( + + ))} + + ) + } + const buildCheckbox = () => { + if (isEmpty(options.value)) { + options.value = [ + { label: '选项1', value: '选项1' }, + { label: '选项2', value: '选项2' } + ] + } + return ( + + {options.value.map((item, index) => ( + + ))} + + ) + } + const buildRadio = () => { + if (isEmpty(options.value)) { + options.value = [ + { label: '选项1', value: '选项1' }, + { label: '选项2', value: '选项2' } + ] + } + return ( + + {options.value.map((item, index) => ( + + {item.label} + + ))} + + ) + } + return () => ( + <> + {props.selectType === 'select' + ? buildSelect() + : props.selectType === 'radio' + ? buildRadio() + : props.selectType === 'checkbox' + ? buildCheckbox() + : buildSelect()} + + ) + } + }) +} diff --git a/yshop-drink-vue3/src/components/FormCreate/src/config/index.ts b/yshop-drink-vue3/src/components/FormCreate/src/config/index.ts new file mode 100644 index 0000000..b1e2dde --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/config/index.ts @@ -0,0 +1,15 @@ +import { useUploadFileRule } from './useUploadFileRule' +import { useUploadImgRule } from './useUploadImgRule' +import { useUploadImgsRule } from './useUploadImgsRule' +import { useDictSelectRule } from './useDictSelectRule' +import { useEditorRule } from './useEditorRule' +import { useSelectRule } from './useSelectRule' + +export { + useUploadFileRule, + useUploadImgRule, + useUploadImgsRule, + useDictSelectRule, + useEditorRule, + useSelectRule +} diff --git a/yshop-drink-vue3/src/components/FormCreate/src/config/selectRule.ts b/yshop-drink-vue3/src/components/FormCreate/src/config/selectRule.ts new file mode 100644 index 0000000..281d373 --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/config/selectRule.ts @@ -0,0 +1,147 @@ +const selectRule = [ + { + type: 'select', + field: 'selectType', + title: '选择器类型', + value: 'select', + options: [ + { label: '下拉框', value: 'select' }, + { label: '单选框', value: 'radio' }, + { label: '多选框', value: 'checkbox' } + ], + // 参考 https://www.form-create.com/v3/guide/control 组件联动,单选框和多选框不需要多选属性 + control: [ + { + value: 'select', + condition: '=', + method: 'hidden', + rule: ['multiple'] + } + ] + }, + { type: 'switch', field: 'multiple', title: '是否多选' }, + { + type: 'switch', + field: 'disabled', + title: '是否禁用' + }, + { type: 'switch', field: 'clearable', title: '是否可以清空选项' }, + { + type: 'switch', + field: 'collapseTags', + title: '多选时是否将选中值按文字的形式展示' + }, + { + type: 'inputNumber', + field: 'multipleLimit', + title: '多选时用户最多可以选择的项目数,为 0 则不限制', + props: { min: 0 } + }, + { + type: 'input', + field: 'autocomplete', + title: 'autocomplete 属性' + }, + { type: 'input', field: 'placeholder', title: '占位符' }, + { + type: 'switch', + field: 'filterable', + title: '是否可搜索' + }, + { type: 'switch', field: 'allowCreate', title: '是否允许用户创建新条目' }, + { + type: 'input', + field: 'noMatchText', + title: '搜索条件无匹配时显示的文字' + }, + { + type: 'switch', + field: 'remote', + title: '其中的选项是否从服务器远程加载' + }, + { + type: 'Struct', + field: 'remoteMethod', + title: '自定义远程搜索方法' + }, + { type: 'input', field: 'noDataText', title: '选项为空时显示的文字' }, + { + type: 'switch', + field: 'reserveKeyword', + title: '多选且可搜索时,是否在选中一个选项后保留当前的搜索关键词' + }, + { + type: 'switch', + field: 'defaultFirstOption', + title: '在输入框按下回车,选择第一个匹配项' + }, + { + type: 'switch', + field: 'popperAppendToBody', + title: '是否将弹出框插入至 body 元素', + value: true + }, + { + type: 'switch', + field: 'automaticDropdown', + title: '对于不可搜索的 Select,是否在输入框获得焦点后自动弹出选项菜单' + } +] + +const apiSelectRule = [ + { + type: 'input', + field: 'url', + title: 'url 地址', + props: { + placeholder: '/system/user/simple-list' + } + }, + { + type: 'select', + field: 'method', + title: '请求类型', + value: 'GET', + options: [ + { label: 'GET', value: 'GET' }, + { label: 'POST', value: 'POST' } + ], + control: [ + { + value: 'GET', + condition: '!=', + method: 'hidden', + rule: [ + { + type: 'input', + field: 'data', + title: '请求参数 JSON 格式', + props: { + autosize: true, + type: 'textarea', + placeholder: '{"type": 1}' + } + } + ] + } + ] + }, + { + type: 'input', + field: 'labelField', + title: 'label 属性', + props: { + placeholder: 'nickname' + } + }, + { + type: 'input', + field: 'valueField', + title: 'value 属性', + props: { + placeholder: 'id' + } + } +] + +export { selectRule, apiSelectRule } diff --git a/yshop-drink-vue3/src/components/FormCreate/src/config/useDictSelectRule.ts b/yshop-drink-vue3/src/components/FormCreate/src/config/useDictSelectRule.ts new file mode 100644 index 0000000..3db630b --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/config/useDictSelectRule.ts @@ -0,0 +1,62 @@ +import { generateUUID } from '@/utils' +import * as DictDataApi from '@/api/system/dict/dict.type' +import { localeProps, makeRequiredRule } from '@/components/FormCreate/src/utils' +import { selectRule } from '@/components/FormCreate/src/config/selectRule' + +/** + * 字典选择器规则,如果规则使用到动态数据则需要单独配置不能使用 useSelectRule + */ +export const useDictSelectRule = () => { + const label = '字典选择器' + const name = 'DictSelect' + const dictOptions = ref<{ label: string; value: string }[]>([]) // 字典类型下拉数据 + onMounted(async () => { + const data = await DictDataApi.getSimpleDictTypeList() + if (!data || data.length === 0) { + return + } + dictOptions.value = + data?.map((item: DictDataApi.DictTypeVO) => ({ + label: item.name, + value: item.type + })) ?? [] + }) + return { + icon: 'icon-doc-text', + label, + name, + rule() { + return { + type: name, + field: generateUUID(), + title: label, + info: '', + $required: false + } + }, + props(_, { t }) { + return localeProps(t, name + '.props', [ + makeRequiredRule(), + { + type: 'select', + field: 'dictType', + title: '字典类型', + value: '', + options: dictOptions.value + }, + { + type: 'select', + field: 'dictValueType', + title: '字典值类型', + value: 'str', + options: [ + { label: '数字', value: 'int' }, + { label: '字符串', value: 'str' }, + { label: '布尔值', value: 'bool' } + ] + }, + ...selectRule + ]) + } + } +} diff --git a/yshop-drink-vue3/src/components/FormCreate/src/config/useEditorRule.ts b/yshop-drink-vue3/src/components/FormCreate/src/config/useEditorRule.ts new file mode 100644 index 0000000..ac6d9ac --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/config/useEditorRule.ts @@ -0,0 +1,32 @@ +import { generateUUID } from '@/utils' +import { localeProps, makeRequiredRule } from '@/components/FormCreate/src/utils' + +export const useEditorRule = () => { + const label = '富文本' + const name = 'Editor' + return { + icon: 'icon-editor', + label, + name, + rule() { + return { + type: name, + field: generateUUID(), + title: label, + info: '', + $required: false + } + }, + props(_, { t }) { + return localeProps(t, name + '.props', [ + makeRequiredRule(), + { + type: 'input', + field: 'height', + title: '高度' + }, + { type: 'switch', field: 'readonly', title: '是否只读' } + ]) + } + } +} diff --git a/yshop-drink-vue3/src/components/FormCreate/src/config/useSelectRule.ts b/yshop-drink-vue3/src/components/FormCreate/src/config/useSelectRule.ts new file mode 100644 index 0000000..bf20588 --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/config/useSelectRule.ts @@ -0,0 +1,34 @@ +import { generateUUID } from '@/utils' +import { localeProps, makeRequiredRule } from '@/components/FormCreate/src/utils' +import { selectRule } from '@/components/FormCreate/src/config/selectRule' +import { SelectRuleOption } from '@/components/FormCreate/src/type' + +/** + * 通用选择器规则 hook + * + * @param option 规则配置 + */ +export const useSelectRule = (option: SelectRuleOption) => { + const label = option.label + const name = option.name + return { + icon: option.icon, + label, + name, + rule() { + return { + type: name, + field: generateUUID(), + title: label, + info: '', + $required: false + } + }, + props(_, { t }) { + if (!option.props) { + option.props = [] + } + return localeProps(t, name + '.props', [makeRequiredRule(), ...option.props, ...selectRule]) + } + } +} diff --git a/yshop-drink-vue3/src/components/FormCreate/src/config/useUploadFileRule.ts b/yshop-drink-vue3/src/components/FormCreate/src/config/useUploadFileRule.ts new file mode 100644 index 0000000..a1ea85e --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/config/useUploadFileRule.ts @@ -0,0 +1,80 @@ +import { generateUUID } from '@/utils' +import { localeProps, makeRequiredRule } from '@/components/FormCreate/src/utils' + +export const useUploadFileRule = () => { + const label = '文件上传' + const name = 'UploadFile' + return { + icon: 'icon-upload', + label, + name, + rule() { + return { + type: name, + field: generateUUID(), + title: label, + info: '', + $required: false + } + }, + props(_, { t }) { + return localeProps(t, name + '.props', [ + makeRequiredRule(), + { + type: 'select', + field: 'fileType', + title: '文件类型', + value: ['doc', 'xls', 'ppt', 'txt', 'pdf'], + options: [ + { label: 'doc', value: 'doc' }, + { label: 'xls', value: 'xls' }, + { label: 'ppt', value: 'ppt' }, + { label: 'txt', value: 'txt' }, + { label: 'pdf', value: 'pdf' } + ], + props: { + multiple: true + } + }, + { + type: 'switch', + field: 'autoUpload', + title: '是否在选取文件后立即进行上传', + value: true + }, + { + type: 'switch', + field: 'drag', + title: '拖拽上传', + value: false + }, + { + type: 'switch', + field: 'isShowTip', + title: '是否显示提示', + value: true + }, + { + type: 'inputNumber', + field: 'fileSize', + title: '大小限制(MB)', + value: 5, + props: { min: 0 } + }, + { + type: 'inputNumber', + field: 'limit', + title: '数量限制', + value: 5, + props: { min: 0 } + }, + { + type: 'switch', + field: 'disabled', + title: '是否禁用', + value: false + } + ]) + } + } +} diff --git a/yshop-drink-vue3/src/components/FormCreate/src/config/useUploadImgRule.ts b/yshop-drink-vue3/src/components/FormCreate/src/config/useUploadImgRule.ts new file mode 100644 index 0000000..546cf9d --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/config/useUploadImgRule.ts @@ -0,0 +1,89 @@ +import { generateUUID } from '@/utils' +import { localeProps, makeRequiredRule } from '@/components/FormCreate/src/utils' + +export const useUploadImgRule = () => { + const label = '单图上传' + const name = 'UploadImg' + return { + icon: 'icon-upload', + label, + name, + rule() { + return { + type: name, + field: generateUUID(), + title: label, + info: '', + $required: false + } + }, + props(_, { t }) { + return localeProps(t, name + '.props', [ + makeRequiredRule(), + { + type: 'switch', + field: 'drag', + title: '拖拽上传', + value: false + }, + { + type: 'select', + field: 'fileType', + title: '图片类型限制', + value: ['image/jpeg', 'image/png', 'image/gif'], + options: [ + { label: 'image/apng', value: 'image/apng' }, + { label: 'image/bmp', value: 'image/bmp' }, + { label: 'image/gif', value: 'image/gif' }, + { label: 'image/jpeg', value: 'image/jpeg' }, + { label: 'image/pjpeg', value: 'image/pjpeg' }, + { label: 'image/svg+xml', value: 'image/svg+xml' }, + { label: 'image/tiff', value: 'image/tiff' }, + { label: 'image/webp', value: 'image/webp' }, + { label: 'image/x-icon', value: 'image/x-icon' } + ], + props: { + multiple: true + } + }, + { + type: 'inputNumber', + field: 'fileSize', + title: '大小限制(MB)', + value: 5, + props: { min: 0 } + }, + { + type: 'input', + field: 'height', + title: '组件高度', + value: '150px' + }, + { + type: 'input', + field: 'width', + title: '组件宽度', + value: '150px' + }, + { + type: 'input', + field: 'borderradius', + title: '组件边框圆角', + value: '8px' + }, + { + type: 'switch', + field: 'disabled', + title: '是否显示删除按钮', + value: true + }, + { + type: 'switch', + field: 'showBtnText', + title: '是否显示按钮文字', + value: true + } + ]) + } + } +} diff --git a/yshop-drink-vue3/src/components/FormCreate/src/config/useUploadImgsRule.ts b/yshop-drink-vue3/src/components/FormCreate/src/config/useUploadImgsRule.ts new file mode 100644 index 0000000..0bf2378 --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/config/useUploadImgsRule.ts @@ -0,0 +1,84 @@ +import { generateUUID } from '@/utils' +import { localeProps, makeRequiredRule } from '@/components/FormCreate/src/utils' + +export const useUploadImgsRule = () => { + const label = '多图上传' + const name = 'UploadImgs' + return { + icon: 'icon-upload', + label, + name, + rule() { + return { + type: name, + field: generateUUID(), + title: label, + info: '', + $required: false + } + }, + props(_, { t }) { + return localeProps(t, name + '.props', [ + makeRequiredRule(), + { + type: 'switch', + field: 'drag', + title: '拖拽上传', + value: false + }, + { + type: 'select', + field: 'fileType', + title: '图片类型限制', + value: ['image/jpeg', 'image/png', 'image/gif'], + options: [ + { label: 'image/apng', value: 'image/apng' }, + { label: 'image/bmp', value: 'image/bmp' }, + { label: 'image/gif', value: 'image/gif' }, + { label: 'image/jpeg', value: 'image/jpeg' }, + { label: 'image/pjpeg', value: 'image/pjpeg' }, + { label: 'image/svg+xml', value: 'image/svg+xml' }, + { label: 'image/tiff', value: 'image/tiff' }, + { label: 'image/webp', value: 'image/webp' }, + { label: 'image/x-icon', value: 'image/x-icon' } + ], + props: { + multiple: true + } + }, + { + type: 'inputNumber', + field: 'fileSize', + title: '大小限制(MB)', + value: 5, + props: { min: 0 } + }, + { + type: 'inputNumber', + field: 'limit', + title: '数量限制', + value: 5, + props: { min: 0 } + }, + { + type: 'input', + field: 'height', + title: '组件高度', + value: '150px' + }, + { + type: 'input', + field: 'width', + title: '组件宽度', + value: '150px' + }, + { + type: 'input', + field: 'borderradius', + title: '组件边框圆角', + value: '8px' + } + ]) + } + } +} diff --git a/yshop-drink-vue3/src/components/FormCreate/src/type/index.ts b/yshop-drink-vue3/src/components/FormCreate/src/type/index.ts new file mode 100644 index 0000000..42dccc7 --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/type/index.ts @@ -0,0 +1,50 @@ +import { Rule } from '@form-create/element-ui' //左侧拖拽按钮 + +// 左侧拖拽按钮 +export interface MenuItem { + label: string + name: string + icon: string +} + +// 左侧拖拽按钮分类 +export interface Menu { + title: string + name: string + list: MenuItem[] +} + +export interface MenuList extends Array

    {} + +// 拖拽组件的规则 +export interface DragRule { + icon: string + name: string + label: string + children?: string + inside?: true + drag?: true | String + dragBtn?: false + mask?: false + + rule(): Rule + + props(v: any, v1: any): Rule[] +} + +// 通用下拉组件 Props 类型 +export interface ApiSelectProps { + name: string // 组件名称 + labelField?: string // 选项标签 + valueField?: string // 选项的值 + url?: string // url 接口 + isDict?: boolean // 是否字典选择器 +} + +// 选择组件规则配置类型 +export interface SelectRuleOption { + label: string // label 名称 + name: string // 组件名称 + icon: string // 组件图标 + props?: any[] // 组件规则 +} diff --git a/yshop-drink-vue3/src/components/FormCreate/src/useFormCreateDesigner.ts b/yshop-drink-vue3/src/components/FormCreate/src/useFormCreateDesigner.ts new file mode 100644 index 0000000..69c8f31 --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/useFormCreateDesigner.ts @@ -0,0 +1,100 @@ +import { + useDictSelectRule, + useEditorRule, + useSelectRule, + useUploadFileRule, + useUploadImgRule, + useUploadImgsRule +} from './config' +import { Ref } from 'vue' +import { Menu } from '@/components/FormCreate/src/type' +import { apiSelectRule } from '@/components/FormCreate/src/config/selectRule' + +/** + * 表单设计器增强 hook + * 新增 + * - 文件上传 + * - 单图上传 + * - 多图上传 + * - 字典选择器 + * - 用户选择器 + * - 部门选择器 + * - 富文本 + */ +export const useFormCreateDesigner = async (designer: Ref) => { + const editorRule = useEditorRule() + const uploadFileRule = useUploadFileRule() + const uploadImgRule = useUploadImgRule() + const uploadImgsRule = useUploadImgsRule() + + /** + * 构建表单组件 + */ + const buildFormComponents = () => { + // 移除自带的上传组件规则,使用 uploadFileRule、uploadImgRule、uploadImgsRule 替代 + designer.value?.removeMenuItem('upload') + // 移除自带的富文本组件规则,使用 editorRule 替代 + designer.value?.removeMenuItem('fc-editor') + const components = [editorRule, uploadFileRule, uploadImgRule, uploadImgsRule] + components.forEach((component) => { + // 插入组件规则 + designer.value?.addComponent(component) + // 插入拖拽按钮到 `main` 分类下 + designer.value?.appendMenuItem('main', { + icon: component.icon, + name: component.name, + label: component.label + }) + }) + } + + const userSelectRule = useSelectRule({ + name: 'UserSelect', + label: '用户选择器', + icon: 'icon-user-o' + }) + const deptSelectRule = useSelectRule({ + name: 'DeptSelect', + label: '部门选择器', + icon: 'icon-address-card-o' + }) + const dictSelectRule = useDictSelectRule() + const apiSelectRule0 = useSelectRule({ + name: 'ApiSelect', + label: '接口选择器', + icon: 'icon-server', + props: [...apiSelectRule] + }) + + /** + * 构建系统字段菜单 + */ + const buildSystemMenu = () => { + // 移除自带的下拉选择器组件,使用 currencySelectRule 替代 + designer.value?.removeMenuItem('select') + designer.value?.removeMenuItem('radio') + designer.value?.removeMenuItem('checkbox') + const components = [userSelectRule, deptSelectRule, dictSelectRule, apiSelectRule0] + const menu: Menu = { + name: 'system', + title: '系统字段', + list: components.map((component) => { + // 插入组件规则 + designer.value?.addComponent(component) + // 插入拖拽按钮到 `system` 分类下 + return { + icon: component.icon, + name: component.name, + label: component.label + } + }) + } + designer.value?.addMenu(menu) + } + + onMounted(async () => { + await nextTick() + buildFormComponents() + buildSystemMenu() + }) +} diff --git a/yshop-drink-vue3/src/components/FormCreate/src/utils/index.ts b/yshop-drink-vue3/src/components/FormCreate/src/utils/index.ts new file mode 100644 index 0000000..e548098 --- /dev/null +++ b/yshop-drink-vue3/src/components/FormCreate/src/utils/index.ts @@ -0,0 +1,79 @@ +// TODO puhui999: 借鉴一下 form-create-designer utils 方法 🤣 (导入不了只能先 copy 过来用下) +export function makeRequiredRule() { + return { + type: 'Required', + field: 'formCreate$required', + title: '是否必填' + } +} + +export const localeProps = (t, prefix, rules) => { + return rules.map((rule) => { + if (rule.field === 'formCreate$required') { + rule.title = t('props.required') || rule.title + } else if (rule.field && rule.field !== '_optionType') { + rule.title = t('components.' + prefix + '.' + rule.field) || rule.title + } + return rule + }) +} + +export function upper(str) { + return str.replace(str[0], str[0].toLocaleUpperCase()) +} + +export function makeOptionsRule(t, to, userOptions) { + console.log(userOptions[0]) + const options = [ + { label: t('props.optionsType.struct'), value: 0 }, + { label: t('props.optionsType.json'), value: 1 }, + { label: '用户数据', value: 2 } + ] + + const control = [ + { + value: 0, + rule: [ + { + type: 'TableOptions', + field: 'formCreate' + upper(to).replace('.', '>'), + props: { defaultValue: [] } + } + ] + }, + { + value: 1, + rule: [ + { + type: 'Struct', + field: 'formCreate' + upper(to).replace('.', '>'), + props: { defaultValue: [] } + } + ] + }, + { + value: 2, + rule: [ + { + type: 'TableOptions', + field: 'formCreate' + upper(to).replace('.', '>'), + props: { modelValue: [] } + } + ] + } + ] + options.splice(0, 0) + control.push() + + return { + type: 'radio', + title: t('props.options'), + field: '_optionType', + value: 0, + options, + props: { + type: 'button' + }, + control + } +} diff --git a/yshop-drink-vue3/src/components/Highlight/index.ts b/yshop-drink-vue3/src/components/Highlight/index.ts new file mode 100644 index 0000000..3e2d9ed --- /dev/null +++ b/yshop-drink-vue3/src/components/Highlight/index.ts @@ -0,0 +1,3 @@ +import Highlight from './src/Highlight.vue' + +export { Highlight } diff --git a/yshop-drink-vue3/src/components/Highlight/src/Highlight.vue b/yshop-drink-vue3/src/components/Highlight/src/Highlight.vue new file mode 100644 index 0000000..ef923a9 --- /dev/null +++ b/yshop-drink-vue3/src/components/Highlight/src/Highlight.vue @@ -0,0 +1,65 @@ + diff --git a/yshop-drink-vue3/src/components/IFrame/index.ts b/yshop-drink-vue3/src/components/IFrame/index.ts new file mode 100644 index 0000000..9f8cf24 --- /dev/null +++ b/yshop-drink-vue3/src/components/IFrame/index.ts @@ -0,0 +1,3 @@ +import IFrame from './src/IFrame.vue' + +export { IFrame } diff --git a/yshop-drink-vue3/src/components/IFrame/src/IFrame.vue b/yshop-drink-vue3/src/components/IFrame/src/IFrame.vue new file mode 100644 index 0000000..19de51a --- /dev/null +++ b/yshop-drink-vue3/src/components/IFrame/src/IFrame.vue @@ -0,0 +1,32 @@ + + diff --git a/yshop-drink-vue3/src/components/Icon/index.ts b/yshop-drink-vue3/src/components/Icon/index.ts new file mode 100644 index 0000000..33d1de3 --- /dev/null +++ b/yshop-drink-vue3/src/components/Icon/index.ts @@ -0,0 +1,4 @@ +import Icon from './src/Icon.vue' +import IconSelect from './src/IconSelect.vue' + +export { Icon, IconSelect } diff --git a/yshop-drink-vue3/src/components/Icon/src/Icon.vue b/yshop-drink-vue3/src/components/Icon/src/Icon.vue new file mode 100644 index 0000000..4246539 --- /dev/null +++ b/yshop-drink-vue3/src/components/Icon/src/Icon.vue @@ -0,0 +1,86 @@ + + + diff --git a/yshop-drink-vue3/src/components/Icon/src/IconSelect.vue b/yshop-drink-vue3/src/components/Icon/src/IconSelect.vue new file mode 100644 index 0000000..d4a5b07 --- /dev/null +++ b/yshop-drink-vue3/src/components/Icon/src/IconSelect.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/Icon/src/data.ts b/yshop-drink-vue3/src/components/Icon/src/data.ts new file mode 100644 index 0000000..2a4ed5a --- /dev/null +++ b/yshop-drink-vue3/src/components/Icon/src/data.ts @@ -0,0 +1,1961 @@ +export const IconJson = { + 'ep:': [ + 'add-location', + 'aim', + 'alarm-clock', + 'apple', + 'arrow-down', + 'arrow-down-bold', + 'arrow-left', + 'arrow-left-bold', + 'arrow-right', + 'arrow-right-bold', + 'arrow-up', + 'arrow-up-bold', + 'avatar', + 'back', + 'baseball', + 'basketball', + 'bell', + 'bell-filled', + 'bicycle', + 'bottom', + 'bottom-left', + 'bottom-right', + 'bowl', + 'box', + 'briefcase', + 'brush', + 'brush-filled', + 'burger', + 'calendar', + 'camera', + 'camera-filled', + 'caret-bottom', + 'caret-left', + 'caret-right', + 'caret-top', + 'cellphone', + 'chat-dot-round', + 'chat-dot-square', + 'chat-line-round', + 'chat-line-square', + 'chat-round', + 'chat-square', + 'check', + 'checked', + 'cherry', + 'chicken', + 'circle-check', + 'circle-check-filled', + 'circle-close', + 'circle-close-filled', + 'circle-plus', + 'circle-plus-filled', + 'clock', + 'close', + 'close-bold', + 'cloudy', + 'coffee', + 'coffee-cup', + 'coin', + 'cold-drink', + 'collection', + 'collection-tag', + 'comment', + 'compass', + 'connection', + 'coordinate', + 'copy-document', + 'cpu', + 'credit-card', + 'crop', + 'd-arrow-left', + 'd-arrow-right', + 'd-caret', + 'data-analysis', + 'data-board', + 'data-line', + 'delete', + 'delete-filled', + 'delete-location', + 'dessert', + 'discount', + 'dish', + 'dish-dot', + 'document', + 'document-add', + 'document-checked', + 'document-copy', + 'document-delete', + 'document-remove', + 'download', + 'drizzling', + 'edit', + 'edit-pen', + 'eleme', + 'eleme-filled', + 'expand', + 'failed', + 'female', + 'files', + 'film', + 'filter', + 'finished', + 'first-aid-kit', + 'flag', + 'fold', + 'folder', + 'folder-add', + 'folder-checked', + 'folder-delete', + 'folder-opened', + 'folder-remove', + 'food', + 'football', + 'fork-spoon', + 'fries', + 'full-screen', + 'goblet', + 'goblet-full', + 'goblet-square', + 'goblet-square-full', + 'goods', + 'goods-filled', + 'grape', + 'grid', + 'guide', + 'headset', + 'help', + 'help-filled', + 'histogram', + 'home-filled', + 'hot-water', + 'house', + 'ice-cream', + 'ice-cream-round', + 'ice-cream-square', + 'ice-drink', + 'ice-tea', + 'info-filled', + 'iphone', + 'key', + 'knife-fork', + 'lightning', + 'link', + 'list', + 'loading', + 'location', + 'location-filled', + 'location-information', + 'lock', + 'lollipop', + 'magic-stick', + 'magnet', + 'male', + 'management', + 'map-location', + 'medal', + 'menu', + 'message', + 'message-box', + 'mic', + 'microphone', + 'milk-tea', + 'minus', + 'money', + 'monitor', + 'moon', + 'moon-night', + 'more', + 'more-filled', + 'mostly-cloudy', + 'mouse', + 'mug', + 'mute', + 'mute-notification', + 'no-smoking', + 'notebook', + 'notification', + 'odometer', + 'office-building', + 'open', + 'operation', + 'opportunity', + 'orange', + 'paperclip', + 'partly-cloudy', + 'pear', + 'phone', + 'phone-filled', + 'picture', + 'picture-filled', + 'picture-rounded', + 'pie-chart', + 'place', + 'platform', + 'plus', + 'pointer', + 'position', + 'postcard', + 'pouring', + 'present', + 'price-tag', + 'printer', + 'promotion', + 'question-filled', + 'rank', + 'reading', + 'reading-lamp', + 'refresh', + 'refresh-left', + 'refresh-right', + 'refrigerator', + 'remove', + 'remove-filled', + 'right', + 'scale-to-original', + 'school', + 'scissor', + 'search', + 'select', + 'sell', + 'semi-select', + 'service', + 'set-up', + 'setting', + 'share', + 'ship', + 'shop', + 'shopping-bag', + 'shopping-cart', + 'shopping-cart-full', + 'smoking', + 'soccer', + 'sold-out', + 'sort', + 'sort-down', + 'sort-up', + 'stamp', + 'star', + 'star-filled', + 'stopwatch', + 'success-filled', + 'sugar', + 'suitcase', + 'sunny', + 'sunrise', + 'sunset', + 'switch', + 'switch-button', + 'takeaway-box', + 'ticket', + 'tickets', + 'timer', + 'toilet-paper', + 'tools', + 'top', + 'top-left', + 'top-right', + 'trend-charts', + 'trophy', + 'turn-off', + 'umbrella', + 'unlock', + 'upload', + 'upload-filled', + 'user', + 'user-filled', + 'van', + 'video-camera', + 'video-camera-filled', + 'video-pause', + 'video-play', + 'view', + 'wallet', + 'wallet-filled', + 'warning', + 'warning-filled', + 'watch', + 'watermelon', + 'wind-power', + 'zoom-in', + 'zoom-out' + ], + 'fa:': [ + '500px', + 'address-book', + 'address-book-o', + 'address-card', + 'address-card-o', + 'adjust', + 'adn', + 'align-center', + 'align-justify', + 'align-left', + 'amazon', + 'ambulance', + 'american-sign-language-interpreting', + 'anchor', + 'android', + 'angellist', + 'angle-double-left', + 'angle-double-up', + 'angle-down', + 'angle-left', + 'angle-up', + 'apple', + 'archive', + 'area-chart', + 'arrow-circle-left', + 'arrow-circle-o-left', + 'arrow-circle-o-up', + 'arrow-circle-up', + 'arrow-left', + 'arrow-up', + 'arrows', + 'arrows-alt', + 'arrows-h', + 'arrows-v', + 'assistive-listening-systems', + 'asterisk', + 'at', + 'audio-description', + 'automobile', + 'backward', + 'balance-scale', + 'ban', + 'bandcamp', + 'bank', + 'bar-chart', + 'barcode', + 'bars', + 'bath', + 'battery', + 'battery-0', + 'battery-1', + 'battery-2', + 'battery-3', + 'bed', + 'beer', + 'behance', + 'behance-square', + 'bell', + 'bell-o', + 'bell-slash', + 'bell-slash-o', + 'bicycle', + 'binoculars', + 'birthday-cake', + 'bitbucket', + 'bitbucket-square', + 'bitcoin', + 'black-tie', + 'blind', + 'bluetooth', + 'bluetooth-b', + 'bold', + 'bolt', + 'bomb', + 'book', + 'bookmark', + 'bookmark-o', + 'braille', + 'briefcase', + 'bug', + 'building', + 'building-o', + 'bullhorn', + 'bullseye', + 'bus', + 'buysellads', + 'cab', + 'calculator', + 'calendar', + 'calendar-check-o', + 'calendar-minus-o', + 'calendar-o', + 'calendar-plus-o', + 'calendar-times-o', + 'camera', + 'camera-retro', + 'caret-down', + 'caret-left', + 'caret-square-o-left', + 'caret-square-o-up', + 'caret-up', + 'cart-arrow-down', + 'cart-plus', + 'cc', + 'cc-amex', + 'cc-diners-club', + 'cc-discover', + 'cc-jcb', + 'cc-mastercard', + 'cc-paypal', + 'cc-stripe', + 'cc-visa', + 'certificate', + 'chain', + 'chain-broken', + 'check', + 'check-circle', + 'check-circle-o', + 'check-square', + 'check-square-o', + 'chevron-circle-left', + 'chevron-circle-up', + 'chevron-down', + 'chevron-left', + 'chevron-up', + 'child', + 'chrome', + 'circle', + 'circle-o', + 'circle-o-notch', + 'circle-thin', + 'clipboard', + 'clock-o', + 'clone', + 'close', + 'cloud', + 'cloud-download', + 'cloud-upload', + 'cny', + 'code', + 'code-fork', + 'codepen', + 'codiepie', + 'coffee', + 'cog', + 'cogs', + 'columns', + 'comment', + 'comment-o', + 'commenting', + 'commenting-o', + 'comments', + 'comments-o', + 'compass', + 'compress', + 'connectdevelop', + 'contao', + 'copy', + 'copyright', + 'creative-commons', + 'credit-card', + 'credit-card-alt', + 'crop', + 'crosshairs', + 'css3', + 'cube', + 'cubes', + 'cut', + 'cutlery', + 'dashboard', + 'dashcube', + 'database', + 'deaf', + 'dedent', + 'delicious', + 'desktop', + 'deviantart', + 'diamond', + 'digg', + 'dollar', + 'dot-circle-o', + 'download', + 'dribbble', + 'drivers-license', + 'drivers-license-o', + 'dropbox', + 'drupal', + 'edge', + 'edit', + 'eercast', + 'eject', + 'ellipsis-h', + 'ellipsis-v', + 'empire', + 'envelope', + 'envelope-o', + 'envelope-open', + 'envelope-open-o', + 'envelope-square', + 'envira', + 'eraser', + 'etsy', + 'eur', + 'exchange', + 'exclamation', + 'exclamation-circle', + 'exclamation-triangle', + 'expand', + 'expeditedssl', + 'external-link', + 'external-link-square', + 'eye', + 'eye-slash', + 'eyedropper', + 'fa', + 'facebook', + 'facebook-official', + 'facebook-square', + 'fast-backward', + 'fax', + 'feed', + 'female', + 'fighter-jet', + 'file', + 'file-archive-o', + 'file-audio-o', + 'file-code-o', + 'file-excel-o', + 'file-image-o', + 'file-movie-o', + 'file-o', + 'file-pdf-o', + 'file-powerpoint-o', + 'file-text', + 'file-text-o', + 'file-word-o', + 'film', + 'filter', + 'fire', + 'fire-extinguisher', + 'firefox', + 'first-order', + 'flag', + 'flag-checkered', + 'flag-o', + 'flask', + 'flickr', + 'floppy-o', + 'folder', + 'folder-o', + 'folder-open', + 'folder-open-o', + 'font', + 'fonticons', + 'fort-awesome', + 'forumbee', + 'foursquare', + 'free-code-camp', + 'frown-o', + 'futbol-o', + 'gamepad', + 'gavel', + 'gbp', + 'genderless', + 'get-pocket', + 'gg', + 'gg-circle', + 'gift', + 'git', + 'git-square', + 'github', + 'github-alt', + 'github-square', + 'gitlab', + 'gittip', + 'glass', + 'glide', + 'glide-g', + 'globe', + 'google', + 'google-plus', + 'google-plus-circle', + 'google-plus-square', + 'google-wallet', + 'graduation-cap', + 'grav', + 'group', + 'h-square', + 'hacker-news', + 'hand-grab-o', + 'hand-lizard-o', + 'hand-o-left', + 'hand-o-up', + 'hand-paper-o', + 'hand-peace-o', + 'hand-pointer-o', + 'hand-scissors-o', + 'hand-spock-o', + 'handshake-o', + 'hashtag', + 'hdd-o', + 'header', + 'headphones', + 'heart', + 'heart-o', + 'heartbeat', + 'history', + 'home', + 'hospital-o', + 'hourglass', + 'hourglass-1', + 'hourglass-2', + 'hourglass-3', + 'hourglass-o', + 'houzz', + 'html5', + 'i-cursor', + 'id-badge', + 'ils', + 'image', + 'imdb', + 'inbox', + 'indent', + 'industry', + 'info', + 'info-circle', + 'inr', + 'instagram', + 'internet-explorer', + 'intersex', + 'ioxhost', + 'italic', + 'joomla', + 'jsfiddle', + 'key', + 'keyboard-o', + 'krw', + 'language', + 'laptop', + 'lastfm', + 'lastfm-square', + 'leaf', + 'leanpub', + 'lemon-o', + 'level-up', + 'life-bouy', + 'lightbulb-o', + 'line-chart', + 'linkedin', + 'linkedin-square', + 'linode', + 'linux', + 'list', + 'list-alt', + 'list-ol', + 'list-ul', + 'location-arrow', + 'lock', + 'long-arrow-left', + 'long-arrow-up', + 'low-vision', + 'magic', + 'magnet', + 'mail-forward', + 'mail-reply', + 'mail-reply-all', + 'male', + 'map', + 'map-marker', + 'map-o', + 'map-pin', + 'map-signs', + 'mars', + 'mars-double', + 'mars-stroke', + 'mars-stroke-h', + 'mars-stroke-v', + 'maxcdn', + 'meanpath', + 'medium', + 'medkit', + 'meetup', + 'meh-o', + 'mercury', + 'microchip', + 'microphone', + 'microphone-slash', + 'minus', + 'minus-circle', + 'minus-square', + 'minus-square-o', + 'mixcloud', + 'mobile', + 'modx', + 'money', + 'moon-o', + 'motorcycle', + 'mouse-pointer', + 'music', + 'neuter', + 'newspaper-o', + 'object-group', + 'object-ungroup', + 'odnoklassniki', + 'odnoklassniki-square', + 'opencart', + 'openid', + 'opera', + 'optin-monster', + 'pagelines', + 'paint-brush', + 'paper-plane', + 'paper-plane-o', + 'paperclip', + 'paragraph', + 'pause', + 'pause-circle', + 'pause-circle-o', + 'paw', + 'paypal', + 'pencil', + 'pencil-square', + 'percent', + 'phone', + 'phone-square', + 'pie-chart', + 'pied-piper', + 'pied-piper-alt', + 'pied-piper-pp', + 'pinterest', + 'pinterest-p', + 'pinterest-square', + 'plane', + 'play', + 'play-circle', + 'play-circle-o', + 'plug', + 'plus', + 'plus-circle', + 'plus-square', + 'plus-square-o', + 'podcast', + 'power-off', + 'print', + 'product-hunt', + 'puzzle-piece', + 'qq', + 'qrcode', + 'question', + 'question-circle', + 'question-circle-o', + 'quora', + 'quote-left', + 'quote-right', + 'ra', + 'random', + 'ravelry', + 'recycle', + 'reddit', + 'reddit-alien', + 'reddit-square', + 'refresh', + 'registered', + 'renren', + 'repeat', + 'retweet', + 'road', + 'rocket', + 'rotate-left', + 'rouble', + 'rss-square', + 'safari', + 'scribd', + 'search', + 'search-minus', + 'search-plus', + 'sellsy', + 'server', + 'share-alt', + 'share-alt-square', + 'share-square', + 'share-square-o', + 'shield', + 'ship', + 'shirtsinbulk', + 'shopping-bag', + 'shopping-basket', + 'shopping-cart', + 'shower', + 'sign-in', + 'sign-language', + 'sign-out', + 'signal', + 'simplybuilt', + 'sitemap', + 'skyatlas', + 'skype', + 'slack', + 'sliders', + 'slideshare', + 'smile-o', + 'snapchat', + 'snapchat-ghost', + 'snapchat-square', + 'snowflake-o', + 'sort', + 'sort-alpha-asc', + 'sort-alpha-desc', + 'sort-amount-asc', + 'sort-amount-desc', + 'sort-asc', + 'sort-numeric-asc', + 'sort-numeric-desc', + 'soundcloud', + 'space-shuttle', + 'spinner', + 'spoon', + 'spotify', + 'square', + 'square-o', + 'stack-exchange', + 'stack-overflow', + 'star', + 'star-half', + 'star-half-empty', + 'star-o', + 'steam', + 'steam-square', + 'step-backward', + 'stethoscope', + 'sticky-note', + 'sticky-note-o', + 'stop', + 'stop-circle', + 'stop-circle-o', + 'street-view', + 'strikethrough', + 'stumbleupon', + 'stumbleupon-circle', + 'subscript', + 'subway', + 'suitcase', + 'sun-o', + 'superpowers', + 'superscript', + 'table', + 'tablet', + 'tag', + 'tags', + 'tasks', + 'telegram', + 'television', + 'tencent-weibo', + 'terminal', + 'text-height', + 'text-width', + 'th', + 'th-large', + 'th-list', + 'themeisle', + 'thermometer', + 'thermometer-0', + 'thermometer-1', + 'thermometer-2', + 'thermometer-3', + 'thumb-tack', + 'thumbs-down', + 'thumbs-o-up', + 'thumbs-up', + 'ticket', + 'times-circle', + 'times-circle-o', + 'times-rectangle', + 'times-rectangle-o', + 'tint', + 'toggle-off', + 'toggle-on', + 'trademark', + 'train', + 'transgender-alt', + 'trash', + 'trash-o', + 'tree', + 'trello', + 'tripadvisor', + 'trophy', + 'truck', + 'try', + 'tty', + 'tumblr', + 'tumblr-square', + 'twitch', + 'twitter', + 'twitter-square', + 'umbrella', + 'underline', + 'universal-access', + 'unlock', + 'unlock-alt', + 'upload', + 'usb', + 'user', + 'user-circle', + 'user-circle-o', + 'user-md', + 'user-o', + 'user-plus', + 'user-secret', + 'user-times', + 'venus', + 'venus-double', + 'venus-mars', + 'viacoin', + 'viadeo', + 'viadeo-square', + 'video-camera', + 'vimeo', + 'vimeo-square', + 'vine', + 'vk', + 'volume-control-phone', + 'volume-down', + 'volume-off', + 'volume-up', + 'wechat', + 'weibo', + 'whatsapp', + 'wheelchair', + 'wheelchair-alt', + 'wifi', + 'wikipedia-w', + 'window-maximize', + 'window-minimize', + 'window-restore', + 'windows', + 'wordpress', + 'wpbeginner', + 'wpexplorer', + 'wpforms', + 'wrench', + 'xing', + 'xing-square', + 'y-combinator', + 'yahoo', + 'yelp', + 'yoast', + 'youtube', + 'youtube-play', + 'youtube-square' + ], + 'fa-solid:': [ + 'abacus', + 'ad', + 'address-book', + 'address-card', + 'adjust', + 'air-freshener', + 'align-center', + 'align-justify', + 'align-left', + 'align-right', + 'allergies', + 'ambulance', + 'american-sign-language-interpreting', + 'anchor', + 'angle-double-down', + 'angle-double-left', + 'angle-double-right', + 'angle-double-up', + 'angle-down', + 'angle-left', + 'angle-right', + 'angle-up', + 'angry', + 'ankh', + 'apple-alt', + 'archive', + 'archway', + 'arrow-alt-circle-down', + 'arrow-alt-circle-left', + 'arrow-alt-circle-right', + 'arrow-alt-circle-up', + 'arrow-circle-down', + 'arrow-circle-left', + 'arrow-circle-right', + 'arrow-circle-up', + 'arrow-down', + 'arrow-left', + 'arrow-right', + 'arrow-up', + 'arrows-alt', + 'arrows-alt-h', + 'arrows-alt-v', + 'assistive-listening-systems', + 'asterisk', + 'at', + 'atlas', + 'atom', + 'audio-description', + 'award', + 'baby', + 'baby-carriage', + 'backspace', + 'backward', + 'bacon', + 'bacteria', + 'bacterium', + 'bahai', + 'balance-scale', + 'balance-scale-left', + 'balance-scale-right', + 'ban', + 'band-aid', + 'barcode', + 'bars', + 'baseball-ball', + 'basketball-ball', + 'bath', + 'battery-empty', + 'battery-full', + 'battery-half', + 'battery-quarter', + 'battery-three-quarters', + 'bed', + 'beer', + 'bell', + 'bell-slash', + 'bezier-curve', + 'bible', + 'bicycle', + 'biking', + 'binoculars', + 'biohazard', + 'birthday-cake', + 'blender', + 'blender-phone', + 'blind', + 'blog', + 'bold', + 'bolt', + 'bomb', + 'bone', + 'bong', + 'book', + 'book-dead', + 'book-medical', + 'book-open', + 'book-reader', + 'bookmark', + 'border-all', + 'border-none', + 'border-style', + 'bowling-ball', + 'box', + 'box-open', + 'box-tissue', + 'boxes', + 'braille', + 'brain', + 'bread-slice', + 'briefcase', + 'briefcase-medical', + 'broadcast-tower', + 'broom', + 'brush', + 'bug', + 'building', + 'bullhorn', + 'bullseye', + 'burn', + 'bus', + 'bus-alt', + 'business-time', + 'calculator', + 'calculator-alt', + 'calendar', + 'calendar-alt', + 'calendar-check', + 'calendar-day', + 'calendar-minus', + 'calendar-plus', + 'calendar-times', + 'calendar-week', + 'camera', + 'camera-retro', + 'campground', + 'candy-cane', + 'cannabis', + 'capsules', + 'car', + 'car-alt', + 'car-battery', + 'car-crash', + 'car-side', + 'caravan', + 'caret-down', + 'caret-left', + 'caret-right', + 'caret-square-down', + 'caret-square-left', + 'caret-square-right', + 'caret-square-up', + 'caret-up', + 'carrot', + 'cart-arrow-down', + 'cart-plus', + 'cash-register', + 'cat', + 'certificate', + 'chair', + 'chalkboard', + 'chalkboard-teacher', + 'charging-station', + 'chart-area', + 'chart-bar', + 'chart-line', + 'chart-pie', + 'check', + 'check-circle', + 'check-double', + 'check-square', + 'cheese', + 'chess', + 'chess-bishop', + 'chess-board', + 'chess-king', + 'chess-knight', + 'chess-pawn', + 'chess-queen', + 'chess-rook', + 'chevron-circle-down', + 'chevron-circle-left', + 'chevron-circle-right', + 'chevron-circle-up', + 'chevron-down', + 'chevron-left', + 'chevron-right', + 'chevron-up', + 'child', + 'church', + 'circle', + 'circle-notch', + 'city', + 'clinic-medical', + 'clipboard', + 'clipboard-check', + 'clipboard-list', + 'clock', + 'clone', + 'closed-captioning', + 'cloud', + 'cloud-download-alt', + 'cloud-meatball', + 'cloud-moon', + 'cloud-moon-rain', + 'cloud-rain', + 'cloud-showers-heavy', + 'cloud-sun', + 'cloud-sun-rain', + 'cloud-upload-alt', + 'cocktail', + 'code', + 'code-branch', + 'coffee', + 'cog', + 'cogs', + 'coins', + 'columns', + 'comment', + 'comment-alt', + 'comment-dollar', + 'comment-dots', + 'comment-medical', + 'comment-slash', + 'comments', + 'comments-dollar', + 'compact-disc', + 'compass', + 'compress', + 'compress-alt', + 'compress-arrows-alt', + 'concierge-bell', + 'cookie', + 'cookie-bite', + 'copy', + 'copyright', + 'couch', + 'credit-card', + 'crop', + 'crop-alt', + 'cross', + 'crosshairs', + 'crow', + 'crown', + 'crutch', + 'cube', + 'cubes', + 'cut', + 'database', + 'deaf', + 'democrat', + 'desktop', + 'dharmachakra', + 'diagnoses', + 'dice', + 'dice-d20', + 'dice-d6', + 'dice-five', + 'dice-four', + 'dice-one', + 'dice-six', + 'dice-three', + 'dice-two', + 'digital-tachograph', + 'directions', + 'disease', + 'divide', + 'dizzy', + 'dna', + 'dog', + 'dollar-sign', + 'dolly', + 'dolly-flatbed', + 'donate', + 'door-closed', + 'door-open', + 'dot-circle', + 'dove', + 'download', + 'drafting-compass', + 'dragon', + 'draw-polygon', + 'drum', + 'drum-steelpan', + 'drumstick-bite', + 'dumbbell', + 'dumpster', + 'dumpster-fire', + 'dungeon', + 'edit', + 'egg', + 'eject', + 'ellipsis-h', + 'ellipsis-v', + 'empty-set', + 'envelope', + 'envelope-open', + 'envelope-open-text', + 'envelope-square', + 'equals', + 'eraser', + 'ethernet', + 'euro-sign', + 'exchange-alt', + 'exclamation', + 'exclamation-circle', + 'exclamation-triangle', + 'expand', + 'expand-alt', + 'expand-arrows-alt', + 'external-link-alt', + 'external-link-square-alt', + 'eye', + 'eye-dropper', + 'eye-slash', + 'fan', + 'fast-backward', + 'fast-forward', + 'faucet', + 'fax', + 'feather', + 'feather-alt', + 'female', + 'fighter-jet', + 'file', + 'file-alt', + 'file-archive', + 'file-audio', + 'file-code', + 'file-contract', + 'file-csv', + 'file-download', + 'file-excel', + 'file-export', + 'file-image', + 'file-import', + 'file-invoice', + 'file-invoice-dollar', + 'file-medical', + 'file-medical-alt', + 'file-pdf', + 'file-powerpoint', + 'file-prescription', + 'file-signature', + 'file-upload', + 'file-video', + 'file-word', + 'fill', + 'fill-drip', + 'film', + 'filter', + 'fingerprint', + 'fire', + 'fire-alt', + 'fire-extinguisher', + 'first-aid', + 'fish', + 'fist-raised', + 'flag', + 'flag-checkered', + 'flag-usa', + 'flask', + 'flushed', + 'folder', + 'folder-minus', + 'folder-open', + 'folder-plus', + 'font', + 'football-ball', + 'forward', + 'frog', + 'frown', + 'frown-open', + 'function', + 'funnel-dollar', + 'futbol', + 'gamepad', + 'gas-pump', + 'gavel', + 'gem', + 'genderless', + 'ghost', + 'gift', + 'gifts', + 'glass-cheers', + 'glass-martini', + 'glass-martini-alt', + 'glass-whiskey', + 'glasses', + 'globe', + 'globe-africa', + 'globe-americas', + 'globe-asia', + 'globe-europe', + 'golf-ball', + 'gopuram', + 'graduation-cap', + 'greater-than', + 'greater-than-equal', + 'grimace', + 'grin', + 'grin-alt', + 'grin-beam', + 'grin-beam-sweat', + 'grin-hearts', + 'grin-squint', + 'grin-squint-tears', + 'grin-stars', + 'grin-tears', + 'grin-tongue', + 'grin-tongue-squint', + 'grin-tongue-wink', + 'grin-wink', + 'grip-horizontal', + 'grip-lines', + 'grip-lines-vertical', + 'grip-vertical', + 'guitar', + 'h-square', + 'hamburger', + 'hammer', + 'hamsa', + 'hand-holding', + 'hand-holding-heart', + 'hand-holding-medical', + 'hand-holding-usd', + 'hand-holding-water', + 'hand-lizard', + 'hand-middle-finger', + 'hand-paper', + 'hand-peace', + 'hand-point-down', + 'hand-point-left', + 'hand-point-right', + 'hand-point-up', + 'hand-pointer', + 'hand-rock', + 'hand-scissors', + 'hand-sparkles', + 'hand-spock', + 'hands', + 'hands-helping', + 'hands-wash', + 'handshake', + 'handshake-alt-slash', + 'handshake-slash', + 'hanukiah', + 'hard-hat', + 'hashtag', + 'hat-cowboy', + 'hat-cowboy-side', + 'hat-wizard', + 'hdd', + 'head-side-cough', + 'head-side-cough-slash', + 'head-side-mask', + 'head-side-virus', + 'heading', + 'headphones', + 'headphones-alt', + 'headset', + 'heart', + 'heart-broken', + 'heartbeat', + 'helicopter', + 'highlighter', + 'hiking', + 'hippo', + 'history', + 'hockey-puck', + 'holly-berry', + 'home', + 'horse', + 'horse-head', + 'hospital', + 'hospital-alt', + 'hospital-symbol', + 'hospital-user', + 'hot-tub', + 'hotdog', + 'hotel', + 'hourglass', + 'hourglass-end', + 'hourglass-half', + 'hourglass-start', + 'house-damage', + 'house-user', + 'hryvnia', + 'i-cursor', + 'ice-cream', + 'icicles', + 'icons', + 'id-badge', + 'id-card', + 'id-card-alt', + 'igloo', + 'image', + 'images', + 'inbox', + 'indent', + 'industry', + 'infinity', + 'info', + 'info-circle', + 'integral', + 'intersection', + 'italic', + 'jedi', + 'joint', + 'journal-whills', + 'kaaba', + 'key', + 'keyboard', + 'khanda', + 'kiss', + 'kiss-beam', + 'kiss-wink-heart', + 'kiwi-bird', + 'lambda', + 'landmark', + 'language', + 'laptop', + 'laptop-code', + 'laptop-house', + 'laptop-medical', + 'laugh', + 'laugh-beam', + 'laugh-squint', + 'laugh-wink', + 'layer-group', + 'leaf', + 'lemon', + 'less-than', + 'less-than-equal', + 'level-down-alt', + 'level-up-alt', + 'life-ring', + 'lightbulb', + 'link', + 'lira-sign', + 'list', + 'list-alt', + 'list-ol', + 'list-ul', + 'location-arrow', + 'lock', + 'lock-open', + 'long-arrow-alt-down', + 'long-arrow-alt-left', + 'long-arrow-alt-right', + 'long-arrow-alt-up', + 'low-vision', + 'luggage-cart', + 'lungs', + 'lungs-virus', + 'magic', + 'magnet', + 'mail-bulk', + 'male', + 'map', + 'map-marked', + 'map-marked-alt', + 'map-marker', + 'map-marker-alt', + 'map-pin', + 'map-signs', + 'marker', + 'mars', + 'mars-double', + 'mars-stroke', + 'mars-stroke-h', + 'mars-stroke-v', + 'mask', + 'medal', + 'medkit', + 'meh', + 'meh-blank', + 'meh-rolling-eyes', + 'memory', + 'menorah', + 'mercury', + 'meteor', + 'microchip', + 'microphone', + 'microphone-alt', + 'microphone-alt-slash', + 'microphone-slash', + 'microscope', + 'minus', + 'minus-circle', + 'minus-square', + 'mitten', + 'mobile', + 'mobile-alt', + 'money-bill', + 'money-bill-alt', + 'money-bill-wave', + 'money-bill-wave-alt', + 'money-check', + 'money-check-alt', + 'monument', + 'moon', + 'mortar-pestle', + 'mosque', + 'motorcycle', + 'mountain', + 'mouse', + 'mouse-pointer', + 'mug-hot', + 'music', + 'network-wired', + 'neuter', + 'newspaper', + 'not-equal', + 'notes-medical', + 'object-group', + 'object-ungroup', + 'oil-can', + 'om', + 'omega', + 'otter', + 'outdent', + 'pager', + 'paint-brush', + 'paint-roller', + 'palette', + 'pallet', + 'paper-plane', + 'paperclip', + 'parachute-box', + 'paragraph', + 'parking', + 'passport', + 'pastafarianism', + 'paste', + 'pause', + 'pause-circle', + 'paw', + 'peace', + 'pen', + 'pen-alt', + 'pen-fancy', + 'pen-nib', + 'pen-square', + 'pencil-alt', + 'pencil-ruler', + 'people-arrows', + 'people-carry', + 'pepper-hot', + 'percent', + 'percentage', + 'person-booth', + 'phone', + 'phone-alt', + 'phone-slash', + 'phone-square', + 'phone-square-alt', + 'phone-volume', + 'photo-video', + 'pi', + 'piggy-bank', + 'pills', + 'pizza-slice', + 'place-of-worship', + 'plane', + 'plane-arrival', + 'plane-departure', + 'plane-slash', + 'play', + 'play-circle', + 'plug', + 'plus', + 'plus-circle', + 'plus-square', + 'podcast', + 'poll', + 'poll-h', + 'poo', + 'poo-storm', + 'poop', + 'portrait', + 'pound-sign', + 'power-off', + 'pray', + 'praying-hands', + 'prescription', + 'prescription-bottle', + 'prescription-bottle-alt', + 'print', + 'procedures', + 'project-diagram', + 'pump-medical', + 'pump-soap', + 'puzzle-piece', + 'qrcode', + 'question', + 'question-circle', + 'quidditch', + 'quote-left', + 'quote-right', + 'quran', + 'radiation', + 'radiation-alt', + 'rainbow', + 'random', + 'receipt', + 'record-vinyl', + 'recycle', + 'redo', + 'redo-alt', + 'registered', + 'remove-format', + 'reply', + 'reply-all', + 'republican', + 'restroom', + 'retweet', + 'ribbon', + 'ring', + 'road', + 'robot', + 'rocket', + 'route', + 'rss', + 'rss-square', + 'ruble-sign', + 'ruler', + 'ruler-combined', + 'ruler-horizontal', + 'ruler-vertical', + 'running', + 'rupee-sign', + 'sad-cry', + 'sad-tear', + 'satellite', + 'satellite-dish', + 'save', + 'school', + 'screwdriver', + 'scroll', + 'sd-card', + 'search', + 'search-dollar', + 'search-location', + 'search-minus', + 'search-plus', + 'seedling', + 'server', + 'shapes', + 'share', + 'share-alt', + 'share-alt-square', + 'share-square', + 'shekel-sign', + 'shield-alt', + 'shield-virus', + 'ship', + 'shipping-fast', + 'shoe-prints', + 'shopping-bag', + 'shopping-basket', + 'shopping-cart', + 'shower', + 'shuttle-van', + 'sigma', + 'sign', + 'sign-in-alt', + 'sign-language', + 'sign-out-alt', + 'signal', + 'signal-alt', + 'signal-alt-slash', + 'signal-slash', + 'signature', + 'sim-card', + 'sink', + 'sitemap', + 'skating', + 'skiing', + 'skiing-nordic', + 'skull', + 'skull-crossbones', + 'slash', + 'sleigh', + 'sliders-h', + 'smile', + 'smile-beam', + 'smile-wink', + 'smog', + 'smoking', + 'smoking-ban', + 'sms', + 'snowboarding', + 'snowflake', + 'snowman', + 'snowplow', + 'soap', + 'socks', + 'solar-panel', + 'sort', + 'sort-alpha-down', + 'sort-alpha-down-alt', + 'sort-alpha-up', + 'sort-alpha-up-alt', + 'sort-amount-down', + 'sort-amount-down-alt', + 'sort-amount-up', + 'sort-amount-up-alt', + 'sort-down', + 'sort-numeric-down', + 'sort-numeric-down-alt', + 'sort-numeric-up', + 'sort-numeric-up-alt', + 'sort-up', + 'spa', + 'space-shuttle', + 'spell-check', + 'spider', + 'spinner', + 'splotch', + 'spray-can', + 'square', + 'square-full', + 'square-root', + 'square-root-alt', + 'stamp', + 'star', + 'star-and-crescent', + 'star-half', + 'star-half-alt', + 'star-of-david', + 'star-of-life', + 'step-backward', + 'step-forward', + 'stethoscope', + 'sticky-note', + 'stop', + 'stop-circle', + 'stopwatch', + 'stopwatch-20', + 'store', + 'store-alt', + 'store-alt-slash', + 'store-slash', + 'stream', + 'street-view', + 'strikethrough', + 'stroopwafel', + 'subscript', + 'subway', + 'suitcase', + 'suitcase-rolling', + 'sun', + 'superscript', + 'surprise', + 'swatchbook', + 'swimmer', + 'swimming-pool', + 'synagogue', + 'sync', + 'sync-alt', + 'syringe', + 'table', + 'table-tennis', + 'tablet', + 'tablet-alt', + 'tablets', + 'tachometer-alt', + 'tag', + 'tags', + 'tally', + 'tape', + 'tasks', + 'taxi', + 'teeth', + 'teeth-open', + 'temperature-high', + 'temperature-low', + 'tenge', + 'terminal', + 'text-height', + 'text-width', + 'th', + 'th-large', + 'th-list', + 'theater-masks', + 'thermometer', + 'thermometer-empty', + 'thermometer-full', + 'thermometer-half', + 'thermometer-quarter', + 'thermometer-three-quarters', + 'theta', + 'thumbs-down', + 'thumbs-up', + 'thumbtack', + 'ticket-alt', + 'tilde', + 'times', + 'times-circle', + 'tint', + 'tint-slash', + 'tired', + 'toggle-off', + 'toggle-on', + 'toilet', + 'toilet-paper', + 'toilet-paper-slash', + 'toolbox', + 'tools', + 'tooth', + 'torah', + 'torii-gate', + 'tractor', + 'trademark', + 'traffic-light', + 'trailer', + 'train', + 'tram', + 'transgender', + 'transgender-alt', + 'trash', + 'trash-alt', + 'trash-restore', + 'trash-restore-alt', + 'tree', + 'trophy', + 'truck', + 'truck-loading', + 'truck-monster', + 'truck-moving', + 'truck-pickup', + 'tshirt', + 'tty', + 'tv', + 'umbrella', + 'umbrella-beach', + 'underline', + 'undo', + 'undo-alt', + 'union', + 'universal-access', + 'university', + 'unlink', + 'unlock', + 'unlock-alt', + 'upload', + 'user', + 'user-alt', + 'user-alt-slash', + 'user-astronaut', + 'user-check', + 'user-circle', + 'user-clock', + 'user-cog', + 'user-edit', + 'user-friends', + 'user-graduate', + 'user-injured', + 'user-lock', + 'user-md', + 'user-minus', + 'user-ninja', + 'user-nurse', + 'user-plus', + 'user-secret', + 'user-shield', + 'user-slash', + 'user-tag', + 'user-tie', + 'user-times', + 'users', + 'users-cog', + 'users-slash', + 'utensil-spoon', + 'utensils', + 'value-absolute', + 'vector-square', + 'venus', + 'venus-double', + 'venus-mars', + 'vest', + 'vest-patches', + 'vial', + 'vials', + 'video', + 'video-slash', + 'vihara', + 'virus', + 'virus-slash', + 'viruses', + 'voicemail', + 'volleyball-ball', + 'volume', + 'volume-down', + 'volume-mute', + 'volume-off', + 'volume-slash', + 'volume-up', + 'vote-yea', + 'vr-cardboard', + 'walking', + 'wallet', + 'warehouse', + 'water', + 'wave-square', + 'weight', + 'weight-hanging', + 'wheelchair', + 'wifi', + 'wifi-slash', + 'wind', + 'window-close', + 'window-maximize', + 'window-minimize', + 'window-restore', + 'wine-bottle', + 'wine-glass', + 'wine-glass-alt', + 'won-sign', + 'wrench', + 'x-ray', + 'yen-sign', + 'yin-yang' + ] +} diff --git a/yshop-drink-vue3/src/components/ImageViewer/index.ts b/yshop-drink-vue3/src/components/ImageViewer/index.ts new file mode 100644 index 0000000..35764d6 --- /dev/null +++ b/yshop-drink-vue3/src/components/ImageViewer/index.ts @@ -0,0 +1,33 @@ +import ImageViewer from './src/ImageViewer.vue' +import { isClient } from '@/utils/is' +import { createVNode, render, VNode } from 'vue' +import { ImageViewerProps } from './src/types' + +let instance: Nullable = null + +export function createImageViewer(options: ImageViewerProps) { + if (!isClient) return + const { + urlList, + initialIndex = 0, + infinite = true, + hideOnClickModal = false, + teleported = false, + zIndex = 2000, + show = true + } = options + + const propsData: Partial = {} + const container = document.createElement('div') + propsData.urlList = urlList + propsData.initialIndex = initialIndex + propsData.infinite = infinite + propsData.hideOnClickModal = hideOnClickModal + propsData.teleported = teleported + propsData.zIndex = zIndex + propsData.show = show + + document.body.appendChild(container) + instance = createVNode(ImageViewer, propsData) + render(instance, container) +} diff --git a/yshop-drink-vue3/src/components/ImageViewer/src/ImageViewer.vue b/yshop-drink-vue3/src/components/ImageViewer/src/ImageViewer.vue new file mode 100644 index 0000000..c84d06b --- /dev/null +++ b/yshop-drink-vue3/src/components/ImageViewer/src/ImageViewer.vue @@ -0,0 +1,35 @@ + + + diff --git a/yshop-drink-vue3/src/components/ImageViewer/src/types.ts b/yshop-drink-vue3/src/components/ImageViewer/src/types.ts new file mode 100644 index 0000000..2fff4c0 --- /dev/null +++ b/yshop-drink-vue3/src/components/ImageViewer/src/types.ts @@ -0,0 +1,9 @@ +export interface ImageViewerProps { + urlList?: string[] + zIndex?: number + initialIndex?: number + infinite?: boolean + hideOnClickModal?: boolean + teleported?: boolean + show?: boolean +} diff --git a/yshop-drink-vue3/src/components/Infotip/index.ts b/yshop-drink-vue3/src/components/Infotip/index.ts new file mode 100644 index 0000000..413fa5f --- /dev/null +++ b/yshop-drink-vue3/src/components/Infotip/index.ts @@ -0,0 +1,3 @@ +import Infotip from './src/Infotip.vue' + +export { Infotip } diff --git a/yshop-drink-vue3/src/components/Infotip/src/Infotip.vue b/yshop-drink-vue3/src/components/Infotip/src/Infotip.vue new file mode 100644 index 0000000..0afd692 --- /dev/null +++ b/yshop-drink-vue3/src/components/Infotip/src/Infotip.vue @@ -0,0 +1,54 @@ + + + diff --git a/yshop-drink-vue3/src/components/InputPassword/index.ts b/yshop-drink-vue3/src/components/InputPassword/index.ts new file mode 100644 index 0000000..1dcc38e --- /dev/null +++ b/yshop-drink-vue3/src/components/InputPassword/index.ts @@ -0,0 +1,3 @@ +import InputPassword from './src/InputPassword.vue' + +export { InputPassword } diff --git a/yshop-drink-vue3/src/components/InputPassword/src/InputPassword.vue b/yshop-drink-vue3/src/components/InputPassword/src/InputPassword.vue new file mode 100644 index 0000000..b8c93e7 --- /dev/null +++ b/yshop-drink-vue3/src/components/InputPassword/src/InputPassword.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/InputWithColor/index.vue b/yshop-drink-vue3/src/components/InputWithColor/index.vue new file mode 100644 index 0000000..2bc5317 --- /dev/null +++ b/yshop-drink-vue3/src/components/InputWithColor/index.vue @@ -0,0 +1,59 @@ + + + + diff --git a/yshop-drink-vue3/src/components/MagicCubeEditor/index.vue b/yshop-drink-vue3/src/components/MagicCubeEditor/index.vue new file mode 100644 index 0000000..9b9a43c --- /dev/null +++ b/yshop-drink-vue3/src/components/MagicCubeEditor/index.vue @@ -0,0 +1,270 @@ + + + diff --git a/yshop-drink-vue3/src/components/MagicCubeEditor/util.ts b/yshop-drink-vue3/src/components/MagicCubeEditor/util.ts new file mode 100644 index 0000000..e7c6465 --- /dev/null +++ b/yshop-drink-vue3/src/components/MagicCubeEditor/util.ts @@ -0,0 +1,72 @@ +// 坐标点 +export interface Point { + x: number + y: number +} + +// 矩形 +export interface Rect { + // 左上角 X 轴坐标 + left: number + // 左上角 Y 轴坐标 + top: number + // 右下角 X 轴坐标 + right: number + // 右下角 Y 轴坐标 + bottom: number + // 矩形宽度 + width: number + // 矩形高度 + height: number +} + +/** + * 判断两个矩形是否重叠 + * @param a 矩形 A + * @param b 矩形 B + */ +export const isOverlap = (a: Rect, b: Rect): boolean => { + return ( + a.left < b.left + b.width && + a.left + a.width > b.left && + a.top < b.top + b.height && + a.height + a.top > b.top + ) +} +/** + * 检查坐标点是否在矩形内 + * @param hotArea 矩形 + * @param point 坐标 + */ +export const isContains = (hotArea: Rect, point: Point): boolean => { + return ( + point.x >= hotArea.left && + point.x < hotArea.right && + point.y >= hotArea.top && + point.y < hotArea.bottom + ) +} + +/** + * 在两个坐标点中间,创建一个矩形 + * + * 存在以下情况: + * 1. 两个坐标点是同一个位置,只占一个位置的正方形,宽高都为 1 + * 2. X 轴坐标相同,只占一行的矩形,高度为 1 + * 3. Y 轴坐标相同,只占一列的矩形,宽度为 1 + * 4. 多行多列的矩形 + * + * @param a 坐标点一 + * @param b 坐标点二 + */ +export const createRect = (a: Point, b: Point): Rect => { + // 计算矩形的范围 + const [left, left2] = [a.x, b.x].sort() + const [top, top2] = [a.y, b.y].sort() + const right = left2 + 1 + const bottom = top2 + 1 + const height = bottom - top + const width = right - left + + return { left, right, top, bottom, height, width } +} diff --git a/yshop-drink-vue3/src/components/Materials/index.ts b/yshop-drink-vue3/src/components/Materials/index.ts new file mode 100644 index 0000000..57bd8dc --- /dev/null +++ b/yshop-drink-vue3/src/components/Materials/index.ts @@ -0,0 +1,10 @@ +/* + * @Author: Gaoxs + * @Date: 2023-05-21 23:36:03 + * @LastEditors: Gaoxs + * @Description: + */ +import Materials from './src/Materials.vue' +import EditorMaterials from './src/EditorMaterials.vue' + +export { Materials, EditorMaterials } diff --git a/yshop-drink-vue3/src/components/Materials/src/Materials.vue b/yshop-drink-vue3/src/components/Materials/src/Materials.vue new file mode 100644 index 0000000..03a9379 --- /dev/null +++ b/yshop-drink-vue3/src/components/Materials/src/Materials.vue @@ -0,0 +1,514 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/Materials/src/editorMaterials.vue b/yshop-drink-vue3/src/components/Materials/src/editorMaterials.vue new file mode 100644 index 0000000..4f8a476 --- /dev/null +++ b/yshop-drink-vue3/src/components/Materials/src/editorMaterials.vue @@ -0,0 +1,411 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/OperateLogV2/index.ts b/yshop-drink-vue3/src/components/OperateLogV2/index.ts new file mode 100644 index 0000000..f69c222 --- /dev/null +++ b/yshop-drink-vue3/src/components/OperateLogV2/index.ts @@ -0,0 +1,3 @@ +import OperateLogV2 from './src/OperateLogV2.vue' + +export { OperateLogV2 } diff --git a/yshop-drink-vue3/src/components/OperateLogV2/src/OperateLogV2.vue b/yshop-drink-vue3/src/components/OperateLogV2/src/OperateLogV2.vue new file mode 100644 index 0000000..6acc1cc --- /dev/null +++ b/yshop-drink-vue3/src/components/OperateLogV2/src/OperateLogV2.vue @@ -0,0 +1,105 @@ + + + + + + diff --git a/yshop-drink-vue3/src/components/Pagination/index.vue b/yshop-drink-vue3/src/components/Pagination/index.vue new file mode 100644 index 0000000..644858c --- /dev/null +++ b/yshop-drink-vue3/src/components/Pagination/index.vue @@ -0,0 +1,87 @@ +,并使用 ts 重写 --> + + diff --git a/yshop-drink-vue3/src/components/Qrcode/index.ts b/yshop-drink-vue3/src/components/Qrcode/index.ts new file mode 100644 index 0000000..ce46161 --- /dev/null +++ b/yshop-drink-vue3/src/components/Qrcode/index.ts @@ -0,0 +1,3 @@ +import Qrcode from './src/Qrcode.vue' + +export { Qrcode } diff --git a/yshop-drink-vue3/src/components/Qrcode/src/Qrcode.vue b/yshop-drink-vue3/src/components/Qrcode/src/Qrcode.vue new file mode 100644 index 0000000..f0ce7b7 --- /dev/null +++ b/yshop-drink-vue3/src/components/Qrcode/src/Qrcode.vue @@ -0,0 +1,253 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/RouterSearch/index.vue b/yshop-drink-vue3/src/components/RouterSearch/index.vue new file mode 100644 index 0000000..c035242 --- /dev/null +++ b/yshop-drink-vue3/src/components/RouterSearch/index.vue @@ -0,0 +1,111 @@ + + + diff --git a/yshop-drink-vue3/src/components/Search/index.ts b/yshop-drink-vue3/src/components/Search/index.ts new file mode 100644 index 0000000..fcc6f16 --- /dev/null +++ b/yshop-drink-vue3/src/components/Search/index.ts @@ -0,0 +1,3 @@ +import Search from './src/Search.vue' + +export { Search } diff --git a/yshop-drink-vue3/src/components/Search/src/Search.vue b/yshop-drink-vue3/src/components/Search/src/Search.vue new file mode 100644 index 0000000..3f31fd3 --- /dev/null +++ b/yshop-drink-vue3/src/components/Search/src/Search.vue @@ -0,0 +1,153 @@ + + + diff --git a/yshop-drink-vue3/src/components/ShortcutDateRangePicker/index.vue b/yshop-drink-vue3/src/components/ShortcutDateRangePicker/index.vue new file mode 100644 index 0000000..117c079 --- /dev/null +++ b/yshop-drink-vue3/src/components/ShortcutDateRangePicker/index.vue @@ -0,0 +1,84 @@ + + diff --git a/yshop-drink-vue3/src/components/SimpleProcessDesigner/src/addNode.vue b/yshop-drink-vue3/src/components/SimpleProcessDesigner/src/addNode.vue new file mode 100644 index 0000000..6d09ae8 --- /dev/null +++ b/yshop-drink-vue3/src/components/SimpleProcessDesigner/src/addNode.vue @@ -0,0 +1,237 @@ +/* stylelint-disable order/properties-order */ + + + diff --git a/yshop-drink-vue3/src/components/SimpleProcessDesigner/src/nodeWrap.vue b/yshop-drink-vue3/src/components/SimpleProcessDesigner/src/nodeWrap.vue new file mode 100644 index 0000000..3c9d5eb --- /dev/null +++ b/yshop-drink-vue3/src/components/SimpleProcessDesigner/src/nodeWrap.vue @@ -0,0 +1,297 @@ + + + + diff --git a/yshop-drink-vue3/src/components/SimpleProcessDesigner/src/util.ts b/yshop-drink-vue3/src/components/SimpleProcessDesigner/src/util.ts new file mode 100644 index 0000000..f4acd76 --- /dev/null +++ b/yshop-drink-vue3/src/components/SimpleProcessDesigner/src/util.ts @@ -0,0 +1,165 @@ +/** + * todo + */ +export const arrToStr = (arr?: [{ name: string }]) => { + if (arr) { + return arr + .map((item) => { + return item.name + }) + .toString() + } +} + +export const setApproverStr = (nodeConfig: any) => { + if (nodeConfig.settype == 1) { + if (nodeConfig.nodeUserList.length == 1) { + return nodeConfig.nodeUserList[0].name + } else if (nodeConfig.nodeUserList.length > 1) { + if (nodeConfig.examineMode == 1) { + return arrToStr(nodeConfig.nodeUserList) + } else if (nodeConfig.examineMode == 2) { + return nodeConfig.nodeUserList.length + '人会签' + } + } + } else if (nodeConfig.settype == 2) { + const level = + nodeConfig.directorLevel == 1 ? '直接主管' : '第' + nodeConfig.directorLevel + '级主管' + if (nodeConfig.examineMode == 1) { + return level + } else if (nodeConfig.examineMode == 2) { + return level + '会签' + } + } else if (nodeConfig.settype == 4) { + if (nodeConfig.selectRange == 1) { + return '发起人自选' + } else { + if (nodeConfig.nodeUserList.length > 0) { + if (nodeConfig.selectRange == 2) { + return '发起人自选' + } else { + return '发起人从' + nodeConfig.nodeUserList[0].name + '中自选' + } + } else { + return '' + } + } + } else if (nodeConfig.settype == 5) { + return '发起人自己' + } else if (nodeConfig.settype == 7) { + return '从直接主管到通讯录中级别最高的第' + nodeConfig.examineEndDirectorLevel + '个层级主管' + } +} + +export const copyerStr = (nodeConfig: any) => { + if (nodeConfig.nodeUserList.length != 0) { + return arrToStr(nodeConfig.nodeUserList) + } else { + if (nodeConfig.ccSelfSelectFlag == 1) { + return '发起人自选' + } + } +} +export const conditionStr = (nodeConfig, index) => { + const { conditionList, nodeUserList } = nodeConfig.conditionNodes[index] + if (conditionList.length == 0) { + return index == nodeConfig.conditionNodes.length - 1 && + nodeConfig.conditionNodes[0].conditionList.length != 0 + ? '其他条件进入此流程' + : '请设置条件' + } else { + let str = '' + for (let i = 0; i < conditionList.length; i++) { + const { + columnId, + columnType, + showType, + showName, + optType, + zdy1, + opt1, + zdy2, + opt2, + fixedDownBoxValue + } = conditionList[i] + if (columnId == 0) { + if (nodeUserList.length != 0) { + str += '发起人属于:' + str += + nodeUserList + .map((item) => { + return item.name + }) + .join('或') + ' 并且 ' + } + } + if (columnType == 'String' && showType == '3') { + if (zdy1) { + str += showName + '属于:' + dealStr(zdy1, JSON.parse(fixedDownBoxValue)) + ' 并且 ' + } + } + if (columnType == 'Double') { + if (optType != 6 && zdy1) { + const optTypeStr = ['', '<', '>', '≤', '=', '≥'][optType] + str += `${showName} ${optTypeStr} ${zdy1} 并且 ` + } else if (optType == 6 && zdy1 && zdy2) { + str += `${zdy1} ${opt1} ${showName} ${opt2} ${zdy2} 并且 ` + } + } + } + return str ? str.substring(0, str.length - 4) : '请设置条件' + } +} + +export const dealStr = (str: string, obj) => { + const arr = [] + const list = str.split(',') + for (const elem in obj) { + list.map((item) => { + if (item == elem) { + arr.push(obj[elem].value) + } + }) + } + return arr.join('或') +} + +export const removeEle = (arr, elem, key = 'id') => { + let includesIndex + arr.map((item, index) => { + if (item[key] == elem[key]) { + includesIndex = index + } + }) + arr.splice(includesIndex, 1) +} + +export const bgColors = ['87, 106, 149', '255, 148, 62', '50, 150, 250'] +export const placeholderList = ['发起人', '审核人', '抄送人'] +export const setTypes = [ + { value: 1, label: '指定成员' }, + { value: 2, label: '主管' }, + { value: 4, label: '发起人自选' }, + { value: 5, label: '发起人自己' }, + { value: 7, label: '连续多级主管' } +] + +export const selectModes = [ + { value: 1, label: '选一个人' }, + { value: 2, label: '选多个人' } +] + +export const selectRanges = [ + { value: 1, label: '全公司' }, + { value: 2, label: '指定成员' }, + { value: 3, label: '指定角色' } +] + +export const optTypes = [ + { value: '1', label: '小于' }, + { value: '2', label: '大于' }, + { value: '3', label: '小于等于' }, + { value: '4', label: '等于' }, + { value: '5', label: '大于等于' }, + { value: '6', label: '介于两个数之间' } +] diff --git a/yshop-drink-vue3/src/components/SimpleProcessDesigner/theme/workflow.css b/yshop-drink-vue3/src/components/SimpleProcessDesigner/theme/workflow.css new file mode 100644 index 0000000..888b1a8 --- /dev/null +++ b/yshop-drink-vue3/src/components/SimpleProcessDesigner/theme/workflow.css @@ -0,0 +1,1292 @@ + +.clearfix { + zoom: 1 +} + +.clearfix:after, +.clearfix:before { + content: ""; + display: table +} + +.clearfix:after { + clear: both +} + +@font-face { + font-family: anticon; + font-display: fallback; + src: url("https://at.alicdn.com/t/font_148784_v4ggb6wrjmkotj4i.eot"); + src: url("https://at.alicdn.com/t/font_148784_v4ggb6wrjmkotj4i.woff") format("woff"), url("https://at.alicdn.com/t/font_148784_v4ggb6wrjmkotj4i.ttf") format("truetype"), url("https://at.alicdn.com/t/font_148784_v4ggb6wrjmkotj4i.svg#iconfont") format("svg") +} + +.anticon { + display: inline-block; + font-style: normal; + vertical-align: baseline; + text-align: center; + text-transform: none; + line-height: 1; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.anticon:before { + display: block; + font-family: anticon!important +} +.anticon-close:before { + content: "\E633" +} +.anticon-right:before { + content: "\E61F" +} +.anticon-exclamation-circle{ + color: rgb(242, 86, 67) +} +.anticon-exclamation-circle:before { + content: "\E62C" +} + +.anticon-left:before { + content: "\E620" +} + +.anticon-close-circle:before { + content: "\E62E" +} + +.ant-btn { + line-height: 1.5; + display: inline-block; + font-weight: 400; + text-align: center; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 0 15px; + font-size: 14px; + border-radius: 4px; + height: 32px; + user-select: none; + transition: all .3s cubic-bezier(.645, .045, .355, 1); + position: relative; + color: rgba(0, 0, 0, .65); + background-color: #fff; + border-color: #d9d9d9 +} + +.ant-btn>.anticon { + line-height: 1 +} + +.ant-btn, +.ant-btn:active, +.ant-btn:focus { + outline: 0 +} + +.ant-btn>a:only-child { + color: currentColor +} + +.ant-btn>a:only-child:after { + content: ""; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent +} + +.ant-btn:focus, +.ant-btn:hover { + color: #40a9ff; + background-color: #fff; + border-color: #40a9ff +} + +.ant-btn:focus>a:only-child, +.ant-btn:hover>a:only-child { + color: currentColor +} + +.ant-btn:focus>a:only-child:after, +.ant-btn:hover>a:only-child:after { + content: ""; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent +} + +.ant-btn.active, +.ant-btn:active { + color: #096dd9; + background-color: #fff; + border-color: #096dd9 +} + +.ant-btn.active>a:only-child, +.ant-btn:active>a:only-child { + color: currentColor +} + +.ant-btn.active>a:only-child:after, +.ant-btn:active>a:only-child:after { + content: ""; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent +} + +.ant-btn.active, +.ant-btn:active, +.ant-btn:focus, +.ant-btn:hover { + background: #fff; + text-decoration: none +} + +.ant-btn>i, +.ant-btn>span { + pointer-events: none +} + +.ant-btn:before { + position: absolute; + top: -1px; + left: -1px; + bottom: -1px; + right: -1px; + background: #fff; + opacity: .35; + content: ""; + border-radius: inherit; + z-index: 1; + transition: opacity .2s; + pointer-events: none; + display: none +} + +.ant-btn .anticon { + transition: margin-left .3s cubic-bezier(.645, .045, .355, 1) +} + +.ant-btn:active>span, +.ant-btn:focus>span { + position: relative +} + +.ant-btn>.anticon+span, +.ant-btn>span+.anticon { + margin-left: 8px +} + +.ant-input { + font-family: Chinese Quote, -apple-system, BlinkMacSystemFont, Segoe UI, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Helvetica, Arial, sans-serif; + font-variant: tabular-nums; + box-sizing: border-box; + margin: 0; + padding: 0; + list-style: none; + position: relative; + display: inline-block; + padding: 4px 11px; + width: 100%; + height: 32px; + font-size: 14px; + line-height: 1.5; + color: rgba(0, 0, 0, .65); + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; + transition: all .3s +} + +.ant-input::-moz-placeholder { + color: #bfbfbf; + opacity: 1 +} + +.ant-input:-ms-input-placeholder { + color: #bfbfbf +} + +.ant-input::-webkit-input-placeholder { + color: #bfbfbf +} + +.ant-input:focus, +.ant-input:hover { + border-color: #40a9ff; + border-right-width: 1px!important +} + +.ant-input:focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(24, 144, 255, .2) +} + +textarea.ant-input { + max-width: 100%; + height: auto; + vertical-align: bottom; + transition: all .3s, height 0s; + min-height: 32px +} + +a, +abbr, +acronym, +address, +applet, +article, +aside, +audio, +b, +big, +blockquote, +body, +canvas, +caption, +center, +cite, +code, +dd, +del, +details, +dfn, +div, +dl, +dt, +em, +fieldset, +figcaption, +figure, +footer, +form, +h1, +h2, +h3, +h4, +h5, +h6, +header, +hgroup, +html, +i, +iframe, +img, +ins, +kbd, +label, +legend, +li, +mark, +menu, +nav, +object, +ol, +p, +pre, +q, +s, +samp, +section, +small, +span, +strike, +strong, +sub, +summary, +sup, +table, +tbody, +td, +tfoot, +th, +thead, +time, +tr, +tt, +u, +ul, +var, +video { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline +} + +*, +:after, +:before { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box +} + +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body, +html { + font-size: 14px +} + +body { + font-family: Microsoft Yahei, Lucida Grande, Lucida Sans Unicode, Helvetica, Arial, Verdana, sans-serif; + line-height: 1.6; + background-color: #fff; + position: static!important; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0) +} + +ol, +ul { + list-style-type: none +} + +b, +strong { + font-weight: 700 +} + +img { + border: 0 +} + +button, +input, +select, +textarea { + font-family: inherit; + font-size: 100%; + margin: 0 +} + +textarea { + overflow: auto; + vertical-align: top; + -webkit-appearance: none +} + +button, +input { + line-height: normal +} + +button, +select { + text-transform: none +} + +button, +html input[type=button], +input[type=reset], +input[type=submit] { + -webkit-appearance: button; + cursor: pointer +} + +input[type=search] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box +} + +input[type=search]::-webkit-search-cancel-button, +input[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +table { + width: 100%; + border-spacing: 0; + border-collapse: collapse +} + +table, +td, +th { + border: 0 +} + +td, +th { + padding: 0; + vertical-align: top +} + +th { + font-weight: 700; + text-align: left +} + +thead th { + white-space: nowrap +} + +a { + text-decoration: none; + cursor: pointer; + color: #3296fa +} + +a:active, +a:hover { + outline: 0; + color: #3296fa +} + +small { + font-size: 80% +} + +body, +html { + font-size: 12px!important; + color: #191f25!important; + background: #f6f6f6!important +} + +.wrap { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + height: 100% +} + +@font-face { + font-family: IconFont; + src: url("//at.alicdn.com/t/font_135284_ph2thxxbzgf.eot"); + src: url("//at.alicdn.com/t/font_135284_ph2thxxbzgf.eot?#iefix") format("embedded-opentype"), url("//at.alicdn.com/t/font_135284_ph2thxxbzgf.woff") format("woff"), url("//at.alicdn.com/t/font_135284_ph2thxxbzgf.ttf") format("truetype"), url("//at.alicdn.com/t/font_135284_ph2thxxbzgf.svg#IconFont") format("svg") +} + +.iconfont { + font-family: IconFont!important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -webkit-text-stroke-width: .2px; + -moz-osx-font-smoothing: grayscale +} + +.fd-nav { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 997; + width: 100%; + height: 60px; + font-size: 14px; + color: #fff; + background: #3296fa; + display: flex; + align-items: center +} + +.fd-nav>* { + flex: 1; + width: 100% +} + +.fd-nav .fd-nav-left { + display: -webkit-box; + display: flex; + align-items: center +} + +.fd-nav .fd-nav-center { + flex: none; + width: 600px; + text-align: center +} + +.fd-nav .fd-nav-right { + display: flex; + align-items: center; + justify-content: flex-end; + text-align: right +} + +.fd-nav .fd-nav-back { + display: inline-block; + width: 60px; + height: 60px; + font-size: 22px; + border-right: 1px solid #1583f2; + text-align: center; + cursor: pointer +} + +.fd-nav .fd-nav-back:hover { + background: #5af +} + +.fd-nav .fd-nav-back:active { + background: #1583f2 +} + +.fd-nav .fd-nav-back .anticon { + line-height: 60px +} + +.fd-nav .fd-nav-title { + width: 0; + flex: 1; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding: 0 15px +} + +.fd-nav a { + color: #fff; + margin-left: 12px +} + +.fd-nav .button-publish { + min-width: 80px; + margin-left: 4px; + margin-right: 15px; + color: #3296fa; + border-color: #fff +} + +.fd-nav .button-publish.ant-btn:focus, +.fd-nav .button-publish.ant-btn:hover { + color: #3296fa; + border-color: #fff; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, .3) +} + +.fd-nav .button-publish.ant-btn:active { + color: #3296fa; + background: #d6eaff; + box-shadow: none +} + +.fd-nav .button-preview { + min-width: 80px; + margin-left: 16px; + margin-right: 4px; + color: #fff; + border-color: #fff; + background: transparent +} + +.fd-nav .button-preview.ant-btn:focus, +.fd-nav .button-preview.ant-btn:hover { + color: #fff; + border-color: #fff; + background: #59acfc +} + +.fd-nav .button-preview.ant-btn:active { + color: #fff; + border-color: #fff; + background: #2186ef +} + +.fd-nav-content { + position: fixed; + top: 60px; + left: 0; + right: 0; + bottom: 0; + z-index: 1; + overflow-x: hidden; + overflow-y: auto; + padding-bottom: 30px +} + +.error-modal-desc { + font-size: 13px; + color: rgba(25, 31, 37, .56); + line-height: 22px; + margin-bottom: 14px +} + +.error-modal-list { + height: 200px; + overflow-y: auto; + margin-right: -25px; + padding-right: 25px +} + +.error-modal-item { + padding: 10px 20px; + line-height: 21px; + background: #f6f6f6; + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 8px; + border-radius: 4px +} + +.error-modal-item-label { + flex: none; + font-size: 15px; + color: rgba(25, 31, 37, .56); + padding-right: 10px +} + +.error-modal-item-content { + text-align: right; + flex: 1; + font-size: 13px; + color: #191f25 +} + +#body.blur { + -webkit-filter: blur(3px); + filter: blur(3px) +} + +.zoom { + display: flex; + position: fixed; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + height: 40px; + width: 125px; + right: 40px; + margin-top: 30px; + z-index: 10 +} + +.zoom .zoom-in, +.zoom .zoom-out { + width: 30px; + height: 30px; + background: #fff; + color: #c1c1cd; + cursor: pointer; + background-size: 100%; + background-repeat: no-repeat +} + +.zoom .zoom-out { + background-image: url(https://gw.alicdn.com/tfs/TB1s0qhBHGYBuNjy0FoXXciBFXa-90-90.png) +} + +.zoom .zoom-out.disabled { + opacity: .5 +} + +.zoom .zoom-in { + background-image: url(https://gw.alicdn.com/tfs/TB1UIgJBTtYBeNjy1XdXXXXyVXa-90-90.png) +} + +.zoom .zoom-in.disabled { + opacity: .5 +} + +.auto-judge:hover .editable-title, +.node-wrap-box:hover .editable-title { + border-bottom: 1px dashed #fff +} + +.auto-judge:hover .editable-title.editing, +.node-wrap-box:hover .editable-title.editing { + text-decoration: none; + border: 1px solid #d9d9d9 +} + +.auto-judge:hover .editable-title { + border-color: #15bc83 +} + +.editable-title { + line-height: 15px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + border-bottom: 1px dashed transparent +} + +.editable-title:before { + content: ""; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 40px +} + +.editable-title:hover { + border-bottom: 1px dashed #fff +} + +.editable-title-input { + flex: none; + height: 18px; + padding-left: 4px; + text-indent: 0; + font-size: 12px; + line-height: 18px; + z-index: 1 +} + +.editable-title-input:hover { + text-decoration: none +} + +.ant-btn { + position: relative +} + +.node-wrap-box { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + width: 220px; + min-height: 72px; + -ms-flex-negative: 0; + flex-shrink: 0; + background: #fff; + border-radius: 4px; + cursor: pointer +} + +.node-wrap-box:after { + pointer-events: none; + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 2; + border-radius: 4px; + border: 1px solid transparent; + transition: all .1s cubic-bezier(.645, .045, .355, 1); + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .1) +} + +.node-wrap-box.active:after, +.node-wrap-box:active:after, +.node-wrap-box:hover:after { + border: 1px solid #3296fa; + box-shadow: 0 0 6px 0 rgba(50, 150, 250, .3) +} + +.node-wrap-box.active .close, +.node-wrap-box:active .close, +.node-wrap-box:hover .close { + display: block +} + +.node-wrap-box.error:after { + border: 1px solid #f25643; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .1) +} + +.node-wrap-box .title { + position: relative; + display: flex; + align-items: center; + padding-left: 16px; + padding-right: 30px; + width: 100%; + height: 24px; + line-height: 24px; + font-size: 12px; + color: #fff; + text-align: left; + background: #576a95; + border-radius: 4px 4px 0 0 +} + +.node-wrap-box .title .iconfont { + font-size: 12px; + margin-right: 5px +} + +.node-wrap-box .placeholder { + color: #bfbfbf +} + +.node-wrap-box .close { + display: none; + position: absolute; + right: 10px; + top: 50%; + transform: translateY(-50%); + width: 20px; + height: 20px; + font-size: 14px; + color: #fff; + border-radius: 50%; + text-align: center; + line-height: 20px +} + +.node-wrap-box .content { + position: relative; + font-size: 14px; + padding: 16px; + padding-right: 30px +} + +.node-wrap-box .content .text { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical +} + +.node-wrap-box .content .arrow { + position: absolute; + right: 10px; + top: 50%; + transform: translateY(-50%); + width: 20px; + height: 14px; + font-size: 14px; + color: #979797 +} + +.start-node.node-wrap-box .content .text { + display: block; + white-space: nowrap +} + +.node-wrap-box:before { + content: ""; + position: absolute; + top: -12px; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + width: 0; + height: 4px; + border-style: solid; + border-width: 8px 6px 4px; + border-color: #cacaca transparent transparent; + background: #f5f5f7 +} + +.node-wrap-box.start-node:before { + content: none +} + +.top-left-cover-line { + left: -1px +} + +.top-left-cover-line, +.top-right-cover-line { + position: absolute; + height: 8px; + width: 50%; + background-color: #f5f5f7; + top: -4px +} + +.top-right-cover-line { + right: -1px +} + +.bottom-left-cover-line { + left: -1px +} + +.bottom-left-cover-line, +.bottom-right-cover-line { + position: absolute; + height: 8px; + width: 50%; + background-color: #f5f5f7; + bottom: -4px +} + +.bottom-right-cover-line { + right: -1px +} + +.dingflow-design { + width: 100%; + background-color: #f5f5f7; + overflow: auto; + position: absolute; + bottom: 0; + left: 0; + right: 0; + top: 0 +} + +.dingflow-design .box-scale { + transform: scale(1); + display: inline-block; + position: relative; + width: 100%; + padding: 54.5px 0; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + min-width: -webkit-min-content; + min-width: -moz-min-content; + min-width: min-content; + background-color: #f5f5f7; + transform-origin: 50% 0px 0px; +} + +.dingflow-design .node-wrap { + flex-direction: column; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + padding: 0 50px; + position: relative +} + +.dingflow-design .branch-wrap, +.dingflow-design .node-wrap { + display: inline-flex; + width: 100% +} + +.dingflow-design .branch-box-wrap { + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + min-height: 270px; + width: 100%; + -ms-flex-negative: 0; + flex-shrink: 0 +} + +.dingflow-design .branch-box { + display: flex; + overflow: visible; + min-height: 180px; + height: auto; + border-bottom: 2px solid #ccc; + border-top: 2px solid #ccc; + position: relative; + margin-top: 15px +} + +.dingflow-design .branch-box .col-box { + background: #f5f5f7 +} + +.dingflow-design .branch-box .col-box:before { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 0; + margin: auto; + width: 2px; + height: 100%; + background-color: #cacaca +} + +.dingflow-design .add-branch { + border: none; + outline: none; + user-select: none; + justify-content: center; + font-size: 12px; + padding: 0 10px; + height: 30px; + line-height: 30px; + border-radius: 15px; + color: #3296fa; + background: #fff; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + position: absolute; + top: -16px; + left: 50%; + transform: translateX(-50%); + transform-origin: center center; + cursor: pointer; + z-index: 1; + display: inline-flex; + align-items: center; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1) +} + +.dingflow-design .add-branch:hover { + transform: translateX(-50%) scale(1.1); + box-shadow: 0 8px 16px 0 rgba(0, 0, 0, .1) +} + +.dingflow-design .add-branch:active { + transform: translateX(-50%); + box-shadow: none +} + +.dingflow-design .col-box { + display: inline-flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + -webkit-box-align: center; + align-items: center; + position: relative +} + +.dingflow-design .condition-node { + min-height: 220px +} + +.dingflow-design .condition-node, +.dingflow-design .condition-node-box { + display: inline-flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + -webkit-box-flex: 1 +} + +.dingflow-design .condition-node-box { + padding-top: 30px; + padding-right: 50px; + padding-left: 50px; + -webkit-box-pack: center; + justify-content: center; + -webkit-box-align: center; + align-items: center; + flex-grow: 1; + position: relative +} + +.dingflow-design .condition-node-box:before { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + width: 2px; + height: 100%; + background-color: #cacaca +} + +.dingflow-design .auto-judge { + position: relative; + width: 220px; + min-height: 72px; + background: #fff; + border-radius: 4px; + padding: 14px 19px; + cursor: pointer +} + +.dingflow-design .auto-judge:after { + pointer-events: none; + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 2; + border-radius: 4px; + border: 1px solid transparent; + transition: all .1s cubic-bezier(.645, .045, .355, 1); + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .1) +} + +.dingflow-design .auto-judge.active:after, +.dingflow-design .auto-judge:active:after, +.dingflow-design .auto-judge:hover:after { + border: 1px solid #3296fa; + box-shadow: 0 0 6px 0 rgba(50, 150, 250, .3) +} + +.dingflow-design .auto-judge.active .close, +.dingflow-design .auto-judge:active .close, +.dingflow-design .auto-judge:hover .close { + display: block +} + +.dingflow-design .auto-judge.error:after { + border: 1px solid #f25643; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .1) +} + +.dingflow-design .auto-judge .title-wrapper { + position: relative; + font-size: 12px; + color: #15bc83; + text-align: left; + line-height: 16px +} + +.dingflow-design .auto-judge .title-wrapper .editable-title { + display: inline-block; + max-width: 120px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis +} + +.dingflow-design .auto-judge .title-wrapper .priority-title { + display: inline-block; + float: right; + margin-right: 10px; + color: rgba(25, 31, 37, .56) +} + +.dingflow-design .auto-judge .placeholder { + color: #bfbfbf +} + +.dingflow-design .auto-judge .close { + display: none; + position: absolute; + right: -10px; + top: -10px; + width: 20px; + height: 20px; + font-size: 14px; + color: rgba(0, 0, 0, .25); + border-radius: 50%; + text-align: center; + line-height: 20px; + z-index: 2 +} + +.dingflow-design .auto-judge .content { + font-size: 14px; + color: #191f25; + text-align: left; + margin-top: 6px; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical +} + +.dingflow-design .auto-judge .sort-left, +.dingflow-design .auto-judge .sort-right { + position: absolute; + top: 0; + bottom: 0; + display: none; + z-index: 1 +} + +.dingflow-design .auto-judge .sort-left { + left: 0; + border-right: 1px solid #f6f6f6 +} + +.dingflow-design .auto-judge .sort-right { + right: 0; + border-left: 1px solid #f6f6f6 +} + +.dingflow-design .auto-judge:hover .sort-left, +.dingflow-design .auto-judge:hover .sort-right { + display: flex; + align-items: center +} + +.dingflow-design .auto-judge .sort-left:hover, +.dingflow-design .auto-judge .sort-right:hover { + background: #efefef +} + +.dingflow-design .end-node { + border-radius: 50%; + font-size: 14px; + color: rgba(25, 31, 37, .4); + text-align: left +} + +.dingflow-design .end-node .end-node-circle { + width: 10px; + height: 10px; + margin: auto; + border-radius: 50%; + background: #dbdcdc +} + +.dingflow-design .end-node .end-node-text { + margin-top: 5px; + text-align: center +} + +.approval-setting { + border-radius: 2px; + margin: 20px 0; + position: relative; + background: #fff +} + +.ant-btn { + position: relative +} + + diff --git a/yshop-drink-vue3/src/components/Sticky/index.ts b/yshop-drink-vue3/src/components/Sticky/index.ts new file mode 100644 index 0000000..5e1de45 --- /dev/null +++ b/yshop-drink-vue3/src/components/Sticky/index.ts @@ -0,0 +1,3 @@ +import Sticky from './src/Sticky.vue' + +export { Sticky } diff --git a/yshop-drink-vue3/src/components/Sticky/src/Sticky.vue b/yshop-drink-vue3/src/components/Sticky/src/Sticky.vue new file mode 100644 index 0000000..28ecbcb --- /dev/null +++ b/yshop-drink-vue3/src/components/Sticky/src/Sticky.vue @@ -0,0 +1,143 @@ + + diff --git a/yshop-drink-vue3/src/components/SummaryCard/index.vue b/yshop-drink-vue3/src/components/SummaryCard/index.vue new file mode 100644 index 0000000..52da6da --- /dev/null +++ b/yshop-drink-vue3/src/components/SummaryCard/index.vue @@ -0,0 +1,52 @@ + + diff --git a/yshop-drink-vue3/src/components/Table/index.ts b/yshop-drink-vue3/src/components/Table/index.ts new file mode 100644 index 0000000..9f89317 --- /dev/null +++ b/yshop-drink-vue3/src/components/Table/index.ts @@ -0,0 +1,13 @@ +import Table from './src/Table.vue' +import { ElTable } from 'element-plus' +import { TableSetPropsType } from '@/types/table' +import TableSelectForm from './src/TableSelectForm.vue' + +export interface TableExpose { + setProps: (props: Recordable) => void + setColumn: (columnProps: TableSetPropsType[]) => void + selections: Recordable[] + elTableRef: ComponentRef +} + +export { Table, TableSelectForm } diff --git a/yshop-drink-vue3/src/components/Table/src/Table.vue b/yshop-drink-vue3/src/components/Table/src/Table.vue new file mode 100644 index 0000000..279a9fa --- /dev/null +++ b/yshop-drink-vue3/src/components/Table/src/Table.vue @@ -0,0 +1,311 @@ + + diff --git a/yshop-drink-vue3/src/components/Table/src/TableSelectForm.vue b/yshop-drink-vue3/src/components/Table/src/TableSelectForm.vue new file mode 100644 index 0000000..7fece2d --- /dev/null +++ b/yshop-drink-vue3/src/components/Table/src/TableSelectForm.vue @@ -0,0 +1,91 @@ + + + + diff --git a/yshop-drink-vue3/src/components/Table/src/helper.ts b/yshop-drink-vue3/src/components/Table/src/helper.ts new file mode 100644 index 0000000..d8b34a8 --- /dev/null +++ b/yshop-drink-vue3/src/components/Table/src/helper.ts @@ -0,0 +1,8 @@ +export const setIndex = (reserveIndex: boolean, index: number, size: number, current: number) => { + const newIndex = index + 1 + if (reserveIndex) { + return size * (current - 1) + newIndex + } else { + return newIndex + } +} diff --git a/yshop-drink-vue3/src/components/Table/src/types.ts b/yshop-drink-vue3/src/components/Table/src/types.ts new file mode 100644 index 0000000..1c7ff76 --- /dev/null +++ b/yshop-drink-vue3/src/components/Table/src/types.ts @@ -0,0 +1,26 @@ +import { Pagination, TableColumn } from '@/types/table' + +export type TableProps = { + pageSize?: number + currentPage?: number + // 是否多选 + selection?: boolean + // 是否所有的超出隐藏,优先级低于schema中的showOverflowTooltip, + showOverflowTooltip?: boolean + // 表头 + columns?: TableColumn[] + // 是否展示分页 + pagination?: Pagination | undefined + // 仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key) + reserveSelection?: boolean + // 加载状态 + loading?: boolean + // 是否叠加索引 + reserveIndex?: boolean + // 对齐方式 + align?: 'left' | 'center' | 'right' + // 表头对齐方式 + headerAlign?: 'left' | 'center' | 'right' + data?: Recordable + expand?: boolean +} & Recordable diff --git a/yshop-drink-vue3/src/components/Tooltip/index.ts b/yshop-drink-vue3/src/components/Tooltip/index.ts new file mode 100644 index 0000000..ab66ddf --- /dev/null +++ b/yshop-drink-vue3/src/components/Tooltip/index.ts @@ -0,0 +1,3 @@ +import Tooltip from './src/Tooltip.vue' + +export { Tooltip } diff --git a/yshop-drink-vue3/src/components/Tooltip/src/Tooltip.vue b/yshop-drink-vue3/src/components/Tooltip/src/Tooltip.vue new file mode 100644 index 0000000..1a2e09c --- /dev/null +++ b/yshop-drink-vue3/src/components/Tooltip/src/Tooltip.vue @@ -0,0 +1,17 @@ + + diff --git a/yshop-drink-vue3/src/components/UploadFile/index.ts b/yshop-drink-vue3/src/components/UploadFile/index.ts new file mode 100644 index 0000000..97c1d66 --- /dev/null +++ b/yshop-drink-vue3/src/components/UploadFile/index.ts @@ -0,0 +1,5 @@ +import UploadImg from './src/UploadImg.vue' +import UploadImgs from './src/UploadImgs.vue' +import UploadFile from './src/UploadFile.vue' + +export { UploadImg, UploadImgs, UploadFile } diff --git a/yshop-drink-vue3/src/components/UploadFile/src/UploadFile.vue b/yshop-drink-vue3/src/components/UploadFile/src/UploadFile.vue new file mode 100644 index 0000000..4459e69 --- /dev/null +++ b/yshop-drink-vue3/src/components/UploadFile/src/UploadFile.vue @@ -0,0 +1,213 @@ + + + diff --git a/yshop-drink-vue3/src/components/UploadFile/src/UploadImg.vue b/yshop-drink-vue3/src/components/UploadFile/src/UploadImg.vue new file mode 100644 index 0000000..ac0c162 --- /dev/null +++ b/yshop-drink-vue3/src/components/UploadFile/src/UploadImg.vue @@ -0,0 +1,271 @@ + + + + diff --git a/yshop-drink-vue3/src/components/UploadFile/src/UploadImgs.vue b/yshop-drink-vue3/src/components/UploadFile/src/UploadImgs.vue new file mode 100644 index 0000000..85da64c --- /dev/null +++ b/yshop-drink-vue3/src/components/UploadFile/src/UploadImgs.vue @@ -0,0 +1,323 @@ + + + + diff --git a/yshop-drink-vue3/src/components/UploadFile/src/useUpload.ts b/yshop-drink-vue3/src/components/UploadFile/src/useUpload.ts new file mode 100644 index 0000000..c0465a2 --- /dev/null +++ b/yshop-drink-vue3/src/components/UploadFile/src/useUpload.ts @@ -0,0 +1,97 @@ +import * as FileApi from '@/api/infra/file' +import CryptoJS from 'crypto-js' +import { UploadRawFile, UploadRequestOptions } from 'element-plus/es/components/upload/src/upload' +import axios from 'axios' + +export const useUpload = () => { + // 后端上传地址 + const uploadUrl = import.meta.env.VITE_UPLOAD_URL + // 是否使用前端直连上传 + const isClientUpload = UPLOAD_TYPE.CLIENT === import.meta.env.VITE_UPLOAD_TYPE + // 重写ElUpload上传方法 + const httpRequest = async (options: UploadRequestOptions) => { + // 模式一:前端上传 + if (isClientUpload) { + // 1.1 生成文件名称 + const fileName = await generateFileName(options.file) + // 1.2 获取文件预签名地址 + const presignedInfo = await FileApi.getFilePresignedUrl(fileName) + // 1.3 上传文件(不能使用 ElUpload 的 ajaxUpload 方法的原因:其使用的是 FormData 上传,Minio 不支持) + return axios.put(presignedInfo.uploadUrl, options.file, { + headers: { + 'Content-Type': options.file.type, + } + }).then(() => { + // 1.4. 记录文件信息到后端(异步) + createFile(presignedInfo, fileName, options.file) + // 通知成功,数据格式保持与后端上传的返回结果一致 + return { data: presignedInfo.url } + }) + } else { + // 模式二:后端上传 + // 重写 el-upload httpRequest 文件上传成功会走成功的钩子,失败走失败的钩子 + return new Promise((resolve, reject) => { + FileApi.updateFile({ file: options.file }) + .then((res) => { + if (res.code === 0) { + resolve(res) + } else { + reject(res) + } + }) + .catch((res) => { + reject(res) + }) + }) + } + } + + return { + uploadUrl, + httpRequest + } +} + +/** + * 创建文件信息 + * @param vo 文件预签名信息 + * @param name 文件名称 + * @param file 文件 + */ +function createFile(vo: FileApi.FilePresignedUrlRespVO, name: string, file: UploadRawFile) { + const fileVo = { + configId: vo.configId, + url: vo.url, + path: name, + name: file.name, + type: file.type, + size: file.size + } + FileApi.createFile(fileVo) + return fileVo +} + +/** + * 生成文件名称(使用算法SHA256) + * @param file 要上传的文件 + */ +async function generateFileName(file: UploadRawFile) { + // 读取文件内容 + const data = await file.arrayBuffer() + const wordArray = CryptoJS.lib.WordArray.create(data) + // 计算SHA256 + const sha256 = CryptoJS.SHA256(wordArray).toString() + // 拼接后缀 + const ext = file.name.substring(file.name.lastIndexOf('.')) + return `${sha256}${ext}` +} + +/** + * 上传类型 + */ +enum UPLOAD_TYPE { + // 客户端直接上传(只支持S3服务) + CLIENT = 'client', + // 客户端发送到后端上传 + SERVER = 'server' +} diff --git a/yshop-drink-vue3/src/components/Verifition/index.ts b/yshop-drink-vue3/src/components/Verifition/index.ts new file mode 100644 index 0000000..bcfe6d9 --- /dev/null +++ b/yshop-drink-vue3/src/components/Verifition/index.ts @@ -0,0 +1,3 @@ +import Verify from './src/Verify.vue' + +export { Verify } diff --git a/yshop-drink-vue3/src/components/Verifition/src/Verify.vue b/yshop-drink-vue3/src/components/Verifition/src/Verify.vue new file mode 100644 index 0000000..b7b5048 --- /dev/null +++ b/yshop-drink-vue3/src/components/Verifition/src/Verify.vue @@ -0,0 +1,441 @@ + + + diff --git a/yshop-drink-vue3/src/components/Verifition/src/Verify/VerifyPoints.vue b/yshop-drink-vue3/src/components/Verifition/src/Verify/VerifyPoints.vue new file mode 100644 index 0000000..9d04f29 --- /dev/null +++ b/yshop-drink-vue3/src/components/Verifition/src/Verify/VerifyPoints.vue @@ -0,0 +1,250 @@ + + diff --git a/yshop-drink-vue3/src/components/Verifition/src/Verify/VerifySlide.vue b/yshop-drink-vue3/src/components/Verifition/src/Verify/VerifySlide.vue new file mode 100644 index 0000000..f3c7bfe --- /dev/null +++ b/yshop-drink-vue3/src/components/Verifition/src/Verify/VerifySlide.vue @@ -0,0 +1,376 @@ + + diff --git a/yshop-drink-vue3/src/components/Verifition/src/Verify/index.ts b/yshop-drink-vue3/src/components/Verifition/src/Verify/index.ts new file mode 100644 index 0000000..0daa63a --- /dev/null +++ b/yshop-drink-vue3/src/components/Verifition/src/Verify/index.ts @@ -0,0 +1,4 @@ +import VerifySlide from './VerifySlide.vue' +import VerifyPoints from './VerifyPoints.vue' + +export { VerifySlide, VerifyPoints } diff --git a/yshop-drink-vue3/src/components/Verifition/src/utils/ase.ts b/yshop-drink-vue3/src/components/Verifition/src/utils/ase.ts new file mode 100644 index 0000000..d2e6b98 --- /dev/null +++ b/yshop-drink-vue3/src/components/Verifition/src/utils/ase.ts @@ -0,0 +1,14 @@ +import CryptoJS from 'crypto-js' +/** + * @word 要加密的内容 + * @keyWord String 服务器随机返回的关键字 + * */ +export function aesEncrypt(word, keyWord = 'XwKsGlMcdPMEhR1B') { + const key = CryptoJS.enc.Utf8.parse(keyWord) + const srcs = CryptoJS.enc.Utf8.parse(word) + const encrypted = CryptoJS.AES.encrypt(srcs, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }) + return encrypted.toString() +} diff --git a/yshop-drink-vue3/src/components/Verifition/src/utils/util.ts b/yshop-drink-vue3/src/components/Verifition/src/utils/util.ts new file mode 100644 index 0000000..15c1627 --- /dev/null +++ b/yshop-drink-vue3/src/components/Verifition/src/utils/util.ts @@ -0,0 +1,97 @@ +export function resetSize(vm) { + let img_width, img_height, bar_width, bar_height //图片的宽度、高度,移动条的宽度、高度 + const EmployeeWindow = window as any + const parentWidth = vm.$el.parentNode.offsetWidth || EmployeeWindow.offsetWidth + const parentHeight = vm.$el.parentNode.offsetHeight || EmployeeWindow.offsetHeight + if (vm.imgSize.width.indexOf('%') != -1) { + img_width = (parseInt(vm.imgSize.width) / 100) * parentWidth + 'px' + } else { + img_width = vm.imgSize.width + } + + if (vm.imgSize.height.indexOf('%') != -1) { + img_height = (parseInt(vm.imgSize.height) / 100) * parentHeight + 'px' + } else { + img_height = vm.imgSize.height + } + + if (vm.barSize.width.indexOf('%') != -1) { + bar_width = (parseInt(vm.barSize.width) / 100) * parentWidth + 'px' + } else { + bar_width = vm.barSize.width + } + + if (vm.barSize.height.indexOf('%') != -1) { + bar_height = (parseInt(vm.barSize.height) / 100) * parentHeight + 'px' + } else { + bar_height = vm.barSize.height + } + + return { imgWidth: img_width, imgHeight: img_height, barWidth: bar_width, barHeight: bar_height } +} + +export const _code_chars = [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 'a', + 'b', + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i', + 'j', + 'k', + 'l', + 'm', + 'n', + 'o', + 'p', + 'q', + 'r', + 's', + 't', + 'u', + 'v', + 'w', + 'x', + 'y', + 'z', + 'A', + 'B', + 'C', + 'D', + 'E', + 'F', + 'G', + 'H', + 'I', + 'J', + 'K', + 'L', + 'M', + 'N', + 'O', + 'P', + 'Q', + 'R', + 'S', + 'T', + 'U', + 'V', + 'W', + 'X', + 'Y', + 'Z' +] +export const _code_color1 = ['#fffff0', '#f0ffff', '#f0fff0', '#fff0f0'] +export const _code_color2 = ['#FF0033', '#006699', '#993366', '#FF9900', '#66CC66', '#FF33CC'] diff --git a/yshop-drink-vue3/src/components/VerticalButtonGroup/index.vue b/yshop-drink-vue3/src/components/VerticalButtonGroup/index.vue new file mode 100644 index 0000000..9c78ea2 --- /dev/null +++ b/yshop-drink-vue3/src/components/VerticalButtonGroup/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/yshop-drink-vue3/src/components/XButton/index.ts b/yshop-drink-vue3/src/components/XButton/index.ts new file mode 100644 index 0000000..be0f0d4 --- /dev/null +++ b/yshop-drink-vue3/src/components/XButton/index.ts @@ -0,0 +1,4 @@ +import XButton from './src/XButton.vue' +import XTextButton from './src/XTextButton.vue' + +export { XButton, XTextButton } diff --git a/yshop-drink-vue3/src/components/XButton/src/XButton.vue b/yshop-drink-vue3/src/components/XButton/src/XButton.vue new file mode 100644 index 0000000..40cba1a --- /dev/null +++ b/yshop-drink-vue3/src/components/XButton/src/XButton.vue @@ -0,0 +1,50 @@ + + + + diff --git a/yshop-drink-vue3/src/components/XButton/src/XTextButton.vue b/yshop-drink-vue3/src/components/XButton/src/XTextButton.vue new file mode 100644 index 0000000..b1a922b --- /dev/null +++ b/yshop-drink-vue3/src/components/XButton/src/XTextButton.vue @@ -0,0 +1,49 @@ + + + + diff --git a/yshop-drink-vue3/src/components/index.ts b/yshop-drink-vue3/src/components/index.ts new file mode 100644 index 0000000..4d030c3 --- /dev/null +++ b/yshop-drink-vue3/src/components/index.ts @@ -0,0 +1,6 @@ +import type { App } from 'vue' +import { Icon } from './Icon' + +export const setupGlobCom = (app: App): void => { + app.component('Icon', Icon) +} diff --git a/yshop-drink-vue3/src/config/axios/config.ts b/yshop-drink-vue3/src/config/axios/config.ts new file mode 100644 index 0000000..8116508 --- /dev/null +++ b/yshop-drink-vue3/src/config/axios/config.ts @@ -0,0 +1,28 @@ +const config: { + base_url: string + result_code: number | string + default_headers: AxiosHeaders + request_timeout: number +} = { + /** + * api请求基础路径 + */ + base_url: import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL, + /** + * 接口成功返回状态码 + */ + result_code: 200, + + /** + * 接口请求超时时间 + */ + request_timeout: 30000, + + /** + * 默认接口请求类型 + * 可选值:application/x-www-form-urlencoded multipart/form-data + */ + default_headers: 'application/json' +} + +export { config } diff --git a/yshop-drink-vue3/src/config/axios/errorCode.ts b/yshop-drink-vue3/src/config/axios/errorCode.ts new file mode 100644 index 0000000..94d719f --- /dev/null +++ b/yshop-drink-vue3/src/config/axios/errorCode.ts @@ -0,0 +1,6 @@ +export default { + '401': '认证失败,无法访问系统资源', + '403': '当前操作没有权限', + '404': '访问资源不存在', + default: '系统未知错误,请反馈给管理员' +} diff --git a/yshop-drink-vue3/src/config/axios/index.ts b/yshop-drink-vue3/src/config/axios/index.ts new file mode 100644 index 0000000..79e558d --- /dev/null +++ b/yshop-drink-vue3/src/config/axios/index.ts @@ -0,0 +1,51 @@ +import { service } from './service' + +import { config } from './config' + +const { default_headers } = config + +const request = (option: any) => { + const { url, method, params, data, headersType, responseType, ...config } = option + return service({ + url: url, + method, + params, + data, + ...config, + responseType: responseType, + headers: { + 'Content-Type': headersType || default_headers + } + }) +} +export default { + get: async (option: any) => { + const res = await request({ method: 'GET', ...option }) + return res.data as unknown as T + }, + post: async (option: any) => { + const res = await request({ method: 'POST', ...option }) + return res.data as unknown as T + }, + postOriginal: async (option: any) => { + const res = await request({ method: 'POST', ...option }) + return res + }, + delete: async (option: any) => { + const res = await request({ method: 'DELETE', ...option }) + return res.data as unknown as T + }, + put: async (option: any) => { + const res = await request({ method: 'PUT', ...option }) + return res.data as unknown as T + }, + download: async (option: any) => { + const res = await request({ method: 'GET', responseType: 'blob', ...option }) + return res as unknown as Promise + }, + upload: async (option: any) => { + option.headersType = 'multipart/form-data' + const res = await request({ method: 'POST', ...option }) + return res as unknown as Promise + } +} diff --git a/yshop-drink-vue3/src/config/axios/service.ts b/yshop-drink-vue3/src/config/axios/service.ts new file mode 100644 index 0000000..7efb2f9 --- /dev/null +++ b/yshop-drink-vue3/src/config/axios/service.ts @@ -0,0 +1,230 @@ +import axios, { + AxiosError, + AxiosInstance, + AxiosRequestHeaders, + AxiosResponse, + InternalAxiosRequestConfig +} from 'axios' + +import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' +import qs from 'qs' +import { config } from '@/config/axios/config' +import { getAccessToken, getRefreshToken, getTenantId, removeToken, setToken } from '@/utils/auth' +import errorCode from './errorCode' + +import { resetRouter } from '@/router' +import { deleteUserCache } from '@/hooks/web/useCache' + +const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE +const { result_code, base_url, request_timeout } = config + +// 需要忽略的提示。忽略后,自动 Promise.reject('error') +const ignoreMsgs = [ + '无效的刷新令牌', // 刷新令牌被删除时,不用提示 + '刷新令牌已过期' // 使用刷新令牌,刷新获取新的访问令牌时,结果因为过期失败,此时需要忽略。否则,会导致继续 401,无法跳转到登出界面 +] +// 是否显示重新登录 +export const isRelogin = { show: false } +// Axios 无感知刷新令牌,参考 https://www.dashingdog.cn/article/11 与 https://segmentfault.com/a/1190000020210980 实现 +// 请求队列 +let requestList: any[] = [] +// 是否正在刷新中 +let isRefreshToken = false +// 请求白名单,无须token的接口 +const whiteList: string[] = ['/login', '/refresh-token'] + +// 创建axios实例 +const service: AxiosInstance = axios.create({ + baseURL: base_url, // api 的 base_url + timeout: request_timeout, // 请求超时时间 + withCredentials: false // 禁用 Cookie 等信息 +}) + +// request拦截器 +service.interceptors.request.use( + (config: InternalAxiosRequestConfig) => { + // 是否需要设置 token + let isToken = (config!.headers || {}).isToken === false + whiteList.some((v) => { + if (config.url) { + config.url.indexOf(v) > -1 + return (isToken = false) + } + }) + if (getAccessToken() && !isToken) { + ;(config as Recordable).headers.Authorization = 'Bearer ' + getAccessToken() // 让每个请求携带自定义token + } + // 设置租户 + if (tenantEnable && tenantEnable === 'true') { + const tenantId = getTenantId() + if (tenantId) (config as Recordable).headers['tenant-id'] = tenantId + } + const params = config.params || {} + const data = config.data || false + if ( + config.method?.toUpperCase() === 'POST' && + (config.headers as AxiosRequestHeaders)['Content-Type'] === + 'application/x-www-form-urlencoded' + ) { + config.data = qs.stringify(data) + } + // get参数编码 + if (config.method?.toUpperCase() === 'GET' && params) { + config.params = {} + const paramsStr = qs.stringify(params, { allowDots: true }) + if (paramsStr) { + config.url = config.url + '?' + paramsStr + } + } + return config + }, + (error: AxiosError) => { + // Do something with request error + console.log(error) // for debug + Promise.reject(error) + } +) + +// response 拦截器 +service.interceptors.response.use( + async (response: AxiosResponse) => { + let { data } = response + const config = response.config + if (!data) { + // 返回“[HTTP]请求没有返回值”; + throw new Error() + } + const { t } = useI18n() + // 未设置状态码则默认成功状态 + // 二进制数据则直接返回,例如说 Excel 导出 + if ( + response.request.responseType === 'blob' || + response.request.responseType === 'arraybuffer' + ) { + // 注意:如果导出的响应为 json,说明可能失败了,不直接返回进行下载 + if (response.data.type !== 'application/json') { + return response.data + } + data = await new Response(response.data).json() + } + const code = data.code || result_code + // 获取错误信息 + const msg = data.msg || errorCode[code] || errorCode['default'] + if (ignoreMsgs.indexOf(msg) !== -1) { + // 如果是忽略的错误码,直接返回 msg 异常 + return Promise.reject(msg) + } else if (code === 401) { + // 如果未认证,并且未进行刷新令牌,说明可能是访问令牌过期了 + if (!isRefreshToken) { + isRefreshToken = true + // 1. 如果获取不到刷新令牌,则只能执行登出操作 + if (!getRefreshToken()) { + return handleAuthorized() + } + // 2. 进行刷新访问令牌 + try { + const refreshTokenRes = await refreshToken() + // 2.1 刷新成功,则回放队列的请求 + 当前请求 + setToken((await refreshTokenRes).data.data) + config.headers!.Authorization = 'Bearer ' + getAccessToken() + requestList.forEach((cb: any) => { + cb() + }) + requestList = [] + return service(config) + } catch (e) { + // 为什么需要 catch 异常呢?刷新失败时,请求因为 Promise.reject 触发异常。 + // 2.2 刷新失败,只回放队列的请求 + requestList.forEach((cb: any) => { + cb() + }) + // 提示是否要登出。即不回放当前请求!不然会形成递归 + return handleAuthorized() + } finally { + requestList = [] + isRefreshToken = false + } + } else { + // 添加到队列,等待刷新获取到新的令牌 + return new Promise((resolve) => { + requestList.push(() => { + config.headers!.Authorization = 'Bearer ' + getAccessToken() // 让每个请求携带自定义token 请根据实际情况自行修改 + resolve(service(config)) + }) + }) + } + } else if (code === 500) { + ElMessage.error(t('sys.api.errMsg500')) + return Promise.reject(new Error(msg)) + } else if (code === 901) { + ElMessage.error({ + offset: 300, + dangerouslyUseHTMLString: true, + message: + '
    ' + + t('sys.api.errMsg901') + + '
    ' + + '
     
    ' + + '
    https://www.yixiang.co/
    ' + + '
     
    ' + + '
    ' + }) + return Promise.reject(new Error(msg)) + } else if (code !== 200) { + if (msg === '无效的刷新令牌') { + // hard coding:忽略这个提示,直接登出 + console.log(msg) + } else { + ElNotification.error({ title: msg }) + } + return Promise.reject('error') + } else { + return data + } + }, + (error: AxiosError) => { + console.log('err' + error) // for debug + let { message } = error + const { t } = useI18n() + if (message === 'Network Error') { + message = t('sys.api.errorMessage') + } else if (message.includes('timeout')) { + message = t('sys.api.apiTimeoutMessage') + } else if (message.includes('Request failed with status code')) { + message = t('sys.api.apiRequestFailed') + message.substr(message.length - 3) + } + ElMessage.error(message) + return Promise.reject(error) + } +) + +const refreshToken = async () => { + axios.defaults.headers.common['tenant-id'] = getTenantId() + return await axios.post(base_url + '/system/auth/refresh-token?refreshToken=' + getRefreshToken()) +} +const handleAuthorized = () => { + const { t } = useI18n() + if (!isRelogin.show) { + // 如果已经到重新登录页面则不进行弹窗提示 + if (window.location.href.includes('login?redirect=')) { + return + } + isRelogin.show = true + ElMessageBox.confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle'), { + showCancelButton: false, + closeOnClickModal: false, + showClose: false, + confirmButtonText: t('login.relogin'), + type: 'warning' + }).then(() => { + resetRouter() // 重置静态路由表 + deleteUserCache() // 删除用户缓存 + removeToken() + isRelogin.show = false + // 干掉token后再走一次路由让它过router.beforeEach的校验 + window.location.href = window.location.href + }) + } + return Promise.reject(t('sys.api.timeoutMessage')) +} +export { service } diff --git a/yshop-drink-vue3/src/directives/index.ts b/yshop-drink-vue3/src/directives/index.ts new file mode 100644 index 0000000..89cc8ba --- /dev/null +++ b/yshop-drink-vue3/src/directives/index.ts @@ -0,0 +1,13 @@ +import type { App } from 'vue' +import { hasRole } from './permission/hasRole' +import { hasPermi } from './permission/hasPermi' + +/** + * 导出指令:v-xxx + * @methods hasRole 用户权限,用法: v-hasRole + * @methods hasPermi 按钮权限,用法: v-hasPermi + */ +export const setupAuth = (app: App) => { + hasRole(app) + hasPermi(app) +} diff --git a/yshop-drink-vue3/src/directives/permission/hasPermi.ts b/yshop-drink-vue3/src/directives/permission/hasPermi.ts new file mode 100644 index 0000000..d86d2f5 --- /dev/null +++ b/yshop-drink-vue3/src/directives/permission/hasPermi.ts @@ -0,0 +1,27 @@ +import type { App } from 'vue' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' + +const { t } = useI18n() // 国际化 + +export function hasPermi(app: App) { + app.directive('hasPermi', (el, binding) => { + const { wsCache } = useCache() + const { value } = binding + const all_permission = '*:*:*' + const permissions = wsCache.get(CACHE_KEY.USER).permissions + + if (value && value instanceof Array && value.length > 0) { + const permissionFlag = value + + const hasPermissions = permissions.some((permission: string) => { + return all_permission === permission || permissionFlag.includes(permission) + }) + + if (!hasPermissions) { + el.parentNode && el.parentNode.removeChild(el) + } + } else { + throw new Error(t('permission.hasPermission')) + } + }) +} diff --git a/yshop-drink-vue3/src/directives/permission/hasRole.ts b/yshop-drink-vue3/src/directives/permission/hasRole.ts new file mode 100644 index 0000000..31a352a --- /dev/null +++ b/yshop-drink-vue3/src/directives/permission/hasRole.ts @@ -0,0 +1,27 @@ +import type { App } from 'vue' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' + +const { t } = useI18n() // 国际化 + +export function hasRole(app: App) { + app.directive('hasRole', (el, binding) => { + const { wsCache } = useCache() + const { value } = binding + const super_admin = 'admin' + const roles = wsCache.get(CACHE_KEY.USER).roles + + if (value && value instanceof Array && value.length > 0) { + const roleFlag = value + + const hasRole = roles.some((role: string) => { + return super_admin === role || roleFlag.includes(role) + }) + + if (!hasRole) { + el.parentNode && el.parentNode.removeChild(el) + } + } else { + throw new Error(t('permission.hasRole')) + } + }) +} diff --git a/yshop-drink-vue3/src/hooks/event/useScrollTo.ts b/yshop-drink-vue3/src/hooks/event/useScrollTo.ts new file mode 100644 index 0000000..92aec87 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/event/useScrollTo.ts @@ -0,0 +1,60 @@ +export interface ScrollToParams { + el: HTMLElement + to: number + position: string + duration?: number + callback?: () => void +} + +const easeInOutQuad = (t: number, b: number, c: number, d: number) => { + t /= d / 2 + if (t < 1) { + return (c / 2) * t * t + b + } + t-- + return (-c / 2) * (t * (t - 2) - 1) + b +} +const move = (el: HTMLElement, position: string, amount: number) => { + el[position] = amount +} + +export function useScrollTo({ + el, + position = 'scrollLeft', + to, + duration = 500, + callback +}: ScrollToParams) { + const isActiveRef = ref(false) + const start = el[position] + const change = to - start + const increment = 20 + let currentTime = 0 + + function animateScroll() { + if (!unref(isActiveRef)) { + return + } + currentTime += increment + const val = easeInOutQuad(currentTime, start, change, duration) + move(el, position, val) + if (currentTime < duration && unref(isActiveRef)) { + requestAnimationFrame(animateScroll) + } else { + if (callback) { + callback() + } + } + } + + function run() { + isActiveRef.value = true + animateScroll() + } + + function stop() { + isActiveRef.value = false + } + + return { start: run, stop } +} diff --git a/yshop-drink-vue3/src/hooks/web/useCache.ts b/yshop-drink-vue3/src/hooks/web/useCache.ts new file mode 100644 index 0000000..4f39f30 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useCache.ts @@ -0,0 +1,39 @@ +/** + * 配置浏览器本地存储的方式,可直接存储对象数组。 + */ + +import WebStorageCache from 'web-storage-cache' + +type CacheType = 'localStorage' | 'sessionStorage' + +export const CACHE_KEY = { + // 用户相关 + ROLE_ROUTERS: 'roleRouters', + USER: 'user', + // 系统设置 + IS_DARK: 'isDark', + LANG: 'lang', + THEME: 'theme', + LAYOUT: 'layout', + DICT_CACHE: 'dictCache', + // 登录表单 + LoginForm: 'loginForm', + TenantId: 'tenantId' +} + +export const useCache = (type: CacheType = 'localStorage') => { + const wsCache: WebStorageCache = new WebStorageCache({ + storage: type + }) + + return { + wsCache + } +} + +export const deleteUserCache = () => { + const { wsCache } = useCache() + wsCache.delete(CACHE_KEY.USER) + wsCache.delete(CACHE_KEY.ROLE_ROUTERS) + // 注意,不要清理 LoginForm 登录表单 +} diff --git a/yshop-drink-vue3/src/hooks/web/useConfigGlobal.ts b/yshop-drink-vue3/src/hooks/web/useConfigGlobal.ts new file mode 100644 index 0000000..afb3db3 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useConfigGlobal.ts @@ -0,0 +1,9 @@ +import { ConfigGlobalTypes } from '@/types/configGlobal' + +export const useConfigGlobal = () => { + const configGlobal = inject('configGlobal', {}) as ConfigGlobalTypes + + return { + configGlobal + } +} diff --git a/yshop-drink-vue3/src/hooks/web/useCrudSchemas.ts b/yshop-drink-vue3/src/hooks/web/useCrudSchemas.ts new file mode 100644 index 0000000..458b57e --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useCrudSchemas.ts @@ -0,0 +1,326 @@ +import { reactive } from 'vue' +import { AxiosPromise } from 'axios' +import { findIndex } from '@/utils' +import { eachTree, filter, treeMap } from '@/utils/tree' +import { getBoolDictOptions, getDictOptions, getIntDictOptions } from '@/utils/dict' + +import { FormSchema } from '@/types/form' +import { TableColumn } from '@/types/table' +import { DescriptionsSchema } from '@/types/descriptions' +import { ComponentOptions, ComponentProps } from '@/types/components' +import { DictTag } from '@/components/DictTag' +import { cloneDeep, merge } from 'lodash-es' + +export type CrudSchema = Omit & { + isSearch?: boolean // 是否在查询显示 + search?: CrudSearchParams // 查询的详细配置 + isTable?: boolean // 是否在列表显示 + table?: CrudTableParams // 列表的详细配置 + isForm?: boolean // 是否在表单显示 + form?: CrudFormParams // 表单的详细配置 + isDetail?: boolean // 是否在详情显示 + detail?: CrudDescriptionsParams // 详情的详细配置 + children?: CrudSchema[] + dictType?: string // 字典类型 + dictClass?: 'string' | 'number' | 'boolean' // 字典数据类型 string | number | boolean +} + +type CrudSearchParams = { + // 是否显示在查询项 + show?: boolean + // 接口 + api?: () => Promise + // 搜索字段 + field?: string +} & Omit + +type CrudTableParams = { + // 是否显示表头 + show?: boolean + // 列宽配置 + width?: number | string + // 列是否固定在左侧或者右侧 + fixed?: 'left' | 'right' +} & Omit +type CrudFormParams = { + // 是否显示表单项 + show?: boolean + // 接口 + api?: () => Promise +} & Omit + +type CrudDescriptionsParams = { + // 是否显示表单项 + show?: boolean +} & Omit + +interface AllSchemas { + searchSchema: FormSchema[] + tableColumns: TableColumn[] + formSchema: FormSchema[] + detailSchema: DescriptionsSchema[] +} + +const { t } = useI18n() + +// 过滤所有结构 +export const useCrudSchemas = ( + crudSchema: CrudSchema[] +): { + allSchemas: AllSchemas +} => { + // 所有结构数据 + const allSchemas = reactive({ + searchSchema: [], + tableColumns: [], + formSchema: [], + detailSchema: [] + }) + + const searchSchema = filterSearchSchema(crudSchema, allSchemas) + allSchemas.searchSchema = searchSchema || [] + + const tableColumns = filterTableSchema(crudSchema) + allSchemas.tableColumns = tableColumns || [] + + const formSchema = filterFormSchema(crudSchema, allSchemas) + allSchemas.formSchema = formSchema + + const detailSchema = filterDescriptionsSchema(crudSchema) + allSchemas.detailSchema = detailSchema + + return { + allSchemas + } +} + +// 过滤 Search 结构 +const filterSearchSchema = (crudSchema: CrudSchema[], allSchemas: AllSchemas): FormSchema[] => { + const searchSchema: FormSchema[] = [] + + // 获取字典列表队列 + const searchRequestTask: Array<() => Promise> = [] + eachTree(crudSchema, (schemaItem: CrudSchema) => { + // 判断是否显示 + if (schemaItem?.isSearch || schemaItem.search?.show) { + let component = schemaItem?.search?.component || 'Input' + const options: ComponentOptions[] = [] + let comonentProps: ComponentProps = {} + if (schemaItem.dictType) { + const allOptions: ComponentOptions = { label: '全部', value: '' } + options.push(allOptions) + getDictOptions(schemaItem.dictType).forEach((dict) => { + options.push(dict) + }) + comonentProps = { + options: options + } + if (!schemaItem.search?.component) component = 'Select' + } + + // updated by AKing: 解决了当使用默认的dict选项时,form中事件不能触发的问题 + const searchSchemaItem = merge( + { + // 默认为 input + component, + ...schemaItem.search, + field: schemaItem.field, + label: schemaItem.search?.label || schemaItem.label + }, + { componentProps: comonentProps } + ) + if (searchSchemaItem.api) { + searchRequestTask.push(async () => { + const res = await (searchSchemaItem.api as () => AxiosPromise)() + if (res) { + const index = findIndex(allSchemas.searchSchema, (v: FormSchema) => { + return v.field === searchSchemaItem.field + }) + if (index !== -1) { + allSchemas.searchSchema[index]!.componentProps!.options = filterOptions( + res, + searchSchemaItem.componentProps.optionsAlias?.labelField + ) + } + } + }) + } + // 删除不必要的字段 + delete searchSchemaItem.show + + searchSchema.push(searchSchemaItem) + } + }) + for (const task of searchRequestTask) { + task() + } + return searchSchema +} + +// 过滤 table 结构 +const filterTableSchema = (crudSchema: CrudSchema[]): TableColumn[] => { + const tableColumns = treeMap(crudSchema, { + conversion: (schema: CrudSchema) => { + if (schema?.isTable !== false && schema?.table?.show !== false) { + // add by 芋艿:增加对 dict 字典数据的支持 + if (!schema.formatter && schema.dictType) { + schema.formatter = (_: Recordable, __: TableColumn, cellValue: any) => { + return h(DictTag, { + type: schema.dictType!, // ! 表示一定不为空 + value: cellValue + }) + } + } + return { + ...schema.table, + ...schema + } + } + } + }) + + // 第一次过滤会有 undefined 所以需要二次过滤 + return filter(tableColumns as TableColumn[], (data) => { + if (data.children === void 0) { + delete data.children + } + return !!data.field + }) +} + +// 过滤 form 结构 +const filterFormSchema = (crudSchema: CrudSchema[], allSchemas: AllSchemas): FormSchema[] => { + const formSchema: FormSchema[] = [] + + // 获取字典列表队列 + const formRequestTask: Array<() => Promise> = [] + + eachTree(crudSchema, (schemaItem: CrudSchema) => { + // 判断是否显示 + if (schemaItem?.isForm !== false && schemaItem?.form?.show !== false) { + let component = schemaItem?.form?.component || 'Input' + let defaultValue: any = '' + if (schemaItem.form?.value) { + defaultValue = schemaItem.form?.value + } else { + if (component === 'InputNumber') { + defaultValue = 0 + } + } + let comonentProps: ComponentProps = {} + if (schemaItem.dictType) { + const options: ComponentOptions[] = [] + if (schemaItem.dictClass && schemaItem.dictClass === 'number') { + getIntDictOptions(schemaItem.dictType).forEach((dict) => { + options.push(dict) + }) + } else if (schemaItem.dictClass && schemaItem.dictClass === 'boolean') { + getBoolDictOptions(schemaItem.dictType).forEach((dict) => { + options.push(dict) + }) + } else { + getDictOptions(schemaItem.dictType).forEach((dict) => { + options.push(dict) + }) + } + comonentProps = { + options: options + } + if (!(schemaItem.form && schemaItem.form.component)) component = 'Select' + } + + // updated by AKing: 解决了当使用默认的dict选项时,form中事件不能触发的问题 + const formSchemaItem = merge( + { + // 默认为 input + component, + value: defaultValue, + ...schemaItem.form, + field: schemaItem.field, + label: schemaItem.form?.label || schemaItem.label + }, + { componentProps: comonentProps } + ) + + if (formSchemaItem.api) { + formRequestTask.push(async () => { + const res = await (formSchemaItem.api as () => AxiosPromise)() + if (res) { + const index = findIndex(allSchemas.formSchema, (v: FormSchema) => { + return v.field === formSchemaItem.field + }) + if (index !== -1) { + allSchemas.formSchema[index]!.componentProps!.options = filterOptions( + res, + formSchemaItem.componentProps.optionsAlias?.labelField + ) + } + } + }) + } + + // 删除不必要的字段 + delete formSchemaItem.show + + formSchema.push(formSchemaItem) + } + }) + + for (const task of formRequestTask) { + task() + } + return formSchema +} + +// 过滤 descriptions 结构 +const filterDescriptionsSchema = (crudSchema: CrudSchema[]): DescriptionsSchema[] => { + const descriptionsSchema: FormSchema[] = [] + + eachTree(crudSchema, (schemaItem: CrudSchema) => { + // 判断是否显示 + if (schemaItem?.isDetail !== false && schemaItem.detail?.show !== false) { + const descriptionsSchemaItem = { + ...schemaItem.detail, + field: schemaItem.field, + label: schemaItem.detail?.label || schemaItem.label + } + if (schemaItem.dictType) { + descriptionsSchemaItem.dictType = schemaItem.dictType + } + if (schemaItem.detail?.dateFormat || schemaItem.formatter == 'formatDate') { + // 优先使用 detail 下的配置,如果没有默认为 YYYY-MM-DD HH:mm:ss + descriptionsSchemaItem.dateFormat = schemaItem?.detail?.dateFormat + ? schemaItem?.detail?.dateFormat + : 'YYYY-MM-DD HH:mm:ss' + } + + // 删除不必要的字段 + delete descriptionsSchemaItem.show + + descriptionsSchema.push(descriptionsSchemaItem) + } + }) + + return descriptionsSchema +} + +// 给options添加国际化 +const filterOptions = (options: Recordable, labelField?: string) => { + return options?.map((v: Recordable) => { + if (labelField) { + v['labelField'] = t(v.labelField) + } else { + v['label'] = t(v.label) + } + return v + }) +} + +// 将 tableColumns 指定 fields 放到最前面 +export const sortTableColumns = (tableColumns: TableColumn[], field: string) => { + const fieldIndex = tableColumns.findIndex((item) => item.field === field) + const fieldColumn = cloneDeep(tableColumns[fieldIndex]) + tableColumns.splice(fieldIndex, 1) + // 添加到开头 + tableColumns.unshift(fieldColumn) +} diff --git a/yshop-drink-vue3/src/hooks/web/useDesign.ts b/yshop-drink-vue3/src/hooks/web/useDesign.ts new file mode 100644 index 0000000..8ee3b38 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useDesign.ts @@ -0,0 +1,18 @@ +import variables from '@/styles/global.module.scss' + +export const useDesign = () => { + const scssVariables = variables + + /** + * @param scope 类名 + * @returns 返回空间名-类名 + */ + const getPrefixCls = (scope: string) => { + return `${scssVariables.namespace}-${scope}` + } + + return { + variables: scssVariables, + getPrefixCls + } +} diff --git a/yshop-drink-vue3/src/hooks/web/useEmitt.ts b/yshop-drink-vue3/src/hooks/web/useEmitt.ts new file mode 100644 index 0000000..d4efea7 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useEmitt.ts @@ -0,0 +1,22 @@ +import mitt from 'mitt' + +interface Option { + name: string // 事件名称 + callback: Fn // 回调 +} + +const emitter = mitt() + +export const useEmitt = (option?: Option) => { + if (option) { + emitter.on(option.name, option.callback) + + onBeforeUnmount(() => { + emitter.off(option.name) + }) + } + + return { + emitter + } +} diff --git a/yshop-drink-vue3/src/hooks/web/useForm.ts b/yshop-drink-vue3/src/hooks/web/useForm.ts new file mode 100644 index 0000000..53a8a94 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useForm.ts @@ -0,0 +1,94 @@ +import type { Form, FormExpose } from '@/components/Form' +import type { ElForm } from 'element-plus' +import type { FormProps } from '@/components/Form/src/types' +import { FormSchema, FormSetPropsType } from '@/types/form' + +export const useForm = (props?: FormProps) => { + // From实例 + const formRef = ref() + + // ElForm实例 + const elFormRef = ref>() + + /** + * @param ref Form实例 + * @param elRef ElForm实例 + */ + const register = (ref: typeof Form & FormExpose, elRef: ComponentRef) => { + formRef.value = ref + elFormRef.value = elRef + } + + const getForm = async () => { + await nextTick() + const form = unref(formRef) + if (!form) { + console.error('The form is not registered. Please use the register method to register') + } + return form + } + + // 一些内置的方法 + const methods: { + setProps: (props: Recordable) => void + setValues: (data: Recordable) => void + getFormData: () => Promise + setSchema: (schemaProps: FormSetPropsType[]) => void + addSchema: (formSchema: FormSchema, index?: number) => void + delSchema: (field: string) => void + } = { + setProps: async (props: FormProps = {}) => { + const form = await getForm() + form?.setProps(props) + if (props.model) { + form?.setValues(props.model) + } + }, + + setValues: async (data: Recordable) => { + const form = await getForm() + form?.setValues(data) + }, + + /** + * @param schemaProps 需要设置的schemaProps + */ + setSchema: async (schemaProps: FormSetPropsType[]) => { + const form = await getForm() + form?.setSchema(schemaProps) + }, + + /** + * @param formSchema 需要新增数据 + * @param index 在哪里新增 + */ + addSchema: async (formSchema: FormSchema, index?: number) => { + const form = await getForm() + form?.addSchema(formSchema, index) + }, + + /** + * @param field 删除哪个数据 + */ + delSchema: async (field: string) => { + const form = await getForm() + form?.delSchema(field) + }, + + /** + * @returns form data + */ + getFormData: async (): Promise => { + const form = await getForm() + return form?.formModel as T + } + } + + props && methods.setProps(props) + + return { + register, + elFormRef, + methods + } +} diff --git a/yshop-drink-vue3/src/hooks/web/useGuide.ts b/yshop-drink-vue3/src/hooks/web/useGuide.ts new file mode 100644 index 0000000..7fd2fb0 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useGuide.ts @@ -0,0 +1,49 @@ +import { Config, driver } from 'driver.js' +import 'driver.js/dist/driver.css' +import { useDesign } from '@/hooks/web/useDesign' +import { useI18n } from '@/hooks/web/useI18n' + +const { t } = useI18n() + +const { variables } = useDesign() + +export const useGuide = (options?: Config) => { + const driverObj = driver( + options || { + showProgress: true, + nextBtnText: t('common.nextLabel'), + prevBtnText: t('common.prevLabel'), + doneBtnText: t('common.doneLabel'), + steps: [ + { + element: `#${variables.namespace}-menu`, + popover: { + title: t('common.menu'), + description: t('common.menuDes'), + side: 'right' + } + }, + { + element: `#${variables.namespace}-tool-header`, + popover: { + title: t('common.tool'), + description: t('common.toolDes'), + side: 'left' + } + }, + { + element: `#${variables.namespace}-tags-view`, + popover: { + title: t('common.tagsView'), + description: t('common.tagsViewDes'), + side: 'bottom' + } + } + ] + } + ) + + return { + ...driverObj + } +} diff --git a/yshop-drink-vue3/src/hooks/web/useI18n.ts b/yshop-drink-vue3/src/hooks/web/useI18n.ts new file mode 100644 index 0000000..d1ab70f --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useI18n.ts @@ -0,0 +1,53 @@ +import { i18n } from '@/plugins/vueI18n' + +type I18nGlobalTranslation = { + (key: string): string + (key: string, locale: string): string + (key: string, locale: string, list: unknown[]): string + (key: string, locale: string, named: Record): string + (key: string, list: unknown[]): string + (key: string, named: Record): string +} + +type I18nTranslationRestParameters = [string, any] + +const getKey = (namespace: string | undefined, key: string) => { + if (!namespace) { + return key + } + if (key.startsWith(namespace)) { + return key + } + return `${namespace}.${key}` +} + +export const useI18n = ( + namespace?: string +): { + t: I18nGlobalTranslation +} => { + const normalFn = { + t: (key: string) => { + return getKey(namespace, key) + } + } + + if (!i18n) { + return normalFn + } + + const { t, ...methods } = i18n.global + + const tFn: I18nGlobalTranslation = (key: string, ...arg: any[]) => { + if (!key) return '' + if (!key.includes('.') && !namespace) return key + //@ts-ignore + return t(getKey(namespace, key), ...(arg as I18nTranslationRestParameters)) + } + return { + ...methods, + t: tFn + } +} + +export const t = (key: string) => key diff --git a/yshop-drink-vue3/src/hooks/web/useIcon.ts b/yshop-drink-vue3/src/hooks/web/useIcon.ts new file mode 100644 index 0000000..3500204 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useIcon.ts @@ -0,0 +1,8 @@ +import { h } from 'vue' +import type { VNode } from 'vue' +import { Icon } from '@/components/Icon' +import { IconTypes } from '@/types/icon' + +export const useIcon = (props: IconTypes): VNode => { + return h(Icon, props) +} diff --git a/yshop-drink-vue3/src/hooks/web/useLocale.ts b/yshop-drink-vue3/src/hooks/web/useLocale.ts new file mode 100644 index 0000000..c65070e --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useLocale.ts @@ -0,0 +1,35 @@ +import { i18n } from '@/plugins/vueI18n' +import { useLocaleStoreWithOut } from '@/store/modules/locale' +import { setHtmlPageLang } from '@/plugins/vueI18n/helper' + +const setI18nLanguage = (locale: LocaleType) => { + const localeStore = useLocaleStoreWithOut() + + if (i18n.mode === 'legacy') { + i18n.global.locale = locale + } else { + ;(i18n.global.locale as any).value = locale + } + localeStore.setCurrentLocale({ + lang: locale + }) + setHtmlPageLang(locale) +} + +export const useLocale = () => { + // Switching the language will change the locale of useI18n + // And submit to configuration modification + const changeLocale = async (locale: LocaleType) => { + const globalI18n = i18n.global + + const langModule = await import(`../../locales/${locale}.ts`) + + globalI18n.setLocaleMessage(locale, langModule.default) + + setI18nLanguage(locale) + } + + return { + changeLocale + } +} diff --git a/yshop-drink-vue3/src/hooks/web/useMessage.ts b/yshop-drink-vue3/src/hooks/web/useMessage.ts new file mode 100644 index 0000000..ac2b552 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useMessage.ts @@ -0,0 +1,95 @@ +import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' +import { useI18n } from './useI18n' +export const useMessage = () => { + const { t } = useI18n() + return { + // 消息提示 + info(content: string) { + ElMessage.info(content) + }, + // 错误消息 + error(content: string) { + ElMessage.error(content) + }, + // 成功消息 + success(content: string) { + ElMessage.success(content) + }, + // 警告消息 + warning(content: string) { + ElMessage.warning(content) + }, + // 弹出提示 + alert(content: string) { + ElMessageBox.alert(content, t('common.confirmTitle')) + }, + // 错误提示 + alertError(content: string) { + ElMessageBox.alert(content, t('common.confirmTitle'), { type: 'error' }) + }, + // 成功提示 + alertSuccess(content: string) { + ElMessageBox.alert(content, t('common.confirmTitle'), { type: 'success' }) + }, + // 警告提示 + alertWarning(content: string) { + ElMessageBox.alert(content, t('common.confirmTitle'), { type: 'warning' }) + }, + // 通知提示 + notify(content: string) { + ElNotification.info(content) + }, + // 错误通知 + notifyError(content: string) { + ElNotification.error(content) + }, + // 成功通知 + notifySuccess(content: string) { + ElNotification.success(content) + }, + // 警告通知 + notifyWarning(content: string) { + ElNotification.warning(content) + }, + // 确认窗体 + confirm(content: string, tip?: string) { + return ElMessageBox.confirm(content, tip ? tip : t('common.confirmTitle'), { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + }) + }, + // 删除窗体 + delConfirm(content?: string, tip?: string) { + return ElMessageBox.confirm( + content ? content : t('common.delMessage'), + tip ? tip : t('common.confirmTitle'), + { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + } + ) + }, + // 导出窗体 + exportConfirm(content?: string, tip?: string) { + return ElMessageBox.confirm( + content ? content : t('common.exportMessage'), + tip ? tip : t('common.confirmTitle'), + { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + } + ) + }, + // 提交内容 + prompt(content: string, tip: string) { + return ElMessageBox.prompt(content, tip, { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + }) + } + } +} diff --git a/yshop-drink-vue3/src/hooks/web/useNProgress.ts b/yshop-drink-vue3/src/hooks/web/useNProgress.ts new file mode 100644 index 0000000..6d8c0b9 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useNProgress.ts @@ -0,0 +1,33 @@ +import { useCssVar } from '@vueuse/core' +import type { NProgressOptions } from 'nprogress' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' + +const primaryColor = useCssVar('--el-color-primary', document.documentElement) + +export const useNProgress = () => { + NProgress.configure({ showSpinner: false } as NProgressOptions) + + const initColor = async () => { + await nextTick() + const bar = document.getElementById('nprogress')?.getElementsByClassName('bar')[0] as ElRef + if (bar) { + bar.style.background = unref(primaryColor.value) + } + } + + initColor() + + const start = () => { + NProgress.start() + } + + const done = () => { + NProgress.done() + } + + return { + start, + done + } +} diff --git a/yshop-drink-vue3/src/hooks/web/useNetwork.ts b/yshop-drink-vue3/src/hooks/web/useNetwork.ts new file mode 100644 index 0000000..66fa446 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useNetwork.ts @@ -0,0 +1,21 @@ +import { ref, onBeforeUnmount } from 'vue' + +const useNetwork = () => { + const online = ref(true) + + const updateNetwork = () => { + online.value = navigator.onLine + } + + window.addEventListener('online', updateNetwork) + window.addEventListener('offline', updateNetwork) + + onBeforeUnmount(() => { + window.removeEventListener('online', updateNetwork) + window.removeEventListener('offline', updateNetwork) + }) + + return { online } +} + +export { useNetwork } diff --git a/yshop-drink-vue3/src/hooks/web/useNow.ts b/yshop-drink-vue3/src/hooks/web/useNow.ts new file mode 100644 index 0000000..09d3176 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useNow.ts @@ -0,0 +1,60 @@ +import { dateUtil } from '@/utils/dateUtil' +import { reactive, toRefs } from 'vue' +import { tryOnMounted, tryOnUnmounted } from '@vueuse/core' + +export const useNow = (immediate = true) => { + let timer: IntervalHandle + + const state = reactive({ + year: 0, + month: 0, + week: '', + day: 0, + hour: '', + minute: '', + second: 0, + meridiem: '' + }) + + const update = () => { + const now = dateUtil() + + const h = now.format('HH') + const m = now.format('mm') + const s = now.get('s') + + state.year = now.get('y') + state.month = now.get('M') + 1 + state.week = '星期' + ['日', '一', '二', '三', '四', '五', '六'][now.day()] + state.day = now.get('date') + state.hour = h + state.minute = m + state.second = s + + state.meridiem = now.format('A') + } + + function start() { + update() + clearInterval(timer) + timer = setInterval(() => update(), 1000) + } + + function stop() { + clearInterval(timer) + } + + tryOnMounted(() => { + immediate && start() + }) + + tryOnUnmounted(() => { + stop() + }) + + return { + ...toRefs(state), + start, + stop + } +} diff --git a/yshop-drink-vue3/src/hooks/web/usePageLoading.ts b/yshop-drink-vue3/src/hooks/web/usePageLoading.ts new file mode 100644 index 0000000..bb89457 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/usePageLoading.ts @@ -0,0 +1,18 @@ +import { useAppStoreWithOut } from '@/store/modules/app' + +const appStore = useAppStoreWithOut() + +export const usePageLoading = () => { + const loadStart = () => { + appStore.setPageLoading(true) + } + + const loadDone = () => { + appStore.setPageLoading(false) + } + + return { + loadStart, + loadDone + } +} diff --git a/yshop-drink-vue3/src/hooks/web/useTable.ts b/yshop-drink-vue3/src/hooks/web/useTable.ts new file mode 100644 index 0000000..361dd67 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useTable.ts @@ -0,0 +1,223 @@ +import download from '@/utils/download' +import { Table, TableExpose } from '@/components/Table' +import { ElMessage, ElMessageBox, ElTable } from 'element-plus' +import { computed, nextTick, reactive, ref, unref, watch } from 'vue' +import type { TableProps } from '@/components/Table/src/types' + +import { TableSetPropsType } from '@/types/table' + +const { t } = useI18n() +interface ResponseType { + list: T[] + total?: number +} + +interface UseTableConfig { + getListApi: (option: any) => Promise + delListApi?: (option: any) => Promise + exportListApi?: (option: any) => Promise + // 返回数据格式配置 + response?: ResponseType + // 默认传递的参数 + defaultParams?: Recordable + props?: TableProps +} + +interface TableObject { + pageSize: number + currentPage: number + total: number + tableList: T[] + params: any + loading: boolean + exportLoading: boolean + currentRow: Nullable +} + +export const useTable = (config?: UseTableConfig) => { + const tableObject = reactive>({ + // 页数 + pageSize: 10, + // 当前页 + currentPage: 1, + // 总条数 + total: 10, + // 表格数据 + tableList: [], + // AxiosConfig 配置 + params: { + ...(config?.defaultParams || {}) + }, + // 加载中 + loading: true, + // 导出加载中 + exportLoading: false, + // 当前行的数据 + currentRow: null + }) + + const paramsObj = computed(() => { + return { + ...tableObject.params, + pageSize: tableObject.pageSize, + pageNo: tableObject.currentPage + } + }) + + watch( + () => tableObject.currentPage, + () => { + methods.getList() + } + ) + + watch( + () => tableObject.pageSize, + () => { + // 当前页不为1时,修改页数后会导致多次调用getList方法 + if (tableObject.currentPage === 1) { + methods.getList() + } else { + tableObject.currentPage = 1 + methods.getList() + } + } + ) + + // Table实例 + const tableRef = ref() + + // ElTable实例 + const elTableRef = ref>() + + const register = (ref: typeof Table & TableExpose, elRef: ComponentRef) => { + tableRef.value = ref + elTableRef.value = elRef + } + + const getTable = async () => { + await nextTick() + const table = unref(tableRef) + if (!table) { + console.error('The table is not registered. Please use the register method to register') + } + return table + } + + const delData = async (ids: string | number | string[] | number[]) => { + let idsLength = 1 + if (ids instanceof Array) { + idsLength = ids.length + await Promise.all( + ids.map(async (id: string | number) => { + await (config?.delListApi && config?.delListApi(id)) + }) + ) + } else { + await (config?.delListApi && config?.delListApi(ids)) + } + ElMessage.success(t('common.delSuccess')) + + // 计算出临界点 + tableObject.currentPage = + tableObject.total % tableObject.pageSize === idsLength || tableObject.pageSize === 1 + ? tableObject.currentPage > 1 + ? tableObject.currentPage - 1 + : tableObject.currentPage + : tableObject.currentPage + await methods.getList() + } + + const methods = { + getList: async () => { + tableObject.loading = true + const res = await config?.getListApi(unref(paramsObj)).finally(() => { + tableObject.loading = false + }) + if (res) { + tableObject.tableList = (res as unknown as ResponseType).list + tableObject.total = (res as unknown as ResponseType).total ?? 0 + } + }, + setProps: async (props: TableProps = {}) => { + const table = await getTable() + table?.setProps(props) + }, + setColumn: async (columnProps: TableSetPropsType[]) => { + const table = await getTable() + table?.setColumn(columnProps) + }, + getSelections: async () => { + const table = await getTable() + return (table?.selections || []) as T[] + }, + // 与Search组件结合 + setSearchParams: (data: Recordable) => { + tableObject.params = Object.assign(tableObject.params, { + pageSize: tableObject.pageSize, + pageNo: 1, + ...data + }) + // 页码不等于1时更新页码重新获取数据,页码等于1时重新获取数据 + if (tableObject.currentPage !== 1) { + tableObject.currentPage = 1 + } else { + methods.getList() + } + }, + // 删除数据 + delList: async ( + ids: string | number | string[] | number[], + multiple: boolean, + message = true + ) => { + const tableRef = await getTable() + if (multiple) { + if (!tableRef?.selections.length) { + ElMessage.warning(t('common.delNoData')) + return + } + } + if (message) { + ElMessageBox.confirm(t('common.delMessage'), t('common.confirmTitle'), { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + }).then(async () => { + await delData(ids) + }) + } else { + await delData(ids) + } + }, + // 导出列表 + exportList: async (fileName: string) => { + tableObject.exportLoading = true + ElMessageBox.confirm(t('common.exportMessage'), t('common.confirmTitle'), { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + }) + .then(async () => { + const res = await config?.exportListApi?.(unref(paramsObj) as unknown as T) + if (res) { + download.excel(res as unknown as Blob, fileName) + } + }) + .finally(() => { + tableObject.exportLoading = false + }) + } + } + + config?.props && methods.setProps(config.props) + + return { + register, + elTableRef, + tableObject, + methods, + // add by 芋艿:返回 tableMethods 属性,和 tableObject 更统一 + tableMethods: methods + } +} diff --git a/yshop-drink-vue3/src/hooks/web/useTagsView.ts b/yshop-drink-vue3/src/hooks/web/useTagsView.ts new file mode 100644 index 0000000..31eadb0 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useTagsView.ts @@ -0,0 +1,63 @@ +import { useTagsViewStoreWithOut } from '@/store/modules/tagsView' +import { RouteLocationNormalizedLoaded, useRouter } from 'vue-router' +import { computed, nextTick, unref } from 'vue' + +export const useTagsView = () => { + const tagsViewStore = useTagsViewStoreWithOut() + + const { replace, currentRoute } = useRouter() + + const selectedTag = computed(() => tagsViewStore.getSelectedTag) + + const closeAll = (callback?: Fn) => { + tagsViewStore.delAllViews() + callback?.() + } + + const closeLeft = (callback?: Fn) => { + tagsViewStore.delLeftViews(unref(selectedTag) as RouteLocationNormalizedLoaded) + callback?.() + } + + const closeRight = (callback?: Fn) => { + tagsViewStore.delRightViews(unref(selectedTag) as RouteLocationNormalizedLoaded) + callback?.() + } + + const closeOther = (callback?: Fn) => { + tagsViewStore.delOthersViews(unref(selectedTag) as RouteLocationNormalizedLoaded) + callback?.() + } + + const closeCurrent = (view?: RouteLocationNormalizedLoaded, callback?: Fn) => { + if (view?.meta?.affix) return + tagsViewStore.delView(view || unref(currentRoute)) + + callback?.() + } + + const refreshPage = async (view?: RouteLocationNormalizedLoaded, callback?: Fn) => { + tagsViewStore.delCachedView() + const { path, query } = view || unref(currentRoute) + await nextTick() + replace({ + path: '/redirect' + path, + query: query + }) + callback?.() + } + + const setTitle = (title: string, path?: string) => { + tagsViewStore.setTitle(title, path) + } + + return { + closeAll, + closeLeft, + closeRight, + closeOther, + closeCurrent, + refreshPage, + setTitle + } +} diff --git a/yshop-drink-vue3/src/hooks/web/useTimeAgo.ts b/yshop-drink-vue3/src/hooks/web/useTimeAgo.ts new file mode 100644 index 0000000..a6da281 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useTimeAgo.ts @@ -0,0 +1,49 @@ +import { useTimeAgo as useTimeAgoCore, UseTimeAgoMessages } from '@vueuse/core' +import { useLocaleStoreWithOut } from '@/store/modules/locale' + +const TIME_AGO_MESSAGE_MAP: { + 'zh-CN': UseTimeAgoMessages + en: UseTimeAgoMessages +} = { + // @ts-ignore + 'zh-CN': { + justNow: '刚刚', + past: (n) => (n.match(/\d/) ? `${n}前` : n), + future: (n) => (n.match(/\d/) ? `${n}后` : n), + month: (n, past) => (n === 1 ? (past ? '上个月' : '下个月') : `${n} 个月`), + year: (n, past) => (n === 1 ? (past ? '去年' : '明年') : `${n} 年`), + day: (n, past) => (n === 1 ? (past ? '昨天' : '明天') : `${n} 天`), + week: (n, past) => (n === 1 ? (past ? '上周' : '下周') : `${n} 周`), + hour: (n) => `${n} 小时`, + minute: (n) => `${n} 分钟`, + second: (n) => `${n} 秒` + }, + // @ts-ignore + en: { + justNow: 'just now', + past: (n) => (n.match(/\d/) ? `${n} ago` : n), + future: (n) => (n.match(/\d/) ? `in ${n}` : n), + month: (n, past) => + n === 1 ? (past ? 'last month' : 'next month') : `${n} month${n > 1 ? 's' : ''}`, + year: (n, past) => + n === 1 ? (past ? 'last year' : 'next year') : `${n} year${n > 1 ? 's' : ''}`, + day: (n, past) => (n === 1 ? (past ? 'yesterday' : 'tomorrow') : `${n} day${n > 1 ? 's' : ''}`), + week: (n, past) => + n === 1 ? (past ? 'last week' : 'next week') : `${n} week${n > 1 ? 's' : ''}`, + hour: (n) => `${n} hour${n > 1 ? 's' : ''}`, + minute: (n) => `${n} minute${n > 1 ? 's' : ''}`, + second: (n) => `${n} second${n > 1 ? 's' : ''}` + } +} + +export const useTimeAgo = (time: Date | number | string) => { + const localeStore = useLocaleStoreWithOut() + + const currentLocale = computed(() => localeStore.getCurrentLocale) + + const timeAgo = useTimeAgoCore(time, { + messages: TIME_AGO_MESSAGE_MAP[unref(currentLocale).lang] + }) + + return timeAgo +} diff --git a/yshop-drink-vue3/src/hooks/web/useTitle.ts b/yshop-drink-vue3/src/hooks/web/useTitle.ts new file mode 100644 index 0000000..020a9b7 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useTitle.ts @@ -0,0 +1,24 @@ +import { watch, ref } from 'vue' +import { isString } from '@/utils/is' +import { useAppStoreWithOut } from '@/store/modules/app' + +const appStore = useAppStoreWithOut() + +export const useTitle = (newTitle?: string) => { + const { t } = useI18n() + const title = ref( + newTitle ? `${appStore.getTitle} - ${t(newTitle as string)}` : appStore.getTitle + ) + + watch( + title, + (n, o) => { + if (isString(n) && n !== o && document) { + document.title = n + } + }, + { immediate: true } + ) + + return title +} diff --git a/yshop-drink-vue3/src/hooks/web/useValidator.ts b/yshop-drink-vue3/src/hooks/web/useValidator.ts new file mode 100644 index 0000000..151e35b --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useValidator.ts @@ -0,0 +1,60 @@ +import { useI18n } from '@/hooks/web/useI18n' +import { FormItemRule } from 'element-plus' + +const { t } = useI18n() + +interface LengthRange { + min: number + max: number + message?: string +} + +export const useValidator = () => { + const required = (message?: string): FormItemRule => { + return { + required: true, + message: message || t('common.required') + } + } + + const lengthRange = (options: LengthRange): FormItemRule => { + const { min, max, message } = options + + return { + min, + max, + message: message || t('common.lengthRange', { min, max }) + } + } + + const notSpace = (message?: string): FormItemRule => { + return { + validator: (_, val, callback) => { + if (val?.indexOf(' ') !== -1) { + callback(new Error(message || t('common.notSpace'))) + } else { + callback() + } + } + } + } + + const notSpecialCharacters = (message?: string): FormItemRule => { + return { + validator: (_, val, callback) => { + if (/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/gi.test(val)) { + callback(new Error(message || t('common.notSpecialCharacters'))) + } else { + callback() + } + } + } + } + + return { + required, + lengthRange, + notSpace, + notSpecialCharacters + } +} diff --git a/yshop-drink-vue3/src/hooks/web/useWatermark.ts b/yshop-drink-vue3/src/hooks/web/useWatermark.ts new file mode 100644 index 0000000..4a31359 --- /dev/null +++ b/yshop-drink-vue3/src/hooks/web/useWatermark.ts @@ -0,0 +1,55 @@ +const domSymbol = Symbol('watermark-dom') + +export function useWatermark(appendEl: HTMLElement | null = document.body) { + let func: Fn = () => {} + const id = domSymbol.toString() + const clear = () => { + const domId = document.getElementById(id) + if (domId) { + const el = appendEl + el && el.removeChild(domId) + } + window.removeEventListener('resize', func) + } + const createWatermark = (str: string) => { + clear() + + const can = document.createElement('canvas') + can.width = 300 + can.height = 240 + + const cans = can.getContext('2d') + if (cans) { + cans.rotate((-20 * Math.PI) / 120) + cans.font = '15px Vedana' + cans.fillStyle = 'rgba(0, 0, 0, 0.15)' + cans.textAlign = 'left' + cans.textBaseline = 'middle' + cans.fillText(str, can.width / 20, can.height) + } + + const div = document.createElement('div') + div.id = id + div.style.pointerEvents = 'none' + div.style.top = '0px' + div.style.left = '0px' + div.style.position = 'absolute' + div.style.zIndex = '100000000' + 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' + const el = appendEl + el && el.appendChild(div) + return id + } + + function setWatermark(str: string) { + createWatermark(str) + func = () => { + createWatermark(str) + } + window.addEventListener('resize', func) + } + + return { setWatermark, clear } +} diff --git a/yshop-drink-vue3/src/layout/Layout.vue b/yshop-drink-vue3/src/layout/Layout.vue new file mode 100644 index 0000000..43f9b69 --- /dev/null +++ b/yshop-drink-vue3/src/layout/Layout.vue @@ -0,0 +1,78 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/AppView.vue b/yshop-drink-vue3/src/layout/components/AppView.vue new file mode 100644 index 0000000..4434187 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/AppView.vue @@ -0,0 +1,72 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/Breadcrumb/index.ts b/yshop-drink-vue3/src/layout/components/Breadcrumb/index.ts new file mode 100644 index 0000000..93ffe70 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Breadcrumb/index.ts @@ -0,0 +1,3 @@ +import Breadcrumb from './src/Breadcrumb.vue' + +export { Breadcrumb } diff --git a/yshop-drink-vue3/src/layout/components/Breadcrumb/src/Breadcrumb.vue b/yshop-drink-vue3/src/layout/components/Breadcrumb/src/Breadcrumb.vue new file mode 100644 index 0000000..4079a06 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Breadcrumb/src/Breadcrumb.vue @@ -0,0 +1,130 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/Breadcrumb/src/helper.ts b/yshop-drink-vue3/src/layout/components/Breadcrumb/src/helper.ts new file mode 100644 index 0000000..fb3ec19 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Breadcrumb/src/helper.ts @@ -0,0 +1,31 @@ +import { pathResolve } from '@/utils/routerHelper' +import type { RouteMeta } from 'vue-router' + +export const filterBreadcrumb = ( + routes: AppRouteRecordRaw[], + parentPath = '' +): AppRouteRecordRaw[] => { + const res: AppRouteRecordRaw[] = [] + + for (const route of routes) { + const meta = route?.meta as RouteMeta + if (meta.hidden && !meta.canTo) { + continue + } + + const data: AppRouteRecordRaw = + !meta.alwaysShow && route.children?.length === 1 + ? { ...route.children[0], path: pathResolve(route.path, route.children[0].path) } + : { ...route } + + data.path = pathResolve(parentPath, data.path) + + if (data.children) { + data.children = filterBreadcrumb(data.children, data.path) + } + if (data) { + res.push(data) + } + } + return res +} diff --git a/yshop-drink-vue3/src/layout/components/Collapse/index.ts b/yshop-drink-vue3/src/layout/components/Collapse/index.ts new file mode 100644 index 0000000..73f65a3 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Collapse/index.ts @@ -0,0 +1,3 @@ +import Collapse from './src/Collapse.vue' + +export { Collapse } diff --git a/yshop-drink-vue3/src/layout/components/Collapse/src/Collapse.vue b/yshop-drink-vue3/src/layout/components/Collapse/src/Collapse.vue new file mode 100644 index 0000000..a8fc7ee --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Collapse/src/Collapse.vue @@ -0,0 +1,35 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/ContextMenu/index.ts b/yshop-drink-vue3/src/layout/components/ContextMenu/index.ts new file mode 100644 index 0000000..2a7c1f0 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/ContextMenu/index.ts @@ -0,0 +1,10 @@ +import ContextMenu from './src/ContextMenu.vue' +import { ElDropdown } from 'element-plus' +import type { RouteLocationNormalizedLoaded } from 'vue-router' + +export interface ContextMenuExpose { + elDropdownMenuRef: ComponentRef + tagItem: RouteLocationNormalizedLoaded +} + +export { ContextMenu } diff --git a/yshop-drink-vue3/src/layout/components/ContextMenu/src/ContextMenu.vue b/yshop-drink-vue3/src/layout/components/ContextMenu/src/ContextMenu.vue new file mode 100644 index 0000000..90eea4c --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/ContextMenu/src/ContextMenu.vue @@ -0,0 +1,76 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/Footer/index.ts b/yshop-drink-vue3/src/layout/components/Footer/index.ts new file mode 100644 index 0000000..bd052e0 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Footer/index.ts @@ -0,0 +1,3 @@ +import Footer from './src/Footer.vue' + +export { Footer } diff --git a/yshop-drink-vue3/src/layout/components/Footer/src/Footer.vue b/yshop-drink-vue3/src/layout/components/Footer/src/Footer.vue new file mode 100644 index 0000000..3eede38 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Footer/src/Footer.vue @@ -0,0 +1,24 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/LocaleDropdown/index.ts b/yshop-drink-vue3/src/layout/components/LocaleDropdown/index.ts new file mode 100644 index 0000000..d02e640 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/LocaleDropdown/index.ts @@ -0,0 +1,3 @@ +import LocaleDropdown from './src/LocaleDropdown.vue' + +export { LocaleDropdown } diff --git a/yshop-drink-vue3/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue b/yshop-drink-vue3/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue new file mode 100644 index 0000000..95132db --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue @@ -0,0 +1,52 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/Logo/index.ts b/yshop-drink-vue3/src/layout/components/Logo/index.ts new file mode 100644 index 0000000..1c4224c --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Logo/index.ts @@ -0,0 +1,3 @@ +import Logo from './src/Logo.vue' + +export { Logo } diff --git a/yshop-drink-vue3/src/layout/components/Logo/src/Logo.vue b/yshop-drink-vue3/src/layout/components/Logo/src/Logo.vue new file mode 100644 index 0000000..d241130 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Logo/src/Logo.vue @@ -0,0 +1,88 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/Menu/index.ts b/yshop-drink-vue3/src/layout/components/Menu/index.ts new file mode 100644 index 0000000..a6ec696 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Menu/index.ts @@ -0,0 +1,3 @@ +import Menu from './src/Menu.vue' + +export { Menu } diff --git a/yshop-drink-vue3/src/layout/components/Menu/src/Menu.vue b/yshop-drink-vue3/src/layout/components/Menu/src/Menu.vue new file mode 100644 index 0000000..466cca5 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Menu/src/Menu.vue @@ -0,0 +1,257 @@ + + + + + diff --git a/yshop-drink-vue3/src/layout/components/Menu/src/components/useRenderMenuItem.tsx b/yshop-drink-vue3/src/layout/components/Menu/src/components/useRenderMenuItem.tsx new file mode 100644 index 0000000..301313f --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Menu/src/components/useRenderMenuItem.tsx @@ -0,0 +1,50 @@ +import { ElSubMenu, ElMenuItem } from 'element-plus' +import { hasOneShowingChild } from '../helper' +import { isUrl } from '@/utils/is' +import { useRenderMenuTitle } from './useRenderMenuTitle' +import { pathResolve } from '@/utils/routerHelper' + +const { renderMenuTitle } = useRenderMenuTitle() + +export const useRenderMenuItem = () => + // allRouters: AppRouteRecordRaw[] = [], + { + const renderMenuItem = (routers: AppRouteRecordRaw[], parentPath = '/') => { + return routers + .filter((v) => !v.meta?.hidden) + .map((v) => { + const meta = v.meta ?? {} + const { oneShowingChild, onlyOneChild } = hasOneShowingChild(v.children, v) + const fullPath = isUrl(v.path) ? v.path : pathResolve(parentPath, v.path) // getAllParentPath(allRouters, v.path).join('/') + + if ( + oneShowingChild && + (!onlyOneChild?.children || onlyOneChild?.noShowingChildren) && + !meta?.alwaysShow + ) { + return ( + + {{ + default: () => renderMenuTitle(onlyOneChild ? onlyOneChild?.meta : meta) + }} + + ) + } else { + return ( + + {{ + title: () => renderMenuTitle(meta), + default: () => renderMenuItem(v.children!, fullPath) + }} + + ) + } + }) + } + + return { + renderMenuItem + } + } diff --git a/yshop-drink-vue3/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx b/yshop-drink-vue3/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx new file mode 100644 index 0000000..8941d9d --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx @@ -0,0 +1,27 @@ +import type { RouteMeta } from 'vue-router' +import { Icon } from '@/components/Icon' +import { useI18n } from '@/hooks/web/useI18n' + +export const useRenderMenuTitle = () => { + const renderMenuTitle = (meta: RouteMeta) => { + const { t } = useI18n() + const { title = 'Please set title', icon } = meta + + return icon ? ( + <> + + + {t(title as string)} + + + ) : ( + + {t(title as string)} + + ) + } + + return { + renderMenuTitle + } +} diff --git a/yshop-drink-vue3/src/layout/components/Menu/src/helper.ts b/yshop-drink-vue3/src/layout/components/Menu/src/helper.ts new file mode 100644 index 0000000..c26f5f4 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Menu/src/helper.ts @@ -0,0 +1,54 @@ +import type { RouteMeta } from 'vue-router' +import { findPath } from '@/utils/tree' + +type OnlyOneChildType = AppRouteRecordRaw & { noShowingChildren?: boolean } + +interface HasOneShowingChild { + oneShowingChild?: boolean + onlyOneChild?: OnlyOneChildType +} + +export const getAllParentPath = (treeData: T[], path: string) => { + const menuList = findPath(treeData, (n) => n.path === path) as AppRouteRecordRaw[] + return (menuList || []).map((item) => item.path) +} + +export const hasOneShowingChild = ( + children: AppRouteRecordRaw[] = [], + parent: AppRouteRecordRaw +): HasOneShowingChild => { + const onlyOneChild = ref() + + const showingChildren = children.filter((v) => { + const meta = (v.meta ?? {}) as RouteMeta + if (meta.hidden) { + return false + } else { + // Temp set(will be used if only has one showing child) + onlyOneChild.value = v + return true + } + }) + + // When there is only one child router, the child router is displayed by default + if (showingChildren.length === 1) { + return { + oneShowingChild: true, + onlyOneChild: unref(onlyOneChild) + } + } + + // Show parent if there are no child router to display + if (!showingChildren.length) { + onlyOneChild.value = { ...parent, path: '', noShowingChildren: true } + return { + oneShowingChild: true, + onlyOneChild: unref(onlyOneChild) + } + } + + return { + oneShowingChild: false, + onlyOneChild: unref(onlyOneChild) + } +} diff --git a/yshop-drink-vue3/src/layout/components/Message/index.ts b/yshop-drink-vue3/src/layout/components/Message/index.ts new file mode 100644 index 0000000..dfe0207 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Message/index.ts @@ -0,0 +1,3 @@ +import Message from './src/Message.vue' + +export { Message } diff --git a/yshop-drink-vue3/src/layout/components/Message/src/Message.vue b/yshop-drink-vue3/src/layout/components/Message/src/Message.vue new file mode 100644 index 0000000..904ce71 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Message/src/Message.vue @@ -0,0 +1,126 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/Screenfull/index.ts b/yshop-drink-vue3/src/layout/components/Screenfull/index.ts new file mode 100644 index 0000000..faec2d8 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Screenfull/index.ts @@ -0,0 +1,3 @@ +import Screenfull from './src/Screenfull.vue' + +export { Screenfull } diff --git a/yshop-drink-vue3/src/layout/components/Screenfull/src/Screenfull.vue b/yshop-drink-vue3/src/layout/components/Screenfull/src/Screenfull.vue new file mode 100644 index 0000000..4c045f2 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Screenfull/src/Screenfull.vue @@ -0,0 +1,32 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/Setting/index.ts b/yshop-drink-vue3/src/layout/components/Setting/index.ts new file mode 100644 index 0000000..b64c9ad --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Setting/index.ts @@ -0,0 +1,3 @@ +import Setting from './src/Setting.vue' + +export { Setting } diff --git a/yshop-drink-vue3/src/layout/components/Setting/src/Setting.vue b/yshop-drink-vue3/src/layout/components/Setting/src/Setting.vue new file mode 100644 index 0000000..e1908b6 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Setting/src/Setting.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/yshop-drink-vue3/src/layout/components/Setting/src/components/ColorRadioPicker.vue b/yshop-drink-vue3/src/layout/components/Setting/src/components/ColorRadioPicker.vue new file mode 100644 index 0000000..fcc5e75 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Setting/src/components/ColorRadioPicker.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/yshop-drink-vue3/src/layout/components/Setting/src/components/InterfaceDisplay.vue b/yshop-drink-vue3/src/layout/components/Setting/src/components/InterfaceDisplay.vue new file mode 100644 index 0000000..ebbbf4b --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Setting/src/components/InterfaceDisplay.vue @@ -0,0 +1,224 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/Setting/src/components/LayoutRadioPicker.vue b/yshop-drink-vue3/src/layout/components/Setting/src/components/LayoutRadioPicker.vue new file mode 100644 index 0000000..801686c --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/Setting/src/components/LayoutRadioPicker.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/yshop-drink-vue3/src/layout/components/SizeDropdown/index.ts b/yshop-drink-vue3/src/layout/components/SizeDropdown/index.ts new file mode 100644 index 0000000..516488d --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/SizeDropdown/index.ts @@ -0,0 +1,3 @@ +import SizeDropdown from './src/SizeDropdown.vue' + +export { SizeDropdown } diff --git a/yshop-drink-vue3/src/layout/components/SizeDropdown/src/SizeDropdown.vue b/yshop-drink-vue3/src/layout/components/SizeDropdown/src/SizeDropdown.vue new file mode 100644 index 0000000..3e15224 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/SizeDropdown/src/SizeDropdown.vue @@ -0,0 +1,40 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/TabMenu/index.ts b/yshop-drink-vue3/src/layout/components/TabMenu/index.ts new file mode 100644 index 0000000..b5fd71c --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/TabMenu/index.ts @@ -0,0 +1,3 @@ +import TabMenu from './src/TabMenu.vue' + +export { TabMenu } diff --git a/yshop-drink-vue3/src/layout/components/TabMenu/src/TabMenu.vue b/yshop-drink-vue3/src/layout/components/TabMenu/src/TabMenu.vue new file mode 100644 index 0000000..b70464c --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/TabMenu/src/TabMenu.vue @@ -0,0 +1,240 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/TabMenu/src/helper.ts b/yshop-drink-vue3/src/layout/components/TabMenu/src/helper.ts new file mode 100644 index 0000000..cce3932 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/TabMenu/src/helper.ts @@ -0,0 +1,51 @@ +import { getAllParentPath } from '@/layout/components/Menu/src/helper' +import type { RouteMeta } from 'vue-router' +import { isUrl } from '@/utils/is' +import { cloneDeep } from 'lodash-es' + +export type TabMapTypes = { + [key: string]: string[] +} + +export const tabPathMap = reactive({}) + +export const initTabMap = (routes: AppRouteRecordRaw[]) => { + for (const v of routes) { + const meta = (v.meta ?? {}) as RouteMeta + if (!meta?.hidden) { + tabPathMap[v.path] = [] + } + } +} + +export const filterMenusPath = ( + routes: AppRouteRecordRaw[], + allRoutes: AppRouteRecordRaw[] +): AppRouteRecordRaw[] => { + const res: AppRouteRecordRaw[] = [] + for (const v of routes) { + let data: Nullable = null + const meta = (v.meta ?? {}) as RouteMeta + if (!meta.hidden || meta.canTo) { + const allParentPath = getAllParentPath(allRoutes, v.path) + + const fullPath = isUrl(v.path) ? v.path : allParentPath.join('/') + + data = cloneDeep(v) + data.path = fullPath + if (v.children && data) { + data.children = filterMenusPath(v.children, allRoutes) + } + + if (data) { + res.push(data) + } + + if (allParentPath.length && Reflect.has(tabPathMap, allParentPath[0])) { + tabPathMap[allParentPath[0]].push(fullPath) + } + } + } + + return res +} diff --git a/yshop-drink-vue3/src/layout/components/TagsView/index.ts b/yshop-drink-vue3/src/layout/components/TagsView/index.ts new file mode 100644 index 0000000..30e604a --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/TagsView/index.ts @@ -0,0 +1,3 @@ +import TagsView from './src/TagsView.vue' + +export { TagsView } diff --git a/yshop-drink-vue3/src/layout/components/TagsView/src/TagsView.vue b/yshop-drink-vue3/src/layout/components/TagsView/src/TagsView.vue new file mode 100644 index 0000000..7db0cf6 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/TagsView/src/TagsView.vue @@ -0,0 +1,585 @@ + + + + + diff --git a/yshop-drink-vue3/src/layout/components/TagsView/src/helper.ts b/yshop-drink-vue3/src/layout/components/TagsView/src/helper.ts new file mode 100644 index 0000000..22f6a50 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/TagsView/src/helper.ts @@ -0,0 +1,21 @@ +import type { RouteMeta, RouteLocationNormalizedLoaded } from 'vue-router' +import { pathResolve } from '@/utils/routerHelper' + +export const filterAffixTags = (routes: AppRouteRecordRaw[], parentPath = '') => { + let tags: RouteLocationNormalizedLoaded[] = [] + routes.forEach((route) => { + const meta = route.meta as RouteMeta + const tagPath = pathResolve(parentPath, route.path) + if (meta?.affix) { + tags.push({ ...route, path: tagPath, fullPath: tagPath } as RouteLocationNormalizedLoaded) + } + if (route.children) { + const tempTags: RouteLocationNormalizedLoaded[] = filterAffixTags(route.children, tagPath) + if (tempTags.length >= 1) { + tags = [...tags, ...tempTags] + } + } + }) + + return tags +} diff --git a/yshop-drink-vue3/src/layout/components/ThemeSwitch/index.ts b/yshop-drink-vue3/src/layout/components/ThemeSwitch/index.ts new file mode 100644 index 0000000..823a276 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/ThemeSwitch/index.ts @@ -0,0 +1,3 @@ +import ThemeSwitch from './src/ThemeSwitch.vue' + +export { ThemeSwitch } diff --git a/yshop-drink-vue3/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue b/yshop-drink-vue3/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue new file mode 100644 index 0000000..39a8cfd --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue @@ -0,0 +1,46 @@ + + + + diff --git a/yshop-drink-vue3/src/layout/components/ToolHeader.vue b/yshop-drink-vue3/src/layout/components/ToolHeader.vue new file mode 100644 index 0000000..0b8d00d --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/ToolHeader.vue @@ -0,0 +1,95 @@ + + + diff --git a/yshop-drink-vue3/src/layout/components/UserInfo/index.ts b/yshop-drink-vue3/src/layout/components/UserInfo/index.ts new file mode 100644 index 0000000..c3a34ab --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/UserInfo/index.ts @@ -0,0 +1,3 @@ +import UserInfo from './src/UserInfo.vue' + +export { UserInfo } diff --git a/yshop-drink-vue3/src/layout/components/UserInfo/src/UserInfo.vue b/yshop-drink-vue3/src/layout/components/UserInfo/src/UserInfo.vue new file mode 100644 index 0000000..1c8781e --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/UserInfo/src/UserInfo.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/yshop-drink-vue3/src/layout/components/UserInfo/src/components/LockDialog.vue b/yshop-drink-vue3/src/layout/components/UserInfo/src/components/LockDialog.vue new file mode 100644 index 0000000..f4ab7d4 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/UserInfo/src/components/LockDialog.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/yshop-drink-vue3/src/layout/components/UserInfo/src/components/LockPage.vue b/yshop-drink-vue3/src/layout/components/UserInfo/src/components/LockPage.vue new file mode 100644 index 0000000..497dd37 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/UserInfo/src/components/LockPage.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/yshop-drink-vue3/src/layout/components/useRenderLayout.tsx b/yshop-drink-vue3/src/layout/components/useRenderLayout.tsx new file mode 100644 index 0000000..1110cd8 --- /dev/null +++ b/yshop-drink-vue3/src/layout/components/useRenderLayout.tsx @@ -0,0 +1,306 @@ +import { computed } from 'vue' +import { useAppStore } from '@/store/modules/app' +import { Menu } from '@/layout/components/Menu' +import { TabMenu } from '@/layout/components/TabMenu' +import { TagsView } from '@/layout/components/TagsView' +import { Logo } from '@/layout/components/Logo' +import AppView from './AppView.vue' +import ToolHeader from './ToolHeader.vue' +import { ElScrollbar } from 'element-plus' +import { useDesign } from '@/hooks/web/useDesign' + +const { getPrefixCls } = useDesign() + +const prefixCls = getPrefixCls('layout') + +const appStore = useAppStore() + +const pageLoading = computed(() => appStore.getPageLoading) + +// 标签页 +const tagsView = computed(() => appStore.getTagsView) + +// 菜单折叠 +const collapse = computed(() => appStore.getCollapse) + +// logo +const logo = computed(() => appStore.logo) + +// 固定头部 +const fixedHeader = computed(() => appStore.getFixedHeader) + +// 是否是移动端 +const mobile = computed(() => appStore.getMobile) + +// 固定菜单 +const fixedMenu = computed(() => appStore.getFixedMenu) + +export const useRenderLayout = () => { + const renderClassic = () => { + return ( + <> +
    + {logo.value ? ( + + ) : undefined} + +
    +
    + +
    + + + {tagsView.value ? ( + + ) : undefined} +
    + + +
    +
    + + ) + } + + const renderTopLeft = () => { + return ( + <> +
    + {logo.value ? : undefined} + + +
    +
    + +
    + + {tagsView.value ? ( + + ) : undefined} + + + +
    +
    + + ) + } + + const renderTop = () => { + return ( + <> +
    + {logo.value ? : undefined} + + +
    +
    + + {tagsView.value ? ( + + ) : undefined} + + + +
    + + ) + } + + const renderCutMenu = () => { + return ( + <> +
    + {logo.value ? : undefined} + + +
    +
    + +
    + + {tagsView.value ? ( + + ) : undefined} + + + +
    +
    + + ) + } + + return { + renderClassic, + renderTopLeft, + renderTop, + renderCutMenu + } +} diff --git a/yshop-drink-vue3/src/locales/en.ts b/yshop-drink-vue3/src/locales/en.ts new file mode 100644 index 0000000..6562c9b --- /dev/null +++ b/yshop-drink-vue3/src/locales/en.ts @@ -0,0 +1,457 @@ +export default { + common: { + inputText: 'Please input', + selectText: 'Please select', + startTimeText: 'Start time', + endTimeText: 'End time', + login: 'Login', + required: 'This is required', + loginOut: 'Login out', + document: 'Document', + profile: 'User Center', + reminder: 'Reminder', + loginOutMessage: 'Exit the system?', + back: 'Back', + ok: 'OK', + save: 'Save', + cancel: 'Cancel', + close: 'Close', + reload: 'Reload current', + success: 'Success', + closeTab: 'Close current', + closeTheLeftTab: 'Close left', + closeTheRightTab: 'Close right', + closeOther: 'Close other', + closeAll: 'Close all', + prevLabel: 'Prev', + nextLabel: 'Next', + skipLabel: 'Jump', + doneLabel: 'End', + menu: 'Menu', + menuDes: 'Menu bar rendered in routed structure', + collapse: 'Collapse', + collapseDes: 'Expand and zoom the menu bar', + tagsView: 'Tags view', + tagsViewDes: 'Used to record routing history', + tool: 'Tool', + toolDes: 'Used to set up custom systems', + query: 'Query', + reset: 'Reset', + shrink: 'Put away', + expand: 'Expand', + confirmTitle: 'System Hint', + exportMessage: 'Whether to confirm export data item?', + importMessage: 'Whether to confirm import data item?', + createSuccess: 'Create Success', + updateSuccess: 'Update Success', + delMessage: 'Delete the selected data?', + delDataMessage: 'Delete the data?', + delNoData: 'Please select the data to delete', + delSuccess: 'Deleted successfully', + index: 'Index', + status: 'Status', + createTime: 'Create Time', + updateTime: 'Update Time', + copy: 'Copy', + copySuccess: 'Copy Success', + copyError: 'Copy Error' + }, + lock: { + lockScreen: 'Lock screen', + lock: 'Lock', + lockPassword: 'Lock screen password', + unlock: 'Click to unlock', + backToLogin: 'Back to login', + entrySystem: 'Entry the system', + placeholder: 'Please enter the lock screen password', + message: 'Lock screen password error' + }, + error: { + noPermission: `Sorry, you don't have permission to access this page.`, + pageError: 'Sorry, the page you visited does not exist.', + networkError: 'Sorry, the server reported an error.', + returnToHome: 'Return to home' + }, + permission: { + hasPermission: `Please set the operation permission label value`, + hasRole: `Please set the role permission tag value` + }, + setting: { + projectSetting: 'Project setting', + theme: 'Theme', + layout: 'Layout', + systemTheme: 'System theme', + menuTheme: 'Menu theme', + interfaceDisplay: 'Interface display', + breadcrumb: 'Breadcrumb', + breadcrumbIcon: 'Breadcrumb icon', + collapseMenu: 'Collapse menu', + hamburgerIcon: 'Hamburger icon', + screenfullIcon: 'Screenfull icon', + sizeIcon: 'Size icon', + localeIcon: 'Locale icon', + messageIcon: 'Message icon', + tagsView: 'Tags view', + logo: 'Logo', + greyMode: 'Grey mode', + fixedHeader: 'Fixed header', + headerTheme: 'Header theme', + cutMenu: 'Cut Menu', + copy: 'Copy', + clearAndReset: 'Clear cache and reset', + copySuccess: 'Copy success', + copyFailed: 'Copy failed', + footer: 'Footer', + uniqueOpened: 'Unique opened', + tagsViewIcon: 'Tags view icon', + reExperienced: 'Please exit the login experience again', + fixedMenu: 'Fixed menu' + }, + size: { + default: 'Default', + large: 'Large', + small: 'Small' + }, + login: { + welcome: 'Welcome to the system', + message: 'Backstage management system', + tenantname: 'TenantName', + username: 'Username', + password: 'Password', + code: 'verification code', + login: 'Sign in', + relogin: 'Sign in again', + otherLogin: 'Sign in with', + register: 'Register', + checkPassword: 'Confirm password', + remember: 'Remember me', + hasUser: 'Existing account? Go to login', + forgetPassword: 'Forget password?', + tenantNamePlaceholder: 'Please Enter Tenant Name', + usernamePlaceholder: 'Please Enter Username', + passwordPlaceholder: 'Please Enter Password', + codePlaceholder: 'Please Enter Verification Code', + mobileTitle: 'Mobile sign in', + mobileNumber: 'Mobile Number', + mobileNumberPlaceholder: 'Plaease Enter Mobile Number', + backLogin: 'back', + getSmsCode: 'Get SMS Code', + btnMobile: 'Mobile sign in', + btnQRCode: 'QR code sign in', + qrcode: 'Scan the QR code to log in', + btnRegister: 'Sign up', + SmsSendMsg: 'code has been sent' + }, + captcha: { + verification: 'Please complete security verification', + slide: 'Swipe right to complete verification', + point: 'Please click', + success: 'Verification succeeded', + fail: 'verification failed' + }, + router: { + login: 'Login', + home: 'Home', + analysis: 'Analysis', + workplace: 'Workplace' + }, + analysis: { + newUser: 'New user', + unreadInformation: 'Unread information', + transactionAmount: 'Transaction amount', + totalShopping: 'Total Shopping', + monthlySales: 'Monthly sales', + userAccessSource: 'User access source', + january: 'January', + february: 'February', + march: 'March', + april: 'April', + may: 'May', + june: 'June', + july: 'July', + august: 'August', + september: 'September', + october: 'October', + november: 'November', + december: 'December', + estimate: 'Estimate', + actual: 'Actual', + directAccess: 'Airect access', + mailMarketing: 'Mail marketing', + allianceAdvertising: 'Alliance advertising', + videoAdvertising: 'Video advertising', + searchEngines: 'Search engines', + weeklyUserActivity: 'Weekly user activity', + activeQuantity: 'Active quantity', + monday: 'Monday', + tuesday: 'Tuesday', + wednesday: 'Wednesday', + thursday: 'Thursday', + friday: 'Friday', + saturday: 'Saturday', + sunday: 'Sunday' + }, + workplace: { + welcome: 'Hello', + happyDay: 'Wish you happy every day!', + toady: `It's sunny today`, + notice: 'Announcement', + project: 'Project', + access: 'Project access', + toDo: 'To do', + introduction: 'A serious introduction', + shortcutOperation: 'Quick entry', + operation: 'Operation', + index: 'Index', + personal: 'Personal', + team: 'Team', + quote: 'Quote', + contribution: 'Contribution', + hot: 'Hot', + yield: 'Yield', + dynamic: 'Dynamic', + push: 'push', + follow: 'Follow' + }, + form: { + input: 'Input', + inputNumber: 'InputNumber', + default: 'Default', + icon: 'Icon', + mixed: 'Mixed', + textarea: 'Textarea', + slot: 'Slot', + position: 'Position', + autocomplete: 'Autocomplete', + select: 'Select', + selectGroup: 'Select Group', + selectV2: 'SelectV2', + cascader: 'Cascader', + switch: 'Switch', + rate: 'Rate', + colorPicker: 'Color Picker', + transfer: 'Transfer', + render: 'Render', + radio: 'Radio', + button: 'Button', + checkbox: 'Checkbox', + slider: 'Slider', + datePicker: 'Date Picker', + shortcuts: 'Shortcuts', + today: 'Today', + yesterday: 'Yesterday', + aWeekAgo: 'A week ago', + week: 'Week', + year: 'Year', + month: 'Month', + dates: 'Dates', + daterange: 'Date Range', + monthrange: 'Month Range', + dateTimePicker: 'DateTimePicker', + dateTimerange: 'Datetime Range', + timePicker: 'Time Picker', + timeSelect: 'Time Select', + inputPassword: 'input Password', + passwordStrength: 'Password Strength', + operate: 'operate', + change: 'Change', + restore: 'Restore', + disabled: 'Disabled', + disablement: 'Disablement', + delete: 'Delete', + add: 'Add', + setValue: 'Set value', + resetValue: 'Reset value', + set: 'Set', + subitem: 'Subitem', + formValidation: 'Form validation', + verifyReset: 'Verify reset', + remark: 'Remark' + }, + watermark: { + watermark: 'Watermark' + }, + table: { + table: 'Table', + index: 'Index', + title: 'Title', + author: 'Author', + createTime: 'Create time', + action: 'Action', + pagination: 'pagination', + reserveIndex: 'Reserve index', + restoreIndex: 'Restore index', + showSelections: 'Show selections', + hiddenSelections: 'Restore selections', + showExpandedRows: 'Show expanded rows', + hiddenExpandedRows: 'Hidden expanded rows', + header: 'Header' + }, + action: { + create: 'Create', + add: 'Add', + del: 'Delete', + delete: 'Delete', + edit: 'Edit', + update: 'Update', + preview: 'Preview', + more: 'More', + sync: 'Sync', + save: 'Save', + detail: 'Detail', + export: 'Export', + import: 'Import', + generate: 'Generate', + logout: 'Login Out', + test: 'Test', + typeCreate: 'Dict Type Create', + typeUpdate: 'Dict Type Eidt', + dataCreate: 'Dict Data Create', + dataUpdate: 'Dict Data Eidt', + fileUpload: 'File Upload' + }, + dialog: { + dialog: 'Dialog', + open: 'Open', + close: 'Close' + }, + sys: { + api: { + operationFailed: 'Operation failed', + errorTip: 'Error Tip', + errorMessage: 'The operation failed, the system is abnormal!', + timeoutMessage: 'Login timed out, please log in again!', + apiTimeoutMessage: 'The interface request timed out, please refresh the page and try again!', + apiRequestFailed: 'The interface request failed, please try again later!', + networkException: 'network anomaly', + networkExceptionMsg: + 'Please check if your network connection is normal! The network is abnormal', + + errMsg401: 'The user does not have permission (token, user name, password error)!', + errMsg403: 'The user is authorized, but access is forbidden!', + errMsg404: 'Network request error, the resource was not found!', + errMsg405: 'Network request error, request method not allowed!', + errMsg408: 'Network request timed out!', + errMsg500: 'Server error, please contact the administrator!', + errMsg501: 'The network is not implemented!', + errMsg502: 'Network Error!', + errMsg503: 'The service is unavailable, the server is temporarily overloaded or maintained!', + errMsg504: 'Network timeout!', + errMsg505: 'The http version does not support the request!', + errMsg901: 'Demo mode, no write operations are possible!' + }, + app: { + logoutTip: 'Reminder', + logoutMessage: 'Confirm to exit the system?', + menuLoading: 'Menu loading...' + }, + exception: { + backLogin: 'Back Login', + backHome: 'Back Home', + subTitle403: "Sorry, you don't have access to this page.", + subTitle404: 'Sorry, the page you visited does not exist.', + subTitle500: 'Sorry, the server is reporting an error.', + noDataTitle: 'No data on the current page.', + networkErrorTitle: 'Network Error', + networkErrorSubTitle: + 'Sorry, Your network connection has been disconnected, please check your network!' + }, + lock: { + unlock: 'Click to unlock', + alert: 'Lock screen password error', + backToLogin: 'Back to login', + entry: 'Enter the system', + placeholder: 'Please enter the lock screen password or user password' + }, + login: { + backSignIn: 'Back sign in', + mobileSignInFormTitle: 'Mobile sign in', + qrSignInFormTitle: 'Qr code sign in', + signInFormTitle: 'Sign in', + signUpFormTitle: 'Sign up', + forgetFormTitle: 'Reset password', + + signInTitle: 'Backstage management system', + signInDesc: 'Enter your personal details and get started!', + policy: 'I agree to the xxx Privacy Policy', + scanSign: `scanning the code to complete the login`, + + loginButton: 'Sign in', + registerButton: 'Sign up', + rememberMe: 'Remember me', + forgetPassword: 'Forget Password?', + otherSignIn: 'Sign in with', + + // notify + loginSuccessTitle: 'Login successful', + loginSuccessDesc: 'Welcome back', + + // placeholder + accountPlaceholder: 'Please input username', + passwordPlaceholder: 'Please input password', + smsPlaceholder: 'Please input sms code', + mobilePlaceholder: 'Please input mobile', + policyPlaceholder: 'Register after checking', + diffPwd: 'The two passwords are inconsistent', + + userName: 'Username', + password: 'Password', + confirmPassword: 'Confirm Password', + email: 'Email', + smsCode: 'SMS code', + mobile: 'Mobile' + } + }, + profile: { + user: { + title: 'Personal Information', + username: 'User Name', + nickname: 'Nick Name', + mobile: 'Phone Number', + email: 'User Mail', + dept: 'Department', + posts: 'Position', + roles: 'Own Role', + sex: 'Sex', + man: 'Man', + woman: 'Woman', + createTime: 'Created Date' + }, + info: { + title: 'Basic Information', + basicInfo: 'Basic Information', + resetPwd: 'Reset Password', + userSocial: 'Social Information' + }, + rules: { + nickname: 'Please Enter User Nickname', + mail: 'Please Input The Email Address', + truemail: 'Please Input The Correct Email Address', + phone: 'Please Enter The Phone Number', + truephone: 'Please Enter The Correct Phone Number' + }, + password: { + oldPassword: 'Old PassWord', + newPassword: 'New Password', + confirmPassword: 'Confirm Password', + oldPwdMsg: 'Please Enter Old Password', + newPwdMsg: 'Please Enter New Password', + cfPwdMsg: 'Please Enter Confirm Password', + diffPwd: 'The Passwords Entered Twice No Match' + } + }, + cropper: { + selectImage: 'Select Image', + uploadSuccess: 'Uploaded success!', + modalTitle: 'Avatar upload', + okText: 'Confirm and upload', + btn_reset: 'Reset', + btn_rotate_left: 'Counterclockwise rotation', + btn_rotate_right: 'Clockwise rotation', + btn_scale_x: 'Flip horizontal', + btn_scale_y: 'Flip vertical', + btn_zoom_in: 'Zoom in', + btn_zoom_out: 'Zoom out', + preview: 'Preivew' + } +} diff --git a/yshop-drink-vue3/src/locales/zh-CN.ts b/yshop-drink-vue3/src/locales/zh-CN.ts new file mode 100644 index 0000000..ef9d8d9 --- /dev/null +++ b/yshop-drink-vue3/src/locales/zh-CN.ts @@ -0,0 +1,452 @@ +export default { + common: { + inputText: '请输入', + selectText: '请选择', + startTimeText: '开始时间', + endTimeText: '结束时间', + login: '登录', + required: '该项为必填项', + loginOut: '退出系统', + document: '项目文档', + profile: '个人中心', + reminder: '温馨提示', + loginOutMessage: '是否退出本系统?', + back: '返回', + ok: '确定', + save: '保存', + cancel: '取消', + close: '关闭', + reload: '重新加载', + success: '成功', + closeTab: '关闭标签页', + closeTheLeftTab: '关闭左侧标签页', + closeTheRightTab: '关闭右侧标签页', + closeOther: '关闭其他标签页', + closeAll: '关闭全部标签页', + prevLabel: '上一步', + nextLabel: '下一步', + skipLabel: '跳过', + doneLabel: '结束', + menu: '菜单', + menuDes: '以路由的结构渲染的菜单栏', + collapse: '展开缩收', + collapseDes: '展开和缩放菜单栏', + tagsView: '标签页', + tagsViewDes: '用于记录路由历史记录', + tool: '工具', + toolDes: '用于设置定制系统', + query: '查询', + reset: '重置', + shrink: '收起', + expand: '展开', + confirmTitle: '系统提示', + exportMessage: '是否确认导出数据项?', + importMessage: '是否确认导入数据项?', + createSuccess: '新增成功', + updateSuccess: '修改成功', + delMessage: '是否删除所选中数据?', + delDataMessage: '是否删除数据?', + delNoData: '请选择需要删除的数据', + delSuccess: '删除成功', + index: '序号', + status: '状态', + createTime: '创建时间', + updateTime: '更新时间', + copy: '复制', + copySuccess: '复制成功', + copyError: '复制失败' + }, + lock: { + lockScreen: '锁定屏幕', + lock: '锁定', + lockPassword: '锁屏密码', + unlock: '点击解锁', + backToLogin: '返回登录', + entrySystem: '进入系统', + placeholder: '请输入锁屏密码', + message: '锁屏密码错误' + }, + error: { + noPermission: `抱歉,您无权访问此页面。`, + pageError: '抱歉,您访问的页面不存在。', + networkError: '抱歉,服务器报告错误。', + returnToHome: '返回首页' + }, + permission: { + hasPermission: `请设置操作权限标签值`, + hasRole: `请设置角色权限标签值` + }, + setting: { + projectSetting: '项目配置', + theme: '主题', + layout: '布局', + systemTheme: '系统主题', + menuTheme: '菜单主题', + interfaceDisplay: '界面显示', + breadcrumb: '面包屑', + breadcrumbIcon: '面包屑图标', + collapseMenu: '折叠菜单', + hamburgerIcon: '折叠图标', + screenfullIcon: '全屏图标', + sizeIcon: '尺寸图标', + localeIcon: '多语言图标', + messageIcon: '消息图标', + tagsView: '标签页', + logo: '标志', + greyMode: '灰色模式', + fixedHeader: '固定头部', + headerTheme: '头部主题', + cutMenu: '切割菜单', + copy: '拷贝', + clearAndReset: '清除缓存并且重置', + copySuccess: '拷贝成功', + copyFailed: '拷贝失败', + footer: '页脚', + uniqueOpened: '菜单手风琴', + tagsViewIcon: '标签页图标', + reExperienced: '请重新退出登录体验', + fixedMenu: '固定菜单' + }, + size: { + default: '默认', + large: '大', + small: '小' + }, + login: { + welcome: '欢迎使用yshop意象点餐系统', + message: '欢迎使用yshop意象点餐系统', + tenantname: '租户名称', + username: '用户名', + password: '密码', + code: '验证码', + login: '登录', + relogin: '重新登录', + otherLogin: '其他登录方式', + register: '注册', + checkPassword: '确认密码', + remember: '记住我', + hasUser: '已有账号?去登录', + forgetPassword: '忘记密码?', + tenantNamePlaceholder: '请输入租户名称', + usernamePlaceholder: '请输入用户名', + passwordPlaceholder: '请输入密码', + codePlaceholder: '请输入验证码', + mobileTitle: '手机登录', + mobileNumber: '手机号码', + mobileNumberPlaceholder: '请输入手机号码', + backLogin: '返回', + getSmsCode: '获取验证码', + btnMobile: '手机登录', + btnQRCode: '二维码登录', + qrcode: '扫描二维码登录', + btnRegister: '注册', + SmsSendMsg: '验证码已发送' + }, + captcha: { + verification: '请完成安全验证', + slide: '向右滑动完成验证', + point: '请依次点击', + success: '验证成功', + fail: '验证失败' + }, + router: { + login: '登录', + socialLogin: '社交登录', + home: '首页', + analysis: '分析页', + workplace: '工作台' + }, + analysis: { + newUser: '新增用户', + unreadInformation: '未读消息', + transactionAmount: '成交金额', + totalShopping: '购物总量', + monthlySales: '每月销售额', + userAccessSource: '用户访问来源', + january: '一月', + february: '二月', + march: '三月', + april: '四月', + may: '五月', + june: '六月', + july: '七月', + august: '八月', + september: '九月', + october: '十月', + november: '十一月', + december: '十二月', + estimate: '预计', + actual: '实际', + directAccess: '直接访问', + mailMarketing: '邮件营销', + allianceAdvertising: '联盟广告', + videoAdvertising: '视频广告', + searchEngines: '搜索引擎', + weeklyUserActivity: '每周用户活跃量', + activeQuantity: '活跃量', + monday: '周一', + tuesday: '周二', + wednesday: '周三', + thursday: '周四', + friday: '周五', + saturday: '周六', + sunday: '周日' + }, + workplace: { + welcome: '你好', + happyDay: '祝你开心每一天!', + toady: '今日晴', + notice: '通知公告', + project: '项目数', + access: '项目访问', + toDo: '待办', + introduction: '一个正经的简介', + shortcutOperation: '快捷入口', + operation: '操作', + index: '指数', + personal: '个人', + team: '团队', + quote: '引用', + contribution: '贡献', + hot: '热度', + yield: '产量', + dynamic: '动态', + push: '推送', + follow: '关注' + }, + form: { + input: '输入框', + inputNumber: '数字输入框', + default: '默认', + icon: '图标', + mixed: '复合型', + textarea: '多行文本', + slot: '插槽', + position: '位置', + autocomplete: '自动补全', + select: '选择器', + selectGroup: '选项分组', + selectV2: '虚拟列表选择器', + cascader: '级联选择器', + switch: '开关', + rate: '评分', + colorPicker: '颜色选择器', + transfer: '穿梭框', + render: '渲染器', + radio: '单选框', + button: '按钮', + checkbox: '多选框', + slider: '滑块', + datePicker: '日期选择器', + shortcuts: '快捷选项', + today: '今天', + yesterday: '昨天', + aWeekAgo: '一周前', + week: '周', + year: '年', + month: '月', + dates: '日期', + daterange: '日期范围', + monthrange: '月份范围', + dateTimePicker: '日期时间选择器', + dateTimerange: '日期时间范围', + timePicker: '时间选择器', + timeSelect: '时间选择', + inputPassword: '密码输入框', + passwordStrength: '密码强度', + operate: '操作', + change: '更改', + restore: '还原', + disabled: '禁用', + disablement: '解除禁用', + delete: '删除', + add: '添加', + setValue: '设置值', + resetValue: '重置值', + set: '设置', + subitem: '子项', + formValidation: '表单验证', + verifyReset: '验证重置', + remark: '备注' + }, + watermark: { + watermark: '水印' + }, + table: { + table: '表格', + index: '序号', + title: '标题', + author: '作者', + createTime: '创建时间', + action: '操作', + pagination: '分页', + reserveIndex: '叠加序号', + restoreIndex: '还原序号', + showSelections: '显示多选', + hiddenSelections: '隐藏多选', + showExpandedRows: '显示展开行', + hiddenExpandedRows: '隐藏展开行', + header: '头部' + }, + action: { + create: '新增', + add: '新增', + del: '删除', + delete: '删除', + edit: '编辑', + update: '编辑', + preview: '预览', + more: '更多', + sync: '同步', + save: '保存', + detail: '详情', + export: '导出', + import: '导入', + generate: '生成', + logout: '强制退出', + test: '测试', + typeCreate: '字典类型新增', + typeUpdate: '字典类型编辑', + dataCreate: '字典数据新增', + dataUpdate: '字典数据编辑' + }, + dialog: { + dialog: '弹窗', + open: '打开', + close: '关闭' + }, + sys: { + api: { + operationFailed: '操作失败', + errorTip: '错误提示', + errorMessage: '操作失败,系统异常!', + timeoutMessage: '登录超时,请重新登录!', + apiTimeoutMessage: '接口请求超时,请刷新页面重试!', + apiRequestFailed: '请求出错,请稍候重试', + networkException: '网络异常', + networkExceptionMsg: '网络异常,请检查您的网络连接是否正常!', + errMsg401: '用户没有权限(令牌、用户名、密码错误)!', + errMsg403: '用户得到授权,但是访问是被禁止的。!', + errMsg404: '网络请求错误,未找到该资源!', + errMsg405: '网络请求错误,请求方法未允许!', + errMsg408: '网络请求超时!', + errMsg500: '服务器错误,请联系管理员!', + errMsg501: '网络未实现!', + errMsg502: '网络错误!', + errMsg503: '服务不可用,服务器暂时过载或维护!', + errMsg504: '网络超时!', + errMsg505: 'http版本不支持该请求!', + errMsg901: '演示模式,无法进行写操作!' + }, + app: { + logoutTip: '温馨提醒', + logoutMessage: '是否确认退出系统?', + menuLoading: '菜单加载中...' + }, + exception: { + backLogin: '返回登录', + backHome: '返回首页', + subTitle403: '抱歉,您无权访问此页面。', + subTitle404: '抱歉,您访问的页面不存在。', + subTitle500: '抱歉,服务器报告错误。', + noDataTitle: '当前页无数据', + networkErrorTitle: '网络错误', + networkErrorSubTitle: '抱歉,您的网络连接已断开,请检查您的网络!' + }, + lock: { + unlock: '点击解锁', + alert: '锁屏密码错误', + backToLogin: '返回登录', + entry: '进入系统', + placeholder: '请输入锁屏密码或者用户密码' + }, + login: { + backSignIn: '返回', + signInFormTitle: '登录', + ssoFormTitle: '三方授权', + mobileSignInFormTitle: '手机登录', + qrSignInFormTitle: '二维码登录', + signUpFormTitle: '注册', + forgetFormTitle: '重置密码', + signInTitle: '开箱即用的中后台管理系统', + signInDesc: '输入您的个人详细信息开始使用!', + policy: '我同意xxx隐私政策', + scanSign: `扫码后点击"确认",即可完成登录`, + loginButton: '登录', + registerButton: '注册', + rememberMe: '记住我', + forgetPassword: '忘记密码?', + otherSignIn: '其他登录方式', + // notify + loginSuccessTitle: '登录成功', + loginSuccessDesc: '欢迎回来', + // placeholder + accountPlaceholder: '请输入账号', + passwordPlaceholder: '请输入密码', + smsPlaceholder: '请输入验证码', + mobilePlaceholder: '请输入手机号码', + policyPlaceholder: '勾选后才能注册', + diffPwd: '两次输入密码不一致', + userName: '账号', + password: '密码', + confirmPassword: '确认密码', + email: '邮箱', + smsCode: '短信验证码', + mobile: '手机号码' + } + }, + profile: { + user: { + title: '个人信息', + username: '用户名称', + nickname: '用户昵称', + mobile: '手机号码', + email: '用户邮箱', + dept: '所属部门', + posts: '所属岗位', + roles: '所属角色', + sex: '性别', + man: '男', + woman: '女', + createTime: '创建日期' + }, + info: { + title: '基本信息', + basicInfo: '基本资料', + resetPwd: '修改密码', + userSocial: '社交信息' + }, + rules: { + nickname: '请输入用户昵称', + mail: '请输入邮箱地址', + truemail: '请输入正确的邮箱地址', + phone: '请输入正确的手机号码', + truephone: '请输入正确的手机号码' + }, + password: { + oldPassword: '旧密码', + newPassword: '新密码', + confirmPassword: '确认密码', + oldPwdMsg: '请输入旧密码', + newPwdMsg: '请输入新密码', + cfPwdMsg: '请输入确认密码', + pwdRules: '长度在 6 到 20 个字符', + diffPwd: '两次输入密码不一致' + } + }, + cropper: { + selectImage: '选择图片', + uploadSuccess: '上传成功', + modalTitle: '头像上传', + okText: '确认并上传', + btn_reset: '重置', + btn_rotate_left: '逆时针旋转', + btn_rotate_right: '顺时针旋转', + btn_scale_x: '水平翻转', + btn_scale_y: '垂直翻转', + btn_zoom_in: '放大', + btn_zoom_out: '缩小', + preview: '预览' + }, + 'OAuth 2.0': 'OAuth 2.0' // 避免菜单名是 OAuth 2.0 时,一直 warn 报错 +} diff --git a/yshop-drink-vue3/src/main.ts b/yshop-drink-vue3/src/main.ts new file mode 100644 index 0000000..e3267c6 --- /dev/null +++ b/yshop-drink-vue3/src/main.ts @@ -0,0 +1,74 @@ +// 引入unocss css +import '@/plugins/unocss' + +// 导入全局的svg图标 +import '@/plugins/svgIcon' + +// 初始化多语言 +import { setupI18n } from '@/plugins/vueI18n' + +// 引入状态管理 +import { setupStore } from '@/store' + +// 全局组件 +import { setupGlobCom } from '@/components' + +// 引入 element-plus +import { setupElementPlus } from '@/plugins/elementPlus' + +// 引入 form-create +import { setupFormCreate } from '@/plugins/formCreate' + +// 引入全局样式 +import '@/styles/index.scss' + +// 引入动画 +import '@/plugins/animate.css' + +// 路由 +import router, { setupRouter } from '@/router' + +// 权限 +import { setupAuth } from '@/directives' + +import { createApp } from 'vue' + +import App from './App.vue' + +import './permission' + +import '@/plugins/tongji' // 百度统计 +import Logger from '@/utils/Logger' +import VueUeditorWrap from 'vue-ueditor-wrap' + +import VueDOMPurifyHTML from 'vue-dompurify-html' // 解决v-html 的安全隐患 + +// 创建实例 +const setupAll = async () => { + const app = createApp(App) + app.use(VueUeditorWrap) + + await setupI18n(app) + + setupStore(app) + + setupGlobCom(app) + + setupElementPlus(app) + + setupFormCreate(app) + + setupRouter(app) + + setupAuth(app) + + await router.isReady() + + app.use(VueDOMPurifyHTML) + + app.mount('#app') +} + +setupAll() + +Logger.prettyPrimary(`欢迎使用`, import.meta.env.VITE_APP_TITLE) diff --git a/yshop-drink-vue3/src/permission.ts b/yshop-drink-vue3/src/permission.ts new file mode 100644 index 0000000..d538303 --- /dev/null +++ b/yshop-drink-vue3/src/permission.ts @@ -0,0 +1,106 @@ +import router from './router' +import type { RouteRecordRaw } from 'vue-router' +import { isRelogin } from '@/config/axios/service' +import { getAccessToken } from '@/utils/auth' +import { useTitle } from '@/hooks/web/useTitle' +import { useNProgress } from '@/hooks/web/useNProgress' +import { usePageLoading } from '@/hooks/web/usePageLoading' +import { useDictStoreWithOut } from '@/store/modules/dict' +import { useUserStoreWithOut } from '@/store/modules/user' +import { usePermissionStoreWithOut } from '@/store/modules/permission' + +const { start, done } = useNProgress() + +const { loadStart, loadDone } = usePageLoading() + +const parseURL = ( + url: string | null | undefined +): { basePath: string; paramsObject: { [key: string]: string } } => { + // 如果输入为 null 或 undefined,返回空字符串和空对象 + if (url == null) { + return { basePath: '', paramsObject: {} } + } + + // 找到问号 (?) 的位置,它之前是基础路径,之后是查询参数 + const questionMarkIndex = url.indexOf('?') + let basePath = url + const paramsObject: { [key: string]: string } = {} + + // 如果找到了问号,说明有查询参数 + if (questionMarkIndex !== -1) { + // 获取 basePath + basePath = url.substring(0, questionMarkIndex) + + // 从 URL 中获取查询字符串部分 + const queryString = url.substring(questionMarkIndex + 1) + + // 使用 URLSearchParams 遍历参数 + const searchParams = new URLSearchParams(queryString) + searchParams.forEach((value, key) => { + // 封装进 paramsObject 对象 + paramsObject[key] = value + }) + } + + // 返回 basePath 和 paramsObject + return { basePath, paramsObject } +} + +// 路由不重定向白名单 +const whiteList = [ + '/login', + '/social-login', + '/auth-redirect', + '/bind', + '/register', + '/oauthLogin/gitee' +] + +// 路由加载前 +router.beforeEach(async (to, from, next) => { + start() + loadStart() + if (getAccessToken()) { + if (to.path === '/login') { + next({ path: '/' }) + } else { + // 获取所有字典 + const dictStore = useDictStoreWithOut() + const userStore = useUserStoreWithOut() + const permissionStore = usePermissionStoreWithOut() + if (!dictStore.getIsSetDict) { + await dictStore.setDictMap() + } + if (!userStore.getIsSetUser) { + isRelogin.show = true + await userStore.setUserInfoAction() + isRelogin.show = false + // 后端过滤菜单 + await permissionStore.generateRoutes() + permissionStore.getAddRouters.forEach((route) => { + router.addRoute(route as unknown as RouteRecordRaw) // 动态添加可访问路由表 + }) + const redirectPath = from.query.redirect || to.path + // 修复跳转时不带参数的问题 + const redirect = decodeURIComponent(redirectPath as string) + const { basePath, paramsObject: query } = parseURL(redirect) + const nextData = to.path === redirect ? { ...to, replace: true } : { path: redirect, query } + next(nextData) + } else { + next() + } + } + } else { + if (whiteList.indexOf(to.path) !== -1) { + next() + } else { + next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 + } + } +}) + +router.afterEach((to) => { + useTitle(to?.meta?.title as string) + done() // 结束Progress + loadDone() +}) diff --git a/yshop-drink-vue3/src/plugins/animate.css/index.ts b/yshop-drink-vue3/src/plugins/animate.css/index.ts new file mode 100644 index 0000000..3e93451 --- /dev/null +++ b/yshop-drink-vue3/src/plugins/animate.css/index.ts @@ -0,0 +1 @@ +import 'animate.css' diff --git a/yshop-drink-vue3/src/plugins/echarts/index.ts b/yshop-drink-vue3/src/plugins/echarts/index.ts new file mode 100644 index 0000000..18d05aa --- /dev/null +++ b/yshop-drink-vue3/src/plugins/echarts/index.ts @@ -0,0 +1,49 @@ +import * as echarts from 'echarts/core' + +import { + BarChart, + FunnelChart, + GaugeChart, + LineChart, + MapChart, + PictorialBarChart, + PieChart, + RadarChart +} from 'echarts/charts' + +import { + AriaComponent, + GridComponent, + LegendComponent, + ParallelComponent, + PolarComponent, + TitleComponent, + ToolboxComponent, + TooltipComponent, + VisualMapComponent +} from 'echarts/components' + +import { CanvasRenderer } from 'echarts/renderers' + +echarts.use([ + LegendComponent, + TitleComponent, + TooltipComponent, + ToolboxComponent, + GridComponent, + PolarComponent, + AriaComponent, + ParallelComponent, + VisualMapComponent, + BarChart, + LineChart, + PieChart, + MapChart, + CanvasRenderer, + PictorialBarChart, + RadarChart, + GaugeChart, + FunnelChart +]) + +export default echarts diff --git a/yshop-drink-vue3/src/plugins/elementPlus/index.ts b/yshop-drink-vue3/src/plugins/elementPlus/index.ts new file mode 100644 index 0000000..0ae2a8b --- /dev/null +++ b/yshop-drink-vue3/src/plugins/elementPlus/index.ts @@ -0,0 +1,17 @@ +import type { App } from 'vue' +// 需要全局引入一些组件,如ElScrollbar,不然一些下拉项样式有问题 +import { ElLoading, ElScrollbar, ElButton } from 'element-plus' + +const plugins = [ElLoading] + +const components = [ElScrollbar, ElButton] + +export const setupElementPlus = (app: App) => { + plugins.forEach((plugin) => { + app.use(plugin) + }) + + components.forEach((component) => { + app.component(component.name, component) + }) +} diff --git a/yshop-drink-vue3/src/plugins/formCreate/index.ts b/yshop-drink-vue3/src/plugins/formCreate/index.ts new file mode 100644 index 0000000..44556de --- /dev/null +++ b/yshop-drink-vue3/src/plugins/formCreate/index.ts @@ -0,0 +1,74 @@ +import type { App } from 'vue' +// 👇使用 form-create 需额外全局引入 element plus 组件 +import { + ElAlert, + ElAside, + ElContainer, + ElDivider, + ElHeader, + ElMain, + ElPopconfirm, + ElTable, + ElTableColumn, + ElTabPane, + ElTabs, + ElTransfer +} from 'element-plus' +import FcDesigner from '@form-create/designer' +import formCreate from '@form-create/element-ui' +import install from '@form-create/element-ui/auto-import' + +//======================= 自定义组件 ======================= +import { UploadFile, UploadImg, UploadImgs } from '@/components/UploadFile' +import { useApiSelect } from '@/components/FormCreate' +import { Editor } from '@/components/Editor' +import DictSelect from '@/components/FormCreate/src/components/DictSelect.vue' + +const UserSelect = useApiSelect({ + name: 'UserSelect', + labelField: 'nickname', + valueField: 'id', + url: '/system/user/simple-list' +}) +const DeptSelect = useApiSelect({ + name: 'DeptSelect', + labelField: 'name', + valueField: 'id', + url: '/system/dept/simple-list' +}) +const ApiSelect = useApiSelect({ + name: 'ApiSelect' +}) + +const components = [ + ElAside, + ElPopconfirm, + ElHeader, + ElMain, + ElContainer, + ElDivider, + ElTransfer, + ElAlert, + ElTabs, + ElTable, + ElTableColumn, + ElTabPane, + UploadImg, + UploadImgs, + UploadFile, + DictSelect, + UserSelect, + DeptSelect, + ApiSelect, + Editor +] + +// 参考 http://www.form-create.com/v3/element-ui/auto-import.html 文档 +export const setupFormCreate = (app: App) => { + components.forEach((component) => { + app.component(component.name, component) + }) + formCreate.use(install) + app.use(formCreate) + app.use(FcDesigner) +} diff --git a/yshop-drink-vue3/src/plugins/svgIcon/index.ts b/yshop-drink-vue3/src/plugins/svgIcon/index.ts new file mode 100644 index 0000000..b5b7f70 --- /dev/null +++ b/yshop-drink-vue3/src/plugins/svgIcon/index.ts @@ -0,0 +1,3 @@ +import 'virtual:svg-icons-register' + +import '@purge-icons/generated' diff --git a/yshop-drink-vue3/src/plugins/tongji/index.ts b/yshop-drink-vue3/src/plugins/tongji/index.ts new file mode 100644 index 0000000..ec261a1 --- /dev/null +++ b/yshop-drink-vue3/src/plugins/tongji/index.ts @@ -0,0 +1,23 @@ +import router from '@/router' + +// 用于 router push +window._hmt = window._hmt || [] +// HM_ID +const HM_ID = import.meta.env.VITE_APP_BAIDU_CODE +;(function () { + // 有值的时候,才开启 + if (!HM_ID) { + return + } + const hm = document.createElement('script') + hm.src = 'https://hm.baidu.com/hm.js?' + HM_ID + const s = document.getElementsByTagName('script')[0] + s.parentNode.insertBefore(hm, s) +})() + +router.afterEach(function (to) { + if (!HM_ID) { + return + } + _hmt.push(['_trackPageview', to.fullPath]) +}) diff --git a/yshop-drink-vue3/src/plugins/unocss/index.ts b/yshop-drink-vue3/src/plugins/unocss/index.ts new file mode 100644 index 0000000..d366b5a --- /dev/null +++ b/yshop-drink-vue3/src/plugins/unocss/index.ts @@ -0,0 +1 @@ +import 'virtual:uno.css' diff --git a/yshop-drink-vue3/src/plugins/vueI18n/helper.ts b/yshop-drink-vue3/src/plugins/vueI18n/helper.ts new file mode 100644 index 0000000..da6bc8c --- /dev/null +++ b/yshop-drink-vue3/src/plugins/vueI18n/helper.ts @@ -0,0 +1,3 @@ +export const setHtmlPageLang = (locale: LocaleType) => { + document.querySelector('html')?.setAttribute('lang', locale) +} diff --git a/yshop-drink-vue3/src/plugins/vueI18n/index.ts b/yshop-drink-vue3/src/plugins/vueI18n/index.ts new file mode 100644 index 0000000..f845b13 --- /dev/null +++ b/yshop-drink-vue3/src/plugins/vueI18n/index.ts @@ -0,0 +1,42 @@ +import type { App } from 'vue' +import { createI18n } from 'vue-i18n' +import { useLocaleStoreWithOut } from '@/store/modules/locale' +import type { I18n, I18nOptions } from 'vue-i18n' +import { setHtmlPageLang } from './helper' + +export let i18n: ReturnType + +const createI18nOptions = async (): Promise => { + const localeStore = useLocaleStoreWithOut() + const locale = localeStore.getCurrentLocale + const localeMap = localeStore.getLocaleMap + const defaultLocal = await import(`../../locales/${locale.lang}.ts`) + const message = defaultLocal.default ?? {} + + setHtmlPageLang(locale.lang) + + localeStore.setCurrentLocale({ + lang: locale.lang + // elLocale: elLocal + }) + + return { + legacy: false, + locale: locale.lang, + fallbackLocale: locale.lang, + messages: { + [locale.lang]: message + }, + availableLocales: localeMap.map((v) => v.lang), + sync: true, + silentTranslationWarn: true, + missingWarn: false, + silentFallbackWarn: true + } +} + +export const setupI18n = async (app: App) => { + const options = await createI18nOptions() + i18n = createI18n(options) as I18n + app.use(i18n) +} diff --git a/yshop-drink-vue3/src/router/index.ts b/yshop-drink-vue3/src/router/index.ts new file mode 100644 index 0000000..8f66ca3 --- /dev/null +++ b/yshop-drink-vue3/src/router/index.ts @@ -0,0 +1,28 @@ +import type { App } from 'vue' +import type { RouteRecordRaw } from 'vue-router' +import { createRouter, createWebHistory } from 'vue-router' +import remainingRouter from './modules/remaining' + +// 创建路由实例 +const router = createRouter({ + history: createWebHistory(), // createWebHashHistory URL带#,createWebHistory URL不带# + strict: true, + routes: remainingRouter as RouteRecordRaw[], + scrollBehavior: () => ({ left: 0, top: 0 }) +}) + +export const resetRouter = (): void => { + const resetWhiteNameList = ['Redirect', 'Login', 'NoFind', 'Root'] + router.getRoutes().forEach((route) => { + const { name } = route + if (name && !resetWhiteNameList.includes(name as string)) { + router.hasRoute(name) && router.removeRoute(name) + } + }) +} + +export const setupRouter = (app: App) => { + app.use(router) +} + +export default router diff --git a/yshop-drink-vue3/src/router/modules/remaining.ts b/yshop-drink-vue3/src/router/modules/remaining.ts new file mode 100644 index 0000000..e0ae762 --- /dev/null +++ b/yshop-drink-vue3/src/router/modules/remaining.ts @@ -0,0 +1,252 @@ +import { Layout } from '@/utils/routerHelper' + +const { t } = useI18n() +/** + * redirect: noredirect 当设置 noredirect 的时候该路由在面包屑导航中不可被点击 + * name:'router-name' 设定路由的名字,一定要填写不然使用时会出现各种问题 + * meta : { + hidden: true 当设置 true 的时候该路由不会再侧边栏出现 如404,login等页面(默认 false) + + alwaysShow: true 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式, + 只有一个时,会将那个子路由当做根路由显示在侧边栏, + 若你想不管路由下面的 children 声明的个数都显示你的根路由, + 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则, + 一直显示根路由(默认 false) + + title: 'title' 设置该路由在侧边栏和面包屑中展示的名字 + + icon: 'svg-name' 设置该路由的图标 + + noCache: true 如果设置为true,则不会被 缓存(默认 false) + + breadcrumb: false 如果设置为false,则不会在breadcrumb面包屑中显示(默认 true) + + affix: true 如果设置为true,则会一直固定在tag项中(默认 false) + + noTagsView: true 如果设置为true,则不会出现在tag中(默认 false) + + activeMenu: '/dashboard' 显示高亮的路由路径 + + followAuth: '/dashboard' 跟随哪个路由进行权限过滤 + + canTo: true 设置为true即使hidden为true,也依然可以进行路由跳转(默认 false) + } + **/ +const remainingRouter: AppRouteRecordRaw[] = [ + { + path: '/redirect', + component: Layout, + name: 'Redirect', + children: [ + { + path: '/redirect/:path(.*)', + name: 'Redirect', + component: () => import('@/views/Redirect/Redirect.vue'), + meta: {} + } + ], + meta: { + hidden: true, + noTagsView: true + } + }, + { + path: '/', + component: Layout, + redirect: '/index', + name: 'Home', + meta: {}, + children: [ + { + path: 'index', + component: () => import('@/views/Home/Index.vue'), + name: 'Index', + meta: { + title: t('router.home'), + icon: 'ep:home-filled', + noCache: false, + affix: true + } + } + ] + }, + { + path: '/user', + component: Layout, + name: 'UserInfo', + meta: { + hidden: true + }, + children: [ + { + path: 'profile', + component: () => import('@/views/Profile/Index.vue'), + name: 'Profile', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ep:user', + title: t('common.profile') + } + }, + { + path: 'notify-message', + component: () => import('@/views/system/notify/my/index.vue'), + name: 'MyNotifyMessage', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ep:message', + title: '我的站内信' + } + } + ] + }, + { + path: '/dict', + component: Layout, + name: 'dict', + meta: { + hidden: true + }, + children: [ + { + path: 'type/data/:dictType', + component: () => import('@/views/system/dict/data/index.vue'), + name: 'SystemDictData', + meta: { + title: '字典数据', + noCache: true, + hidden: true, + canTo: true, + icon: '', + activeMenu: '/system/dict' + } + } + ] + }, + + { + path: '/codegen', + component: Layout, + name: 'CodegenEdit', + meta: { + hidden: true + }, + children: [ + { + path: 'edit', + component: () => import('@/views/infra/codegen/EditTable.vue'), + name: 'InfraCodegenEditTable', + meta: { + noCache: true, + hidden: true, + canTo: true, + icon: 'ep:edit', + title: '修改生成配置', + activeMenu: 'infra/codegen/index' + } + } + ] + }, + { + path: '/job', + component: Layout, + name: 'JobL', + meta: { + hidden: true + }, + children: [ + { + path: 'job-log', + component: () => import('@/views/infra/job/logger/index.vue'), + name: 'InfraJobLog', + meta: { + noCache: true, + hidden: true, + canTo: true, + icon: 'ep:edit', + title: '调度日志', + activeMenu: 'infra/job/index' + } + } + ] + }, + { + path: '/login', + component: () => import('@/views/Login/Login.vue'), + name: 'Login', + meta: { + hidden: true, + title: t('router.login'), + noTagsView: true + } + }, + { + path: '/sso', + component: () => import('@/views/Login/Login.vue'), + name: 'SSOLogin', + meta: { + hidden: true, + title: t('router.login'), + noTagsView: true + } + }, + { + path: '/social-login', + component: () => import('@/views/Login/SocialLogin.vue'), + name: 'SocialLogin', + meta: { + hidden: true, + title: t('router.socialLogin'), + noTagsView: true + } + }, + { + path: '/403', + component: () => import('@/views/Error/403.vue'), + name: 'NoAccess', + meta: { + hidden: true, + title: '403', + noTagsView: true + } + }, + { + path: '/404', + component: () => import('@/views/Error/404.vue'), + name: 'NoFound', + meta: { + hidden: true, + title: '404', + noTagsView: true + } + }, + { + path: '/500', + component: () => import('@/views/Error/500.vue'), + name: 'Error', + meta: { + hidden: true, + title: '500', + noTagsView: true + } + }, + { + path: '/yshop/materia/index', + component: () => import('@/components/Materials/src/editorMaterials.vue'), + name: 'EditorMaterials', + meta: { + noCache: true, + hidden: true, + // canTo: true, + title: '上传图片', + }, + + } + +] + +export default remainingRouter diff --git a/yshop-drink-vue3/src/store/index.ts b/yshop-drink-vue3/src/store/index.ts new file mode 100644 index 0000000..63f0045 --- /dev/null +++ b/yshop-drink-vue3/src/store/index.ts @@ -0,0 +1,12 @@ +import type { App } from 'vue' +import { createPinia } from 'pinia' +import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' + +const store = createPinia() +store.use(piniaPluginPersistedstate) + +export const setupStore = (app: App) => { + app.use(store) +} + +export { store } diff --git a/yshop-drink-vue3/src/store/modules/app.ts b/yshop-drink-vue3/src/store/modules/app.ts new file mode 100644 index 0000000..8733618 --- /dev/null +++ b/yshop-drink-vue3/src/store/modules/app.ts @@ -0,0 +1,277 @@ +import { defineStore } from 'pinia' +import { store } from '../index' +import { setCssVar, humpToUnderline } from '@/utils' +import { ElMessage } from 'element-plus' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +import { ElementPlusSize } from '@/types/elementPlus' +import { LayoutType } from '@/types/layout' +import { ThemeTypes } from '@/types/theme' + +const { wsCache } = useCache() + +interface AppState { + breadcrumb: boolean + breadcrumbIcon: boolean + collapse: boolean + uniqueOpened: boolean + hamburger: boolean + screenfull: boolean + search: boolean + size: boolean + locale: boolean + message: boolean + tagsView: boolean + tagsViewIcon: boolean + logo: boolean + fixedHeader: boolean + greyMode: boolean + pageLoading: boolean + layout: LayoutType + title: string + userInfo: string + isDark: boolean + currentSize: ElementPlusSize + sizeMap: ElementPlusSize[] + mobile: boolean + footer: boolean + theme: ThemeTypes + fixedMenu: boolean +} + +export const useAppStore = defineStore('app', { + state: (): AppState => { + return { + userInfo: 'userInfo', // 登录信息存储字段-建议每个项目换一个字段,避免与其他项目冲突 + sizeMap: ['default', 'large', 'small'], + mobile: false, // 是否是移动端 + title: import.meta.env.VITE_APP_TITLE, // 标题 + pageLoading: false, // 路由跳转loading + + breadcrumb: true, // 面包屑 + breadcrumbIcon: true, // 面包屑图标 + collapse: false, // 折叠菜单 + uniqueOpened: true, // 是否只保持一个子菜单的展开 + hamburger: true, // 折叠图标 + screenfull: true, // 全屏图标 + search: true, // 搜索图标 + size: true, // 尺寸图标 + locale: true, // 多语言图标 + message: true, // 消息图标 + tagsView: true, // 标签页 + tagsViewIcon: true, // 是否显示标签图标 + logo: true, // logo + fixedHeader: true, // 固定toolheader + footer: true, // 显示页脚 + greyMode: false, // 是否开始灰色模式,用于特殊悼念日 + fixedMenu: wsCache.get('fixedMenu') || false, // 是否固定菜单 + + layout: wsCache.get(CACHE_KEY.LAYOUT) || 'classic', // layout布局 + isDark: wsCache.get(CACHE_KEY.IS_DARK) || false, // 是否是暗黑模式 + currentSize: wsCache.get('default') || 'default', // 组件尺寸 + theme: wsCache.get(CACHE_KEY.THEME) || { + // 主题色 + elColorPrimary: '#409eff', + // 左侧菜单边框颜色 + leftMenuBorderColor: 'inherit', + // 左侧菜单背景颜色 + leftMenuBgColor: '#001529', + // 左侧菜单浅色背景颜色 + leftMenuBgLightColor: '#0f2438', + // 左侧菜单选中背景颜色 + leftMenuBgActiveColor: 'var(--el-color-primary)', + // 左侧菜单收起选中背景颜色 + leftMenuCollapseBgActiveColor: 'var(--el-color-primary)', + // 左侧菜单字体颜色 + leftMenuTextColor: '#bfcbd9', + // 左侧菜单选中字体颜色 + leftMenuTextActiveColor: '#fff', + // logo字体颜色 + logoTitleTextColor: '#fff', + // logo边框颜色 + logoBorderColor: 'inherit', + // 头部背景颜色 + topHeaderBgColor: '#fff', + // 头部字体颜色 + topHeaderTextColor: 'inherit', + // 头部悬停颜色 + topHeaderHoverColor: '#f6f6f6', + // 头部边框颜色 + topToolBorderColor: '#eee' + } + } + }, + getters: { + getBreadcrumb(): boolean { + return this.breadcrumb + }, + getBreadcrumbIcon(): boolean { + return this.breadcrumbIcon + }, + getCollapse(): boolean { + return this.collapse + }, + getUniqueOpened(): boolean { + return this.uniqueOpened + }, + getHamburger(): boolean { + return this.hamburger + }, + getScreenfull(): boolean { + return this.screenfull + }, + getSize(): boolean { + return this.size + }, + getLocale(): boolean { + return this.locale + }, + getMessage(): boolean { + return this.message + }, + getTagsView(): boolean { + return this.tagsView + }, + getTagsViewIcon(): boolean { + return this.tagsViewIcon + }, + getLogo(): boolean { + return this.logo + }, + getFixedHeader(): boolean { + return this.fixedHeader + }, + getGreyMode(): boolean { + return this.greyMode + }, + getFixedMenu(): boolean { + return this.fixedMenu + }, + getPageLoading(): boolean { + return this.pageLoading + }, + getLayout(): LayoutType { + return this.layout + }, + getTitle(): string { + return this.title + }, + getUserInfo(): string { + return this.userInfo + }, + getIsDark(): boolean { + return this.isDark + }, + getCurrentSize(): ElementPlusSize { + return this.currentSize + }, + getSizeMap(): ElementPlusSize[] { + return this.sizeMap + }, + getMobile(): boolean { + return this.mobile + }, + getTheme(): ThemeTypes { + return this.theme + }, + getFooter(): boolean { + return this.footer + } + }, + actions: { + setBreadcrumb(breadcrumb: boolean) { + this.breadcrumb = breadcrumb + }, + setBreadcrumbIcon(breadcrumbIcon: boolean) { + this.breadcrumbIcon = breadcrumbIcon + }, + setCollapse(collapse: boolean) { + this.collapse = collapse + }, + setUniqueOpened(uniqueOpened: boolean) { + this.uniqueOpened = uniqueOpened + }, + setHamburger(hamburger: boolean) { + this.hamburger = hamburger + }, + setScreenfull(screenfull: boolean) { + this.screenfull = screenfull + }, + setSize(size: boolean) { + this.size = size + }, + setLocale(locale: boolean) { + this.locale = locale + }, + setMessage(message: boolean) { + this.message = message + }, + setTagsView(tagsView: boolean) { + this.tagsView = tagsView + }, + setTagsViewIcon(tagsViewIcon: boolean) { + this.tagsViewIcon = tagsViewIcon + }, + setLogo(logo: boolean) { + this.logo = logo + }, + setFixedHeader(fixedHeader: boolean) { + this.fixedHeader = fixedHeader + }, + setGreyMode(greyMode: boolean) { + this.greyMode = greyMode + }, + setFixedMenu(fixedMenu: boolean) { + wsCache.set('fixedMenu', fixedMenu) + this.fixedMenu = fixedMenu + }, + setPageLoading(pageLoading: boolean) { + this.pageLoading = pageLoading + }, + setLayout(layout: LayoutType) { + if (this.mobile && layout !== 'classic') { + ElMessage.warning('移动端模式下不支持切换其他布局') + return + } + this.layout = layout + wsCache.set(CACHE_KEY.LAYOUT, this.layout) + }, + setTitle(title: string) { + this.title = title + }, + setIsDark(isDark: boolean) { + this.isDark = isDark + if (this.isDark) { + document.documentElement.classList.add('dark') + document.documentElement.classList.remove('light') + } else { + document.documentElement.classList.add('light') + document.documentElement.classList.remove('dark') + } + wsCache.set(CACHE_KEY.IS_DARK, this.isDark) + }, + setCurrentSize(currentSize: ElementPlusSize) { + this.currentSize = currentSize + wsCache.set('currentSize', this.currentSize) + }, + setMobile(mobile: boolean) { + this.mobile = mobile + }, + setTheme(theme: ThemeTypes) { + this.theme = Object.assign(this.theme, theme) + wsCache.set(CACHE_KEY.THEME, this.theme) + }, + setCssVarTheme() { + for (const key in this.theme) { + setCssVar(`--${humpToUnderline(key)}`, this.theme[key]) + } + }, + setFooter(footer: boolean) { + this.footer = footer + } + }, + persist: false +}) + +export const useAppStoreWithOut = () => { + return useAppStore(store) +} diff --git a/yshop-drink-vue3/src/store/modules/dict.ts b/yshop-drink-vue3/src/store/modules/dict.ts new file mode 100644 index 0000000..e239fb0 --- /dev/null +++ b/yshop-drink-vue3/src/store/modules/dict.ts @@ -0,0 +1,104 @@ +import { defineStore } from 'pinia' +import { store } from '../index' +// @ts-ignore +import { DictDataVO } from '@/api/system/dict/types' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +const { wsCache } = useCache('sessionStorage') +import { getSimpleDictDataList } from '@/api/system/dict/dict.data' + +export interface DictValueType { + value: any + label: string + clorType?: string + cssClass?: string +} +export interface DictTypeType { + dictType: string + dictValue: DictValueType[] +} +export interface DictState { + dictMap: Map + isSetDict: boolean +} + +export const useDictStore = defineStore('dict', { + state: (): DictState => ({ + dictMap: new Map(), + isSetDict: false + }), + getters: { + getDictMap(): Recordable { + const dictMap = wsCache.get(CACHE_KEY.DICT_CACHE) + if (dictMap) { + this.dictMap = dictMap + } + return this.dictMap + }, + getIsSetDict(): boolean { + return this.isSetDict + } + }, + actions: { + async setDictMap() { + const dictMap = wsCache.get(CACHE_KEY.DICT_CACHE) + if (dictMap) { + this.dictMap = dictMap + this.isSetDict = true + } else { + const res = await getSimpleDictDataList() + // 设置数据 + const dictDataMap = new Map() + res.forEach((dictData: DictDataVO) => { + // 获得 dictType 层级 + const enumValueObj = dictDataMap[dictData.dictType] + if (!enumValueObj) { + dictDataMap[dictData.dictType] = [] + } + // 处理 dictValue 层级 + dictDataMap[dictData.dictType].push({ + value: dictData.value, + label: dictData.label, + colorType: dictData.colorType, + cssClass: dictData.cssClass + }) + }) + this.dictMap = dictDataMap + this.isSetDict = true + wsCache.set(CACHE_KEY.DICT_CACHE, dictDataMap, { exp: 60 }) // 60 秒 过期 + } + }, + getDictByType(type: string) { + if (!this.isSetDict) { + this.setDictMap() + } + return this.dictMap[type] + }, + async resetDict() { + wsCache.delete(CACHE_KEY.DICT_CACHE) + const res = await getSimpleDictDataList() + // 设置数据 + const dictDataMap = new Map() + res.forEach((dictData: DictDataVO) => { + // 获得 dictType 层级 + const enumValueObj = dictDataMap[dictData.dictType] + if (!enumValueObj) { + dictDataMap[dictData.dictType] = [] + } + // 处理 dictValue 层级 + dictDataMap[dictData.dictType].push({ + value: dictData.value, + label: dictData.label, + colorType: dictData.colorType, + cssClass: dictData.cssClass + }) + }) + this.dictMap = dictDataMap + this.isSetDict = true + wsCache.set(CACHE_KEY.DICT_CACHE, dictDataMap, { exp: 60 }) // 60 秒 过期 + } + } +}) + +export const useDictStoreWithOut = () => { + return useDictStore(store) +} diff --git a/yshop-drink-vue3/src/store/modules/locale.ts b/yshop-drink-vue3/src/store/modules/locale.ts new file mode 100644 index 0000000..1fc772a --- /dev/null +++ b/yshop-drink-vue3/src/store/modules/locale.ts @@ -0,0 +1,59 @@ +import { defineStore } from 'pinia' +import { store } from '../index' +import zhCn from 'element-plus/es/locale/lang/zh-cn' +import en from 'element-plus/es/locale/lang/en' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +import { LocaleDropdownType } from '@/types/localeDropdown' + +const { wsCache } = useCache() + +const elLocaleMap = { + 'zh-CN': zhCn, + en: en +} +interface LocaleState { + currentLocale: LocaleDropdownType + localeMap: LocaleDropdownType[] +} + +export const useLocaleStore = defineStore('locales', { + state: (): LocaleState => { + return { + currentLocale: { + lang: wsCache.get(CACHE_KEY.LANG) || 'zh-CN', + elLocale: elLocaleMap[wsCache.get(CACHE_KEY.LANG) || 'zh-CN'] + }, + // 多语言 + localeMap: [ + { + lang: 'zh-CN', + name: '简体中文' + }, + { + lang: 'en', + name: 'English' + } + ] + } + }, + getters: { + getCurrentLocale(): LocaleDropdownType { + return this.currentLocale + }, + getLocaleMap(): LocaleDropdownType[] { + return this.localeMap + } + }, + actions: { + setCurrentLocale(localeMap: LocaleDropdownType) { + // this.locale = Object.assign(this.locale, localeMap) + this.currentLocale.lang = localeMap?.lang + this.currentLocale.elLocale = elLocaleMap[localeMap?.lang] + wsCache.set(CACHE_KEY.LANG, localeMap?.lang) + } + } +}) + +export const useLocaleStoreWithOut = () => { + return useLocaleStore(store) +} diff --git a/yshop-drink-vue3/src/store/modules/lock.ts b/yshop-drink-vue3/src/store/modules/lock.ts new file mode 100644 index 0000000..68ae1d7 --- /dev/null +++ b/yshop-drink-vue3/src/store/modules/lock.ts @@ -0,0 +1,48 @@ +import { defineStore } from 'pinia' +import { store } from '@/store' + +interface lockInfo { + isLock?: boolean + password?: string +} + +interface LockState { + lockInfo: lockInfo +} + +export const useLockStore = defineStore('lock', { + state: (): LockState => { + return { + lockInfo: { + // isLock: false, // 是否锁定屏幕 + // password: '' // 锁屏密码 + } + } + }, + getters: { + getLockInfo(): lockInfo { + return this.lockInfo + } + }, + actions: { + setLockInfo(lockInfo: lockInfo) { + this.lockInfo = lockInfo + }, + resetLockInfo() { + this.lockInfo = {} + }, + unLock(password: string) { + if (this.lockInfo?.password === password) { + this.resetLockInfo() + return true + } else { + return false + } + } + }, + persist: true +}) + +export const useLockStoreWithOut = () => { + return useLockStore(store) +} diff --git a/yshop-drink-vue3/src/store/modules/permission.ts b/yshop-drink-vue3/src/store/modules/permission.ts new file mode 100644 index 0000000..5e3287a --- /dev/null +++ b/yshop-drink-vue3/src/store/modules/permission.ts @@ -0,0 +1,68 @@ +import { defineStore } from 'pinia' +import { store } from '@/store' +import { cloneDeep } from 'lodash-es' +import remainingRouter from '@/router/modules/remaining' +import { flatMultiLevelRoutes, generateRoute } from '@/utils/routerHelper' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' + +const { wsCache } = useCache() + +export interface PermissionState { + routers: AppRouteRecordRaw[] + addRouters: AppRouteRecordRaw[] + menuTabRouters: AppRouteRecordRaw[] +} + +export const usePermissionStore = defineStore('permission', { + state: (): PermissionState => ({ + routers: [], + addRouters: [], + menuTabRouters: [] + }), + getters: { + getRouters(): AppRouteRecordRaw[] { + return this.routers + }, + getAddRouters(): AppRouteRecordRaw[] { + return flatMultiLevelRoutes(cloneDeep(this.addRouters)) + }, + getMenuTabRouters(): AppRouteRecordRaw[] { + return this.menuTabRouters + } + }, + actions: { + async generateRoutes(): Promise { + return new Promise(async (resolve) => { + // 获得菜单列表,它在登录的时候,setUserInfoAction 方法中已经进行获取 + let res: AppCustomRouteRecordRaw[] = [] + if (wsCache.get(CACHE_KEY.ROLE_ROUTERS)) { + res = wsCache.get(CACHE_KEY.ROLE_ROUTERS) as AppCustomRouteRecordRaw[] + } + const routerMap: AppRouteRecordRaw[] = generateRoute(res) + // 动态路由,404一定要放到最后面 + this.addRouters = routerMap.concat([ + { + path: '/:path(.*)*', + redirect: '/404', + name: '404Page', + meta: { + hidden: true, + breadcrumb: false + } + } + ]) + // 渲染菜单的所有路由 + this.routers = cloneDeep(remainingRouter).concat(routerMap) + resolve() + }) + }, + setMenuTabRouters(routers: AppRouteRecordRaw[]): void { + this.menuTabRouters = routers + } + }, + persist: false +}) + +export const usePermissionStoreWithOut = () => { + return usePermissionStore(store) +} diff --git a/yshop-drink-vue3/src/store/modules/simpleWorkflow.ts b/yshop-drink-vue3/src/store/modules/simpleWorkflow.ts new file mode 100644 index 0000000..cf98538 --- /dev/null +++ b/yshop-drink-vue3/src/store/modules/simpleWorkflow.ts @@ -0,0 +1,55 @@ +import { store } from '../index' +import { defineStore } from 'pinia' + +export const useWorkFlowStore = defineStore('simpleWorkflow', { + state: () => ({ + tableId: '', + isTried: false, + promoterDrawer: false, + flowPermission1: {}, + approverDrawer: false, + approverConfig1: {}, + copyerDrawer: false, + copyerConfig1: {}, + conditionDrawer: false, + conditionsConfig1: { + conditionNodes: [] + } + }), + actions: { + setTableId(payload) { + this.tableId = payload + }, + setIsTried(payload) { + this.isTried = payload + }, + setPromoter(payload) { + this.promoterDrawer = payload + }, + setFlowPermission(payload) { + this.flowPermission1 = payload + }, + setApprover(payload) { + this.approverDrawer = payload + }, + setApproverConfig(payload) { + this.approverConfig1 = payload + }, + setCopyer(payload) { + this.copyerDrawer = payload + }, + setCopyerConfig(payload) { + this.copyerConfig1 = payload + }, + setCondition(payload) { + this.conditionDrawer = payload + }, + setConditionsConfig(payload) { + this.conditionsConfig1 = payload + } + } +}) + +export const useWorkFlowStoreWithOut = () => { + return useWorkFlowStore(store) +} diff --git a/yshop-drink-vue3/src/store/modules/tagsView.ts b/yshop-drink-vue3/src/store/modules/tagsView.ts new file mode 100644 index 0000000..25a3a1f --- /dev/null +++ b/yshop-drink-vue3/src/store/modules/tagsView.ts @@ -0,0 +1,141 @@ +import router from '@/router' +import type { RouteLocationNormalizedLoaded } from 'vue-router' +import { getRawRoute } from '@/utils/routerHelper' +import { defineStore } from 'pinia' +import { store } from '../index' +import { findIndex } from '@/utils' + +export interface TagsViewState { + visitedViews: RouteLocationNormalizedLoaded[] + cachedViews: Set +} + +export const useTagsViewStore = defineStore('tagsView', { + state: (): TagsViewState => ({ + visitedViews: [], + cachedViews: new Set() + }), + getters: { + getVisitedViews(): RouteLocationNormalizedLoaded[] { + return this.visitedViews + }, + getCachedViews(): string[] { + return Array.from(this.cachedViews) + } + }, + actions: { + // 新增缓存和tag + addView(view: RouteLocationNormalizedLoaded): void { + this.addVisitedView(view) + this.addCachedView() + }, + // 新增tag + addVisitedView(view: RouteLocationNormalizedLoaded) { + if (this.visitedViews.some((v) => v.path === view.path)) return + if (view.meta?.noTagsView) return + this.visitedViews.push( + Object.assign({}, view, { + title: view.meta?.title || 'no-name' + }) + ) + }, + // 新增缓存 + addCachedView() { + const cacheMap: Set = new Set() + for (const v of this.visitedViews) { + const item = getRawRoute(v) + const needCache = !item.meta?.noCache + if (!needCache) { + continue + } + const name = item.name as string + cacheMap.add(name) + } + if (Array.from(this.cachedViews).sort().toString() === Array.from(cacheMap).sort().toString()) + return + this.cachedViews = cacheMap + }, + // 删除某个 + delView(view: RouteLocationNormalizedLoaded) { + this.delVisitedView(view) + this.delCachedView() + }, + // 删除tag + delVisitedView(view: RouteLocationNormalizedLoaded) { + for (const [i, v] of this.visitedViews.entries()) { + if (v.path === view.path) { + this.visitedViews.splice(i, 1) + break + } + } + }, + // 删除缓存 + delCachedView() { + const route = router.currentRoute.value + const index = findIndex(this.getCachedViews, (v) => v === route.name) + if (index > -1) { + this.cachedViews.delete(this.getCachedViews[index]) + } + }, + // 删除所有缓存和tag + delAllViews() { + this.delAllVisitedViews() + this.delCachedView() + }, + // 删除所有tag + delAllVisitedViews() { + // const affixTags = this.visitedViews.filter((tag) => tag.meta.affix) + this.visitedViews = [] + }, + // 删除其他 + delOthersViews(view: RouteLocationNormalizedLoaded) { + this.delOthersVisitedViews(view) + this.addCachedView() + }, + // 删除其他tag + delOthersVisitedViews(view: RouteLocationNormalizedLoaded) { + this.visitedViews = this.visitedViews.filter((v) => { + return v?.meta?.affix || v.path === view.path + }) + }, + // 删除左侧 + delLeftViews(view: RouteLocationNormalizedLoaded) { + const index = findIndex( + this.visitedViews, + (v) => v.path === view.path + ) + if (index > -1) { + this.visitedViews = this.visitedViews.filter((v, i) => { + return v?.meta?.affix || v.path === view.path || i > index + }) + this.addCachedView() + } + }, + // 删除右侧 + delRightViews(view: RouteLocationNormalizedLoaded) { + const index = findIndex( + this.visitedViews, + (v) => v.path === view.path + ) + if (index > -1) { + this.visitedViews = this.visitedViews.filter((v, i) => { + return v?.meta?.affix || v.path === view.path || i < index + }) + this.addCachedView() + } + }, + updateVisitedView(view: RouteLocationNormalizedLoaded) { + for (let v of this.visitedViews) { + if (v.path === view.path) { + v = Object.assign(v, view) + break + } + } + } + }, + persist: false +}) + +export const useTagsViewStoreWithOut = () => { + return useTagsViewStore(store) +} diff --git a/yshop-drink-vue3/src/store/modules/user.ts b/yshop-drink-vue3/src/store/modules/user.ts new file mode 100644 index 0000000..b386180 --- /dev/null +++ b/yshop-drink-vue3/src/store/modules/user.ts @@ -0,0 +1,103 @@ +import { store } from '@/store' +import { defineStore } from 'pinia' +import { getAccessToken, removeToken } from '@/utils/auth' +import { CACHE_KEY, useCache, deleteUserCache } from '@/hooks/web/useCache' +import { getInfo, loginOut } from '@/api/login' + +const { wsCache } = useCache() + +interface UserVO { + id: number + avatar: string + nickname: string + deptId: number +} + +interface UserInfoVO { + // USER 缓存 + permissions: string[] + roles: string[] + isSetUser: boolean + user: UserVO +} + +export const useUserStore = defineStore('admin-user', { + state: (): UserInfoVO => ({ + permissions: [], + roles: [], + isSetUser: false, + user: { + id: 0, + avatar: '', + nickname: '', + deptId: 0 + } + }), + getters: { + getPermissions(): string[] { + return this.permissions + }, + getRoles(): string[] { + return this.roles + }, + getIsSetUser(): boolean { + return this.isSetUser + }, + getUser(): UserVO { + return this.user + } + }, + actions: { + async setUserInfoAction() { + if (!getAccessToken()) { + this.resetState() + return null + } + let userInfo = wsCache.get(CACHE_KEY.USER) + if (!userInfo) { + userInfo = await getInfo() + } + this.permissions = userInfo.permissions + this.roles = userInfo.roles + this.user = userInfo.user + this.isSetUser = true + wsCache.set(CACHE_KEY.USER, userInfo) + wsCache.set(CACHE_KEY.ROLE_ROUTERS, userInfo.menus) + }, + async setUserAvatarAction(avatar: string) { + const userInfo = wsCache.get(CACHE_KEY.USER) + // NOTE: 是否需要像`setUserInfoAction`一样判断`userInfo != null` + this.user.avatar = avatar + userInfo.user.avatar = avatar + wsCache.set(CACHE_KEY.USER, userInfo) + }, + async setUserNicknameAction(nickname: string) { + const userInfo = wsCache.get(CACHE_KEY.USER) + // NOTE: 是否需要像`setUserInfoAction`一样判断`userInfo != null` + this.user.nickname = nickname + userInfo.user.nickname = nickname + wsCache.set(CACHE_KEY.USER, userInfo) + }, + async loginOut() { + await loginOut() + removeToken() + deleteUserCache() // 删除用户缓存 + this.resetState() + }, + resetState() { + this.permissions = [] + this.roles = [] + this.isSetUser = false + this.user = { + id: 0, + avatar: '', + nickname: '', + deptId: 0 + } + } + } +}) + +export const useUserStoreWithOut = () => { + return useUserStore(store) +} diff --git a/yshop-drink-vue3/src/styles/FormCreate/fonts/fontello.woff b/yshop-drink-vue3/src/styles/FormCreate/fonts/fontello.woff new file mode 100644 index 0000000000000000000000000000000000000000..1e00f4995b27e72b52d7d0fcf602d0206c3d6c89 GIT binary patch literal 4252 zcmY+HbyQSc_s1`cFvNhQfDF;K|Q|Njr| z2Ph2yATbA3MGzCNME*d-2jWto_8g2gL2R_yOpeg5wjQ812gc5zZMJF}&q3pSxB!6k zGKU(376ia}IJ$zG5de_yffCH_)@h)ltv6UpsRll#_#bqRE&&)&(*b}habT`|oDX*t z*1^^u0BEMb9B_R=P6#EfjRi$;o-1I?1;Pg%hpb~=ef&X<4~&^EVK^ZYUEI-^dGcTk zy98o-1?Ot(53Wmlxj(K;NP=j$-E3VQKn+}n#24J>#6$r*+{4}52LP@vfjI~el;8HV zw;o;&U@hHcT_8w)2woBIpO3b&x3O8Zldx$-+jw~%QrfPL>57h`)9h?)!+bdVu0kM)t5KNXUYn7TD@+bH z4wzml(wT=3SZRY#j=lljQ$*1ip-oxXY*>GiP{Ipf*p;@(KYuU1lO{|8rfIFh#Ux4f z=$Z|e@Mf6}-+F}HoFo~-lF*R4~h?S97NXDeH>UDnT4 zy-i;m7Py}}1-u`>M*>}{eE&dY>y7l`Wd2URg$`Di5W+Ns#Bs)-7TiL8SB~3?(fdSL zFM+S5R!!-s=3SdD{cLvb)@8sWKwnj#?xC4>a^Fj4bloQO0V-J*W6wrWT0sQL9+_Qe`Bx%38zuu;FkQ+r4>`&0l<=jjBwLy<5t{ z@wSY)(uOHZhFQ6WjDDvqlWT;s0j_iQM!Vu8w9I+(A>9$8Cd#-VA=&@9p2FUbRd@Th zL<^;ytHeSaI>$mzv?HcEn9r%;)2E!%0P$yWLlT)XvxyAjI*;>geKMve-rgt3$vl@#(=zN(q znM%aoJC&&qwg;@9383`b=qVLO{&VznG;z1VdE%=zgYI1Afh9*`IQ$*AkHgLeInQfG ze&yTC$-K;;(7JiYJaz5x?4{=d_nq#r`12Y!Iu#BXol@k$K*~%w2ZT%r_u|$-rt%rh)gf!{l@4q zO73s{BTbn)_4iuq656Hlv#4E$@7WC;pJiSqBecC=m9lCi)^6`#PdJH~q>4@>|7MzT zO{NMt6TK>{0sw5KWHsR#CTlpTh1(Z35n3)3AHkQ z#k6@QAD0WNg5Dc+_>P-RTr^LYjxA;(x}~EZFNxc`KCAV_<6tw4MI0zE&|>`Hai5woBduQ}`ethbygyKzvqv*BBZ_9suyqCV8t zh;(!H49#HjpLkeyS12x@;L^?DH8?HpY%yOQO`ppXbh^~^Gk>tXWaDt?;HziuMwIo( zc;}!RF(q-+zx*feJ1GkzZt}86zXb>+P=i*^Z2o2J40VTZ({gz-QR}Ylv3e-|O$HH~ z`DYw%loWf*UmDBqY;n`yQ1N;6Mu$D+ft6O2dx>BD)ZM9j*h(727$(~AE98gG91@9- zl|MYv&2^bStSY^bv_kePJ9rD;5gu*!NxfIQQE6ACxChI{ODTT9X=JYM@8o*4zIutg zsY9Od&flczAr+EE{)@r!Ng>mJN{F?t>*neMay{nK;nNX^2F9f>hV{kqTxq(_S)lc_jK`2UZ0ip%7JQ@&sQR9aF_A839nIm$5i~ceCw-7 z^58Lc?G03tTaa(&F#j=zA)=E)ed2LYaPn%5nUxP?>qU$7W~cn5MZ*kr?@Q-EdIC*~ zU7W|5tJ0e_Y*%%A@i&@Y_nmaQML-#d?Mu0#fWffzjxV7Npf;%ruN2qxb4q01z5M^?gHsqcT?i@`OqybRSBHrS?}E776Q#u#(BMy_0I?x499r}J?kxc zLGMZ$V*f=XjMIB+Vq|!$(%;#8^1Z12Ys z3{H}x^-t zZZj&>awMt*EH+7<%oDe&X)8mPuo8*{UiZx%W6#18%z|RqhC5El_!mgj!OI@J@<@n8 z;HrOqg~^0Fqc&5hJI3#5zBMTQZ| z_+Ck=P{IP$2S#KqReX&yYKiJK5s1wy6fx;5sm!A8I!2Cq-f`B@ZT~gJF>#)ITX80+ z=QD)7u|*>r%Lvm^BY)=sr1Whp1PL(M%Ioo&vI{oPyx@JJRt1SrGs2RPyrXa>f#}*I zMdGMNNbb5tO8_;jMpoAo00NI0Pd?!qJf{%1+}-^RJv(vsCaCx6Q?DOY4;s&&OcVq?U@>wurbVYT+?`L&+4e}qu$H-T+^uj(>6a07w(Sy^2owkK_{=|xeVK8{u;Bq^(> zNQop3kH>d2s;v43$Ipp)KqeM?t=t)mgVwm9&H$OEI$x)El{W- ziti)Zb7W>26^64?*-Kn>uftc70 zWiKo)bOP_KB~x*neQ|A5Kg+O!BcBJQ_w!!x;Js@l7z&PGqHk9?9)5XKv-=bM^5k!O zNvGU#PI=z+lXgNN;}+ws->Ilg|G7;M-@F0)Qi-Y4WnsDrcuSO~{EbwB(l1eI@RYIP zuV$M%e=bP5^IfiXyj>Kp&0RWG|3`-HcywX%q)xa+kdImR$S6}fzwtBfBSN>p+j}p* zF4iqYWjwG4qdlF&S)^~okcF~{d#gK>r{VE+w7;D^@B76?ME15Iscm;@P7^j?6HYvg7t&dboGd6s zSu?D3zle9jSjrDV(WA9(xWbAlOkGAZunXcige=RgVux|G$F@8Ha zTk-q%kC*AmR%mI#TQ_%CyK^AzJ_du>b+> z6&#Ux>HjuzJjy@ z(6CPvzI^z$2^}u2rFd(V>CxETGsiLhgTxJ~8vj?p8br7D2xwGRZCf8yByL8bOhHAA z`eD4@7}>)(MKD!+jNj{%7h5ag;{j!tdwWFFh^U#Tc=y?p_GwR6HjAB46^lNLUd`zV z!UkQMfg+4I3q}j`t3O=PErnZ)9Vt=uqX^%gwiOMBPugX^%bH!PwM`>mknZ!bQnre1 zkd#)KeZmcuL)>b~g?4-LptB0J)_w$RA#CGmWbE+55#gH2_{sUZ8D;l#B@j~H+04Ar zu~9<<35un`{OF~%7n1j!AQ(P-s7g;FuPRUUQc+`qiluVWaQPma=XZX~x<#dT*PqQO z&5rH;I{wb~kJ3bi>{3ft#iTpGqdX%FYBW7PeB&mC=J z7Y5uS-wn%5k5A7@k511_PY&nhSG8#6YblMYmv5;OZHW_?cB3T!EaF1Xdk;iz!eL0)gCS za2A9}Ln6ntn1@n&<7j9(=($1?#_CTGO+B94wgk50^v(y^50e}@3k&cZE(`^L{{nRLtcCyp literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/src/styles/FormCreate/index.scss b/yshop-drink-vue3/src/styles/FormCreate/index.scss new file mode 100644 index 0000000..bb62000 --- /dev/null +++ b/yshop-drink-vue3/src/styles/FormCreate/index.scss @@ -0,0 +1,22 @@ +// 使用字体图标来源 https://fontello.com/ + +@font-face { + font-family: 'fc-icon'; + src: url('@/styles/FormCreate/fonts/fontello.woff') format('woff'); +} + +.icon-doc-text:before { + content: '\f0f6'; +} + +.icon-server:before { + content: '\f233'; +} + +.icon-address-card-o:before { + content: '\f2bc'; +} + +.icon-user-o:before { + content: '\f2c0'; +} diff --git a/yshop-drink-vue3/src/styles/global.module.scss b/yshop-drink-vue3/src/styles/global.module.scss new file mode 100644 index 0000000..8448a92 --- /dev/null +++ b/yshop-drink-vue3/src/styles/global.module.scss @@ -0,0 +1,6 @@ +@import './variables.scss'; +// 导出变量 +:export { + namespace: $namespace; + elNamespace: $elNamespace; +} diff --git a/yshop-drink-vue3/src/styles/index.scss b/yshop-drink-vue3/src/styles/index.scss new file mode 100644 index 0000000..fbe76f2 --- /dev/null +++ b/yshop-drink-vue3/src/styles/index.scss @@ -0,0 +1,36 @@ +@import './var.css'; +@import './FormCreate/index.scss'; +@import 'element-plus/theme-chalk/dark/css-vars.css'; + +.reset-margin [class*='el-icon'] + span { + margin-left: 2px !important; +} + +// 解决抽屉弹出时,body宽度变化的问题 +.el-popup-parent--hidden { + width: 100% !important; +} + +// 解决表格内容超过表格总宽度后,横向滚动条前端顶不到表格边缘的问题 +.el-scrollbar__bar { + display: flex; + justify-content: flex-start; +} + +/* nprogress 适配 element-plus 的主题色 */ +#nprogress { + & .bar { + background-color: var(--el-color-primary) !important; + } + + & .peg { + box-shadow: + 0 0 10px var(--el-color-primary), + 0 0 5px var(--el-color-primary) !important; + } + + & .spinner-icon { + border-top-color: var(--el-color-primary); + border-left-color: var(--el-color-primary); + } +} diff --git a/yshop-drink-vue3/src/styles/theme.scss b/yshop-drink-vue3/src/styles/theme.scss new file mode 100644 index 0000000..39b03b3 --- /dev/null +++ b/yshop-drink-vue3/src/styles/theme.scss @@ -0,0 +1,6 @@ +// .text-color { +// color: var(--el-text-color-regular); +// } +// .dark .dark\:text-color { +// color: rgba(255, 255, 255, var(--dark-text-color)); +// } diff --git a/yshop-drink-vue3/src/styles/var.css b/yshop-drink-vue3/src/styles/var.css new file mode 100644 index 0000000..63459ba --- /dev/null +++ b/yshop-drink-vue3/src/styles/var.css @@ -0,0 +1,66 @@ +:root { + --login-bg-color: #293146; + + --left-menu-max-width: 200px; + + --left-menu-min-width: 64px; + + --left-menu-bg-color: #001529; + + --left-menu-bg-light-color: #0f2438; + + --left-menu-bg-active-color: var(--el-color-primary); + + --left-menu-text-color: #bfcbd9; + + --left-menu-text-active-color: #fff; + + --left-menu-collapse-bg-active-color: var(--el-color-primary); + /* left menu end */ + + /* logo start */ + --logo-height: 50px; + + --logo-title-text-color: #fff; + /* logo end */ + + /* header start */ + --top-header-bg-color: '#fff'; + + --top-header-text-color: 'inherit'; + + --top-header-hover-color: #f6f6f6; + + --top-tool-height: var(--logo-height); + + --top-tool-p-x: 0; + + --tags-view-height: 35px; + /* header start */ + + /* tab menu start */ + --tab-menu-max-width: 80px; + + --tab-menu-min-width: 30px; + + --tab-menu-collapse-height: 36px; + /* tab menu end */ + + --app-content-padding: 20px; + + --app-content-bg-color: #f5f7f9; + + --app-footer-height: 50px; + + --transition-time-02: 0.2s; +} + +.dark { + --app-content-bg-color: var(--el-bg-color); +} + +html, +body { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/yshop-drink-vue3/src/styles/variables.scss b/yshop-drink-vue3/src/styles/variables.scss new file mode 100644 index 0000000..00b66f1 --- /dev/null +++ b/yshop-drink-vue3/src/styles/variables.scss @@ -0,0 +1,4 @@ +// 命名空间 +$namespace: v; +// el命名空间 +$elNamespace: el; diff --git a/yshop-drink-vue3/src/types/components.d.ts b/yshop-drink-vue3/src/types/components.d.ts new file mode 100644 index 0000000..8de1f33 --- /dev/null +++ b/yshop-drink-vue3/src/types/components.d.ts @@ -0,0 +1,56 @@ +export type ComponentName = + | 'Radio' + | 'RadioButton' + | 'Checkbox' + | 'CheckboxButton' + | 'Input' + | 'Autocomplete' + | 'InputNumber' + | 'Select' + | 'Cascader' + | 'Switch' + | 'Slider' + | 'TimePicker' + | 'DatePicker' + | 'Rate' + | 'ColorPicker' + | 'Transfer' + | 'Divider' + | 'TimeSelect' + | 'SelectV2' + | 'TreeSelect' + | 'InputPassword' + | 'Editor' + | 'UploadImg' + | 'UploadImgs' + | 'UploadFile' + +export type ColProps = { + span?: number + xs?: number + sm?: number + md?: number + lg?: number + xl?: number + tag?: string +} + +export type ComponentOptions = { + label?: string + value?: FormValueType + disabled?: boolean + key?: string | number + children?: ComponentOptions[] + options?: ComponentOptions[] +} & Recordable + +export type ComponentOptionsAlias = { + labelField?: string + valueField?: string +} + +export type ComponentProps = { + optionsAlias?: ComponentOptionsAlias + options?: ComponentOptions[] + optionsSlot?: boolean +} & Recordable diff --git a/yshop-drink-vue3/src/types/configGlobal.d.ts b/yshop-drink-vue3/src/types/configGlobal.d.ts new file mode 100644 index 0000000..f6d7b3c --- /dev/null +++ b/yshop-drink-vue3/src/types/configGlobal.d.ts @@ -0,0 +1,4 @@ +import { ElementPlusSize } from './elementPlus' +export interface ConfigGlobalTypes { + size?: ElementPlusSize +} diff --git a/yshop-drink-vue3/src/types/contextMenu.d.ts b/yshop-drink-vue3/src/types/contextMenu.d.ts new file mode 100644 index 0000000..0738d0e --- /dev/null +++ b/yshop-drink-vue3/src/types/contextMenu.d.ts @@ -0,0 +1,7 @@ +export type contextMenuSchema = { + disabled?: boolean + divided?: boolean + icon?: string + label: string + command?: (item: contextMenuSchema) => void +} diff --git a/yshop-drink-vue3/src/types/descriptions.d.ts b/yshop-drink-vue3/src/types/descriptions.d.ts new file mode 100644 index 0000000..af6d68c --- /dev/null +++ b/yshop-drink-vue3/src/types/descriptions.d.ts @@ -0,0 +1,14 @@ +export interface DescriptionsSchema { + span?: number // 占多少分 + field: string // 字段名 + label?: string // label名 + mappedField?: string // 字段映射 + width?: string | number + minWidth?: string | number + align?: 'left' | 'center' | 'right' + labelAlign?: 'left' | 'center' | 'right' + className?: string + labelClassName?: string + dateFormat?: string // add by 星语:支持时间的格式化 + dictType?: string // add by 星语:支持 dict 字典数据 +} diff --git a/yshop-drink-vue3/src/types/elementPlus.d.ts b/yshop-drink-vue3/src/types/elementPlus.d.ts new file mode 100644 index 0000000..2c6b76e --- /dev/null +++ b/yshop-drink-vue3/src/types/elementPlus.d.ts @@ -0,0 +1,3 @@ +export type ElementPlusSize = 'default' | 'small' | 'large' + +export type ElementPlusInfoType = 'success' | 'info' | 'warning' | 'danger' diff --git a/yshop-drink-vue3/src/types/form.d.ts b/yshop-drink-vue3/src/types/form.d.ts new file mode 100644 index 0000000..980c8cc --- /dev/null +++ b/yshop-drink-vue3/src/types/form.d.ts @@ -0,0 +1,44 @@ +import type { CSSProperties } from 'vue' +import { ColProps, ComponentProps, ComponentName } from '@/types/components' +import type { AxiosPromise } from 'axios' + +export type FormSetPropsType = { + field: string + path: string + value: any +} + +export type FormValueType = string | number | string[] | number[] | boolean | undefined | null + +export type FormItemProps = { + labelWidth?: string | number + required?: boolean + rules?: Recordable + error?: string + showMessage?: boolean + inlineMessage?: boolean + style?: CSSProperties +} + +export type FormSchema = { + // 唯一值 + field: string + // 标题 + label?: string + // 提示 + labelMessage?: string + // col组件属性 + colProps?: ColProps + // 表单组件属性,slots对应的是表单组件的插槽,规则:${field}-xxx,具体可以查看element-plus文档 + componentProps?: { slots?: Recordable } & ComponentProps + // formItem组件属性 + formItemProps?: FormItemProps + // 渲染的组件 + component?: ComponentName + // 初始值 + value?: FormValueType + // 是否隐藏 + hidden?: boolean + // 远程加载下拉项 + api?: () => AxiosPromise +} diff --git a/yshop-drink-vue3/src/types/icon.d.ts b/yshop-drink-vue3/src/types/icon.d.ts new file mode 100644 index 0000000..d1ffcdb --- /dev/null +++ b/yshop-drink-vue3/src/types/icon.d.ts @@ -0,0 +1,5 @@ +export interface IconTypes { + size?: number + color?: string + icon: string +} diff --git a/yshop-drink-vue3/src/types/infoTip.d.ts b/yshop-drink-vue3/src/types/infoTip.d.ts new file mode 100644 index 0000000..6eff083 --- /dev/null +++ b/yshop-drink-vue3/src/types/infoTip.d.ts @@ -0,0 +1,4 @@ +export interface TipSchema { + label: string + keys?: string[] +} diff --git a/yshop-drink-vue3/src/types/layout.d.ts b/yshop-drink-vue3/src/types/layout.d.ts new file mode 100644 index 0000000..cad3e2a --- /dev/null +++ b/yshop-drink-vue3/src/types/layout.d.ts @@ -0,0 +1 @@ +export type LayoutType = 'classic' | 'topLeft' | 'top' | 'cutMenu' diff --git a/yshop-drink-vue3/src/types/localeDropdown.d.ts b/yshop-drink-vue3/src/types/localeDropdown.d.ts new file mode 100644 index 0000000..c749dce --- /dev/null +++ b/yshop-drink-vue3/src/types/localeDropdown.d.ts @@ -0,0 +1,10 @@ +export interface Language { + el: Recordable + name: string +} + +export interface LocaleDropdownType { + lang: LocaleType + name?: string + elLocale?: Language +} diff --git a/yshop-drink-vue3/src/types/qrcode.d.ts b/yshop-drink-vue3/src/types/qrcode.d.ts new file mode 100644 index 0000000..86cdf0b --- /dev/null +++ b/yshop-drink-vue3/src/types/qrcode.d.ts @@ -0,0 +1,9 @@ +export interface QrcodeLogo { + src?: string + logoSize?: number + bgColor?: string + borderSize?: number + crossOrigin?: string + borderRadius?: number + logoRadius?: number +} diff --git a/yshop-drink-vue3/src/types/table.d.ts b/yshop-drink-vue3/src/types/table.d.ts new file mode 100644 index 0000000..9cb4205 --- /dev/null +++ b/yshop-drink-vue3/src/types/table.d.ts @@ -0,0 +1,44 @@ +export type TableColumn = { + field: string + label?: string + width?: number | string + fixed?: 'left' | 'right' + children?: TableColumn[] +} & Recordable + +export type VxeTableColumn = { + field: string + title?: string + children?: TableColumn[] +} & Recordable + +export type TableSlotDefault = { + row: Recordable + column: TableColumn + $index: number +} & Recordable + +export interface Pagination { + small?: boolean + background?: boolean + pageSize?: number + defaultPageSize?: number + total?: number + pageCount?: number + pagerCount?: number + currentPage?: number + defaultCurrentPage?: number + layout?: string + pageSizes?: number[] + popperClass?: string + prevText?: string + nextText?: string + disabled?: boolean + hideOnSinglePage?: boolean +} + +export interface TableSetPropsType { + field: string + path: string + value: any +} diff --git a/yshop-drink-vue3/src/types/theme.d.ts b/yshop-drink-vue3/src/types/theme.d.ts new file mode 100644 index 0000000..ad649b0 --- /dev/null +++ b/yshop-drink-vue3/src/types/theme.d.ts @@ -0,0 +1,16 @@ +export type ThemeTypes = { + elColorPrimary?: string + leftMenuBorderColor?: string + leftMenuBgColor?: string + leftMenuBgLightColor?: string + leftMenuBgActiveColor?: string + leftMenuCollapseBgActiveColor?: string + leftMenuTextColor?: string + leftMenuTextActiveColor?: string + logoTitleTextColor?: string + logoBorderColor?: string + topHeaderBgColor?: string + topHeaderTextColor?: string + topHeaderHoverColor?: string + topToolBorderColor?: string +} diff --git a/yshop-drink-vue3/src/utils/Logger.ts b/yshop-drink-vue3/src/utils/Logger.ts new file mode 100644 index 0000000..ca58df2 --- /dev/null +++ b/yshop-drink-vue3/src/utils/Logger.ts @@ -0,0 +1,100 @@ +const isArray = function (obj: any): boolean { + return Object.prototype.toString.call(obj) === '[object Array]' +} + +const Logger = () => {} + +Logger.typeColor = function (type: string) { + let color = '' + switch (type) { + case 'primary': + color = '#2d8cf0' + break + case 'success': + color = '#19be6b' + break + case 'info': + color = '#909399' + break + case 'warn': + color = '#ff9900' + break + case 'error': + color = '#f03f14' + break + default: + color = '#35495E' + break + } + return color +} + +Logger.print = function (type = 'default', text: any, back = false) { + if (typeof text === 'object') { + // 如果是對象則調用打印對象方式 + isArray(text) ? console.table(text) : console.dir(text) + return + } + if (back) { + // 如果是打印帶背景圖的 + console.log( + `%c ${text} `, + `background:${Logger.typeColor(type)}; padding: 2px; border-radius: 4px; color: #fff;` + ) + } else { + console.log( + `%c ${text} `, + `border: 1px solid ${Logger.typeColor(type)}; + padding: 2px; border-radius: 4px; + color: ${Logger.typeColor(type)};` + ) + } +} + +Logger.printBack = function (type = 'primary', text) { + this.print(type, text, true) +} + +Logger.pretty = function (type = 'primary', title, text) { + if (typeof text === 'object') { + console.group('Console Group', title) + console.log( + `%c ${title}`, + `background:${Logger.typeColor(type)};border:1px solid ${Logger.typeColor(type)}; + padding: 1px; border-radius: 4px; color: #fff;` + ) + isArray(text) ? console.table(text) : console.dir(text) + console.groupEnd() + return + } + console.log( + `%c ${title} %c ${text} %c`, + `background:${Logger.typeColor(type)};border:1px solid ${Logger.typeColor(type)}; + padding: 1px; border-radius: 4px 0 0 4px; color: #fff;`, + `border:1px solid ${Logger.typeColor(type)}; + padding: 1px; border-radius: 0 4px 4px 0; color: ${Logger.typeColor(type)};`, + 'background:transparent' + ) +} + +Logger.prettyPrimary = function (title, ...text) { + text.forEach((t) => this.pretty('primary', title, t)) +} + +Logger.prettySuccess = function (title, ...text) { + text.forEach((t) => this.pretty('success', title, t)) +} + +Logger.prettyWarn = function (title, ...text) { + text.forEach((t) => this.pretty('warn', title, t)) +} + +Logger.prettyError = function (title, ...text) { + text.forEach((t) => this.pretty('error', title, t)) +} + +Logger.prettyInfo = function (title, ...text) { + text.forEach((t) => this.pretty('info', title, t)) +} + +export default Logger diff --git a/yshop-drink-vue3/src/utils/auth.ts b/yshop-drink-vue3/src/utils/auth.ts new file mode 100644 index 0000000..c68a67a --- /dev/null +++ b/yshop-drink-vue3/src/utils/auth.ts @@ -0,0 +1,71 @@ +import { useCache, CACHE_KEY } from '@/hooks/web/useCache' +import { TokenType } from '@/api/login/types' +import { decrypt, encrypt } from '@/utils/jsencrypt' + +const { wsCache } = useCache() + +const AccessTokenKey = 'ACCESS_TOKEN' +const RefreshTokenKey = 'REFRESH_TOKEN' + +// 获取token +export const getAccessToken = () => { + // 此处与TokenKey相同,此写法解决初始化时Cookies中不存在TokenKey报错 + return wsCache.get(AccessTokenKey) ? wsCache.get(AccessTokenKey) : wsCache.get('ACCESS_TOKEN') +} + +// 刷新token +export const getRefreshToken = () => { + return wsCache.get(RefreshTokenKey) +} + +// 设置token +export const setToken = (token: TokenType) => { + wsCache.set(RefreshTokenKey, token.refreshToken) + wsCache.set(AccessTokenKey, token.accessToken) +} + +// 删除token +export const removeToken = () => { + wsCache.delete(AccessTokenKey) + wsCache.delete(RefreshTokenKey) +} + +/** 格式化token(jwt格式) */ +export const formatToken = (token: string): string => { + return 'Bearer ' + token +} +// ========== 账号相关 ========== + +export type LoginFormType = { + tenantName: string + username: string + password: string + rememberMe: boolean +} + +export const getLoginForm = () => { + const loginForm: LoginFormType = wsCache.get(CACHE_KEY.LoginForm) + if (loginForm) { + loginForm.password = decrypt(loginForm.password) as string + } + return loginForm +} + +export const setLoginForm = (loginForm: LoginFormType) => { + loginForm.password = encrypt(loginForm.password) as string + wsCache.set(CACHE_KEY.LoginForm, loginForm, { exp: 30 * 24 * 60 * 60 }) +} + +export const removeLoginForm = () => { + wsCache.delete(CACHE_KEY.LoginForm) +} + +// ========== 租户相关 ========== + +export const getTenantId = () => { + return wsCache.get(CACHE_KEY.TenantId) +} + +export const setTenantId = (username: string) => { + wsCache.set(CACHE_KEY.TenantId, username) +} diff --git a/yshop-drink-vue3/src/utils/color.ts b/yshop-drink-vue3/src/utils/color.ts new file mode 100644 index 0000000..13424e5 --- /dev/null +++ b/yshop-drink-vue3/src/utils/color.ts @@ -0,0 +1,174 @@ +/** + * 判断是否 十六进制颜色值. + * 输入形式可为 #fff000 #f00 + * + * @param String color 十六进制颜色值 + * @return Boolean + */ +export const isHexColor = (color: string) => { + const reg = /^#([0-9a-fA-F]{3}|[0-9a-fA-f]{6})$/ + return reg.test(color) +} + +/** + * RGB 颜色值转换为 十六进制颜色值. + * r, g, 和 b 需要在 [0, 255] 范围内 + * + * @return String 类似#ff00ff + * @param r + * @param g + * @param b + */ +export const rgbToHex = (r: number, g: number, b: number) => { + // tslint:disable-next-line:no-bitwise + const hex = ((r << 16) | (g << 8) | b).toString(16) + return '#' + new Array(Math.abs(hex.length - 7)).join('0') + hex +} + +/** + * Transform a HEX color to its RGB representation + * @param {string} hex The color to transform + * @returns The RGB representation of the passed color + */ +export const hexToRGB = (hex: string, opacity?: number) => { + let sHex = hex.toLowerCase() + if (isHexColor(hex)) { + if (sHex.length === 4) { + let sColorNew = '#' + for (let i = 1; i < 4; i += 1) { + sColorNew += sHex.slice(i, i + 1).concat(sHex.slice(i, i + 1)) + } + sHex = sColorNew + } + const sColorChange: number[] = [] + for (let i = 1; i < 7; i += 2) { + sColorChange.push(parseInt('0x' + sHex.slice(i, i + 2))) + } + return opacity + ? 'RGBA(' + sColorChange.join(',') + ',' + opacity + ')' + : 'RGB(' + sColorChange.join(',') + ')' + } + return sHex +} + +export const colorIsDark = (color: string) => { + if (!isHexColor(color)) return + const [r, g, b] = hexToRGB(color) + .replace(/(?:\(|\)|rgb|RGB)*/g, '') + .split(',') + .map((item) => Number(item)) + return r * 0.299 + g * 0.578 + b * 0.114 < 192 +} + +/** + * Darkens a HEX color given the passed percentage + * @param {string} color The color to process + * @param {number} amount The amount to change the color by + * @returns {string} The HEX representation of the processed color + */ +export const darken = (color: string, amount: number) => { + color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color + amount = Math.trunc((255 * amount) / 100) + return `#${subtractLight(color.substring(0, 2), amount)}${subtractLight( + color.substring(2, 4), + amount + )}${subtractLight(color.substring(4, 6), amount)}` +} + +/** + * Lightens a 6 char HEX color according to the passed percentage + * @param {string} color The color to change + * @param {number} amount The amount to change the color by + * @returns {string} The processed color represented as HEX + */ +export const lighten = (color: string, amount: number) => { + color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color + amount = Math.trunc((255 * amount) / 100) + return `#${addLight(color.substring(0, 2), amount)}${addLight( + color.substring(2, 4), + amount + )}${addLight(color.substring(4, 6), amount)}` +} + +/* Suma el porcentaje indicado a un color (RR, GG o BB) hexadecimal para aclararlo */ +/** + * Sums the passed percentage to the R, G or B of a HEX color + * @param {string} color The color to change + * @param {number} amount The amount to change the color by + * @returns {string} The processed part of the color + */ +const addLight = (color: string, amount: number) => { + const cc = parseInt(color, 16) + amount + const c = cc > 255 ? 255 : cc + return c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}` +} + +/** + * Calculates luminance of an rgb color + * @param {number} r red + * @param {number} g green + * @param {number} b blue + */ +const luminanace = (r: number, g: number, b: number) => { + const a = [r, g, b].map((v) => { + v /= 255 + return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4) + }) + return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722 +} + +/** + * Calculates contrast between two rgb colors + * @param {string} rgb1 rgb color 1 + * @param {string} rgb2 rgb color 2 + */ +const contrast = (rgb1: string[], rgb2: number[]) => { + return ( + (luminanace(~~rgb1[0], ~~rgb1[1], ~~rgb1[2]) + 0.05) / + (luminanace(rgb2[0], rgb2[1], rgb2[2]) + 0.05) + ) +} + +/** + * Determines what the best text color is (black or white) based con the contrast with the background + * @param hexColor - Last selected color by the user + */ +export const calculateBestTextColor = (hexColor: string) => { + const rgbColor = hexToRGB(hexColor.substring(1)) + const contrastWithBlack = contrast(rgbColor.split(','), [0, 0, 0]) + + return contrastWithBlack >= 12 ? '#000000' : '#FFFFFF' +} + +/** + * Subtracts the indicated percentage to the R, G or B of a HEX color + * @param {string} color The color to change + * @param {number} amount The amount to change the color by + * @returns {string} The processed part of the color + */ +const subtractLight = (color: string, amount: number) => { + const cc = parseInt(color, 16) - amount + const c = cc < 0 ? 0 : cc + return c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}` +} + +// 预设颜色 +export const PREDEFINE_COLORS = [ + '#ff4500', + '#ff8c00', + '#ffd700', + '#90ee90', + '#00ced1', + '#1e90ff', + '#c71585', + '#409EFF', + '#909399', + '#C0C4CC', + '#b7390b', + '#ff7800', + '#fad400', + '#5b8c5f', + '#00babd', + '#1f73c3', + '#711f57' +] diff --git a/yshop-drink-vue3/src/utils/constants.ts b/yshop-drink-vue3/src/utils/constants.ts new file mode 100644 index 0000000..f4d67b4 --- /dev/null +++ b/yshop-drink-vue3/src/utils/constants.ts @@ -0,0 +1,431 @@ +/** + * Created by 芋道源码 + * + * 枚举类 + */ + +// ========== COMMON 模块 ========== +// 全局通用状态枚举 +export const CommonStatusEnum = { + ENABLE: 0, // 开启 + DISABLE: 1 // 禁用 +} + +// 全局用户类型枚举 +export const UserTypeEnum = { + MEMBER: 1, // 会员 + ADMIN: 2 // 管理员 +} + +// ========== SYSTEM 模块 ========== +/** + * 菜单的类型枚举 + */ +export const SystemMenuTypeEnum = { + DIR: 1, // 目录 + MENU: 2, // 菜单 + BUTTON: 3 // 按钮 +} + +/** + * 角色的类型枚举 + */ +export const SystemRoleTypeEnum = { + SYSTEM: 1, // 内置角色 + CUSTOM: 2 // 自定义角色 +} + +/** + * 数据权限的范围枚举 + */ +export const SystemDataScopeEnum = { + ALL: 1, // 全部数据权限 + DEPT_CUSTOM: 2, // 指定部门数据权限 + DEPT_ONLY: 3, // 部门数据权限 + DEPT_AND_CHILD: 4, // 部门及以下数据权限 + DEPT_SELF: 5 // 仅本人数据权限 +} + +/** + * 用户的社交平台的类型枚举 + */ +export const SystemUserSocialTypeEnum = { + DINGTALK: { + title: '钉钉', + type: 20, + source: 'dingtalk', + img: 'https://s1.ax1x.com/2022/05/22/OzMDRs.png' + }, + WECHAT_ENTERPRISE: { + title: '企业微信', + type: 30, + source: 'wechat_enterprise', + img: 'https://s1.ax1x.com/2022/05/22/OzMrzn.png' + } +} + +// ========== INFRA 模块 ========== +/** + * 代码生成模板类型 + */ +export const InfraCodegenTemplateTypeEnum = { + CRUD: 1, // 基础 CRUD + TREE: 2, // 树形 CRUD + SUB: 3 // 主子表 CRUD +} + +/** + * 任务状态的枚举 + */ +export const InfraJobStatusEnum = { + INIT: 0, // 初始化中 + NORMAL: 1, // 运行中 + STOP: 2 // 暂停运行 +} + +/** + * API 异常数据的处理状态 + */ +export const InfraApiErrorLogProcessStatusEnum = { + INIT: 0, // 未处理 + DONE: 1, // 已处理 + IGNORE: 2 // 已忽略 +} + +// ========== PAY 模块 ========== +/** + * 支付渠道枚举 + */ +export const PayChannelEnum = { + WX_PUB: { + code: 'wx_pub', + name: '微信 JSAPI 支付' + }, + WX_LITE: { + code: 'wx_lite', + name: '微信小程序支付' + }, + WX_APP: { + code: 'wx_app', + name: '微信 APP 支付' + }, + WX_BAR: { + code: 'wx_bar', + name: '微信条码支付' + }, + ALIPAY_PC: { + code: 'alipay_pc', + name: '支付宝 PC 网站支付' + }, + ALIPAY_WAP: { + code: 'alipay_wap', + name: '支付宝 WAP 网站支付' + }, + ALIPAY_APP: { + code: 'alipay_app', + name: '支付宝 APP 支付' + }, + ALIPAY_QR: { + code: 'alipay_qr', + name: '支付宝扫码支付' + }, + ALIPAY_BAR: { + code: 'alipay_bar', + name: '支付宝条码支付' + }, + WALLET: { + code: 'wallet', + name: '钱包支付' + }, + MOCK: { + code: 'mock', + name: '模拟支付' + } +} + +/** + * 支付的展示模式每局 + */ +export const PayDisplayModeEnum = { + URL: { + mode: 'url' + }, + IFRAME: { + mode: 'iframe' + }, + FORM: { + mode: 'form' + }, + QR_CODE: { + mode: 'qr_code' + }, + APP: { + mode: 'app' + } +} + +/** + * 支付类型枚举 + */ +export const PayType = { + WECHAT: 'WECHAT', + ALIPAY: 'ALIPAY', + MOCK: 'MOCK' +} + +/** + * 支付订单状态枚举 + */ +export const PayOrderStatusEnum = { + WAITING: { + status: 0, + name: '未支付' + }, + SUCCESS: { + status: 10, + name: '已支付' + }, + CLOSED: { + status: 20, + name: '未支付' + } +} + +// ========== MALL - 商品模块 ========== +/** + * 商品 SPU 状态 + */ +export const ProductSpuStatusEnum = { + RECYCLE: { + status: -1, + name: '回收站' + }, + DISABLE: { + status: 0, + name: '下架' + }, + ENABLE: { + status: 1, + name: '上架' + } +} + +// ========== MALL - 营销模块 ========== +/** + * 优惠劵模板的有限期类型的枚举 + */ +export const CouponTemplateValidityTypeEnum = { + DATE: { + type: 1, + name: '固定日期可用' + }, + TERM: { + type: 2, + name: '领取之后可用' + } +} + +/** + * 优惠劵模板的领取方式的枚举 + */ +export const CouponTemplateTakeTypeEnum = { + USER: { + type: 1, + name: '直接领取' + }, + ADMIN: { + type: 2, + name: '指定发放' + }, + REGISTER: { + type: 3, + name: '新人券' + } +} + +/** + * 营销的商品范围枚举 + */ +export const PromotionProductScopeEnum = { + ALL: { + scope: 1, + name: '通用劵' + }, + SPU: { + scope: 2, + name: '商品劵' + }, + CATEGORY: { + scope: 3, + name: '品类劵' + } +} + +/** + * 营销的条件类型枚举 + */ +export const PromotionConditionTypeEnum = { + PRICE: { + type: 10, + name: '满 N 元' + }, + COUNT: { + type: 20, + name: '满 N 件' + } +} + +/** + * 优惠类型枚举 + */ +export const PromotionDiscountTypeEnum = { + PRICE: { + type: 1, + name: '满减' + }, + PERCENT: { + type: 2, + name: '折扣' + } +} + +// ========== MALL - 交易模块 ========== +/** + * 分销关系绑定模式枚举 + */ +export const BrokerageBindModeEnum = { + ANYTIME: { + mode: 1, + name: '首次绑定' + }, + REGISTER: { + mode: 2, + name: '注册绑定' + }, + OVERRIDE: { + mode: 3, + name: '覆盖绑定' + } +} +/** + * 分佣模式枚举 + */ +export const BrokerageEnabledConditionEnum = { + ALL: { + condition: 1, + name: '人人分销' + }, + ADMIN: { + condition: 2, + name: '指定分销' + } +} +/** + * 佣金记录业务类型枚举 + */ +export const BrokerageRecordBizTypeEnum = { + ORDER: { + type: 1, + name: '获得推广佣金' + }, + WITHDRAW: { + type: 2, + name: '提现申请' + } +} +/** + * 佣金提现状态枚举 + */ +export const BrokerageWithdrawStatusEnum = { + AUDITING: { + status: 0, + name: '审核中' + }, + AUDIT_SUCCESS: { + status: 10, + name: '审核通过' + }, + AUDIT_FAIL: { + status: 20, + name: '审核不通过' + }, + WITHDRAW_SUCCESS: { + status: 11, + name: '提现成功' + }, + WITHDRAW_FAIL: { + status: 21, + name: '提现失败' + } +} +/** + * 佣金提现类型枚举 + */ +export const BrokerageWithdrawTypeEnum = { + WALLET: { + type: 1, + name: '钱包' + }, + BANK: { + type: 2, + name: '银行卡' + }, + WECHAT: { + type: 3, + name: '微信' + }, + ALIPAY: { + type: 4, + name: '支付宝' + } +} + +/** + * 配送方式枚举 + */ +export const DeliveryTypeEnum = { + EXPRESS: { + type: 1, + name: '快递发货' + }, + PICK_UP: { + type: 2, + name: '到店自提' + } +} +/** + * 交易订单 - 状态 + */ +export const TradeOrderStatusEnum = { + UNPAID: { + status: 0, + name: '待支付' + }, + UNDELIVERED: { + status: 10, + name: '待发货' + }, + DELIVERED: { + status: 20, + name: '已发货' + }, + COMPLETED: { + status: 30, + name: '已完成' + }, + CANCELED: { + status: 40, + name: '已取消' + } +} + +// ========== ERP - 企业资源计划 ========== + +export const ErpBizType = { + PURCHASE_ORDER: 10, + PURCHASE_IN: 11, + PURCHASE_RETURN: 12, + SALE_ORDER: 20, + SALE_OUT: 21, + SALE_RETURN: 22 +} diff --git a/yshop-drink-vue3/src/utils/dateUtil.ts b/yshop-drink-vue3/src/utils/dateUtil.ts new file mode 100644 index 0000000..316b870 --- /dev/null +++ b/yshop-drink-vue3/src/utils/dateUtil.ts @@ -0,0 +1,18 @@ +/** + * Independent time operation tool to facilitate subsequent switch to dayjs + */ +// TODO 芋艿:【锁屏】可能后面删除掉 +import dayjs from 'dayjs' + +const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss' +const DATE_FORMAT = 'YYYY-MM-DD' + +export function formatToDateTime(date?: dayjs.ConfigType, format = DATE_TIME_FORMAT): string { + return dayjs(date).format(format) +} + +export function formatToDate(date?: dayjs.ConfigType, format = DATE_FORMAT): string { + return dayjs(date).format(format) +} + +export const dateUtil = dayjs diff --git a/yshop-drink-vue3/src/utils/dict.ts b/yshop-drink-vue3/src/utils/dict.ts new file mode 100644 index 0000000..631a40b --- /dev/null +++ b/yshop-drink-vue3/src/utils/dict.ts @@ -0,0 +1,213 @@ +/** + * 数据字典工具类 + */ +import {useDictStoreWithOut} from '@/store/modules/dict' +import {ElementPlusInfoType} from '@/types/elementPlus' + +const dictStore = useDictStoreWithOut() + +/** + * 获取 dictType 对应的数据字典数组 + * + * @param dictType 数据类型 + * @returns {*|Array} 数据字典数组 + */ +export interface DictDataType { + dictType: string + label: string + value: string | number | boolean + colorType: ElementPlusInfoType | '' + cssClass: string +} + +export interface NumberDictDataType extends DictDataType { + value: number +} + +export const getDictOptions = (dictType: string) => { + return dictStore.getDictByType(dictType) || [] +} + +export const getIntDictOptions = (dictType: string): NumberDictDataType[] => { + // 获得通用的 DictDataType 列表 + const dictOptions: DictDataType[] = getDictOptions(dictType) + // 转换成 number 类型的 NumberDictDataType 类型 + // why 需要特殊转换:避免 IDEA 在 v-for="dict in getIntDictOptions(...)" 时,el-option 的 key 会告警 + const dictOption: NumberDictDataType[] = [] + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: parseInt(dict.value + '') + }) + }) + return dictOption +} + +export const getStrDictOptions = (dictType: string) => { + const dictOption: DictDataType[] = [] + const dictOptions: DictDataType[] = getDictOptions(dictType) + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: dict.value + '' + }) + }) + return dictOption +} + +export const getBoolDictOptions = (dictType: string) => { + const dictOption: DictDataType[] = [] + const dictOptions: DictDataType[] = getDictOptions(dictType) + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: dict.value + '' === 'true' + }) + }) + return dictOption +} + +/** + * 获取指定字典类型的指定值对应的字典对象 + * @param dictType 字典类型 + * @param value 字典值 + * @return DictDataType 字典对象 + */ +export const getDictObj = (dictType: string, value: any): DictDataType | undefined => { + const dictOptions: DictDataType[] = getDictOptions(dictType) + for (const dict of dictOptions) { + if (dict.value === value + '') { + return dict + } + } +} + +/** + * 获得字典数据的文本展示 + * + * @param dictType 字典类型 + * @param value 字典数据的值 + * @return 字典名称 + */ +export const getDictLabel = (dictType: string, value: any): string => { + const dictOptions: DictDataType[] = getDictOptions(dictType) + const dictLabel = ref('') + dictOptions.forEach((dict: DictDataType) => { + if (dict.value === value + '') { + dictLabel.value = dict.label + } + }) + return dictLabel.value +} + +export enum DICT_TYPE { + USER_TYPE = 'user_type', + COMMON_STATUS = 'common_status', + TERMINAL = 'terminal', // 终端 + DATE_INTERVAL = 'date_interval', // 数据间隔 + + // ========== SYSTEM 模块 ========== + SYSTEM_USER_SEX = 'system_user_sex', + SYSTEM_MENU_TYPE = 'system_menu_type', + SYSTEM_ROLE_TYPE = 'system_role_type', + SYSTEM_DATA_SCOPE = 'system_data_scope', + SYSTEM_NOTICE_TYPE = 'system_notice_type', + SYSTEM_LOGIN_TYPE = 'system_login_type', + SYSTEM_LOGIN_RESULT = 'system_login_result', + SYSTEM_SMS_CHANNEL_CODE = 'system_sms_channel_code', + SYSTEM_SMS_TEMPLATE_TYPE = 'system_sms_template_type', + SYSTEM_SMS_SEND_STATUS = 'system_sms_send_status', + SYSTEM_SMS_RECEIVE_STATUS = 'system_sms_receive_status', + SYSTEM_ERROR_CODE_TYPE = 'system_error_code_type', + SYSTEM_OAUTH2_GRANT_TYPE = 'system_oauth2_grant_type', + SYSTEM_MAIL_SEND_STATUS = 'system_mail_send_status', + SYSTEM_NOTIFY_TEMPLATE_TYPE = 'system_notify_template_type', + SYSTEM_SOCIAL_TYPE = 'system_social_type', + + // ========== INFRA 模块 ========== + INFRA_BOOLEAN_STRING = 'infra_boolean_string', + INFRA_JOB_STATUS = 'infra_job_status', + INFRA_JOB_LOG_STATUS = 'infra_job_log_status', + INFRA_API_ERROR_LOG_PROCESS_STATUS = 'infra_api_error_log_process_status', + INFRA_CONFIG_TYPE = 'infra_config_type', + INFRA_CODEGEN_TEMPLATE_TYPE = 'infra_codegen_template_type', + INFRA_CODEGEN_FRONT_TYPE = 'infra_codegen_front_type', + INFRA_CODEGEN_SCENE = 'infra_codegen_scene', + INFRA_FILE_STORAGE = 'infra_file_storage', + INFRA_OPERATE_TYPE = 'infra_operate_type', + + // ========== BPM 模块 ========== + BPM_MODEL_FORM_TYPE = 'bpm_model_form_type', + BPM_TASK_CANDIDATE_STRATEGY = 'bpm_task_candidate_strategy', + BPM_PROCESS_INSTANCE_STATUS = 'bpm_process_instance_status', + BPM_TASK_STATUS = 'bpm_task_status', + BPM_OA_LEAVE_TYPE = 'bpm_oa_leave_type', + BPM_PROCESS_LISTENER_TYPE = 'bpm_process_listener_type', + BPM_PROCESS_LISTENER_VALUE_TYPE = 'bpm_process_listener_value_type', + + // ========== PAY 模块 ========== + PAY_CHANNEL_CODE = 'pay_channel_code', // 支付渠道编码类型 + PAY_ORDER_STATUS = 'pay_order_status', // 商户支付订单状态 + PAY_REFUND_STATUS = 'pay_refund_status', // 退款订单状态 + PAY_NOTIFY_STATUS = 'pay_notify_status', // 商户支付回调状态 + PAY_NOTIFY_TYPE = 'pay_notify_type', // 商户支付回调状态 + PAY_TRANSFER_STATUS = 'pay_transfer_status', // 转账订单状态 + PAY_TRANSFER_TYPE = 'pay_transfer_type', // 转账订单状态 + + // ========== MP 模块 ========== + MP_AUTO_REPLY_REQUEST_MATCH = 'mp_auto_reply_request_match', // 自动回复请求匹配类型 + MP_MESSAGE_TYPE = 'mp_message_type', // 消息类型 + + // ========== Member 会员模块 ========== + MEMBER_POINT_BIZ_TYPE = 'member_point_biz_type', // 积分的业务类型 + MEMBER_EXPERIENCE_BIZ_TYPE = 'member_experience_biz_type', // 会员经验业务类型 + + // ========== MALL - 商品模块 ========== + PRODUCT_SPU_STATUS = 'product_spu_status', //商品状态 + + // ========== MALL - 交易模块 ========== + EXPRESS_CHARGE_MODE = 'trade_delivery_express_charge_mode', //快递的计费方式 + TRADE_AFTER_SALE_STATUS = 'trade_after_sale_status', // 售后 - 状态 + TRADE_AFTER_SALE_WAY = 'trade_after_sale_way', // 售后 - 方式 + TRADE_AFTER_SALE_TYPE = 'trade_after_sale_type', // 售后 - 类型 + TRADE_ORDER_TYPE = 'trade_order_type', // 订单 - 类型 + TRADE_ORDER_STATUS = 'trade_order_status', // 订单 - 状态 + TRADE_ORDER_ITEM_AFTER_SALE_STATUS = 'trade_order_item_after_sale_status', // 订单项 - 售后状态 + TRADE_DELIVERY_TYPE = 'trade_delivery_type', // 配送方式 + BROKERAGE_ENABLED_CONDITION = 'brokerage_enabled_condition', // 分佣模式 + BROKERAGE_BIND_MODE = 'brokerage_bind_mode', // 分销关系绑定模式 + BROKERAGE_BANK_NAME = 'brokerage_bank_name', // 佣金提现银行 + BROKERAGE_WITHDRAW_TYPE = 'brokerage_withdraw_type', // 佣金提现类型 + BROKERAGE_RECORD_BIZ_TYPE = 'brokerage_record_biz_type', // 佣金业务类型 + BROKERAGE_RECORD_STATUS = 'brokerage_record_status', // 佣金状态 + BROKERAGE_WITHDRAW_STATUS = 'brokerage_withdraw_status', // 佣金提现状态 + + // ========== MALL - 营销模块 ========== + PROMOTION_DISCOUNT_TYPE = 'promotion_discount_type', // 优惠类型 + PROMOTION_PRODUCT_SCOPE = 'promotion_product_scope', // 营销的商品范围 + PROMOTION_COUPON_TEMPLATE_VALIDITY_TYPE = 'promotion_coupon_template_validity_type', // 优惠劵模板的有限期类型 + PROMOTION_COUPON_STATUS = 'promotion_coupon_status', // 优惠劵的状态 + PROMOTION_COUPON_TAKE_TYPE = 'promotion_coupon_take_type', // 优惠劵的领取方式 + PROMOTION_ACTIVITY_STATUS = 'promotion_activity_status', // 优惠活动的状态 + PROMOTION_CONDITION_TYPE = 'promotion_condition_type', // 营销的条件类型枚举 + PROMOTION_BARGAIN_RECORD_STATUS = 'promotion_bargain_record_status', // 砍价记录的状态 + PROMOTION_COMBINATION_RECORD_STATUS = 'promotion_combination_record_status', // 拼团记录的状态 + PROMOTION_BANNER_POSITION = 'promotion_banner_position', // banner 定位 + + // ========== CRM - 客户管理模块 ========== + CRM_AUDIT_STATUS = 'crm_audit_status', // CRM 审批状态 + CRM_BIZ_TYPE = 'crm_biz_type', // CRM 业务类型 + CRM_BUSINESS_END_STATUS_TYPE = 'crm_business_end_status_type', // CRM 商机结束状态类型 + CRM_RECEIVABLE_RETURN_TYPE = 'crm_receivable_return_type', // CRM 回款的还款方式 + CRM_CUSTOMER_INDUSTRY = 'crm_customer_industry', // CRM 客户所属行业 + CRM_CUSTOMER_LEVEL = 'crm_customer_level', // CRM 客户级别 + CRM_CUSTOMER_SOURCE = 'crm_customer_source', // CRM 客户来源 + CRM_PRODUCT_STATUS = 'crm_product_status', // CRM 商品状态 + CRM_PERMISSION_LEVEL = 'crm_permission_level', // CRM 数据权限的级别 + CRM_PRODUCT_UNIT = 'crm_product_unit', // CRM 产品单位 + CRM_FOLLOW_UP_TYPE = 'crm_follow_up_type', // CRM 跟进方式 + + // ========== ERP - 企业资源计划模块 ========== + ERP_AUDIT_STATUS = 'erp_audit_status', // ERP 审批状态 + ERP_STOCK_RECORD_BIZ_TYPE = 'erp_stock_record_biz_type' // 库存明细的业务类型 +} diff --git a/yshop-drink-vue3/src/utils/domUtils.ts b/yshop-drink-vue3/src/utils/domUtils.ts new file mode 100644 index 0000000..dbc1989 --- /dev/null +++ b/yshop-drink-vue3/src/utils/domUtils.ts @@ -0,0 +1,289 @@ +import { isServer } from './is' +const ieVersion = isServer ? 0 : Number((document as any).documentMode) +const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g +const MOZ_HACK_REGEXP = /^moz([A-Z])/ + +export interface ViewportOffsetResult { + left: number + top: number + right: number + bottom: number + rightIncludeBody: number + bottomIncludeBody: number +} + +/* istanbul ignore next */ +const trim = function (string: string) { + return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '') +} + +/* istanbul ignore next */ +const camelCase = function (name: string) { + return name + .replace(SPECIAL_CHARS_REGEXP, function (_, __, letter, offset) { + return offset ? letter.toUpperCase() : letter + }) + .replace(MOZ_HACK_REGEXP, 'Moz$1') +} + +/* istanbul ignore next */ +export function hasClass(el: Element, cls: string) { + if (!el || !cls) return false + if (cls.indexOf(' ') !== -1) { + throw new Error('className should not contain space.') + } + if (el.classList) { + return el.classList.contains(cls) + } else { + return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1 + } +} + +/* istanbul ignore next */ +export function addClass(el: Element, cls: string) { + if (!el) return + let curClass = el.className + const classes = (cls || '').split(' ') + + for (let i = 0, j = classes.length; i < j; i++) { + const clsName = classes[i] + if (!clsName) continue + + if (el.classList) { + el.classList.add(clsName) + } else if (!hasClass(el, clsName)) { + curClass += ' ' + clsName + } + } + if (!el.classList) { + el.className = curClass + } +} + +/* istanbul ignore next */ +export function removeClass(el: Element, cls: string) { + if (!el || !cls) return + const classes = cls.split(' ') + let curClass = ' ' + el.className + ' ' + + for (let i = 0, j = classes.length; i < j; i++) { + const clsName = classes[i] + if (!clsName) continue + + if (el.classList) { + el.classList.remove(clsName) + } else if (hasClass(el, clsName)) { + curClass = curClass.replace(' ' + clsName + ' ', ' ') + } + } + if (!el.classList) { + el.className = trim(curClass) + } +} + +export function getBoundingClientRect(element: Element): DOMRect | number { + if (!element || !element.getBoundingClientRect) { + return 0 + } + return element.getBoundingClientRect() +} + +/** + * 获取当前元素的left、top偏移 + * left:元素最左侧距离文档左侧的距离 + * top:元素最顶端距离文档顶端的距离 + * right:元素最右侧距离文档右侧的距离 + * bottom:元素最底端距离文档底端的距离 + * rightIncludeBody:元素最左侧距离文档右侧的距离 + * bottomIncludeBody:元素最底端距离文档最底部的距离 + * + * @description: + */ +export function getViewportOffset(element: Element): ViewportOffsetResult { + const doc = document.documentElement + + const docScrollLeft = doc.scrollLeft + const docScrollTop = doc.scrollTop + const docClientLeft = doc.clientLeft + const docClientTop = doc.clientTop + + const pageXOffset = window.pageXOffset + const pageYOffset = window.pageYOffset + + const box = getBoundingClientRect(element) + + const { left: retLeft, top: rectTop, width: rectWidth, height: rectHeight } = box as DOMRect + + const scrollLeft = (pageXOffset || docScrollLeft) - (docClientLeft || 0) + const scrollTop = (pageYOffset || docScrollTop) - (docClientTop || 0) + const offsetLeft = retLeft + pageXOffset + const offsetTop = rectTop + pageYOffset + + const left = offsetLeft - scrollLeft + const top = offsetTop - scrollTop + + const clientWidth = window.document.documentElement.clientWidth + const clientHeight = window.document.documentElement.clientHeight + return { + left: left, + top: top, + right: clientWidth - rectWidth - left, + bottom: clientHeight - rectHeight - top, + rightIncludeBody: clientWidth - left, + bottomIncludeBody: clientHeight - top + } +} + +/* istanbul ignore next */ +export const on = function ( + element: HTMLElement | Document | Window, + event: string, + handler: EventListenerOrEventListenerObject +): void { + if (element && event && handler) { + element.addEventListener(event, handler, false) + } +} + +/* istanbul ignore next */ +export const off = function ( + element: HTMLElement | Document | Window, + event: string, + handler: any +): void { + if (element && event && handler) { + element.removeEventListener(event, handler, false) + } +} + +/* istanbul ignore next */ +export const once = function (el: HTMLElement, event: string, fn: EventListener): void { + const listener = function (this: any, ...args: unknown[]) { + if (fn) { + // @ts-ignore + fn.apply(this, args) + } + off(el, event, listener) + } + on(el, event, listener) +} + +/* istanbul ignore next */ +export const getStyle = + ieVersion < 9 + ? function (element: Element | any, styleName: string) { + if (isServer) return + if (!element || !styleName) return null + styleName = camelCase(styleName) + if (styleName === 'float') { + styleName = 'styleFloat' + } + try { + switch (styleName) { + case 'opacity': + try { + return element.filters.item('alpha').opacity / 100 + } catch (e) { + return 1.0 + } + default: + return element.style[styleName] || element.currentStyle + ? element.currentStyle[styleName] + : null + } + } catch (e) { + return element.style[styleName] + } + } + : function (element: Element | any, styleName: string) { + if (isServer) return + if (!element || !styleName) return null + styleName = camelCase(styleName) + if (styleName === 'float') { + styleName = 'cssFloat' + } + try { + const computed = (document as any).defaultView.getComputedStyle(element, '') + return element.style[styleName] || computed ? computed[styleName] : null + } catch (e) { + return element.style[styleName] + } + } + +/* istanbul ignore next */ +export function setStyle(element: Element | any, styleName: any, value: any) { + if (!element || !styleName) return + + if (typeof styleName === 'object') { + for (const prop in styleName) { + if (Object.prototype.hasOwnProperty.call(styleName, prop)) { + setStyle(element, prop, styleName[prop]) + } + } + } else { + styleName = camelCase(styleName) + if (styleName === 'opacity' && ieVersion < 9) { + element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')' + } else { + element.style[styleName] = value + } + } +} + +/* istanbul ignore next */ +export const isScroll = (el: Element, vertical: any) => { + if (isServer) return + + const determinedDirection = vertical !== null || vertical !== undefined + const overflow = determinedDirection + ? vertical + ? getStyle(el, 'overflow-y') + : getStyle(el, 'overflow-x') + : getStyle(el, 'overflow') + + return overflow.match(/(scroll|auto)/) +} + +/* istanbul ignore next */ +export const getScrollContainer = (el: Element, vertical?: any) => { + if (isServer) return + + let parent: any = el + while (parent) { + if ([window, document, document.documentElement].includes(parent)) { + return window + } + if (isScroll(parent, vertical)) { + return parent + } + parent = parent.parentNode + } + + return parent +} + +/* istanbul ignore next */ +export const isInContainer = (el: Element, container: any) => { + if (isServer || !el || !container) return false + + const elRect = el.getBoundingClientRect() + let containerRect + + if ([window, document, document.documentElement, null, undefined].includes(container)) { + containerRect = { + top: 0, + right: window.innerWidth, + bottom: window.innerHeight, + left: 0 + } + } else { + containerRect = container.getBoundingClientRect() + } + + return ( + elRect.top < containerRect.bottom && + elRect.bottom > containerRect.top && + elRect.right > containerRect.left && + elRect.left < containerRect.right + ) +} diff --git a/yshop-drink-vue3/src/utils/download.ts b/yshop-drink-vue3/src/utils/download.ts new file mode 100644 index 0000000..ab20014 --- /dev/null +++ b/yshop-drink-vue3/src/utils/download.ts @@ -0,0 +1,38 @@ +const download0 = (data: Blob, fileName: string, mineType: string) => { + // 创建 blob + const blob = new Blob([data], { type: mineType }) + // 创建 href 超链接,点击进行下载 + window.URL = window.URL || window.webkitURL + const href = URL.createObjectURL(blob) + const downA = document.createElement('a') + downA.href = href + downA.download = fileName + downA.click() + // 销毁超连接 + window.URL.revokeObjectURL(href) +} + +const download = { + // 下载 Excel 方法 + excel: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/vnd.ms-excel') + }, + // 下载 Word 方法 + word: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/msword') + }, + // 下载 Zip 方法 + zip: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/zip') + }, + // 下载 Html 方法 + html: (data: Blob, fileName: string) => { + download0(data, fileName, 'text/html') + }, + // 下载 Markdown 方法 + markdown: (data: Blob, fileName: string) => { + download0(data, fileName, 'text/markdown') + } +} + +export default download diff --git a/yshop-drink-vue3/src/utils/filt.ts b/yshop-drink-vue3/src/utils/filt.ts new file mode 100644 index 0000000..b1a7b2c --- /dev/null +++ b/yshop-drink-vue3/src/utils/filt.ts @@ -0,0 +1,157 @@ +export const openWindow = ( + url: string, + opt?: { + target?: '_self' | '_blank' | string + noopener?: boolean + noreferrer?: boolean + } +) => { + const { target = '__blank', noopener = true, noreferrer = true } = opt || {} + const feature: string[] = [] + + noopener && feature.push('noopener=yes') + noreferrer && feature.push('noreferrer=yes') + + window.open(url, target, feature.join(',')) +} + +/** + * @description: base64 to blob + */ +export const dataURLtoBlob = (base64Buf: string): Blob => { + const arr = base64Buf.split(',') + const typeItem = arr[0] + const mime = typeItem.match(/:(.*?);/)![1] + const bstr = window.atob(arr[1]) + let n = bstr.length + const u8arr = new Uint8Array(n) + while (n--) { + u8arr[n] = bstr.charCodeAt(n) + } + return new Blob([u8arr], { type: mime }) +} + +/** + * img url to base64 + * @param url + */ +export const urlToBase64 = (url: string, mineType?: string): Promise => { + return new Promise((resolve, reject) => { + let canvas = document.createElement('CANVAS') as Nullable + const ctx = canvas!.getContext('2d') + + const img = new Image() + img.crossOrigin = '' + img.onload = function () { + if (!canvas || !ctx) { + return reject() + } + canvas.height = img.height + canvas.width = img.width + ctx.drawImage(img, 0, 0) + const dataURL = canvas.toDataURL(mineType || 'image/png') + canvas = null + resolve(dataURL) + } + img.src = url + }) +} + +/** + * Download online pictures + * @param url + * @param filename + * @param mime + * @param bom + */ +export const downloadByOnlineUrl = ( + url: string, + filename: string, + mime?: string, + bom?: BlobPart +) => { + urlToBase64(url).then((base64) => { + downloadByBase64(base64, filename, mime, bom) + }) +} + +/** + * Download pictures based on base64 + * @param buf + * @param filename + * @param mime + * @param bom + */ +export const downloadByBase64 = (buf: string, filename: string, mime?: string, bom?: BlobPart) => { + const base64Buf = dataURLtoBlob(buf) + downloadByData(base64Buf, filename, mime, bom) +} + +/** + * Download according to the background interface file stream + * @param {*} data + * @param {*} filename + * @param {*} mime + * @param {*} bom + */ +export const downloadByData = (data: BlobPart, filename: string, mime?: string, bom?: BlobPart) => { + const blobData = typeof bom !== 'undefined' ? [bom, data] : [data] + const blob = new Blob(blobData, { type: mime || 'application/octet-stream' }) + + const blobURL = window.URL.createObjectURL(blob) + const tempLink = document.createElement('a') + tempLink.style.display = 'none' + tempLink.href = blobURL + tempLink.setAttribute('download', filename) + if (typeof tempLink.download === 'undefined') { + tempLink.setAttribute('target', '_blank') + } + document.body.appendChild(tempLink) + tempLink.click() + document.body.removeChild(tempLink) + window.URL.revokeObjectURL(blobURL) +} + +/** + * Download file according to file address + * @param {*} sUrl + */ +export const downloadByUrl = ({ + url, + target = '_blank', + fileName +}: { + url: string + target?: '_self' | '_blank' + fileName?: string +}): boolean => { + const isChrome = window.navigator.userAgent.toLowerCase().indexOf('chrome') > -1 + const isSafari = window.navigator.userAgent.toLowerCase().indexOf('safari') > -1 + + if (/(iP)/g.test(window.navigator.userAgent)) { + console.error('Your browser does not support download!') + return false + } + if (isChrome || isSafari) { + const link = document.createElement('a') + link.href = url + link.target = target + + if (link.download !== undefined) { + link.download = fileName || url.substring(url.lastIndexOf('/') + 1, url.length) + } + + if (document.createEvent) { + const e = document.createEvent('MouseEvents') + e.initEvent('click', true, true) + link.dispatchEvent(e) + return true + } + } + if (url.indexOf('?') === -1) { + url += '?download' + } + + openWindow(url, { target }) + return true +} diff --git a/yshop-drink-vue3/src/utils/formCreate.ts b/yshop-drink-vue3/src/utils/formCreate.ts new file mode 100644 index 0000000..850df8c --- /dev/null +++ b/yshop-drink-vue3/src/utils/formCreate.ts @@ -0,0 +1,57 @@ +/** + * 针对 https://github.com/xaboy/form-create-designer 封装的工具类 + */ + +// 编码表单 Conf +export const encodeConf = (designerRef: object) => { + // @ts-ignore + return JSON.stringify(designerRef.value.getOption()) +} + +// 编码表单 Fields +export const encodeFields = (designerRef: object) => { + // @ts-ignore + const rule = designerRef.value.getRule() + const fields: string[] = [] + rule.forEach((item) => { + fields.push(JSON.stringify(item)) + }) + return fields +} + +// 解码表单 Fields +export const decodeFields = (fields: string[]) => { + const rule: object[] = [] + fields.forEach((item) => { + rule.push(JSON.parse(item)) + }) + return rule +} + +// 设置表单的 Conf 和 Fields,适用 FcDesigner 场景 +export const setConfAndFields = (designerRef: object, conf: string, fields: string) => { + // @ts-ignore + designerRef.value.setOption(JSON.parse(conf)) + // @ts-ignore + designerRef.value.setRule(decodeFields(fields)) +} + +// 设置表单的 Conf 和 Fields,适用 form-create 场景 +export const setConfAndFields2 = ( + detailPreview: object, + conf: string, + fields: string[], + value?: object +) => { + if (isRef(detailPreview)) { + detailPreview = detailPreview.value + } + // @ts-ignore + detailPreview.option = JSON.parse(conf) + // @ts-ignore + detailPreview.rule = decodeFields(fields) + if (value) { + // @ts-ignore + detailPreview.value = value + } +} diff --git a/yshop-drink-vue3/src/utils/formRules.ts b/yshop-drink-vue3/src/utils/formRules.ts new file mode 100644 index 0000000..2989867 --- /dev/null +++ b/yshop-drink-vue3/src/utils/formRules.ts @@ -0,0 +1,7 @@ +const { t } = useI18n() + +// 必填项 +export const required = { + required: true, + message: t('common.required') +} diff --git a/yshop-drink-vue3/src/utils/formatTime.ts b/yshop-drink-vue3/src/utils/formatTime.ts new file mode 100644 index 0000000..134a986 --- /dev/null +++ b/yshop-drink-vue3/src/utils/formatTime.ts @@ -0,0 +1,332 @@ +import dayjs from 'dayjs' +import type { TableColumnCtx } from 'element-plus' + +/** + * 日期快捷选项适用于 el-date-picker + */ +export const defaultShortcuts = [ + { + text: '今天', + value: () => { + return new Date() + } + }, + { + text: '昨天', + value: () => { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24) + return [date, date] + } + }, + { + text: '最近七天', + value: () => { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24 * 7) + return [date, new Date()] + } + }, + { + text: '最近 30 天', + value: () => { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24 * 30) + return [date, new Date()] + } + }, + { + text: '本月', + value: () => { + const date = new Date() + date.setDate(1) // 设置为当前月的第一天 + return [date, new Date()] + } + }, + { + text: '今年', + value: () => { + const date = new Date() + return [new Date(`${date.getFullYear()}-01-01`), date] + } + } +] + +/** + * 时间日期转换 + * @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 { + // 日期不存在,则返回空 + if (!date) { + return '' + } + // 日期存在,则进行格式化 + return date ? dayjs(date).format(format ?? 'YYYY-MM-DD HH:mm:ss') : '' +} + +/** + * 获取当前的日期+时间 + */ +export function getNowDateTime() { + return dayjs() +} + +/** + * 获取当前日期是第几周 + * @param dateTime 当前传入的日期值 + * @returns 返回第几周数字值 + */ +export function getWeek(dateTime: Date): number { + const temptTime = new Date(dateTime.getTime()) + // 周几 + const weekday = temptTime.getDay() || 7 + // 周1+5天=周六 + temptTime.setDate(temptTime.getDate() - weekday + 1 + 5) + let firstDay = new Date(temptTime.getFullYear(), 0, 1) + const dayOfWeek = firstDay.getDay() + let spendDay = 1 + if (dayOfWeek != 0) spendDay = 7 - dayOfWeek + 1 + firstDay = new Date(temptTime.getFullYear(), 0, 1 + spendDay) + const d = Math.ceil((temptTime.valueOf() - firstDay.valueOf()) / 86400000) + return Math.ceil(d / 7) +} + +/** + * 将时间转换为 `几秒前`、`几分钟前`、`几小时前`、`几天前` + * @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 = 'YYYY-mm-dd HH:MM:SS'): 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天 + const 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 { + const 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 '夜里好' +} + +/** + * 将毫秒,转换成时间字符串。例如说,xx 分钟 + * + * @param ms 毫秒 + * @returns {string} 字符串 + */ +export function formatPast2(ms: number): string { + const day = Math.floor(ms / (24 * 60 * 60 * 1000)) + const hour = Math.floor(ms / (60 * 60 * 1000) - day * 24) + const minute = Math.floor(ms / (60 * 1000) - day * 24 * 60 - hour * 60) + const second = Math.floor(ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60) + if (day > 0) { + return day + ' 天' + hour + ' 小时 ' + minute + ' 分钟' + } + if (hour > 0) { + return hour + ' 小时 ' + minute + ' 分钟' + } + if (minute > 0) { + return minute + ' 分钟' + } + if (second > 0) { + return second + ' 秒' + } else { + return 0 + ' 秒' + } +} + +/** + * element plus 的时间 Formatter 实现,使用 YYYY-MM-DD HH:mm:ss 格式 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +export function dateFormatter(_row: any, _column: TableColumnCtx, cellValue: any): string { + return cellValue ? formatDate(cellValue) : '' +} + +/** + * element plus 的时间 Formatter 实现,使用 YYYY-MM-DD 格式 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +export function dateFormatter2(_row: any, _column: TableColumnCtx, cellValue: any): string { + return cellValue ? formatDate(cellValue, 'YYYY-MM-DD') : '' +} + +/** + * 设置起始日期,时间为00:00:00 + * @param param 传入日期 + * @returns 带时间00:00:00的日期 + */ +export function beginOfDay(param: Date): Date { + return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 0, 0, 0) +} + +/** + * 设置结束日期,时间为23:59:59 + * @param param 传入日期 + * @returns 带时间23:59:59的日期 + */ +export function endOfDay(param: Date): Date { + return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 23, 59, 59) +} + +/** + * 计算两个日期间隔天数 + * @param param1 日期1 + * @param param2 日期2 + */ +export function betweenDay(param1: Date, param2: Date): number { + param1 = convertDate(param1) + param2 = convertDate(param2) + // 计算差值 + return Math.floor((param2.getTime() - param1.getTime()) / (24 * 3600 * 1000)) +} + +/** + * 日期计算 + * @param param1 日期 + * @param param2 添加的时间 + */ +export function addTime(param1: Date, param2: number): Date { + param1 = convertDate(param1) + return new Date(param1.getTime() + param2) +} + +/** + * 日期转换 + * @param param 日期 + */ +export function convertDate(param: Date | string): Date { + if (typeof param === 'string') { + return new Date(param) + } + return param +} + +/** + * 指定的两个日期, 是否为同一天 + * @param a 日期 A + * @param b 日期 B + */ +export function isSameDay(a: dayjs.ConfigType, b: dayjs.ConfigType): boolean { + if (!a || !b) return false + + const aa = dayjs(a) + const bb = dayjs(b) + return aa.year() == bb.year() && aa.month() == bb.month() && aa.day() == bb.day() +} + +/** + * 获取一天的开始时间、截止时间 + * @param date 日期 + * @param days 天数 + */ +export function getDayRange( + date: dayjs.ConfigType, + days: number +): [dayjs.ConfigType, dayjs.ConfigType] { + const day = dayjs(date).add(days, 'd') + return getDateRange(day, day) +} + +/** + * 获取最近7天的开始时间、截止时间 + */ +export function getLast7Days(): [dayjs.ConfigType, dayjs.ConfigType] { + const lastWeekDay = dayjs().subtract(7, 'd') + const yesterday = dayjs().subtract(1, 'd') + return getDateRange(lastWeekDay, yesterday) +} + +/** + * 获取最近30天的开始时间、截止时间 + */ +export function getLast30Days(): [dayjs.ConfigType, dayjs.ConfigType] { + const lastMonthDay = dayjs().subtract(30, 'd') + const yesterday = dayjs().subtract(1, 'd') + return getDateRange(lastMonthDay, yesterday) +} + +/** + * 获取最近1年的开始时间、截止时间 + */ +export function getLast1Year(): [dayjs.ConfigType, dayjs.ConfigType] { + const lastYearDay = dayjs().subtract(1, 'y') + const yesterday = dayjs().subtract(1, 'd') + return getDateRange(lastYearDay, yesterday) +} + +/** + * 获取指定日期的开始时间、截止时间 + * @param beginDate 开始日期 + * @param endDate 截止日期 + */ +export function getDateRange( + beginDate: dayjs.ConfigType, + endDate: dayjs.ConfigType +): [string, string] { + return [ + dayjs(beginDate).startOf('d').format('YYYY-MM-DD HH:mm:ss'), + dayjs(endDate).endOf('d').format('YYYY-MM-DD HH:mm:ss') + ] +} diff --git a/yshop-drink-vue3/src/utils/formatter.ts b/yshop-drink-vue3/src/utils/formatter.ts new file mode 100644 index 0000000..8777f32 --- /dev/null +++ b/yshop-drink-vue3/src/utils/formatter.ts @@ -0,0 +1,7 @@ +import { floatToFixed2 } from '@/utils' + +// 格式化金额【分转元】 +// @ts-ignore +export const fenToYuanFormat = (_, __, cellValue: any, ___) => { + return `¥${floatToFixed2(cellValue)}` +} diff --git a/yshop-drink-vue3/src/utils/index.ts b/yshop-drink-vue3/src/utils/index.ts new file mode 100644 index 0000000..2590bce --- /dev/null +++ b/yshop-drink-vue3/src/utils/index.ts @@ -0,0 +1,451 @@ +import { toNumber } from 'lodash-es' + +/** + * + * @param component 需要注册的组件 + * @param alias 组件别名 + * @returns any + */ +export const withInstall = (component: T, alias?: string) => { + const comp = component as any + comp.install = (app: any) => { + app.component(comp.name || comp.displayName, component) + if (alias) { + app.config.globalProperties[alias] = component + } + } + return component as T & Plugin +} + +/** + * @param str 需要转下划线的驼峰字符串 + * @returns 字符串下划线 + */ +export const humpToUnderline = (str: string): string => { + return str.replace(/([A-Z])/g, '-$1').toLowerCase() +} + +/** + * @param str 需要转驼峰的下划线字符串 + * @returns 字符串驼峰 + */ +export const underlineToHump = (str: string): string => { + if (!str) return '' + return str.replace(/\-(\w)/g, (_, letter: string) => { + return letter.toUpperCase() + }) +} + +/** + * 驼峰转横杠 + */ +export const humpToDash = (str: string): string => { + return str.replace(/([A-Z])/g, '-$1').toLowerCase() +} + +export const setCssVar = (prop: string, val: any, dom = document.documentElement) => { + dom.style.setProperty(prop, val) +} + +/** + * 查找数组对象的某个下标 + * @param {Array} ary 查找的数组 + * @param {Functon} fn 判断的方法 + */ +// eslint-disable-next-line +export const findIndex = (ary: Array, fn: Fn): number => { + if (ary.findIndex) { + return ary.findIndex(fn) + } + let index = -1 + ary.some((item: T, i: number, ary: Array) => { + const ret: T = fn(item, i, ary) + if (ret) { + index = i + return ret + } + }) + return index +} + +export const trim = (str: string) => { + return str.replace(/(^\s*)|(\s*$)/g, '') +} + +/** + * @param {Date | number | string} time 需要转换的时间 + * @param {String} fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss + */ +export function formatTime(time: Date | number | string, fmt: string) { + if (!time) return '' + else { + const date = new Date(time) + const o = { + 'M+': date.getMonth() + 1, + 'd+': date.getDate(), + 'H+': date.getHours(), + 'm+': date.getMinutes(), + 's+': date.getSeconds(), + 'q+': Math.floor((date.getMonth() + 3) / 3), + S: date.getMilliseconds() + } + if (/(y+)/.test(fmt)) { + fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) + } + for (const k in o) { + if (new RegExp('(' + k + ')').test(fmt)) { + fmt = fmt.replace( + RegExp.$1, + RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length) + ) + } + } + return fmt + } +} + +/** + * 生成随机字符串 + */ +export function toAnyString() { + const str: string = 'xxxxx-xxxxx-4xxxx-yxxxx-xxxxx'.replace(/[xy]/g, (c: string) => { + const r: number = (Math.random() * 16) | 0 + const v: number = c === 'x' ? r : (r & 0x3) | 0x8 + return v.toString() + }) + return str +} + +/** + * 首字母大写 + */ +export function firstUpperCase(str: string) { + return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase()) +} + +export const generateUUID = () => { + if (typeof crypto === 'object') { + if (typeof crypto.randomUUID === 'function') { + return crypto.randomUUID() + } + if (typeof crypto.getRandomValues === 'function' && typeof Uint8Array === 'function') { + const callback = (c: any) => { + const num = Number(c) + return (num ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (num / 4)))).toString( + 16 + ) + } + return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, callback) + } + } + let timestamp = new Date().getTime() + let performanceNow = + (typeof performance !== 'undefined' && performance.now && performance.now() * 1000) || 0 + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { + let random = Math.random() * 16 + if (timestamp > 0) { + random = (timestamp + random) % 16 | 0 + timestamp = Math.floor(timestamp / 16) + } else { + random = (performanceNow + random) % 16 | 0 + performanceNow = Math.floor(performanceNow / 16) + } + return (c === 'x' ? random : (random & 0x3) | 0x8).toString(16) + }) +} + +/** + * element plus 的文件大小 Formatter 实现 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +// @ts-ignore +export const fileSizeFormatter = (row, column, cellValue) => { + const fileSize = cellValue + const unitArr = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + const srcSize = parseFloat(fileSize) + const index = Math.floor(Math.log(srcSize) / Math.log(1024)) + const size = srcSize / Math.pow(1024, index) + const sizeStr = size.toFixed(2) //保留的小数位数 + return sizeStr + ' ' + unitArr[index] +} + +/** + * 将值复制到目标对象,且以目标对象属性为准,例:target: {a:1} source:{a:2,b:3} 结果为:{a:2} + * @param target 目标对象 + * @param source 源对象 + */ +export const copyValueToTarget = (target: any, source: any) => { + const newObj = Object.assign({}, target, source) + // 删除多余属性 + Object.keys(newObj).forEach((key) => { + // 如果不是target中的属性则删除 + if (Object.keys(target).indexOf(key) === -1) { + delete newObj[key] + } + }) + // 更新目标对象值 + Object.assign(target, newObj) +} + +/** + * 获取链接的参数值 + * @param key 参数键名 + * @param urlStr 链接地址,默认为当前浏览器的地址 + */ +export const getUrlValue = (key: string, urlStr: string = location.href): string => { + if (!urlStr || !key) return '' + const url = new URL(decodeURIComponent(urlStr)) + return url.searchParams.get(key) ?? '' +} + +/** + * 获取链接的参数值(值类型) + * @param key 参数键名 + * @param urlStr 链接地址,默认为当前浏览器的地址 + */ +export const getUrlNumberValue = (key: string, urlStr: string = location.href): number => { + return toNumber(getUrlValue(key, urlStr)) +} + +/** + * 构建排序字段 + * @param prop 字段名称 + * @param order 顺序 + */ +export const buildSortingField = ({ prop, order }) => { + return { field: prop, order: order === 'ascending' ? 'asc' : 'desc' } +} + +// ========== NumberUtils 数字方法 ========== + +/** + * 数组求和 + * + * @param values 数字数组 + * @return 求和结果,默认为 0 + */ +export const getSumValue = (values: number[]): number => { + return values.reduce((prev, curr) => { + const value = Number(curr) + if (!Number.isNaN(value)) { + return prev + curr + } else { + return prev + } + }, 0) +} + +// ========== 通用金额方法 ========== + +/** + * 将一个整数转换为分数保留两位小数 + * @param num + */ +export const formatToFraction = (num: number | string | undefined): string => { + if (typeof num === 'undefined') return '0.00' + const parsedNumber = typeof num === 'string' ? parseFloat(num) : num + return (parsedNumber / 100.0).toFixed(2) +} + +/** + * 将一个数转换为 1.00 这样 + * 数据呈现的时候使用 + * + * @param num 整数 + */ +// TODO @芋艿:看看怎么融合掉 +export const floatToFixed2 = (num: number | string | undefined): string => { + let str = '0.00' + if (typeof num === 'undefined') { + return str + } + const f = formatToFraction(num) + const decimalPart = f.toString().split('.')[1] + const len = decimalPart ? decimalPart.length : 0 + switch (len) { + case 0: + str = f.toString() + '.00' + break + case 1: + str = f.toString() + '0' + break + case 2: + str = f.toString() + break + } + return str +} + +/** + * 将一个分数转换为整数 + * @param num + */ +// TODO @芋艿:看看怎么融合掉 +export const convertToInteger = (num: number | string | undefined): number => { + if (typeof num === 'undefined') return 0 + const parsedNumber = typeof num === 'string' ? parseFloat(num) : num + // TODO 分转元后还有小数则四舍五入 + return Math.round(parsedNumber * 100) +} + +/** + * 元转分 + */ +export const yuanToFen = (amount: string | number): number => { + return convertToInteger(amount) +} + +/** + * 分转元 + */ +export const fenToYuan = (price: string | number): string => { + return formatToFraction(price) +} + +/** + * 计算环比 + * + * @param value 当前数值 + * @param reference 对比数值 + */ +export const calculateRelativeRate = (value?: number, reference?: number) => { + // 防止除0 + if (!reference) return 0 + + return ((100 * ((value || 0) - reference)) / reference).toFixed(0) +} + +// ========== ERP 专属方法 ========== + +const ERP_COUNT_DIGIT = 3 +const ERP_PRICE_DIGIT = 2 + +/** + * 【ERP】格式化 Input 数字 + * + * 例如说:库存数量 + * + * @param num 数量 + * @package digit 保留的小数位数 + * @return 格式化后的数量 + */ +export const erpNumberFormatter = (num: number | string | undefined, digit: number) => { + if (num == null) { + return '' + } + if (typeof num === 'string') { + num = parseFloat(num) + } + // 如果非 number,则直接返回空串 + if (isNaN(num)) { + return '' + } + return num.toFixed(digit) +} + +/** + * 【ERP】格式化数量,保留三位小数 + * + * 例如说:库存数量 + * + * @param num 数量 + * @return 格式化后的数量 + */ +export const erpCountInputFormatter = (num: number | string | undefined) => { + return erpNumberFormatter(num, ERP_COUNT_DIGIT) +} + +// noinspection JSCommentMatchesSignature +/** + * 【ERP】格式化数量,保留三位小数 + * + * @param cellValue 数量 + * @return 格式化后的数量 + */ +export const erpCountTableColumnFormatter = (_, __, cellValue: any, ___) => { + return erpNumberFormatter(cellValue, ERP_COUNT_DIGIT) +} + +/** + * 【ERP】格式化金额,保留二位小数 + * + * 例如说:库存数量 + * + * @param num 数量 + * @return 格式化后的数量 + */ +export const erpPriceInputFormatter = (num: number | string | undefined) => { + return erpNumberFormatter(num, ERP_PRICE_DIGIT) +} + +// noinspection JSCommentMatchesSignature +/** + * 【ERP】格式化金额,保留二位小数 + * + * @param cellValue 数量 + * @return 格式化后的数量 + */ +export const erpPriceTableColumnFormatter = (_, __, cellValue: any, ___) => { + return erpNumberFormatter(cellValue, ERP_PRICE_DIGIT) +} + +/** + * 【ERP】价格计算,四舍五入保留两位小数 + * + * @param price 价格 + * @param count 数量 + * @return 总价格。如果有任一为空,则返回 undefined + */ +export const erpPriceMultiply = (price: number, count: number) => { + if (price == null || count == null) { + return undefined + } + return parseFloat((price * count).toFixed(ERP_PRICE_DIGIT)) +} + +/** + * 【ERP】百分比计算,四舍五入保留两位小数 + * + * 如果 total 为 0,则返回 0 + * + * @param value 当前值 + * @param total 总值 + */ +export const erpCalculatePercentage = (value: number, total: number) => { + if (total === 0) return 0 + return ((value / total) * 100).toFixed(2) +} + +/** + * 适配 echarts map 的地名 + * + * @param areaName 地区名称 + */ +export const areaReplace = (areaName: string) => { + if (!areaName) { + return areaName + } + return areaName + .replace('维吾尔自治区', '') + .replace('壮族自治区', '') + .replace('回族自治区', '') + .replace('自治区', '') + .replace('省', '') +} + +/** + * 解析 JSON 字符串 + * + * @param str + */ +export function jsonParse(str: string) { + try { + return JSON.parse(str) + } catch (e) { + console.error(`str[${str}] 不是一个 JSON 字符串`) + return '' + } +} diff --git a/yshop-drink-vue3/src/utils/is.ts b/yshop-drink-vue3/src/utils/is.ts new file mode 100644 index 0000000..eec86a9 --- /dev/null +++ b/yshop-drink-vue3/src/utils/is.ts @@ -0,0 +1,117 @@ +// copy to vben-admin + +const toString = Object.prototype.toString + +export const is = (val: unknown, type: string) => { + return toString.call(val) === `[object ${type}]` +} + +export const isDef = (val?: T): val is T => { + return typeof val !== 'undefined' +} + +export const isUnDef = (val?: T): val is T => { + return !isDef(val) +} + +export const isObject = (val: any): val is Record => { + return val !== null && is(val, 'Object') +} + +export const isEmpty = (val: T): val is T => { + if (val === null) { + return true + } + if (isArray(val) || isString(val)) { + return val.length === 0 + } + + if (val instanceof Map || val instanceof Set) { + return val.size === 0 + } + + if (isObject(val)) { + return Object.keys(val).length === 0 + } + + return false +} + +export const isDate = (val: unknown): val is Date => { + return is(val, 'Date') +} + +export const isNull = (val: unknown): val is null => { + return val === null +} + +export const isNullAndUnDef = (val: unknown): val is null | undefined => { + return isUnDef(val) && isNull(val) +} + +export const isNullOrUnDef = (val: unknown): val is null | undefined => { + return isUnDef(val) || isNull(val) +} + +export const isNumber = (val: unknown): val is number => { + return is(val, 'Number') +} + +export const isPromise = (val: unknown): val is Promise => { + return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch) +} + +export const isString = (val: unknown): val is string => { + return is(val, 'String') +} + +export const isFunction = (val: unknown): val is Function => { + return typeof val === 'function' +} + +export const isBoolean = (val: unknown): val is boolean => { + return is(val, 'Boolean') +} + +export const isRegExp = (val: unknown): val is RegExp => { + return is(val, 'RegExp') +} + +export const isArray = (val: any): val is Array => { + return val && Array.isArray(val) +} + +export const isWindow = (val: any): val is Window => { + return typeof window !== 'undefined' && is(val, 'Window') +} + +export const isElement = (val: unknown): val is Element => { + return isObject(val) && !!val.tagName +} + +export const isMap = (val: unknown): val is Map => { + return is(val, 'Map') +} + +export const isServer = typeof window === 'undefined' + +export const isClient = !isServer + +export const isUrl = (path: string): boolean => { + const reg = + /(((^https?:(?:\/\/)?)(?:[-:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&%@.\w_]*)#?(?:[\w]*))?)$/ + return reg.test(path) +} + +export const isDark = (): boolean => { + return window.matchMedia('(prefers-color-scheme: dark)').matches +} + +// 是否是图片链接 +export const isImgPath = (path: string): boolean => { + return /(https?:\/\/|data:image\/).*?\.(png|jpg|jpeg|gif|svg|webp|ico)/gi.test(path) +} + +export const isEmptyVal = (val: any): boolean => { + return val === '' || val === null || val === undefined +} diff --git a/yshop-drink-vue3/src/utils/jsencrypt.ts b/yshop-drink-vue3/src/utils/jsencrypt.ts new file mode 100644 index 0000000..374d5f6 --- /dev/null +++ b/yshop-drink-vue3/src/utils/jsencrypt.ts @@ -0,0 +1,31 @@ +import { JSEncrypt } from 'jsencrypt' + +// 密钥对生成 http://web.chacuo.net/netrsakeypair + +const publicKey = + 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' + + 'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==' + +const privateKey = + 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' + + '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' + + 'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' + + 'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' + + 'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' + + 'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' + + 'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' + + 'UP8iWi1Qw0Y=' + +// 加密 +export const encrypt = (txt: string) => { + const encryptor = new JSEncrypt() + encryptor.setPublicKey(publicKey) // 设置公钥 + return encryptor.encrypt(txt) // 对数据进行加密 +} + +// 解密 +export const decrypt = (txt: string) => { + const encryptor = new JSEncrypt() + encryptor.setPrivateKey(privateKey) // 设置私钥 + return encryptor.decrypt(txt) // 对数据进行解密 +} diff --git a/yshop-drink-vue3/src/utils/permission.ts b/yshop-drink-vue3/src/utils/permission.ts new file mode 100644 index 0000000..a63ee62 --- /dev/null +++ b/yshop-drink-vue3/src/utils/permission.ts @@ -0,0 +1,45 @@ +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' + +const { t } = useI18n() // 国际化 + +/** + * 字符权限校验 + * @param {Array} value 校验值 + * @returns {Boolean} + */ +export function checkPermi(value: string[]) { + if (value && value instanceof Array && value.length > 0) { + const { wsCache } = useCache() + const permissionDatas = value + const all_permission = '*:*:*' + const permissions = wsCache.get(CACHE_KEY.USER).permissions + const hasPermission = permissions.some((permission) => { + return all_permission === permission || permissionDatas.includes(permission) + }) + return !!hasPermission + } else { + console.error(t('permission.hasPermission')) + return false + } +} + +/** + * 角色权限校验 + * @param {string[]} value 校验值 + * @returns {Boolean} + */ +export function checkRole(value: string[]) { + if (value && value instanceof Array && value.length > 0) { + const { wsCache } = useCache() + const permissionRoles = value + const super_admin = 'admin' + const roles = wsCache.get(CACHE_KEY.USER).roles + const hasRole = roles.some((role) => { + return super_admin === role || permissionRoles.includes(role) + }) + return !!hasRole + } else { + console.error(t('permission.hasRole')) + return false + } +} diff --git a/yshop-drink-vue3/src/utils/propTypes.ts b/yshop-drink-vue3/src/utils/propTypes.ts new file mode 100644 index 0000000..863f55c --- /dev/null +++ b/yshop-drink-vue3/src/utils/propTypes.ts @@ -0,0 +1,24 @@ +import { VueTypeValidableDef, VueTypesInterface, createTypes, toValidableType } from 'vue-types' +import { CSSProperties } from 'vue' + +type PropTypes = VueTypesInterface & { + readonly style: VueTypeValidableDef +} +const newPropTypes = createTypes({ + func: undefined, + bool: undefined, + string: undefined, + number: undefined, + object: undefined, + integer: undefined +}) as PropTypes + +class propTypes extends newPropTypes { + static get style() { + return toValidableType('style', { + type: [String, Object] + }) + } +} + +export { propTypes } diff --git a/yshop-drink-vue3/src/utils/routerHelper.ts b/yshop-drink-vue3/src/utils/routerHelper.ts new file mode 100644 index 0000000..f292751 --- /dev/null +++ b/yshop-drink-vue3/src/utils/routerHelper.ts @@ -0,0 +1,253 @@ +import type { RouteLocationNormalized, Router, RouteRecordNormalized } from 'vue-router' +import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router' +import { isUrl } from '@/utils/is' +import { cloneDeep, omit } from 'lodash-es' +import qs from 'qs' + +const modules = import.meta.glob('../views/**/*.{vue,tsx}') +/** + * 注册一个异步组件 + * @param componentPath 例:/bpm/oa/leave/detail + */ +export const registerComponent = (componentPath: string) => { + for (const item in modules) { + if (item.includes(componentPath)) { + // 使用异步组件的方式来动态加载组件 + // @ts-ignore + return defineAsyncComponent(modules[item]) + } + } +} +/* Layout */ +export const Layout = () => import('@/layout/Layout.vue') + +export const getParentLayout = () => { + return () => + new Promise((resolve) => { + resolve({ + name: 'ParentLayout' + }) + }) +} + +// 按照路由中meta下的rank等级升序来排序路由 +export const ascending = (arr: any[]) => { + arr.forEach((v) => { + if (v?.meta?.rank === null) v.meta.rank = undefined + if (v?.meta?.rank === 0) { + if (v.name !== 'home' && v.path !== '/') { + console.warn('rank only the home page can be 0') + } + } + }) + return arr.sort((a: { meta: { rank: number } }, b: { meta: { rank: number } }) => { + return a?.meta?.rank - b?.meta?.rank + }) +} + +export const getRawRoute = (route: RouteLocationNormalized): RouteLocationNormalized => { + if (!route) return route + const { matched, ...opt } = route + return { + ...opt, + matched: (matched + ? matched.map((item) => ({ + meta: item.meta, + name: item.name, + path: item.path + })) + : undefined) as RouteRecordNormalized[] + } +} + +// 后端控制路由生成 +export const generateRoute = (routes: AppCustomRouteRecordRaw[]): AppRouteRecordRaw[] => { + const res: AppRouteRecordRaw[] = [] + const modulesRoutesKeys = Object.keys(modules) + for (const route of routes) { + // 1. 生成 meta 菜单元数据 + const meta = { + title: route.name, + icon: route.icon, + hidden: !route.visible, + noCache: !route.keepAlive, + alwaysShow: + route.children && + route.children.length === 1 && + (route.alwaysShow !== undefined ? route.alwaysShow : true) + } as any + // 特殊逻辑:如果后端配置的 MenuDO.component 包含 ?,则表示需要传递参数 + // 此时,我们需要解析参数,并且将参数放到 meta.query 中 + // 这样,后续在 Vue 文件中,可以通过 const { currentRoute } = useRouter() 中,通过 meta.query 获取到参数 + if (route.component && route.component.indexOf('?') > -1) { + const query = route.component.split('?')[1] + route.component = route.component.split('?')[0] + meta.query = qs.parse(query) + } + + // 2. 生成 data(AppRouteRecordRaw) + // 路由地址转首字母大写驼峰,作为路由名称,适配keepAlive + let data: AppRouteRecordRaw = { + path: route.path.indexOf('?') > -1 ? route.path.split('?')[0] : route.path, + name: + route.componentName && route.componentName.length > 0 + ? route.componentName + : toCamelCase(route.path, true), + redirect: route.redirect, + meta: meta + } + //处理顶级非目录路由 + if (!route.children && route.parentId == 0 && route.component) { + data.component = Layout + data.meta = {} + data.name = toCamelCase(route.path, true) + 'Parent' + data.redirect = '' + meta.alwaysShow = true + const childrenData: AppRouteRecordRaw = { + path: '', + name: + route.componentName && route.componentName.length > 0 + ? route.componentName + : toCamelCase(route.path, true), + redirect: route.redirect, + meta: meta + } + const index = route?.component + ? modulesRoutesKeys.findIndex((ev) => ev.includes(route.component)) + : modulesRoutesKeys.findIndex((ev) => ev.includes(route.path)) + childrenData.component = modules[modulesRoutesKeys[index]] + data.children = [childrenData] + } else { + // 目录 + if (route.children) { + data.component = Layout + data.redirect = getRedirect(route.path, route.children) + // 外链 + } else if (isUrl(route.path)) { + data = { + path: '/external-link', + component: Layout, + meta: { + name: route.name + }, + children: [data] + } as AppRouteRecordRaw + // 菜单 + } else { + // 对后端传component组件路径和不传做兼容(如果后端传component组件路径,那么path可以随便写,如果不传,component组件路径会根path保持一致) + const index = route?.component + ? modulesRoutesKeys.findIndex((ev) => ev.includes(route.component)) + : modulesRoutesKeys.findIndex((ev) => ev.includes(route.path)) + data.component = modules[modulesRoutesKeys[index]] + } + if (route.children) { + data.children = generateRoute(route.children) + } + } + res.push(data as AppRouteRecordRaw) + } + return res +} +export const getRedirect = (parentPath: string, children: AppCustomRouteRecordRaw[]) => { + if (!children || children.length == 0) { + return parentPath + } + const path = generateRoutePath(parentPath, children[0].path) + // 递归子节点 + if (children[0].children) return getRedirect(path, children[0].children) +} +const generateRoutePath = (parentPath: string, path: string) => { + if (parentPath.endsWith('/')) { + parentPath = parentPath.slice(0, -1) // 移除默认的 / + } + if (!path.startsWith('/')) { + path = '/' + path + } + return parentPath + path +} +export const pathResolve = (parentPath: string, path: string) => { + if (isUrl(path)) return path + const childPath = path.startsWith('/') || !path ? path : `/${path}` + return `${parentPath}${childPath}`.replace(/\/\//g, '/') +} + +// 路由降级 +export const flatMultiLevelRoutes = (routes: AppRouteRecordRaw[]) => { + const modules: AppRouteRecordRaw[] = cloneDeep(routes) + for (let index = 0; index < modules.length; index++) { + const route = modules[index] + if (!isMultipleRoute(route)) { + continue + } + promoteRouteLevel(route) + } + return modules +} + +// 层级是否大于2 +const isMultipleRoute = (route: AppRouteRecordRaw) => { + if (!route || !Reflect.has(route, 'children') || !route.children?.length) { + return false + } + + const children = route.children + + let flag = false + for (let index = 0; index < children.length; index++) { + const child = children[index] + if (child.children?.length) { + flag = true + break + } + } + return flag +} + +// 生成二级路由 +const promoteRouteLevel = (route: AppRouteRecordRaw) => { + let router: Router | null = createRouter({ + routes: [route as RouteRecordRaw], + history: createWebHashHistory() + }) + + const routes = router.getRoutes() + addToChildren(routes, route.children || [], route) + router = null + + route.children = route.children?.map((item) => omit(item, 'children')) +} + +// 添加所有子菜单 +const addToChildren = ( + routes: RouteRecordNormalized[], + children: AppRouteRecordRaw[], + routeModule: AppRouteRecordRaw +) => { + for (let index = 0; index < children.length; index++) { + const child = children[index] + const route = routes.find((item) => item.name === child.name) + if (!route) { + continue + } + routeModule.children = routeModule.children || [] + if (!routeModule.children.find((item) => item.name === route.name)) { + routeModule.children?.push(route as unknown as AppRouteRecordRaw) + } + if (child.children?.length) { + addToChildren(routes, child.children, routeModule) + } + } +} +const toCamelCase = (str: string, upperCaseFirst: boolean) => { + str = (str || '') + .replace(/-(.)/g, function (group1: string) { + return group1.toUpperCase() + }) + .replaceAll('-', '') + + if (upperCaseFirst && str) { + str = str.charAt(0).toUpperCase() + str.slice(1) + } + + return str +} diff --git a/yshop-drink-vue3/src/utils/tree.ts b/yshop-drink-vue3/src/utils/tree.ts new file mode 100644 index 0000000..91059ef --- /dev/null +++ b/yshop-drink-vue3/src/utils/tree.ts @@ -0,0 +1,400 @@ +interface TreeHelperConfig { + id: string + children: string + pid: string +} + +const DEFAULT_CONFIG: TreeHelperConfig = { + id: 'id', + children: 'children', + pid: 'pid' +} +export const defaultProps = { + children: 'children', + label: 'name', + value: 'id', + isLeaf: 'leaf', + emitPath: false // 用于 cascader 组件:在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组,若设置 false,则只返回该节点的值 +} + +const getConfig = (config: Partial) => Object.assign({}, DEFAULT_CONFIG, config) + +// tree from list +export const listToTree = (list: any[], config: Partial = {}): T[] => { + const conf = getConfig(config) as TreeHelperConfig + const nodeMap = new Map() + const result: T[] = [] + const { id, children, pid } = conf + + for (const node of list) { + node[children] = node[children] || [] + nodeMap.set(node[id], node) + } + for (const node of list) { + const parent = nodeMap.get(node[pid]) + ;(parent ? parent.children : result).push(node) + } + return result +} + +export const treeToList = (tree: any, config: Partial = {}): T => { + config = getConfig(config) + const { children } = config + const result: any = [...tree] + for (let i = 0; i < result.length; i++) { + if (!result[i][children!]) continue + result.splice(i + 1, 0, ...result[i][children!]) + } + return result +} + +export const findNode = ( + tree: any, + func: Fn, + config: Partial = {} +): T | null => { + config = getConfig(config) + const { children } = config + const list = [...tree] + for (const node of list) { + if (func(node)) return node + node[children!] && list.push(...node[children!]) + } + return null +} + +export const findNodeAll = ( + tree: any, + func: Fn, + config: Partial = {} +): T[] => { + config = getConfig(config) + const { children } = config + const list = [...tree] + const result: T[] = [] + for (const node of list) { + func(node) && result.push(node) + node[children!] && list.push(...node[children!]) + } + return result +} + +export const findPath = ( + tree: any, + func: Fn, + config: Partial = {} +): T | T[] | null => { + config = getConfig(config) + const path: T[] = [] + const list = [...tree] + const visitedSet = new Set() + const { children } = config + while (list.length) { + const node = list[0] + if (visitedSet.has(node)) { + path.pop() + list.shift() + } else { + visitedSet.add(node) + node[children!] && list.unshift(...node[children!]) + path.push(node) + if (func(node)) { + return path + } + } + } + return null +} + +export const findPathAll = (tree: any, func: Fn, config: Partial = {}) => { + config = getConfig(config) + const path: any[] = [] + const list = [...tree] + const result: any[] = [] + const visitedSet = new Set(), + { children } = config + while (list.length) { + const node = list[0] + if (visitedSet.has(node)) { + path.pop() + list.shift() + } else { + visitedSet.add(node) + node[children!] && list.unshift(...node[children!]) + path.push(node) + func(node) && result.push([...path]) + } + } + return result +} + +export const filter = ( + tree: T[], + func: (n: T) => boolean, + config: Partial = {} +): T[] => { + config = getConfig(config) + const children = config.children as string + + function listFilter(list: T[]) { + return list + .map((node: any) => ({ ...node })) + .filter((node) => { + node[children] = node[children] && listFilter(node[children]) + return func(node) || (node[children] && node[children].length) + }) + } + + return listFilter(tree) +} + +export const forEach = ( + tree: T[], + func: (n: T) => any, + config: Partial = {} +): void => { + config = getConfig(config) + const list: any[] = [...tree] + const { children } = config + for (let i = 0; i < list.length; i++) { + // func 返回true就终止遍历,避免大量节点场景下无意义循环,引起浏览器卡顿 + if (func(list[i])) { + return + } + children && list[i][children] && list.splice(i + 1, 0, ...list[i][children]) + } +} + +/** + * @description: Extract tree specified structure + */ +export const treeMap = ( + treeData: T[], + opt: { children?: string; conversion: Fn } +): T[] => { + return treeData.map((item) => treeMapEach(item, opt)) +} + +/** + * @description: Extract tree specified structure + */ +export const treeMapEach = ( + data: any, + { children = 'children', conversion }: { children?: string; conversion: Fn } +) => { + const haveChildren = Array.isArray(data[children]) && data[children].length > 0 + const conversionData = conversion(data) || {} + if (haveChildren) { + return { + ...conversionData, + [children]: data[children].map((i: number) => + treeMapEach(i, { + children, + conversion + }) + ) + } + } else { + return { + ...conversionData + } + } +} + +/** + * 递归遍历树结构 + * @param treeDatas 树 + * @param callBack 回调 + * @param parentNode 父节点 + */ +export const eachTree = (treeDatas: any[], callBack: Fn, parentNode = {}) => { + treeDatas.forEach((element) => { + const newNode = callBack(element, parentNode) || element + if (element.children) { + eachTree(element.children, callBack, newNode) + } + }) +} + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {*} id id字段 默认 'id' + * @param {*} parentId 父节点字段 默认 'parentId' + * @param {*} children 孩子节点字段 默认 'children' + */ +export const handleTree = (data: any[], id?: string, parentId?: string, children?: string) => { + if (!Array.isArray(data)) { + console.warn('data must be an array') + return [] + } + const config = { + id: id || 'id', + parentId: parentId || 'parentId', + childrenList: children || 'children' + } + + const childrenListMap = {} + const nodeIds = {} + const tree: any[] = [] + + for (const d of data) { + const parentId = d[config.parentId] + if (childrenListMap[parentId] == null) { + childrenListMap[parentId] = [] + } + nodeIds[d[config.id]] = d + childrenListMap[parentId].push(d) + } + + for (const d of data) { + const parentId = d[config.parentId] + if (nodeIds[parentId] == null) { + tree.push(d) + } + } + + for (const t of tree) { + adaptToChildrenList(t) + } + + function adaptToChildrenList(o) { + if (childrenListMap[o[config.id]] !== null) { + o[config.childrenList] = childrenListMap[o[config.id]] + } + if (o[config.childrenList]) { + for (const c of o[config.childrenList]) { + adaptToChildrenList(c) + } + } + } + + return tree +} + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {*} id id字段 默认 'id' + * @param {*} parentId 父节点字段 默认 'parentId' + * @param {*} children 孩子节点字段 默认 'children' + * @param {*} rootId 根Id 默认 0 + */ +// @ts-ignore +export const handleTree2 = (data, id, parentId, children, rootId) => { + id = id || 'id' + parentId = parentId || 'parentId' + // children = children || 'children' + rootId = + rootId || + Math.min( + ...data.map((item) => { + return item[parentId] + }) + ) || + 0 + // 对源数据深度克隆 + const cloneData = JSON.parse(JSON.stringify(data)) + // 循环所有项 + const treeData = cloneData.filter((father) => { + const branchArr = cloneData.filter((child) => { + // 返回每一项的子级数组 + return father[id] === child[parentId] + }) + branchArr.length > 0 ? (father.children = branchArr) : '' + // 返回第一层 + return father[parentId] === rootId + }) + return treeData !== '' ? treeData : data +} + +/** + * 校验选中的节点,是否为指定 level + * + * @param tree 要操作的树结构数据 + * @param nodeId 需要判断在什么层级的数据 + * @param level 检查的级别, 默认检查到二级 + * @return true 是;false 否 + */ +export const checkSelectedNode = (tree: any[], nodeId: any, level = 2): boolean => { + if (typeof tree === 'undefined' || !Array.isArray(tree) || tree.length === 0) { + console.warn('tree must be an array') + return false + } + + // 校验是否是一级节点 + if (tree.some((item) => item.id === nodeId)) { + return false + } + + // 递归计数 + let count = 1 + + // 深层次校验 + function performAThoroughValidation(arr: any[]): boolean { + count += 1 + for (const item of arr) { + if (item.id === nodeId) { + return true + } else if (typeof item.children !== 'undefined' && item.children.length !== 0) { + if (performAThoroughValidation(item.children)) { + return true + } + } + } + return false + } + + for (const item of tree) { + count = 1 + if (performAThoroughValidation(item.children)) { + // 找到后对比是否是期望的层级 + if (count >= level) { + return true + } + } + } + + return false +} + +/** + * 获取节点的完整结构 + * @param tree 树数据 + * @param nodeId 节点 id + */ +export const treeToString = (tree: any[], nodeId) => { + if (typeof tree === 'undefined' || !Array.isArray(tree) || tree.length === 0) { + console.warn('tree must be an array') + return '' + } + // 校验是否是一级节点 + const node = tree.find((item) => item.id === nodeId) + if (typeof node !== 'undefined') { + return node.name + } + let str = '' + + function performAThoroughValidation(arr) { + for (const item of arr) { + if (item.id === nodeId) { + str += ` / ${item.name}` + return true + } else if (typeof item.children !== 'undefined' && item.children.length !== 0) { + str += ` / ${item.name}` + if (performAThoroughValidation(item.children)) { + return true + } + } + } + return false + } + + for (const item of tree) { + str = `${item.name}` + if (performAThoroughValidation(item.children)) { + break + } + } + return str +} diff --git a/yshop-drink-vue3/src/utils/tsxHelper.ts b/yshop-drink-vue3/src/utils/tsxHelper.ts new file mode 100644 index 0000000..6087fa3 --- /dev/null +++ b/yshop-drink-vue3/src/utils/tsxHelper.ts @@ -0,0 +1,16 @@ +import { Slots } from 'vue' +import { isFunction } from '@/utils/is' + +export const getSlot = (slots: Slots, slot = 'default', data?: Recordable) => { + // Reflect.has 判断一个对象是否存在某个属性 + if (!slots || !Reflect.has(slots, slot)) { + return null + } + if (!isFunction(slots[slot])) { + console.error(`${slot} is not a function!`) + return null + } + const slotFn = slots[slot] + if (!slotFn) return null + return slotFn(data) +} diff --git a/yshop-drink-vue3/src/views/Error/403.vue b/yshop-drink-vue3/src/views/Error/403.vue new file mode 100644 index 0000000..a3ec487 --- /dev/null +++ b/yshop-drink-vue3/src/views/Error/403.vue @@ -0,0 +1,8 @@ + + diff --git a/yshop-drink-vue3/src/views/Error/404.vue b/yshop-drink-vue3/src/views/Error/404.vue new file mode 100644 index 0000000..f6a08de --- /dev/null +++ b/yshop-drink-vue3/src/views/Error/404.vue @@ -0,0 +1,7 @@ + + diff --git a/yshop-drink-vue3/src/views/Error/500.vue b/yshop-drink-vue3/src/views/Error/500.vue new file mode 100644 index 0000000..998487d --- /dev/null +++ b/yshop-drink-vue3/src/views/Error/500.vue @@ -0,0 +1,7 @@ + + diff --git a/yshop-drink-vue3/src/views/Home/Index.vue b/yshop-drink-vue3/src/views/Home/Index.vue new file mode 100644 index 0000000..04d16bf --- /dev/null +++ b/yshop-drink-vue3/src/views/Home/Index.vue @@ -0,0 +1,318 @@ + + + + diff --git a/yshop-drink-vue3/src/views/Home/Index2.vue b/yshop-drink-vue3/src/views/Home/Index2.vue new file mode 100644 index 0000000..c9429ab --- /dev/null +++ b/yshop-drink-vue3/src/views/Home/Index2.vue @@ -0,0 +1,319 @@ + + + + diff --git a/yshop-drink-vue3/src/views/Home/PanelGroupT.vue b/yshop-drink-vue3/src/views/Home/PanelGroupT.vue new file mode 100644 index 0000000..39604ba --- /dev/null +++ b/yshop-drink-vue3/src/views/Home/PanelGroupT.vue @@ -0,0 +1,180 @@ + + + + diff --git a/yshop-drink-vue3/src/views/Home/echarts-data.ts b/yshop-drink-vue3/src/views/Home/echarts-data.ts new file mode 100644 index 0000000..56093f4 --- /dev/null +++ b/yshop-drink-vue3/src/views/Home/echarts-data.ts @@ -0,0 +1,308 @@ +import { EChartsOption } from 'echarts' + +const { t } = useI18n() + +export const lineOptions: EChartsOption = { + title: { + text: t('analysis.monthlySales'), + left: 'center' + }, + xAxis: { + data: [ + t('analysis.january'), + t('analysis.february'), + t('analysis.march'), + t('analysis.april'), + t('analysis.may'), + t('analysis.june'), + t('analysis.july'), + t('analysis.august'), + t('analysis.september'), + t('analysis.october'), + t('analysis.november'), + t('analysis.december') + ], + boundaryGap: false, + axisTick: { + show: false + } + }, + grid: { + left: 20, + right: 20, + bottom: 20, + top: 80, + containLabel: true + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'cross' + }, + padding: [5, 10] + }, + yAxis: { + axisTick: { + show: false + } + }, + legend: { + data: [t('analysis.estimate'), t('analysis.actual')], + top: 50 + }, + series: [ + { + name: t('analysis.estimate'), + smooth: true, + type: 'line', + data: [100, 120, 161, 134, 105, 160, 165, 114, 163, 185, 118, 123], + animationDuration: 2800, + animationEasing: 'cubicInOut' + }, + { + name: t('analysis.actual'), + smooth: true, + type: 'line', + itemStyle: {}, + data: [120, 82, 91, 154, 162, 140, 145, 250, 134, 56, 99, 123], + animationDuration: 2800, + animationEasing: 'quadraticOut' + } + ] +} + +export const pieOptions: EChartsOption = { + title: { + text: t('analysis.userAccessSource'), + left: 'center' + }, + tooltip: { + trigger: 'item', + formatter: '{a}
    {b} : {c} ({d}%)' + }, + legend: { + orient: 'vertical', + left: 'left', + data: [ + t('analysis.directAccess'), + t('analysis.mailMarketing'), + t('analysis.allianceAdvertising'), + t('analysis.videoAdvertising'), + t('analysis.searchEngines') + ] + }, + series: [ + { + name: t('analysis.userAccessSource'), + type: 'pie', + radius: '55%', + center: ['50%', '60%'], + data: [ + { value: 335, name: t('analysis.directAccess') }, + { value: 310, name: t('analysis.mailMarketing') }, + { value: 234, name: t('analysis.allianceAdvertising') }, + { value: 135, name: t('analysis.videoAdvertising') }, + { value: 1548, name: t('analysis.searchEngines') } + ] + } + ] +} + +export const barOptions: EChartsOption = { + title: { + text: t('analysis.weeklyUserActivity'), + left: 'center' + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + } + }, + grid: { + left: 50, + right: 20, + bottom: 20 + }, + xAxis: { + type: 'category', + data: [ + t('analysis.monday'), + t('analysis.tuesday'), + t('analysis.wednesday'), + t('analysis.thursday'), + t('analysis.friday'), + t('analysis.saturday'), + t('analysis.sunday') + ], + axisTick: { + alignWithLabel: true + } + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: t('analysis.activeQuantity'), + data: [13253, 34235, 26321, 12340, 24643, 1322, 1324], + type: 'bar' + } + ] +} + +export const radarOption: EChartsOption = { + legend: { + data: [t('workplace.personal'), t('workplace.team')] + }, + radar: { + // shape: 'circle', + indicator: [ + { name: t('workplace.quote'), max: 65 }, + { name: t('workplace.contribution'), max: 160 }, + { name: t('workplace.hot'), max: 300 }, + { name: t('workplace.yield'), max: 130 }, + { name: t('workplace.follow'), max: 100 } + ] + }, + series: [ + { + name: `xxx${t('workplace.index')}`, + type: 'radar', + data: [ + { + value: [42, 30, 20, 35, 80], + name: t('workplace.personal') + }, + { + value: [50, 140, 290, 100, 90], + name: t('workplace.team') + } + ] + } + ] +} + +export const wordOptions = { + series: [ + { + type: 'wordCloud', + gridSize: 2, + sizeRange: [12, 50], + rotationRange: [-90, 90], + shape: 'pentagon', + width: 600, + height: 400, + drawOutOfBound: true, + textStyle: { + color: function () { + return ( + 'rgb(' + + [ + Math.round(Math.random() * 160), + Math.round(Math.random() * 160), + Math.round(Math.random() * 160) + ].join(',') + + ')' + ) + } + }, + emphasis: { + textStyle: { + shadowBlur: 10, + shadowColor: '#333' + } + }, + data: [ + { + name: 'Sam S Club', + value: 10000, + textStyle: { + color: 'black' + }, + emphasis: { + textStyle: { + color: 'red' + } + } + }, + { + name: 'Macys', + value: 6181 + }, + { + name: 'Amy Schumer', + value: 4386 + }, + { + name: 'Jurassic World', + value: 4055 + }, + { + name: 'Charter Communications', + value: 2467 + }, + { + name: 'Chick Fil A', + value: 2244 + }, + { + name: 'Planet Fitness', + value: 1898 + }, + { + name: 'Pitch Perfect', + value: 1484 + }, + { + name: 'Express', + value: 1112 + }, + { + name: 'Home', + value: 965 + }, + { + name: 'Johnny Depp', + value: 847 + }, + { + name: 'Lena Dunham', + value: 582 + }, + { + name: 'Lewis Hamilton', + value: 555 + }, + { + name: 'KXAN', + value: 550 + }, + { + name: 'Mary Ellen Mark', + value: 462 + }, + { + name: 'Farrah Abraham', + value: 366 + }, + { + name: 'Rita Ora', + value: 360 + }, + { + name: 'Serena Williams', + value: 282 + }, + { + name: 'NCAA baseball tournament', + value: 273 + }, + { + name: 'Point Break', + value: 265 + } + ] + } + ] +} diff --git a/yshop-drink-vue3/src/views/Home/types.ts b/yshop-drink-vue3/src/views/Home/types.ts new file mode 100644 index 0000000..e6313d3 --- /dev/null +++ b/yshop-drink-vue3/src/views/Home/types.ts @@ -0,0 +1,55 @@ +export type WorkplaceTotal = { + project: number + access: number + todo: number +} + +export type Project = { + name: string + icon: string + message: string + personal: string + time: Date | number | string +} + +export type Notice = { + title: string + type: string + keys: string[] + date: Date | number | string +} + +export type Shortcut = { + name: string + icon: string + url: string +} + +export type RadarData = { + personal: number + team: number + max: number + name: string +} +export type AnalysisTotalTypes = { + users: number + messages: number + moneys: number + shoppings: number +} + +export type UserAccessSource = { + value: number + name: string +} + +export type WeeklyUserActivity = { + value: number + name: string +} + +export type MonthlySales = { + name: string + estimate: number + actual: number +} diff --git a/yshop-drink-vue3/src/views/Login/Login.vue b/yshop-drink-vue3/src/views/Login/Login.vue new file mode 100644 index 0000000..7895708 --- /dev/null +++ b/yshop-drink-vue3/src/views/Login/Login.vue @@ -0,0 +1,101 @@ + + + + diff --git a/yshop-drink-vue3/src/views/Login/SocialLogin.vue b/yshop-drink-vue3/src/views/Login/SocialLogin.vue new file mode 100644 index 0000000..eff59ba --- /dev/null +++ b/yshop-drink-vue3/src/views/Login/SocialLogin.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/yshop-drink-vue3/src/views/Login/components/LoginForm.vue b/yshop-drink-vue3/src/views/Login/components/LoginForm.vue new file mode 100644 index 0000000..52a823a --- /dev/null +++ b/yshop-drink-vue3/src/views/Login/components/LoginForm.vue @@ -0,0 +1,266 @@ + + + + diff --git a/yshop-drink-vue3/src/views/Login/components/LoginFormTitle.vue b/yshop-drink-vue3/src/views/Login/components/LoginFormTitle.vue new file mode 100644 index 0000000..cdf4fac --- /dev/null +++ b/yshop-drink-vue3/src/views/Login/components/LoginFormTitle.vue @@ -0,0 +1,26 @@ + + diff --git a/yshop-drink-vue3/src/views/Login/components/MobileForm.vue b/yshop-drink-vue3/src/views/Login/components/MobileForm.vue new file mode 100644 index 0000000..7f5d994 --- /dev/null +++ b/yshop-drink-vue3/src/views/Login/components/MobileForm.vue @@ -0,0 +1,226 @@ + + + + diff --git a/yshop-drink-vue3/src/views/Login/components/QrCodeForm.vue b/yshop-drink-vue3/src/views/Login/components/QrCodeForm.vue new file mode 100644 index 0000000..31d2845 --- /dev/null +++ b/yshop-drink-vue3/src/views/Login/components/QrCodeForm.vue @@ -0,0 +1,30 @@ + + diff --git a/yshop-drink-vue3/src/views/Login/components/RegisterForm.vue b/yshop-drink-vue3/src/views/Login/components/RegisterForm.vue new file mode 100644 index 0000000..23b3bd4 --- /dev/null +++ b/yshop-drink-vue3/src/views/Login/components/RegisterForm.vue @@ -0,0 +1,142 @@ + + diff --git a/yshop-drink-vue3/src/views/Login/components/SSOLogin.vue b/yshop-drink-vue3/src/views/Login/components/SSOLogin.vue new file mode 100644 index 0000000..2ce8561 --- /dev/null +++ b/yshop-drink-vue3/src/views/Login/components/SSOLogin.vue @@ -0,0 +1,199 @@ + + diff --git a/yshop-drink-vue3/src/views/Login/components/index.ts b/yshop-drink-vue3/src/views/Login/components/index.ts new file mode 100644 index 0000000..204ad73 --- /dev/null +++ b/yshop-drink-vue3/src/views/Login/components/index.ts @@ -0,0 +1,8 @@ +import LoginForm from './LoginForm.vue' +import MobileForm from './MobileForm.vue' +import LoginFormTitle from './LoginFormTitle.vue' +import RegisterForm from './RegisterForm.vue' +import QrCodeForm from './QrCodeForm.vue' +import SSOLoginVue from './SSOLogin.vue' + +export { LoginForm, MobileForm, LoginFormTitle, RegisterForm, QrCodeForm, SSOLoginVue } diff --git a/yshop-drink-vue3/src/views/Login/components/useLogin.ts b/yshop-drink-vue3/src/views/Login/components/useLogin.ts new file mode 100644 index 0000000..b4a02f8 --- /dev/null +++ b/yshop-drink-vue3/src/views/Login/components/useLogin.ts @@ -0,0 +1,42 @@ +import { Ref } from 'vue' + +export enum LoginStateEnum { + LOGIN, + REGISTER, + RESET_PASSWORD, + MOBILE, + QR_CODE, + SSO +} + +const currentState = ref(LoginStateEnum.LOGIN) + +export function useLoginState() { + function setLoginState(state: LoginStateEnum) { + currentState.value = state + } + const getLoginState = computed(() => currentState.value) + + function handleBackLogin() { + setLoginState(LoginStateEnum.LOGIN) + } + + return { + setLoginState, + getLoginState, + handleBackLogin + } +} + +export function useFormValid(formRef: Ref) { + async function validForm() { + const form = unref(formRef) + if (!form) return + const data = await form.validate() + return data as T + } + + return { + validForm + } +} diff --git a/yshop-drink-vue3/src/views/Profile/Index.vue b/yshop-drink-vue3/src/views/Profile/Index.vue new file mode 100644 index 0000000..8e1695b --- /dev/null +++ b/yshop-drink-vue3/src/views/Profile/Index.vue @@ -0,0 +1,65 @@ + + + diff --git a/yshop-drink-vue3/src/views/Profile/components/BasicInfo.vue b/yshop-drink-vue3/src/views/Profile/components/BasicInfo.vue new file mode 100644 index 0000000..ddec27c --- /dev/null +++ b/yshop-drink-vue3/src/views/Profile/components/BasicInfo.vue @@ -0,0 +1,96 @@ + + diff --git a/yshop-drink-vue3/src/views/Profile/components/ProfileUser.vue b/yshop-drink-vue3/src/views/Profile/components/ProfileUser.vue new file mode 100644 index 0000000..0d469ef --- /dev/null +++ b/yshop-drink-vue3/src/views/Profile/components/ProfileUser.vue @@ -0,0 +1,99 @@ + + + + diff --git a/yshop-drink-vue3/src/views/Profile/components/ResetPwd.vue b/yshop-drink-vue3/src/views/Profile/components/ResetPwd.vue new file mode 100644 index 0000000..477be91 --- /dev/null +++ b/yshop-drink-vue3/src/views/Profile/components/ResetPwd.vue @@ -0,0 +1,73 @@ + + diff --git a/yshop-drink-vue3/src/views/Profile/components/UserAvatar.vue b/yshop-drink-vue3/src/views/Profile/components/UserAvatar.vue new file mode 100644 index 0000000..63e1e16 --- /dev/null +++ b/yshop-drink-vue3/src/views/Profile/components/UserAvatar.vue @@ -0,0 +1,45 @@ + + + + diff --git a/yshop-drink-vue3/src/views/Profile/components/UserSocial.vue b/yshop-drink-vue3/src/views/Profile/components/UserSocial.vue new file mode 100644 index 0000000..b7f955b --- /dev/null +++ b/yshop-drink-vue3/src/views/Profile/components/UserSocial.vue @@ -0,0 +1,107 @@ + + diff --git a/yshop-drink-vue3/src/views/Profile/components/index.ts b/yshop-drink-vue3/src/views/Profile/components/index.ts new file mode 100644 index 0000000..9e1883c --- /dev/null +++ b/yshop-drink-vue3/src/views/Profile/components/index.ts @@ -0,0 +1,7 @@ +import BasicInfo from './BasicInfo.vue' +import ProfileUser from './ProfileUser.vue' +import ResetPwd from './ResetPwd.vue' +import UserAvatarVue from './UserAvatar.vue' +import UserSocial from './UserSocial.vue' + +export { BasicInfo, ProfileUser, ResetPwd, UserAvatarVue, UserSocial } diff --git a/yshop-drink-vue3/src/views/Redirect/Redirect.vue b/yshop-drink-vue3/src/views/Redirect/Redirect.vue new file mode 100644 index 0000000..f7717ce --- /dev/null +++ b/yshop-drink-vue3/src/views/Redirect/Redirect.vue @@ -0,0 +1,28 @@ + + diff --git a/yshop-drink-vue3/src/views/express/ExpressForm.vue b/yshop-drink-vue3/src/views/express/ExpressForm.vue new file mode 100644 index 0000000..da5441a --- /dev/null +++ b/yshop-drink-vue3/src/views/express/ExpressForm.vue @@ -0,0 +1,103 @@ + + diff --git a/yshop-drink-vue3/src/views/express/ExpressSet.vue b/yshop-drink-vue3/src/views/express/ExpressSet.vue new file mode 100644 index 0000000..c1c7e35 --- /dev/null +++ b/yshop-drink-vue3/src/views/express/ExpressSet.vue @@ -0,0 +1,96 @@ + + diff --git a/yshop-drink-vue3/src/views/express/index.vue b/yshop-drink-vue3/src/views/express/index.vue new file mode 100644 index 0000000..7d88138 --- /dev/null +++ b/yshop-drink-vue3/src/views/express/index.vue @@ -0,0 +1,182 @@ + + + diff --git a/yshop-drink-vue3/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue b/yshop-drink-vue3/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue new file mode 100644 index 0000000..314fd26 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue @@ -0,0 +1,79 @@ + + + diff --git a/yshop-drink-vue3/src/views/infra/apiAccessLog/index.vue b/yshop-drink-vue3/src/views/infra/apiAccessLog/index.vue new file mode 100644 index 0000000..e3a6a7c --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/apiAccessLog/index.vue @@ -0,0 +1,224 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue b/yshop-drink-vue3/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue new file mode 100644 index 0000000..41153a2 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue @@ -0,0 +1,81 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/apiErrorLog/index.vue b/yshop-drink-vue3/src/views/infra/apiErrorLog/index.vue new file mode 100644 index 0000000..22f3116 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/apiErrorLog/index.vue @@ -0,0 +1,250 @@ + + + diff --git a/yshop-drink-vue3/src/views/infra/build/index.vue b/yshop-drink-vue3/src/views/infra/build/index.vue new file mode 100644 index 0000000..571acff --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/build/index.vue @@ -0,0 +1,142 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/codegen/EditTable.vue b/yshop-drink-vue3/src/views/infra/codegen/EditTable.vue new file mode 100644 index 0000000..f8473e3 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/codegen/EditTable.vue @@ -0,0 +1,87 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/codegen/ImportTable.vue b/yshop-drink-vue3/src/views/infra/codegen/ImportTable.vue new file mode 100644 index 0000000..6cd4610 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/codegen/ImportTable.vue @@ -0,0 +1,151 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/codegen/PreviewCode.vue b/yshop-drink-vue3/src/views/infra/codegen/PreviewCode.vue new file mode 100644 index 0000000..b6a307d --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/codegen/PreviewCode.vue @@ -0,0 +1,222 @@ + + + diff --git a/yshop-drink-vue3/src/views/infra/codegen/components/BasicInfoForm.vue b/yshop-drink-vue3/src/views/infra/codegen/components/BasicInfoForm.vue new file mode 100644 index 0000000..1859300 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/codegen/components/BasicInfoForm.vue @@ -0,0 +1,87 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/codegen/components/ColumInfoForm.vue b/yshop-drink-vue3/src/views/infra/codegen/components/ColumInfoForm.vue new file mode 100644 index 0000000..737c2e2 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/codegen/components/ColumInfoForm.vue @@ -0,0 +1,153 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/codegen/components/GenerateInfoForm.vue b/yshop-drink-vue3/src/views/infra/codegen/components/GenerateInfoForm.vue new file mode 100644 index 0000000..692c04d --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/codegen/components/GenerateInfoForm.vue @@ -0,0 +1,374 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/codegen/components/index.ts b/yshop-drink-vue3/src/views/infra/codegen/components/index.ts new file mode 100644 index 0000000..1634a76 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/codegen/components/index.ts @@ -0,0 +1,4 @@ +import BasicInfoForm from './BasicInfoForm.vue' +import ColumInfoForm from './ColumInfoForm.vue' +import GenerateInfoForm from './GenerateInfoForm.vue' +export { BasicInfoForm, ColumInfoForm, GenerateInfoForm } diff --git a/yshop-drink-vue3/src/views/infra/codegen/index.vue b/yshop-drink-vue3/src/views/infra/codegen/index.vue new file mode 100644 index 0000000..5c145e8 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/codegen/index.vue @@ -0,0 +1,253 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/config/ConfigForm.vue b/yshop-drink-vue3/src/views/infra/config/ConfigForm.vue new file mode 100644 index 0000000..f61face --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/config/ConfigForm.vue @@ -0,0 +1,131 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/config/index.vue b/yshop-drink-vue3/src/views/infra/config/index.vue new file mode 100644 index 0000000..e12e86d --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/config/index.vue @@ -0,0 +1,226 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue b/yshop-drink-vue3/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue new file mode 100644 index 0000000..e2a4eaa --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue @@ -0,0 +1,111 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/dataSourceConfig/index.vue b/yshop-drink-vue3/src/views/infra/dataSourceConfig/index.vue new file mode 100644 index 0000000..92bd301 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/dataSourceConfig/index.vue @@ -0,0 +1,106 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo01/Demo01ContactForm.vue b/yshop-drink-vue3/src/views/infra/demo/demo01/Demo01ContactForm.vue new file mode 100644 index 0000000..5d28112 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo01/Demo01ContactForm.vue @@ -0,0 +1,126 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo01/index.vue b/yshop-drink-vue3/src/views/infra/demo/demo01/index.vue new file mode 100644 index 0000000..cf70829 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo01/index.vue @@ -0,0 +1,212 @@ + + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo02/Demo02CategoryForm.vue b/yshop-drink-vue3/src/views/infra/demo/demo02/Demo02CategoryForm.vue new file mode 100644 index 0000000..f4c5f8e --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo02/Demo02CategoryForm.vue @@ -0,0 +1,114 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo02/index.vue b/yshop-drink-vue3/src/views/infra/demo/demo02/index.vue new file mode 100644 index 0000000..0870dc5 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo02/index.vue @@ -0,0 +1,205 @@ + + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/erp/Demo03StudentForm.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/erp/Demo03StudentForm.vue new file mode 100644 index 0000000..758c7e5 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/erp/Demo03StudentForm.vue @@ -0,0 +1,121 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03CourseForm.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03CourseForm.vue new file mode 100644 index 0000000..9d3888d --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03CourseForm.vue @@ -0,0 +1,99 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue new file mode 100644 index 0000000..3dce77e --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue @@ -0,0 +1,130 @@ + + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03GradeForm.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03GradeForm.vue new file mode 100644 index 0000000..5687294 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03GradeForm.vue @@ -0,0 +1,99 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue new file mode 100644 index 0000000..635f321 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue @@ -0,0 +1,130 @@ + + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/erp/index.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/erp/index.vue new file mode 100644 index 0000000..b8e65b2 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/erp/index.vue @@ -0,0 +1,246 @@ + + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/inner/Demo03StudentForm.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/inner/Demo03StudentForm.vue new file mode 100644 index 0000000..98c1b7b --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/inner/Demo03StudentForm.vue @@ -0,0 +1,153 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03CourseForm.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03CourseForm.vue new file mode 100644 index 0000000..77da45f --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03CourseForm.vue @@ -0,0 +1,100 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03CourseList.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03CourseList.vue new file mode 100644 index 0000000..965b473 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03CourseList.vue @@ -0,0 +1,51 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03GradeForm.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03GradeForm.vue new file mode 100644 index 0000000..e14bac4 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03GradeForm.vue @@ -0,0 +1,72 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03GradeList.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03GradeList.vue new file mode 100644 index 0000000..e631384 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/inner/components/Demo03GradeList.vue @@ -0,0 +1,55 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/inner/index.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/inner/index.vue new file mode 100644 index 0000000..6d662cc --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/inner/index.vue @@ -0,0 +1,227 @@ + + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/normal/Demo03StudentForm.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/normal/Demo03StudentForm.vue new file mode 100644 index 0000000..4815357 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/normal/Demo03StudentForm.vue @@ -0,0 +1,153 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/normal/components/Demo03CourseForm.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/normal/components/Demo03CourseForm.vue new file mode 100644 index 0000000..f439c3f --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/normal/components/Demo03CourseForm.vue @@ -0,0 +1,100 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue new file mode 100644 index 0000000..c711954 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue @@ -0,0 +1,72 @@ + + diff --git a/yshop-drink-vue3/src/views/infra/demo/demo03/normal/index.vue b/yshop-drink-vue3/src/views/infra/demo/demo03/normal/index.vue new file mode 100644 index 0000000..0ea677d --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/demo/demo03/normal/index.vue @@ -0,0 +1,212 @@ + + + diff --git a/yshop-drink-vue3/src/views/infra/druid/index.vue b/yshop-drink-vue3/src/views/infra/druid/index.vue new file mode 100644 index 0000000..3beac74 --- /dev/null +++ b/yshop-drink-vue3/src/views/infra/druid/index.vue @@ -0,0 +1,25 @@ +

    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 Y)KD1lT9stKL4Yr5ae1*HB8Gwg2lSJ;0RR91 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/src/assets/imgs/icons.png b/yshop-drink-vue3/src/assets/imgs/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/yshop-drink-vue3/src/assets/imgs/login_bg.png b/yshop-drink-vue3/src/assets/imgs/login_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b2708ed3c766fde95a7bf70ea5bba4794fd656f4 GIT binary patch literal 1543364 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 z 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�h0pQ$`Fi<18K$0c3Ygj)Fn{d>Sx*?aTJNA% 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

    ').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) { + 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参数 + header['X_Requested_With'] = 'XMLHttpRequest'; + // HaoChuan9421 + if(editor.options.headers && Object.prototype.toString.apply(editor.options.headers) === "[object Object]"){ + for(var key in editor.options.headers){ + header[key] = editor.options.headers[key] + } + } + }); + + 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; + } + }; + + +})(); \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_chm.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_default.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_doc.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_mp3.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_mv.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_pdf.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_ppt.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_psd.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/fileTypeImages/icon_xls.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/alignicon.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/file-icons.png b/yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/file-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff82c8c488f53a7aff67fbe39742e3321183eca GIT binary patch literal 44070 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

    *vGSxI za-?o!Fc5lDD;Ml`r_6&&!_Eu8t%hzL_ZIY7*b28+pl{-fuc%;S{=$ybP^*N&S%)`c zS+W*(a?pNq_XB706R4rQOaXShH!j{!5-I>yKg+zmvP0+$0tk(Bh#4Ddv^^OjZSlNoXzl|T8*l0f#? z1w$$Wy}vfhJ~KdVA|emb)KbesT_s$oOa}LzpvH?O&FXVaLDk_D6+OMh3Vpe`!nK+! z6kD?b zTl6i|!xi19Ma(2ifBum=9b$j9CQs?#tc>+<0Ts@?Ud(fj8>+BXrwq>qijd^yeho#Q zI6mJTsN>+^lz@9lvy(z_uXc+Ufk1isKY>R}ad2>OzTTE#3QQjK;Hlz>ZhL=y+;ePe zJv@zZ+K&ry05f1W8=&>br85b5l$f=s(2|@Sb~^}_G-o%rbBxe;#3nuXI=oVDMw6vY zK`;G?ALOhmd1BJc$p}p@9%~=@LATnC_8&^jtaldk-k*h|%_$xA-)I;T5m)qC{L$%% zhl*nh9Z4*uTL-0w&YB@wkU_ZA7w31ADYR&|VoRbHw)RQn-Z4$E)!mh0eQV3NTpy`uE_Iq9IqG)6kK3MT$Y&R~aa!rw|%x zK5^ftwu#HjaXft$0SM$8<5Adk-MM`&EiLUmyInETM%|X61uHQ!qXX@HV5G5rL~(D@ zL=75$KE}m(7a|{@3zKrT^BP+F(Kto42Cqnc@wo-U80@uZF@_UF4`O*eF zy>|4?zJ#&yql=oQqh!)oebz*+>iwLjpnQ@bcT&?N@LDts8tY9tjWi zc24vWM^j|@VK)z#8~-^CR_Du9E9mIyL9oR}s++jboJDdZr=G818`qo%hI_ya7 zDh)u{LN@6;x6i&v<7A2qE=;U)Nb*49MOj4$u=x=`P9&?UD)4aj64LiivJbs zp;(C3xozo3@{I6%Ei#ya`Gvgl^3y*CpD# zM<4dBZA4v?@hP56)^WSx>%+w=`;-8=MwQOOMh;qZ*NIuJGv|6c-tn+j%bL843uk*Z z*zuy^=H~Wgw8!Y{`C3a1%h88UOeiZIw$dlm_472S#3L zJ4L~JHBPG^Mhf4P8HgV^2WO}$MF(GlfaGAiLTFI)Un(WGuaCCPM3{+Y{FLx{N`2z_ zj{YpPieCdRe+4;E6~GpiHsg~jA+f=-A=jDxa_5&K_xY2LSe51!h^wt!i=6RWbV#MG zIzrc}!xMD;@25^i_5u72`uKyRz*%v4+REbtAs+5{(q)^{rWLh5yVTbZ(tCBDwKK{& z`X9W_Xg|<@MC$m1NqHr(8N#v?OU}7*a*Kc+u_sK~-jKF=(ruRKxzg_rT z$k#zYQp(L3Vy7>&N;!kSj7(VK7Z(>7Fz_25{zE=Y_iYigPZ_kN_c_R|q#&iv&>R&| z%y^-7_@D&A!nSOr$VPPGJom9~QGs#ZI|~V~`T*H04twyy(2sxJtUBJe3Tx22=c250 zIlSjE>`}b?p8H2im9wd-X|zVjrKw50V8*dX&G~Y@O|`{#qn&_e5J4#9q+Es(7F!y!ouYy^^po@l$c`DH%vy_Qd~VOHBI%I`T0gEcnsc~5%M#A z@9ROT+|pKBpqi9?^vA=Tq!(VPJ~B{@hO;=OGRVZCtS&@_N~68B`gDVJ1J)2)&=ySy zFSpOc`0J0~A7V1Xbrz9=UJtcikG56dR|?k7UbqZ>!GH^3L%m-x!z5Wk<=v0HX70LE z*^IHWk}Ru24pLwM8XM~o&6OxJuhg3Yjs6*4h2ZKrD-U)(ZmubxL+%6vPJ4GvPw)z zq3_k{@%8CRN(1hh-a)GA)6qE>GRSjfWCD^JA7P zHWU~LBT0~s)`>A$ze(FA84D%o{J=I97ikTK@_$zMsy$E@d6rt~t)ESBf4)b7h71ae z-STx2o&7Sq{#!l#uCiW6`KRU)jY%HTzsrpdQ(0M{dv03_%)gpOi@nfOlYeitowXYS zJw0w2jrT@mjA*m7b6+G7HV9jKh0%Q|?!TGbs2W4x&o(_-2oNhOziS!z+X3sRU7~1J zi|fIDUq^8NnXs487HxbttF?7Si%wpg(x0q|m*jb}-eM@->?AJgJzV zp)9L%X|S9t?j%{dBah+FwJ8$5umBHpV70~Zc7nS{MMvlKtiOtAzMb~aNdBml;-Hu*PcCrYVn}5rlBF?vu#KA+-fJsNGO7n=q4dKmNMwmx~Ve7Jepn* zTJ?a$0StP?x>}zanJ-#DD;UhtETtCg08~ELrS$-`AhBNoxV*-`@nk<}#lLlNCF$;m z?Tf~B786DN@@g%u^cuxjOpMaw-Aw z3-H~*9}S{)!}AY^RWEYIWF$;M928YGAwO3$yg#DIk_2RKxDc2sv=p2VM4Fl??f3@w z8$(#)xUD5*AMc()MN_^vIO{^HNQ|Ztz`_SPsCDB~|32>d{P`|U zohn9Xc2(K-+a~k;$Mp)vLIihpO7|~2TG%Jo)4`+LnblQ%dm$6Co2y=LqkDrM0lIV3 z!n^noxI-k+R@^;Ht} ztCut*VZ^6YKEiUlOGNv}%h_iK*ke%{;SS1Byz|L`<3Npq?Yg_))9D2@FFBUAQ8p zzLTO}gzrCYdbdW8 z*v^+#O8*Xxi;vs$pZP%xn8VHeA=`#h9zeG*vhAN2^LXHD=>bvB5QDDC6=tLDp}tx- zenEx-gcN+=Q!wov#ApDr$Vo_~WehQeJhop#ZET$h;+#RK(%g#cBD1X@0fE3WJk7t% z*rU@1yquhzUHT2o2VgV#>o4k{bBTzAVM;1CuIsG#16neKD@rn6k<|Qq2hye-?-xMs zFAYBU+ZG=VJ(jX9SI638Q&G}>4Gq6EZF8S9q8eO*lZ4L(v0A?AO}nmhTViiC@$X_h zgLNP@j=d$@4_^C+78_ zRbGshhkx*24Qd%$0ev*EhhJ~$bxsQHx7P`1c=>;4l#4CRe8w%Ut@pvMXrg~gpYy0}j3-Y^~jvQ1#Quuof5*j_;M0_&M+A3*+hR^x8~VPtUz@LV&*SxrG#Mf#AQ} za4q>A&S^OamC1P=9HjhbORYVQ#jylt1DQHfO``RZZgl_#&o?P6SBn}{^6Ba8k6?Ey zVgTvybQkbEHDUqHfMTj+*e)V9tw!h{mn)k{B@)Jij`bL$P0x zgiF@nYmZ>8CC-rGmNb$HkmY*99EL3n3wIsvj~qeiZWVw}!7V}#eaOw-aqpo4HE+~LMO1{AOP%% z_e97q4g*bQqPuL#LdS@TmKsD!oK2R)Y%L*$5;S4D8}VOev;yrZmMc{CDe%8xqds^}j5~_?|6B?k z`X+X}yCm?myBBwG4(;U6B5}3{_$~4vCNnqt`Um-{2p9d3s31k|zXLO+drU-0kBh1- zA3n(?&S+gOyW@+&gje91c3!zIshqNB8Y`K7?-~%3(ao$tfOI@yAsY6CTv{yriN^lw zj(No?#aFTWH9x_xbD1rF>U7&)-MAyN{=jdC2aH ziiAgfcQO~Ok~~WtOpC7l_z1AxA)%vP;(ZS^$oI9w!um~3HC0woaS%)(6j9vfnB8JB z>?(AZhsNsnZ+8C;efw@s@gUP_a?-16&8{a2?8hWCo5;>VfJWM;nX4CF@_mu*n2`uadv%GF56(v#mxiG@_tp?S+3=jsCk zV5CJlSBk?MB>^~yggZ=9&ng8L#nVF}GM_t6u#D?mIF(hZUB_$AXHy&yAriVyToq4ZqGL5L%>HRXaJTOAIF{9nYlyBHOvjcpL z9@P66xkz{q3Vb9*QNNoBf`2nqhob_`<43r2 z0#XCf%hpC)t#fN#Y1@6(i&80G3FY9O7z~*+LC?DXm@bHh!@{fKcMAqxFPZY(t8evF zFDaXGhQw&PMlcu}I(rfBA+eXiYDY=3Y0E+?8E;2JH&z>3++M)%6=F#Avb$~MiLZN; zY1OVF0~&_PUUEru_-)4frw`%WrFSU=H1tO&mz_LyL~Oz^C4YNv->}U&`=XoHZiDw9 zKN+`68}YXD_ci;77>a;b8#H^@b)5$ve30M#<~PioIWq~qY}l}YHEY)Jo^vl?&5N(# z^Z7B%^aW`w7UQxHd;ot*6<(h|*?>&&e33Ay99x3l_@$Cx>5UhTZfirgCS--L`Q1zkeUon7)yd~*+7i65K_dsV(k4=)6rB3uf6sXx-JmHXM6jp z)Vs2j1Z8H;|1*CpBZi7}BXk#{q#WTZ!HRWZMcXktw_`N7Vz&1ngpRIj$-m}kC3}N4 z?Cz+A4%XQRV6~$E|M8pr&Zj& zCgDDr?iG{Zo^j$Bj&LI3@P3e>be84vz|6Wc&Dwh{bZ+b~&g-Gn{OZGLT z6fzFfnXwqEqlwau&k@+W8BbRWfwuY~f=TU%KLPxEK5%UE0gu1`xtw~* z>-L;_$>jx8j9#|w5BF<9l(ZMaBodCGTAHX>`vNt4wxPAO;I6M9(nfSD`1c=oT*_Xa z%WW^YykLsa%k&x-2a@zbtY{mw9#cA_ zm=M8aJDflH_vKM{}HlRR(M>{(oO)hCb&WRCOJt$mf7ZoG+wiw3Fv&P0l>xJm0yZ1~iEv;M ziFC{&D{Lsi850i!NYv=SBAnhWIF`Rjuq9Dh+}kAyg}BdsANu%-xTeh= zHoY`|@VG(MOQvWA(uC@|MtO-p>Fr_|CK1zQUqc(OuG_`#JsrH~%$1yV%Hh;bsASfR z+F{enyWjWiLD!2A8Wm-weQHP2vM`MpQ6q}jwu$lw{zlct*YRC=A+Gnn7j5E1^tr=l zFCE7pKcx0@z|3I=Fo_u{y%;i#*X19w>-44GOrT*fbn>5V9jvSGCThyG{-?~R589No z%mXE1`-ue>C>t4=TCB-b7j?sDa`tPjTr!p z7_@fecDt#rt|lA~^Vh%rl`UJhv0%XxK5^AmoPEyOdFNU;fAi~X-m;yE6Q?B0%$hxm zt3LHfo6I)HdF$4`$``+I6AKqEOCHxWjjKNONoLQUo%0;aviQWuKZ?*i`2B%onX0NP zuD$LW+#XNP^BNlV@#(8R!TkA)lVd<00H)OM_hW?(P#Vh6K)O=EOX7d2Qr<95AV#ym zw7_MdEDM)Dj^?H|q-+H=Brs>@3|y{C9)9RSUV8cEJukla!k)>~rdIv_2G2srf)s>? z8SWy|v5(OH{eMZrfCRG!xCN^W8-KvCa^D3%kIcTlyD<7flGIxc{NI1 zF1#Ku9*>vOfC*~7V;yf}AAz%1_78w@HUc431|3Xx+UGP+6cVJmB7-b9;Xxx(`G_28 ztp(|Tk4o~j5D#fePm3**zf)+3$jCsH;C)H_PUS!vyi7kYx;V}(#kH6^WEk=H^>Y*I7n7)CU#k8|T$WbU9q^+ZcyVn1P1yc^;szX1E&t<1Y zmP(FD8!I&P`|fo|!gZ^M1msPCFQIUlw)QT5_xBC#YK(HxyB6`A|6P#GS~l7MsaG!f zqHQLZFl2g>mPI5SqNlwLwffIgw$$T4G2(`5l zxbII)-oFR$x#!~f#ptz{Z(k4x$u1b0{$NaM)2sP1ArL{TUl4% zjr3LF79#E2Ye)zxJc0_JhF2dTz@QY{Tf6!O!1PhwNxck`Zj!4q#|M6?pe=0C85K+@ z(I|6^{O4uV(VywN5F&Sf*iTb5O_N6+d4z`^TFsQHGg)=?Nt|-($(()8*?G_T{qKIu zBM(2y%vq_A=e4!9eCD&)+P4I1~i zFn&TRjddX4=W{oFma3|%oac0Pb@AcLFJ;QqS!jB}Z)YCUvNVs!gNj;!77q&59VnY4 zOe6`&SgGv<5Mx@PTj-_Z*t_cmTyDT+5-1BGTn69!?hosKbL$n5)qn16fsWe%&2+j6x(RH0bi5r*h!sqkj z_XY5I{RI30#?{nNRaMRS2@>`_<}f&`pcNJcz^IHA(Miu1;e=iwEkjWnflGQhfl8}4 z!ONl?y-7OG=k|R$2Z*JNBtY*MkT;7c=*df7=l#Tam(AbA#Hp6n?_cd&$1%1tjxJR z*rLn`BHY5b>Pl|=znfV1>}m{45sWG(P5LVUyVpKQ>juHPhknM2W6$E_|MOk;?bwL& zHz5je)A+i!FqDBR`9RHL>_{p}BpRl@vyH!R_!ILcFXXZ#K9T&Qe?Z#b0NRjJ3e&U* zhQhS8wDX-iUSZk7X?*>>BTZl!l59Ytu46k`Z41cETQC+ zUqJY5pbjYyO1%{FfJwKPHg5a-Tp`xP-fEfy%BtJq6=Mq8D9)z0(b1$8AFnGuqCbwuCvln;REtsTAi z>Z>{TKmW=rxIKOjU3oMvmm8%NzrW*lZv3BX^VT(G>P!|cTABt}@7S@OB@5>gi{F&yTj?3ld@FR}J z*)upZnq_l*`L+OG%)FfWMUT(sIUCO`xj0ijqJXKCchA*M;uZ2voEa-D^3n zmBs;+)lz!}V3bVv5m8wUN!kRsBAI$99ulOIo-2tHQ$-T{6~dV(J5H{vkSMfd`f7!Y zhY>jmWK#YvDyt1UhtBOa4|vGHJ>rfFVaX5^07pctpGcgL3w)yN$it zY4pe{sz(yQIFKhV45m+#IOwt<^)|AdAK9L^y+So*l^K72dd8vVzx$~=DN6gly+d-h z-Im3!XcUjf!@6fzGrMLy;h05R$Y9&HZ2;7jRZtyp&`Ti?n3TP=bJxAkv2gwj zuDs&3gH|ua+E2n$sa?gU)hNyIhRF%S^ifZ_ z0hr#;Ph{}SkZ^fLl|K+DiO-hpN+wU8!Q`nkdYM_LU(g>2aQsPU6fq-DKX1;wMa-GE zs88qUE*D1~ePW-ll_|QEeoIPpUB@t$6A8qTu_v{bNO;DO!UpV96j%zqyoAQaW{CPB zrttcpd$-`pC;s~fDb1H^C-__TZhx-{@TG5!(@^`Jpaw$I_($_OG+0v+Lg4j!(LF9| z+#bAMKPCPW{N4a%CFN9CR#RDCO+{%Xey<;wZigV@q%E;TJT!aaJOp?%A;ri)TJkPS2IJ)X=Fql3pP3tVSvh%BVyLk|S%8lX%z8lH^P# z9lsA!guF?JMx=)}+4rNR%tj5N2MoD9U!19`oyQq84;T@cM*H?Pw0MrA+nNq!Bbb^d z&^6)nd38M!wT2MDIJg0ZferfNpa5W0fi|?LIz`wrCW0XFEP$JnNF(7SM!X%N9HQNfY)yS3IP^=kqal$|ROnR8j5C4-BbIn}Eil zpHOGWBmaJ`@MP9Bh{hs3_{0;up*_JD&i>Xxv~Wz{etv7X_eGu<*ig! zRddtFk2xp+sevpoq?E*B5xP4&h^%>(X;qb!UVi;MMlYHsavqmb5{*Xb?C9d(Prpf3 zRTZE7=;=eQmj|ENLQR#QRfkO-cD)o8)+i;hXoQ}Q4#ZQBGNq;h|8>_5YpBssFElf& z+0i`uvmnhH@1h^;&JhPNoD!1}Bqr_AeRy?0CGM(0o|}%mPLc^o3V<*|L1$Fa9kZBJ zW&;ib0bxdJ%GtL>0lkATmJ;mkmQ?#R#sx$M{l&mQn4BcMMVwk!H!0`zD-bC0UvSO0 z@Re6{uu9BQv;|Eb{NBgY_Lo;wR3$;JxUr@(7mEy1)@*krm5E2V-9#e>C@(0e^pE51 z-EHWW_rH_s{4KjSUub3wQh=T6T1FyhnxNe^j|#sBkH<^h#5%kpKy}49s>*AqD61sk z3*d3N(S(*3Q=_Z|#*&KJQ3CWtLspi<_rl7B3na~`2oD%74w^Vj&!IRaGQBu#juw@P zkExW0jE$efI}l-eweq$3-WBl}T`4LBY2iSHNK zV33l7k@`&K*iQV(JlitI-@t}S;jW}@-$wTB-AkA6JzzyMh+jogw|<{nyXe%(^X`0T z_lBVvrw@LBp|2x;CJFDs-~dzT88QuO)|@$6Whxe|NZYQQvxSNUE2x~aWk~L~EEJ+? zzb^?scw7Qg3S7Ei>(;F{D5DEJF8eRB0IRE;$n?62j1L6z*1cxarlHq&j;Z5WCm&mI zQ5^~gx%a_`sG2HRpeBkwi_w zq;d^ykU$ubS5K;!wL-pktg*k_A{>ewbihm0P;6_8u)8gW?$-%q=%A~!GgOy!eu(QM zjSExdfI~%Ipj04iuC+uRnw?E)!uZ;bEbs;FG}H=Yuq)}|I<*+Tc0V@W^w7YXBBbh5)z@d2?gX`&kH~mO~RYbzMJqq$u_nW4X>lwq#3(%LNyL> zg%os>bO>=!%YP-9qwHWvTR2R2Fqq7EX^{VyZqV7v2~S57{T^A=vt?d!hW>yuo0 z=(mSVAB99piD8;__XK%mLjwzD)v;n>-9ZCL<o@LU&a6osvS4bOUcUUj2a(clKhjc2 zOUD0KSW==ag_Me4{OJ8f-)ZeQ8%Wf3jhZU|5ce%P+EFjat&P!9E1^hxWIaAN22c(+vOK_?sg);QcggHy ze|q=!e*p%A-9?Cl8(`?GXhOWB)RXxgv?~XAp;{Z#w!35YzV6u2+*6NX5H?M^y6n(A zpIe}mM!>7Ff4?0sTH@6RxHWw7_~NdvF2bfsk73{`zyUMVeggSG%|do0rG*g(U|Kzm z%pNx%%d${P@!ka=qB*#qz1?re!54d>xaRGrs0~cwxEZH823&)C*8hraZ5wl5=a^}y zan`(xiUy(vV?o&;kXI>1G#aHR7-ap{4o*B~Y4X^TbAFlky!8)!3V=;JT6q6w?n@(F zO&se9##nXn?FG-j>f2A}JpQXM9zSGuGOsrMt9|A+fMuF=c38N(BG9}E&#DvB>%4zt zJQCD}w+xwHv?7RRl~P1ww!LiG-pFystjJkzd`%^WsW421>G&m5* z?6kC{UgplM9`=5v7+$GZBtp2Sn~KeE;W~MM_8aey@%hl+^)3j9VT1vgv5!bYrx#Pk zc%|VXc66+>6KnKC8iPA%4DMh``9hAIbRIre$pK|6xqyXYK$zyB#H;r&9I4kNNMdAl zlL?dvmF^><@_;ZAOR>AtVrsdbM$VfF!Y}|m_4*9?<}`Wsf9%+CY1_9y+cMyNw?EsG zta~8m<~wdF#fMgn<3qpOfnlXTm*&>8p4HN{us|TCMAL=MEvsvBZxM%|QI43eEbdnU z#3VK2YiQryg3twqZc2ewbPQtw+?1?RY~qFax0Kp0A-liOzEd@4OvmvW|< zO5U`CKL*E>36G*-j(XJhY5h`&y3NM zl4#7JCm3c=bA-in$0zksDDz9=e!p|;v$n^kmTRoaUq^4c8FUYae(1%B#R!FZ7}wT- zYxcsVUI2tSGGRzVsh46h{k*h(2OS+9?5%HL&)yE^&zY2_mlT*I&@|9BkedCGPt!nC z3aR?{EGrh*4UG;4!Cs_gVZ>sDdwQ7C*nqxZK~B9C{hr-6D5#=Q#F8bT>jQf3k?LRG zL6ez&pV}I(=h@x&&||dsI#FCT`9fw@9m=kb*I85l*LV_*bgA!ti`MP+oHFyHRCvc9 zP&(-^2-DCbnNgwR*7``yJK9NLasVYxs!>q@go#Pm(`7NOLeJ|7Q(MW@bN( z=F+mBQM0U&(1eP`V#4osgQ*aDLir*IZa9$+kqNqp#BYJn!0-2A`4w)Vp=la>n;Tel zzJhaR9~xm@s)-Ex|^MI4x|-<{Z8dLZoNP zPL^^+(B>>Oyx z5G1!i*ELE4I>*hih?$BhOj!Wyi zi^(iESPP`gXMcWcuweN}Btm;@7khSh(%NM)ZDK`o;rQC$uLR)G3sPPzYybAKQdum&RXz`d+3^EYC5P4K2{n*RDoc7N%hki$w7S zyU=T=U^*7m%CttL4;f0mXhn3$D;7+pvB{5HMllS<#JZ|H08BdglKd@G*XirCtl!i` zS*e#9Qz}NFUlDYN^S|?GI7Vl8gwC!ICEcB9lPBBZR{ecnac(Wy(*s>yh`DnIZ+RRi4)yWpnEbyxQ=P&E43`HA>u7%&s~VfSHxc*x2$k9g+RH`*pLM zCwAP%X|q0_7la8JUA*4-IB$2Z$L}uZj9FLa1ayYmR{8_NSQ1*plDZPDPbsR!0o0B} zKS7xKF3GeCEiW-|Z+a5_){`o@Kbs*HJ{AW;6shDjx%N3@OZvO-)@Pct?liM}uHOw^ zF}fobmV{qkIz8{RYTlei7t;_j8jb3KfDaY1;y{hc0AErOFv;J-0m5kU9U5RLCeN5k z^S=EE-31;EsVPo7<@BSUe*W3*_pg5CiJkTJPfeM(V79W>B=1QGiO>YP2k=|ejH{tz zmx=BcaS!k~z^PQuL`-?@Inx6s3Bbty12EEZ5a2pIV3I_*$rR6|Vw5shnu%j+o-rA2 zDoN7Z^s-5}#AGYWwLh1kJ0L5SFCZ}W42k%yyq$pF&xV(o@rYvo`oFqY(n4W>IZAlE z2qDmQ9Zl1ytgOsBt){93sno2i-#`1d*S2(C)Z89z!VX6olfgz`-eCw#X7^K>BYda2 zE7PW1#e8cKTbM(nhR6{TKcv1mr0uVvk*VM=~^ z&)T$OnPpl#!u;RwUrd&{?A)bHsVhr+)?eIoTtR)PA+(d;-iNd-Oe2QNjG~p4BOM`w z*2O;`nNDP|0T_o~iVH!qQ&1a*NzAY)EA?mD3-S43AupJ|+Wh)WP5k|lE$F)7@(Y$Q zZF2dr_AB!zdJ2{g^~7kg1hPfpiNz4*3Z4R z5M#7UZ|`m>`+q}{EB-1JuvvAz8lzUU*3|re?;+2L6i(Zn4%uc#vt(1Gm(H(20 zC)Qr@yr>o8-@AU#yXRhuNB3m_G(n!&c{|-PdtT8KYa?WK5!1TGQ0t@^RH8p1Oh-gf zN!TDQ@|8GjhPZ&>Ab0Za%6-=BqnYPw8TALd=;-nMl zRN~Zyic^hf2fT0_PGVdE;If#va5hF5Ts{qHDU=!KK$LcPlG8UrhzvjmM<9-h^T0?e z4!FcAQ7kzKAxO%Bk*P%E2ca_9S>lP&`tpo=)QQtjENIfe`f(OnH^ARjzP^^T9Z+x9dBt3rJ{XE?kT2e zlnRaiKL0!b<>RxzE_*VX$@9-Y&j~`KOw)2c!(f97L-8J*arU|H^T^4^Q{TCZXLmh; zlrs4jHX}5)wNhJ?dQUFR&HE4e1hc9Z=B!H&X9!Y1bRnh0vLs5`i{@-^hHL=l&kt^3 ze@iguqCHXOd%t~wo{)j2Y1CBu`N;W8ivyzyjwQpS7Zg%SEX%UTcTGEJQcvfTLl;d? z+g|t9ZdNRumbS0EI~cbYE3dtP9apX?mDdZVuQtDPcLz$@JTiM4I+;4DY}EBBQcC1t z*~{d~;PD{0Y=O7l8nw1J9N@-*Ec0ttF{5%BTU%e^u^qQEE-;Nl#vf1E=;Eb)|LU`i zJ-YqZRQhV^h%{o#!r<4`@U0t2{k|9XS_JENC@PJ7-SVw43n)ixyz#I;cLz2eZA{?MZCeKSE zq)6n%CPmVK6Dg(>Ow=L`NJ*r#&Nsb{-=WH`d2mGLyrxQUyC@lVPqIkxy{JJ?Lmj_n zT&GR|CJ+eV_xlT;J-(`hDHHr3{NTH%-FN3hyPpAiIH-8LN5{bOPLj-45wo%}z52b4 zY1@9wqJD29ersq#9;8yZHNnnJn{WYoN$Y;~V!GZxl@4*fpj%M-d0Txdpx1VWcp~Ki?nbfrzcDn0HZlQU_{c`1+aMO5;ncH2?K?p6sA;35J;k@^Ri$f zgrc@?0#;Pw@_?n;Avp||6xm;H=YvfE3k=%B!Tf74IA2+;1 zelShA&kB(SS|p(qr)P;s`L>7*@Fo@glk(k3WGPCEU~=|4#M3p4^z_zgiL0C;P#Hmf znRGA-kVrVAs(M*96&He(YgR4Oy#&>nn4m7rfdOc@+R|os4K+u7w5K-%a@?P=`44Tk6bxzj2+_oUf5b@Zw4 zK9jSKpMUK7Cn$M&caUwfR3(CcI@7RWtt##2br!+U+gP|r6Qnv(6H+hT0DieX_Nd)OQAH) z5t5{mOLmc5s!KE%Nt%86^mEMMfh`UQ5NVWoJRc_+lG(aW;h)IMi z4bmh#;rSwjptQ6!3C8p$exHYN6`mzPC3YCn7yvUS{gyYQ-RUN}ZCiGsj9vR_g>CWw zhd`uK^e9QGGH5S@z5BX)J*Tv*oyP7Sfs}^Rk7LLFy>alxN&+!^8urlK(ZqQF#8GQ=Prp_8eTG6onj3@c-W$pfz&Jcz zw!YoYlP}fh^?m{P(I3~+6Sk6NuD|Ti_yke)vS>~Hw&F3v(z4@}JzmeCp|uMqdkby@ z1bbraR~|%%D|_NtBmr;E=S5-cd;#C1zfDd$6c9P-QkXag_V2{C{y%vC`7>l$HL>&m z2X|n?u-M8QTlZ$o_%rv-tg9^QIfW?f1=AmZqNOd2*P~NbI{aZT8}~*F9uN0KX={qH zuhrnNK?Gp9<(5$mI*m!+WLL-QGzH%t^m=DhF5|F?XX1C+p?N*Ac3y2*&7Q7}$uh4r zJiwW=KaCKANu_hx(Z2Se1Yvp%MY+fR)ZNk*WnWvEm}xMj(o0>Lmt7q(I>H96rr@qu zTR3cL3G*lT4+#4iC^J$l^mV6_`rV z(%Ooq321eM1xYi0sc77L#hskb3jtEZ!5B-RESm>6%@am~(iB44UL2Ybc&jubk%*nt zL$e%oGXo^y%^d%n+%1VPq%;5}4VX!#nHF)B#F;56;XNZ%iaEyFXzbr237iPwv}1vY zgDO9~0IFJ-5>7ETWsmAIx#^Pf@iu%rP*K9UG zTrL-uWl>T@h(*#UTpB*FJ^={8kR_rSlXr-$otf@2uyJZ?`z()-)v-wOw^N+^6Tb&j zlp#<-sNG#$#-3LWaU)7}gu5_lXJn5C`-Wf7r>w~D#nTfC)6g8@Z%u_4kZ-lV%+q`R zg{3UKZZ{LF$FX~VLs}@3l#-u3`3?T}oS#u!J}K`tfA!LrdcEhXj<|V9baDK`!epi0 zJv#NJK}yX)Q2@*>cdrLD3h}i*vvz;-oKudN!s0nK`4^BGoM(v<$+S$QrHB~@0y!$& zsgeMU(LVr2p|IB6gLm!Y*;CR9v+$Hng|ewI_c$V5dvM?X6Fk4Yk?04%j=Ox?&`<9B zo9iOSyWP3FHBMe_gJ|~u%FYaA^__&bu_ege|J;PvqjT8>izq7@UJzzc4v;Plu}Ma1l3Tl*{hvX^TAL{?5b zC+XQ@Ns~95|HHFb2onrN`OoeiPMqJ( z$B%+iPYvKs>SdhEg~u`pRO(Ehsi@y8x#Q&~&Rty1yz#|@R4VkruDnv{nDO2dv2dObA}!2tFS>B=gTWZ zyqg4L5?(R(p9D-4VFle%(rHP$OogwcoTi>0>XhYhfHC9Oi`htvjt#=NgzfYpKxu$x z|1UIw)Nq6(*%T;BCO)gy{^02V@J?@fBbs1*B& zP#Ni|Me4s443h#(QlUjDWH+7oCId~(ygp72UmFBU0!C@)rLI$q15D|}!wVhugqqgH z`CT-e*oCEl#`}2m}a+!^JlsO~dUH0l)+3jLDb`Kzviv z*=*l+!P4aKbLtL7?q8eyoi;!?_9uQ1ro@5c%KkF439vmU?K#m6sPRPfn;_W7fe*OW3&WUA~e zJC((er=LD(ZF;a|{hlzRU6xE89o`L1!MEv(wj{R? zpL7m0E0^1StkBuq`a;old2}DkYfoox^%2RBu6w#R^2)vk2^#so^uONtIMXYa;MD^h zG5K7c-1)l$3UDX}gz4ysv3++p?_Ji)k#l;`gdYtrHs^&qz8+MVNGhvfNu{8*HNw5G zg*kIUHH+%}2b4~V1!2M=gVxqAK6+F$3#Ww9gdh9ca<*P9B$}?6Hce1j2@k*30njH9 zCSU(!_l^Ba=%*Om^LDqz*xnQ&nrlo~157&TNhe}2DM`&?F24ATJMX#Y@mpJ3TD0-w z$3u^qB;zfLd^Zbxv8%S?0E~(4`C`S_|E-oJrc|5=H-1k}00zyjLl=Mxfk=9=A`;O$ zDxO_fpfriH;`}gr;#9ld9XqxY+`s+bRLL__*CH+PMV|o}l?Ak<(6Iy)wGc9$3ntkB zY}mu$C*ydtA_dS0(lRae#z>v?V@bKTA9Lj5ytJSESL__7iwCU z%(kBP7Y9{T9&Z?x(-UR@6QCR%FqM^+eF9+O=epwH%R7uRc1(s^s>i1?c`RFXD9=2* zHTl~q&i#qsgDFv83=viFiCymiOj%`s%9>KVWd}zF3@4%JtBp_cdUI}GlG^GTg5eMy zot;SlMoCF`xSN+Yu3^TE8S#EY+%$jCJ+x zM9hJWgE14Dy96Iw*3SIeFvDPb2$a=~Z`k9ix2DWB$I=gwUSCFEc3 z`1YUQ{n_#}lX!zQ7#=Xr5TCSsM#`bDM92{iP8dfxQatpBL|9M)j}gv{NRCWKLO9`s z6rhtxV=Wxu3%S4-;pFE*BspagVNfa=o-~Lv57I)9;$AIEIkO;TP%0-qUj~DKHyuRL zbsb&Td(C`QsG2bVW=sZdjOm;E8dASo*S(h9Ze90U&T`H&gDFN3f^mu&pU0h_lr|oB z(%K3U9o#*Ad*0E!P*NyfY*@|awpR<5omw}MP&h<56h zB&IB6e4R0c3HYl7CoHJo^?ktu0)XiY2-DIQVns=iMFG`!y|@H572W1i|spH-+TeobXqoe)l@&KJlkC((H3h1(kEJ!LzB$y(* zP4{9+0xlvmmVR2(w6R&hn2h97KW(cgl;U%Vwznp?qwTFZ z%Q?#orkLRv;ix?Un>uA29j)Ct%avD^!8&1=4M%VZ*{A0n%>c~Cw&!ULH&El7h)hH% zC%z!4I3aAjY}woz*1Y*FX3Rp#I0&N@&CSis8MlxlC!Un$aywE0%ww+=CT|XhLNqsZ zvS)XGj|P#W-#qECI*wR0&K?hQ9KYh6xp*^NaI+^-ife!HToQ0s%Kk#5l;oxlEvBrh z7KsbL*M-O99W(%D-A+5}(2AKQY1>YT1VgkohS}E?W!V7VkwW5rW;KPo(Mm^{7Km9 zNH9!WLxhH=D2Fk?5Tsxb?T>%Ny#02&o+FNcZ+{#8#v2ib9D=;|+J5zMV={6QF@tI0 zM__ZZJhkf&y`JlLm9nDl3}#iOJY#ouyvEvwhY6cK{j!CZ8y?{FSyvKpm$PKTiLBfI z*a5HO4Gj@??(O0HSvrJ#C`-4QM2RA`7*g*Dceu@9iR~5CGT?fof}SqH8S_NH_2NUYYFZh0yx7RfsipYceOgOpc)<)L%AtSf zMNG*{JG*ELngg1%_vxYa!Z9qTouWc+m;U#?d-q*XTU%>~AjyRD1^Gc32j@#_hGBca zSb(MM|7Cp6nr;jZ;K?!_>+=Kv6aP!*D%Wie+2j}^P;o98>i>Xfdm7cX9$~fDU*g^^Nt8`E zxmz4)iioqrsPynBl_V`p@x`cwqLQGCeSPP>CzECi<=jDblIj7iXi^O&4s|LrJzg?W zPG^zw4$@jz*dUDCJ;tFsCZkKjj`Xu;xF@-7hI?|BbCwxY048P-jYW{UpQf&E#+7(6 zqUj00G+m>$yBn!{iN+!j6S(w)BPp0tiiK52v9Ri>qR%;e+$r4q${k7X4HfV6T3VZF z=%}ZzVsdKiks}AdoW8uK;PLJrAN6~qY|_g3M?BM3RtSYc3rV<^zP2W;lwikf?Wt7X59?**Pll%I%zl?#()<0xx8Ka3rv`nWc8DqICRNm zrc50Ew52O%6i!DP?6zpseE53218&p$op+*YYLLeqlY9r(hdu=L_2@U>43>p;{qJD%5=@n zvLWHfDP_D+-!2G0dV#{(gWj0~9T>&d+`L zYhPN%F(-ZUgFpPyFVESvYnOY*j2RHM96*c%e8B;}IB_kJ0AJ#NDuH#VB({)R*$YP| zA{8&}bb4@tFbTdHKp-x+!|Xc>^Qk;`IJPmjr%44Gtf#GyzEXfdNb z$!#;*le3(&%wUQYF)?CMbZ>xXUwV_v&O4ECYdevk&6lLRbZVwdipCZ-yAUjW-#=T>EUwa`Ex1p>nYb($8k*)eC*uW zMS?H!u_DP9FA?$aAQFk;j+vM$iqEUz^Z5qNeetkar3JSEf<21;o&f%kFM9&nM-pCX zgnKGc^p6)KNtfB~=2h9!!*nX6>)3#^sOMDdS3;6QSM>n!#kHL=JZ*u;- z7BOvdFi-`?X}EPJ41L}z0ch(sd)bRCgzvA;vc>>FymlD%tKeu%ad>EY;H5rL_3w$CdbaK zp?17ZiA|t^vJ^@}o!3Q6k4eOoz4D!mMlmJq>@eA|FU+yCN?5-y!Xc$D`-6XmUR2D@ zKi+cV_IfyeriX1UG5+>gkpDebqe|D(^r9@qv{Ek{+xiEyfzFqUM>BqzKhvay%6O_hC2rQj5W zNHc|G)knhW1`Br~RrLrRH>;I9wANJr4XU0P1Wil9u1W*i)# z=9qhaVSU_p^U(#%^maTS03)U1ho4!6Wmy=eMJ#3zj>ZUuB6RlzaYthaL*Q|Prisy$ z1>p8BcAMU-KPMR^Kw))!U`d;_Vo>Wyl0Hf>_)S3JG@(iXa`Ntz0*}dPu zR276nZtnTldfs>TVrERKJm~rr*YAH1Za3z8-JKHbsQQTOgTgAtZZ3{dIQF)fK{Nn)mn zVMz?bB4*ludpk|0`Zc^RJ;`-x>(2$2n2yWLtfN!zw&jhD2J< z)VfgXbJNfjV`jCF15KXa8{?G*n^bj5r^UWbgOh4>gsx@j<;8j*l$LPOa=VQzo#aCZ zcx6k7lcxu=^irYew1)cU`JAMKRVj~QfU}oY^{Jk-m*(&HrGk!-Nq59z<@7+>)jxOo z#6I6~-_L;`KDI9nG$=F-yzheP>d;k}{PtJB`qzi*>+6rKuCBI2mlQS`u9K(48HSWj zts8e|u)R$5o~=~w`4_c~PoiQ$qOL0TPJKVStKO9sVWLbMB`_6uM4}cE2Vq1y=o8$D z@#04jB@*F{BHSUne9VXH_NM?3Dbt94(?OU4d%&bunB;?Tdc0&5Q+=;C-CR{Mg|jc5 z>8qm(UyQ-!Ye+EkWPmS8?-ysvY3DvUi1%UFmB@lLCSx+%#I#Z_k;;lCx0MykSsYHBcyAn!@FBj~c!7)dNQ9o}$kw*k4SVfi{Hirr#Vl z1vy~SJz(5!t?28RrsVIBY-DeffzT_!0!#Vn48fo7f1QiZUBc|?Rim~I^;w_6Ao|aL zj(OvaD3=S-)rI!_^JvdMkN)J7c3-_>1#D2hmkc?h+166OdkjU?l=!@E^c>H*yUk#JO}cH) zs`l{QrXWX^db7$42{E(3Txcr!zth*?f!EsyzT%XMw_Bs^Y>r@#5`uQiP(|f?`oaxM z%xkay=;=TC*>4**Z{8eOuwa3MFV2w-$qBxQRN#;WC@X|#^Dpo>3?ytI5t}3xCIUAq?(UJO(LppL1hHo?M|doRCJMo}mC z30YA_sS`6UICv0+O1U}3Uq+S(Omf@G$c!|2*^d}oQ;o@JlZ-~@B!w1^?aa35+&?5l z(wa)v>vm~WR|W{jymUlNR5*q=P(p>*g$Xo?Ge+|gz|b}3}7B{Df8s#;+k5%h{GnHMXARI6T@aVuQoh9 zEa{=8vUtA!eomitC7RIjsM29EmX|iSvt@5_;ne?W?LB;}C8FWc1iHuNST_oUCa@vk zC{j7NMeVgGkv5C47lfAhv$MuZ^T4&W<+X11c1tt?;{zJyKAj#k>b$Nry$D^fSn9mq z80DxLDZZPHjZtRkF2e0HOD~<4NvXG=AYBFr@8ASmDE4+l+13;xW{xhvOq#N&hkV}! z)75={+ZDX`oM=gpg!o(;*V#Q1h1Xo%hSj~Q!d?&NB5$+MrR1plm*A+Jr)Xg<8IkYL(}fG zMPadNZIiqneIV8yNfO@kj;bqoyt^kz{a(o?Ul$KQ*O|PRYrnr{I3SHAi<&^j|16Y@ zapsW~7>0pifwByQP@@Kb>5mv^Uxw$l@Ad!UE*EP0q9F!gdarxg{3+Cz>S#ugr`T2S zJiA?`d%*nYwpWV;V4?*4K1xd~i01Hkw_ywP3-_(JVq9?ra?&J>KmHLi69?p|Pu12E`|M|lefG0x+qa{wU5oa{ z8wj@>^MfB8^X?lZQsS<}qx;grh|0a=SUK_COe&j~1Vc8ptl^EOr-n5xbb^p~dd1RV zyXKa?Jwb1+(Tu+ zg%y)1Gfu0a*?bIuyH=NZs_KY7dx0Y z-owte7=+>Qae*LLkySNJKIeDFIhG0Vc@8P;e6IrWr)sE5=DAlU8?*OiMN(mR(=+ z-f%M2IA5g7=^mp7%E6*Y#(=3Tj~7QMQr59S^nMwWF&T}L(FA?o)K>>zpftJd3zX(8 z=PWarVo4L5>b@t9bxPNA4_6+y7q8cc?mc)&cvT-WzVs!v^hl$~}%f9^*UaM)DIyBANu71S_#EXX+rz5qfh@h?5}dN4g2%S^@O*PON7q^$KE94fJ6U=W zLa`?rWA2nb&p}n@a9?bqNym5t9=s*vT%Ztb5!_{kQ_XDF%j{z{*_wv&lRt@>WR4Iie zRh;)l5{nsh_XO$a?4+Z!o9>Plyroq{qfuh9=%6WRplPVxH(gX5knr7m)8-DbYj4K; zzgPA7eyv5zVcCg8ZX<^;o}RY-()wK-v1CU2WWGCCwC&11c$TG$PGfU7y338vS2){- zG`m?azlNz3%MLgY)Ajh{pzDZ^4qR*25PbB}A$x`~PneOHSyd}=>pl*fcqV?AJ;wLM z+Ih8MHG8@?j_AFGj4mQ(_lRBp!A(&%HQONj-ETzr%rSNtu_2)?B&jVe49K{3!C}(^ ztZOqkYO3Gf(#QSo7wrlq*=nR-rHl-oPnlJL#{M(L1>O1~>jFWo?!DH&huW2xOk5%B_DVUul*VLHPm0`TaLb+kxdc^9Jn zR1W8aBp~GMx09fZNJf_^mBbdZz?pnqs}ZsKJO^I;{Mp95B{w|sk&oVR;xWe@_mq@U zpEYYH9#1+?kJYgrwc~Dt--j|ZJ7Zq7Ivy4jL0MstF`Jtu>HLsAJy!}0B{0zNC<|RU z*W<#j!!)o{aYRXQ!`O8SgwT<~jncdb;juv&DN!;8E`jDz$dE*Z1V*R4cYpv4NzfvN zk~v;wJPndc@#KI|$!tc#8LA{QJ!BMV9xF;EAs0sy=`=7=I6ZF2%zTt$0#8IbCCexI zYMdT5V(=DBju51D;3Y>^q%;s_=oY(UGA5%<+zw(s;qoW9h0C9_oU_beiqHh6Fp}Ko zy)KW03%BOMrMVB9chT4NNngqzXltM0SghF#)YP?XGJ9!%(Q>))dOTo)TZeEYhG`mu zc2g%Tt|_<;5bW`=zaqp=Sq3j<=tcEUkHTL~dv>UKQDIZsvp1b z<{PgsyXw=|KD+zvw=0(}TS{GBU1C*@_0shyD}ss&g!Dns7Y_^SNec^7LXaZV#gXVn zqD+ZpDoiEpKOt}d8ae`dz9D?$kr5+~b%<1CjRb^_&;+=2(7oXCAhmufA(tSmx0GqfWC5=F&qccuu zCIQaa6f-Iw4i!IFq@z1d3K@|=924(BCE=hX3}c#u6nCmD2e6Whd^Z8S3?TsH0P)6T zOh$!d+M;ys&>Y)Zo^o2oIfEopB)Oo3D54!IVV~36y&OOxNV1QMP1y&p7CC|*Fn9lF zPvJ>-I7DkpGyCe(UEha?114o}0)>($N}32vt~h5lG7`h%(g{aRqLIi!(FJJL(}{fT z*SPM#4cBWg7AzaR_)1uQ5&~_++QmSmqRhi(7cA`e`ES>Ea{ubh)YVPE>r3|v40i3~ zkl8Lie(6#)ZRk6ir(Q1{8WIim(9zUEOR)|; zl-P$pbU@nkXaP44B-!2hCa*TECTMhyu5l2BC88s8?NjG?xaW;1hE$w6Kjq0Ww?^m2 z69T=0F95T~d08~k&!gLWICD`sX!bYz9-zmPgr&5{VgV5;DAj@pR~foDzMw>7V^5H& z6THl*_KtcxiW!pK&0*H>>SW0@Kfz!yZ`l*3>-@Dd!n1D&Id)E2pY^gc97dH1R?R5u zeM}GBi3)u%59Hxkb2y2P4Vta4?dyoU_beiWM<2;$#a|fx;7ymM|DG0}+a%OY5L`4@xPnJNke7 zv?wj6e1FOgwp?;zVWLBugjZ)%MTjR~>T%r5aQ2_6%y~l75a{@PUZjG6&rKv^5{-oA zXt0yMj4b)ysc@BIz5jZQ_p~84zmC3pE3UOKU`?Einmhw@`6|SunFuZ5AlM&zS@YWV zUiU4TU03vT>bjtIT>nERYsdL1FZ1y0KfXp?9e90q%H#I7eaxTX;>r&!9X8LGlb4Mv zcs$tcrLjKDPRa}F#rK`>Ajgd(a_zMQuD>49)I{)ae;W%CdI!n&_O+u9d>Lt(Rju>I z6LV)T^z^~w;$4f%xo=%N>-L2?WJ-WA5R!_JR2VYVlg5+=M8OqCvjXTI*wY>5#kOuf zbi{-MLT7({ZXc5>b(T$YQ{k6HqlLkN_qjz{nM6{E1b`zlz?X{$?ek|FAN}N-whw&ZJr}&|j0=`u z@sW?;U%zKh&CH2j>ZB3>Sf!zeq!#xIgwV0jLAU{*&E_IaFa^RR5MDbh$ZXXKnKkIb zgHi^TumBxhOawHxZQH@7O>ZH~KWiPe?@Ha}HL~Fj9W)PUH8F%sM;Sh3=Qw1u8>>D{ zxYJ8xyYI(`{`{W%i2Z_o12BN-XsA~m4fO|iPbkEIKPM?=rCOQ8+eKv(?yAAge3T8p zBwgJ5@mQv55sk@?F*IjPhC+JUQ!&@gjm^pJ=Emln<(y>(Q=}oW!Ui6o%;)Q+v_T{s z#SjuLtQ{2ZVQle}t&gAl&#Ga$j#6MriL@*X%d-32s6jLi2$uN0L}LoWFw|(Vljyha z?)$7W*HG)LhGi#VEjtP8oGa5OHX~q{{k`5$-sk*TRa|-LQhxUPb=1{OrK7W(Ia6JH z^0K9)GVG`~y|^EIknYv1@!xnO`kFQL+8cZMpx}VpYLp-;;n{yUdQ&ZwPAfDCh(x`7U zsc$Pjgl%yJ{P)dvHZ@0Cxu_h|E%NFmXnA?|?H(*mapCeBrdAdo{_gaGIr8Kk8EZ59 zYPx0vC}%FIO!@`{qZYxa2djtj!7U zmy`pBB0ZGpCy(v30hnmtIbbs7x4%BxeCj{@d#?V>gD*Y)`06E}yz08Me8(L2vkB3N z-wp{%@YLA91#XnCfy<51{GfSJE`{(!KFv-+8%Hz@CY;^z#~C7uzGYvupHUxN47(( z$6`-tyxMHm{b}BZKk_BizJiJ=@0J9?788}{r= zZa3`Nm$RI+%-|w03S~+>z`C8iWMS}B5ROI=RxITMI@VhrbO6k7T_@>nBLtez&^3kI z9UqQ`prpi4)C40IQ|}bLjNJ3}Ugr7NchKC_%-e78A2z)#m{ZLsFI&bfcf7{Zh2yyD z@&f~W$#s9>Yp%ifgCC&WZn__M06BjAuz)XPAoIwGR2ChP{Z#tuk{OT6JT)vFcMKbv zpMJ;cW!~gc{`AzIA*+9R6}+~!lULpjvTR-%72`Zuj`@h81W^liG)MV=_O3iOj_W>u z@4cDX*^}JmDKR1?`H(DGkPTn5Ttl^D%L$6acH*M>qjuC5PJ*~;YNKdU3so!xaC{VP zjnt_tz_Fbsf7A$2HAPLkiESx$6kn7?9X4%Aq$qMlF1Z(%d(8P>|CkZAql0&kToO{ezX4{M}#oWo1v!642nZqg-xFgP$r(78(ZPiPCBz9yqD~u1 zCWjqSa-r%`c^;VZckFW~;l(6@Wm588*Xy+0>*ajtk>lNR{>9OS<2HA_V+5c`1U4sN zCZG4XIvckCVJrXe@IBgJeCuHHg%|$emCn~TzW>YnecgVaHYJFJf=~%UVj%E=1SF8w z6lkajV)zQ%`dLZWv{+6FhpX398}o=rNk|^B%y#XQlbtCGb9pLWGtyR|5xkU)w^!K zaf1Q<2dIPqQ`>`yRhp|wm{1B`E5PSdU8CUc;LoS2c(m}70wysq#wI*q48uS+n?)uW z$J?*J2qSd}ALq^@s4_Iid{7kz0DLTO_79Gfy7%n;=%)ZO01VFpJX{X6{>kD=wyfyL zbA>Fj?vr{?e)>|i_(G(K>V-sblJ>dF6yJka?ZeAC~&Fi8I{yS$<1`hV+aqwsck%$aMAy62{N0x+K zQNe~*Kki;1M0?a%Q~ckxK7#F6htZSJaB@^byidazfDszNs(J;RSNibP&FVyn=S#ZB zcl6FEfDkw#NXc;%=dv0sTeyX*h~pXK3NLIzcp+ti%hWKW3yRD9s~}Cz-O2@-EXKI` zUnb{%!9;kGEdYr-TSts>k8=T=5Kt<>OuM4O_Y2Q&wE*P5`@Nw4?yztC_NI5kprS0_ zsgrn`N)#jr(AIGvR0604JFmhX^TFyBurnM<0Ti#i4{yA41o>hCp+L|qmI^2LKL2n3 z{QGy`Ii)BhuP7`V2}#-Z)xrD^cbUC=U%u+klY0KqzT(QQw7?q$m1NFjP)b256@*EK z$$TkY3isHGynp42*h^o3@XHDC_?#qo0?ZtUwy#8S^!QxO25k5T`uom?eY8*~1SjXq zXUU2W1Ok%c10@uaEQ2x$lB|HSg`r=7gLB8*Mbk78LU8ir$-?2ohmY;wzyE_zKKY~{ zz=-=Xr+nQ8paaMPNC410EAVhR`1rsi?~)jhTmvAwRL-w^9&J9tY2fXP`nQ>B`qqMC zu;+I(i$Zz{W8-PavNPd&;N>qa+4XQG{>e+f?wegCD;1GWB{4LZsJb9kUXGe`4(^tu z<^r&74$HP-niedZz^I@H%%@|)#k6gv=E7P2LfxfNTrFM}lm6E}7@l2NDdsUYlElcF z%tR92=H_NBcg)4hQot8(Y_0llemMGn=uW&bv2Sq$ec2<(8!6ni_8~}A!Od;=;H@)1 z^Cm_Mh}8`WRyV}(wHsm>8Z%HZI0S&OkD?_kgVEY`(`A%k;|f1EuJBj=x05*y*|Blx zrU0V^G9yk-7*}+mt_Z`(1u>>P2Moy6q`Mb!AEz`G1fWy$!JPMc5g=tAFa(@9Vh!U0 zoDeWqydlK#jv*kRM1XLBm|~*1j%5kqtB}SQ3ai<-jhjw%#LsPMtBZp*a)1IvA|Mg~ zg+oXdxF!Kw3_KSEAEvNV26D`gzCr+Mw8KoTy)&K|96bI{&piF}(NuCo2)kfeRyGup z@{KWH>FTS(+ATLVS&#kgCJq2U`a$yDzkj0XuSWFn7lgnqgpd`It;aZ(Z7``o2uVVq zCm>6|xoyje<9B|3n+E%R0rNlSye3b8sSM&9zVgZy9UUE;BuVnOw6t8iWnSp9XxpOJpkw6Bm$ppHfp&djP43D9u@%6XcV2Doy+EW zvf1qK;Z%#8ZADW6&<9|dCzXQfUTanG)oZWf^|IGZz2RA3w3| zd6~~5zL?J=ISdShi@>h{ZO0Cemm0>&^n24DA1w~xqvYGz*t898;dN*WuS0zNV~?-} z1|>k-MdUE?uy82kb2#$SqaG2LD!>GJHl>pT|IN3pxi)#S<@$UN0%{RN1*i`I;{dlI zxF4`pXi@;9Jb*#N2a-ye*^%MBkGyi=MeW(w3`&W?DAfW1rU(2|an-7@@x{B_tiSp0 zMviHc2>kG|(V>6;kI2iX`s80}8k!8kS{NmS2y0C7iGlivoqgonLl$rb(C1%C(-UAS zyWlzm0Nb~3e~%FIGeQU*wVc{jqbZQCt}g%Z@UU7e7S%$b;J0mCxphOZeN~IEr9Q+~ zG}OsWs!wj}_*~0snQ>ozSZO7&BpIbTLMRlU3V=XS9p%>NbF!y9`vlb2glz9yIB`0C zWcQDrc$#x=2qEI*U0yqUA?TRmX%$_&MfEU(Qb;y#8NH7Al0MWV_Ov_vnHZ(kt5WFPf5M+o2kVBQc zh8U&rt14pAIz095^(d7V$I-96WVdZw=<4dy|MA&>-9xDFD3t?8DJ50S!9^K^&+kWF zG=`oBc0n&K9ii^W&pfqTq390K$_aJzwiia>_xliw*5f-5-L`1<@@ZbW^e3Nwb~lLJ z4WcdrFAS>RkGg0SCwA?Ewgl{j+cvtoy7cFsd~&x!NOus`x0hOlVb6U3kB+>F_PT2k zRvNs7ydIXXP!O6ncg$haG`ErSVa9~I;l>yCX;}#Jg?43aC&G`MV}M&^#mxmXv7JC! z`Cm*W>GVL{H&<|%QpuE`T%7EX+rZXq#UDVO)B z9@z2CeH1{wyBh<5H7kQH_kaF#Ym1s)w{dOcD$TIfYpz&vt)!@OG(=W0#w6Q1V;%bN z+lTij$^@B+gc*tH7f}dqsXsBxxb`fb|iHsa0rD`pdWLZWe5(3bQSganVxj2H< zg~4AQIrp| z>?Irq+OVkhGFgDJF_IV*;CdWX41uUs=S7lb1S1hN1Bk?8u$BlfXA=og1mawXp&%hu z=cQ&BpGtH_(bnb`J~;P3xMTH$UP4|E%NB3FF|AkomjJW_Xsn@ix9zSADwh81$;VSC zzxQ}_&zMwye^CnGP-l&;hb>xU(+DLEnMkljkPeq9K}M7Ohtf^g|K!%~o4UTT<#z3_ zd7Q&|PRuY3Bl9>``SH{1E=v*|jzTt|uP&``ySYm7M_FcM?1d3aF;sq?>WSr(caV?x+k3J__-2o_Q0H}{me zLLHO9Blbj@&c(Kq`i4eP;z(OUWa_2r33Zd~#jiq=80-jN8Um(mp|K$kh1`-@NEv zFqAOJJm{6n^01I70XPdM?`Ewe;1RC)Qmmw)@zmp)-sfKoJ$t5KX-m`C6+lBfr8Gzg z5rmKorDTLL^j@nyR!swPC$EXKIb}}2(zHi1y6wa>?1!#sHqC>z4zYvG`kNM zRA06XxHjRqpUtS~&LK*9f|Q3zn5U3g6E>7TArRU~F1BASD?W0$>|tT+l}IAnaFy)l-Ub}nTIevUZ&a$kk^GMfe??EiyX6S?d95NB2@`qmRBFj zW>5F__U7P*V0iX&S#w_t&Wpf#sq4aya74jDgN`2vapDNO_nY^As{`#)k4I#KrQoeEBH!0>QPHYCFr8m!6`) z`T+5GnQAXaAE2!9c$vb>G0w4xQjeF57_;XwE_u8xe@@QlywK)ajC%IsVVR(sFO!8Q zz<5|lSnxtq%29KIln2j-7TAWCHy?#w&rYV{rKc!7UZ%4bqtD}I8eWcFdX6>kdF$~~ rtDJ}m&hI>X@o?Uzh)07X^!)z-0RoLP2*QKe00000NkvXXu0mjfZBvSR literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/icons.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/icons.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/progress.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/success.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/attachment/images/success.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/background/background.js b/yshop-drink-vue3/public/UEditor22/dialogs/background/background.js new file mode 100644 index 0000000..9d63bad --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/background/background.js @@ -0,0 +1,376 @@ +(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"; + if(contentId == 'imgManager') { + initImagePanel(); + } + }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 initImagePanel() { + onlineImage = onlineImage || new OnlineImage('imageList'); + } + + /* 更新背景色设置面板 */ + 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); + }; + +})(); \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/background/images/bg.png b/yshop-drink-vue3/public/UEditor22/dialogs/background/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..580be0a01dff4c70c72f78a3f40186660ee8eee0 GIT binary patch literal 2810 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'+ this.point.name +'
    : '+ ( Math.round( this.point.percentage*100 ) / 100 ) +' %'; + } + } + } + } + } +]; diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/charts/charts.css b/yshop-drink-vue3/public/UEditor22/dialogs/charts/charts.css new file mode 100644 index 0000000..ac3c764 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/charts/charts.css @@ -0,0 +1,165 @@ +html, body { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + overflow-x: hidden; +} + +.main { + width: 100%; + overflow: hidden; +} + +.table-view { + height: 100%; + float: left; + margin: 20px; + width: 40%; +} + +.table-view .table-container { + width: 100%; + margin-bottom: 50px; + overflow: scroll; +} + +.table-view th { + padding: 5px 10px; + background-color: #F7F7F7; +} + +.table-view td { + width: 50px; + text-align: center; + padding:0; +} + +.table-container input { + width: 40px; + padding: 5px; + border: none; + outline: none; +} + +.table-view caption { + font-size: 18px; + text-align: left; +} + +.charts-view { + /*margin-left: 49%!important;*/ + width: 50%; + margin-left: 49%; + height: 400px; +} + +.charts-container { + border-left: 1px solid #c3c3c3; +} + +.charts-format fieldset { + padding-left: 20px; + margin-bottom: 50px; +} + +.charts-format legend { + padding-left: 10px; + padding-right: 10px; +} + +.format-item-container { + padding: 20px; +} + +.format-item-container label { + display: block; + margin: 10px 0; +} + +.charts-format .data-item { + border: 1px solid black; + outline: none; + padding: 2px 3px; +} + +/* 图表类型 */ + +.charts-type { + margin-top: 50px; + height: 300px; +} + +.scroll-view { + border: 1px solid #c3c3c3; + border-left: none; + border-right: none; + overflow: hidden; +} + +.scroll-container { + margin: 20px; + width: 100%; + overflow: hidden; +} + +.scroll-bed { + width: 10000px; + _margin-top: 20px; + -webkit-transition: margin-left .5s ease; + -moz-transition: margin-left .5s ease; + transition: margin-left .5s ease; +} + +.view-box { + display: inline-block; + *display: inline; + *zoom: 1; + margin-right: 20px; + border: 2px solid white; + line-height: 0; + overflow: hidden; + cursor: pointer; +} + +.view-box img { + border: 1px solid #cecece; +} + +.view-box.selected { + border-color: #7274A7; +} + +.button-container { + margin-bottom: 20px; + text-align: center; +} + +.button-container a { + display: inline-block; + width: 100px; + height: 25px; + line-height: 25px; + border: 1px solid #c2ccd1; + margin-right: 30px; + text-decoration: none; + color: black; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} + +.button-container a:HOVER { + background: #fcfcfc; +} + +.button-container a:ACTIVE { + border-top-color: #c2ccd1; + box-shadow:inset 0 5px 4px -4px rgba(49, 49, 64, 0.1); +} + +.edui-charts-not-data { + height: 100px; + line-height: 100px; + text-align: center; +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/charts/charts.html b/yshop-drink-vue3/public/UEditor22/dialogs/charts/charts.html new file mode 100644 index 0000000..735274f --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/charts/charts.html @@ -0,0 +1,89 @@ + + + + chart + + + + + +
    +
    +

    +
    +

    +
    +
    +
    + +
    + + +
    +
    +
    +
    + +
    + + + + +
    +
    +
    + +
    + +

    +
    +
    +
    + +
    + +

    +
    +
    +
    +
    +
    +
    +
    +
    +

    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + + + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/charts/charts.js b/yshop-drink-vue3/public/UEditor22/dialogs/charts/charts.js new file mode 100644 index 0000000..37344fd --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/charts/charts.js @@ -0,0 +1,519 @@ +/* + * 图片转换对话框脚本 + **/ + +var tableData = [], + //编辑器页面table + editorTable = null, + chartsConfig = window.typeConfig, + resizeTimer = null, + //初始默认图表类型 + currentChartType = 0; + +window.onload = function () { + + editorTable = domUtils.findParentByTagName( editor.selection.getRange().startContainer, 'table', true); + + //未找到表格, 显示错误页面 + if ( !editorTable ) { + document.body.innerHTML = "
    未找到数据
    "; + return; + } + + //初始化图表类型选择 + initChartsTypeView(); + renderTable( editorTable ); + initEvent(); + initUserConfig( editorTable.getAttribute( "data-chart" ) ); + $( "#scrollBed .view-box:eq("+ currentChartType +")" ).trigger( "click" ); + updateViewType( currentChartType ); + + dialog.addListener( "resize", function () { + + if ( resizeTimer != null ) { + window.clearTimeout( resizeTimer ); + } + + resizeTimer = window.setTimeout( function () { + + resizeTimer = null; + + renderCharts(); + + }, 500 ); + + } ); + +}; + +function initChartsTypeView () { + + var contents = []; + + for ( var i = 0, len = chartsConfig.length; i
    ' ); + + } + + $( "#scrollBed" ).html( contents.join( "" ) ); + +} + +//渲染table, 以便用户修改数据 +function renderTable ( table ) { + + var tableHtml = []; + + //构造数据 + for ( var i = 0, row; row = table.rows[ i ]; i++ ) { + + tableData[ i ] = []; + tableHtml[ i ] = []; + + for ( var j = 0, cell; cell = row.cells[ j ]; j++ ) { + + var value = getCellValue( cell ); + + if ( i > 0 && j > 0 ) { + value = +value; + } + + if ( i === 0 || j === 0 ) { + tableHtml[ i ].push( ''+ value +'' ); + } else { + tableHtml[ i ].push( '' ); + } + + tableData[ i ][ j ] = value; + + } + + tableHtml[ i ] = tableHtml[ i ].join( "" ); + + } + + //draw 表格 + $( "#tableContainer" ).html( ''+ tableHtml.join( "" ) +'
    ' ); + +} + +/* + * 根据表格已有的图表属性初始化当前图表属性 + */ +function initUserConfig ( config ) { + + var parsedConfig = {}; + + if ( !config ) { + return; + } + + config = config.split( ";" ); + + $.each( config, function ( index, item ) { + + item = item.split( ":" ); + parsedConfig[ item[ 0 ] ] = item[ 1 ]; + + } ); + + setUserConfig( parsedConfig ); + +} + +function initEvent () { + + var cacheValue = null, + //图表类型数 + typeViewCount = chartsConfig.length- 1, + $chartsTypeViewBox = $( '#scrollBed .view-box' ); + + $( ".charts-format" ).delegate( ".format-ctrl", "change", function () { + + renderCharts(); + + } ) + + $( ".table-view" ).delegate( ".data-item", "focus", function () { + + cacheValue = this.value; + + } ).delegate( ".data-item", "blur", function () { + + if ( this.value !== cacheValue ) { + renderCharts(); + } + + cacheValue = null; + + } ); + + $( "#buttonContainer" ).delegate( "a", "click", function (e) { + + e.preventDefault(); + + if ( this.getAttribute( "data-title" ) === 'prev' ) { + + if ( currentChartType > 0 ) { + currentChartType--; + updateViewType( currentChartType ); + } + + } else { + + if ( currentChartType < typeViewCount ) { + currentChartType++; + updateViewType( currentChartType ); + } + + } + + } ); + + //图表类型变化 + $( '#scrollBed' ).delegate( ".view-box", "click", function (e) { + + var index = $( this ).attr( "data-chart-type" ); + $chartsTypeViewBox.removeClass( "selected" ); + $( $chartsTypeViewBox[ index ] ).addClass( "selected" ); + + currentChartType = index | 0; + + //饼图, 禁用部分配置 + if ( currentChartType === chartsConfig.length - 1 ) { + + disableNotPieConfig(); + + //启用完整配置 + } else { + + enableNotPieConfig(); + + } + + renderCharts(); + + } ); + +} + +function renderCharts () { + + var data = collectData(); + + $('#chartsContainer').highcharts( $.extend( {}, chartsConfig[ currentChartType ], { + + credits: { + enabled: false + }, + exporting: { + enabled: false + }, + title: { + text: data.title, + x: -20 //center + }, + subtitle: { + text: data.subTitle, + x: -20 + }, + xAxis: { + title: { + text: data.xTitle + }, + categories: data.categories + }, + yAxis: { + title: { + text: data.yTitle + }, + plotLines: [{ + value: 0, + width: 1, + color: '#808080' + }] + }, + tooltip: { + enabled: true, + valueSuffix: data.suffix + }, + legend: { + layout: 'vertical', + align: 'right', + verticalAlign: 'middle', + borderWidth: 1 + }, + series: data.series + + } )); + +} + +function updateViewType ( index ) { + + $( "#scrollBed" ).css( 'marginLeft', -index*324+'px' ); + +} + +function collectData () { + + var form = document.forms[ 'data-form' ], + data = null; + + if ( currentChartType !== chartsConfig.length - 1 ) { + + data = getSeriesAndCategories(); + $.extend( data, getUserConfig() ); + + //饼图数据格式 + } else { + data = getSeriesForPieChart(); + data.title = form[ 'title' ].value; + data.suffix = form[ 'unit' ].value; + } + + return data; + +} + +/** + * 获取用户配置信息 + */ +function getUserConfig () { + + var form = document.forms[ 'data-form' ], + info = { + title: form[ 'title' ].value, + subTitle: form[ 'sub-title' ].value, + xTitle: form[ 'x-title' ].value, + yTitle: form[ 'y-title' ].value, + suffix: form[ 'unit' ].value, + //数据对齐方式 + tableDataFormat: getTableDataFormat (), + //饼图提示文字 + tip: $( "#tipInput" ).val() + }; + + return info; + +} + +function setUserConfig ( config ) { + + var form = document.forms[ 'data-form' ]; + + config.title && ( form[ 'title' ].value = config.title ); + config.subTitle && ( form[ 'sub-title' ].value = config.subTitle ); + config.xTitle && ( form[ 'x-title' ].value = config.xTitle ); + config.yTitle && ( form[ 'y-title' ].value = config.yTitle ); + config.suffix && ( form[ 'unit' ].value = config.suffix ); + config.dataFormat == "-1" && ( form[ 'charts-format' ][ 1 ].checked = true ); + config.tip && ( form[ 'tip' ].value = config.tip ); + currentChartType = config.chartType || 0; + +} + +function getSeriesAndCategories () { + + var form = document.forms[ 'data-form' ], + series = [], + categories = [], + tmp = [], + tableData = getTableData(); + + //反转数据 + if ( getTableDataFormat() === "-1" ) { + + for ( var i = 0, len = tableData.length; i < len; i++ ) { + + for ( var j = 0, jlen = tableData[ i ].length; j < jlen; j++ ) { + + if ( !tmp[ j ] ) { + tmp[ j ] = []; + } + + tmp[ j ][ i ] = tableData[ i ][ j ]; + + } + + } + + tableData = tmp; + + } + + categories = tableData[0].slice( 1 ); + + for ( var i = 1, data; data = tableData[ i ]; i++ ) { + + series.push( { + name: data[ 0 ], + data: data.slice( 1 ) + } ); + + } + + return { + series: series, + categories: categories + }; + +} + +/* + * 获取数据源数据对齐方式 + */ +function getTableDataFormat () { + + var form = document.forms[ 'data-form' ], + items = form['charts-format']; + + return items[ 0 ].checked ? items[ 0 ].value : items[ 1 ].value; + +} + +/* + * 禁用非饼图类型的配置项 + */ +function disableNotPieConfig() { + + updateConfigItem( 'disable' ); + +} + +/* + * 启用非饼图类型的配置项 + */ +function enableNotPieConfig() { + + updateConfigItem( 'enable' ); + +} + +function updateConfigItem ( value ) { + + var table = $( "#showTable" )[ 0 ], + isDisable = value === 'disable' ? true : false; + + //table中的input处理 + for ( var i = 2 , row; row = table.rows[ i ]; i++ ) { + + for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { + + $( "input", cell ).attr( "disabled", isDisable ); + + } + + } + + //其他项处理 + $( "input.not-pie-item" ).attr( "disabled", isDisable ); + $( "#tipInput" ).attr( "disabled", !isDisable ) + +} + +/* + * 获取饼图数据 + * 饼图的数据只取第一行的 + **/ +function getSeriesForPieChart () { + + var series = { + type: 'pie', + name: $("#tipInput").val(), + data: [] + }, + tableData = getTableData(); + + + for ( var j = 1, jlen = tableData[ 0 ].length; j < jlen; j++ ) { + + var title = tableData[ 0 ][ j ], + val = tableData[ 1 ][ j ]; + + series.data.push( [ title, val ] ); + + } + + return { + series: [ series ] + }; + +} + +function getTableData () { + + var table = document.getElementById( "showTable" ), + xCount = table.rows[0].cells.length - 1, + values = getTableInputValue(); + + for ( var i = 0, value; value = values[ i ]; i++ ) { + + tableData[ Math.floor( i / xCount ) + 1 ][ i % xCount + 1 ] = values[ i ]; + + } + + return tableData; + +} + +function getTableInputValue () { + + var table = document.getElementById( "showTable" ), + inputs = table.getElementsByTagName( "input" ), + values = []; + + for ( var i = 0, input; input = inputs[ i ]; i++ ) { + values.push( input.value | 0 ); + } + + return values; + +} + +function getCellValue ( cell ) { + + var value = utils.trim( ( cell.innerText || cell.textContent || '' ) ); + + return value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\s+|\s+$/g, '' ); + +} + + +//dialog确认事件 +dialog.onok = function () { + + //收集信息 + var form = document.forms[ 'data-form' ], + info = getUserConfig(); + + //添加图表类型 + info.chartType = currentChartType; + + //同步表格数据到编辑器 + syncTableData(); + + //执行图表命令 + editor.execCommand( 'charts', info ); + +}; + +/* + * 同步图表编辑视图的表格数据到编辑器里的原始表格 + */ +function syncTableData () { + + var tableData = getTableData(); + + for ( var i = 1, row; row = editorTable.rows[ i ]; i++ ) { + + for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { + + cell.innerHTML = tableData[ i ] [ j ]; + + } + + } + +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts0.png b/yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts0.png new file mode 100644 index 0000000000000000000000000000000000000000..9485e5ed8f83888e782eafae6f7505c79671a985 GIT binary patch literal 25306 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 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts2.png b/yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts2.png new file mode 100644 index 0000000000000000000000000000000000000000..7c91a39ffac43e0867bec1df89b73e10e0b28c43 GIT binary patch literal 23016 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 PFatGZEv0+~v#0+BCDM7e literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts4.png b/yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts4.png new file mode 100644 index 0000000000000000000000000000000000000000..742006adc9cee3c07b1a390da6991a84d1da99d6 GIT binary patch literal 8344 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 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts5.png b/yshop-drink-vue3/public/UEditor22/dialogs/charts/images/charts5.png new file mode 100644 index 0000000000000000000000000000000000000000..c49a29609d8e8f9bdf101e91021d40c1cb3d4175 GIT binary patch literal 47084 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'*4h4^s0#X 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 g*Z&=uhxp + + + + + + + + + +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/emotion/emotion.js b/yshop-drink-vue3/public/UEditor22/dialogs/emotion/emotion.js new file mode 100644 index 0000000..aa01380 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/0.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/bface.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/cface.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/fface.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/jxface2.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/neweditor-tab-bg.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/emotion/images/tface.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/gmap/gmap.html b/yshop-drink-vue3/public/UEditor22/dialogs/gmap/gmap.html new file mode 100644 index 0000000..4319a6f --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/gmap/gmap.html @@ -0,0 +1,89 @@ + + + + + + + + + + +
    + + + + + + +
    +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/help/help.css b/yshop-drink-vue3/public/UEditor22/dialogs/help/help.css new file mode 100644 index 0000000..39ade49 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/help/help.html b/yshop-drink-vue3/public/UEditor22/dialogs/help/help.html new file mode 100644 index 0000000..0d6f9ef --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/help/help.html @@ -0,0 +1,82 @@ + + + + 帮助 + + + + + +
    +
    + + +
    +
    +
    +

    UEditor

    +

    +

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ctrl+b
    ctrl+c
    ctrl+x
    ctrl+v
    ctrl+y
    ctrl+z
    ctrl+i
    ctrl+u
    ctrl+a
    shift+enter
    alt+z
    +
    +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/help/help.js b/yshop-drink-vue3/public/UEditor22/dialogs/help/help.js new file mode 100644 index 0000000..4ad9e76 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/image/image.css b/yshop-drink-vue3/public/UEditor22/dialogs/image/image.css new file mode 100644 index 0000000..33310ac --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/image/image.css @@ -0,0 +1,894 @@ +@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 { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); +} +#remote #url{ + width: 500px; + margin-bottom: 2px; +} +#remote #width, +#remote #height{ + width: 20px; + margin-left: 2px; + margin-right: 2px; +} +#remote #border, +#remote #vhSpace, +#remote #title{ + width: 180px; + margin-right: 5px; +} +#remote #lock{ +} +#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; +} + + +/* 图片搜索样式 */ +#search .searchBar { + width: 100%; + height: 30px; + margin: 10px 0 5px 0; + padding: 0; +} + +#search 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; +} +#search input.text:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); +} +#search input.searchTxt { + margin-left:5px; + padding-left: 5px; + background: #FFF; + width: 300px; + *width: 260px; + height: 21px; + line-height: 21px; + float: left; + dislay: block; +} + +#search .searchType { + width: 65px; + height: 28px; + padding:0; + line-height: 28px; + border: 1px solid #d7d7d7; + border-radius: 0; + vertical-align: top; + margin-left: 5px; + float: left; + dislay: block; +} + +#search #searchBtn, +#search #searchReset { + display: inline-block; + margin-bottom: 0; + margin-right: 5px; + padding: 4px 10px; + font-weight: 400; + text-align: center; + vertical-align: middle; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + font-size: 14px; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: top; + float: right; +} + +#search #searchBtn { + color: white; + border-color: #285e8e; + background-color: #3b97d7; +} +#search #searchReset { + color: #333; + border-color: #ccc; + background-color: #fff; +} +#search #searchBtn:hover { + background-color: #3276b1; +} +#search #searchReset:hover { + background-color: #eee; +} + +#search .msg { + margin-left: 5px; +} + +#search .searchList{ + width: 100%; + height: 300px; + overflow: hidden; + clear: both; +} +#search .searchList ul{ + margin:0; + padding:0; + list-style:none; + clear: both; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + zoom: 1; + position: relative; +} + +#search .searchList li { + list-style:none; + float: left; + display: block; + width: 115px; + margin: 5px 10px 5px 20px; + *margin: 5px 10px 5px 15px; + padding:0; + font-size: 12px; + box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + position: relative; + vertical-align: top; + text-align: center; + overflow: hidden; + cursor: pointer; + filter: alpha(Opacity=100); + -moz-opacity: 1; + opacity: 1; + border: 2px solid #eee; +} + +#search .searchList li.selected { + filter: alpha(Opacity=40); + -moz-opacity: 0.4; + opacity: 0.4; + border: 2px solid #00a0e9; +} + +#search .searchList li p { + background-color: #eee; + margin: 0; + padding: 0; + position: relative; + width:100%; + height:115px; + overflow: hidden; +} + +#search .searchList li p img { + cursor: pointer; + border: 0; +} + +#search .searchList li a { + color: #999; + border-top: 1px solid #F2F2F2; + background: #FAFAFA; + text-align: center; + display: block; + padding: 0 5px; + width: 105px; + height:32px; + line-height:32px; + white-space:nowrap; + text-overflow:ellipsis; + text-decoration: none; + overflow: hidden; + word-break: break-all; +} + +#search .searchList a:hover { + text-decoration: underline; + color: #333; +} +#search .searchList .clearFloat{ + clear: both; +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/image/image.html b/yshop-drink-vue3/public/UEditor22/dialogs/image/image.html new file mode 100644 index 0000000..81f45ad --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/image/image.html @@ -0,0 +1,120 @@ + + + + + ueditor图片对话框 + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    + + +
    +
    +
    +
    + +   px +   px + +
    +
    + + px +
    +
    + + px +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + 0% + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
      +
    • +
    +
    +
    + + +
    +
    +
    + + + + +
    +
    + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/image/image.js b/yshop-drink-vue3/public/UEditor22/dialogs/image/image.js new file mode 100644 index 0000000..b078d6a --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/image/image.js @@ -0,0 +1,1148 @@ +/** + * User: Jinqn + * Date: 14-04-08 + * Time: 下午16:34 + * 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片 + */ + +(function () { + + var remoteImage, + uploadImage, + onlineImage, + searchImage; + + window.onload = function () { + 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')); + }); + } + + var img = editor.selection.getRange().getClosedNode(); + if (img && img.tagName && img.tagName.toLowerCase() == 'img') { + setTabFocus('remote'); + } else { + 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 '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; + case 'search': + setAlign(editor.getOpt('imageManagerInsertAlign')); + searchImage = searchImage || new SearchImage(); + 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; + case 'search': + list = searchImage.getInsertList(); + remote = true; + 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(){ + updatePreview(); + if(locker.checked) { + var proportion =locker.getAttribute('data-proportion'); + $G('height').value = Math.round(this.value / proportion); + } else { + _this.updateLocker(); + } + }); + domUtils.on($G("height"), 'keyup', function(){ + updatePreview(); + if(locker.checked) { + var proportion =locker.getAttribute('data-proportion'); + $G('width').value = Math.round(this.value * proportion); + } else { + _this.updateLocker(); + } + }); + 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("word_img"), + 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 = parseInt($G('width').value, 10) || 0, + oh = parseInt($G('height').value, 10) || 0, + border = parseInt($G('border').value, 10) || 0, + title = $G('title').value, + preview = $G('preview'), + width, + height; + + url = utils.unhtmlForUrl(url); + title = utils.unhtml(title); + + 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']) { + return [{ + src: data['url'], + _src: data['url'], + width: data['width'] || '', + height: data['height'] || '', + border: data['border'] || '', + floatStyle: data['align'] || '', + vspace: data['vhSpace'] || '', + title: data['title'] || '', + alt: data['title'] || '', + style: "width:" + data['width'] + "px;height:" + data['height'] + "px;" + }]; + } 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 + 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) { + 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参数 + header['X_Requested_With'] = 'XMLHttpRequest'; + // HaoChuan9421 + if(editor.options.headers && Object.prototype.toString.apply(editor.options.headers) === "[object Object]"){ + for(var key in editor.options.headers){ + header[key] = editor.options.headers[key] + } + } + }); + + 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, + title: data.title, + 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; + } + }; + + /*搜索图片 */ + function SearchImage() { + this.init(); + } + SearchImage.prototype = { + init: function () { + this.initEvents(); + }, + initEvents: function(){ + var _this = this; + + /* 点击搜索按钮 */ + domUtils.on($G('searchBtn'), 'click', function(){ + var key = $G('searchTxt').value; + if(key && key != lang.searchRemind) { + _this.getImageData(); + } + }); + /* 点击清除妞 */ + domUtils.on($G('searchReset'), 'click', function(){ + $G('searchTxt').value = lang.searchRemind; + $G('searchListUl').innerHTML = ''; + $G('searchType').selectedIndex = 0; + }); + /* 搜索框聚焦 */ + domUtils.on($G('searchTxt'), 'focus', function(){ + var key = $G('searchTxt').value; + if(key && key == lang.searchRemind) { + $G('searchTxt').value = ''; + } + }); + /* 搜索框回车键搜索 */ + domUtils.on($G('searchTxt'), 'keydown', function(e){ + var keyCode = e.keyCode || e.which; + if (keyCode == 13) { + $G('searchBtn').click(); + } + }); + + /* 选中图片 */ + domUtils.on($G('searchList'), 'click', function(e){ + var target = e.target || e.srcElement, + li = target.parentNode.parentNode; + + if (li.tagName.toLowerCase() == 'li') { + if (domUtils.hasClass(li, 'selected')) { + domUtils.removeClasses(li, 'selected'); + } else { + domUtils.addClass(li, 'selected'); + } + } + }); + }, + encodeToGb2312:function (str){ + if(!str) return ''; + var strOut = "", + z = 'D2BBB6A18140C6DF814181428143CDF2D5C9C8FDC9CFCFC2D8A2B2BBD3EB8144D8A4B3F38145D7A8C7D2D8A7CAC08146C7F0B1FBD2B5B4D4B6ABCBBFD8A9814781488149B6AA814AC1BDD1CF814BC9A5D8AD814CB8F6D1BEE3DCD6D0814D814EB7E1814FB4AE8150C1D98151D8BC8152CDE8B5A4CEAAD6F78153C0F6BED9D8AF815481558156C4CB8157BEC38158D8B1C3B4D2E58159D6AECEDAD5A7BAF5B7A6C0D6815AC6B9C5D2C7C7815BB9D4815CB3CBD2D2815D815ED8BFBEC5C6F2D2B2CFB0CFE7815F816081618162CAE981638164D8C081658166816781688169816AC2F2C2D2816BC8E9816C816D816E816F817081718172817381748175C7AC8176817781788179817A817B817CC1CB817DD3E8D5F9817ECAC2B6FED8A1D3DABFF78180D4C6BBA5D8C1CEE5BEAE81818182D8A88183D1C7D0A9818481858186D8BDD9EFCDF6BFBA8187BDBBBAA5D2E0B2FABAE0C4B68188CFEDBEA9CDA4C1C18189818A818BC7D7D9F1818CD9F4818D818E818F8190C8CBD8E9819181928193D2DACAB2C8CAD8ECD8EAD8C6BDF6C6CDB3F08194D8EBBDF1BDE98195C8D4B4D381968197C2D88198B2D6D7D0CACBCBFBD5CCB8B6CFC98199819A819BD9DAD8F0C7AA819CD8EE819DB4FAC1EED2D4819E819FD8ED81A0D2C7D8EFC3C781A181A281A3D1F681A4D6D9D8F281A5D8F5BCFEBCDB81A681A781A8C8CE81A9B7DD81AAB7C281ABC6F381AC81AD81AE81AF81B081B181B2D8F8D2C181B381B4CEE9BCBFB7FCB7A5D0DD81B581B681B781B881B9D6DAD3C5BBEFBBE1D8F181BA81BBC9A1CEB0B4AB81BCD8F381BDC9CBD8F6C2D7D8F781BE81BFCEB1D8F981C081C181C2B2AEB9C081C3D9A381C4B0E981C5C1E681C6C9EC81C7CBC581C8CBC6D9A481C981CA81CB81CC81CDB5E881CE81CFB5AB81D081D181D281D381D481D5CEBBB5CDD7A1D7F4D3D381D6CCE581D7BACE81D8D9A2D9DCD3E0D8FDB7F0D7F7D8FED8FAD9A1C4E381D981DAD3B6D8F4D9DD81DBD8FB81DCC5E581DD81DEC0D081DF81E0D1F0B0DB81E181E2BCD1D9A681E3D9A581E481E581E681E7D9ACD9AE81E8D9ABCAB981E981EA81EBD9A9D6B681EC81ED81EEB3DED9A881EFC0FD81F0CACC81F1D9AA81F2D9A781F381F4D9B081F581F6B6B181F781F881F9B9A981FAD2C081FB81FCCFC081FD81FEC2C28240BDC4D5ECB2E0C7C8BFEBD9AD8241D9AF8242CEEABAEE82438244824582468247C7D682488249824A824B824C824D824E824F8250B1E3825182528253B4D9B6EDD9B48254825582568257BFA182588259825AD9DEC7CEC0FED9B8825B825C825D825E825FCBD7B7FD8260D9B58261D9B7B1A3D3E1D9B98262D0C58263D9B682648265D9B18266D9B2C1A9D9B382678268BCF3D0DEB8A98269BEE3826AD9BD826B826C826D826ED9BA826FB0B3827082718272D9C28273827482758276827782788279827A827B827C827D827E8280D9C4B1B68281D9BF82828283B5B98284BEF3828582868287CCC8BAF2D2D08288D9C38289828ABDE8828BB3AB828C828D828ED9C5BEEB828FD9C6D9BBC4DF8290D9BED9C1D9C0829182928293829482958296829782988299829A829BD5AE829CD6B5829DC7E3829E829F82A082A1D9C882A282A382A4BCD9D9CA82A582A682A7D9BC82A8D9CBC6AB82A982AA82AB82AC82ADD9C982AE82AF82B082B1D7F682B2CDA382B382B482B582B682B782B882B982BABDA182BB82BC82BD82BE82BF82C0D9CC82C182C282C382C482C582C682C782C882C9C5BCCDB582CA82CB82CCD9CD82CD82CED9C7B3A5BFFE82CF82D082D182D2B8B582D382D4C0FC82D582D682D782D8B0F882D982DA82DB82DC82DD82DE82DF82E082E182E282E382E482E582E682E782E882E982EA82EB82EC82EDB4F682EED9CE82EFD9CFB4A2D9D082F082F1B4DF82F282F382F482F582F6B0C182F782F882F982FA82FB82FC82FDD9D1C9B582FE8340834183428343834483458346834783488349834A834B834C834D834E834F83508351CFF1835283538354835583568357D9D283588359835AC1C5835B835C835D835E835F836083618362836383648365D9D6C9AE8366836783688369D9D5D9D4D9D7836A836B836C836DCBDB836EBDA9836F8370837183728373C6A7837483758376837783788379837A837B837C837DD9D3D9D8837E83808381D9D9838283838384838583868387C8E583888389838A838B838C838D838E838F839083918392839383948395C0DC8396839783988399839A839B839C839D839E839F83A083A183A283A383A483A583A683A783A883A983AA83AB83AC83AD83AE83AF83B083B183B2B6F9D8A3D4CA83B3D4AAD0D6B3E4D5D783B4CFC8B9E283B5BFCB83B6C3E283B783B883B9B6D283BA83BBCDC3D9EED9F083BC83BD83BEB5B383BFB6B583C083C183C283C383C4BEA483C583C6C8EB83C783C8C8AB83C983CAB0CBB9ABC1F9D9E283CBC0BCB9B283CCB9D8D0CBB1F8C6E4BEDFB5E4D7C883CDD1F8BCE6CADE83CE83CFBCBDD9E6D8E783D083D1C4DA83D283D3B8D4C8BD83D483D5B2E1D4D983D683D783D883D9C3B083DA83DBC3E1DAA2C8DF83DCD0B483DDBEFCC5A983DE83DF83E0B9DA83E1DAA383E2D4A9DAA483E383E483E583E683E7D9FBB6AC83E883E9B7EBB1F9D9FCB3E5BEF683EABFF6D2B1C0E483EB83EC83EDB6B3D9FED9FD83EE83EFBEBB83F083F183F2C6E083F3D7BCDAA183F4C1B983F5B5F2C1E883F683F7BCF583F8B4D583F983FA83FB83FC83FD83FE844084418442C1DD8443C4FD84448445BCB8B7B284468447B7EF84488449844A844B844C844DD9EC844EC6BE844FBFADBBCB84508451B5CA8452DBC9D0D78453CDB9B0BCB3F6BBF7DBCABAAF8454D4E4B5B6B5F3D8D6C8D084558456B7D6C7D0D8D78457BFAF84588459DBBBD8D8845A845BD0CCBBAE845C845D845EEBBEC1D0C1F5D4F2B8D5B4B4845FB3F584608461C9BE846284638464C5D0846584668467C5D9C0FB8468B1F08469D8D9B9CE846AB5BD846B846CD8DA846D846ED6C6CBA2C8AFC9B2B4CCBFCC846FB9F48470D8DBD8DCB6E7BCC1CCEA847184728473847484758476CFF78477D8DDC7B084788479B9D0BDA3847A847BCCDE847CC6CA847D847E848084818482D8E08483D8DE84848485D8DF848684878488B0FE8489BEE7848ACAA3BCF4848B848C848D848EB8B1848F8490B8EE849184928493849484958496849784988499849AD8E2849BBDCB849CD8E4D8E3849D849E849F84A084A1C5FC84A284A384A484A584A684A784A8D8E584A984AAD8E684AB84AC84AD84AE84AF84B084B1C1A684B2C8B0B0ECB9A6BCD3CEF1DBBDC1D384B384B484B584B6B6AFD6FAC5ACBDD9DBBEDBBF84B784B884B9C0F8BEA2C0CD84BA84BB84BC84BD84BE84BF84C084C184C284C3DBC0CAC684C484C584C6B2AA84C784C884C9D3C284CAC3E384CBD1AB84CC84CD84CE84CFDBC284D0C0D584D184D284D3DBC384D4BFB184D584D684D784D884D984DAC4BC84DB84DC84DD84DEC7DA84DF84E084E184E284E384E484E584E684E784E884E9DBC484EA84EB84EC84ED84EE84EF84F084F1D9E8C9D784F284F384F4B9B4CEF0D4C884F584F684F784F8B0FCB4D284F9D0D984FA84FB84FC84FDD9E984FEDECBD9EB8540854185428543D8B0BBAFB1B18544B3D7D8CE85458546D4D185478548BDB3BFEF8549CFBB854A854BD8D0854C854D854EB7CB854F85508551D8D185528553855485558556855785588559855A855BC6A5C7F8D2BD855C855DD8D2C4E4855ECAAE855FC7A78560D8A68561C9FDCEE7BBDCB0EB856285638564BBAAD0AD8565B1B0D7E4D7BF8566B5A5C2F4C4CF85678568B2A98569B2B7856AB1E5DFB2D5BCBFA8C2ACD8D5C2B1856BD8D4CED4856CDAE0856DCEC0856E856FD8B4C3AED3A1CEA38570BCB4C8B4C2D18571BEEDD0B68572DAE18573857485758576C7E485778578B3A78579B6F2CCFCC0FA857A857BC0F7857CD1B9D1E1D8C7857D857E85808581858285838584B2DE85858586C0E58587BAF185888589D8C8858AD4AD858B858CCFE1D8C9858DD8CACFC3858EB3F8BEC7858F859085918592D8CB8593859485958596859785988599DBCC859A859B859C859DC8A5859E859F85A0CFD885A1C8FEB2CE85A285A385A485A585A6D3D6B2E6BCB0D3D1CBABB7B485A785A885A9B7A285AA85ABCAE585ACC8A1CADCB1E4D0F085ADC5D185AE85AF85B0DBC5B5FE85B185B2BFDAB9C5BEE4C1ED85B3DFB6DFB5D6BBBDD0D5D9B0C8B6A3BFC9CCA8DFB3CAB7D3D285B4D8CFD2B6BAC5CBBECCBE85B5DFB7B5F0DFB485B685B785B8D3F585B9B3D4B8F785BADFBA85BBBACFBCAAB5F585BCCDACC3FBBAF3C0F4CDC2CFF2DFB8CFC585BDC2C0DFB9C2F085BE85BF85C0BEFD85C1C1DFCDCCD2F7B7CDDFC185C2DFC485C385C4B7F1B0C9B6D6B7D485C5BAACCCFDBFD4CBB1C6F485C6D6A8DFC585C7CEE2B3B385C885C9CEFCB4B585CACEC7BAF085CBCEE185CCD1BD85CD85CEDFC085CF85D0B4F485D1B3CA85D2B8E6DFBB85D385D485D585D6C4C585D7DFBCDFBDDFBEC5BBDFBFDFC2D4B1DFC385D8C7BACED885D985DA85DB85DC85DDC4D885DEDFCA85DFDFCF85E0D6DC85E185E285E385E485E585E685E785E8DFC9DFDACEB685E9BAC7DFCEDFC8C5DE85EA85EBC9EBBAF4C3FC85EC85EDBED785EEDFC685EFDFCD85F0C5D885F185F285F385F4D5A6BACD85F5BECCD3BDB8C085F6D6E485F7DFC7B9BEBFA785F885F9C1FCDFCBDFCC85FADFD085FB85FC85FD85FE8640DFDBDFE58641DFD7DFD6D7C9DFE3DFE4E5EBD2A7DFD28642BFA98643D4DB8644BFC8DFD4864586468647CFCC86488649DFDD864AD1CA864BDFDEB0A7C6B7DFD3864CBAE5864DB6DFCDDBB9FED4D5864E864FDFDFCFECB0A5DFE7DFD1D1C6DFD5DFD8DFD9DFDC8650BBA98651DFE0DFE18652DFE2DFE6DFE8D3B486538654865586568657B8E7C5B6DFEAC9DAC1A8C4C486588659BFDECFF8865A865B865CD5DCDFEE865D865E865F866086618662B2B88663BADFDFEC8664DBC18665D1E48666866786688669CBF4B4BD866AB0A6866B866C866D866E866FDFF1CCC6DFF286708671DFED867286738674867586768677DFE986788679867A867BDFEB867CDFEFDFF0BBBD867D867EDFF386808681DFF48682BBA38683CADBCEA8E0A7B3AA8684E0A6868586868687E0A186888689868A868BDFFE868CCDD9DFFC868DDFFA868EBFD0D7C4868FC9CC86908691DFF8B0A186928693869486958696DFFD869786988699869ADFFBE0A2869B869C869D869E869FE0A886A086A186A286A3B7C886A486A5C6A1C9B6C0B2DFF586A686A7C5BE86A8D8C4DFF9C4F686A986AA86AB86AC86AD86AEE0A3E0A4E0A5D0A586AF86B0E0B4CCE486B1E0B186B2BFA6E0AFCEB9E0ABC9C686B386B4C0AEE0AEBAEDBAB0E0A986B586B686B7DFF686B8E0B386B986BAE0B886BB86BC86BDB4ADE0B986BE86BFCFB2BAC886C0E0B086C186C286C386C486C586C686C7D0FA86C886C986CA86CB86CC86CD86CE86CF86D0E0AC86D1D4FB86D2DFF786D3C5E786D4E0AD86D5D3F786D6E0B6E0B786D786D886D986DA86DBE0C4D0E186DC86DD86DEE0BC86DF86E0E0C9E0CA86E186E286E3E0BEE0AAC9A4E0C186E4E0B286E586E686E786E886E9CAC8E0C386EAE0B586EBCECB86ECCBC3E0CDE0C6E0C286EDE0CB86EEE0BAE0BFE0C086EF86F0E0C586F186F2E0C7E0C886F3E0CC86F4E0BB86F586F686F786F886F9CBD4E0D586FAE0D6E0D286FB86FC86FD86FE87408741E0D0BCCE87428743E0D18744B8C2D8C587458746874787488749874A874B874CD0EA874D874EC2EF874F8750E0CFE0BD875187528753E0D4E0D387548755E0D78756875787588759E0DCE0D8875A875B875CD6F6B3B0875DD7EC875ECBBB875F8760E0DA8761CEFB876287638764BAD987658766876787688769876A876B876C876D876E876F8770E0E1E0DDD2AD87718772877387748775E0E287768777E0DBE0D9E0DF87788779E0E0877A877B877C877D877EE0DE8780E0E4878187828783C6F7D8ACD4EBE0E6CAC98784878587868787E0E587888789878A878BB8C1878C878D878E878FE0E7E0E887908791879287938794879587968797E0E9E0E387988799879A879B879C879D879EBABFCCE7879F87A087A1E0EA87A287A387A487A587A687A787A887A987AA87AB87AC87AD87AE87AF87B0CFF987B187B287B387B487B587B687B787B887B987BA87BBE0EB87BC87BD87BE87BF87C087C187C2C8C287C387C487C587C6BDC087C787C887C987CA87CB87CC87CD87CE87CF87D087D187D287D3C4D287D487D587D687D787D887D987DA87DB87DCE0EC87DD87DEE0ED87DF87E0C7F4CBC487E1E0EEBBD8D8B6D2F2E0EFCDC587E2B6DA87E387E487E587E687E787E8E0F187E9D4B087EA87EBC0A7B4D187EC87EDCEA7E0F087EE87EF87F0E0F2B9CC87F187F2B9FACDBCE0F387F387F487F5C6D4E0F487F6D4B287F7C8A6E0F6E0F587F887F987FA87FB87FC87FD87FE8840884188428843884488458846884788488849E0F7884A884BCDC1884C884D884ECAA5884F885088518852D4DADBD7DBD98853DBD8B9E7DBDCDBDDB5D888548855DBDA8856885788588859885ADBDBB3A1DBDF885B885CBBF8885DD6B7885EDBE0885F886088618862BEF988638864B7BB8865DBD0CCAEBFB2BBB5D7F8BFD38866886788688869886ABFE9886B886CBCE1CCB3DBDEB0D3CEEBB7D8D7B9C6C2886D886EC0A4886FCCB98870DBE7DBE1C6BADBE38871DBE88872C5F7887388748875DBEA88768877DBE9BFC088788879887ADBE6DBE5887B887C887D887E8880B4B9C0ACC2A2DBE2DBE48881888288838884D0CDDBED88858886888788888889C0DDDBF2888A888B888C888D888E888F8890B6E28891889288938894DBF3DBD2B9B8D4ABDBEC8895BFD1DBF08896DBD18897B5E68898DBEBBFE58899889A889BDBEE889CDBF1889D889E889FDBF988A088A188A288A388A488A588A688A788A8B9A1B0A388A988AA88AB88AC88AD88AE88AFC2F188B088B1B3C7DBEF88B288B3DBF888B4C6D2DBF488B588B6DBF5DBF7DBF688B788B8DBFE88B9D3F2B2BA88BA88BB88BCDBFD88BD88BE88BF88C088C188C288C388C4DCA488C5DBFB88C688C788C888C9DBFA88CA88CB88CCDBFCC5E0BBF988CD88CEDCA388CF88D0DCA588D1CCC388D288D388D4B6D1DDC088D588D688D7DCA188D8DCA288D988DA88DBC7B588DC88DD88DEB6E988DF88E088E1DCA788E288E388E488E5DCA688E6DCA9B1A488E788E8B5CC88E988EA88EB88EC88EDBFB088EE88EF88F088F188F2D1DF88F388F488F588F6B6C288F788F888F988FA88FB88FC88FD88FE894089418942894389448945DCA88946894789488949894A894B894CCBFAEBF3894D894E894FCBDC89508951CBFE895289538954CCC189558956895789588959C8FB895A895B895C895D895E895FDCAA89608961896289638964CCEEDCAB89658966896789688969896A896B896C896D896E896F897089718972897389748975DBD38976DCAFDCAC8977BEB38978CAFB8979897A897BDCAD897C897D897E89808981898289838984C9CAC4B989858986898789888989C7BDDCAE898A898B898CD4F6D0E6898D898E898F89908991899289938994C4ABB6D589958996899789988999899A899B899C899D899E899F89A089A189A289A389A489A589A6DBD489A789A889A989AAB1DA89AB89AC89ADDBD589AE89AF89B089B189B289B389B489B589B689B789B8DBD689B989BA89BBBABE89BC89BD89BE89BF89C089C189C289C389C489C589C689C789C889C9C8C089CA89CB89CC89CD89CE89CFCABFC8C989D0D7B389D1C9F989D289D3BFC789D489D5BAF889D689D7D2BC89D889D989DA89DB89DC89DD89DE89DFE2BA89E0B4A689E189E2B1B889E389E489E589E689E7B8B489E8CFC489E989EA89EB89ECD9E7CFA6CDE289ED89EED9EDB6E089EFD2B989F089F1B9BB89F289F389F489F5E2B9E2B789F6B4F389F7CCECCCABB7F289F8D8B2D1EBBABB89F9CAA789FA89FBCDB789FC89FDD2C4BFE4BCD0B6E189FEDEC58A408A418A428A43DEC6DBBC8A44D1D98A458A46C6E6C4CEB7EE8A47B7DC8A488A49BFFCD7E08A4AC6F58A4B8A4CB1BCDEC8BDB1CCD7DECA8A4DDEC98A4E8A4F8A508A518A52B5EC8A53C9DD8A548A55B0C28A568A578A588A598A5A8A5B8A5C8A5D8A5E8A5F8A608A618A62C5AEC5AB8A63C4CC8A64BCE9CBFD8A658A668A67BAC38A688A698A6AE5F9C8E7E5FACDFD8A6BD7B1B8BEC2E88A6CC8D18A6D8A6EE5FB8A6F8A708A718A72B6CABCCB8A738A74D1FDE6A18A75C3EE8A768A778A788A79E6A48A7A8A7B8A7C8A7DE5FEE6A5CDD78A7E8A80B7C1E5FCE5FDE6A38A818A82C4DDE6A88A838A84E6A78A858A868A878A888A898A8AC3C38A8BC6DE8A8C8A8DE6AA8A8E8A8F8A908A918A928A938A94C4B78A958A968A97E6A2CABC8A988A998A9A8A9BBDE3B9C3E6A6D0D5CEAF8A9C8A9DE6A9E6B08A9ED2A68A9FBDAAE6AD8AA08AA18AA28AA38AA4E6AF8AA5C0D18AA68AA7D2CC8AA88AA98AAABCA78AAB8AAC8AAD8AAE8AAF8AB08AB18AB28AB38AB48AB58AB6E6B18AB7D2F68AB88AB98ABAD7CB8ABBCDFE8ABCCDDEC2A6E6ABE6ACBDBFE6AEE6B38ABD8ABEE6B28ABF8AC08AC18AC2E6B68AC3E6B88AC48AC58AC68AC7C4EF8AC88AC98ACAC4C88ACB8ACCBEEAC9EF8ACD8ACEE6B78ACFB6F08AD08AD18AD2C3E48AD38AD48AD58AD68AD78AD88AD9D3E9E6B48ADAE6B58ADBC8A28ADC8ADD8ADE8ADF8AE0E6BD8AE18AE28AE3E6B98AE48AE58AE68AE78AE8C6C58AE98AEACDF1E6BB8AEB8AEC8AED8AEE8AEF8AF08AF18AF28AF38AF4E6BC8AF58AF68AF78AF8BBE98AF98AFA8AFB8AFC8AFD8AFE8B40E6BE8B418B428B438B44E6BA8B458B46C0B78B478B488B498B4A8B4B8B4C8B4D8B4E8B4FD3A4E6BFC9F4E6C38B508B51E6C48B528B538B548B55D0F68B568B578B588B598B5A8B5B8B5C8B5D8B5E8B5F8B608B618B628B638B648B658B668B67C3BD8B688B698B6A8B6B8B6C8B6D8B6EC3C4E6C28B6F8B708B718B728B738B748B758B768B778B788B798B7A8B7B8B7CE6C18B7D8B7E8B808B818B828B838B84E6C7CFB18B85EBF48B868B87E6CA8B888B898B8A8B8B8B8CE6C58B8D8B8EBCDEC9A98B8F8B908B918B928B938B94BCB58B958B96CFD38B978B988B998B9A8B9BE6C88B9CE6C98B9DE6CE8B9EE6D08B9F8BA08BA1E6D18BA28BA38BA4E6CBB5D58BA5E6CC8BA68BA7E6CF8BA88BA9C4DB8BAAE6C68BAB8BAC8BAD8BAE8BAFE6CD8BB08BB18BB28BB38BB48BB58BB68BB78BB88BB98BBA8BBB8BBC8BBD8BBE8BBF8BC08BC18BC28BC38BC48BC58BC6E6D28BC78BC88BC98BCA8BCB8BCC8BCD8BCE8BCF8BD08BD18BD2E6D4E6D38BD38BD48BD58BD68BD78BD88BD98BDA8BDB8BDC8BDD8BDE8BDF8BE08BE18BE28BE38BE48BE58BE68BE78BE88BE98BEA8BEB8BECE6D58BEDD9F88BEE8BEFE6D68BF08BF18BF28BF38BF48BF58BF68BF7E6D78BF88BF98BFA8BFB8BFC8BFD8BFE8C408C418C428C438C448C458C468C47D7D3E6DD8C48E6DEBFD7D4D08C49D7D6B4E6CBEFE6DAD8C3D7CED0A28C4AC3CF8C4B8C4CE6DFBCBEB9C2E6DBD1A78C4D8C4EBAA2C2CF8C4FD8AB8C508C518C52CAEBE5EE8C53E6DC8C54B7F58C558C568C578C58C8E68C598C5AC4F58C5B8C5CE5B2C4FE8C5DCBFCE5B3D5AC8C5ED3EECAD8B0B28C5FCBCECDEA8C608C61BAEA8C628C638C64E5B58C65E5B48C66D7DAB9D9D6E6B6A8CDF0D2CBB1A6CAB58C67B3E8C9F3BFCDD0FBCAD2E5B6BBC28C688C698C6ACFDCB9AC8C6B8C6C8C6D8C6ED4D78C6F8C70BAA6D1E7CFFCBCD28C71E5B7C8DD8C728C738C74BFEDB1F6CBDE8C758C76BCC58C77BCC4D2FAC3DCBFDC8C788C798C7A8C7BB8BB8C7C8C7D8C7EC3C28C80BAAED4A28C818C828C838C848C858C868C878C888C89C7DEC4AFB2EC8C8AB9D18C8B8C8CE5BBC1C88C8D8C8ED5AF8C8F8C908C918C928C93E5BC8C94E5BE8C958C968C978C988C998C9A8C9BB4E7B6D4CBC2D1B0B5BC8C9C8C9DCAD98C9EB7E28C9F8CA0C9E48CA1BDAB8CA28CA3CEBED7F08CA48CA58CA68CA7D0A18CA8C9D98CA98CAAB6FBE6D8BCE28CABB3BE8CACC9D08CADE6D9B3A28CAE8CAF8CB08CB1DECC8CB2D3C8DECD8CB3D2A28CB48CB58CB68CB7DECE8CB88CB98CBA8CBBBECD8CBC8CBDDECF8CBE8CBF8CC0CAACD2FCB3DFE5EAC4E1BEA1CEB2C4F2BED6C6A8B2E38CC18CC2BED38CC38CC4C7FCCCEBBDECCEDD8CC58CC6CABAC6C1E5ECD0BC8CC78CC88CC9D5B98CCA8CCB8CCCE5ED8CCD8CCE8CCF8CD0CAF48CD1CDC0C2C58CD2E5EF8CD3C2C4E5F08CD48CD58CD68CD78CD88CD98CDAE5F8CDCD8CDBC9BD8CDC8CDD8CDE8CDF8CE08CE18CE2D2D9E1A88CE38CE48CE58CE6D3EC8CE7CBEAC6F18CE88CE98CEA8CEB8CECE1AC8CED8CEE8CEFE1A7E1A98CF08CF1E1AAE1AF8CF28CF3B2ED8CF4E1ABB8DAE1ADE1AEE1B0B5BAE1B18CF58CF68CF78CF88CF9E1B3E1B88CFA8CFB8CFC8CFD8CFED1D28D40E1B6E1B5C1EB8D418D428D43E1B78D44D4C08D45E1B28D46E1BAB0B68D478D488D498D4AE1B48D4BBFF98D4CE1B98D4D8D4EE1BB8D4F8D508D518D528D538D54E1BE8D558D568D578D588D598D5AE1BC8D5B8D5C8D5D8D5E8D5F8D60D6C58D618D628D638D648D658D668D67CFBF8D688D69E1BDE1BFC2CD8D6AB6EB8D6BD3F88D6C8D6DC7CD8D6E8D6FB7E58D708D718D728D738D748D758D768D778D788D79BEFE8D7A8D7B8D7C8D7D8D7E8D80E1C0E1C18D818D82E1C7B3E78D838D848D858D868D878D88C6E98D898D8A8D8B8D8C8D8DB4DE8D8ED1C28D8F8D908D918D92E1C88D938D94E1C68D958D968D978D988D99E1C58D9AE1C3E1C28D9BB1C08D9C8D9D8D9ED5B8E1C48D9F8DA08DA18DA28DA3E1CB8DA48DA58DA68DA78DA88DA98DAA8DABE1CCE1CA8DAC8DAD8DAE8DAF8DB08DB18DB28DB3EFFA8DB48DB5E1D3E1D2C7B68DB68DB78DB88DB98DBA8DBB8DBC8DBD8DBE8DBF8DC0E1C98DC18DC2E1CE8DC3E1D08DC48DC58DC68DC78DC88DC98DCA8DCB8DCC8DCD8DCEE1D48DCFE1D1E1CD8DD08DD1E1CF8DD28DD38DD48DD5E1D58DD68DD78DD88DD98DDA8DDB8DDC8DDD8DDE8DDF8DE08DE18DE2E1D68DE38DE48DE58DE68DE78DE88DE98DEA8DEB8DEC8DED8DEE8DEF8DF08DF18DF28DF38DF48DF58DF68DF78DF8E1D78DF98DFA8DFBE1D88DFC8DFD8DFE8E408E418E428E438E448E458E468E478E488E498E4A8E4B8E4C8E4D8E4E8E4F8E508E518E528E538E548E55E1DA8E568E578E588E598E5A8E5B8E5C8E5D8E5E8E5F8E608E618E62E1DB8E638E648E658E668E678E688E69CEA18E6A8E6B8E6C8E6D8E6E8E6F8E708E718E728E738E748E758E76E7DD8E77B4A8D6DD8E788E79D1B2B3B28E7A8E7BB9A4D7F3C7C9BEDEB9AE8E7CCED78E7D8E7EB2EEDBCF8E80BCBAD2D1CBC8B0CD8E818E82CFEF8E838E848E858E868E87D9E3BDED8E888E89B1D2CAD0B2BC8E8ACBA7B7AB8E8BCAA68E8C8E8D8E8ECFA38E8F8E90E0F8D5CAE0FB8E918E92E0FAC5C1CCFB8E93C1B1E0F9D6E3B2AFD6C4B5DB8E948E958E968E978E988E998E9A8E9BB4F8D6A18E9C8E9D8E9E8E9F8EA0CFAFB0EF8EA18EA2E0FC8EA38EA48EA58EA68EA7E1A1B3A38EA88EA9E0FDE0FEC3B18EAA8EAB8EAC8EADC3DD8EAEE1A2B7F98EAF8EB08EB18EB28EB38EB4BBCF8EB58EB68EB78EB88EB98EBA8EBBE1A3C4BB8EBC8EBD8EBE8EBF8EC0E1A48EC18EC2E1A58EC38EC4E1A6B4B18EC58EC68EC78EC88EC98ECA8ECB8ECC8ECD8ECE8ECF8ED08ED18ED28ED3B8C9C6BDC4EA8ED4B2A28ED5D0D28ED6E7DBBBC3D3D7D3C48ED7B9E3E2CF8ED88ED98EDAD7AF8EDBC7ECB1D38EDC8EDDB4B2E2D18EDE8EDF8EE0D0F2C2AEE2D08EE1BFE2D3A6B5D7E2D2B5EA8EE2C3EDB8FD8EE3B8AE8EE4C5D3B7CFE2D48EE58EE68EE78EE8E2D3B6C8D7F98EE98EEA8EEB8EEC8EEDCDA58EEE8EEF8EF08EF18EF2E2D88EF3E2D6CAFCBFB5D3B9E2D58EF48EF58EF68EF7E2D78EF88EF98EFA8EFB8EFC8EFD8EFE8F408F418F42C1AEC0C88F438F448F458F468F478F48E2DBE2DAC0AA8F498F4AC1CE8F4B8F4C8F4D8F4EE2DC8F4F8F508F518F528F538F548F558F568F578F588F598F5AE2DD8F5BE2DE8F5C8F5D8F5E8F5F8F608F618F628F638F64DBC88F65D1D3CDA28F668F67BDA88F688F698F6ADEC3D8A5BFAADBCDD2ECC6FAC5AA8F6B8F6C8F6DDEC48F6EB1D7DFAE8F6F8F708F71CABD8F72DFB18F73B9AD8F74D2FD8F75B8A5BAEB8F768F77B3DA8F788F798F7AB5DCD5C58F7B8F7C8F7D8F7EC3D6CFD2BBA18F80E5F3E5F28F818F82E5F48F83CDE48F84C8F58F858F868F878F888F898F8A8F8BB5AFC7BF8F8CE5F68F8D8F8E8F8FECB08F908F918F928F938F948F958F968F978F988F998F9A8F9B8F9C8F9D8F9EE5E68F9FB9E9B5B18FA0C2BCE5E8E5E7E5E98FA18FA28FA38FA4D2CD8FA58FA68FA7E1EAD0CE8FA8CDAE8FA9D1E58FAA8FABB2CAB1EB8FACB1F2C5ED8FAD8FAED5C3D3B08FAFE1DC8FB08FB18FB2E1DD8FB3D2DB8FB4B3B9B1CB8FB58FB68FB7CDF9D5F7E1DE8FB8BEB6B4FD8FB9E1DFBADCE1E0BBB2C2C9E1E18FBA8FBB8FBCD0EC8FBDCDBD8FBE8FBFE1E28FC0B5C3C5C7E1E38FC18FC2E1E48FC38FC48FC58FC6D3F98FC78FC88FC98FCA8FCB8FCCE1E58FCDD1AD8FCE8FCFE1E6CEA28FD08FD18FD28FD38FD48FD5E1E78FD6B5C28FD78FD88FD98FDAE1E8BBD58FDB8FDC8FDD8FDE8FDFD0C4E2E0B1D8D2E48FE08FE1E2E18FE28FE3BCC9C8CC8FE4E2E3ECFEECFDDFAF8FE58FE68FE7E2E2D6BECDFCC3A68FE88FE98FEAE3C38FEB8FECD6D2E2E78FED8FEEE2E88FEF8FF0D3C78FF18FF2E2ECBFEC8FF3E2EDE2E58FF48FF5B3C08FF68FF78FF8C4EE8FF98FFAE2EE8FFB8FFCD0C38FFDBAF6E2E9B7DEBBB3CCACCBCBE2E4E2E6E2EAE2EB8FFE90409041E2F790429043E2F4D4F5E2F390449045C5AD9046D5FAC5C2B2C090479048E2EF9049E2F2C1AFCBBC904A904BB5A1E2F9904C904D904EBCB1E2F1D0D4D4B9E2F5B9D6E2F6904F90509051C7D390529053905490559056E2F0905790589059905A905BD7DCEDA1905C905DE2F8905EEDA5E2FECAD1905F906090619062906390649065C1B59066BBD090679068BFD69069BAE3906A906BCBA1906C906D906EEDA6EDA3906F9070EDA29071907290739074BBD6EDA7D0F490759076EDA4BADEB6F7E3A1B6B2CCF1B9A79077CFA2C7A190789079BFD2907A907BB6F1907CE2FAE2FBE2FDE2FCC4D5E3A2907DD3C1907E90809081E3A7C7C49082908390849085CFA490869087E3A9BAB790889089908A908BE3A8908CBBDA908DE3A3908E908F9090E3A4E3AA9091E3A69092CEF2D3C690939094BBBC90959096D4C39097C4FA90989099EDA8D0FCE3A5909AC3F5909BE3ADB1AF909CE3B2909D909E909FBCC290A090A1E3ACB5BF90A290A390A490A590A690A790A890A9C7E9E3B090AA90AB90ACBEAACDEF90AD90AE90AF90B090B1BBF390B290B390B4CCE890B590B6E3AF90B7E3B190B8CFA7E3AE90B9CEA9BBDD90BA90BB90BC90BD90BEB5EBBEE5B2D2B3CD90BFB1B9E3ABB2D1B5ACB9DFB6E890C090C1CFEBE3B790C2BBCC90C390C4C8C7D0CA90C590C690C790C890C9E3B8B3EE90CA90CB90CC90CDEDA990CED3FAD3E490CF90D090D1EDAAE3B9D2E290D290D390D490D590D6E3B590D790D890D990DAD3DE90DB90DC90DD90DEB8D0E3B390DF90E0E3B6B7DF90E1E3B4C0A290E290E390E4E3BA90E590E690E790E890E990EA90EB90EC90ED90EE90EF90F090F190F290F390F490F590F690F7D4B890F890F990FA90FB90FC90FD90FE9140B4C89141E3BB9142BBC59143C9F791449145C9E5914691479148C4BD9149914A914B914C914D914E914FEDAB9150915191529153C2FD9154915591569157BBDBBFAE91589159915A915B915C915D915ECEBF915F916091619162E3BC9163BFB6916491659166916791689169916A916B916C916D916E916F9170917191729173917491759176B1EF91779178D4F79179917A917B917C917DE3BE917E9180918191829183918491859186EDAD918791889189918A918B918C918D918E918FE3BFBAA9EDAC91909191E3BD91929193919491959196919791989199919A919BE3C0919C919D919E919F91A091A1BAB691A291A391A4B6AE91A591A691A791A891A9D0B891AAB0C3EDAE91AB91AC91AD91AE91AFEDAFC0C191B0E3C191B191B291B391B491B591B691B791B891B991BA91BB91BC91BD91BE91BF91C091C1C5B391C291C391C491C591C691C791C891C991CA91CB91CC91CD91CE91CFE3C291D091D191D291D391D491D591D691D791D8DCB291D991DA91DB91DC91DD91DEEDB091DFB8EA91E0CEECEAA7D0E7CAF9C8D6CFB7B3C9CED2BDE491E191E2E3DEBBF2EAA8D5BD91E3C6DDEAA991E491E591E6EAAA91E7EAACEAAB91E8EAAEEAAD91E991EA91EB91ECBDD891EDEAAF91EEC2BE91EF91F091F191F2B4C1B4F791F391F4BBA791F591F691F791F891F9ECE6ECE5B7BFCBF9B1E291FAECE791FB91FC91FDC9C8ECE8ECE991FECAD6DED0B2C5D4FA92409241C6CBB0C7B4F2C8D3924292439244CDD092459246BFB8924792489249924A924B924C924DBFDB924E924FC7A4D6B49250C0A9DED1C9A8D1EFC5A4B0E7B3B6C8C592519252B0E292539254B7F692559256C5FA92579258B6F39259D5D2B3D0BCBC925A925B925CB3AD925D925E925F9260BEF1B0D1926192629263926492659266D2D6CAE3D7A59267CDB6B6B6BFB9D5DB9268B8A7C5D79269926A926BDED2BFD9C2D5C7C0926CBBA4B1A8926D926EC5EA926F9270C5FBCCA79271927292739274B1A7927592769277B5D692789279927AC4A8927BDED3D1BAB3E9927CC3F2927D927EB7F79280D6F4B5A3B2F0C4B4C4E9C0ADDED49281B0E8C5C4C1E09282B9D59283BEDCCDD8B0CE9284CDCFDED6BED0D7BEDED5D5D0B0DD92859286C4E292879288C2A3BCF09289D3B5C0B9C5A1B2A6D4F1928A928BC0A8CAC3DED7D5FC928CB9B0928DC8ADCBA9928EDED9BFBD928F929092919292C6B4D7A7CAB0C4C39293B3D6B9D29294929592969297D6B8EAFCB0B492989299929A929BBFE6929C929DCCF4929E929F92A092A1CDDA92A292A392A4D6BFC2CE92A5CECECCA2D0AEC4D3B5B2DED8D5F5BCB7BBD392A692A7B0A492A8C5B2B4EC92A992AA92ABD5F192AC92ADEAFD92AE92AF92B092B192B292B3DEDACDA692B492B5CDEC92B692B792B892B9CEE6DEDC92BACDB1C0A692BB92BCD7BD92BDDEDBB0C6BAB4C9D3C4F3BEE892BE92BF92C092C1B2B692C292C392C492C592C692C792C892C9C0CCCBF092CABCF1BBBBB5B792CB92CC92CDC5F592CEDEE692CF92D092D1DEE3BEDD92D292D3DEDF92D492D592D692D7B4B7BDDD92D892D9DEE0C4ED92DA92DB92DC92DDCFC692DEB5E092DF92E092E192E2B6DECADAB5F4DEE592E3D5C692E4DEE1CCCDC6FE92E5C5C592E692E792E8D2B492E9BEF292EA92EB92EC92ED92EE92EF92F0C2D392F1CCBDB3B892F2BDD392F3BFD8CDC6D1DAB4EB92F4DEE4DEDDDEE792F5EAFE92F692F7C2B0DEE292F892F9D6C0B5A792FAB2F492FBDEE892FCDEF292FD92FE934093419342DEED9343DEF193449345C8E0934693479348D7E1DEEFC3E8CCE19349B2E5934A934B934CD2BE934D934E934F9350935193529353DEEE9354DEEBCED59355B4A79356935793589359935ABFABBEBE935B935CBDD2935D935E935F9360DEE99361D4AE9362DEDE9363DEEA9364936593669367C0BF9368DEECB2F3B8E9C2A79369936ABDC1936B936C936D936E936FDEF5DEF893709371B2ABB4A493729373B4EAC9A6937493759376937793789379DEF6CBD1937AB8E3937BDEF7DEFA937C937D937E9380DEF9938193829383CCC29384B0E1B4EE93859386938793889389938AE5BA938B938C938D938E938FD0AF93909391B2EB9392EBA19393DEF493949395C9E3DEF3B0DAD2A1B1F79396CCAF939793989399939A939B939C939DDEF0939ECBA4939F93A093A1D5AA93A293A393A493A593A6DEFB93A793A893A993AA93AB93AC93AD93AEB4DD93AFC4A693B093B193B2DEFD93B393B493B593B693B793B893B993BA93BB93BCC3FEC4A1DFA193BD93BE93BF93C093C193C293C3C1CC93C4DEFCBEEF93C5C6B293C693C793C893C993CA93CB93CC93CD93CEB3C5C8F693CF93D0CBBADEFE93D193D2DFA493D393D493D593D6D7B293D793D893D993DA93DBB3B793DC93DD93DE93DFC1C393E093E1C7CBB2A5B4E993E2D7AB93E393E493E593E6C4EC93E7DFA2DFA393E8DFA593E9BAB393EA93EB93ECDFA693EDC0DE93EE93EFC9C393F093F193F293F393F493F593F6B2D9C7E693F7DFA793F8C7DC93F993FA93FB93FCDFA8EBA293FD93FE944094419442CBD3944394449445DFAA9446DFA99447B2C194489449944A944B944C944D944E944F9450945194529453945494559456945794589459945A945B945C945D945E945F9460C5CA94619462946394649465946694679468DFAB9469946A946B946C946D946E946F9470D4DC94719472947394749475C8C19476947794789479947A947B947C947D947E948094819482DFAC94839484948594869487BEF094889489DFADD6A7948A948B948C948DEAB7EBB6CAD5948ED8FCB8C4948FB9A594909491B7C5D5FE94929493949494959496B9CA94979498D0A7F4CD9499949AB5D0949B949CC3F4949DBEC8949E949F94A0EBB7B0BD94A194A2BDCC94A3C1B294A4B1D6B3A894A594A694A7B8D2C9A294A894A9B6D894AA94AB94AC94ADEBB8BEB494AE94AF94B0CAFD94B1C7C394B2D5FB94B394B4B7F394B594B694B794B894B994BA94BB94BC94BD94BE94BF94C094C194C294C3CEC494C494C594C6D5ABB1F394C794C894C9ECB3B0DF94CAECB594CB94CC94CDB6B794CEC1CF94CFF5FAD0B194D094D1D5E594D2CED394D394D4BDEFB3E294D5B8AB94D6D5B694D7EDBD94D8B6CF94D9CBB9D0C294DA94DB94DC94DD94DE94DF94E094E1B7BD94E294E3ECB6CAA994E494E594E6C5D494E7ECB9ECB8C2C3ECB794E894E994EA94EBD0FDECBA94ECECBBD7E594ED94EEECBC94EF94F094F1ECBDC6EC94F294F394F494F594F694F794F894F9CEDE94FABCC894FB94FCC8D5B5A9BEC9D6BCD4E794FD94FED1AED0F1EAB8EAB9EABABAB59540954195429543CAB1BFF595449545CDFA9546954795489549954AEAC0954BB0BAEABE954C954DC0A5954E954F9550EABB9551B2FD9552C3F7BBE8955395549555D2D7CEF4EABF955695579558EABC9559955A955BEAC3955CD0C7D3B3955D955E955F9560B4BA9561C3C1D7F29562956395649565D5D19566CAC79567EAC595689569EAC4EAC7EAC6956A956B956C956D956ED6E7956FCFD495709571EACB9572BBCE9573957495759576957795789579BDFAC9CE957A957BEACC957C957DC9B9CFFEEACAD4CEEACDEACF957E9580CDED9581958295839584EAC99585EACE95869587CEEE9588BBDE9589B3BF958A958B958C958D958EC6D5BEB0CEFA958F95909591C7E79592BEA7EAD095939594D6C7959595969597C1C095989599959AD4DD959BEAD1959C959DCFBE959E959F95A095A1EAD295A295A395A495A5CAEE95A695A795A895A9C5AFB0B595AA95AB95AC95AD95AEEAD495AF95B095B195B295B395B495B595B695B7EAD3F4DF95B895B995BA95BB95BCC4BA95BD95BE95BF95C095C1B1A995C295C395C495C5E5DF95C695C795C895C9EAD595CA95CB95CC95CD95CE95CF95D095D195D295D395D495D595D695D795D895D995DA95DB95DC95DD95DE95DF95E095E195E295E3CAEF95E4EAD6EAD7C6D895E595E695E795E895E995EA95EB95ECEAD895ED95EEEAD995EF95F095F195F295F395F4D4BB95F5C7FAD2B7B8FC95F695F7EAC295F8B2DC95F995FAC2FC95FBD4F8CCE6D7EE95FC95FD95FE9640964196429643D4C2D3D0EBC3C5F39644B7FE96459646EBD4964796489649CBB7EBDE964AC0CA964B964C964DCDFB964EB3AF964FC6DA965096519652965396549655EBFC9656C4BE9657CEB4C4A9B1BED4FD9658CAF59659D6EC965A965BC6D3B6E4965C965D965E965FBBFA96609661D0E096629663C9B19664D4D3C8A896659666B8CB9667E8BEC9BC96689669E8BB966AC0EED0D3B2C4B4E5966BE8BC966C966DD5C8966E966F967096719672B6C59673E8BDCAF8B8DCCCF5967496759676C0B496779678D1EEE8BFE8C29679967ABABC967BB1ADBDDC967CEABDE8C3967DE8C6967EE8CB9680968196829683E8CC9684CBC9B0E59685BCAB96869687B9B996889689E8C1968ACDF7968BE8CA968C968D968E968FCEF69690969196929693D5ED9694C1D6E8C49695C3B69696B9FBD6A6E8C8969796989699CAE0D4E6969AE8C0969BE8C5E8C7969CC7B9B7E3969DE8C9969EBFDDE8D2969F96A0E8D796A1E8D5BCDCBCCFE8DB96A296A396A496A596A696A796A896A9E8DE96AAE8DAB1FA96AB96AC96AD96AE96AF96B096B196B296B396B4B0D8C4B3B8CCC6E2C8BEC8E196B596B696B7E8CFE8D4E8D696B8B9F1E8D8D7F596B9C4FB96BAE8DC96BB96BCB2E996BD96BE96BFE8D196C096C1BCED96C296C3BFC2E8CDD6F996C4C1F8B2F196C596C696C796C896C996CA96CB96CCE8DF96CDCAC1E8D996CE96CF96D096D1D5A496D2B1EAD5BBE8CEE8D0B6B0E8D396D3E8DDC0B896D4CAF796D5CBA896D696D7C6DCC0F596D896D996DA96DB96DCE8E996DD96DE96DFD0A396E096E196E296E396E496E596E6E8F2D6EA96E796E896E996EA96EB96EC96EDE8E0E8E196EE96EF96F0D1F9BACBB8F996F196F2B8F1D4D4E8EF96F3E8EEE8ECB9F0CCD2E8E6CEA6BFF296F4B0B8E8F1E8F096F5D7C096F6E8E496F7CDA9C9A396F8BBB8BDDBE8EA96F996FA96FB96FC96FD96FE9740974197429743E8E2E8E3E8E5B5B5E8E7C7C5E8EBE8EDBDB0D7AE9744E8F897459746974797489749974A974B974CE8F5974DCDB0E8F6974E974F9750975197529753975497559756C1BA9757E8E89758C3B7B0F09759975A975B975C975D975E975F9760E8F4976197629763E8F7976497659766B9A3976797689769976A976B976C976D976E976F9770C9D2977197729773C3CECEE0C0E69774977597769777CBF39778CCDDD0B59779977ACAE1977BE8F3977C977D977E9780978197829783978497859786BCEC9787E8F997889789978A978B978C978DC3DE978EC6E5978FB9F79790979197929793B0F497949795D7D897969797BCAC9798C5EF9799979A979B979C979DCCC4979E979FE9A697A097A197A297A397A497A597A697A797A897A9C9AD97AAE9A2C0E297AB97AC97ADBFC397AE97AF97B0E8FEB9D797B1E8FB97B297B397B497B5E9A497B697B797B8D2CE97B997BA97BB97BC97BDE9A397BED6B2D7B597BFE9A797C0BDB797C197C297C397C497C597C697C797C897C997CA97CB97CCE8FCE8FD97CD97CE97CFE9A197D097D197D297D397D497D597D697D7CDD697D897D9D2AC97DA97DB97DCE9B297DD97DE97DF97E0E9A997E197E297E3B4AA97E4B4BB97E597E6E9AB97E797E897E997EA97EB97EC97ED97EE97EF97F097F197F297F397F497F597F697F7D0A897F897F9E9A597FA97FBB3FE97FC97FDE9ACC0E397FEE9AA98409841E9B998429843E9B89844984598469847E9AE98489849E8FA984A984BE9A8984C984D984E984F9850BFACE9B1E9BA98519852C2A5985398549855E9AF9856B8C59857E9AD9858D3DCE9B4E9B5E9B79859985A985BE9C7985C985D985E985F98609861C0C6E9C598629863E9B098649865E9BBB0F19866986798689869986A986B986C986D986E986FE9BCD5A598709871E9BE9872E9BF987398749875E9C198769877C1F198789879C8B6987A987B987CE9BD987D987E988098819882E9C29883988498859886988798889889988AE9C3988BE9B3988CE9B6988DBBB1988E988F9890E9C0989198929893989498959896BCF7989798989899E9C4E9C6989A989B989C989D989E989F98A098A198A298A398A498A5E9CA98A698A798A898A9E9CE98AA98AB98AC98AD98AE98AF98B098B198B298B3B2DB98B4E9C898B598B698B798B898B998BA98BB98BC98BD98BEB7AE98BF98C098C198C298C398C498C598C698C798C898C998CAE9CBE9CC98CB98CC98CD98CE98CF98D0D5C198D1C4A398D298D398D498D598D698D7E9D898D8BAE198D998DA98DB98DCE9C998DDD3A398DE98DF98E0E9D498E198E298E398E498E598E698E7E9D7E9D098E898E998EA98EB98ECE9CF98ED98EEC7C198EF98F098F198F298F398F498F598F6E9D298F798F898F998FA98FB98FC98FDE9D9B3C898FEE9D399409941994299439944CFF0994599469947E9CD99489949994A994B994C994D994E994F995099519952B3F79953995499559956995799589959E9D6995A995BE9DA995C995D995ECCB4995F99609961CFAD99629963996499659966996799689969996AE9D5996BE9DCE9DB996C996D996E996F9970E9DE99719972997399749975997699779978E9D19979997A997B997C997D997E99809981E9DD9982E9DFC3CA9983998499859986998799889989998A998B998C998D998E998F9990999199929993999499959996999799989999999A999B999C999D999E999F99A099A199A299A399A499A599A699A799A899A999AA99AB99AC99AD99AE99AF99B099B199B299B399B499B599B699B799B899B999BA99BB99BC99BD99BE99BF99C099C199C299C399C499C599C699C799C899C999CA99CB99CC99CD99CE99CF99D099D199D299D399D499D599D699D799D899D999DA99DB99DC99DD99DE99DF99E099E199E299E399E499E599E699E799E899E999EA99EB99EC99ED99EE99EF99F099F199F299F399F499F5C7B7B4CEBBB6D0C0ECA399F699F7C5B799F899F999FA99FB99FC99FD99FE9A409A419A42D3FB9A439A449A459A46ECA49A47ECA5C6DB9A489A499A4ABFEE9A4B9A4C9A4D9A4EECA69A4F9A50ECA7D0AA9A51C7B89A529A53B8E89A549A559A569A579A589A599A5A9A5B9A5C9A5D9A5E9A5FECA89A609A619A629A639A649A659A669A67D6B9D5FDB4CBB2BDCEE4C6E79A689A69CDE19A6A9A6B9A6C9A6D9A6E9A6F9A709A719A729A739A749A759A769A77B4F59A78CBC0BCDF9A799A7A9A7B9A7CE9E2E9E3D1EAE9E59A7DB4F9E9E49A7ED1B3CAE2B2D09A80E9E89A819A829A839A84E9E6E9E79A859A86D6B39A879A889A89E9E9E9EA9A8A9A8B9A8C9A8D9A8EE9EB9A8F9A909A919A929A939A949A959A96E9EC9A979A989A999A9A9A9B9A9C9A9D9A9EECAFC5B9B6CE9A9FD2F39AA09AA19AA29AA39AA49AA59AA6B5EE9AA7BBD9ECB19AA89AA9D2E39AAA9AAB9AAC9AAD9AAECEE39AAFC4B89AB0C3BF9AB19AB2B6BED8B9B1C8B1CFB1D1C5FE9AB3B1D09AB4C3AB9AB59AB69AB79AB89AB9D5B19ABA9ABB9ABC9ABD9ABE9ABF9AC09AC1EBA4BAC19AC29AC39AC4CCBA9AC59AC69AC7EBA59AC8EBA79AC99ACA9ACBEBA89ACC9ACD9ACEEBA69ACF9AD09AD19AD29AD39AD49AD5EBA9EBABEBAA9AD69AD79AD89AD99ADAEBAC9ADBCACFD8B5C3F19ADCC3A5C6F8EBADC4CA9ADDEBAEEBAFEBB0B7D59ADE9ADF9AE0B7FA9AE1EBB1C7E29AE2EBB39AE3BAA4D1F5B0B1EBB2EBB49AE49AE59AE6B5AAC2C8C7E89AE7EBB59AE8CBAEE3DF9AE99AEAD3C09AEB9AEC9AED9AEED9DB9AEF9AF0CDA1D6ADC7F39AF19AF29AF3D9E0BBE39AF4BABAE3E29AF59AF69AF79AF89AF9CFAB9AFA9AFB9AFCE3E0C9C79AFDBAB99AFE9B409B41D1B4E3E1C8EAB9AFBDADB3D8CEDB9B429B43CCC09B449B459B46E3E8E3E9CDF49B479B489B499B4A9B4BCCAD9B4CBCB39B4DE3EA9B4EE3EB9B4F9B50D0DA9B519B529B53C6FBB7DA9B549B55C7DFD2CACED69B56E3E4E3EC9B57C9F2B3C19B589B59E3E79B5A9B5BC6E3E3E59B5C9B5DEDB3E3E69B5E9B5F9B609B61C9B39B62C5E69B639B649B65B9B59B66C3BB9B67E3E3C5BDC1A4C2D9B2D79B68E3EDBBA6C4AD9B69E3F0BEDA9B6A9B6BE3FBE3F5BAD39B6C9B6D9B6E9B6FB7D0D3CD9B70D6CED5D3B9C1D5B4D1D89B719B729B739B74D0B9C7F69B759B769B77C8AAB2B49B78C3DA9B799B7A9B7BE3EE9B7C9B7DE3FCE3EFB7A8E3F7E3F49B7E9B809B81B7BA9B829B83C5A29B84E3F6C5DDB2A8C6FC9B85C4E09B869B87D7A29B88C0E1E3F99B899B8AE3FAE3FDCCA9E3F39B8BD3BE9B8CB1C3EDB4E3F1E3F29B8DE3F8D0BAC6C3D4F3E3FE9B8E9B8FBDE09B909B91E4A79B929B93E4A69B949B959B96D1F3E4A39B97E4A99B989B999B9AC8F79B9B9B9C9B9D9B9ECFB49B9FE4A8E4AEC2E59BA09BA1B6B49BA29BA39BA49BA59BA69BA7BDF29BA8E4A29BA99BAABAE9E4AA9BAB9BACE4AC9BAD9BAEB6FDD6DEE4B29BAFE4AD9BB09BB19BB2E4A19BB3BBEECDDDC7A2C5C99BB49BB5C1F79BB6E4A49BB7C7B3BDACBDBDE4A59BB8D7C7B2E29BB9E4ABBCC3E4AF9BBABBEBE4B0C5A8E4B19BBB9BBC9BBD9BBED5E3BFA39BBFE4BA9BC0E4B79BC1E4BB9BC29BC3E4BD9BC49BC5C6D69BC69BC7BAC6C0CB9BC89BC99BCAB8A1E4B49BCB9BCC9BCD9BCED4A19BCF9BD0BAA3BDFE9BD19BD29BD3E4BC9BD49BD59BD69BD79BD8CDBF9BD99BDAC4F99BDB9BDCCFFBC9E69BDD9BDED3BF9BDFCFD19BE09BE1E4B39BE2E4B8E4B9CCE99BE39BE49BE59BE69BE7CCCE9BE8C0D4E4B5C1B0E4B6CED09BE9BBC1B5D39BEAC8F3BDA7D5C7C9ACB8A2E4CA9BEB9BECE4CCD1C49BED9BEED2BA9BEF9BF0BAAD9BF19BF2BAD49BF39BF49BF59BF69BF79BF8E4C3B5ED9BF99BFA9BFBD7CDE4C0CFFDE4BF9BFC9BFD9BFEC1DCCCCA9C409C419C429C43CAE79C449C459C469C47C4D79C48CCD4E4C89C499C4A9C4BE4C7E4C19C4CE4C4B5AD9C4D9C4ED3D99C4FE4C69C509C519C529C53D2F9B4E39C54BBB49C559C56C9EE9C57B4BE9C589C599C5ABBEC9C5BD1CD9C5CCCEDEDB59C5D9C5E9C5F9C609C619C629C639C64C7E59C659C669C679C68D4A89C69E4CBD7D5E4C29C6ABDA5E4C59C6B9C6CD3E69C6DE4C9C9F89C6E9C6FE4BE9C709C71D3E59C729C73C7FEB6C99C74D4FCB2B3E4D79C759C769C77CEC29C78E4CD9C79CEBC9C7AB8DB9C7B9C7CE4D69C7DBFCA9C7E9C809C81D3CE9C82C3EC9C839C849C859C869C879C889C899C8AC5C8E4D89C8B9C8C9C8D9C8E9C8F9C909C919C92CDC4E4CF9C939C949C959C96E4D4E4D59C97BAFE9C98CFE69C999C9AD5BF9C9B9C9C9C9DE4D29C9E9C9F9CA09CA19CA29CA39CA49CA59CA69CA79CA8E4D09CA99CAAE4CE9CAB9CAC9CAD9CAE9CAF9CB09CB19CB29CB39CB49CB59CB69CB79CB89CB9CDE5CAAA9CBA9CBB9CBCC0A39CBDBDA6E4D39CBE9CBFB8C89CC09CC19CC29CC39CC4E4E7D4B49CC59CC69CC79CC89CC99CCA9CCBE4DB9CCC9CCD9CCEC1EF9CCF9CD0E4E99CD19CD2D2E79CD39CD4E4DF9CD5E4E09CD69CD7CFAA9CD89CD99CDA9CDBCBDD9CDCE4DAE4D19CDDE4E59CDEC8DCE4E39CDF9CE0C4E7E4E29CE1E4E19CE29CE39CE4B3FCE4E89CE59CE69CE79CE8B5E19CE99CEA9CEBD7CC9CEC9CED9CEEE4E69CEFBBAC9CF0D7D2CCCFEBF89CF1E4E49CF29CF3B9F69CF49CF59CF6D6CDE4D9E4DCC2FAE4DE9CF7C2CBC0C4C2D09CF8B1F5CCB29CF99CFA9CFB9CFC9CFD9CFE9D409D419D429D43B5CE9D449D459D469D47E4EF9D489D499D4A9D4B9D4C9D4D9D4E9D4FC6AF9D509D519D52C6E19D539D54E4F59D559D569D579D589D59C2A99D5A9D5B9D5CC0ECD1DDE4EE9D5D9D5E9D5F9D609D619D629D639D649D659D66C4AE9D679D689D69E4ED9D6A9D6B9D6C9D6DE4F6E4F4C2FE9D6EE4DD9D6FE4F09D70CAFE9D71D5C49D729D73E4F19D749D759D769D779D789D799D7AD1FA9D7B9D7C9D7D9D7E9D809D819D82E4EBE4EC9D839D849D85E4F29D86CEAB9D879D889D899D8A9D8B9D8C9D8D9D8E9D8F9D90C5CB9D919D929D93C7B19D94C2BA9D959D969D97E4EA9D989D999D9AC1CA9D9B9D9C9D9D9D9E9D9F9DA0CCB6B3B19DA19DA29DA3E4FB9DA4E4F39DA59DA69DA7E4FA9DA8E4FD9DA9E4FC9DAA9DAB9DAC9DAD9DAE9DAF9DB0B3CE9DB19DB29DB3B3BAE4F79DB49DB5E4F9E4F8C5EC9DB69DB79DB89DB99DBA9DBB9DBC9DBD9DBE9DBF9DC09DC19DC2C0BD9DC39DC49DC59DC6D4E89DC79DC89DC99DCA9DCBE5A29DCC9DCD9DCE9DCF9DD09DD19DD29DD39DD49DD59DD6B0C49DD79DD8E5A49DD99DDAE5A39DDB9DDC9DDD9DDE9DDF9DE0BCA49DE1E5A59DE29DE39DE49DE59DE69DE7E5A19DE89DE99DEA9DEB9DEC9DED9DEEE4FEB1F49DEF9DF09DF19DF29DF39DF49DF59DF69DF79DF89DF9E5A89DFAE5A9E5A69DFB9DFC9DFD9DFE9E409E419E429E439E449E459E469E47E5A7E5AA9E489E499E4A9E4B9E4C9E4D9E4E9E4F9E509E519E529E539E549E559E569E579E589E599E5A9E5B9E5C9E5D9E5E9E5F9E609E619E629E639E649E659E669E679E68C6D99E699E6A9E6B9E6C9E6D9E6E9E6F9E70E5ABE5AD9E719E729E739E749E759E769E77E5AC9E789E799E7A9E7B9E7C9E7D9E7E9E809E819E829E839E849E859E869E879E889E89E5AF9E8A9E8B9E8CE5AE9E8D9E8E9E8F9E909E919E929E939E949E959E969E979E989E999E9A9E9B9E9C9E9D9E9EB9E09E9F9EA0E5B09EA19EA29EA39EA49EA59EA69EA79EA89EA99EAA9EAB9EAC9EAD9EAEE5B19EAF9EB09EB19EB29EB39EB49EB59EB69EB79EB89EB99EBABBF0ECE1C3F09EBBB5C6BBD29EBC9EBD9EBE9EBFC1E9D4EE9EC0BEC49EC19EC29EC3D7C69EC4D4D6B2D3ECBE9EC59EC69EC79EC8EAC19EC99ECA9ECBC2AFB4B69ECC9ECD9ECED1D79ECF9ED09ED1B3B49ED2C8B2BFBBECC09ED39ED4D6CB9ED59ED6ECBFECC19ED79ED89ED99EDA9EDB9EDC9EDD9EDE9EDF9EE09EE19EE29EE3ECC5BEE6CCBFC5DABEBC9EE4ECC69EE5B1FE9EE69EE79EE8ECC4D5A8B5E39EE9ECC2C1B6B3E39EEA9EEBECC3CBB8C0C3CCFE9EEC9EED9EEE9EEFC1D29EF0ECC89EF19EF29EF39EF49EF59EF69EF79EF89EF99EFA9EFB9EFC9EFDBAE6C0D39EFED6F29F409F419F42D1CC9F439F449F459F46BFBE9F47B7B3C9D5ECC7BBE29F48CCCCBDFDC8C89F49CFA99F4A9F4B9F4C9F4D9F4E9F4F9F50CDE99F51C5EB9F529F539F54B7E99F559F569F579F589F599F5A9F5B9F5C9F5D9F5E9F5FD1C9BAB89F609F619F629F639F64ECC99F659F66ECCA9F67BBC0ECCB9F68ECE2B1BAB7D99F699F6A9F6B9F6C9F6D9F6E9F6F9F709F719F729F73BDB99F749F759F769F779F789F799F7A9F7BECCCD1E6ECCD9F7C9F7D9F7E9F80C8BB9F819F829F839F849F859F869F879F889F899F8A9F8B9F8C9F8D9F8EECD19F8F9F909F919F92ECD39F93BBCD9F94BCE59F959F969F979F989F999F9A9F9B9F9C9F9D9F9E9F9F9FA09FA1ECCF9FA2C9B79FA39FA49FA59FA69FA7C3BA9FA8ECE3D5D5ECD09FA99FAA9FAB9FAC9FADD6F39FAE9FAF9FB0ECD2ECCE9FB19FB29FB39FB4ECD49FB5ECD59FB69FB7C9BF9FB89FB99FBA9FBB9FBC9FBDCFA89FBE9FBF9FC09FC19FC2D0DC9FC39FC49FC59FC6D1AC9FC79FC89FC99FCAC8DB9FCB9FCC9FCDECD6CEF59FCE9FCF9FD09FD19FD2CAECECDA9FD39FD49FD59FD69FD79FD89FD9ECD99FDA9FDB9FDCB0BE9FDD9FDE9FDF9FE09FE19FE2ECD79FE3ECD89FE49FE59FE6ECE49FE79FE89FE99FEA9FEB9FEC9FED9FEE9FEFC8BC9FF09FF19FF29FF39FF49FF59FF69FF79FF89FF9C1C79FFA9FFB9FFC9FFD9FFEECDCD1E0A040A041A042A043A044A045A046A047A048A049ECDBA04AA04BA04CA04DD4EFA04EECDDA04FA050A051A052A053A054DBC6A055A056A057A058A059A05AA05BA05CA05DA05EECDEA05FA060A061A062A063A064A065A066A067A068A069A06AB1ACA06BA06CA06DA06EA06FA070A071A072A073A074A075A076A077A078A079A07AA07BA07CA07DA07EA080A081ECDFA082A083A084A085A086A087A088A089A08AA08BECE0A08CD7A6A08DC5C0A08EA08FA090EBBCB0AEA091A092A093BEF4B8B8D2AFB0D6B5F9A094D8B3A095CBACA096E3DDA097A098A099A09AA09BA09CA09DC6ACB0E6A09EA09FA0A0C5C6EBB9A0A1A0A2A0A3A0A4EBBAA0A5A0A6A0A7EBBBA0A8A0A9D1C0A0AAC5A3A0ABEAF2A0ACC4B2A0ADC4B5C0CEA0AEA0AFA0B0EAF3C4C1A0B1CEEFA0B2A0B3A0B4A0B5EAF0EAF4A0B6A0B7C9FCA0B8A0B9C7A3A0BAA0BBA0BCCCD8CEFEA0BDA0BEA0BFEAF5EAF6CFACC0E7A0C0A0C1EAF7A0C2A0C3A0C4A0C5A0C6B6BFEAF8A0C7EAF9A0C8EAFAA0C9A0CAEAFBA0CBA0CCA0CDA0CEA0CFA0D0A0D1A0D2A0D3A0D4A0D5A0D6EAF1A0D7A0D8A0D9A0DAA0DBA0DCA0DDA0DEA0DFA0E0A0E1A0E2C8AEE1EBA0E3B7B8E1ECA0E4A0E5A0E6E1EDA0E7D7B4E1EEE1EFD3CCA0E8A0E9A0EAA0EBA0ECA0EDA0EEE1F1BFF1E1F0B5D2A0EFA0F0A0F1B1B7A0F2A0F3A0F4A0F5E1F3E1F2A0F6BAFCA0F7E1F4A0F8A0F9A0FAA0FBB9B7A0FCBED1A0FDA0FEAA40AA41C4FCAA42BADDBDC6AA43AA44AA45AA46AA47AA48E1F5E1F7AA49AA4AB6C0CFC1CAA8E1F6D5F8D3FCE1F8E1FCE1F9AA4BAA4CE1FAC0EAAA4DE1FEE2A1C0C7AA4EAA4FAA50AA51E1FBAA52E1FDAA53AA54AA55AA56AA57AA58E2A5AA59AA5AAA5BC1D4AA5CAA5DAA5EAA5FE2A3AA60E2A8B2FEE2A2AA61AA62AA63C3CDB2C2E2A7E2A6AA64AA65E2A4E2A9AA66AA67E2ABAA68AA69AA6AD0C9D6EDC3A8E2ACAA6BCFD7AA6CAA6DE2AEAA6EAA6FBAEFAA70AA71E9E0E2ADE2AAAA72AA73AA74AA75BBABD4B3AA76AA77AA78AA79AA7AAA7BAA7CAA7DAA7EAA80AA81AA82AA83E2B0AA84AA85E2AFAA86E9E1AA87AA88AA89AA8AE2B1AA8BAA8CAA8DAA8EAA8FAA90AA91AA92E2B2AA93AA94AA95AA96AA97AA98AA99AA9AAA9BAA9CAA9DE2B3CCA1AA9EE2B4AA9FAAA0AB40AB41AB42AB43AB44AB45AB46AB47AB48AB49AB4AAB4BE2B5AB4CAB4DAB4EAB4FAB50D0FEAB51AB52C2CAAB53D3F1AB54CDF5AB55AB56E7E0AB57AB58E7E1AB59AB5AAB5BAB5CBEC1AB5DAB5EAB5FAB60C2EAAB61AB62AB63E7E4AB64AB65E7E3AB66AB67AB68AB69AB6AAB6BCDE6AB6CC3B5AB6DAB6EE7E2BBB7CFD6AB6FC1E1E7E9AB70AB71AB72E7E8AB73AB74E7F4B2A3AB75AB76AB77AB78E7EAAB79E7E6AB7AAB7BAB7CAB7DAB7EE7ECE7EBC9BAAB80AB81D5E4AB82E7E5B7A9E7E7AB83AB84AB85AB86AB87AB88AB89E7EEAB8AAB8BAB8CAB8DE7F3AB8ED6E9AB8FAB90AB91AB92E7EDAB93E7F2AB94E7F1AB95AB96AB97B0E0AB98AB99AB9AAB9BE7F5AB9CAB9DAB9EAB9FABA0AC40AC41AC42AC43AC44AC45AC46AC47AC48AC49AC4AC7F2AC4BC0C5C0EDAC4CAC4DC1F0E7F0AC4EAC4FAC50AC51E7F6CBF6AC52AC53AC54AC55AC56AC57AC58AC59AC5AE8A2E8A1AC5BAC5CAC5DAC5EAC5FAC60D7C1AC61AC62E7FAE7F9AC63E7FBAC64E7F7AC65E7FEAC66E7FDAC67E7FCAC68AC69C1D5C7D9C5FDC5C3AC6AAC6BAC6CAC6DAC6EC7EDAC6FAC70AC71AC72E8A3AC73AC74AC75AC76AC77AC78AC79AC7AAC7BAC7CAC7DAC7EAC80AC81AC82AC83AC84AC85AC86E8A6AC87E8A5AC88E8A7BAF7E7F8E8A4AC89C8F0C9AAAC8AAC8BAC8CAC8DAC8EAC8FAC90AC91AC92AC93AC94AC95AC96E8A9AC97AC98B9E5AC99AC9AAC9BAC9CAC9DD1FEE8A8AC9EAC9FACA0AD40AD41AD42E8AAAD43E8ADE8AEAD44C1A7AD45AD46AD47E8AFAD48AD49AD4AE8B0AD4BAD4CE8ACAD4DE8B4AD4EAD4FAD50AD51AD52AD53AD54AD55AD56AD57AD58E8ABAD59E8B1AD5AAD5BAD5CAD5DAD5EAD5FAD60AD61E8B5E8B2E8B3AD62AD63AD64AD65AD66AD67AD68AD69AD6AAD6BAD6CAD6DAD6EAD6FAD70AD71E8B7AD72AD73AD74AD75AD76AD77AD78AD79AD7AAD7BAD7CAD7DAD7EAD80AD81AD82AD83AD84AD85AD86AD87AD88AD89E8B6AD8AAD8BAD8CAD8DAD8EAD8FAD90AD91AD92B9CFAD93F0ACAD94F0ADAD95C6B0B0EAC8BFAD96CDDFAD97AD98AD99AD9AAD9BAD9CAD9DCECDEAB1AD9EAD9FADA0AE40EAB2AE41C6BFB4C9AE42AE43AE44AE45AE46AE47AE48EAB3AE49AE4AAE4BAE4CD5E7AE4DAE4EAE4FAE50AE51AE52AE53AE54DDF9AE55EAB4AE56EAB5AE57EAB6AE58AE59AE5AAE5BB8CADFB0C9F5AE5CCCF0AE5DAE5EC9FAAE5FAE60AE61AE62AE63C9FBAE64AE65D3C3CBA6AE66B8A6F0AEB1C2AE67E5B8CCEFD3C9BCD7C9EAAE68B5E7AE69C4D0B5E9AE6AEEAEBBADAE6BAE6CE7DEAE6DEEAFAE6EAE6FAE70AE71B3A9AE72AE73EEB2AE74AE75EEB1BDE7AE76EEB0CEB7AE77AE78AE79AE7AC5CFAE7BAE7CAE7DAE7EC1F4DBCEEEB3D0F3AE80AE81AE82AE83AE84AE85AE86AE87C2D4C6E8AE88AE89AE8AB7ACAE8BAE8CAE8DAE8EAE8FAE90AE91EEB4AE92B3EBAE93AE94AE95BBFBEEB5AE96AE97AE98AE99AE9AE7DCAE9BAE9CAE9DEEB6AE9EAE9FBDAEAEA0AF40AF41AF42F1E2AF43AF44AF45CAE8AF46D2C9F0DAAF47F0DBAF48F0DCC1C6AF49B8EDBECEAF4AAF4BF0DEAF4CC5B1F0DDD1F1AF4DF0E0B0CCBDEAAF4EAF4FAF50AF51AF52D2DFF0DFAF53B4AFB7E8F0E6F0E5C6A3F0E1F0E2B4C3AF54AF55F0E3D5EEAF56AF57CCDBBED2BCB2AF58AF59AF5AF0E8F0E7F0E4B2A1AF5BD6A2D3B8BEB7C8ACAF5CAF5DF0EAAF5EAF5FAF60AF61D1F7AF62D6CCBADBF0E9AF63B6BBAF64AF65CDB4AF66AF67C6A6AF68AF69AF6AC1A1F0EBF0EEAF6BF0EDF0F0F0ECAF6CBBBEF0EFAF6DAF6EAF6FAF70CCB5F0F2AF71AF72B3D5AF73AF74AF75AF76B1D4AF77AF78F0F3AF79AF7AF0F4F0F6B4E1AF7BF0F1AF7CF0F7AF7DAF7EAF80AF81F0FAAF82F0F8AF83AF84AF85F0F5AF86AF87AF88AF89F0FDAF8AF0F9F0FCF0FEAF8BF1A1AF8CAF8DAF8ECEC1F1A4AF8FF1A3AF90C1F6F0FBCADDAF91AF92B4F1B1F1CCB1AF93F1A6AF94AF95F1A7AF96AF97F1ACD5CEF1A9AF98AF99C8B3AF9AAF9BAF9CF1A2AF9DF1ABF1A8F1A5AF9EAF9FF1AAAFA0B040B041B042B043B044B045B046B0A9F1ADB047B048B049B04AB04BB04CF1AFB04DF1B1B04EB04FB050B051B052F1B0B053F1AEB054B055B056B057D1A2B058B059B05AB05BB05CB05DB05EF1B2B05FB060B061F1B3B062B063B064B065B066B067B068B069B9EFB06AB06BB5C7B06CB0D7B0D9B06DB06EB06FD4EDB070B5C4B071BDD4BBCAF0A7B072B073B8DEB074B075F0A8B076B077B0A8B078F0A9B079B07ACDEEB07BB07CF0AAB07DB07EB080B081B082B083B084B085B086B087F0ABB088B089B08AB08BB08CB08DB08EB08FB090C6A4B091B092D6E5F1E4B093F1E5B094B095B096B097B098B099B09AB09BB09CB09DC3F3B09EB09FD3DBB0A0B140D6D1C5E8B141D3AFB142D2E6B143B144EEC1B0BBD5B5D1CEBCE0BAD0B145BFF8B146B8C7B5C1C5CCB147B148CAA2B149B14AB14BC3CBB14CB14DB14EB14FB150EEC2B151B152B153B154B155B156B157B158C4BFB6A2B159EDECC3A4B15AD6B1B15BB15CB15DCFE0EDEFB15EB15FC5CEB160B6DCB161B162CAA1B163B164EDEDB165B166EDF0EDF1C3BCB167BFB4B168EDEEB169B16AB16BB16CB16DB16EB16FB170B171B172B173EDF4EDF2B174B175B176B177D5E6C3DFB178EDF3B179B17AB17BEDF6B17CD5A3D1A3B17DB17EB180EDF5B181C3D0B182B183B184B185B186EDF7BFF4BEECEDF8B187CCF7B188D1DBB189B18AB18BD7C5D5F6B18CEDFCB18DB18EB18FEDFBB190B191B192B193B194B195B196B197EDF9EDFAB198B199B19AB19BB19CB19DB19EB19FEDFDBEA6B1A0B240B241B242B243CBAFEEA1B6BDB244EEA2C4C0B245EDFEB246B247BDDEB2C7B248B249B24AB24BB24CB24DB24EB24FB250B251B252B253B6C3B254B255B256EEA5D8BAEEA3EEA6B257B258B259C3E9B3F2B25AB25BB25CB25DB25EB25FEEA7EEA4CFB9B260B261EEA8C2F7B262B263B264B265B266B267B268B269B26AB26BB26CB26DEEA9EEAAB26EDEABB26FB270C6B3B271C7C6B272D6F5B5C9B273CBB2B274B275B276EEABB277B278CDABB279EEACB27AB27BB27CB27DB27ED5B0B280EEADB281F6C4B282B283B284B285B286B287B288B289B28AB28BB28CB28DB28EDBC7B28FB290B291B292B293B294B295B296B297B4A3B298B299B29AC3ACF1E6B29BB29CB29DB29EB29FCAB8D2D3B2A0D6AAB340EFF2B341BED8B342BDC3EFF3B6CCB0ABB343B344B345B346CAAFB347B348EDB6B349EDB7B34AB34BB34CB34DCEF9B7AFBFF3EDB8C2EBC9B0B34EB34FB350B351B352B353EDB9B354B355C6F6BFB3B356B357B358EDBCC5F8B359D1D0B35AD7A9EDBAEDBBB35BD1E2B35CEDBFEDC0B35DEDC4B35EB35FB360EDC8B361EDC6EDCED5E8B362EDC9B363B364EDC7EDBEB365B366C5E9B367B368B369C6C6B36AB36BC9E9D4D2EDC1EDC2EDC3EDC5B36CC0F9B36DB4A1B36EB36FB370B371B9E8B372EDD0B373B374B375B376EDD1B377EDCAB378EDCFB379CEF8B37AB37BCBB6EDCCEDCDB37CB37DB37EB380B381CFF5B382B383B384B385B386B387B388B389B38AB38BB38CB38DEDD2C1F2D3B2EDCBC8B7B38EB38FB390B391B392B393B394B395BCEFB396B397B398B399C5F0B39AB39BB39CB39DB39EB39FB3A0B440B441B442EDD6B443B5EFB444B445C2B5B0ADCBE9B446B447B1AEB448EDD4B449B44AB44BCDEBB5E2B44CEDD5EDD3EDD7B44DB44EB5FAB44FEDD8B450EDD9B451EDDCB452B1CCB453B454B455B456B457B458B459B45AC5F6BCEEEDDACCBCB2EAB45BB45CB45DB45EEDDBB45FB460B461B462C4EBB463B464B4C5B465B466B467B0F5B468B469B46AEDDFC0DAB4E8B46BB46CB46DB46EC5CDB46FB470B471EDDDBFC4B472B473B474EDDEB475B476B477B478B479B47AB47BB47CB47DB47EB480B481B482B483C4A5B484B485B486EDE0B487B488B489B48AB48BEDE1B48CEDE3B48DB48EC1D7B48FB490BBC7B491B492B493B494B495B496BDB8B497B498B499EDE2B49AB49BB49CB49DB49EB49FB4A0B540B541B542B543B544B545EDE4B546B547B548B549B54AB54BB54CB54DB54EB54FEDE6B550B551B552B553B554EDE5B555B556B557B558B559B55AB55BB55CB55DB55EB55FB560B561B562B563EDE7B564B565B566B567B568CABEECEAC0F1B569C9E7B56AECEBC6EEB56BB56CB56DB56EECECB56FC6EDECEDB570B571B572B573B574B575B576B577B578ECF0B579B57AD7E6ECF3B57BB57CECF1ECEEECEFD7A3C9F1CBEEECF4B57DECF2B57EB580CFE9B581ECF6C6B1B582B583B584B585BCC0B586ECF5B587B588B589B58AB58BB58CB58DB5BBBBF6B58EECF7B58FB590B591B592B593D9F7BDFBB594B595C2BBECF8B596B597B598B599ECF9B59AB59BB59CB59DB8A3B59EB59FB5A0B640B641B642B643B644B645B646ECFAB647B648B649B64AB64BB64CB64DB64EB64FB650B651B652ECFBB653B654B655B656B657B658B659B65AB65BB65CB65DECFCB65EB65FB660B661B662D3EDD8AEC0EBB663C7DDBACCB664D0E3CBBDB665CDBAB666B667B8D1B668B669B1FCB66AC7EFB66BD6D6B66CB66DB66EBFC6C3EBB66FB670EFF5B671B672C3D8B673B674B675B676B677B678D7E2B679B67AB67BEFF7B3D3B67CC7D8D1EDB67DD6C8B67EEFF8B680EFF6B681BBFDB3C6B682B683B684B685B686B687B688BDD5B689B68AD2C6B68BBBE0B68CB68DCFA1B68EEFFCEFFBB68FB690EFF9B691B692B693B694B3CCB695C9D4CBB0B696B697B698B699B69AEFFEB69BB69CB0DEB69DB69ED6C9B69FB6A0B740EFFDB741B3EDB742B743F6D5B744B745B746B747B748B749B74AB74BB74CB74DB74EB74FB750B751B752CEC8B753B754B755F0A2B756F0A1B757B5BEBCDABBFCB758B8E5B759B75AB75BB75CB75DB75EC4C2B75FB760B761B762B763B764B765B766B767B768F0A3B769B76AB76BB76CB76DCBEBB76EB76FB770B771B772B773B774B775B776B777B778B779B77AB77BB77CB77DB77EB780B781B782B783B784B785B786F0A6B787B788B789D1A8B78ABEBFC7EEF1B6F1B7BFD5B78BB78CB78DB78EB4A9F1B8CDBBB78FC7D4D5ADB790F1B9B791F1BAB792B793B794B795C7CFB796B797B798D2A4D6CFB799B79AF1BBBDD1B4B0BEBDB79BB79CB79DB4DCCED1B79EBFDFF1BDB79FB7A0B840B841BFFAF1BCB842F1BFB843B844B845F1BEF1C0B846B847B848B849B84AF1C1B84BB84CB84DB84EB84FB850B851B852B853B854B855C1FEB856B857B858B859B85AB85BB85CB85DB85EB85FB860C1A2B861B862B863B864B865B866B867B868B869B86ACAFAB86BB86CD5BEB86DB86EB86FB870BEBABEB9D5C2B871B872BFA2B873CDAFF1B5B874B875B876B877B878B879BDDFB87AB6CBB87BB87CB87DB87EB880B881B882B883B884D6F1F3C3B885B886F3C4B887B8CDB888B889B88AF3C6F3C7B88BB0CAB88CF3C5B88DF3C9CBF1B88EB88FB890F3CBB891D0A6B892B893B1CAF3C8B894B895B896F3CFB897B5D1B898B899F3D7B89AF3D2B89BB89CB89DF3D4F3D3B7FBB89EB1BFB89FF3CEF3CAB5DAB8A0F3D0B940B941F3D1B942F3D5B943B944B945B946F3CDB947BCE3B948C1FDB949F3D6B94AB94BB94CB94DB94EB94FF3DAB950F3CCB951B5C8B952BDEEF3DCB953B954B7A4BFF0D6FECDB2B955B4F0B956B2DFB957F3D8B958F3D9C9B8B959F3DDB95AB95BF3DEB95CF3E1B95DB95EB95FB960B961B962B963B964B965B966B967F3DFB968B969F3E3F3E2B96AB96BF3DBB96CBFEAB96DB3EFB96EF3E0B96FB970C7A9B971BCF2B972B973B974B975F3EBB976B977B978B979B97AB97BB97CB9BFB97DB97EF3E4B980B981B982B2ADBBFEB983CBE3B984B985B986B987F3EDF3E9B988B989B98AB9DCF3EEB98BB98CB98DF3E5F3E6F3EAC2E1F3ECF3EFF3E8BCFDB98EB98FB990CFE4B991B992F3F0B993B994B995F3E7B996B997B998B999B99AB99BB99CB99DF3F2B99EB99FB9A0BA40D7ADC6AABA41BA42BA43BA44F3F3BA45BA46BA47BA48F3F1BA49C2A8BA4ABA4BBA4CBA4DBA4EB8DDF3F5BA4FBA50F3F4BA51BA52BA53B4DBBA54BA55BA56F3F6F3F7BA57BA58BA59F3F8BA5ABA5BBA5CC0BABA5DBA5EC0E9BA5FBA60BA61BA62BA63C5F1BA64BA65BA66BA67F3FBBA68F3FABA69BA6ABA6BBA6CBA6DBA6EBA6FBA70B4D8BA71BA72BA73F3FEF3F9BA74BA75F3FCBA76BA77BA78BA79BA7ABA7BF3FDBA7CBA7DBA7EBA80BA81BA82BA83BA84F4A1BA85BA86BA87BA88BA89BA8AF4A3BBC9BA8BBA8CF4A2BA8DBA8EBA8FBA90BA91BA92BA93BA94BA95BA96BA97BA98BA99F4A4BA9ABA9BBA9CBA9DBA9EBA9FB2BEF4A6F4A5BAA0BB40BB41BB42BB43BB44BB45BB46BB47BB48BB49BCAEBB4ABB4BBB4CBB4DBB4EBB4FBB50BB51BB52BB53BB54BB55BB56BB57BB58BB59BB5ABB5BBB5CBB5DBB5EBB5FBB60BB61BB62BB63BB64BB65BB66BB67BB68BB69BB6ABB6BBB6CBB6DBB6EC3D7D9E1BB6FBB70BB71BB72BB73BB74C0E0F4CCD7D1BB75BB76BB77BB78BB79BB7ABB7BBB7CBB7DBB7EBB80B7DBBB81BB82BB83BB84BB85BB86BB87F4CEC1A3BB88BB89C6C9BB8AB4D6D5B3BB8BBB8CBB8DF4D0F4CFF4D1CBDABB8EBB8FF4D2BB90D4C1D6E0BB91BB92BB93BB94B7E0BB95BB96BB97C1B8BB98BB99C1BBF4D3BEACBB9ABB9BBB9CBB9DBB9EB4E2BB9FBBA0F4D4F4D5BEABBC40BC41F4D6BC42BC43BC44F4DBBC45F4D7F4DABC46BAFDBC47F4D8F4D9BC48BC49BC4ABC4BBC4CBC4DBC4EB8E2CCC7F4DCBC4FB2DABC50BC51C3D3BC52BC53D4E3BFB7BC54BC55BC56BC57BC58BC59BC5AF4DDBC5BBC5CBC5DBC5EBC5FBC60C5B4BC61BC62BC63BC64BC65BC66BC67BC68F4E9BC69BC6ACFB5BC6BBC6CBC6DBC6EBC6FBC70BC71BC72BC73BC74BC75BC76BC77BC78CEC9BC79BC7ABC7BBC7CBC7DBC7EBC80BC81BC82BC83BC84BC85BC86BC87BC88BC89BC8ABC8BBC8CBC8DBC8ECBD8BC8FCBF7BC90BC91BC92BC93BDF4BC94BC95BC96D7CFBC97BC98BC99C0DBBC9ABC9BBC9CBC9DBC9EBC9FBCA0BD40BD41BD42BD43BD44BD45BD46BD47BD48BD49BD4ABD4BBD4CBD4DBD4EBD4FBD50BD51BD52BD53BD54BD55BD56BD57BD58BD59BD5ABD5BBD5CBD5DBD5EBD5FBD60BD61BD62BD63BD64BD65BD66BD67BD68BD69BD6ABD6BBD6CBD6DBD6EBD6FBD70BD71BD72BD73BD74BD75BD76D0F5BD77BD78BD79BD7ABD7BBD7CBD7DBD7EF4EABD80BD81BD82BD83BD84BD85BD86BD87BD88BD89BD8ABD8BBD8CBD8DBD8EBD8FBD90BD91BD92BD93BD94BD95BD96BD97BD98BD99BD9ABD9BBD9CBD9DBD9EBD9FBDA0BE40BE41BE42BE43BE44BE45BE46BE47BE48BE49BE4ABE4BBE4CF4EBBE4DBE4EBE4FBE50BE51BE52BE53F4ECBE54BE55BE56BE57BE58BE59BE5ABE5BBE5CBE5DBE5EBE5FBE60BE61BE62BE63BE64BE65BE66BE67BE68BE69BE6ABE6BBE6CBE6DBE6EBE6FBE70BE71BE72BE73BE74BE75BE76BE77BE78BE79BE7ABE7BBE7CBE7DBE7EBE80BE81BE82BE83BE84BE85BE86BE87BE88BE89BE8ABE8BBE8CBE8DBE8EBE8FBE90BE91BE92BE93BE94BE95BE96BE97BE98BE99BE9ABE9BBE9CBE9DBE9EBE9FBEA0BF40BF41BF42BF43BF44BF45BF46BF47BF48BF49BF4ABF4BBF4CBF4DBF4EBF4FBF50BF51BF52BF53BF54BF55BF56BF57BF58BF59BF5ABF5BBF5CBF5DBF5EBF5FBF60BF61BF62BF63BF64BF65BF66BF67BF68BF69BF6ABF6BBF6CBF6DBF6EBF6FBF70BF71BF72BF73BF74BF75BF76BF77BF78BF79BF7ABF7BBF7CBF7DBF7EBF80F7E3BF81BF82BF83BF84BF85B7B1BF86BF87BF88BF89BF8AF4EDBF8BBF8CBF8DBF8EBF8FBF90BF91BF92BF93BF94BF95BF96BF97BF98BF99BF9ABF9BBF9CBF9DBF9EBF9FBFA0C040C041C042C043C044C045C046C047C048C049C04AC04BC04CC04DC04EC04FC050C051C052C053C054C055C056C057C058C059C05AC05BC05CC05DC05EC05FC060C061C062C063D7EBC064C065C066C067C068C069C06AC06BC06CC06DC06EC06FC070C071C072C073C074C075C076C077C078C079C07AC07BF4EEC07CC07DC07EE6F9BEC0E6FABAECE6FBCFCBE6FCD4BCBCB6E6FDE6FEBCCDC8D2CEB3E7A1C080B4BFE7A2C9B4B8D9C4C9C081D7DDC2DAB7D7D6BDCEC6B7C4C082C083C5A6E7A3CFDFE7A4E7A5E7A6C1B7D7E9C9F0CFB8D6AFD6D5E7A7B0EDE7A8E7A9C9DCD2EFBEADE7AAB0F3C8DEBDE1E7ABC8C6C084E7ACBBE6B8F8D1A4E7ADC2E7BEF8BDCACDB3E7AEE7AFBEEED0E5C085CBE7CCD0BCCCE7B0BCA8D0F7E7B1C086D0F8E7B2E7B3B4C2E7B4E7B5C9FECEACC3E0E7B7B1C1B3F1C087E7B8E7B9D7DBD5C0E7BAC2CCD7BAE7BBE7BCE7BDBCEAC3E5C0C2E7BEE7BFBCA9C088E7C0E7C1E7B6B6D0E7C2C089E7C3E7C4BBBAB5DEC2C6B1E0E7C5D4B5E7C6B8BFE7C8E7C7B7ECC08AE7C9B2F8E7CAE7CBE7CCE7CDE7CEE7CFE7D0D3A7CBF5E7D1E7D2E7D3E7D4C9C9E7D5E7D6E7D7E7D8E7D9BDC9E7DAF3BEC08BB8D7C08CC8B1C08DC08EC08FC090C091C092C093F3BFC094F3C0F3C1C095C096C097C098C099C09AC09BC09CC09DC09EB9DECDF8C09FC0A0D8E8BAB1C140C2DEEEB7C141B7A3C142C143C144C145EEB9C146EEB8B0D5C147C148C149C14AC14BEEBBD5D6D7EFC14CC14DC14ED6C3C14FC150EEBDCAF0C151EEBCC152C153C154C155EEBEC156C157C158C159EEC0C15AC15BEEBFC15CC15DC15EC15FC160C161C162C163D1F2C164C7BCC165C3C0C166C167C168C169C16AB8E1C16BC16CC16DC16EC16FC1E7C170C171F4C6D0DFF4C7C172CFDBC173C174C8BAC175C176F4C8C177C178C179C17AC17BC17CC17DF4C9F4CAC17EF4CBC180C181C182C183C184D9FAB8FEC185C186E5F1D3F0C187F4E0C188CECCC189C18AC18BB3E1C18CC18DC18EC18FF1B4C190D2EEC191F4E1C192C193C194C195C196CFE8F4E2C197C198C7CCC199C19AC19BC19CC19DC19EB5D4B4E4F4E4C19FC1A0C240F4E3F4E5C241C242F4E6C243C244C245C246F4E7C247BAB2B0BFC248F4E8C249C24AC24BC24CC24DC24EC24FB7ADD2EDC250C251C252D2ABC0CFC253BFBCEBA3D5DFEAC8C254C255C256C257F1F3B6F8CBA3C258C259C4CDC25AF1E7C25BF1E8B8FBF1E9BAC4D4C5B0D2C25CC25DF1EAC25EC25FC260F1EBC261F1ECC262C263F1EDF1EEF1EFF1F1F1F0C5D5C264C265C266C267C268C269F1F2C26AB6FAC26BF1F4D2AEDEC7CBCAC26CC26DB3DCC26EB5A2C26FB9A2C270C271C4F4F1F5C272C273F1F6C274C275C276C1C4C1FBD6B0F1F7C277C278C279C27AF1F8C27BC1AAC27CC27DC27EC6B8C280BEDBC281C282C283C284C285C286C287C288C289C28AC28BC28CC28DC28EF1F9B4CFC28FC290C291C292C293C294F1FAC295C296C297C298C299C29AC29BC29CC29DC29EC29FC2A0C340EDB2EDB1C341C342CBE0D2DEC343CBC1D5D8C344C8E2C345C0DFBCA1C346C347C348C349C34AC34BEBC1C34CC34DD0A4C34ED6E2C34FB6C7B8D8EBC0B8CEC350EBBFB3A6B9C9D6ABC351B7F4B7CAC352C353C354BCE7B7BEEBC6C355EBC7B0B9BFCFC356EBC5D3FDC357EBC8C358C359EBC9C35AC35BB7CEC35CEBC2EBC4C9F6D6D7D5CDD0B2EBCFCEB8EBD0C35DB5A8C35EC35FC360C361C362B1B3EBD2CCA5C363C364C365C366C367C368C369C5D6EBD3C36AEBD1C5DFEBCECAA4EBD5B0FBC36BC36CBAFAC36DC36ED8B7F1E3C36FEBCAEBCBEBCCEBCDEBD6E6C0EBD9C370BFE8D2C8EBD7EBDCB8ECEBD8C371BDBAC372D0D8C373B0B7C374EBDDC4DCC375C376C377C378D6ACC379C37AC37BB4E0C37CC37DC2F6BCB9C37EC380EBDAEBDBD4E0C6EAC4D4EBDFC5A7D9F5C381B2B1C382EBE4C383BDC5C384C385C386EBE2C387C388C389C38AC38BC38CC38DC38EC38FC390C391C392C393EBE3C394C395B8ACC396CDD1EBE5C397C398C399EBE1C39AC1B3C39BC39CC39DC39EC39FC6A2C3A0C440C441C442C443C444C445CCF3C446EBE6C447C0B0D2B8EBE7C448C449C44AB8AFB8ADC44BEBE8C7BBCDF3C44CC44DC44EEBEAEBEBC44FC450C451C452C453EBEDC454C455C456C457D0C8C458EBF2C459EBEEC45AC45BC45CEBF1C8F9C45DD1FCEBECC45EC45FEBE9C460C461C462C463B8B9CFD9C4E5EBEFEBF0CCDACDC8B0F2C464EBF6C465C466C467C468C469EBF5C46AB2B2C46BC46CC46DC46EB8E0C46FEBF7C470C471C472C473C474C475B1ECC476C477CCC5C4A4CFA5C478C479C47AC47BC47CEBF9C47DC47EECA2C480C5F2C481EBFAC482C483C484C485C486C487C488C489C9C5C48AC48BC48CC48DC48EC48FE2DFEBFEC490C491C492C493CDCEECA1B1DBD3B7C494C495D2DCC496C497C498EBFDC499EBFBC49AC49BC49CC49DC49EC49FC4A0C540C541C542C543C544C545C546C547C548C549C54AC54BC54CC54DC54EB3BCC54FC550C551EAB0C552C553D7D4C554F4ABB3F4C555C556C557C558C559D6C1D6C2C55AC55BC55CC55DC55EC55FD5E9BECAC560F4A7C561D2A8F4A8F4A9C562F4AABECBD3DFC563C564C565C566C567C9E0C9E1C568C569F3C2C56ACAE6C56BCCF2C56CC56DC56EC56FC570C571E2B6CBB4C572CEE8D6DBC573F4ADF4AEF4AFC574C575C576C577F4B2C578BABDF4B3B0E3F4B0C579F4B1BDA2B2D5C57AF4B6F4B7B6E6B2B0CFCFF4B4B4ACC57BF4B5C57CC57DF4B8C57EC580C581C582C583F4B9C584C585CDA7C586F4BAC587F4BBC588C589C58AF4BCC58BC58CC58DC58EC58FC590C591C592CBD2C593F4BDC594C595C596C597F4BEC598C599C59AC59BC59CC59DC59EC59FF4BFC5A0C640C641C642C643F4DEC1BCBCE8C644C9ABD1DEE5F5C645C646C647C648DCB3D2D5C649C64ADCB4B0ACDCB5C64BC64CBDDAC64DDCB9C64EC64FC650D8C2C651DCB7D3F3C652C9D6DCBADCB6C653DCBBC3A2C654C655C656C657DCBCDCC5DCBDC658C659CEDFD6A5C65ADCCFC65BDCCDC65CC65DDCD2BDE6C2ABC65EDCB8DCCBDCCEDCBEB7D2B0C5DCC7D0BEDCC1BBA8C65FB7BCDCCCC660C661DCC6DCBFC7DBC662C663C664D1BFDCC0C665C666DCCAC667C668DCD0C669C66ACEADDCC2C66BDCC3DCC8DCC9B2D4DCD1CBD5C66CD4B7DCDBDCDFCCA6DCE6C66DC3E7DCDCC66EC66FBFC1DCD9C670B0FAB9B6DCE5DCD3C671DCC4DCD6C8F4BFE0C672C673C674C675C9BBC676C677C678B1BDC679D3A2C67AC67BDCDAC67CC67DDCD5C67EC6BBC680DCDEC681C682C683C684C685D7C2C3AFB7B6C7D1C3A9DCE2DCD8DCEBDCD4C686C687DCDDC688BEA5DCD7C689DCE0C68AC68BDCE3DCE4C68CDCF8C68DC68EDCE1DDA2DCE7C68FC690C691C692C693C694C695C696C697C698BCEBB4C4C699C69AC3A3B2E7DCFAC69BDCF2C69CDCEFC69DDCFCDCEED2F0B2E8C69EC8D7C8E3DCFBC69FDCEDC6A0C740C741DCF7C742C743DCF5C744C745BEA3DCF4C746B2DDC747C748C749C74AC74BDCF3BCF6DCE8BBC4C74CC0F3C74DC74EC74FC750C751BCD4DCE9DCEAC752DCF1DCF6DCF9B5B4C753C8D9BBE7DCFEDCFDD3ABDDA1DDA3DDA5D2F1DDA4DDA6DDA7D2A9C754C755C756C757C758C759C75ABAC9DDA9C75BC75CDDB6DDB1DDB4C75DC75EC75FC760C761C762C763DDB0C6CEC764C765C0F2C766C767C768C769C9AFC76AC76BC76CDCECDDAEC76DC76EC76FC770DDB7C771C772DCF0DDAFC773DDB8C774DDACC775C776C777C778C779C77AC77BDDB9DDB3DDADC4AAC77CC77DC77EC780DDA8C0B3C1ABDDAADDABC781DDB2BBF1DDB5D3A8DDBAC782DDBBC3A7C783C784DDD2DDBCC785C786C787DDD1C788B9BDC789C78ABED5C78BBEFAC78CC78DBACAC78EC78FC790C791DDCAC792DDC5C793DDBFC794C795C796B2CBDDC3C797DDCBB2A4DDD5C798C799C79ADDBEC79BC79CC79DC6D0DDD0C79EC79FC7A0C840C841DDD4C1E2B7C6C842C843C844C845C846DDCEDDCFC847C848C849DDC4C84AC84BC84CDDBDC84DDDCDCCD1C84EDDC9C84FC850C851C852DDC2C3C8C6BCCEAEDDCCC853DDC8C854C855C856C857C858C859DDC1C85AC85BC85CDDC6C2DCC85DC85EC85FC860C861C862D3A9D3AADDD3CFF4C8F8C863C864C865C866C867C868C869C86ADDE6C86BC86CC86DC86EC86FC870DDC7C871C872C873DDE0C2E4C874C875C876C877C878C879C87AC87BDDE1C87CC87DC87EC880C881C882C883C884C885C886DDD7C887C888C889C88AC88BD6F8C88CDDD9DDD8B8F0DDD6C88DC88EC88FC890C6CFC891B6ADC892C893C894C895C896DDE2C897BAF9D4E1DDE7C898C899C89AB4D0C89BDDDAC89CBFFBDDE3C89DDDDFC89EDDDDC89FC8A0C940C941C942C943C944B5D9C945C946C947C948DDDBDDDCDDDEC949BDAFDDE4C94ADDE5C94BC94CC94DC94EC94FC950C951C952DDF5C953C3C9C954C955CBE2C956C957C958C959DDF2C95AC95BC95CC95DC95EC95FC960C961C962C963C964C965C966D8E1C967C968C6D1C969DDF4C96AC96BC96CD5F4DDF3DDF0C96DC96EDDECC96FDDEFC970DDE8C971C972D0EEC973C974C975C976C8D8DDEEC977C978DDE9C979C97ADDEACBF2C97BDDEDC97CC97DB1CDC97EC980C981C982C983C984C0B6C985BCBBDDF1C986C987DDF7C988DDF6DDEBC989C98AC98BC98CC98DC5EEC98EC98FC990DDFBC991C992C993C994C995C996C997C998C999C99AC99BDEA4C99CC99DDEA3C99EC99FC9A0CA40CA41CA42CA43CA44CA45CA46CA47CA48DDF8CA49CA4ACA4BCA4CC3EFCA4DC2FBCA4ECA4FCA50D5E1CA51CA52CEB5CA53CA54CA55CA56DDFDCA57B2CCCA58CA59CA5ACA5BCA5CCA5DCA5ECA5FCA60C4E8CADFCA61CA62CA63CA64CA65CA66CA67CA68CA69CA6AC7BEDDFADDFCDDFEDEA2B0AAB1CECA6BCA6CCA6DCA6ECA6FDEACCA70CA71CA72CA73DEA6BDB6C8EFCA74CA75CA76CA77CA78CA79CA7ACA7BCA7CCA7DCA7EDEA1CA80CA81DEA5CA82CA83CA84CA85DEA9CA86CA87CA88CA89CA8ADEA8CA8BCA8CCA8DDEA7CA8ECA8FCA90CA91CA92CA93CA94CA95CA96DEADCA97D4CCCA98CA99CA9ACA9BDEB3DEAADEAECA9CCA9DC0D9CA9ECA9FCAA0CB40CB41B1A1DEB6CB42DEB1CB43CB44CB45CB46CB47CB48CB49DEB2CB4ACB4BCB4CCB4DCB4ECB4FCB50CB51CB52CB53CB54D1A6DEB5CB55CB56CB57CB58CB59CB5ACB5BDEAFCB5CCB5DCB5EDEB0CB5FD0BDCB60CB61CB62DEB4CAEDDEB9CB63CB64CB65CB66CB67CB68DEB8CB69DEB7CB6ACB6BCB6CCB6DCB6ECB6FCB70DEBBCB71CB72CB73CB74CB75CB76CB77BDE5CB78CB79CB7ACB7BCB7CB2D8C3EACB7DCB7EDEBACB80C5BACB81CB82CB83CB84CB85CB86DEBCCB87CB88CB89CB8ACB8BCB8CCB8DCCD9CB8ECB8FCB90CB91B7AACB92CB93CB94CB95CB96CB97CB98CB99CB9ACB9BCB9CCB9DCB9ECB9FCBA0CC40CC41D4E5CC42CC43CC44DEBDCC45CC46CC47CC48CC49DEBFCC4ACC4BCC4CCC4DCC4ECC4FCC50CC51CC52CC53CC54C4A2CC55CC56CC57CC58DEC1CC59CC5ACC5BCC5CCC5DCC5ECC5FCC60CC61CC62CC63CC64CC65CC66CC67CC68DEBECC69DEC0CC6ACC6BCC6CCC6DCC6ECC6FCC70CC71CC72CC73CC74CC75CC76CC77D5BACC78CC79CC7ADEC2CC7BCC7CCC7DCC7ECC80CC81CC82CC83CC84CC85CC86CC87CC88CC89CC8ACC8BF2AEBBA2C2B2C5B0C2C7CC8CCC8DF2AFCC8ECC8FCC90CC91CC92D0E9CC93CC94CC95D3DDCC96CC97CC98EBBDCC99CC9ACC9BCC9CCC9DCC9ECC9FCCA0B3E6F2B0CD40F2B1CD41CD42CAADCD43CD44CD45CD46CD47CD48CD49BAE7F2B3F2B5F2B4CBE4CFBAF2B2CAB4D2CFC2ECCD4ACD4BCD4CCD4DCD4ECD4FCD50CEC3F2B8B0F6F2B7CD51CD52CD53CD54CD55F2BECD56B2CFCD57CD58CD59CD5ACD5BCD5CD1C1F2BACD5DCD5ECD5FCD60CD61F2BCD4E9CD62CD63F2BBF2B6F2BFF2BDCD64F2B9CD65CD66F2C7F2C4F2C6CD67CD68F2CAF2C2F2C0CD69CD6ACD6BF2C5CD6CCD6DCD6ECD6FCD70D6FBCD71CD72CD73F2C1CD74C7F9C9DFCD75F2C8B9C6B5B0CD76CD77F2C3F2C9F2D0F2D6CD78CD79BBD7CD7ACD7BCD7CF2D5CDDCCD7DD6EBCD7ECD80F2D2F2D4CD81CD82CD83CD84B8F2CD85CD86CD87CD88F2CBCD89CD8ACD8BF2CEC2F9CD8CD5DDF2CCF2CDF2CFF2D3CD8DCD8ECD8FF2D9D3BCCD90CD91CD92CD93B6EACD94CAF1CD95B7E4F2D7CD96CD97CD98F2D8F2DAF2DDF2DBCD99CD9AF2DCCD9BCD9CCD9DCD9ED1D1F2D1CD9FCDC9CDA0CECFD6A9CE40F2E3CE41C3DBCE42F2E0CE43CE44C0AFF2ECF2DECE45F2E1CE46CE47CE48F2E8CE49CE4ACE4BCE4CF2E2CE4DCE4EF2E7CE4FCE50F2E6CE51CE52F2E9CE53CE54CE55F2DFCE56CE57F2E4F2EACE58CE59CE5ACE5BCE5CCE5DCE5ED3ACF2E5B2F5CE5FCE60F2F2CE61D0ABCE62CE63CE64CE65F2F5CE66CE67CE68BBC8CE69F2F9CE6ACE6BCE6CCE6DCE6ECE6FF2F0CE70CE71F2F6F2F8F2FACE72CE73CE74CE75CE76CE77CE78CE79F2F3CE7AF2F1CE7BCE7CCE7DBAFBCE7EB5FBCE80CE81CE82CE83F2EFF2F7F2EDF2EECE84CE85CE86F2EBF3A6CE87F3A3CE88CE89F3A2CE8ACE8BF2F4CE8CC8DACE8DCE8ECE8FCE90CE91F2FBCE92CE93CE94F3A5CE95CE96CE97CE98CE99CE9ACE9BC3F8CE9CCE9DCE9ECE9FCEA0CF40CF41CF42F2FDCF43CF44F3A7F3A9F3A4CF45F2FCCF46CF47CF48F3ABCF49F3AACF4ACF4BCF4CCF4DC2DDCF4ECF4FF3AECF50CF51F3B0CF52CF53CF54CF55CF56F3A1CF57CF58CF59F3B1F3ACCF5ACF5BCF5CCF5DCF5EF3AFF2FEF3ADCF5FCF60CF61CF62CF63CF64CF65F3B2CF66CF67CF68CF69F3B4CF6ACF6BCF6CCF6DF3A8CF6ECF6FCF70CF71F3B3CF72CF73CF74F3B5CF75CF76CF77CF78CF79CF7ACF7BCF7CCF7DCF7ED0B7CF80CF81CF82CF83F3B8CF84CF85CF86CF87D9F9CF88CF89CF8ACF8BCF8CCF8DF3B9CF8ECF8FCF90CF91CF92CF93CF94CF95F3B7CF96C8E4F3B6CF97CF98CF99CF9AF3BACF9BCF9CCF9DCF9ECF9FF3BBB4C0CFA0D040D041D042D043D044D045D046D047D048D049D04AD04BD04CD04DEEC3D04ED04FD050D051D052D053F3BCD054D055F3BDD056D057D058D1AAD059D05AD05BF4ACD0C6D05CD05DD05ED05FD060D061D0D0D1DCD062D063D064D065D066D067CFCED068D069BDD6D06AD1C3D06BD06CD06DD06ED06FD070D071BAE2E1E9D2C2F1C2B2B9D072D073B1EDF1C3D074C9C0B3C4D075D9F2D076CBA5D077F1C4D078D079D07AD07BD6D4D07CD07DD07ED080D081F1C5F4C0F1C6D082D4ACF1C7D083B0C0F4C1D084D085F4C2D086D087B4FCD088C5DBD089D08AD08BD08CCCBBD08DD08ED08FD0E4D090D091D092D093D094CDE0D095D096D097D098D099F1C8D09AD9F3D09BD09CD09DD09ED09FD0A0B1BBD140CFAED141D142D143B8A4D144D145D146D147D148F1CAD149D14AD14BD14CF1CBD14DD14ED14FD150B2C3C1D1D151D152D7B0F1C9D153D154F1CCD155D156D157D158F1CED159D15AD15BD9F6D15CD2E1D4A3D15DD15EF4C3C8B9D15FD160D161D162D163F4C4D164D165F1CDF1CFBFE3F1D0D166D167F1D4D168D169D16AD16BD16CD16DD16EF1D6F1D1D16FC9D1C5E1D170D171D172C2E3B9FCD173D174F1D3D175F1D5D176D177D178B9D3D179D17AD17BD17CD17DD17ED180F1DBD181D182D183D184D185BAD6D186B0FDF1D9D187D188D189D18AD18BF1D8F1D2F1DAD18CD18DD18ED18FD190F1D7D191D192D193C8ECD194D195D196D197CDCAF1DDD198D199D19AD19BE5BDD19CD19DD19EF1DCD19FF1DED1A0D240D241D242D243D244D245D246D247D248F1DFD249D24ACFE5D24BD24CD24DD24ED24FD250D251D252D253D254D255D256D257D258D259D25AD25BD25CD25DD25ED25FD260D261D262D263F4C5BDF3D264D265D266D267D268D269F1E0D26AD26BD26CD26DD26ED26FD270D271D272D273D274D275D276D277D278D279D27AD27BD27CD27DF1E1D27ED280D281CEF7D282D2AAD283F1FBD284D285B8B2D286D287D288D289D28AD28BD28CD28DD28ED28FD290D291D292D293D294D295D296D297D298D299D29AD29BD29CD29DD29ED29FD2A0D340D341D342D343D344D345D346D347D348D349D34AD34BD34CD34DD34ED34FD350D351D352D353D354D355D356D357D358D359D35AD35BD35CD35DD35EBCFBB9DBD35FB9E6C3D9CAD3EAE8C0C0BEF5EAE9EAEAEAEBD360EAECEAEDEAEEEAEFBDC7D361D362D363F5FBD364D365D366F5FDD367F5FED368F5FCD369D36AD36BD36CBDE2D36DF6A1B4A5D36ED36FD370D371F6A2D372D373D374F6A3D375D376D377ECB2D378D379D37AD37BD37CD37DD37ED380D381D382D383D384D1D4D385D386D387D388D389D38AD9EAD38BD38CD38DD38ED38FD390D391D392D393D394D395D396D397D398D399D39AD39BD39CD39DD39ED39FD3A0D440D441D442D443D444D445D446D447D448D449D44AD44BD44CD44DD44ED44FD450D451D452D453D454D455D456D457D458D459D45AD45BD45CD45DD45ED45FF6A4D460D461D462D463D464D465D466D467D468EEBAD469D46AD46BD46CD46DD46ED46FD470D471D472D473D474D475D476D477D478D479D47AD47BD47CD47DD47ED480D481D482D483D484D485D486D487D488D489D48AD48BD48CD48DD48ED48FD490D491D492D493D494D495D496D497D498D499D5B2D49AD49BD49CD49DD49ED49FD4A0D540D541D542D543D544D545D546D547D3FECCDCD548D549D54AD54BD54CD54DD54ED54FCAC4D550D551D552D553D554D555D556D557D558D559D55AD55BD55CD55DD55ED55FD560D561D562D563D564D565D566D567D568D569D56AD56BD56CD56DD56ED56FD570D571D572D573D574D575D576D577D578D579D57AD57BD57CD57DD57ED580D581D582D583D584D585D586D587D588D589D58AD58BD58CD58DD58ED58FD590D591D592D593D594D595D596D597D598D599D59AD59BD59CD59DD59ED59FD5A0D640D641D642D643D644D645D646D647D648D649D64AD64BD64CD64DD64ED64FD650D651D652D653D654D655D656D657D658D659D65AD65BD65CD65DD65ED65FD660D661D662E5C0D663D664D665D666D667D668D669D66AD66BD66CD66DD66ED66FD670D671D672D673D674D675D676D677D678D679D67AD67BD67CD67DD67ED680D681F6A5D682D683D684D685D686D687D688D689D68AD68BD68CD68DD68ED68FD690D691D692D693D694D695D696D697D698D699D69AD69BD69CD69DD69ED69FD6A0D740D741D742D743D744D745D746D747D748D749D74AD74BD74CD74DD74ED74FD750D751D752D753D754D755D756D757D758D759D75AD75BD75CD75DD75ED75FBEAFD760D761D762D763D764C6A9D765D766D767D768D769D76AD76BD76CD76DD76ED76FD770D771D772D773D774D775D776D777D778D779D77AD77BD77CD77DD77ED780D781D782D783D784D785D786D787D788D789D78AD78BD78CD78DD78ED78FD790D791D792D793D794D795D796D797D798DAA5BCC6B6A9B8BCC8CFBCA5DAA6DAA7CCD6C8C3DAA8C6FDD799D1B5D2E9D1B6BCC7D79ABDB2BBE4DAA9DAAAD1C8DAABD0EDB6EFC2DBD79BCBCFB7EDC9E8B7C3BEF7D6A4DAACDAADC6C0D7E7CAB6D79CD5A9CBDFD5EFDAAED6DFB4CADAB0DAAFD79DD2EBDAB1DAB2DAB3CAD4DAB4CAABDAB5DAB6B3CFD6EFDAB7BBB0B5AEDAB8DAB9B9EED1AFD2E8DABAB8C3CFEAB2EFDABBDABCD79EBDEBCEDCD3EFDABDCEF3DABED3D5BBE5DABFCBB5CBD0DAC0C7EBD6EEDAC1C5B5B6C1DAC2B7CCBFCEDAC3DAC4CBADDAC5B5F7DAC6C1C2D7BBDAC7CCB8D79FD2EAC4B1DAC8B5FDBBD1DAC9D0B3DACADACBCEBDDACCDACDDACEB2F7DAD1DACFD1E8DAD0C3D5DAD2D7A0DAD3DAD4DAD5D0BBD2A5B0F9DAD6C7ABDAD7BDF7C3A1DAD8DAD9C3FDCCB7DADADADBC0BEC6D7DADCDADDC7B4DADEDADFB9C8D840D841D842D843D844D845D846D847D848BBEDD849D84AD84BD84CB6B9F4F8D84DF4F9D84ED84FCDE3D850D851D852D853D854D855D856D857F5B9D858D859D85AD85BEBE0D85CD85DD85ED85FD860D861CFF3BBBFD862D863D864D865D866D867D868BAC0D4A5D869D86AD86BD86CD86DD86ED86FE1D9D870D871D872D873F5F4B1AAB2F2D874D875D876D877D878D879D87AF5F5D87BD87CF5F7D87DD87ED880BAD1F5F6D881C3B2D882D883D884D885D886D887D888F5F9D889D88AD88BF5F8D88CD88DD88ED88FD890D891D892D893D894D895D896D897D898D899D89AD89BD89CD89DD89ED89FD8A0D940D941D942D943D944D945D946D947D948D949D94AD94BD94CD94DD94ED94FD950D951D952D953D954D955D956D957D958D959D95AD95BD95CD95DD95ED95FD960D961D962D963D964D965D966D967D968D969D96AD96BD96CD96DD96ED96FD970D971D972D973D974D975D976D977D978D979D97AD97BD97CD97DD97ED980D981D982D983D984D985D986D987D988D989D98AD98BD98CD98DD98ED98FD990D991D992D993D994D995D996D997D998D999D99AD99BD99CD99DD99ED99FD9A0DA40DA41DA42DA43DA44DA45DA46DA47DA48DA49DA4ADA4BDA4CDA4DDA4EB1B4D5EAB8BADA4FB9B1B2C6D4F0CFCDB0DCD5CBBBF5D6CAB7B7CCB0C6B6B1E1B9BAD6FCB9E1B7A1BCFAEADAEADBCCF9B9F3EADCB4FBC3B3B7D1BAD8EADDD4F4EADEBCD6BBDFEADFC1DEC2B8D4DFD7CAEAE0EAE1EAE4EAE2EAE3C9DEB8B3B6C4EAE5CAEAC9CDB4CDDA50DA51E2D9C5E2EAE6C0B5DA52D7B8EAE7D7ACC8FCD8D3D8CDD4DEDA53D4F9C9C4D3AEB8D3B3E0DA54C9E2F4F6DA55DA56DA57BAD5DA58F4F7DA59DA5AD7DFDA5BDA5CF4F1B8B0D5D4B8CFC6F0DA5DDA5EDA5FDA60DA61DA62DA63DA64DA65B3C3DA66DA67F4F2B3ACDA68DA69DA6ADA6BD4BDC7F7DA6CDA6DDA6EDA6FDA70F4F4DA71DA72F4F3DA73DA74DA75DA76DA77DA78DA79DA7ADA7BDA7CCCCBDA7DDA7EDA80C8A4DA81DA82DA83DA84DA85DA86DA87DA88DA89DA8ADA8BDA8CDA8DF4F5DA8ED7E3C5BFF5C0DA8FDA90F5BBDA91F5C3DA92F5C2DA93D6BAF5C1DA94DA95DA96D4BEF5C4DA97F5CCDA98DA99DA9ADA9BB0CFB5F8DA9CF5C9F5CADA9DC5DCDA9EDA9FDAA0DB40F5C5F5C6DB41DB42F5C7F5CBDB43BEE0F5C8B8FADB44DB45DB46F5D0F5D3DB47DB48DB49BFE7DB4AB9F2F5BCF5CDDB4BDB4CC2B7DB4DDB4EDB4FCCF8DB50BCF9DB51F5CEF5CFF5D1B6E5F5D2DB52F5D5DB53DB54DB55DB56DB57DB58DB59F5BDDB5ADB5BDB5CF5D4D3BBDB5DB3ECDB5EDB5FCCA4DB60DB61DB62DB63F5D6DB64DB65DB66DB67DB68DB69DB6ADB6BF5D7BEE1F5D8DB6CDB6DCCDFF5DBDB6EDB6FDB70DB71DB72B2C8D7D9DB73F5D9DB74F5DAF5DCDB75F5E2DB76DB77DB78F5E0DB79DB7ADB7BF5DFF5DDDB7CDB7DF5E1DB7EDB80F5DEF5E4F5E5DB81CCE3DB82DB83E5BFB5B8F5E3F5E8CCA3DB84DB85DB86DB87DB88F5E6F5E7DB89DB8ADB8BDB8CDB8DDB8EF5BEDB8FDB90DB91DB92DB93DB94DB95DB96DB97DB98DB99DB9AB1C4DB9BDB9CF5BFDB9DDB9EB5C5B2E4DB9FF5ECF5E9DBA0B6D7DC40F5EDDC41F5EADC42DC43DC44DC45DC46F5EBDC47DC48B4DADC49D4EADC4ADC4BDC4CF5EEDC4DB3F9DC4EDC4FDC50DC51DC52DC53DC54F5EFF5F1DC55DC56DC57F5F0DC58DC59DC5ADC5BDC5CDC5DDC5EF5F2DC5FF5F3DC60DC61DC62DC63DC64DC65DC66DC67DC68DC69DC6ADC6BC9EDB9AADC6CDC6DC7FBDC6EDC6FB6E3DC70DC71DC72DC73DC74DC75DC76CCC9DC77DC78DC79DC7ADC7BDC7CDC7DDC7EDC80DC81DC82DC83DC84DC85DC86DC87DC88DC89DC8AEAA6DC8BDC8CDC8DDC8EDC8FDC90DC91DC92DC93DC94DC95DC96DC97DC98DC99DC9ADC9BDC9CDC9DDC9EDC9FDCA0DD40DD41DD42DD43DD44DD45DD46DD47DD48DD49DD4ADD4BDD4CDD4DDD4EDD4FDD50DD51DD52DD53DD54DD55DD56DD57DD58DD59DD5ADD5BDD5CDD5DDD5EDD5FDD60DD61DD62DD63DD64DD65DD66DD67DD68DD69DD6ADD6BDD6CDD6DDD6EDD6FDD70DD71DD72DD73DD74DD75DD76DD77DD78DD79DD7ADD7BDD7CDD7DDD7EDD80DD81DD82DD83DD84DD85DD86DD87DD88DD89DD8ADD8BDD8CDD8DDD8EDD8FDD90DD91DD92DD93DD94DD95DD96DD97DD98DD99DD9ADD9BDD9CDD9DDD9EDD9FDDA0DE40DE41DE42DE43DE44DE45DE46DE47DE48DE49DE4ADE4BDE4CDE4DDE4EDE4FDE50DE51DE52DE53DE54DE55DE56DE57DE58DE59DE5ADE5BDE5CDE5DDE5EDE5FDE60B3B5D4FEB9ECD0F9DE61E9EDD7AAE9EEC2D6C8EDBAE4E9EFE9F0E9F1D6E1E9F2E9F3E9F5E9F4E9F6E9F7C7E1E9F8D4D8E9F9BDCEDE62E9FAE9FBBDCFE9FCB8A8C1BEE9FDB1B2BBD4B9F5E9FEDE63EAA1EAA2EAA3B7F8BCADDE64CAE4E0CED4AFCFBDD5B7EAA4D5DEEAA5D0C1B9BCDE65B4C7B1D9DE66DE67DE68C0B1DE69DE6ADE6BDE6CB1E6B1E7DE6DB1E8DE6EDE6FDE70DE71B3BDC8E8DE72DE73DE74DE75E5C1DE76DE77B1DFDE78DE79DE7AC1C9B4EFDE7BDE7CC7A8D3D8DE7DC6F9D1B8DE7EB9FDC2F5DE80DE81DE82DE83DE84D3ADDE85D4CBBDFCDE86E5C2B7B5E5C3DE87DE88BBB9D5E2DE89BDF8D4B6CEA5C1ACB3D9DE8ADE8BCCF6DE8CE5C6E5C4E5C8DE8DE5CAE5C7B5CFC6C8DE8EB5FCE5C5DE8FCAF6DE90DE91E5C9DE92DE93DE94C3D4B1C5BCA3DE95DE96DE97D7B7DE98DE99CDCBCBCDCACACCD3E5CCE5CBC4E6DE9ADE9BD1A1D1B7E5CDDE9CE5D0DE9DCDB8D6F0E5CFB5DDDE9ECDBEDE9FE5D1B6BADEA0DF40CDA8B9E4DF41CAC5B3D1CBD9D4ECE5D2B7EADF42DF43DF44E5CEDF45DF46DF47DF48DF49DF4AE5D5B4FEE5D6DF4BDF4CDF4DDF4EDF4FE5D3E5D4DF50D2DDDF51DF52C2DFB1C6DF53D3E2DF54DF55B6DDCBECDF56E5D7DF57DF58D3F6DF59DF5ADF5BDF5CDF5DB1E9DF5EB6F4E5DAE5D8E5D9B5C0DF5FDF60DF61D2C5E5DCDF62DF63E5DEDF64DF65DF66DF67DF68DF69E5DDC7B2DF6AD2A3DF6BDF6CE5DBDF6DDF6EDF6FDF70D4E2D5DADF71DF72DF73DF74DF75E5E0D7F1DF76DF77DF78DF79DF7ADF7BDF7CE5E1DF7DB1DCD1FBDF7EE5E2E5E4DF80DF81DF82DF83E5E3DF84DF85E5E5DF86DF87DF88DF89DF8AD2D8DF8BB5CBDF8CE7DFDF8DDAF5DF8EDAF8DF8FDAF6DF90DAF7DF91DF92DF93DAFAD0CFC4C7DF94DF95B0EEDF96DF97DF98D0B0DF99DAF9DF9AD3CABAAADBA2C7F1DF9BDAFCDAFBC9DBDAFDDF9CDBA1D7DEDAFEC1DADF9DDF9EDBA5DF9FDFA0D3F4E040E041DBA7DBA4E042DBA8E043E044BDBCE045E046E047C0C9DBA3DBA6D6A3E048DBA9E049E04AE04BDBADE04CE04DE04EDBAEDBACBAC2E04FE050E051BFA4DBABE052E053E054DBAAD4C7B2BFE055E056DBAFE057B9F9E058DBB0E059E05AE05BE05CB3BBE05DE05EE05FB5A6E060E061E062E063B6BCDBB1E064E065E066B6F5E067DBB2E068E069E06AE06BE06CE06DE06EE06FE070E071E072E073E074E075E076E077E078E079E07AE07BB1C9E07CE07DE07EE080DBB4E081E082E083DBB3DBB5E084E085E086E087E088E089E08AE08BE08CE08DE08EDBB7E08FDBB6E090E091E092E093E094E095E096DBB8E097E098E099E09AE09BE09CE09DE09EE09FDBB9E0A0E140DBBAE141E142D3CFF4FAC7F5D7C3C5E4F4FCF4FDF4FBE143BEC6E144E145E146E147D0EFE148E149B7D3E14AE14BD4CDCCAAE14CE14DF5A2F5A1BAA8F4FECBD6E14EE14FE150F5A4C0D2E151B3EAE152CDAAF5A5F5A3BDB4F5A8E153F5A9BDCDC3B8BFE1CBE1F5AAE154E155E156F5A6F5A7C4F0E157E158E159E15AE15BF5ACE15CB4BCE15DD7EDE15EB4D7F5ABF5AEE15FE160F5ADF5AFD0D1E161E162E163E164E165E166E167C3D1C8A9E168E169E16AE16BE16CE16DF5B0F5B1E16EE16FE170E171E172E173F5B2E174E175F5B3F5B4F5B5E176E177E178E179F5B7F5B6E17AE17BE17CE17DF5B8E17EE180E181E182E183E184E185E186E187E188E189E18AB2C9E18BD3D4CACDE18CC0EFD6D8D2B0C1BFE18DBDF0E18EE18FE190E191E192E193E194E195E196E197B8AAE198E199E19AE19BE19CE19DE19EE19FE1A0E240E241E242E243E244E245E246E247E248E249E24AE24BE24CE24DE24EE24FE250E251E252E253E254E255E256E257E258E259E25AE25BE25CE25DE25EE25FE260E261E262E263E264E265E266E267E268E269E26AE26BE26CE26DE26EE26FE270E271E272E273E274E275E276E277E278E279E27AE27BE27CE27DE27EE280E281E282E283E284E285E286E287E288E289E28AE28BE28CE28DE28EE28FE290E291E292E293E294E295E296E297E298E299E29AE29BE29CE29DE29EE29FE2A0E340E341E342E343E344E345E346E347E348E349E34AE34BE34CE34DE34EE34FE350E351E352E353E354E355E356E357E358E359E35AE35BE35CE35DE35EE35FE360E361E362E363E364E365E366E367E368E369E36AE36BE36CE36DBCF8E36EE36FE370E371E372E373E374E375E376E377E378E379E37AE37BE37CE37DE37EE380E381E382E383E384E385E386E387F6C6E388E389E38AE38BE38CE38DE38EE38FE390E391E392E393E394E395E396E397E398E399E39AE39BE39CE39DE39EE39FE3A0E440E441E442E443E444E445F6C7E446E447E448E449E44AE44BE44CE44DE44EE44FE450E451E452E453E454E455E456E457E458E459E45AE45BE45CE45DE45EF6C8E45FE460E461E462E463E464E465E466E467E468E469E46AE46BE46CE46DE46EE46FE470E471E472E473E474E475E476E477E478E479E47AE47BE47CE47DE47EE480E481E482E483E484E485E486E487E488E489E48AE48BE48CE48DE48EE48FE490E491E492E493E494E495E496E497E498E499E49AE49BE49CE49DE49EE49FE4A0E540E541E542E543E544E545E546E547E548E549E54AE54BE54CE54DE54EE54FE550E551E552E553E554E555E556E557E558E559E55AE55BE55CE55DE55EE55FE560E561E562E563E564E565E566E567E568E569E56AE56BE56CE56DE56EE56FE570E571E572E573F6C9E574E575E576E577E578E579E57AE57BE57CE57DE57EE580E581E582E583E584E585E586E587E588E589E58AE58BE58CE58DE58EE58FE590E591E592E593E594E595E596E597E598E599E59AE59BE59CE59DE59EE59FF6CAE5A0E640E641E642E643E644E645E646E647E648E649E64AE64BE64CE64DE64EE64FE650E651E652E653E654E655E656E657E658E659E65AE65BE65CE65DE65EE65FE660E661E662F6CCE663E664E665E666E667E668E669E66AE66BE66CE66DE66EE66FE670E671E672E673E674E675E676E677E678E679E67AE67BE67CE67DE67EE680E681E682E683E684E685E686E687E688E689E68AE68BE68CE68DE68EE68FE690E691E692E693E694E695E696E697E698E699E69AE69BE69CE69DF6CBE69EE69FE6A0E740E741E742E743E744E745E746E747F7E9E748E749E74AE74BE74CE74DE74EE74FE750E751E752E753E754E755E756E757E758E759E75AE75BE75CE75DE75EE75FE760E761E762E763E764E765E766E767E768E769E76AE76BE76CE76DE76EE76FE770E771E772E773E774E775E776E777E778E779E77AE77BE77CE77DE77EE780E781E782E783E784E785E786E787E788E789E78AE78BE78CE78DE78EE78FE790E791E792E793E794E795E796E797E798E799E79AE79BE79CE79DE79EE79FE7A0E840E841E842E843E844E845E846E847E848E849E84AE84BE84CE84DE84EF6CDE84FE850E851E852E853E854E855E856E857E858E859E85AE85BE85CE85DE85EE85FE860E861E862E863E864E865E866E867E868E869E86AE86BE86CE86DE86EE86FE870E871E872E873E874E875E876E877E878E879E87AF6CEE87BE87CE87DE87EE880E881E882E883E884E885E886E887E888E889E88AE88BE88CE88DE88EE88FE890E891E892E893E894EEC4EEC5EEC6D5EBB6A4EEC8EEC7EEC9EECAC7A5EECBEECCE895B7B0B5F6EECDEECFE896EECEE897B8C6EED0EED1EED2B6DBB3AED6D3C4C6B1B5B8D6EED3EED4D4BFC7D5BEFBCED9B9B3EED6EED5EED8EED7C5A5EED9EEDAC7AEEEDBC7AFEEDCB2A7EEDDEEDEEEDFEEE0EEE1D7EAEEE2EEE3BCD8EEE4D3CBCCFAB2ACC1E5EEE5C7A6C3ADE898EEE6EEE7EEE8EEE9EEEAEEEBEEECE899EEEDEEEEEEEFE89AE89BEEF0EEF1EEF2EEF4EEF3E89CEEF5CDADC2C1EEF6EEF7EEF8D5A1EEF9CFB3EEFAEEFBE89DEEFCEEFDEFA1EEFEEFA2B8F5C3FAEFA3EFA4BDC2D2BFB2F9EFA5EFA6EFA7D2F8EFA8D6FDEFA9C6CCE89EEFAAEFABC1B4EFACCFFACBF8EFAEEFADB3FAB9F8EFAFEFB0D0E2EFB1EFB2B7E6D0BFEFB3EFB4EFB5C8F1CCE0EFB6EFB7EFB8EFB9EFBAD5E0EFBBB4EDC3AAEFBCE89FEFBDEFBEEFBFE8A0CEFDEFC0C2E0B4B8D7B6BDF5E940CFC7EFC3EFC1EFC2EFC4B6A7BCFCBEE2C3CCEFC5EFC6E941EFC7EFCFEFC8EFC9EFCAC7C2EFF1B6CDEFCBE942EFCCEFCDB6C6C3BEEFCEE943EFD0EFD1EFD2D5F2E944EFD3C4F7E945EFD4C4F8EFD5EFD6B8E4B0F7EFD7EFD8EFD9E946EFDAEFDBEFDCEFDDE947EFDEBEB5EFE1EFDFEFE0E948EFE2EFE3C1CDEFE4EFE5EFE6EFE7EFE8EFE9EFEAEFEBEFECC0D8E949EFEDC1ADEFEEEFEFEFF0E94AE94BCFE2E94CE94DE94EE94FE950E951E952E953B3A4E954E955E956E957E958E959E95AE95BE95CE95DE95EE95FE960E961E962E963E964E965E966E967E968E969E96AE96BE96CE96DE96EE96FE970E971E972E973E974E975E976E977E978E979E97AE97BE97CE97DE97EE980E981E982E983E984E985E986E987E988E989E98AE98BE98CE98DE98EE98FE990E991E992E993E994E995E996E997E998E999E99AE99BE99CE99DE99EE99FE9A0EA40EA41EA42EA43EA44EA45EA46EA47EA48EA49EA4AEA4BEA4CEA4DEA4EEA4FEA50EA51EA52EA53EA54EA55EA56EA57EA58EA59EA5AEA5BC3C5E3C5C9C1E3C6EA5CB1D5CECAB4B3C8F2E3C7CFD0E3C8BCE4E3C9E3CAC3C6D5A2C4D6B9EBCEC5E3CBC3F6E3CCEA5DB7A7B8F3BAD2E3CDE3CED4C4E3CFEA5EE3D0D1CBE3D1E3D2E3D3E3D4D1D6E3D5B2FBC0BBE3D6EA5FC0ABE3D7E3D8E3D9EA60E3DAE3DBEA61B8B7DAE2EA62B6D3EA63DAE4DAE3EA64EA65EA66EA67EA68EA69EA6ADAE6EA6BEA6CEA6DC8EEEA6EEA6FDAE5B7C0D1F4D2F5D5F3BDD7EA70EA71EA72EA73D7E8DAE8DAE7EA74B0A2CDD3EA75DAE9EA76B8BDBCCAC2BDC2A4B3C2DAEAEA77C2AAC4B0BDB5EA78EA79CFDEEA7AEA7BEA7CDAEBC9C2EA7DEA7EEA80EA81EA82B1DDEA83EA84EA85DAECEA86B6B8D4BAEA87B3FDEA88EA89DAEDD4C9CFD5C5E3EA8ADAEEEA8BEA8CEA8DEA8EEA8FDAEFEA90DAF0C1EACCD5CFDDEA91EA92EA93EA94EA95EA96EA97EA98EA99EA9AEA9BEA9CEA9DD3E7C2A1EA9EDAF1EA9FEAA0CBE5EB40DAF2EB41CBE6D2FEEB42EB43EB44B8F4EB45EB46DAF3B0AFCFB6EB47EB48D5CFEB49EB4AEB4BEB4CEB4DEB4EEB4FEB50EB51EB52CBEDEB53EB54EB55EB56EB57EB58EB59EB5ADAF4EB5BEB5CE3C4EB5DEB5EC1A5EB5FEB60F6BFEB61EB62F6C0F6C1C4D1EB63C8B8D1E3EB64EB65D0DBD1C5BCAFB9CDEB66EFF4EB67EB68B4C6D3BAF6C2B3FBEB69EB6AF6C3EB6BEB6CB5F1EB6DEB6EEB6FEB70EB71EB72EB73EB74EB75EB76F6C5EB77EB78EB79EB7AEB7BEB7CEB7DD3EAF6A7D1A9EB7EEB80EB81EB82F6A9EB83EB84EB85F6A8EB86EB87C1E3C0D7EB88B1A2EB89EB8AEB8BEB8CCEEDEB8DD0E8F6ABEB8EEB8FCFF6EB90F6AAD5F0F6ACC3B9EB91EB92EB93BBF4F6AEF6ADEB94EB95EB96C4DEEB97EB98C1D8EB99EB9AEB9BEB9CEB9DCBAAEB9ECFBCEB9FEBA0EC40EC41EC42EC43EC44EC45EC46EC47EC48F6AFEC49EC4AF6B0EC4BEC4CF6B1EC4DC2B6EC4EEC4FEC50EC51EC52B0D4C5F9EC53EC54EC55EC56F6B2EC57EC58EC59EC5AEC5BEC5CEC5DEC5EEC5FEC60EC61EC62EC63EC64EC65EC66EC67EC68EC69C7E0F6A6EC6AEC6BBEB8EC6CEC6DBEB2EC6EB5E5EC6FEC70B7C7EC71BFBFC3D2C3E6EC72EC73D8CCEC74EC75EC76B8EFEC77EC78EC79EC7AEC7BEC7CEC7DEC7EEC80BDF9D1A5EC81B0D0EC82EC83EC84EC85EC86F7B0EC87EC88EC89EC8AEC8BEC8CEC8DEC8EF7B1EC8FEC90EC91EC92EC93D0ACEC94B0B0EC95EC96EC97F7B2F7B3EC98F7B4EC99EC9AEC9BC7CAEC9CEC9DEC9EEC9FECA0ED40ED41BECFED42ED43F7B7ED44ED45ED46ED47ED48ED49ED4AF7B6ED4BB1DEED4CF7B5ED4DED4EF7B8ED4FF7B9ED50ED51ED52ED53ED54ED55ED56ED57ED58ED59ED5AED5BED5CED5DED5EED5FED60ED61ED62ED63ED64ED65ED66ED67ED68ED69ED6AED6BED6CED6DED6EED6FED70ED71ED72ED73ED74ED75ED76ED77ED78ED79ED7AED7BED7CED7DED7EED80ED81CEA4C8CDED82BAABE8B8E8B9E8BABEC2ED83ED84ED85ED86ED87D2F4ED88D4CFC9D8ED89ED8AED8BED8CED8DED8EED8FED90ED91ED92ED93ED94ED95ED96ED97ED98ED99ED9AED9BED9CED9DED9EED9FEDA0EE40EE41EE42EE43EE44EE45EE46EE47EE48EE49EE4AEE4BEE4CEE4DEE4EEE4FEE50EE51EE52EE53EE54EE55EE56EE57EE58EE59EE5AEE5BEE5CEE5DEE5EEE5FEE60EE61EE62EE63EE64EE65EE66EE67EE68EE69EE6AEE6BEE6CEE6DEE6EEE6FEE70EE71EE72EE73EE74EE75EE76EE77EE78EE79EE7AEE7BEE7CEE7DEE7EEE80EE81EE82EE83EE84EE85EE86EE87EE88EE89EE8AEE8BEE8CEE8DEE8EEE8FEE90EE91EE92EE93EE94EE95EE96EE97EE98EE99EE9AEE9BEE9CEE9DEE9EEE9FEEA0EF40EF41EF42EF43EF44EF45D2B3B6A5C7EAF1FCCFEECBB3D0EBE7EFCDE7B9CBB6D9F1FDB0E4CBCCF1FED4A4C2ADC1ECC6C4BEB1F2A1BCD5EF46F2A2F2A3EF47F2A4D2C3C6B5EF48CDC7F2A5EF49D3B1BFC5CCE2EF4AF2A6F2A7D1D5B6EEF2A8F2A9B5DFF2AAF2ABEF4BB2FCF2ACF2ADC8A7EF4CEF4DEF4EEF4FEF50EF51EF52EF53EF54EF55EF56EF57EF58EF59EF5AEF5BEF5CEF5DEF5EEF5FEF60EF61EF62EF63EF64EF65EF66EF67EF68EF69EF6AEF6BEF6CEF6DEF6EEF6FEF70EF71B7E7EF72EF73ECA9ECAAECABEF74ECACEF75EF76C6AEECADECAEEF77EF78EF79B7C9CAB3EF7AEF7BEF7CEF7DEF7EEF80EF81E2B8F7CFEF82EF83EF84EF85EF86EF87EF88EF89EF8AEF8BEF8CEF8DEF8EEF8FEF90EF91EF92EF93EF94EF95EF96EF97EF98EF99EF9AEF9BEF9CEF9DEF9EEF9FEFA0F040F041F042F043F044F7D0F045F046B2CDF047F048F049F04AF04BF04CF04DF04EF04FF050F051F052F053F054F055F056F057F058F059F05AF05BF05CF05DF05EF05FF060F061F062F063F7D1F064F065F066F067F068F069F06AF06BF06CF06DF06EF06FF070F071F072F073F074F075F076F077F078F079F07AF07BF07CF07DF07EF080F081F082F083F084F085F086F087F088F089F7D3F7D2F08AF08BF08CF08DF08EF08FF090F091F092F093F094F095F096E2BBF097BCA2F098E2BCE2BDE2BEE2BFE2C0E2C1B7B9D2FBBDA4CACEB1A5CBC7F099E2C2B6FCC8C4E2C3F09AF09BBDC8F09CB1FDE2C4F09DB6F6E2C5C4D9F09EF09FE2C6CFDAB9DDE2C7C0A1F0A0E2C8B2F6F140E2C9F141C1F3E2CAE2CBC2F8E2CCE2CDE2CECAD7D8B8D9E5CFE3F142F143F144F145F146F147F148F149F14AF14BF14CF0A5F14DF14EDCB0F14FF150F151F152F153F154F155F156F157F158F159F15AF15BF15CF15DF15EF15FF160F161F162F163F164F165F166F167F168F169F16AF16BF16CF16DF16EF16FF170F171F172F173F174F175F176F177F178F179F17AF17BF17CF17DF17EF180F181F182F183F184F185F186F187F188F189F18AF18BF18CF18DF18EF18FF190F191F192F193F194F195F196F197F198F199F19AF19BF19CF19DF19EF19FF1A0F240F241F242F243F244F245F246F247F248F249F24AF24BF24CF24DF24EF24FF250F251F252F253F254F255F256F257F258F259F25AF25BF25CF25DF25EF25FF260F261F262F263F264F265F266F267F268F269F26AF26BF26CF26DF26EF26FF270F271F272F273F274F275F276F277F278F279F27AF27BF27CF27DF27EF280F281F282F283F284F285F286F287F288F289F28AF28BF28CF28DF28EF28FF290F291F292F293F294F295F296F297F298F299F29AF29BF29CF29DF29EF29FF2A0F340F341F342F343F344F345F346F347F348F349F34AF34BF34CF34DF34EF34FF350F351C2EDD4A6CDD4D1B1B3DBC7FDF352B2B5C2BFE6E0CABBE6E1E6E2BED4E6E3D7A4CDD5E6E5BCDDE6E4E6E6E6E7C2EEF353BDBEE6E8C2E6BAA7E6E9F354E6EAB3D2D1E9F355F356BFA5E6EBC6EFE6ECE6EDF357F358E6EEC6ADE6EFF359C9A7E6F0E6F1E6F2E5B9E6F3E6F4C2E2E6F5E6F6D6E8E6F7F35AE6F8B9C7F35BF35CF35DF35EF35FF360F361F7BBF7BAF362F363F364F365F7BEF7BCBAA1F366F7BFF367F7C0F368F369F36AF7C2F7C1F7C4F36BF36CF7C3F36DF36EF36FF370F371F7C5F7C6F372F373F374F375F7C7F376CBE8F377F378F379F37AB8DFF37BF37CF37DF37EF380F381F7D4F382F7D5F383F384F385F386F7D6F387F388F389F38AF7D8F38BF7DAF38CF7D7F38DF38EF38FF390F391F392F393F394F395F7DBF396F7D9F397F398F399F39AF39BF39CF39DD7D7F39EF39FF3A0F440F7DCF441F442F443F444F445F446F7DDF447F448F449F7DEF44AF44BF44CF44DF44EF44FF450F451F452F453F454F7DFF455F456F457F7E0F458F459F45AF45BF45CF45DF45EF45FF460F461F462DBCBF463F464D8AAF465F466F467F468F469F46AF46BF46CE5F7B9EDF46DF46EF46FF470BFFDBBEAF7C9C6C7F7C8F471F7CAF7CCF7CBF472F473F474F7CDF475CEBAF476F7CEF477F478C4A7F479F47AF47BF47CF47DF47EF480F481F482F483F484F485F486F487F488F489F48AF48BF48CF48DF48EF48FF490F491F492F493F494F495F496F497F498F499F49AF49BF49CF49DF49EF49FF4A0F540F541F542F543F544F545F546F547F548F549F54AF54BF54CF54DF54EF54FF550F551F552F553F554F555F556F557F558F559F55AF55BF55CF55DF55EF55FF560F561F562F563F564F565F566F567F568F569F56AF56BF56CF56DF56EF56FF570F571F572F573F574F575F576F577F578F579F57AF57BF57CF57DF57EF580F581F582F583F584F585F586F587F588F589F58AF58BF58CF58DF58EF58FF590F591F592F593F594F595F596F597F598F599F59AF59BF59CF59DF59EF59FF5A0F640F641F642F643F644F645F646F647F648F649F64AF64BF64CF64DF64EF64FF650F651F652F653F654F655F656F657F658F659F65AF65BF65CF65DF65EF65FF660F661F662F663F664F665F666F667F668F669F66AF66BF66CF66DF66EF66FF670F671F672F673F674F675F676F677F678F679F67AF67BF67CF67DF67EF680F681F682F683F684F685F686F687F688F689F68AF68BF68CF68DF68EF68FF690F691F692F693F694F695F696F697F698F699F69AF69BF69CF69DF69EF69FF6A0F740F741F742F743F744F745F746F747F748F749F74AF74BF74CF74DF74EF74FF750F751F752F753F754F755F756F757F758F759F75AF75BF75CF75DF75EF75FF760F761F762F763F764F765F766F767F768F769F76AF76BF76CF76DF76EF76FF770F771F772F773F774F775F776F777F778F779F77AF77BF77CF77DF77EF780D3E3F781F782F6CFF783C2B3F6D0F784F785F6D1F6D2F6D3F6D4F786F787F6D6F788B1ABF6D7F789F6D8F6D9F6DAF78AF6DBF6DCF78BF78CF78DF78EF6DDF6DECFCAF78FF6DFF6E0F6E1F6E2F6E3F6E4C0F0F6E5F6E6F6E7F6E8F6E9F790F6EAF791F6EBF6ECF792F6EDF6EEF6EFF6F0F6F1F6F2F6F3F6F4BEA8F793F6F5F6F6F6F7F6F8F794F795F796F797F798C8FAF6F9F6FAF6FBF6FCF799F79AF6FDF6FEF7A1F7A2F7A3F7A4F7A5F79BF79CF7A6F7A7F7A8B1EEF7A9F7AAF7ABF79DF79EF7ACF7ADC1DBF7AEF79FF7A0F7AFF840F841F842F843F844F845F846F847F848F849F84AF84BF84CF84DF84EF84FF850F851F852F853F854F855F856F857F858F859F85AF85BF85CF85DF85EF85FF860F861F862F863F864F865F866F867F868F869F86AF86BF86CF86DF86EF86FF870F871F872F873F874F875F876F877F878F879F87AF87BF87CF87DF87EF880F881F882F883F884F885F886F887F888F889F88AF88BF88CF88DF88EF88FF890F891F892F893F894F895F896F897F898F899F89AF89BF89CF89DF89EF89FF8A0F940F941F942F943F944F945F946F947F948F949F94AF94BF94CF94DF94EF94FF950F951F952F953F954F955F956F957F958F959F95AF95BF95CF95DF95EF95FF960F961F962F963F964F965F966F967F968F969F96AF96BF96CF96DF96EF96FF970F971F972F973F974F975F976F977F978F979F97AF97BF97CF97DF97EF980F981F982F983F984F985F986F987F988F989F98AF98BF98CF98DF98EF98FF990F991F992F993F994F995F996F997F998F999F99AF99BF99CF99DF99EF99FF9A0FA40FA41FA42FA43FA44FA45FA46FA47FA48FA49FA4AFA4BFA4CFA4DFA4EFA4FFA50FA51FA52FA53FA54FA55FA56FA57FA58FA59FA5AFA5BFA5CFA5DFA5EFA5FFA60FA61FA62FA63FA64FA65FA66FA67FA68FA69FA6AFA6BFA6CFA6DFA6EFA6FFA70FA71FA72FA73FA74FA75FA76FA77FA78FA79FA7AFA7BFA7CFA7DFA7EFA80FA81FA82FA83FA84FA85FA86FA87FA88FA89FA8AFA8BFA8CFA8DFA8EFA8FFA90FA91FA92FA93FA94FA95FA96FA97FA98FA99FA9AFA9BFA9CFA9DFA9EFA9FFAA0FB40FB41FB42FB43FB44FB45FB46FB47FB48FB49FB4AFB4BFB4CFB4DFB4EFB4FFB50FB51FB52FB53FB54FB55FB56FB57FB58FB59FB5AFB5BC4F1F0AFBCA6F0B0C3F9FB5CC5B8D1BBFB5DF0B1F0B2F0B3F0B4F0B5D1BCFB5ED1ECFB5FF0B7F0B6D4A7FB60CDD2F0B8F0BAF0B9F0BBF0BCFB61FB62B8EBF0BDBAE8FB63F0BEF0BFBEE9F0C0B6ECF0C1F0C2F0C3F0C4C8B5F0C5F0C6FB64F0C7C5F4FB65F0C8FB66FB67FB68F0C9FB69F0CAF7BDFB6AF0CBF0CCF0CDFB6BF0CEFB6CFB6DFB6EFB6FF0CFBAD7FB70F0D0F0D1F0D2F0D3F0D4F0D5F0D6F0D8FB71FB72D3A5F0D7FB73F0D9FB74FB75FB76FB77FB78FB79FB7AFB7BFB7CFB7DF5BAC2B9FB7EFB80F7E4FB81FB82FB83FB84F7E5F7E6FB85FB86F7E7FB87FB88FB89FB8AFB8BFB8CF7E8C2B4FB8DFB8EFB8FFB90FB91FB92FB93FB94FB95F7EAFB96F7EBFB97FB98FB99FB9AFB9BFB9CC2F3FB9DFB9EFB9FFBA0FC40FC41FC42FC43FC44FC45FC46FC47FC48F4F0FC49FC4AFC4BF4EFFC4CFC4DC2E9FC4EF7E1F7E2FC4FFC50FC51FC52FC53BBC6FC54FC55FC56FC57D9E4FC58FC59FC5ACAF2C0E8F0A4FC5BBADAFC5CFC5DC7ADFC5EFC5FFC60C4ACFC61FC62F7ECF7EDF7EEFC63F7F0F7EFFC64F7F1FC65FC66F7F4FC67F7F3FC68F7F2F7F5FC69FC6AFC6BFC6CF7F6FC6DFC6EFC6FFC70FC71FC72FC73FC74FC75EDE9FC76EDEAEDEBFC77F6BCFC78FC79FC7AFC7BFC7CFC7DFC7EFC80FC81FC82FC83FC84F6BDFC85F6BEB6A6FC86D8BEFC87FC88B9C4FC89FC8AFC8BD8BBFC8CDCB1FC8DFC8EFC8FFC90FC91FC92CAF3FC93F7F7FC94FC95FC96FC97FC98FC99FC9AFC9BFC9CF7F8FC9DFC9EF7F9FC9FFCA0FD40FD41FD42FD43FD44F7FBFD45F7FAFD46B1C7FD47F7FCF7FDFD48FD49FD4AFD4BFD4CF7FEFD4DFD4EFD4FFD50FD51FD52FD53FD54FD55FD56FD57C6EBECB4FD58FD59FD5AFD5BFD5CFD5DFD5EFD5FFD60FD61FD62FD63FD64FD65FD66FD67FD68FD69FD6AFD6BFD6CFD6DFD6EFD6FFD70FD71FD72FD73FD74FD75FD76FD77FD78FD79FD7AFD7BFD7CFD7DFD7EFD80FD81FD82FD83FD84FD85B3DDF6B3FD86FD87F6B4C1E4F6B5F6B6F6B7F6B8F6B9F6BAC8A3F6BBFD88FD89FD8AFD8BFD8CFD8DFD8EFD8FFD90FD91FD92FD93C1FAB9A8EDE8FD94FD95FD96B9EAD9DFFD97FD98FD99FD9AFD9'; + + for (var i = 0; i < str.length; i++) { + var c = str.charAt(i), + code = str.charCodeAt(i); + if (c == " ") strOut += "+"; + else if (code >= 19968 && code <= 40869) { + var index = code - 19968; + strOut += "%" + z.substr(index * 4, 2) + "%" + z.substr(index * 4 + 2, 2); + } else { + strOut += "%" + str.charCodeAt(i).toString(16); + } + } + return strOut; + }, + /* 改变图片大小 */ + scale: function (img, w, h) { + var ow = img.width, + oh = img.height; + + 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'; + } + }, + getImageData: function(){ + var _this = this, + key = $G('searchTxt').value, + type = $G('searchType').value, + keepOriginName = editor.options.keepOriginName ? "1" : "0", + url = "http://image.baidu.com/i?ct=201326592&cl=2&lm=-1&st=-1&tn=baiduimagejson&istype=2&rn=32&fm=index&pv=&word=" + _this.encodeToGb2312(key) + type + "&keeporiginname=" + keepOriginName + "&" + +new Date; + + $G('searchListUl').innerHTML = lang.searchLoading; + ajax.request(url, { + 'dataType': 'jsonp', + 'charset': 'GB18030', + 'onsuccess':function(json){ + var list = []; + if(json && json.data) { + for(var i = 0; i < json.data.length; i++) { + if(json.data[i].objURL) { + list.push({ + title: json.data[i].fromPageTitleEnc, + src: json.data[i].objURL, + url: json.data[i].fromURL + }); + } + } + } + _this.setList(list); + }, + 'onerror':function(){ + $G('searchListUl').innerHTML = lang.searchRetry; + } + }); + }, + /* 添加图片到列表界面上 */ + setList: function (list) { + var i, item, p, img, link, _this = this, + listUl = $G('searchListUl'); + + listUl.innerHTML = ''; + if(list.length) { + for (i = 0; i < list.length; i++) { + item = document.createElement('li'); + p = document.createElement('p'); + img = document.createElement('img'); + link = document.createElement('a'); + + img.onload = function () { + _this.scale(this, 113, 113); + }; + img.width = 113; + img.setAttribute('src', list[i].src); + + link.href = list[i].url; + link.target = '_blank'; + link.title = list[i].title; + link.innerHTML = list[i].title; + + p.appendChild(img); + item.appendChild(p); + item.appendChild(link); + listUl.appendChild(item); + } + } else { + listUl.innerHTML = lang.searchRetry; + } + }, + getInsertList: function () { + var child, + src, + align = getAlign(), + list = [], + items = $G('searchListUl').children; + for(var i = 0; i < items.length; i++) { + child = items[i].firstChild && items[i].firstChild.firstChild; + if(child.tagName && child.tagName.toLowerCase() == 'img' && domUtils.hasClass(items[i], 'selected')) { + src = child.src; + list.push({ + src: src, + _src: src, + alt: src.substr(src.lastIndexOf('/') + 1), + floatStyle: align + }); + } + } + return list; + } + }; + +})(); diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/image/images/alignicon.jpg b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/image/images/bg.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/image/images/icons.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/image/images/progress.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/image/images/success.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/image/images/success.png b/yshop-drink-vue3/public/UEditor22/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
    + +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/internal.js b/yshop-drink-vue3/public/UEditor22/dialogs/internal.js new file mode 100644 index 0000000..1f6413b --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/link/link.html b/yshop-drink-vue3/public/UEditor22/dialogs/link/link.html new file mode 100644 index 0000000..317a650 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/link/link.html @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/map/map.html b/yshop-drink-vue3/public/UEditor22/dialogs/map/map.html new file mode 100644 index 0000000..9857f2f --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/map/map.html @@ -0,0 +1,135 @@ + + + + + + + + + + +
    + + + + + + + + + +
    ::
    +
    + +
    + + + + + diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/map/show.html b/yshop-drink-vue3/public/UEditor22/dialogs/map/show.html new file mode 100644 index 0000000..329cfeb --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/map/show.html @@ -0,0 +1,118 @@ + + + + + + + 百度地图API自定义地图 + + + + + + + +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/music/music.css b/yshop-drink-vue3/public/UEditor22/dialogs/music/music.css new file mode 100644 index 0000000..82d6118 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/music/music.css @@ -0,0 +1,30 @@ +.wrapper{margin: 5px 10px;} + +.searchBar{height:30px;padding:7px 0 3px;text-align:center;} +.searchBtn{font-size:13px;height:24px;} + +.resultBar{width:460px;margin:5px auto;border: 1px solid #CCC;border-radius: 5px;box-shadow: 2px 2px 5px #D3D6DA;overflow: hidden;} + +.listPanel{overflow: hidden;} +.panelon{display:block;} +.paneloff{display:none} + +.page{width:220px;margin:20px auto;overflow: hidden;} +.pageon{float:right;width:24px;line-height:24px;height:24px;margin-right: 5px;background: none;border: none;color: #000;font-weight: bold;text-align:center} +.pageoff{float:right;width:24px;line-height:24px;height:24px;cursor:pointer;background-color: #fff; + border: 1px solid #E7ECF0;color: #2D64B3;margin-right: 5px;text-decoration: none;text-align:center;} + +.m-box{width:460px;} +.m-m{float: left;line-height: 20px;height: 20px;} +.m-h{height:24px;line-height:24px;padding-left: 46px;background-color:#FAFAFA;border-bottom: 1px solid #DAD8D8;font-weight: bold;font-size: 12px;color: #333;} +.m-l{float:left;width:40px; } +.m-t{float:left;width:140px;} +.m-s{float:left;width:110px;} +.m-z{float:left;width:100px;} +.m-try-t{float: left;width: 60px;;} + +.m-try{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/try_music.gif') no-repeat ;} +.m-trying{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/stop_music.gif') no-repeat ;} + +.loading{width:95px;height:7px;font-size:7px;margin:60px auto;background:url(http://static.tieba.baidu.com/tb/editor/images/loading.gif) no-repeat} +.empty{width:300px;height:40px;padding:2px;margin:50px auto;line-height:40px; color:#006699;text-align:center;} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/music/music.html b/yshop-drink-vue3/public/UEditor22/dialogs/music/music.html new file mode 100644 index 0000000..7dad7a7 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/music/music.html @@ -0,0 +1,32 @@ + + + + + 插入音乐 + + + + +
    + +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/music/music.js b/yshop-drink-vue3/public/UEditor22/dialogs/music/music.js new file mode 100644 index 0000000..e43ea54 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/music/music.js @@ -0,0 +1,192 @@ +function Music() { + this.init(); +} +(function () { + var pages = [], + panels = [], + selectedItem = null; + Music.prototype = { + total:70, + pageSize:10, + dataUrl:"http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.common", + playerUrl:"http://box.baidu.com/widget/flash/bdspacesong.swf", + + init:function () { + var me = this; + domUtils.on($G("J_searchName"), "keyup", function (event) { + var e = window.event || event; + if (e.keyCode == 13) { + me.dosearch(); + } + }); + domUtils.on($G("J_searchBtn"), "click", function () { + me.dosearch(); + }); + }, + callback:function (data) { + var me = this; + me.data = data.song_list; + setTimeout(function () { + $G('J_resultBar').innerHTML = me._renderTemplate(data.song_list); + }, 300); + }, + dosearch:function () { + var me = this; + selectedItem = null; + var key = $G('J_searchName').value; + if (utils.trim(key) == "")return false; + key = encodeURIComponent(key); + me._sent(key); + }, + doselect:function (i) { + var me = this; + if (typeof i == 'object') { + selectedItem = i; + } else if (typeof i == 'number') { + selectedItem = me.data[i]; + } + }, + onpageclick:function (id) { + var me = this; + for (var i = 0; i < pages.length; i++) { + $G(pages[i]).className = 'pageoff'; + $G(panels[i]).className = 'paneloff'; + } + $G('page' + id).className = 'pageon'; + $G('panel' + id).className = 'panelon'; + }, + listenTest:function (elem) { + var me = this, + view = $G('J_preview'), + is_play_action = (elem.className == 'm-try'), + old_trying = me._getTryingElem(); + + if (old_trying) { + old_trying.className = 'm-try'; + view.innerHTML = ''; + } + if (is_play_action) { + elem.className = 'm-trying'; + view.innerHTML = me._buildMusicHtml(me._getUrl(true)); + } + }, + _sent:function (param) { + var me = this; + $G('J_resultBar').innerHTML = '
    '; + + utils.loadFile(document, { + src:me.dataUrl + '&query=' + param + '&page_size=' + me.total + '&callback=music.callback&.r=' + Math.random(), + tag:"script", + type:"text/javascript", + defer:"defer" + }); + }, + _removeHtml:function (str) { + var reg = /<\s*\/?\s*[^>]*\s*>/gi; + return str.replace(reg, ""); + }, + _getUrl:function (isTryListen) { + var me = this; + var param = 'from=tiebasongwidget&url=&name=' + encodeURIComponent(me._removeHtml(selectedItem.title)) + '&artist=' + + encodeURIComponent(me._removeHtml(selectedItem.author)) + '&extra=' + + encodeURIComponent(me._removeHtml(selectedItem.album_title)) + + '&autoPlay='+isTryListen+'' + '&loop=true'; + return me.playerUrl + "?" + param; + }, + _getTryingElem:function () { + var s = $G('J_listPanel').getElementsByTagName('span'); + + for (var i = 0; i < s.length; i++) { + if (s[i].className == 'm-trying') + return s[i]; + } + return null; + }, + _buildMusicHtml:function (playerUrl) { + var html = ' 12) + return s.substring(0, 5) + '...'; + if (!s) s = " "; + return s; + }, + _rebuildData:function (data) { + var me = this, + newData = [], + d = me.pageSize, + itembox; + for (var i = 0; i < data.length; i++) { + if ((i + d) % d == 0) { + itembox = []; + newData.push(itembox) + } + itembox.push(data[i]); + } + return newData; + }, + _renderTemplate:function (data) { + var me = this; + if (data.length == 0)return '
    ' + lang.emptyTxt + '
    '; + data = me._rebuildData(data); + var s = [], p = [], t = []; + s.push('
    '); + p.push('
    '); + for (var i = 0, tmpList; tmpList = data[i++];) { + panels.push('panel' + i); + pages.push('page' + i); + if (i == 1) { + s.push('
    '); + if (data.length != 1) { + t.push('
    ' + (i ) + '
    '); + } + } else { + s.push('
    '); + t.push('
    ' + (i ) + '
    '); + } + s.push('
    '); + s.push('
    ' + lang.chapter + '' + lang.singer + + '' + lang.special + '' + lang.listenTest + '
    '); + for (var j = 0, tmpObj; tmpObj = tmpList[j++];) { + s.push(''); + } + s.push('
    '); + s.push('
    '); + } + t.reverse(); + p.push(t.join('')); + s.push('
    '); + p.push('
    '); + return s.join('') + p.join(''); + }, + exec:function () { + var me = this; + if (selectedItem == null) return; + $G('J_preview').innerHTML = ""; + editor.execCommand('music', { + url:me._getUrl(false), + width:400, + height:95 + }); + } + }; +})(); + + + diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/preview/preview.html b/yshop-drink-vue3/public/UEditor22/dialogs/preview/preview.html new file mode 100644 index 0000000..f6b433b --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/preview/preview.html @@ -0,0 +1,40 @@ + + + + + + + + + + +
    + +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/addimg.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/empty.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/emptyH.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/eraser.png b/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/eraser.png new file mode 100644 index 0000000000000000000000000000000000000000..63e87cecb90ed3ac0e4acbc257c6dddae5311e09 GIT binary patch literal 43271 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
    h>dGcdSlWeEFl}k2MrUUS^bR;=$@vE@GsDa9 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 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/redoH.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/size.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/images/undo.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/scrawl.css b/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/scrawl.css new file mode 100644 index 0000000..4ea30c6 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/scrawl.html b/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/scrawl.html new file mode 100644 index 0000000..13f6ab1 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/scrawl.html @@ -0,0 +1,95 @@ + + + + + + + + + + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + + 1 + 3 + 5 + 7 +
    +
    + + 1 + 3 + 5 + 7 +
    +
    +
    + + +
    + +
    + +
    +
    +
    + + + + +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/scrawl.js b/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/scrawl.js new file mode 100644 index 0000000..cadb0cb --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/scrawl/scrawl.js @@ -0,0 +1,671 @@ +/** + * 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 || ''; + imgObj.title = responseObj.title || ''; + 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/yshop-drink-vue3/public/UEditor22/dialogs/searchreplace/searchreplace.html b/yshop-drink-vue3/public/UEditor22/dialogs/searchreplace/searchreplace.html new file mode 100644 index 0000000..b3eaaa5 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/searchreplace/searchreplace.html @@ -0,0 +1,102 @@ + + + + + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    :
    + +
    + + +
    +   +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    + +
    + + + + +
    +   +
    + +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/searchreplace/searchreplace.js b/yshop-drink-vue3/public/UEditor22/dialogs/searchreplace/searchreplace.js new file mode 100644 index 0000000..b55bb7a --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/searchreplace/searchreplace.js @@ -0,0 +1,164 @@ +/** + * 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 () { + 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"); \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/snapscreen/snapscreen.html b/yshop-drink-vue3/public/UEditor22/dialogs/snapscreen/snapscreen.html new file mode 100644 index 0000000..f359326 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/snapscreen/snapscreen.html @@ -0,0 +1,58 @@ + + + + + + + + + +
    +

    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/spechars/spechars.html b/yshop-drink-vue3/public/UEditor22/dialogs/spechars/spechars.html new file mode 100644 index 0000000..d92f515 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/spechars/spechars.html @@ -0,0 +1,21 @@ + + + + + + + + + +
    +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/spechars/spechars.js b/yshop-drink-vue3/public/UEditor22/dialogs/spechars/spechars.js new file mode 100644 index 0000000..bd3b36d --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/table/dragicon.png b/yshop-drink-vue3/public/UEditor22/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 + + + + + + + +
    +
    +
    +

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

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

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

    +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/table/edittable.js b/yshop-drink-vue3/public/UEditor22/dialogs/table/edittable.js new file mode 100644 index 0000000..11dbee7 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/table/edittd.html b/yshop-drink-vue3/public/UEditor22/dialogs/table/edittd.html new file mode 100644 index 0000000..49a52f7 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/table/edittd.html @@ -0,0 +1,61 @@ + + + + + + + + +
    + + +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/table/edittip.html b/yshop-drink-vue3/public/UEditor22/dialogs/table/edittip.html new file mode 100644 index 0000000..954f7bb --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/table/edittip.html @@ -0,0 +1,33 @@ + + + + 表格删除提示 + + + + +
    +
    + +
    +
    + +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/template/config.js b/yshop-drink-vue3/public/UEditor22/dialogs/template/config.js new file mode 100644 index 0000000..42e474b --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/template/images/bg.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/template/images/pre2.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/template/images/pre3.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/template/images/pre4.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/template/template.css b/yshop-drink-vue3/public/UEditor22/dialogs/template/template.css new file mode 100644 index 0000000..2658bd2 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/template/template.html b/yshop-drink-vue3/public/UEditor22/dialogs/template/template.html new file mode 100644 index 0000000..9d71ece --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/template/template.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/template/template.js b/yshop-drink-vue3/public/UEditor22/dialogs/template/template.js new file mode 100644 index 0000000..0f1cdad --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/video/images/bg.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/video/images/file-icons.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/video/images/file-icons.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/video/images/icons.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/video/images/icons.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/video/images/left_focus.jpg b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/video/images/none_focus.jpg b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/video/images/right_focus.jpg b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/video/images/success.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/dialogs/video/images/success.png b/yshop-drink-vue3/public/UEditor22/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# + + + + + + + + +

    + + + + + + + + + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/video/video.js b/yshop-drink-vue3/public/UEditor22/dialogs/video/video.js new file mode 100644 index 0000000..7b9378b --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/video/video.js @@ -0,0 +1,797 @@ +/** + * 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; + + window.onload = function(){ + $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'); + } + } + }); + } + } + + 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/player.php/sid/$1/v.swf') + .replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, "www.youtube.com/v/$2") + .replace(/youtu.be\/(\w+)$/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") + .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.unhtmlForUrl(conUrl); + + $G("preview").innerHTML = '
    '+lang.urlError+'
    '+ + '' + + ''; + } + + + /* 插入上传视频 */ + function insertUpload(){ + var videoObjs=[], + uploadDir = editor.getOpt('videoUrlPrefix'), + width = parseInt($G('upload_width').value, 10) || 420, + height = parseInt($G('upload_height').value, 10) || 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参数 + header['X_Requested_With'] = 'XMLHttpRequest'; + // HaoChuan9421 + if(editor.options.headers && Object.prototype.toString.apply(editor.options.headers) === "[object Object]"){ + for(var key in editor.options.headers){ + header[key] = editor.options.headers[key] + } + } + }); + + 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/yshop-drink-vue3/public/UEditor22/dialogs/webapp/webapp.html b/yshop-drink-vue3/public/UEditor22/dialogs/webapp/webapp.html new file mode 100644 index 0000000..73f8dc2 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/webapp/webapp.html @@ -0,0 +1,53 @@ + + + + + + + + + +
    +
    +
    + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/wordimage/fClipboard_ueditor.swf b/yshop-drink-vue3/public/UEditor22/dialogs/wordimage/fClipboard_ueditor.swf new file mode 100644 index 0000000000000000000000000000000000000000..ac5d27f81d2111c8581a042564c5275edd751e1c GIT binary patch literal 1908 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
    ukC`1!p{x~JlsV7pDC73)_A$z0@ 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 + * 参数的意思:beforeBegin<span>afterBegin this is span! beforeEnd</span> afterEnd
    + * 此外,如果使用本函数插入带有script标签的HTML字符串,script标签对应的脚本将不会被执行。 + * + * @shortcut insertHTML + * @meta standard + * + * @returns {HTMLElement} 目标元素 + */ +baidu.dom.insertHTML = function (element, position, html) { + element = baidu.dom.g(element); + var range,begin; + if (element.insertAdjacentHTML && !baidu.browser.opera) { + element.insertAdjacentHTML(position, html); + } else { + range = element.ownerDocument.createRange(); + position = position.toUpperCase(); + if (position == 'AFTERBEGIN' || position == 'BEFOREEND') { + range.selectNodeContents(element); + range.collapse(position == 'AFTERBEGIN'); + } else { + begin = position == 'BEFOREBEGIN'; + range[begin ? 'setStartBefore' : 'setEndAfter'](element); + range.collapse(begin); + } + range.insertNode(range.createContextualFragment(html)); + } + return element; +}; + +baidu.insertHTML = baidu.dom.insertHTML; + +/** + * 操作flash对象的方法,包括创建flash对象、获取flash对象以及判断flash插件的版本号 + * @namespace baidu.swf + */ +baidu.swf = baidu.swf || {}; + + +/** + * 浏览器支持的flash插件版本 + * @property version 浏览器支持的flash插件版本 + * @grammar baidu.swf.version + * @return {String} 版本号 + * @meta standard + */ +baidu.swf.version = (function () { + var n = navigator; + if (n.plugins && n.mimeTypes.length) { + var plugin = n.plugins["Shockwave Flash"]; + if (plugin && plugin.description) { + return plugin.description + .replace(/([a-zA-Z]|\s)+/, "") + .replace(/(\s)+r/, ".") + ".0"; + } + } else if (window.ActiveXObject && !window.opera) { + for (var i = 12; i >= 2; i--) { + try { + var c = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.' + i); + if (c) { + var version = c.GetVariable("$version"); + return version.replace(/WIN/g,'').replace(/,/g,'.'); + } + } catch(e) {} + } + } +})(); + +/** + * 操作字符串的方法 + * @namespace baidu.string + */ +baidu.string = baidu.string || {}; + + +/** + * 对目标字符串进行html编码 + * @name baidu.string.encodeHTML + * @function + * @grammar baidu.string.encodeHTML(source) + * @param {string} source 目标字符串 + * @remark + * 编码字符有5个:&<>"' + * @shortcut encodeHTML + * @meta standard + * @see baidu.string.decodeHTML + * + * @returns {string} html编码后的字符串 + */ +baidu.string.encodeHTML = function (source) { + return String(source) + .replace(/&/g,'&') + .replace(//g,'>') + .replace(/"/g, """) + .replace(/'/g, "'"); +}; + +baidu.encodeHTML = baidu.string.encodeHTML; + +/** + * 创建flash对象的html字符串 + * @name baidu.swf.createHTML + * @function + * @grammar baidu.swf.createHTML(options) + * + * @param {Object} options 创建flash的选项参数 + * @param {string} options.id 要创建的flash的标识 + * @param {string} options.url flash文件的url + * @param {String} options.errorMessage 未安装flash player或flash player版本号过低时的提示 + * @param {string} options.ver 最低需要的flash player版本号 + * @param {string} options.width flash的宽度 + * @param {string} options.height flash的高度 + * @param {string} options.align flash的对齐方式,允许值:middle/left/right/top/bottom + * @param {string} options.base 设置用于解析swf文件中的所有相对路径语句的基本目录或URL + * @param {string} options.bgcolor swf文件的背景色 + * @param {string} options.salign 设置缩放的swf文件在由width和height设置定义的区域内的位置。允许值:l/r/t/b/tl/tr/bl/br + * @param {boolean} options.menu 是否显示右键菜单,允许值:true/false + * @param {boolean} options.loop 播放到最后一帧时是否重新播放,允许值: true/false + * @param {boolean} options.play flash是否在浏览器加载时就开始播放。允许值:true/false + * @param {string} options.quality 设置flash播放的画质,允许值:low/medium/high/autolow/autohigh/best + * @param {string} options.scale 设置flash内容如何缩放来适应设置的宽高。允许值:showall/noborder/exactfit + * @param {string} options.wmode 设置flash的显示模式。允许值:window/opaque/transparent + * @param {string} options.allowscriptaccess 设置flash与页面的通信权限。允许值:always/never/sameDomain + * @param {string} options.allownetworking 设置swf文件中允许使用的网络API。允许值:all/internal/none + * @param {boolean} options.allowfullscreen 是否允许flash全屏。允许值:true/false + * @param {boolean} options.seamlesstabbing 允许设置执行无缝跳格,从而使用户能跳出flash应用程序。该参数只能在安装Flash7及更高版本的Windows中使用。允许值:true/false + * @param {boolean} options.devicefont 设置静态文本对象是否以设备字体呈现。允许值:true/false + * @param {boolean} options.swliveconnect 第一次加载flash时浏览器是否应启动Java。允许值:true/false + * @param {Object} options.vars 要传递给flash的参数,支持JSON或string类型。 + * + * @see baidu.swf.create + * @meta standard + * @returns {string} flash对象的html字符串 + */ +baidu.swf.createHTML = function (options) { + options = options || {}; + var version = baidu.swf.version, + needVersion = options['ver'] || '6.0.0', + vUnit1, vUnit2, i, k, len, item, tmpOpt = {}, + encodeHTML = baidu.string.encodeHTML; + for (k in options) { + tmpOpt[k] = options[k]; + } + options = tmpOpt; + if (version) { + version = version.split('.'); + needVersion = needVersion.split('.'); + for (i = 0; i < 3; i++) { + vUnit1 = parseInt(version[i], 10); + vUnit2 = parseInt(needVersion[i], 10); + if (vUnit2 < vUnit1) { + break; + } else if (vUnit2 > vUnit1) { + return ''; + } + } + } else { + return ''; + } + + var vars = options['vars'], + objProperties = ['classid', 'codebase', 'id', 'width', 'height', 'align']; + options['align'] = options['align'] || 'middle'; + options['classid'] = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'; + options['codebase'] = 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'; + options['movie'] = options['url'] || ''; + delete options['vars']; + delete options['url']; + if ('string' == typeof vars) { + options['flashvars'] = vars; + } else { + var fvars = []; + for (k in vars) { + item = vars[k]; + fvars.push(k + "=" + encodeURIComponent(item)); + } + options['flashvars'] = fvars.join('&'); + } + var str = [''); + var params = { + 'wmode' : 1, + 'scale' : 1, + 'quality' : 1, + 'play' : 1, + 'loop' : 1, + 'menu' : 1, + 'salign' : 1, + 'bgcolor' : 1, + 'base' : 1, + 'allowscriptaccess' : 1, + 'allownetworking' : 1, + 'allowfullscreen' : 1, + 'seamlesstabbing' : 1, + 'devicefont' : 1, + 'swliveconnect' : 1, + 'flashvars' : 1, + 'movie' : 1 + }; + + for (k in options) { + item = options[k]; + k = k.toLowerCase(); + if (params[k] && (item || item === false || item === 0)) { + str.push(''); + } + } + options['src'] = options['movie']; + options['name'] = options['id']; + delete options['id']; + delete options['movie']; + delete options['classid']; + delete options['codebase']; + options['type'] = 'application/x-shockwave-flash'; + options['pluginspage'] = 'http://www.macromedia.com/go/getflashplayer'; + str.push(''); + + return str.join(''); +}; + + +/** + * 在页面中创建一个flash对象 + * @name baidu.swf.create + * @function + * @grammar baidu.swf.create(options[, container]) + * + * @param {Object} options 创建flash的选项参数 + * @param {string} options.id 要创建的flash的标识 + * @param {string} options.url flash文件的url + * @param {String} options.errorMessage 未安装flash player或flash player版本号过低时的提示 + * @param {string} options.ver 最低需要的flash player版本号 + * @param {string} options.width flash的宽度 + * @param {string} options.height flash的高度 + * @param {string} options.align flash的对齐方式,允许值:middle/left/right/top/bottom + * @param {string} options.base 设置用于解析swf文件中的所有相对路径语句的基本目录或URL + * @param {string} options.bgcolor swf文件的背景色 + * @param {string} options.salign 设置缩放的swf文件在由width和height设置定义的区域内的位置。允许值:l/r/t/b/tl/tr/bl/br + * @param {boolean} options.menu 是否显示右键菜单,允许值:true/false + * @param {boolean} options.loop 播放到最后一帧时是否重新播放,允许值: true/false + * @param {boolean} options.play flash是否在浏览器加载时就开始播放。允许值:true/false + * @param {string} options.quality 设置flash播放的画质,允许值:low/medium/high/autolow/autohigh/best + * @param {string} options.scale 设置flash内容如何缩放来适应设置的宽高。允许值:showall/noborder/exactfit + * @param {string} options.wmode 设置flash的显示模式。允许值:window/opaque/transparent + * @param {string} options.allowscriptaccess 设置flash与页面的通信权限。允许值:always/never/sameDomain + * @param {string} options.allownetworking 设置swf文件中允许使用的网络API。允许值:all/internal/none + * @param {boolean} options.allowfullscreen 是否允许flash全屏。允许值:true/false + * @param {boolean} options.seamlesstabbing 允许设置执行无缝跳格,从而使用户能跳出flash应用程序。该参数只能在安装Flash7及更高版本的Windows中使用。允许值:true/false + * @param {boolean} options.devicefont 设置静态文本对象是否以设备字体呈现。允许值:true/false + * @param {boolean} options.swliveconnect 第一次加载flash时浏览器是否应启动Java。允许值:true/false + * @param {Object} options.vars 要传递给flash的参数,支持JSON或string类型。 + * + * @param {HTMLElement|string} [container] flash对象的父容器元素,不传递该参数时在当前代码位置创建flash对象。 + * @meta standard + * @see baidu.swf.createHTML,baidu.swf.getMovie + */ +baidu.swf.create = function (options, target) { + options = options || {}; + var html = baidu.swf.createHTML(options) + || options['errorMessage'] + || ''; + + if (target && 'string' == typeof target) { + target = document.getElementById(target); + } + baidu.dom.insertHTML( target || document.body ,'beforeEnd',html ); +}; +/** + * 判断是否为ie浏览器 + * @name baidu.browser.ie + * @field + * @grammar baidu.browser.ie + * @returns {Number} IE版本号 + */ +baidu.browser.ie = baidu.ie = /msie (\d+\.\d+)/i.test(navigator.userAgent) ? (document.documentMode || + RegExp['\x241']) : undefined; + +/** + * 移除数组中的项 + * @name baidu.array.remove + * @function + * @grammar baidu.array.remove(source, match) + * @param {Array} source 需要移除项的数组 + * @param {Any} match 要移除的项 + * @meta standard + * @see baidu.array.removeAt + * + * @returns {Array} 移除后的数组 + */ +baidu.array.remove = function (source, match) { + var len = source.length; + + while (len--) { + if (len in source && source[len] === match) { + source.splice(len, 1); + } + } + return source; +}; + +/** + * 判断目标参数是否Array对象 + * @name baidu.lang.isArray + * @function + * @grammar baidu.lang.isArray(source) + * @param {Any} source 目标参数 + * @meta standard + * @see baidu.lang.isString,baidu.lang.isObject,baidu.lang.isNumber,baidu.lang.isElement,baidu.lang.isBoolean,baidu.lang.isDate + * + * @returns {boolean} 类型判断结果 + */ +baidu.lang.isArray = function (source) { + return '[object Array]' == Object.prototype.toString.call(source); +}; + + + +/** + * 将一个变量转换成array + * @name baidu.lang.toArray + * @function + * @grammar baidu.lang.toArray(source) + * @param {mix} source 需要转换成array的变量 + * @version 1.3 + * @meta standard + * @returns {array} 转换后的array + */ +baidu.lang.toArray = function (source) { + if (source === null || source === undefined) + return []; + if (baidu.lang.isArray(source)) + return source; + if (typeof source.length !== 'number' || typeof source === 'string' || baidu.lang.isFunction(source)) { + return [source]; + } + if (source.item) { + var l = source.length, array = new Array(l); + while (l--) + array[l] = source[l]; + return array; + } + + return [].slice.call(source); +}; + +/** + * 获得flash对象的实例 + * @name baidu.swf.getMovie + * @function + * @grammar baidu.swf.getMovie(name) + * @param {string} name flash对象的名称 + * @see baidu.swf.create + * @meta standard + * @returns {HTMLElement} flash对象的实例 + */ +baidu.swf.getMovie = function (name) { + var movie = document[name], ret; + return baidu.browser.ie == 9 ? + movie && movie.length ? + (ret = baidu.array.remove(baidu.lang.toArray(movie),function(item){ + return item.tagName.toLowerCase() != "embed"; + })).length == 1 ? ret[0] : ret + : movie + : movie || window[name]; +}; + + +baidu.flash._Base = (function(){ + + var prefix = 'bd__flash__'; + + /** + * 创建一个随机的字符串 + * @private + * @return {String} + */ + function _createString(){ + return prefix + Math.floor(Math.random() * 2147483648).toString(36); + }; + + /** + * 检查flash状态 + * @private + * @param {Object} target flash对象 + * @return {Boolean} + */ + function _checkReady(target){ + if(typeof target !== 'undefined' && typeof target.flashInit !== 'undefined' && target.flashInit()){ + return true; + }else{ + return false; + } + }; + + /** + * 调用之前进行压栈的函数 + * @private + * @param {Array} callQueue 调用队列 + * @param {Object} target flash对象 + * @return {Null} + */ + function _callFn(callQueue, target){ + var result = null; + + callQueue = callQueue.reverse(); + baidu.each(callQueue, function(item){ + result = target.call(item.fnName, item.params); + item.callBack(result); + }); + }; + + /** + * 为传入的匿名函数创建函数名 + * @private + * @param {String|Function} fun 传入的匿名函数或者函数名 + * @return {String} + */ + function _createFunName(fun){ + var name = ''; + + if(baidu.lang.isFunction(fun)){ + name = _createString(); + window[name] = function(){ + fun.apply(window, arguments); + }; + + return name; + }else if(baidu.lang.isString){ + return fun; + } + }; + + /** + * 绘制flash + * @private + * @param {Object} options 创建参数 + * @return {Object} + */ + function _render(options){ + if(!options.id){ + options.id = _createString(); + } + + var container = options.container || ''; + delete(options.container); + + baidu.swf.create(options, container); + + return baidu.swf.getMovie(options.id); + }; + + return function(options, callBack){ + var me = this, + autoRender = (typeof options.autoRender !== 'undefined' ? options.autoRender : true), + createOptions = options.createOptions || {}, + target = null, + isReady = false, + callQueue = [], + timeHandle = null, + callBack = callBack || []; + + /** + * 将flash文件绘制到页面上 + * @public + * @return {Null} + */ + me.render = function(){ + target = _render(createOptions); + + if(callBack.length > 0){ + baidu.each(callBack, function(funName, index){ + callBack[index] = _createFunName(options[funName] || new Function()); + }); + } + me.call('setJSFuncName', [callBack]); + }; + + /** + * 返回flash状态 + * @return {Boolean} + */ + me.isReady = function(){ + return isReady; + }; + + /** + * 调用flash接口的统一入口 + * @param {String} fnName 调用的函数名 + * @param {Array} params 传入的参数组成的数组,若不许要参数,需传入空数组 + * @param {Function} [callBack] 异步调用后将返回值作为参数的调用回调函数,如无返回值,可以不传入此参数 + * @return {Null} + */ + me.call = function(fnName, params, callBack){ + if(!fnName) return null; + callBack = callBack || new Function(); + + var result = null; + + if(isReady){ + result = target.call(fnName, params); + callBack(result); + }else{ + callQueue.push({ + fnName: fnName, + params: params, + callBack: callBack + }); + + (!timeHandle) && (timeHandle = setInterval(_check, 200)); + } + }; + + /** + * 为传入的匿名函数创建函数名 + * @public + * @param {String|Function} fun 传入的匿名函数或者函数名 + * @return {String} + */ + me.createFunName = function(fun){ + return _createFunName(fun); + }; + + /** + * 检查flash是否ready, 并进行调用 + * @private + * @return {Null} + */ + function _check(){ + if(_checkReady(target)){ + clearInterval(timeHandle); + timeHandle = null; + _call(); + + isReady = true; + } + }; + + /** + * 调用之前进行压栈的函数 + * @private + * @return {Null} + */ + function _call(){ + _callFn(callQueue, target); + callQueue = []; + } + + autoRender && me.render(); + }; +})(); + + + +/** + * 创建flash based imageUploader + * @class + * @grammar baidu.flash.imageUploader(options) + * @param {Object} createOptions 创建flash时需要的参数,请参照baidu.swf.create文档 + * @config {Object} vars 创建imageUploader时所需要的参数 + * @config {Number} vars.gridWidth 每一个预览图片所占的宽度,应该为flash寛的整除 + * @config {Number} vars.gridHeight 每一个预览图片所占的高度,应该为flash高的整除 + * @config {Number} vars.picWidth 单张预览图片的宽度 + * @config {Number} vars.picHeight 单张预览图片的高度 + * @config {String} vars.uploadDataFieldName POST请求中图片数据的key,默认值'picdata' + * @config {String} vars.picDescFieldName POST请求中图片描述的key,默认值'picDesc' + * @config {Number} vars.maxSize 文件的最大体积,单位'MB' + * @config {Number} vars.compressSize 上传前如果图片体积超过该值,会先压缩 + * @config {Number} vars.maxNum:32 最大上传多少个文件 + * @config {Number} vars.compressLength 能接受的最大边长,超过该值会等比压缩 + * @config {String} vars.url 上传的url地址 + * @config {Number} vars.mode mode == 0时,是使用滚动条,mode == 1时,拉伸flash, 默认值为0 + * @see baidu.swf.createHTML + * @param {String} backgroundUrl 背景图片路径 + * @param {String} listBacgroundkUrl 布局控件背景 + * @param {String} buttonUrl 按钮图片不背景 + * @param {String|Function} selectFileCallback 选择文件的回调 + * @param {String|Function} exceedFileCallback文件超出限制的最大体积时的回调 + * @param {String|Function} deleteFileCallback 删除文件的回调 + * @param {String|Function} startUploadCallback 开始上传某个文件时的回调 + * @param {String|Function} uploadCompleteCallback 某个文件上传完成的回调 + * @param {String|Function} uploadErrorCallback 某个文件上传失败的回调 + * @param {String|Function} allCompleteCallback 全部上传完成时的回调 + * @param {String|Function} changeFlashHeight 改变Flash的高度,mode==1的时候才有用 + */ +baidu.flash.imageUploader = baidu.flash.imageUploader || function(options){ + + var me = this, + options = options || {}, + _flash = new baidu.flash._Base(options, [ + 'selectFileCallback', + 'exceedFileCallback', + 'deleteFileCallback', + 'startUploadCallback', + 'uploadCompleteCallback', + 'uploadErrorCallback', + 'allCompleteCallback', + 'changeFlashHeight' + ]); + /** + * 开始或回复上传图片 + * @public + * @return {Null} + */ + me.upload = function(){ + _flash.call('upload'); + }; + + /** + * 暂停上传图片 + * @public + * @return {Null} + */ + me.pause = function(){ + _flash.call('pause'); + }; + me.addCustomizedParams = function(index,obj){ + _flash.call('addCustomizedParams',[index,obj]); + } +}; + +/** + * 操作原生对象的方法 + * @namespace baidu.object + */ +baidu.object = baidu.object || {}; + + +/** + * 将源对象的所有属性拷贝到目标对象中 + * @author erik + * @name baidu.object.extend + * @function + * @grammar baidu.object.extend(target, source) + * @param {Object} target 目标对象 + * @param {Object} source 源对象 + * @see baidu.array.merge + * @remark + * +1.目标对象中,与源对象key相同的成员将会被覆盖。
    +2.源对象的prototype成员不会拷贝。 + + * @shortcut extend + * @meta standard + * + * @returns {Object} 目标对象 + */ +baidu.extend = +baidu.object.extend = function (target, source) { + for (var p in source) { + if (source.hasOwnProperty(p)) { + target[p] = source[p]; + } + } + + return target; +}; + + + + + +/** + * 创建flash based fileUploader + * @class + * @grammar baidu.flash.fileUploader(options) + * @param {Object} options + * @config {Object} createOptions 创建flash时需要的参数,请参照baidu.swf.create文档 + * @config {String} createOptions.width + * @config {String} createOptions.height + * @config {Number} maxNum 最大可选文件数 + * @config {Function|String} selectFile + * @config {Function|String} exceedMaxSize + * @config {Function|String} deleteFile + * @config {Function|String} uploadStart + * @config {Function|String} uploadComplete + * @config {Function|String} uploadError + * @config {Function|String} uploadProgress + */ +baidu.flash.fileUploader = baidu.flash.fileUploader || function(options){ + var me = this, + options = options || {}; + + options.createOptions = baidu.extend({ + wmod: 'transparent' + },options.createOptions || {}); + + var _flash = new baidu.flash._Base(options, [ + 'selectFile', + 'exceedMaxSize', + 'deleteFile', + 'uploadStart', + 'uploadComplete', + 'uploadError', + 'uploadProgress' + ]); + + _flash.call('setMaxNum', options.maxNum ? [options.maxNum] : [1]); + + /** + * 设置当鼠标移动到flash上时,是否变成手型 + * @public + * @param {Boolean} isCursor + * @return {Null} + */ + me.setHandCursor = function(isCursor){ + _flash.call('setHandCursor', [isCursor || false]); + }; + + /** + * 设置鼠标相应函数名 + * @param {String|Function} fun + */ + me.setMSFunName = function(fun){ + _flash.call('setMSFunName',[_flash.createFunName(fun)]); + }; + + /** + * 执行上传操作 + * @param {String} url 上传的url + * @param {String} fieldName 上传的表单字段名 + * @param {Object} postData 键值对,上传的POST数据 + * @param {Number|Array|null|-1} [index]上传的文件序列 + * Int值上传该文件 + * Array一次串行上传该序列文件 + * -1/null上传所有文件 + * @return {Null} + */ + me.upload = function(url, fieldName, postData, index){ + + if(typeof url !== 'string' || typeof fieldName !== 'string') return null; + if(typeof index === 'undefined') index = -1; + + _flash.call('upload', [url, fieldName, postData, index]); + }; + + /** + * 取消上传操作 + * @public + * @param {Number|-1} index + */ + me.cancel = function(index){ + if(typeof index === 'undefined') index = -1; + _flash.call('cancel', [index]); + }; + + /** + * 删除文件 + * @public + * @param {Number|Array} [index] 要删除的index,不传则全部删除 + * @param {Function} callBack + * */ + me.deleteFile = function(index, callBack){ + + var callBackAll = function(list){ + callBack && callBack(list); + }; + + if(typeof index === 'undefined'){ + _flash.call('deleteFilesAll', [], callBackAll); + return; + }; + + if(typeof index === 'Number') index = [index]; + index.sort(function(a,b){ + return b-a; + }); + baidu.each(index, function(item){ + _flash.call('deleteFileBy', item, callBackAll); + }); + }; + + /** + * 添加文件类型,支持macType + * @public + * @param {Object|Array[Object]} type {description:String, extention:String} + * @return {Null}; + */ + me.addFileType = function(type){ + var type = type || [[]]; + + if(type instanceof Array) type = [type]; + else type = [[type]]; + _flash.call('addFileTypes', type); + }; + + /** + * 设置文件类型,支持macType + * @public + * @param {Object|Array[Object]} type {description:String, extention:String} + * @return {Null}; + */ + me.setFileType = function(type){ + var type = type || [[]]; + + if(type instanceof Array) type = [type]; + else type = [[type]]; + _flash.call('setFileTypes', type); + }; + + /** + * 设置可选文件的数量限制 + * @public + * @param {Number} num + * @return {Null} + */ + me.setMaxNum = function(num){ + _flash.call('setMaxNum', [num]); + }; + + /** + * 设置可选文件大小限制,以兆M为单位 + * @public + * @param {Number} num,0为无限制 + * @return {Null} + */ + me.setMaxSize = function(num){ + _flash.call('setMaxSize', [num]); + }; + + /** + * @public + */ + me.getFileAll = function(callBack){ + _flash.call('getFileAll', [], callBack); + }; + + /** + * @public + * @param {Number} index + * @param {Function} [callBack] + */ + me.getFileByIndex = function(index, callBack){ + _flash.call('getFileByIndex', [], callBack); + }; + + /** + * @public + * @param {Number} index + * @param {function} [callBack] + */ + me.getStatusByIndex = function(index, callBack){ + _flash.call('getStatusByIndex', [], callBack); + }; +}; + +/** + * 使用动态script标签请求服务器资源,包括由服务器端的回调和浏览器端的回调 + * @namespace baidu.sio + */ +baidu.sio = baidu.sio || {}; + +/** + * + * @param {HTMLElement} src script节点 + * @param {String} url script节点的地址 + * @param {String} [charset] 编码 + */ +baidu.sio._createScriptTag = function(scr, url, charset){ + scr.setAttribute('type', 'text/javascript'); + charset && scr.setAttribute('charset', charset); + scr.setAttribute('src', url); + document.getElementsByTagName('head')[0].appendChild(scr); +}; + +/** + * 删除script的属性,再删除script标签,以解决修复内存泄漏的问题 + * + * @param {HTMLElement} src script节点 + */ +baidu.sio._removeScriptTag = function(scr){ + if (scr.clearAttributes) { + scr.clearAttributes(); + } else { + for (var attr in scr) { + if (scr.hasOwnProperty(attr)) { + delete scr[attr]; + } + } + } + if(scr && scr.parentNode){ + scr.parentNode.removeChild(scr); + } + scr = null; +}; + + +/** + * 通过script标签加载数据,加载完成由浏览器端触发回调 + * @name baidu.sio.callByBrowser + * @function + * @grammar baidu.sio.callByBrowser(url, opt_callback, opt_options) + * @param {string} url 加载数据的url + * @param {Function|string} opt_callback 数据加载结束时调用的函数或函数名 + * @param {Object} opt_options 其他可选项 + * @config {String} [charset] script的字符集 + * @config {Integer} [timeOut] 超时时间,超过这个时间将不再响应本请求,并触发onfailure函数 + * @config {Function} [onfailure] timeOut设定后才生效,到达超时时间时触发本函数 + * @remark + * 1、与callByServer不同,callback参数只支持Function类型,不支持string。 + * 2、如果请求了一个不存在的页面,callback函数在IE/opera下也会被调用,因此使用者需要在onsuccess函数中判断数据是否正确加载。 + * @meta standard + * @see baidu.sio.callByServer + */ +baidu.sio.callByBrowser = function (url, opt_callback, opt_options) { + var scr = document.createElement("SCRIPT"), + scriptLoaded = 0, + options = opt_options || {}, + charset = options['charset'], + callback = opt_callback || function(){}, + timeOut = options['timeOut'] || 0, + timer; + scr.onload = scr.onreadystatechange = function () { + if (scriptLoaded) { + return; + } + + var readyState = scr.readyState; + if ('undefined' == typeof readyState + || readyState == "loaded" + || readyState == "complete") { + scriptLoaded = 1; + try { + callback(); + clearTimeout(timer); + } finally { + scr.onload = scr.onreadystatechange = null; + baidu.sio._removeScriptTag(scr); + } + } + }; + + if( timeOut ){ + timer = setTimeout(function(){ + scr.onload = scr.onreadystatechange = null; + baidu.sio._removeScriptTag(scr); + options.onfailure && options.onfailure(); + }, timeOut); + } + + baidu.sio._createScriptTag(scr, url, charset); +}; + +/** + * 通过script标签加载数据,加载完成由服务器端触发回调 + * @name baidu.sio.callByServer + * @function + * @grammar baidu.sio.callByServer(url, callback[, opt_options]) + * @param {string} url 加载数据的url. + * @param {Function|string} callback 服务器端调用的函数或函数名。如果没有指定本参数,将在URL中寻找options['queryField']做为callback的方法名. + * @param {Object} opt_options 加载数据时的选项. + * @config {string} [charset] script的字符集 + * @config {string} [queryField] 服务器端callback请求字段名,默认为callback + * @config {Integer} [timeOut] 超时时间(单位:ms),超过这个时间将不再响应本请求,并触发onfailure函数 + * @config {Function} [onfailure] timeOut设定后才生效,到达超时时间时触发本函数 + * @remark + * 如果url中已经包含key为“options['queryField']”的query项,将会被替换成callback中参数传递或自动生成的函数名。 + * @meta standard + * @see baidu.sio.callByBrowser + */ +baidu.sio.callByServer = /**@function*/function(url, callback, opt_options) { + var scr = document.createElement('SCRIPT'), + prefix = 'bd__cbs__', + callbackName, + callbackImpl, + options = opt_options || {}, + charset = options['charset'], + queryField = options['queryField'] || 'callback', + timeOut = options['timeOut'] || 0, + timer, + reg = new RegExp('(\\?|&)' + queryField + '=([^&]*)'), + matches; + + if (baidu.lang.isFunction(callback)) { + callbackName = prefix + Math.floor(Math.random() * 2147483648).toString(36); + window[callbackName] = getCallBack(0); + } else if(baidu.lang.isString(callback)){ + callbackName = callback; + } else { + if (matches = reg.exec(url)) { + callbackName = matches[2]; + } + } + + if( timeOut ){ + timer = setTimeout(getCallBack(1), timeOut); + } + url = url.replace(reg, '\x241' + queryField + '=' + callbackName); + + if (url.search(reg) < 0) { + url += (url.indexOf('?') < 0 ? '?' : '&') + queryField + '=' + callbackName; + } + baidu.sio._createScriptTag(scr, url, charset); + + /* + * 返回一个函数,用于立即(挂在window上)或者超时(挂在setTimeout中)时执行 + */ + function getCallBack(onTimeOut){ + /*global callbackName, callback, scr, options;*/ + return function(){ + try { + if( onTimeOut ){ + options.onfailure && options.onfailure(); + }else{ + callback.apply(window, arguments); + clearTimeout(timer); + } + window[callbackName] = null; + delete window[callbackName]; + } catch (exception) { + } finally { + baidu.sio._removeScriptTag(scr); + } + } + } +}; + +/** + * 通过请求一个图片的方式令服务器存储一条日志 + * @function + * @grammar baidu.sio.log(url) + * @param {string} url 要发送的地址. + * @author: int08h,leeight + */ +baidu.sio.log = function(url) { + var img = new Image(), + key = 'tangram_sio_log_' + Math.floor(Math.random() * + 2147483648).toString(36); + window[key] = img; + + img.onload = img.onerror = img.onabort = function() { + img.onload = img.onerror = img.onabort = null; + + window[key] = null; + img = null; + }; + img.src = url; +}; + + + +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json.js + * author: erik + * version: 1.1.0 + * date: 2009/12/02 + */ + + +/** + * 操作json对象的方法 + * @namespace baidu.json + */ +baidu.json = baidu.json || {}; +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json/parse.js + * author: erik, berg + * version: 1.2 + * date: 2009/11/23 + */ + + + +/** + * 将字符串解析成json对象。注:不会自动祛除空格 + * @name baidu.json.parse + * @function + * @grammar baidu.json.parse(data) + * @param {string} source 需要解析的字符串 + * @remark + * 该方法的实现与ecma-262第五版中规定的JSON.parse不同,暂时只支持传入一个参数。后续会进行功能丰富。 + * @meta standard + * @see baidu.json.stringify,baidu.json.decode + * + * @returns {JSON} 解析结果json对象 + */ +baidu.json.parse = function (data) { + //2010/12/09:更新至不使用原生parse,不检测用户输入是否正确 + return (new Function("return (" + data + ")"))(); +}; +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json/decode.js + * author: erik, cat + * version: 1.3.4 + * date: 2010/12/23 + */ + + + +/** + * 将字符串解析成json对象,为过时接口,今后会被baidu.json.parse代替 + * @name baidu.json.decode + * @function + * @grammar baidu.json.decode(source) + * @param {string} source 需要解析的字符串 + * @meta out + * @see baidu.json.encode,baidu.json.parse + * + * @returns {JSON} 解析结果json对象 + */ +baidu.json.decode = baidu.json.parse; +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json/stringify.js + * author: erik + * version: 1.1.0 + * date: 2010/01/11 + */ + + + +/** + * 将json对象序列化 + * @name baidu.json.stringify + * @function + * @grammar baidu.json.stringify(value) + * @param {JSON} value 需要序列化的json对象 + * @remark + * 该方法的实现与ecma-262第五版中规定的JSON.stringify不同,暂时只支持传入一个参数。后续会进行功能丰富。 + * @meta standard + * @see baidu.json.parse,baidu.json.encode + * + * @returns {string} 序列化后的字符串 + */ +baidu.json.stringify = (function () { + /** + * 字符串处理时需要转义的字符表 + * @private + */ + var escapeMap = { + "\b": '\\b', + "\t": '\\t', + "\n": '\\n', + "\f": '\\f', + "\r": '\\r', + '"' : '\\"', + "\\": '\\\\' + }; + + /** + * 字符串序列化 + * @private + */ + function encodeString(source) { + if (/["\\\x00-\x1f]/.test(source)) { + source = source.replace( + /["\\\x00-\x1f]/g, + function (match) { + var c = escapeMap[match]; + if (c) { + return c; + } + c = match.charCodeAt(); + return "\\u00" + + Math.floor(c / 16).toString(16) + + (c % 16).toString(16); + }); + } + return '"' + source + '"'; + } + + /** + * 数组序列化 + * @private + */ + function encodeArray(source) { + var result = ["["], + l = source.length, + preComma, i, item; + + for (i = 0; i < l; i++) { + item = source[i]; + + switch (typeof item) { + case "undefined": + case "function": + case "unknown": + break; + default: + if(preComma) { + result.push(','); + } + result.push(baidu.json.stringify(item)); + preComma = 1; + } + } + result.push("]"); + return result.join(""); + } + + /** + * 处理日期序列化时的补零 + * @private + */ + function pad(source) { + return source < 10 ? '0' + source : source; + } + + /** + * 日期序列化 + * @private + */ + function encodeDate(source){ + return '"' + source.getFullYear() + "-" + + pad(source.getMonth() + 1) + "-" + + pad(source.getDate()) + "T" + + pad(source.getHours()) + ":" + + pad(source.getMinutes()) + ":" + + pad(source.getSeconds()) + '"'; + } + + return function (value) { + switch (typeof value) { + case 'undefined': + return 'undefined'; + + case 'number': + return isFinite(value) ? String(value) : "null"; + + case 'string': + return encodeString(value); + + case 'boolean': + return String(value); + + default: + if (value === null) { + return 'null'; + } else if (value instanceof Array) { + return encodeArray(value); + } else if (value instanceof Date) { + return encodeDate(value); + } else { + var result = ['{'], + encode = baidu.json.stringify, + preComma, + item; + + for (var key in value) { + if (Object.prototype.hasOwnProperty.call(value, key)) { + item = value[key]; + switch (typeof item) { + case 'undefined': + case 'unknown': + case 'function': + break; + default: + if (preComma) { + result.push(','); + } + preComma = 1; + result.push(encode(key) + ':' + encode(item)); + } + } + } + result.push('}'); + return result.join(''); + } + } + }; +})(); +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json/encode.js + * author: erik, cat + * version: 1.3.4 + * date: 2010/12/23 + */ + + + +/** + * 将json对象序列化,为过时接口,今后会被baidu.json.stringify代替 + * @name baidu.json.encode + * @function + * @grammar baidu.json.encode(value) + * @param {JSON} value 需要序列化的json对象 + * @meta out + * @see baidu.json.decode,baidu.json.stringify + * + * @returns {string} 序列化后的字符串 + */ +baidu.json.encode = baidu.json.stringify; diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/wordimage/wordimage.html b/yshop-drink-vue3/public/UEditor22/dialogs/wordimage/wordimage.html new file mode 100644 index 0000000..f8c0905 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/wordimage/wordimage.html @@ -0,0 +1,111 @@ + + + + + + + + + +
    +
    + +
    +
    +
    +
    +
    + +
    + : +
    +
    +
    + + + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/dialogs/wordimage/wordimage.js b/yshop-drink-vue3/public/UEditor22/dialogs/wordimage/wordimage.js new file mode 100644 index 0000000..e360263 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/dialogs/wordimage/wordimage.js @@ -0,0 +1,157 @@ +/** + * Created by JetBrains PhpStorm. + * User: taoqili + * Date: 12-1-30 + * Time: 下午12:50 + * To change this template use File | Settings | File Templates. + */ + + + +var wordImage = {}; +//(function(){ +var g = baidu.g, + flashObj,flashContainer; + +wordImage.init = function(opt, callbacks) { + showLocalPath("localPath"); + //createCopyButton("clipboard","localPath"); + createFlashUploader(opt, callbacks); + addUploadListener(); + addOkListener(); +}; + +function hideFlash(){ + flashObj = null; + flashContainer.innerHTML = ""; +} +function addOkListener() { + dialog.onok = function() { + if (!imageUrls.length) return; + var urlPrefix = editor.getOpt('imageUrlPrefix'), + images = domUtils.getElementsByTagName(editor.document,"img"); + editor.fireEvent('saveScene'); + for (var i = 0,img; img = images[i++];) { + var src = img.getAttribute("word_img"); + if (!src) continue; + for (var j = 0,url; url = imageUrls[j++];) { + if (src.indexOf(url.original.replace(" ","")) != -1) { + img.src = urlPrefix + url.url; + img.setAttribute("_src", urlPrefix + url.url); //同时修改"_src"属性 + img.setAttribute("title",url.title); + domUtils.removeAttributes(img, ["word_img","style","width","height"]); + editor.fireEvent("selectionchange"); + break; + } + } + } + editor.fireEvent('saveScene'); + hideFlash(); + }; + dialog.oncancel = function(){ + hideFlash(); + } +} + +/** + * 绑定开始上传事件 + */ +function addUploadListener() { + g("upload").onclick = function () { + flashObj.upload(); + this.style.display = "none"; + }; +} + +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 createFlashUploader(opt, callbacks) { + //由于lang.flashI18n是静态属性,不可以直接进行修改,否则会影响到后续内容 + var i18n = utils.extend({},lang.flashI18n); + //处理图片资源地址的编码,补全等问题 + for(var i in i18n){ + if(!(i in {"lang":1,"uploadingTF":1,"imageTF":1,"textEncoding":1}) && i18n[i]){ + i18n[i] = encodeURIComponent(editor.options.langPath + editor.options.lang + "/images/" + i18n[i]); + } + } + opt = utils.extend(opt,i18n,false); + var option = { + createOptions:{ + id:'flash', + url:opt.flashUrl, + width:opt.width, + height:opt.height, + errorMessage:lang.flashError, + wmode:browser.safari ? 'transparent' : 'window', + ver:'10.0.0', + vars:opt, + container:opt.container + } + }; + + option = extendProperty(callbacks, option); + flashObj = new baidu.flash.imageUploader(option); + flashContainer = $G(opt.container); +} + +function extendProperty(fromObj, toObj) { + for (var i in fromObj) { + if (!toObj[i]) { + toObj[i] = fromObj[i]; + } + } + return toObj; +} + +//})(); + +function getPasteData(id) { + baidu.g("msg").innerHTML = lang.copySuccess + "
    "; + setTimeout(function() { + baidu.g("msg").innerHTML = ""; + }, 5000); + return baidu.g(id).value; +} + +function createCopyButton(id, dataFrom) { + baidu.swf.create({ + id:"copyFlash", + url:"fClipboard_ueditor.swf", + width:"58", + height:"25", + errorMessage:"", + bgColor:"#CBCBCB", + wmode:"transparent", + ver:"10.0.0", + vars:{ + tid:dataFrom + } + }, id + ); + + var clipboard = baidu.swf.getMovie("copyFlash"); + var clipinterval = setInterval(function() { + if (clipboard && clipboard.flashInit) { + clearInterval(clipinterval); + clipboard.setHandCursor(true); + clipboard.setContentFuncName("getPasteData"); + //clipboard.setMEFuncName("mouseEventHandler"); + } + }, 500); +} +createCopyButton("clipboard", "localPath"); \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/index.html b/yshop-drink-vue3/public/UEditor22/index.html new file mode 100644 index 0000000..f02b43c --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/index.html @@ -0,0 +1,175 @@ + + + + 完整demo + + + + + + + + + + +
    +

    完整demo

    + +
    +
    +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    + +
    + + +
    + +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/lang/en/en.js b/yshop-drink-vue3/public/UEditor22/lang/en/en.js new file mode 100644 index 0000000..c2bdbbb --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/lang/en/en.js @@ -0,0 +1,684 @@ +/** + * 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', 'snapscreen':'SnapScreen', + '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', 'map':'BaiduMap', 'gmap':'GoogleMap', + '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', + 'lineheight':'LineHeight','edittip':'EditTip','customstyle':'CustomStyle', 'scrawl':'Scrawl', 'autotypeset':'AutoTypeset', + 'webapp':'WebAPP', 'touppercase':'UpperCase', 'tolowercase':'LowerCase','template':'Template','background':'Background','inserttable':'InsertTable', + 'music':'Music', 'charts': 'charts','drafts': 'Load from Drafts' + }, + '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.', + 'snapScreen_plugin':{ + 'browserMsg':"Only IE supported!", + 'callBackErrorMsg':"The callback data is wrong,please check the config!", + 'uploadErrorMsg':"Upload error,please check your server environment! " + }, + '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!", + 'anthorMsg':"Link", + 'clearColor':'Clear', + 'standardColor':'Standard color', + 'themeColor':'Theme color', + 'property':'Property', + 'default':'Default', + 'modify':'Modify', + 'justifyleft':'Justify Left', + 'justifyright':'Justify Right', + 'justifycenter':'Justify Center', + 'justify':'Default', + 'clear':'Clear', + 'anchorMsg':'Anchor', + '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.' + }, + 'webapp':{ + 'tip1':"This function provided by Baidu APP,please apply for baidu APPKey webmaster first!", + 'tip2':"And then open the file ueditor.config.js to set it! ", + 'applyFor':"APPLY FOR", + 'anthorApi':"Baidu API" + }, + '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...' + }, + 'music':{ + 'static':{ + 'lang_input_tips':"Input singer/song/album, search you interested in music!", + 'J_searchBtn':{value:'Search songs'} + }, + 'emptyTxt':'Not search to the relevant music results, please change a keyword try.', + 'chapter':'Songs', + 'singer':'Singer', + 'special':'Album', + 'listenTest':'Audition' + }, + anchor:{ + 'static':{ + 'lang_input_anchorName':'Anchor Name:' + } + }, + 'charts':{ + 'static':{ + 'lang_data_source':'Data source:', + 'lang_chart_format': 'Chart format:', + 'lang_data_align': 'Align', + 'lang_chart_align_same': 'Consistent with the X-axis Y-axis', + 'lang_chart_align_reverse': 'X-axis Y-axis opposite', + 'lang_chart_title': 'Title', + 'lang_chart_main_title': 'main title:', + 'lang_chart_sub_title': 'sub title:', + 'lang_chart_x_title': 'X-axis title:', + 'lang_chart_y_title': 'Y-axis title:', + 'lang_chart_tip': 'Prompt', + 'lang_cahrt_tip_prefix': 'prefix:', + 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀', + 'lang_chart_data_unit': 'Unit', + 'lang_chart_data_unit_title': 'unit:', + 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃', + 'lang_chart_type': 'Chart type:', + 'lang_prev_btn': 'Previous', + 'lang_next_btn': 'Next' + } + }, + 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' + } + }, + gmap:{ + 'static':{ + 'lang_input_address':'Address:', + 'lang_input_search':'Search', + 'address':{value:"Beijing"} + }, + searchError:'Unable to locate the address!' + }, + help:{ + 'static':{ + 'lang_input_about':'About', + 'lang_input_shortcuts':'Shortcuts', + 'lang_input_introduction':"UEditor is developed by Baidu Co.ltd. It is lightweight, customizable , focusing on user experience and etc. , UEditor is based on open source BSD license , allowing free use and redistribution.", + '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://"!' + }, + map:{ + 'static':{ + lang_city:"City", + lang_address:"Address", + city:{value:"Beijing"}, + lang_search:"Search", + lang_dynamicmap:"Dynamic map" + }, + cityMsg:"Please enter the city name!", + errorMsg:"Can't find the place!" + }, + 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)!" + }, + snapscreen:{ + 'static':{ + lang_showMsg:"You should install the UEditor screenshots program first!", + lang_download:"Download!", + lang_step1:"Step1:Download the program and then run it", + lang_step2:"Step2:After complete install,try to click the button again" + } + }, + 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' + } + }, + 'autosave': { + 'success':'Local conservation success' + } +}; diff --git a/yshop-drink-vue3/public/UEditor22/lang/en/images/addimage.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/lang/en/images/alldeletebtnupskin.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/lang/en/images/button.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/lang/en/images/deletedisable.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/lang/en/images/deleteenable.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/lang/en/images/localimage.png b/yshop-drink-vue3/public/UEditor22/lang/en/images/localimage.png new file mode 100644 index 0000000000000000000000000000000000000000..12c8e6aefa8fd16287ac77bbecd7d5b58c3fc837 GIT binary patch literal 3083 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 Z1^`gxH94g;riuUn002ovPDHLkV1oEm+S&jB literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor22/lang/en/images/music.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/lang/en/images/rotateleftdisable.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/lang/en/images/rotateleftenable.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/lang/en/images/upload.png b/yshop-drink-vue3/public/UEditor22/lang/en/images/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb15b3d6d6799504cf7093a1600bd7ece0d9ef5 GIT binary patch literal 3941 zcmV-r51R0aP)2T4RhRCwCVT77huWf{Lep6A^=*Z?tO z;u6#GA@d6}KTsgcFQ#>l8sbz^5fVFQb@X7FT6VN!V0kJJ$+S)upOxlGP|_e^h^KTz z7);n^gTY{faKj$8}%V@A_T8>wc97-^;b{`+L&! zUZk}U!sDM%^hZeRy>M216hBfpan$@sDF+T5ICSXHsI#-Pq@*NUASE6O=h;(Ucqb(6 z)%|R6&4m+Ya?S!MhlZ#fK6gYC1D`_3NM|s;(u?%k)7XuC}$nvu>Uv>m9jup zi_0FX3tP$?i8jAiJ*PFVQN;$147 zrjH#!hmj)xi`Smh#O2r1c3`F*ZMpXGtE0bPvn+W*?qM^hDBg ze41YY9LnSAuLD=GZG9$cpP#}ju)##dPDx@EAM6RFEW>JopGz(&m_w|MKU%4XrfPnx zc`y1r3Z8S;V$nzlLu-NDW9OYBez(GCqn+|n23}KK2Dn<`nWA*jDHg-$QUI-(223)C zz%O_U-jh}v3{iqi_ZY|iNxWrpg3Z?A6Uu%YE7&5f>eeE*B2hA9g@x&sC-NqUr1NA& zqJ0J-rH4cvD%DmRMLFSpL^UeJDzeG~0$LI^!_64!sd@=RYg%%P(Hv4Nq#PN70t2IP z3>=A%%|B5+}GvPIDKun~(Vv`-b8e>62-eS;6vNOTM2ocU2I$qX^RQM>BT$|xu zmvQ;@z}QSG5nK&V1lYqWMP9=x5C?b^!FEI_HpUzz3w&;QAivYqCAoCpp20Thy`yc+?I{x*cgdmr$7a*L+G@g5{azEBqH!YHoe$V z0aa4N@KE$Xt zu#AtYo$ZE6$aDkx5@ZZ^pSP&y`IUeCzcMry>d)tMfp=p-ki6jesEE|qpjyI)>B=Zf>s{Wwf|;D_sfy{vxc%IRx1?Y{XNuUz=4;cIGkqV|-J8v4`keRf1i z5fxKl8By`k{Dt*DTSA*6sCV8}e$R|?kl>3nGJdO+BrF%h<6(#hYy`@+G43byY# z^wsaYvZd+o)<;)P8sSi3Bo#+KDaG(`Po~KCU~oy&A!PQCTC;PT;IsnI@`MYSU(l*& zzg^%_8pDr^L1YVGtY7p(^Rg$u(6svI8!F1?RMqZi?OeH_5`nsR=D3BAUA69w*2k*; zI;--uzpcDw_2MrAFLR#SNV~{P=fR%IpZVm5=Wm?)`LP#`8-CF_!x~pjH!>3hlyk9U zKKE2aqev*A7kTGYjDHAP%kHk_^RHgBXiCSyYj@@0gf4I4M_4IpZp0{jm^O9wa@a|pT{SyMT;rTDUF#oD` z8(K-bdDb5?h_#r3>`8tFWO>Fsk%jkP8`j-CK-TaOcTz77;cW z(+CRMfde_vxld`4yJvj5Vdb>al7V3iwn4I8Fs`&=<;^p%I}>3aUQ%?yImdQ%b;B0p zOyu?D6HY2FipHKYh)cbsa%Bz?Mc9P$S43bq6fhW;+C+gxh_s1ZKm}i(dRqCYV^1h4 zyyN;as%!Rau5V8rDnN`(TDI!#Q%4&Qo(w~5`|D-G2x`8%Nwuy>hmLxA3Xl7;j^ZW9X`BBla7nH zcS=#GyAI`k@br2iGMl%(Q{S|QC>0y3<4X+Ipr7>9~}3zvg0zAd0BAu;0K$rf!BQ~2Xy#U zu*4#c#U~`oGAKA+M@U4z*pgs=!>tc99u?ivfh9F>+}M_9DZHJXh}K(JPm6UO9V@jE%rgAdZKGbTSAV|ot9$F z-b2iRnuLA>BrSosctDY+27@MrDh#0`3IqyV#F8xv8jz}|jDb)X{gsFReBa~i$%Ed_ zyMF?!bVWU}aEKJ5K*d3cltcqHH=cQk2#b;tCoQxr1T~il z5`+bS9ympC&*fzrx%m3YqkV;Y@UDx_y>?;shCP=}I1$T41QEGnZS#;p(X;cez@d@6 zx8Apcii1PnN6lz30NM?ttf@D0tm6e&C0@Y$1Ml{5AEFN&Jjl)@gK^re4F^sdHUt2! zYix)AC!AHXcvllCCvVRf`LVjK?Mg8Ygxb8d{g}Z6ii-+fS>5uj8RyQZEXTvwYFb&O z%G1XT!TK0qdi*F%-qN@aX%YKyv!{4#QstU&Mtemmcg5(PSQe7Bx0G-QTj;S^6#Fb| z1vHl!AM6gwD|B`cBBRTWf&Z3O?*drXy}sv_wYw$jFDW2aMAgzwEo}#O zwjZckw7Fs;xUT?a8ES{!rIS9ft*LX~;yOg@)tX(ueW_vU<);iPDi~C(H#Y6X;&qLC zfAI7hkto1x7<~TO$Ito2hL+Zj9eX;K{-Kd%uds|u7k(s<{AX`SB~K8QN^V&QdQ$H{ z_n-uUIO+n?qeK$?p@RIEbR;=@=6Nmc-Phdp65~PKHnqI+$};p7Q?5Mq>7|=r-O%={ z?_aun?T)MOcu7k+x@<`0o&kzyPyf`;w%WHE_Q8su+&^jh z?3I^H`@NB7!r7%QZHFwm1kHv-?@i=@^5O~6a?{4QPCTg;-2=6Pq)}bj%RSs(YSMQ~ z1CJUZ)f!-HxT2W4X5<3pAV5KDh3gtA^P++i%!h|z4EcoU5bT?3>KDlu#0h+BCRx&O zYa5aF(?N3+>Z#_4n5ql`nUhr5bsP51{N~D^KROAemNUbID;LFS?Fd{XGKtOlZb4;5 zhi()J>j;AeW79VPu%;)*!)w|_bN1hX_q(7^ga(4ZkGFf+k0cos*}l%iZzM| zi!eI1&-ie+l)n$7bYYUAYlHCp$KiYGa9^(fB`}Nwh?``l0-gf@mL&q*8!5T}tzM>K&O@G{)9$trT-y?EVWRfI` zRYF=q_pw}|h@wLg{c^1=kKnocz`@7>6u!4sOruuJQ3*m>>XT6Yc&}}Y`KNR^EGUqP zT%|OzrBWZ!wY&O2X9Z>ybf0N8NpNZMYjOB%JoI8NiAet) z4PRLFIlm%IK|DGV;H)GZB)*sZh$)DyTrQW*W}_$*CrMJ6&8YBg1B(NKcqDVNj?72w zruPvLe|Lg5C}z5YZl(fC4(x~Ugsr(dm)$){K|z7+=;&^3-__CCrKNa(d`Nt%qsm!y zVF8Cxk3;B!c`^Dh;bgykB^^M0OmWc(C!7%JOk9{9Acv?(dDZJn$6p>0f12bd`5z8K zs3liJ?Nn$gGzk?*ROF%R*MJok6{8^jLx2GQZRD&^kujjH00000NkvXXu0mjf0_lsp literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor22/lang/zh-cn/images/copy.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/lang/zh-cn/images/localimage.png b/yshop-drink-vue3/public/UEditor22/lang/zh-cn/images/localimage.png new file mode 100644 index 0000000000000000000000000000000000000000..7303c364318b6ac27dc4a8ae6717124d8dafaff9 GIT binary patch literal 6979 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 O0000字数超出最大允许值,服务器可能拒绝保存!', + 'ok':"确认", + 'cancel':"取消", + 'closeDialog':"关闭对话框", + 'tableDrag':"表格拖动必须引入uiUtils.js文件!", + 'autofloatMsg':"工具栏浮动依赖编辑器UI,您首先需要引入UI文件!", + 'loadconfigError': '获取后台配置项请求出错,上传功能将不能正常使用!', + 'loadconfigFormatError': '后台配置项返回格式出错,上传功能将不能正常使用!', + 'loadconfigHttpError': '请求后台配置项http错误,上传功能将不能正常使用!', + 'snapScreen_plugin':{ + 'browserMsg':"仅支持IE浏览器!", + 'callBackErrorMsg':"服务器返回数据有误,请检查配置项之后重试。", + 'uploadErrorMsg':"截图上传失败,请检查服务器端环境! " + }, + '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'", + 'anthorMsg':"链接", + 'clearColor':'清空颜色', + 'standardColor':'标准颜色', + 'themeColor':'主题颜色', + 'property':'属性', + 'default':'默认', + 'modify':'修改', + 'justifyleft':'左对齐', + 'justifyright':'右对齐', + 'justifycenter':'居中', + 'justify':'默认', + 'clear':'清除', + 'anchorMsg':'锚点', + '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_tab_search':"图片搜索", + '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':'服务器返回出错' + }, + 'webapp':{ + 'tip1':"本功能由百度APP提供,如看到此页面,请各位站长首先申请百度APPKey!", + 'tip2':"申请完成之后请至ueditor.config.js中配置获得的appkey! ", + 'applyFor':"点此申请", + 'anthorApi':"百度API" + }, + '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':'背景图片上传中,别急哦~' + }, + 'music':{ + 'static':{ + 'lang_input_tips':"输入歌手/歌曲/专辑,搜索您感兴趣的音乐!", + 'J_searchBtn':{value:'搜索歌曲'} + }, + 'emptyTxt':'未搜索到相关音乐结果,请换一个关键词试试。', + 'chapter':'歌曲', + 'singer':'歌手', + 'special':'专辑', + 'listenTest':'试听' + }, + 'anchor':{ + 'static':{ + 'lang_input_anchorName':'锚点名字:' + } + }, + 'charts':{ + 'static':{ + 'lang_data_source':'数据源:', + 'lang_chart_format': '图表格式:', + 'lang_data_align': '数据对齐方式', + 'lang_chart_align_same': '数据源与图表X轴Y轴一致', + 'lang_chart_align_reverse': '数据源与图表X轴Y轴相反', + 'lang_chart_title': '图表标题', + 'lang_chart_main_title': '主标题:', + 'lang_chart_sub_title': '子标题:', + 'lang_chart_x_title': 'X轴标题:', + 'lang_chart_y_title': 'Y轴标题:', + 'lang_chart_tip': '提示文字', + 'lang_cahrt_tip_prefix': '提示文字前缀:', + 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀', + 'lang_chart_data_unit': '数据单位', + 'lang_chart_data_unit_title': '单位:', + 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃', + 'lang_chart_type': '图表类型:', + 'lang_prev_btn': '上一个', + 'lang_next_btn': '下一个' + } + }, + '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':'有啊' + } + }, + 'gmap':{ + 'static':{ + 'lang_input_address':'地址', + 'lang_input_search':'搜索', + 'address':{value:"北京"} + }, + searchError:'无法定位到该地址!' + }, + 'help':{ + 'static':{ + 'lang_input_about':'关于UEditor', + 'lang_input_shortcuts':'快捷键', + 'lang_input_introduction':'UEditor是由百度web前端研发部开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。开源基于BSD协议,允许自由使用和修改代码。', + '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://前缀' + }, + 'map':{ + 'static':{ + lang_city:"城市", + lang_address:"地址", + city:{value:"北京"}, + lang_search:"搜索", + lang_dynamicmap:"插入动态地图" + }, + cityMsg:"请选择城市", + errorMsg:"抱歉,找不到该位置!" + }, + '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}处!" + }, + 'snapscreen':{ + 'static':{ + lang_showMsg:"截图功能需要首先安装UEditor截图插件! ", + lang_download:"点此下载", + lang_step1:"第一步,下载UEditor截图插件并运行安装。", + lang_step2:"第二步,插件安装完成后即可使用,如不生效,请重启浏览器后再试!" + } + }, + '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':{} //留空默认中文 + }, + 'autosave': { + 'saving':'保存中...', + 'success':'本地保存成功' + } +}; diff --git a/yshop-drink-vue3/public/UEditor22/php/Uploader.class.php b/yshop-drink-vue3/public/UEditor22/php/Uploader.class.php new file mode 100644 index 0000000..ae9818a --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/php/Uploader.class.php @@ -0,0 +1,372 @@ + "临时文件错误", + "ERROR_TMP_FILE_NOT_FOUND" => "找不到临时文件", + "ERROR_SIZE_EXCEED" => "文件大小超出网站限制", + "ERROR_TYPE_NOT_ALLOWED" => "文件类型不允许", + "ERROR_CREATE_DIR" => "目录创建失败", + "ERROR_DIR_NOT_WRITEABLE" => "目录没有写权限", + "ERROR_FILE_MOVE" => "文件保存时出错", + "ERROR_FILE_NOT_FOUND" => "找不到上传文件", + "ERROR_WRITE_CONTENT" => "写入文件内容错误", + "ERROR_UNKNOWN" => "未知错误", + "ERROR_DEAD_LINK" => "链接不可用", + "ERROR_HTTP_LINK" => "链接不是http链接", + "ERROR_HTTP_CONTENTTYPE" => "链接contentType不正确", + "INVALID_URL" => "非法 URL", + "INVALID_IP" => "非法 IP" + ); + + /** + * 构造函数 + * @param string $fileField 表单名称 + * @param array $config 配置项 + * @param bool $base64 是否解析base64编码,可省略。若开启,则$fileField代表的是base64编码的字符串表单名 + */ + public function __construct($fileField, $config, $type = "upload") + { + $this->fileField = $fileField; + $this->config = $config; + $this->type = $type; + if ($type == "remote") { + $this->saveRemote(); + } else if($type == "base64") { + $this->upBase64(); + } else { + $this->upFile(); + } + + $this->stateMap['ERROR_TYPE_NOT_ALLOWED'] = iconv('unicode', 'utf-8', $this->stateMap['ERROR_TYPE_NOT_ALLOWED']); + } + + /** + * 上传文件的主处理方法 + * @return mixed + */ + private function upFile() + { + $file = $this->file = $_FILES[$this->fileField]; + if (!$file) { + $this->stateInfo = $this->getStateInfo("ERROR_FILE_NOT_FOUND"); + return; + } + if ($this->file['error']) { + $this->stateInfo = $this->getStateInfo($file['error']); + return; + } else if (!file_exists($file['tmp_name'])) { + $this->stateInfo = $this->getStateInfo("ERROR_TMP_FILE_NOT_FOUND"); + return; + } else if (!is_uploaded_file($file['tmp_name'])) { + $this->stateInfo = $this->getStateInfo("ERROR_TMPFILE"); + return; + } + + $this->oriName = $file['name']; + $this->fileSize = $file['size']; + $this->fileType = $this->getFileExt(); + $this->fullName = $this->getFullName(); + $this->filePath = $this->getFilePath(); + $this->fileName = $this->getFileName(); + $dirname = dirname($this->filePath); + + //检查文件大小是否超出限制 + if (!$this->checkSize()) { + $this->stateInfo = $this->getStateInfo("ERROR_SIZE_EXCEED"); + return; + } + + //检查是否不允许的文件格式 + if (!$this->checkType()) { + $this->stateInfo = $this->getStateInfo("ERROR_TYPE_NOT_ALLOWED"); + return; + } + + //创建目录失败 + if (!file_exists($dirname) && !mkdir($dirname, 0777, true)) { + $this->stateInfo = $this->getStateInfo("ERROR_CREATE_DIR"); + return; + } else if (!is_writeable($dirname)) { + $this->stateInfo = $this->getStateInfo("ERROR_DIR_NOT_WRITEABLE"); + return; + } + + //移动文件 + if (!(move_uploaded_file($file["tmp_name"], $this->filePath) && file_exists($this->filePath))) { //移动失败 + $this->stateInfo = $this->getStateInfo("ERROR_FILE_MOVE"); + } else { //移动成功 + $this->stateInfo = $this->stateMap[0]; + } + } + + /** + * 处理base64编码的图片上传 + * @return mixed + */ + private function upBase64() + { + $base64Data = $_POST[$this->fileField]; + $img = base64_decode($base64Data); + + $this->oriName = $this->config['oriName']; + $this->fileSize = strlen($img); + $this->fileType = $this->getFileExt(); + $this->fullName = $this->getFullName(); + $this->filePath = $this->getFilePath(); + $this->fileName = $this->getFileName(); + $dirname = dirname($this->filePath); + + //检查文件大小是否超出限制 + if (!$this->checkSize()) { + $this->stateInfo = $this->getStateInfo("ERROR_SIZE_EXCEED"); + return; + } + + //创建目录失败 + if (!file_exists($dirname) && !mkdir($dirname, 0777, true)) { + $this->stateInfo = $this->getStateInfo("ERROR_CREATE_DIR"); + return; + } else if (!is_writeable($dirname)) { + $this->stateInfo = $this->getStateInfo("ERROR_DIR_NOT_WRITEABLE"); + return; + } + + //移动文件 + if (!(file_put_contents($this->filePath, $img) && file_exists($this->filePath))) { //移动失败 + $this->stateInfo = $this->getStateInfo("ERROR_WRITE_CONTENT"); + } else { //移动成功 + $this->stateInfo = $this->stateMap[0]; + } + + } + + /** + * 拉取远程图片 + * @return mixed + */ + private function saveRemote() + { + $imgUrl = htmlspecialchars($this->fileField); + $imgUrl = str_replace("&", "&", $imgUrl); + + //http开头验证 + if (strpos($imgUrl, "http") !== 0) { + $this->stateInfo = $this->getStateInfo("ERROR_HTTP_LINK"); + return; + } + + preg_match('/(^https*:\/\/[^:\/]+)/', $imgUrl, $matches); + $host_with_protocol = count($matches) > 1 ? $matches[1] : ''; + + // 判断是否是合法 url + if (!filter_var($host_with_protocol, FILTER_VALIDATE_URL)) { + $this->stateInfo = $this->getStateInfo("INVALID_URL"); + return; + } + + preg_match('/^https*:\/\/(.+)/', $host_with_protocol, $matches); + $host_without_protocol = count($matches) > 1 ? $matches[1] : ''; + + // 此时提取出来的可能是 ip 也有可能是域名,先获取 ip + $ip = gethostbyname($host_without_protocol); + // 判断是否是私有 ip + if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)) { + $this->stateInfo = $this->getStateInfo("INVALID_IP"); + return; + } + + //获取请求头并检测死链 + $heads = get_headers($imgUrl, 1); + if (!(stristr($heads[0], "200") && stristr($heads[0], "OK"))) { + $this->stateInfo = $this->getStateInfo("ERROR_DEAD_LINK"); + return; + } + //格式验证(扩展名验证和Content-Type验证) + $fileType = strtolower(strrchr($imgUrl, '.')); + if (!in_array($fileType, $this->config['allowFiles']) || !isset($heads['Content-Type']) || !stristr($heads['Content-Type'], "image")) { + $this->stateInfo = $this->getStateInfo("ERROR_HTTP_CONTENTTYPE"); + return; + } + + //打开输出缓冲区并获取远程图片 + ob_start(); + $context = stream_context_create( + array('http' => array( + 'follow_location' => false // don't follow redirects + )) + ); + readfile($imgUrl, false, $context); + $img = ob_get_contents(); + ob_end_clean(); + preg_match("/[\/]([^\/]*)[\.]?[^\.\/]*$/", $imgUrl, $m); + + $this->oriName = $m ? $m[1]:""; + $this->fileSize = strlen($img); + $this->fileType = $this->getFileExt(); + $this->fullName = $this->getFullName(); + $this->filePath = $this->getFilePath(); + $this->fileName = $this->getFileName(); + $dirname = dirname($this->filePath); + + //检查文件大小是否超出限制 + if (!$this->checkSize()) { + $this->stateInfo = $this->getStateInfo("ERROR_SIZE_EXCEED"); + return; + } + + //创建目录失败 + if (!file_exists($dirname) && !mkdir($dirname, 0777, true)) { + $this->stateInfo = $this->getStateInfo("ERROR_CREATE_DIR"); + return; + } else if (!is_writeable($dirname)) { + $this->stateInfo = $this->getStateInfo("ERROR_DIR_NOT_WRITEABLE"); + return; + } + + //移动文件 + if (!(file_put_contents($this->filePath, $img) && file_exists($this->filePath))) { //移动失败 + $this->stateInfo = $this->getStateInfo("ERROR_WRITE_CONTENT"); + } else { //移动成功 + $this->stateInfo = $this->stateMap[0]; + } + + } + + /** + * 上传错误检查 + * @param $errCode + * @return string + */ + private function getStateInfo($errCode) + { + return !$this->stateMap[$errCode] ? $this->stateMap["ERROR_UNKNOWN"] : $this->stateMap[$errCode]; + } + + /** + * 获取文件扩展名 + * @return string + */ + private function getFileExt() + { + return strtolower(strrchr($this->oriName, '.')); + } + + /** + * 重命名文件 + * @return string + */ + private function getFullName() + { + //替换日期事件 + $t = time(); + $d = explode('-', date("Y-y-m-d-H-i-s")); + $format = $this->config["pathFormat"]; + $format = str_replace("{yyyy}", $d[0], $format); + $format = str_replace("{yy}", $d[1], $format); + $format = str_replace("{mm}", $d[2], $format); + $format = str_replace("{dd}", $d[3], $format); + $format = str_replace("{hh}", $d[4], $format); + $format = str_replace("{ii}", $d[5], $format); + $format = str_replace("{ss}", $d[6], $format); + $format = str_replace("{time}", $t, $format); + + //过滤文件名的非法自负,并替换文件名 + $oriName = substr($this->oriName, 0, strrpos($this->oriName, '.')); + $oriName = preg_replace("/[\|\?\"\<\>\/\*\\\\]+/", '', $oriName); + $format = str_replace("{filename}", $oriName, $format); + + //替换随机字符串 + $randNum = rand(1, 10000000000) . rand(1, 10000000000); + if (preg_match("/\{rand\:([\d]*)\}/i", $format, $matches)) { + $format = preg_replace("/\{rand\:[\d]*\}/i", substr($randNum, 0, $matches[1]), $format); + } + + $ext = $this->getFileExt(); + return $format . $ext; + } + + /** + * 获取文件名 + * @return string + */ + private function getFileName () { + return substr($this->filePath, strrpos($this->filePath, '/') + 1); + } + + /** + * 获取文件完整路径 + * @return string + */ + private function getFilePath() + { + $fullname = $this->fullName; + $rootPath = $_SERVER['DOCUMENT_ROOT']; + + if (substr($fullname, 0, 1) != '/') { + $fullname = '/' . $fullname; + } + + return $rootPath . $fullname; + } + + /** + * 文件类型检测 + * @return bool + */ + private function checkType() + { + return in_array($this->getFileExt(), $this->config["allowFiles"]); + } + + /** + * 文件大小检测 + * @return bool + */ + private function checkSize() + { + return $this->fileSize <= ($this->config["maxSize"]); + } + + /** + * 获取当前上传成功文件的各项信息 + * @return array + */ + public function getFileInfo() + { + return array( + "state" => $this->stateInfo, + "url" => $this->fullName, + "title" => $this->fileName, + "original" => $this->oriName, + "type" => $this->fileType, + "size" => $this->fileSize + ); + } + +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/php/action_crawler.php b/yshop-drink-vue3/public/UEditor22/php/action_crawler.php new file mode 100644 index 0000000..b9e18df --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/php/action_crawler.php @@ -0,0 +1,44 @@ + $CONFIG['catcherPathFormat'], + "maxSize" => $CONFIG['catcherMaxSize'], + "allowFiles" => $CONFIG['catcherAllowFiles'], + "oriName" => "remote.png" +); +$fieldName = $CONFIG['catcherFieldName']; + +/* 抓取远程图片 */ +$list = array(); +if (isset($_POST[$fieldName])) { + $source = $_POST[$fieldName]; +} else { + $source = $_GET[$fieldName]; +} +foreach ($source as $imgUrl) { + $item = new Uploader($imgUrl, $config, "remote"); + $info = $item->getFileInfo(); + array_push($list, array( + "state" => $info["state"], + "url" => $info["url"], + "size" => $info["size"], + "title" => htmlspecialchars($info["title"]), + "original" => htmlspecialchars($info["original"]), + "source" => htmlspecialchars($imgUrl) + )); +} + +/* 返回抓取数据 */ +return json_encode(array( + 'state'=> count($list) ? 'SUCCESS':'ERROR', + 'list'=> $list +)); \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/php/action_list.php b/yshop-drink-vue3/public/UEditor22/php/action_list.php new file mode 100644 index 0000000..bf9cd62 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/php/action_list.php @@ -0,0 +1,92 @@ + "no match file", + "list" => array(), + "start" => $start, + "total" => count($files) + )); +} + +/* 获取指定范围的列表 */ +$len = count($files); +for ($i = min($end, $len) - 1, $list = array(); $i < $len && $i >= 0 && $i >= $start; $i--){ + $list[] = $files[$i]; +} +//倒序 +//for ($i = $end, $list = array(); $i < $len && $i < $end; $i++){ +// $list[] = $files[$i]; +//} + +/* 返回数据 */ +$result = json_encode(array( + "state" => "SUCCESS", + "list" => $list, + "start" => $start, + "total" => count($files) +)); + +return $result; + + +/** + * 遍历获取目录下的指定类型的文件 + * @param $path + * @param array $files + * @return array + */ +function getfiles($path, $allowFiles, &$files = array()) +{ + if (!is_dir($path)) return null; + if(substr($path, strlen($path) - 1) != '/') $path .= '/'; + $handle = opendir($path); + while (false !== ($file = readdir($handle))) { + if ($file != '.' && $file != '..') { + $path2 = $path . $file; + if (is_dir($path2)) { + getfiles($path2, $allowFiles, $files); + } else { + if (preg_match("/\.(".$allowFiles.")$/i", $file)) { + $files[] = array( + 'url'=> substr($path2, strlen($_SERVER['DOCUMENT_ROOT'])), + 'mtime'=> filemtime($path2) + ); + } + } + } + } + return $files; +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/php/action_upload.php b/yshop-drink-vue3/public/UEditor22/php/action_upload.php new file mode 100644 index 0000000..d55b659 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/php/action_upload.php @@ -0,0 +1,66 @@ + $CONFIG['imagePathFormat'], + "maxSize" => $CONFIG['imageMaxSize'], + "allowFiles" => $CONFIG['imageAllowFiles'] + ); + $fieldName = $CONFIG['imageFieldName']; + break; + case 'uploadscrawl': + $config = array( + "pathFormat" => $CONFIG['scrawlPathFormat'], + "maxSize" => $CONFIG['scrawlMaxSize'], + "allowFiles" => $CONFIG['scrawlAllowFiles'], + "oriName" => "scrawl.png" + ); + $fieldName = $CONFIG['scrawlFieldName']; + $base64 = "base64"; + break; + case 'uploadvideo': + $config = array( + "pathFormat" => $CONFIG['videoPathFormat'], + "maxSize" => $CONFIG['videoMaxSize'], + "allowFiles" => $CONFIG['videoAllowFiles'] + ); + $fieldName = $CONFIG['videoFieldName']; + break; + case 'uploadfile': + default: + $config = array( + "pathFormat" => $CONFIG['filePathFormat'], + "maxSize" => $CONFIG['fileMaxSize'], + "allowFiles" => $CONFIG['fileAllowFiles'] + ); + $fieldName = $CONFIG['fileFieldName']; + break; +} + +/* 生成上传实例对象并完成上传 */ +$up = new Uploader($fieldName, $config, $base64); + +/** + * 得到上传文件所对应的各个参数,数组结构 + * array( + * "state" => "", //上传状态,上传成功时必须返回"SUCCESS" + * "url" => "", //返回的地址 + * "title" => "", //新文件名 + * "original" => "", //原始文件名 + * "type" => "" //文件类型 + * "size" => "", //文件大小 + * ) + */ + +/* 返回数据 */ +return json_encode($up->getFileInfo()); diff --git a/yshop-drink-vue3/public/UEditor22/php/config.json b/yshop-drink-vue3/public/UEditor22/php/config.json new file mode 100644 index 0000000..dd5bc17 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/php/config.json @@ -0,0 +1,94 @@ +/* 前后端通信相关的配置,注释只允许使用多行方式 */ +{ + /* 上传图片配置项 */ + "imageActionName": "uploadimage", /* 执行上传图片的action名称 */ + "imageFieldName": "upfile", /* 提交的图片表单名称 */ + "imageMaxSize": 2048000, /* 上传大小限制,单位B */ + "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */ + "imageCompressEnable": true, /* 是否压缩图片,默认是true */ + "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ + "imageInsertAlign": "none", /* 插入的图片浮动方式 */ + "imageUrlPrefix": "", /* 图片访问路径前缀 */ + "imagePathFormat": "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ + /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ + /* {time} 会替换成时间戳 */ + /* {yyyy} 会替换成四位年份 */ + /* {yy} 会替换成两位年份 */ + /* {mm} 会替换成两位月份 */ + /* {dd} 会替换成两位日期 */ + /* {hh} 会替换成两位小时 */ + /* {ii} 会替换成两位分钟 */ + /* {ss} 会替换成两位秒 */ + /* 非法字符 \ : * ? " < > | */ + /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */ + + /* 涂鸦图片上传配置项 */ + "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */ + "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ + "scrawlPathFormat": "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ + "scrawlUrlPrefix": "", /* 图片访问路径前缀 */ + "scrawlInsertAlign": "none", + + /* 截图工具上传 */ + "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ + "snapscreenPathFormat": "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "snapscreenUrlPrefix": "", /* 图片访问路径前缀 */ + "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ + + /* 抓取远程图片配置 */ + "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"], + "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ + "catcherFieldName": "source", /* 提交的图片列表表单名称 */ + "catcherPathFormat": "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "catcherUrlPrefix": "", /* 图片访问路径前缀 */ + "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ + "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ + + /* 上传视频配置 */ + "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */ + "videoFieldName": "upfile", /* 提交的视频表单名称 */ + "videoPathFormat": "/ueditor/php/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "videoUrlPrefix": "", /* 视频访问路径前缀 */ + "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */ + "videoAllowFiles": [ + ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", + ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */ + + /* 上传文件配置 */ + "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */ + "fileFieldName": "upfile", /* 提交的文件表单名称 */ + "filePathFormat": "/ueditor/php/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "fileUrlPrefix": "", /* 文件访问路径前缀 */ + "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */ + "fileAllowFiles": [ + ".png", ".jpg", ".jpeg", ".gif", ".bmp", + ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", + ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", + ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", + ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" + ], /* 上传文件格式显示 */ + + /* 列出指定目录下的图片 */ + "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */ + "imageManagerListPath": "/ueditor/php/upload/image/", /* 指定要列出图片的目录 */ + "imageManagerListSize": 20, /* 每次列出文件数量 */ + "imageManagerUrlPrefix": "", /* 图片访问路径前缀 */ + "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */ + "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */ + + /* 列出指定目录下的文件 */ + "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */ + "fileManagerListPath": "/ueditor/php/upload/file/", /* 指定要列出文件的目录 */ + "fileManagerUrlPrefix": "", /* 文件访问路径前缀 */ + "fileManagerListSize": 20, /* 每次列出文件数量 */ + "fileManagerAllowFiles": [ + ".png", ".jpg", ".jpeg", ".gif", ".bmp", + ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", + ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", + ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", + ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" + ] /* 列出的文件类型 */ + +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/php/controller.php b/yshop-drink-vue3/public/UEditor22/php/controller.php new file mode 100644 index 0000000..feac890 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/php/controller.php @@ -0,0 +1,59 @@ + '请求地址出错' + )); + break; +} + +/* 输出结果 */ +if (isset($_GET["callback"])) { + if (preg_match("/^[\w_]+$/", $_GET["callback"])) { + echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')'; + } else { + echo json_encode(array( + 'state'=> 'callback参数不合法' + )); + } +} else { + echo $result; +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/themes/default/css/ueditor.css b/yshop-drink-vue3/public/UEditor22/themes/default/css/ueditor.css new file mode 100644 index 0000000..37b7edf --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/themes/default/css/ueditor.css @@ -0,0 +1,1903 @@ +/*基础UI构建 +*/ +/* common layer */ +.edui-default .edui-box { + border: none; + padding: 0; + margin: 0; + overflow: hidden; +} + +.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: top; +} + +.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: default; +} + +.edui-default span.edui-clickable { + color: blue; + cursor: pointer; + text-decoration: underline; +} + +.edui-default span.edui-unclickable { + color: gray; + cursor: default; +} +/* 工具栏 */ +.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; +} + +.edui-default .edui-editor-breadcrumb span { + cursor: pointer; + text-decoration: underline; + color: blue; +} + +.edui-default .edui-toolbar .edui-for-fullscreen { + float: right; +} + +.edui-default .edui-bubble .edui-popup-content { + border: 1px solid #DCAC6C; + background-color: #fff6d9; + padding: 5px; + font-size: 10pt; + font-family: "宋体"; +} + +.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; +} + +.edui-default .edui-list .edui-state-hover { + position: relative; + background-color: #fff5d4; + border: 1px solid #dcac6c; + padding: 0; +} + +.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; + +} + +.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: 20px; + 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; +} + +.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 { + background: url("../images/icons-all.gif") no-repeat 6px -205px; +} + +.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: 20px; + line-height: 20px; + padding-left: 5px; + white-space: nowrap; + margin: 0 3px 0 0; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + background: url(../images/icons.png) -741px 0; + _background: url(../images/icons.gif) -741px 0; + height: 20px; + width: 9px; +} + +.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-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; + filter: alpha(opacity = 30); +} + +.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: 20px !important; + width: 20px !important; + background-image: url(../images/icons.png); + background-image: url(../images/icons.gif) \9; +} + +.edui-default .edui-toolbar .edui-button .edui-button-wrap { + padding: 1px; + position: relative; +} + +.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap { + background-color: #fff5d4; + padding: 0; + border: 1px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap { + background-color: #ffe69f; + padding: 0; + border: 1px solid #dcac6c; + 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); +} + +/* toolbar icons */ +.edui-default .edui-for-undo .edui-icon { + background-position: -160px 0; +} + +.edui-default .edui-for-redo .edui-icon { + background-position: -100px 0; +} + +.edui-default .edui-for-bold .edui-icon { + background-position: 0 0; +} + +.edui-default .edui-for-italic .edui-icon { + background-position: -60px 0; +} + +.edui-default .edui-for-fontborder .edui-icon { + background-position:-160px -40px; +} +.edui-default .edui-for-underline .edui-icon { + background-position: -140px 0; +} + +.edui-default .edui-for-strikethrough .edui-icon { + background-position: -120px 0; +} + +.edui-default .edui-for-subscript .edui-icon { + background-position: -600px 0; +} + +.edui-default .edui-for-superscript .edui-icon { + background-position: -620px 0; +} + +.edui-default .edui-for-blockquote .edui-icon { + background-position: -220px 0; +} + +.edui-default .edui-for-forecolor .edui-icon { + background-position: -720px 0; +} + +.edui-default .edui-for-backcolor .edui-icon { + background-position: -760px 0; +} + +.edui-default .edui-for-inserttable .edui-icon { + background-position: -580px -20px; +} + +.edui-default .edui-for-autotypeset .edui-icon { + background-position: -640px -40px; +} + +.edui-default .edui-for-justifyleft .edui-icon { + background-position: -460px 0; +} + +.edui-default .edui-for-justifycenter .edui-icon { + background-position: -420px 0; +} + +.edui-default .edui-for-justifyright .edui-icon { + background-position: -480px 0; +} + +.edui-default .edui-for-justifyjustify .edui-icon { + background-position: -440px 0; +} + +.edui-default .edui-for-insertorderedlist .edui-icon { + background-position: -80px 0; +} + +.edui-default .edui-for-insertunorderedlist .edui-icon { + background-position: -20px 0; +} + +.edui-default .edui-for-lineheight .edui-icon { + background-position: -725px -40px; +} + +.edui-default .edui-for-rowspacingbottom .edui-icon { + background-position: -745px -40px; +} + +.edui-default .edui-for-rowspacingtop .edui-icon { + background-position: -765px -40px; +} + +.edui-default .edui-for-horizontal .edui-icon { + background-position: -360px 0; +} + +.edui-default .edui-for-link .edui-icon { + background-position: -500px 0; +} + +.edui-default .edui-for-code .edui-icon { + background-position: -440px -40px; +} + +.edui-default .edui-for-insertimage .edui-icon { + background-position: -726px -77px; +} + +.edui-default .edui-for-insertframe .edui-icon { + background-position: -240px -40px; +} + +.edui-default .edui-for-emoticon .edui-icon { + background-position: -60px -20px; +} + +.edui-default .edui-for-spechars .edui-icon { + background-position: -240px 0; +} + +.edui-default .edui-for-help .edui-icon { + background-position: -340px 0; +} + +.edui-default .edui-for-print .edui-icon { + background-position: -440px -20px; +} + +.edui-default .edui-for-preview .edui-icon { + background-position: -420px -20px; +} + +.edui-default .edui-for-selectall .edui-icon { + background-position: -400px -20px; +} + +.edui-default .edui-for-searchreplace .edui-icon { + background-position: -520px -20px; +} + +.edui-default .edui-for-map .edui-icon { + background-position: -40px -40px; +} + +.edui-default .edui-for-gmap .edui-icon { + background-position: -260px -40px; +} + +.edui-default .edui-for-insertvideo .edui-icon { + background-position: -320px -20px; +} + +.edui-default .edui-for-time .edui-icon { + background-position: -160px -20px; +} + +.edui-default .edui-for-date .edui-icon { + background-position: -140px -20px; +} + +.edui-default .edui-for-cut .edui-icon { + background-position: -680px 0; +} + +.edui-default .edui-for-copy .edui-icon { + background-position: -700px 0; +} + +.edui-default .edui-for-paste .edui-icon { + background-position: -560px 0; +} + +.edui-default .edui-for-formatmatch .edui-icon { + background-position: -40px 0; +} + +.edui-default .edui-for-pasteplain .edui-icon { + background-position: -360px -20px; +} + +.edui-default .edui-for-directionalityltr .edui-icon { + background-position: -20px -20px; +} + +.edui-default .edui-for-directionalityrtl .edui-icon { + background-position: -40px -20px; +} + +.edui-default .edui-for-source .edui-icon { + background-position: -261px -0px; +} + +.edui-default .edui-for-removeformat .edui-icon { + background-position: -580px 0; +} + +.edui-default .edui-for-unlink .edui-icon { + background-position: -640px 0; +} + +.edui-default .edui-for-touppercase .edui-icon { + background-position: -786px 0; +} + +.edui-default .edui-for-tolowercase .edui-icon { + background-position: -806px 0; +} + +.edui-default .edui-for-insertrow .edui-icon { + background-position: -478px -76px; +} + +.edui-default .edui-for-insertrownext .edui-icon { + background-position: -498px -76px; +} + +.edui-default .edui-for-insertcol .edui-icon { + background-position: -455px -76px; +} + +.edui-default .edui-for-insertcolnext .edui-icon { + background-position: -429px -76px; +} + +.edui-default .edui-for-mergeright .edui-icon { + background-position: -60px -40px; +} + +.edui-default .edui-for-mergedown .edui-icon { + background-position: -80px -40px; +} + +.edui-default .edui-for-splittorows .edui-icon { + background-position: -100px -40px; +} + +.edui-default .edui-for-splittocols .edui-icon { + background-position: -120px -40px; +} + +.edui-default .edui-for-insertparagraphbeforetable .edui-icon { + background-position: -140px -40px; +} + +.edui-default .edui-for-deleterow .edui-icon { + background-position: -660px -20px; +} + +.edui-default .edui-for-deletecol .edui-icon { + background-position: -640px -20px; +} + +.edui-default .edui-for-splittocells .edui-icon { + background-position: -800px -20px; +} + +.edui-default .edui-for-mergecells .edui-icon { + background-position: -760px -20px; +} + +.edui-default .edui-for-deletetable .edui-icon { + background-position: -620px -20px; +} + +.edui-default .edui-for-cleardoc .edui-icon { + background-position: -520px 0; +} + +.edui-default .edui-for-fullscreen .edui-icon { + background-position: -100px -20px; +} + +.edui-default .edui-for-anchor .edui-icon { + background-position: -200px 0; +} + +.edui-default .edui-for-pagebreak .edui-icon { + background-position: -460px -40px; +} + +.edui-default .edui-for-imagenone .edui-icon { + background-position: -480px -40px; +} + +.edui-default .edui-for-imageleft .edui-icon { + background-position: -500px -40px; +} + +.edui-default .edui-for-wordimage .edui-icon { + background-position: -660px -40px; +} + +.edui-default .edui-for-imageright .edui-icon { + background-position: -520px -40px; +} + +.edui-default .edui-for-imagecenter .edui-icon { + background-position: -540px -40px; +} + +.edui-default .edui-for-indent .edui-icon { + background-position: -400px 0; +} + +.edui-default .edui-for-outdent .edui-icon { + background-position: -540px 0; +} + +.edui-default .edui-for-webapp .edui-icon { + background-position: -601px -40px +} + +.edui-default .edui-for-table .edui-icon { + background-position: -580px -20px; +} + +.edui-default .edui-for-edittable .edui-icon { + background-position: -420px -40px; +} + +.edui-default .edui-for-template .edui-icon { + background-position: -339px -40px; +} + +.edui-default .edui-for-delete .edui-icon { + background-position: -360px -40px; +} + +.edui-default .edui-for-attachment .edui-icon { + background-position: -620px -40px; +} + +.edui-default .edui-for-edittd .edui-icon { + background-position: -700px -40px; +} + +.edui-default .edui-for-snapscreen .edui-icon { + background-position: -581px -40px +} + +.edui-default .edui-for-scrawl .edui-icon { + background-position: -801px -41px +} + +.edui-default .edui-for-background .edui-icon { + background-position: -680px -40px; +} + +.edui-default .edui-for-music .edui-icon { + background-position: -18px -40px +} + +.edui-default .edui-for-formula .edui-icon { + background-position: -200px -40px +} + +.edui-default .edui-for-aligntd .edui-icon { + background-position: -236px -76px; +} + +.edui-default .edui-for-insertparagraphtrue .edui-icon { + background-position: -625px -76px; +} + +.edui-default .edui-for-insertparagraph .edui-icon { + background-position: -602px -76px; +} + +.edui-default .edui-for-insertcaption .edui-icon { + background-position: -336px -76px; +} + +.edui-default .edui-for-deletecaption .edui-icon { + background-position: -362px -76px; +} + +.edui-default .edui-for-inserttitle .edui-icon { + background-position: -286px -76px; +} + +.edui-default .edui-for-deletetitle .edui-icon { + background-position: -311px -76px; +} + +.edui-default .edui-for-aligntable .edui-icon { + background-position: -440px 0; +} + +.edui-default .edui-for-tablealignment-left .edui-icon { + background-position: -460px 0; +} + +.edui-default .edui-for-tablealignment-center .edui-icon { + background-position: -420px 0; +} + +.edui-default .edui-for-tablealignment-right .edui-icon { + background-position: -480px 0; +} + +.edui-default .edui-for-drafts .edui-icon { + background-position: -560px 0; +} + +.edui-default .edui-for-charts .edui-icon { + background: url( ../images/charts.png ) no-repeat 2px 3px!important; +} + +.edui-default .edui-for-inserttitlecol .edui-icon { + background-position: -673px -76px; +} + +.edui-default .edui-for-deletetitlecol .edui-icon { + background-position: -698px -76px; +} + +.edui-default .edui-for-simpleupload .edui-icon { + background-position: -380px 0px; +} +/*splitbutton*/ +.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow, +.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow { + background: url(../images/icons.png) -741px 0; + _background: url(../images/icons.gif) -741px 0; + height: 20px; + width: 9px; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body { + padding: 1px; +} + +.edui-default .edui-toolbar .edui-splitborder { + width: 1px; + height: 20px; +} + +.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 gray; +} + +.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: #fff5d4; + border: 1px solid #dcac6c; + 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: #FFE69F; + border: 1px solid #DCAC6C; + 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 gray; + 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 gray; + 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; + +} + +.edui-default .edui-popup .edui-shadow { + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.edui-default .edui-popup-content { + border:1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + padding: 5px; + background:#ffffff; +} + +.edui-default .edui-popup .edui-bordereraser { + background-color: white; + 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: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -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; +} + +.edui-default .edui-dialog-titlebar { + height: 26px; + border-bottom: 1px solid #c6c6c6; + background: url(../images/dialog-title-bg.png) repeat-x bottom; + position: relative; + cursor: move; +} +.edui-default .edui-dialog-caption { + font-weight: bold; + font-size: 12px; + line-height: 26px; + padding-left: 5px; +} + +.edui-default .edui-dialog-draghandle { + height: 26px; +} + +.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; + background: url("../images/icons-all.gif") no-repeat 0 -59px; +} + +.edui-default .edui-dialog-closebutton .edui-state-hover .edui-button-body { + background: url("../images/icons-all.gif") no-repeat 0 -89px; +} + +.edui-default .edui-dialog-foot { + height: 40px; +} + +.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 { + background: url("../images/icons-all.gif") no-repeat; + height: 24px; + width: 96px; + font-size: 12px; + line-height: 24px; + text-align: center; + cursor: default; +} + +.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body { + background: url("../images/icons-all.gif") no-repeat 0 -30px; +} + +.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; +} +/*webapp-dialog*/ +.edui-default .edui-for-webapp .edui-dialog-content { + width: 560px; + _width: 565px; + height: 450px; + overflow: hidden; +} + +/*image-insertframe*/ +.edui-default .edui-for-insertframe .edui-dialog-content { + width: 350px; + height: 200px; + overflow: hidden; +} + +/*wordImage-dialog*/ +.edui-default .edui-for-wordimage .edui-dialog-content { + width: 620px; + height: 380px; + 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; +} + +/*gmap-dialog*/ +.edui-default .edui-for-gmap .edui-dialog-content { + width: 550px; + height: 400px; +} + +/*video-dialog*/ +.edui-default .edui-for-insertvideo .edui-dialog-content { + width: 590px; + height: 390px; +} + +/*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; +} +/*snapscreen-dialog*/ +.edui-default .edui-for-snapscreen .edui-dialog-content { + width: 400px; + height: 220px; +} + +/*music-dialog*/ +.edui-default .edui-for-music .edui-dialog-content { + width: 515px; + height: 360px; +} + +/*段落弹出菜单*/ +.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: 24px; +} + +.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; +} + +.edui-default .edui-colorpicker-nocolor { + float: right; + margin-right: 1px; + font-size: 12px; + line-height: 14px; + height: 14px; + border: 1px solid #333; + padding: 3px 5px; + cursor: pointer; +} + +.edui-default .edui-colorpicker-tablefirstrow { + height: 30px; +} + +.edui-default .edui-colorpicker-colorcell { + width: 14px; + height: 14px; + display: block; + margin: 0; + cursor: pointer; +} + +.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: 2px; + height: 20px; + margin: 2px 4px 2px 3px; + background: url(../images/icons.png) -181px 0; + background: url(../images/icons.gif) -181px 0 \9; +} + +/*颜色按钮 */ +.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump { + position: absolute; + overflow: hidden; + bottom: 1px; + left: 1px; + width: 18px; + height: 4px; +} +/*表情按钮及弹出菜单*/ +/*去除了表情的下拉箭头*/ +.edui-default .edui-for-emotion .edui-icon { + background-position: -60px -20px; +} +.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; +} + +.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: #fff5d4; + border: 1px solid #dcac6c; +} +/*弹出菜单*/ +.edui-default .edui-shortcutmenu { + padding: 2px; + width: 190px; + height: 50px; + 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/yshop-drink-vue3/public/UEditor22/themes/default/css/ueditor.min.css b/yshop-drink-vue3/public/UEditor22/themes/default/css/ueditor.min.css new file mode 100644 index 0000000..8ca74eb --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/themes/default/css/ueditor.min.css @@ -0,0 +1,8 @@ +/*! + * UEditor + * version: ueditor + * build: Wed Dec 26 2018 17:25:05 GMT+0800 (CST) + */ + + +.edui-default .edui-box{border:0;padding:0;margin:0;overflow:hidden}.edui-default a.edui-box{display:block;text-decoration:none;color:#000}.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:top}.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}.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}.edui-default .edui-label{cursor:default}.edui-default span.edui-clickable{color:#00f;cursor:pointer;text-decoration:underline}.edui-default span.edui-unclickable{color:gray;cursor:default}.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}.edui-default .edui-editor{border:1px solid #d4d4d4;background-color:#fff;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,.6);-moz-box-shadow:0 1px 4px rgba(204,204,204,.6);box-shadow:0 1px 4px rgba(204,204,204,.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,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;-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,.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,.065);box-shadow:0 1px 4px rgba(0,0,0,.065)}.edui-default .edui-editor-toolbarboxinner{padding:2px}.edui-default .edui-editor-iframeholder{position:relative}.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}.edui-default .edui-editor-breadcrumb span{cursor:pointer;text-decoration:underline;color:#00f}.edui-default .edui-toolbar .edui-for-fullscreen{float:right}.edui-default .edui-bubble .edui-popup-content{border:1px solid #DCAC6C;background-color:#fff6d9;padding:5px;font-size:10pt;font-family:"宋体"}.edui-default .edui-bubble .edui-shadow{}.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:#00f;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}.edui-default .edui-list .edui-state-hover{position:relative;background-color:#fff5d4;border:1px solid #dcac6c;padding:0}.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}.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:20px;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}.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{background:url(../images/icons-all.gif) no-repeat 6px -205px}.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:20px;line-height:20px;padding-left:5px;white-space:nowrap;margin:0 3px 0 0}.edui-default .edui-toolbar .edui-combox-body .edui-arrow{background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0;height:20px;width:9px}.edui-default .edui-toolbar .edui-combox .edui-combox-body{border:1px solid #CCC;background-color:#fff;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px}.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:.3;filter:alpha(opacity=30)}.edui-toolbar .edui-state-opened .edui-combox-body{background-color:#fff;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:20px!important;width:20px!important;background-image:url(../images/icons.png);background-image:url(../images/icons.gif) \9}.edui-default .edui-toolbar .edui-button .edui-button-wrap{padding:1px;position:relative}.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap{background-color:#fff5d4;padding:0;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap{background-color:#ffe69f;padding:0;border:1px solid #dcac6c;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:#fff;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:.3;filter:alpha(opacity=30)}.edui-default .edui-for-undo .edui-icon{background-position:-160px 0}.edui-default .edui-for-redo .edui-icon{background-position:-100px 0}.edui-default .edui-for-bold .edui-icon{background-position:0 0}.edui-default .edui-for-italic .edui-icon{background-position:-60px 0}.edui-default .edui-for-fontborder .edui-icon{background-position:-160px -40px}.edui-default .edui-for-underline .edui-icon{background-position:-140px 0}.edui-default .edui-for-strikethrough .edui-icon{background-position:-120px 0}.edui-default .edui-for-subscript .edui-icon{background-position:-600px 0}.edui-default .edui-for-superscript .edui-icon{background-position:-620px 0}.edui-default .edui-for-blockquote .edui-icon{background-position:-220px 0}.edui-default .edui-for-forecolor .edui-icon{background-position:-720px 0}.edui-default .edui-for-backcolor .edui-icon{background-position:-760px 0}.edui-default .edui-for-inserttable .edui-icon{background-position:-580px -20px}.edui-default .edui-for-autotypeset .edui-icon{background-position:-640px -40px}.edui-default .edui-for-justifyleft .edui-icon{background-position:-460px 0}.edui-default .edui-for-justifycenter .edui-icon{background-position:-420px 0}.edui-default .edui-for-justifyright .edui-icon{background-position:-480px 0}.edui-default .edui-for-justifyjustify .edui-icon{background-position:-440px 0}.edui-default .edui-for-insertorderedlist .edui-icon{background-position:-80px 0}.edui-default .edui-for-insertunorderedlist .edui-icon{background-position:-20px 0}.edui-default .edui-for-lineheight .edui-icon{background-position:-725px -40px}.edui-default .edui-for-rowspacingbottom .edui-icon{background-position:-745px -40px}.edui-default .edui-for-rowspacingtop .edui-icon{background-position:-765px -40px}.edui-default .edui-for-horizontal .edui-icon{background-position:-360px 0}.edui-default .edui-for-link .edui-icon{background-position:-500px 0}.edui-default .edui-for-code .edui-icon{background-position:-440px -40px}.edui-default .edui-for-insertimage .edui-icon{background-position:-726px -77px}.edui-default .edui-for-insertframe .edui-icon{background-position:-240px -40px}.edui-default .edui-for-emoticon .edui-icon{background-position:-60px -20px}.edui-default .edui-for-spechars .edui-icon{background-position:-240px 0}.edui-default .edui-for-help .edui-icon{background-position:-340px 0}.edui-default .edui-for-print .edui-icon{background-position:-440px -20px}.edui-default .edui-for-preview .edui-icon{background-position:-420px -20px}.edui-default .edui-for-selectall .edui-icon{background-position:-400px -20px}.edui-default .edui-for-searchreplace .edui-icon{background-position:-520px -20px}.edui-default .edui-for-map .edui-icon{background-position:-40px -40px}.edui-default .edui-for-gmap .edui-icon{background-position:-260px -40px}.edui-default .edui-for-insertvideo .edui-icon{background-position:-320px -20px}.edui-default .edui-for-time .edui-icon{background-position:-160px -20px}.edui-default .edui-for-date .edui-icon{background-position:-140px -20px}.edui-default .edui-for-cut .edui-icon{background-position:-680px 0}.edui-default .edui-for-copy .edui-icon{background-position:-700px 0}.edui-default .edui-for-paste .edui-icon{background-position:-560px 0}.edui-default .edui-for-formatmatch .edui-icon{background-position:-40px 0}.edui-default .edui-for-pasteplain .edui-icon{background-position:-360px -20px}.edui-default .edui-for-directionalityltr .edui-icon{background-position:-20px -20px}.edui-default .edui-for-directionalityrtl .edui-icon{background-position:-40px -20px}.edui-default .edui-for-source .edui-icon{background-position:-261px -0px}.edui-default .edui-for-removeformat .edui-icon{background-position:-580px 0}.edui-default .edui-for-unlink .edui-icon{background-position:-640px 0}.edui-default .edui-for-touppercase .edui-icon{background-position:-786px 0}.edui-default .edui-for-tolowercase .edui-icon{background-position:-806px 0}.edui-default .edui-for-insertrow .edui-icon{background-position:-478px -76px}.edui-default .edui-for-insertrownext .edui-icon{background-position:-498px -76px}.edui-default .edui-for-insertcol .edui-icon{background-position:-455px -76px}.edui-default .edui-for-insertcolnext .edui-icon{background-position:-429px -76px}.edui-default .edui-for-mergeright .edui-icon{background-position:-60px -40px}.edui-default .edui-for-mergedown .edui-icon{background-position:-80px -40px}.edui-default .edui-for-splittorows .edui-icon{background-position:-100px -40px}.edui-default .edui-for-splittocols .edui-icon{background-position:-120px -40px}.edui-default .edui-for-insertparagraphbeforetable .edui-icon{background-position:-140px -40px}.edui-default .edui-for-deleterow .edui-icon{background-position:-660px -20px}.edui-default .edui-for-deletecol .edui-icon{background-position:-640px -20px}.edui-default .edui-for-splittocells .edui-icon{background-position:-800px -20px}.edui-default .edui-for-mergecells .edui-icon{background-position:-760px -20px}.edui-default .edui-for-deletetable .edui-icon{background-position:-620px -20px}.edui-default .edui-for-cleardoc .edui-icon{background-position:-520px 0}.edui-default .edui-for-fullscreen .edui-icon{background-position:-100px -20px}.edui-default .edui-for-anchor .edui-icon{background-position:-200px 0}.edui-default .edui-for-pagebreak .edui-icon{background-position:-460px -40px}.edui-default .edui-for-imagenone .edui-icon{background-position:-480px -40px}.edui-default .edui-for-imageleft .edui-icon{background-position:-500px -40px}.edui-default .edui-for-wordimage .edui-icon{background-position:-660px -40px}.edui-default .edui-for-imageright .edui-icon{background-position:-520px -40px}.edui-default .edui-for-imagecenter .edui-icon{background-position:-540px -40px}.edui-default .edui-for-indent .edui-icon{background-position:-400px 0}.edui-default .edui-for-outdent .edui-icon{background-position:-540px 0}.edui-default .edui-for-webapp .edui-icon{background-position:-601px -40px}.edui-default .edui-for-table .edui-icon{background-position:-580px -20px}.edui-default .edui-for-edittable .edui-icon{background-position:-420px -40px}.edui-default .edui-for-template .edui-icon{background-position:-339px -40px}.edui-default .edui-for-delete .edui-icon{background-position:-360px -40px}.edui-default .edui-for-attachment .edui-icon{background-position:-620px -40px}.edui-default .edui-for-edittd .edui-icon{background-position:-700px -40px}.edui-default .edui-for-snapscreen .edui-icon{background-position:-581px -40px}.edui-default .edui-for-scrawl .edui-icon{background-position:-801px -41px}.edui-default .edui-for-background .edui-icon{background-position:-680px -40px}.edui-default .edui-for-music .edui-icon{background-position:-18px -40px}.edui-default .edui-for-formula .edui-icon{background-position:-200px -40px}.edui-default .edui-for-aligntd .edui-icon{background-position:-236px -76px}.edui-default .edui-for-insertparagraphtrue .edui-icon{background-position:-625px -76px}.edui-default .edui-for-insertparagraph .edui-icon{background-position:-602px -76px}.edui-default .edui-for-insertcaption .edui-icon{background-position:-336px -76px}.edui-default .edui-for-deletecaption .edui-icon{background-position:-362px -76px}.edui-default .edui-for-inserttitle .edui-icon{background-position:-286px -76px}.edui-default .edui-for-deletetitle .edui-icon{background-position:-311px -76px}.edui-default .edui-for-aligntable .edui-icon{background-position:-440px 0}.edui-default .edui-for-tablealignment-left .edui-icon{background-position:-460px 0}.edui-default .edui-for-tablealignment-center .edui-icon{background-position:-420px 0}.edui-default .edui-for-tablealignment-right .edui-icon{background-position:-480px 0}.edui-default .edui-for-drafts .edui-icon{background-position:-560px 0}.edui-default .edui-for-charts .edui-icon{background:url( ../images/charts.png ) no-repeat 2px 3px!important}.edui-default .edui-for-inserttitlecol .edui-icon{background-position:-673px -76px}.edui-default .edui-for-deletetitlecol .edui-icon{background-position:-698px -76px}.edui-default .edui-for-simpleupload .edui-icon{background-position:-380px 0}.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow,.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow{background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0;height:20px;width:9px}.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body{padding:1px}.edui-default .edui-toolbar .edui-splitborder{width:1px;height:20px}.edui-default .edui-toolbar .edui-state-hover .edui-splitborder{width:1px;border-left:0 solid #dcac6c}.edui-default .edui-toolbar .edui-state-active .edui-splitborder{width:0;border-left:1px solid gray}.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:#fff5d4;border:1px solid #dcac6c;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:#FFE69F;border:1px solid #DCAC6C;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:#fff;border:1px solid gray;padding:0}.edui-default .edui-state-disabled .edui-arrow{opacity:.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:#fff;border:1px solid gray;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:#fff}.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-image:none}.edui-default .edui-popup{z-index:3000;background-color:#fff;width:auto;height:auto}.edui-default .edui-popup .edui-shadow{left:0;top:0;width:100%;height:100%}.edui-default .edui-popup-content{border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 4px rgba(0,0,0,.2);-moz-box-shadow:0 3px 4px rgba(0,0,0,.2);box-shadow:0 3px 4px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;padding:5px;background:#fff}.edui-default .edui-popup .edui-bordereraser{background-color:#fff;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,.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:700;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:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.edui-default .edui-dialog-foot{background-color:#fff}.edui-default .edui-dialog-titlebar{height:26px;border-bottom:1px solid #c6c6c6;background:url(../images/dialog-title-bg.png) repeat-x bottom;position:relative;cursor:move}.edui-default .edui-dialog-caption{font-weight:700;font-size:12px;line-height:26px;padding-left:5px}.edui-default .edui-dialog-draghandle{height:26px}.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;background:url(../images/icons-all.gif) no-repeat 0 -59px}.edui-default .edui-dialog-closebutton .edui-state-hover .edui-button-body{background:url(../images/icons-all.gif) no-repeat 0 -89px}.edui-default .edui-dialog-foot{height:40px}.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{background:url(../images/icons-all.gif) no-repeat;height:24px;width:96px;font-size:12px;line-height:24px;text-align:center;cursor:default}.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body{background:url(../images/icons-all.gif) no-repeat 0 -30px}.edui-default .edui-dialog iframe{border:0;padding:0;margin:0;vertical-align:top}.edui-default .edui-dialog-modalmask{opacity:.3;filter:alpha(opacity=30);background-color:#ccc;position:absolute}.edui-default .edui-dialog-dragmask{position:absolute;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)}.edui-default .edui-for-link .edui-dialog-content{width:420px;height:200px;overflow:hidden}.edui-default .edui-for-background .edui-dialog-content{width:440px;height:280px;overflow:hidden}.edui-default .edui-for-template .edui-dialog-content{width:630px;height:390px;overflow:hidden}.edui-default .edui-for-scrawl .edui-dialog-content{width:515px;*width:506px;height:360px}.edui-default .edui-for-spechars .edui-dialog-content{width:620px;height:500px;*width:630px;*height:570px}.edui-default .edui-for-insertimage .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-webapp .edui-dialog-content{width:560px;_width:565px;height:450px;overflow:hidden}.edui-default .edui-for-insertframe .edui-dialog-content{width:350px;height:200px;overflow:hidden}.edui-default .edui-for-wordimage .edui-dialog-content{width:620px;height:380px;overflow:hidden}.edui-default .edui-for-attachment .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-map .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-gmap .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-insertvideo .edui-dialog-content{width:590px;height:390px}.edui-default .edui-for-anchor .edui-dialog-content{width:320px;height:60px;overflow:hidden}.edui-default .edui-for-searchreplace .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-help .edui-dialog-content{width:400px;height:420px}.edui-default .edui-for-edittable .edui-dialog-content{width:540px;_width:590px;height:335px}.edui-default .edui-for-edittip .edui-dialog-content{width:225px;height:60px}.edui-default .edui-for-edittd .edui-dialog-content{width:240px;height:50px}.edui-default .edui-for-snapscreen .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-music .edui-dialog-content{width:515px;height:360px}.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:24px}.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}.edui-default .edui-colorpicker-preview{height:20px;border:1px inset #000;margin-left:1px;width:128px;float:left}.edui-default .edui-colorpicker-nocolor{float:right;margin-right:1px;font-size:12px;line-height:14px;height:14px;border:1px solid #333;padding:3px 5px;cursor:pointer}.edui-default .edui-colorpicker-tablefirstrow{height:30px}.edui-default .edui-colorpicker-colorcell{width:14px;height:14px;display:block;margin:0;cursor:pointer}.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:#fff url(../images/arrow_down.png) no-repeat center}.arrow_up{background:#fff 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) 0 -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 #000;background:#fff;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}.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:2px;height:20px;margin:2px 4px 2px 3px;background:url(../images/icons.png) -181px 0;background:url(../images/icons.gif) -181px 0 \9}.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump{position:absolute;overflow:hidden;bottom:1px;left:1px;width:18px;height:4px}.edui-default .edui-for-emotion .edui-icon{background-position:-60px -20px}.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}.edui-default .edui-hassubmenu .edui-arrow{height:20px;width:20px;float:right;background:url(../images/icons-all.gif) no-repeat 10px -233px}.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:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-shortcutmenu{padding:2px;width:190px;height:50px;background-color:#fff;border:1px solid #ccc;border-radius:5px}.edui-default .edui-wordpastepop .edui-popup-content{border:0;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:700;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/yshop-drink-vue3/public/UEditor22/themes/default/dialogbase.css b/yshop-drink-vue3/public/UEditor22/themes/default/dialogbase.css new file mode 100644 index 0000000..ea71266 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/themes/default/dialogbase.css @@ -0,0 +1,100 @@ +/*弹出对话框页面样式组件 +*/ + +/*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: url("images/dialog-title-bg.png") repeat-x; + text-align: center; + line-height: 30px; + cursor: pointer; + *margin-right: 5px; +} + +.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; +} \ No newline at end of file diff --git a/yshop-drink-vue3/public/UEditor22/themes/default/images/anchor.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/arrow_down.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/arrow_up.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/button-bg.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/cancelbutton.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/cursor_h.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/cursor_v.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/filescan.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/highlighted.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/icons-all.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/icons.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/loaderror.png b/yshop-drink-vue3/public/UEditor22/themes/default/images/loaderror.png new file mode 100644 index 0000000000000000000000000000000000000000..35ff3336457d48dbecbc11698ef8245441a94f82 GIT binary patch literal 3209 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 literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor22/themes/default/images/loading.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/pagebreak.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/sortable.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/spacer.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/sparator_v.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/table-cell-align.png b/yshop-drink-vue3/public/UEditor22/themes/default/images/table-cell-align.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf42853ea5c00663e74d9195d1f1264ab684252 GIT binary patch literal 1847 zcmc&!Sx}Q#7>#uW1soh}SzM?gwvO9C1wm0EP>7;M7PT;xHGn9BA!&k0(SR(XHWC8O zu!IOAM#LzfLV^e=fVvkOzVxN{;k(N@_uliJ`_0V{IOuC( zZfg#KKr9e`-hmLvJSaGZFPRUU}uB&If@QSjzeRkP)LYpY;rVm9U>_z9vO&? zicLG!gWLt~IvwC2>|-*Sa6}FO09viq2$&QKMPA3`oxyh$mgqv4xLcrzta~GsN~aZi zh0cg8;^2sbdcEFYFz9qTqtSTbDl4DL%Av4vMS~fC45;;hTrOAX0i{x@F#sZ!L2m@I zD%fd7oSaH_>b-H~?U5&=G6P`BE@!KBz~yf7jM7m1d^Ww9^Wf!_N~KCC4dz#}^QbI* zDf>!~7+*GUreuKJCsM1`X{5ni3LD?{j`&P`resiO0AyNYO5@n9+AuBGo_{1{4!tky z7fs4E1y9BIUQB5;8k1?xG&d)Z8Tuv^iFf&}uSCt7BAGo>1r>SQt*l`TqY7*%ME z7oUn>OsPBhl1Fc5o1RaW_KVtv#iv`|0wz-i^KA=nDzkNhEmT%j?GH=1}N9d|}u(kmkMiWBJk7T!!bOGN6EG;oAcjj>}ylH532P{lGsJ=YtIGL>=e zV?$Tv=)tG@4IOwe=+nyo6d`@Pg(wJQK@Y;)GZ^<;R2m;-hghC-9^bIpWrx{9)}okY zi$-niX2&3tWvMK;u@jUZOcJhIG^?QG$5{Zx&eT+n}`%;P$rc@_iHY28x+mG9B` zLOw|u_-?AUWP||UP=G$T29JTc)hyz^a<07G?oRY}%xGAgamw=5m0sdD%J4jfzf*c< zcJ_Krd{jB2{$?+fSy$irftGYa@G6fsMo_PUIneO%xPmOG{id!EY4?`xdpqVeE#;D- z8;=DwAZwbUzZ9%)cTINcIbYRxTm zg&M@vWZR=H#9iOqAkufsAzX6oK9b+jz#uvcdI&LmYsTamlG1%^U_EseA0G~D*3i5< zp506b(IDE79igEM3qW!AXu}slag3JYkLFo*xZy?hoPBD$nrQS4|o zA2qa<0ADz_O_YeYIuvc$)Dw_#&OWr(s=WoKUG69hDBX0UZ$sdIdVRhse~Bl>Z?lhM zQb?_P(@M|?39tgXYrHKt9QJcvCTx6C|81RfPuNPrwt!^N;H!n|u<16?1~*ARA*E}l z6{x%kbvAqP#v>qFL-O_d>A*+##dkO(AdM`AA$Ck30NpCP<>EI~TX7x(BOl&v1~i&~ zoxksO9I!{@3O>%|#oMj9__y?4sDx%=?Lw1)Hq6!%vZ*ce-}_sW8n3n8W?p;4t3YK& zMC_pn=KPvZbc-v!x%=CbhA``dIbAMj-0E`eO--h z`|6B5(J?)dfBj^43i3p&M-1tK`5IlN9Q|VPr+Skn1kg9^(9`Xlln+|kD`wtmtvr6e z81c;Lf<9)?C0An|SC<_{#0w%_Cj`7E^uu4WF|f4V4==E^sUHt$yy&~Hu&^5X{js!S zDE|Pn6z3{CDHwUo0OI%-*B;lqtq>2SBn)qlzq;DiGKnGdZ-jSJlXzta5m@97zxI<8 za&zFr|D;7ra%k)SGmPq@Ho4cTJPPBqI~8 zVZQSHdqJoSj z2F4vQ2FAT-j~)OmM5<)2z~%891q0xUMR@yv2O~9&3}}32si3Kff#Ji5f$=s71LOP# zxUOShxWB-_*m#A3A@T_WgVZVBtV0e1Ls~;oMoQajYAby^hGE=2b70#fB8_S%URje) zc96$YRtfitu05W%JuLlMMe&(zfW~`dsI7E3LHkK^>rMC}EpBAHLM(n*iOl=$iI>@gjETQK(77nenBvg-(TkHA5@Zs`orWWYQG^(+6)v(e z%}+oRu&;Q}EHU01eXkq)=29Q^JU&t#iW~?-%FCc>Z~Mu4Ny`N2$y}$0^~s=(Blo`z z(;XB{trK#!92{rtcls+V7$85c+zQfFq&+d*hTH%g~viWFG&#BFcNS&VC@RV#weEp zIyUxMyK>*(Hz8ER!D#h(8+!)>p9csG7~?Gm`e=gLxFLXLpk=SpcyfAm>)VvDr-xof zJ6lj z3D3-QyY308;q%N`rxC=}wjJKf#|KOTJqX5rV^jf+y+eBs@=!GG?%zm^>2Ks}cK}m^ zu>re@8h*EFBQYM4|6M^}_E-n`i2Szz;E8aPVC+ZauS6%}M#oHE3xxpB zjeRG-ZNs3w2T1DRyd9^UYAXy`NSq$p7vUbk97E8jxD@bBcrLpsuRH z#mdP{;wFS^)_L`6X3_-Ji#%N9UQj1<6r?S?n6DJ`-me%8e2aj(0r4YSwL*JmfkLM< zu8j0)GwW6zy>GO37e2Il8$1ohMi4)&ynrA*ou2}O7Ne^9ADv66(f=O(5&6#=b2I(c z$M`(0x^JG*nTM>(|MAiroLf}^>wdce^k72m9|{BJ+?xN#$u1z%Wu0h;{5LZd^?l+*EF^tX{Dy!`kldiJ-NYV~;Y?5ODuU{NY2`ESeap8S4xIv>;w zyB!7?6!f6hK`3^VSw>>O_Ex;eWgGVKt;O$u%lL<-_Xr-diAlO(-bSnpB=>uexBj=l ze2aN2g$4JIoAQ6#X4ES2+e^f^j(SOnv=dypd&`p63s&%NfMfkZS;4JwZwU@q3I9_4 zgVS#&JPFqKY1Mxt`uL69BlbVQ{~bhtSyT;w3@iWs9Ef;1RoVj49}RCw)%&My>k*dF ztL%IW6bZBU<~#s3497_@A+aC^)D*gMf| zgZv+i{~K__Z?VV!WL!S3tXjz%8%~Q`{Mau(W&96hM#kF8{1b|R#{U52-)hJrwJ<-y ze1d-Duh|ydgN_dOPpMT4=VGhLnfzra$|9JRc#7O;v7yls9tKNy#Tfa=; z;)1IwT;FNkB1+s?`d`pVf2$$lqgFl>53GNAYS31gI61S@ftm@rbO+KDJCHt`$mV-_ zaL(lyUiFY-VPr@`z$7t=WZA5V8t7kqTsQW^lk>N<=Rqp@O zm9*tNUGmo|*L7lJyYM}X2{H%!<=vtWoFQaO^mGT>m#wpO2Lm$b@1V3h80F8O5}X%@ z{cWznPfZEWk`@aZ=*?qNXg&D8#9wSgD_n8LVCQ~-7{fH3?gtNu4` zlcWh`%G+eVVQXp4&kPWW2opQ(<29#f2`&3|KE9aPbXDCv2V~}hX6Cu3q}@}`o7GKc z6SHyo=F4r^8M&XT3@RL1e02q-8~S>)Ea5n{T3VTT+9>4G(osWZIT}#iD!Zopp0M7I28r?%`_OdoOl%G`z2?aK4_O8GZZPxY28HHUOA4sJ+j=RX48`mHAti zbX_*k_+0jMoz0M%&LhtqQdjN}OzPa1QoMVp^bIGRf%ymRw|@H=$rbyNA%hdL5G?6^ zGNp_Y%FU(33{qv%+^=Sl&ZQ?%Ti8^FL?&VyG|ZR9@A&ejV-hmfx9SQgxxcsf5*HU2 zy)jyJ&`IIczMA2ymf?S5ph3Ds_#90JiY2pD_o5B<%2yKZt_86g-2`Qzk^^^4@&!)a z`Bi!CCDTfzJe(C6ijaNe<)8bKEL0P;zT~I|MQ3!`65*Wq<3Y;7JIH+Q$6!dcw(lnhzhl zkhKhGuIu%~gRa0Md6$)eo0rr#L!`2}b4+GeCwM*8yJx!RsNIXVjW=aYo|^-wd4W~- z^Cm3ob`|a1ZT$*PFN;^IWxI>%1LdcvzEvlxsz;AR9*(?<4O-KJ{JGV{7*py#~h zBIaOtw^5J!a?UBvSMn?%uE`fb2$lDF%zXU(<<)$W*-h4IPglU&F4d**uVph|4H=n$ z1!m63DG#>b;$R;5s{!q=28DXseX`~vcTX(d87|nc%}2gf21Rcyg+HIlDakNeu&XfK z=Zto)TH9{NQ><5g;v$k4%_zelph~aX#w`Z`LlMc7Ibiu@e{fL4)y<7zc-@UBU2S=) z+8&E`cYC{gv`BBM+J0P3CfLj9(YX+~G4i8B$Sif%dyTC~KM^aEjk|=Gp5?2!6q8 zR_^rOb)YPgHa>E(b)1YxBlyx?$Sg-l=Z*RpBdv`@2FpFckhLsk^MrfM`vL+!_;Ey{ zulFNL!-iM4TU0Og>oo*zQ>`^U@%<_b>1Bq*G(Dn%zy(fWDiq3dq43w?m8Y&z9jePt=BR>Os1~ z`-@BGe$-QGLfu0CoDSBM)>SD0JKngteY{Qx3JQ9&Jyre2%j;7m`pwnFG0@E55a5^1 zi^g}Fse^`aV$~(iqf25d5?v~Kv|9E850<%l@NTZODi3#*=`K&hx5VfwFFoRXcZh{O z)xbCAalEI{;6s-ciiU&q@tdSyDAF5f;fYkMJS<6IGWZ?A@>6dW9 zdDr;}?7EXs*m)B+F&(aE;4lX%MSEXVM{3U$l&G;!P#66zoAoCXGnn3#N|4W^MTNSt z_PI?+@c}wqi&)UG^?8lLXk}@b7I@IQGs_>c=%(`p(*PF_@0RnkKNB{`%X$IurS)6q zI88WOhBU?=v~pc>5GTs@-ir~ zXD&MdalLp-gsAT8;|BB)aa_aPxvItC?|=0$n{D~c zeO1*^yua@iLdmPMqUjt;-!1ggAejzRuRi0mcpS_!G$M(IJc2zn@3BJ%rFQ;DX7rB? z8#Z$j0xrk;!Z13a%aeNMsYf8aK0+!Dvd7F)%8}0T!D0Z5VC20JfngV1#ZE({V(aDQ zW&gs$!k7M(gxDoTQkV6ZpY2IET^(STLn0HOuA8JQSDHlWl-`UP`qRw0#LHbtE*pC9Pg`d_dkfR4ytQOF3vW1S!u_tu zd?r>8VUn}Y=vpocVLaE9F($EQS4U7R#ha}z&KdUQXatCQYnDT&BQG_QnEXwjf(WSw zx}IW7qLeRPNv|t-&{i25U+27fe3N(9CPyKMvXx2ek7V9{3D&rax3V(JP+iO~xTcM= zgE?Al&eUp&ciOggWj}FDwRWa2>yNe)N$*^Do9bIVRD6mZ@3>bzjsE%bGcYLwrjR6_ zZ_|PGD|#AEM|VGRnfaLP_^(L`GmkGf8Yh2{1)IHBF%)j`U^!U%hC|+R)X6A(cs(wd z;cL5lH9cSZd`bP++5HsxIQ3r>AstIC7we?UgaCa&M7C`enBK47$|!a+5_|yV!l;ZF z-T00UUQrQ$ZEDcaOSw3+Hd34UMo=;>4H2PxPh29h(!Lq{;5d{rO$)j1vTe{_#G}W zGtH};_w)RgJ-!Rj&~{7Fg1gQ#J;G6A}>ZK&8~^(s0?eHWQmwjRa% z>cl1h{k{)&q{n$MEa@Y4edRP4>*A`?bZm&M32H4gu8K2!&iazhSZoe=XiZEfM!)(1 zA&4*9-x$DVc;o`nB0pu_VOWlU*N)IuObkq~%zWL%KKo%%o>cziO$5zTBU*$`1u8n> zt(HzPLiKBGLfEvD_mFOrVyj}G&s!vD2Edhu&et122I|uxZ@t`p4`O z^jG8LXEswUO`B5agXeMMyHC!cSAysnQAsYEvsSZtKk(p8tRps^PT+VyynKAgs3%nVIkSi3miKh0_P51H-WuCe1=7_8>v28_#-}pzwL8peqZPL9 zu(gFBhv#Ar%IU;V>^lEqLdmZtBnjHI2#chgoScG-Buk193NYS>bXaSTmmUVL?JAr_ zBAtE>IrZFJ!1R^}cWaGy0xugFD5<)0Z%*qQ56oH^@FZ^@9vt4BX`H{?y=k^whe0&c z$0iIl#^0f{Mmj6D+3`xYT2cozBEw<0)-*R6V^{mEcB<4mp8fvbX> z<3&wW_kva_749>{MPoYbr1qT0~~0gS1lfY^Mq=vZv+% zv==DqR6E9qiip?&=$AqCSTU))Z5j*BkN4g0loHtI^ex&jK2{!JtV@3B#2(Pcuh3R`W zlR!$dPtcUE&Y|H?Ev%XNx!_?n8>42)1eJ&~)Vt&U`q#Oop#q*K_Oj#l4qB7W2`j8) z^oNk$iqvnaU1ZQRa{*Wf*;4j4hbjwLey4hxgtu+d&O~i(1op_=LC5r_DIk(gU2MNr zY`=Z!Kr3aHO4Y_;xqNayQ&p8SkdoNNp+oGM{`2a}6#t-$oYE4%raLs;u7qmnl{FC# zbE9+4>tpzGTL9rO0YUCGe?@`cbXmpV;Y)07q({4nWqTujd1;cCJuKdBBjUA19moZrxyL$ z`zL1>Ze~v_@|kJvTvva(={`e?Cc4^qS`k9i=7gQqc|{~qeWqiVTbj!}nn zxJI@O1YuOEkRlg;g2qoOdTAcjrcPB38oZTbRD@B41{06bvf&=i2``qvi{!l!JkCy4 zbXP)^pd}-LiidmiJFN;iv4rE_y-5E#FR?I+2*66y z3135*cZLv$T~nG6FDuul4Ix?X9R=~(lRREaMmreo=4f_KhF5?@raZx89|n^t!C60L z`kjw{($hmVz&z;RS?`XTYyG$*qXb5JiXaZ*!(Hy&6dQz`3L}nH+`-rSk$je%s5c@E zZpT(RVQc;G7NXj<60Z1a3_1JxxvgQSpySO#h(1IOQuNA(6Uu<<+{uS8$>F4{-8GXT zVQO20DBqJFsVP9@TGk}G!y_yy>{UkY2h|7$`(2ib_(Ow@e>G}TQ51F>x0@G@8~ZJM zMaUA$)^_bZct2se)-wq+E?}_d%6nb4gz9s$mC_)zSqsbNu5->Iq1}e?(g?!GYq{;0 zI4mAl&s%)Sh~_$aX~*B=#O+pJQk#>y)m)Vs%{tOR5$wn8I;5K}VIC)o>_e~Y#-p;bLtn$K#P6tU z3oeRWraTVLhQ}YjZhW0&t7Nc4=kbFkKdIU+K~0=lRS0Y}O+xNTq4P!IOLF({$%9GE z^Do6BO(DcClo|x9l}n%DxfT-kRfZh8qx1H@Q50o&5yEAJTCb%-RfyTuJc^mG2=ezy5elM|n8?I0X->xjbtn)|e{xHly zb%~qfiCc$2E}}%YA#$xz$+Xia0tpn;F{J6lCzkx0>b)YzWJU%Ld1>PU0#X+^;I5R% zQJSo1QSpZ+08}1%zeH-rI`ckTPkYTsKWVH@kfs3Yb+drm?n{it$;eGDMot+uCZ(P+ zGcUY;7`rAU198wx<9bXK&_y zp*9eUMMdNsT=1}Hb;w@y?g^`1x~OOL!Yt9q0NczF#S^!DCt<7l^;)%%;-baZhRd3# zAwmg5n@KgVKIm+Asd^M==2tDMcqhe@v14mjuwXs5bF z_{ok=iD~<1iRi@lIKbCKVN$_bDgqJ00XHr5N(Fv;pl^wz&)kDyn;9s3T8slC*o0nv zm%_z_WLx%cy!2@6FQz#wrR63hwgKoP=luAw0p9PW%!b$2I4yFjO^PAdf|Fx9`RbZr zZhU2Ioe}XuAK?mSM^_E}gexEau5VC*G?>4%K?T@xFQo5@azfwN)M^?oo_T?qJxBC< z)=<=r*UO<%;!2VunNzj_YhJ<1mn9Gp>1cRw4x!?jkhDM7Md%xCX97^Omhj^uwaivz zwo=;)liALLS)RdQFjF*5yknmXvBzvf!E`_7pe*x1O$p@r!?8L9`8(2d0)Gvib|1+K z2S-*We48t=bXs}w=l&7IZrE{ClS6eQ2_r=@IgUA6hhVqtNA5dYqC|99!N6+S!NmO{ zSPxnKgk&Ah7o~#`7;tww5q^*7Q5yFCZOM^?UxmssdkTeHy`;fNuvB`jl;a7tC)}!f zKHE@t__ctGYg;zzCmt{U7mb4`rb>Moym~s_yN)Akjcbw5B7KN5$sbkLQWF^b{o!^X z0Rk8GHq*w>A*@$0ublwlJEF5hxsP&~hld0XosSqG4MLi^pHQ&6@Olr(IIL*J`*d5f)3Cu$J^iBvJPCaqFjP%pD%A3dwTa?!dRLtGnoK|Jop{!$=Pf_DgUucE9+dhs@p1 zRopn1P-`&YlIGC@i&=LNP}g;EmddpEmqxWy z2UQAGHHKe_^`GVWB)jv^+D2*BRfmO9hmYGA4p$0F>hXa0LK;ho)aK) zDSOrulrQULgw)iA0ax(T<6ph?xhUOUrqc2tX*y8z_sJ8Te5VBLNqd{keyuI>m3Hd7 zVj+@)`A^-k+pfL|57&t~lms_b_y{`4-`TL5h@8*W>naR?X~&Ex)9*2nlY6*W zj^gG^;(0h?`8U2>@|1BrwD3(Bz)p$Ykfg(6MZ+M&KumTgK= z2-`ff7_4NT83}rb%1j`=K1i&lNkF#Iuxs`NS-p~7GtNy*>8)khF}62yTPfaSorMHe zkd&O!?<-BuBHIkEq?N~_QJb<90;X@^^CJj|q?wxx@Dg_4BX~!ayq?(rD%3%kw;Y9B zR9n4lJ`H+TRo;xWcujWn1AQdSU8J~9+NN3JI0^G9WK^r}T*oxjE1vtZu6s78+7Mm5 z&FuW%(slvoQC=IMGqN8cG?fTL**Q=e)FU5pYj?+FG6+O z`ea}4`)uDIzr3Wc#L$-yNrQ#DuFXeK8mb%5Cz!71WuSCjiQV!>`#XtrFTSO`l@RIW z3r{gtfFzdW7Un!Amh?(IX*Yhf^$}Ko*ro<9V*_(vwb!#|d|FO+Bc?Rs?t;xNirq%VxuIRtGH9_hw7F2B`5o-#STwd7oY80&nJ zvM^*Z^*t4&W(*G_-4A){Y{OiPaBxhI^AXAZk+bE72;R}CNvW*5X^$|v(NAb6;A!2* z^xjY6BeeMl-d1JVRYgn^<{eT}C{L_?Tj?J(0QLBmpcte!C_}QwYP3y~;H$<=C2&m* zmn!Km4tk-~L_=}qJt0;K^>BO3L0@)3n=B|?whY0i08jfKwU7!%Vo>zNx)SfaJf0yu zM0yA~=?WrTPNJ7&X;wb{ig8mwkw8#S#7ay(r1SQ?5J#x9}6=gokKTKki@7 z_3XfhTMm4eZ2{5Qylos*xbIetsZ|cp23&LC3a z>O)8Ct2NM0?6a8lnd!k3n|2evL|?a1g-uprW-B_ZxBT)X)#=1LjmR22VN#=sB@&+` zXaY8|2uI`N4OhV(NRiRbgU?_Ro~St-N&4E@_2RXtHQqL2QHz11lVi6G)5J2PouT_Z zP%h2HqC<$g6!yJSQs8Uym;tTtWH~(2WvE85yHV1b{L`eWOBYh7<(_j0ST_=7Rlr@9 z=@3Iv>=%`$EO^{b9<{pMO~@Nxy6?EPew9|pcN{E}Zuv==OGKxP+rWH- zWi!c;?q9|-jz2aZ?>cmO&8t*05|c(;>94$7%*SD>oW@%$^2x!XeHzxHkEkiMR6h#- zdnGhe2%57|eSL&Jyx%h6btn zbV&~a6%f_^>90-9UZgb&`^=K*uGL{q#TALZAIOlO?kbk+zt23j=H~DTDkCCE$gB9$ z=}Xp}W1v~uV48GQ3oZC<9I=b-`^+rA$&&Y2Jf3>nEFDkO>4tMFQI(L*XI{m#ApQuP?MX zi?E`SU83%PPZ9iXJ+gCZPK`)l!71@yD^Z^C zM$pZ|zJ6`GQ(Ol+sWkHC<-*o(%EcB&hw@A>eae`a`C+$fsm`ML#Bkl!M)M*I?j8A& z+3q?ltMnn2vO?Y_s1ex~Szjf%lAQu>9=3{Gk#-#DSX|UGTuvZ1{Fcqggr5>E80`0Ejx|aR_c+e z_F0B|apxS6OhdlBT87ggNFU^P^v{}^QK}FPLfJzlPNsJILS91LEJ!h5INy)E-x|sa zZqRfa#i>(aU)W|=BU;oM*NxC2E-yqw95-YsoY$;PpU3Yph}H1abg@K@RVB>(PLEg= zruWo0c}-Zljr9=P)G=`rViq1B0+e-h2Un~FHl5T!jv+jb&#_^g*6o%x90{bGSD|0n zW@`k~XE&OcsG&eHrN#`fDrU99U`>U9XG`E3^T3*dlR6A}Ev5Pqj zU1K9dtrEJW+q+5PQc6dyFW#<(!KcCfo@#>I*&0%HPdT;kb&G6X@f=m%_bl33yBgtp`jvEJ6*74g->K49ahg0BXzV&5Md)`|4@t#L@_h8X-#9H3 zA0GBKXPmlvK9hbRREjw{*H`+Kg*WCZU|`olDc>`Z{9Ko3%Pm7Xs0CGWeJ zoa!EVNQeqiRTxv>BZ+B)h45L5zj?@n*HY%SjpJ5)Nc_dP?@99{I%~fN4$@4N$CkX! zt)ZC|mgB4}NIA@QbLA2tt{@siu~{QS2K@=kHt9X3)i0#8#k zYDGO1^_%Jq9u^~UIm~l(oBBCp44eR>lm?s64=H7BJA96(rcwrHKinlVW&V&%+yx3T zj(D^fW|h&t`IDu%jZ&C)dXzsuaBlzA$zS0c~1RW>VJf zk;@>?J{!pWxZWVqu5l=YM<2vu9S@BEXpa}p?D~Z(qy@W zT%r7A(Tp;&n`4_dx8Q>hOx&!ILLXDTlX-LYeAwh+nK98k+0FP~m&5_Nfa`!6N)Puz z_X=u7$oW}i0sMUlQMyA1rhy5|4F8!+0%=qlEvm#&*4+TjV}0yOR_u3N?71y^&!~eF zZ3p))6V1`%P!1f_bVBkG^RzOBh`G4U4FxFzGfAF>2SS)YMt6pBJ?UURYd~IXj<6(} zmhzo7FW3f#-L0d}usgH1si;>EO7a?DzE0DI7)+ZOqIy$`s1;qD(=|+MJi`cp1m1?eAXTDuFJYl#SLf2`8U7{ zA)fevm3V(5LKyM)Mm-x?eP**DHaUtYlL)57uGR2bC2A5dyUYy+JgktzIL z;YIao;QhiIWAe&mei3g6b}?qbr(B{A`3dVuE+%?=A!O}F&qW2NjVO@`mevfPy$q_F z6oeccX$9lebWkm+Y(}uC^{;D><|?i~Oiq9s4~mFtrJ=|7 zu;vOH7`!NK$q4Xf_o{@Qzt&YSn=nr~S6S#h_mn#rJbCa&B`$>dHQN+HTU1?y%Nl<= z;(U_-s8MNRD|7pVW%-+CMsR`Q4{7K(T=pSW)9RgHks_|aYx?b%VuEgSP&O4Yg8nWU z5)2qTwn+k9*dUy2;_kDxYWe_1;E?zevn;`6@j3HWWY{c)i#3dbUuaO;u>slNz2j^0 zv<{lG-4+WIlyfKTSUjw8`qddEc(6RvF8v-@rm~^4C>$#2Y@$O{1Xkb>d6ycV?UGm9 zee?FoK0Rty2Jwzje)ic>@5X8&)jQP%%RFEwSYi=5utp(IFU90A=Pn$k!7DP_rPr>Gm(`nyUv*0(b7Uj4 z1Zp9a4}+Hb)`5Qf}RRys_NT0H^^zJ#agVV|8 zu>>x^vm(;~$82NKlZGpUFM&}=2QXoy6sHHwKYG@teHUqAs5;%9{i(n%9Z;;F*hMwQ zg+;rPKb>ThNANCQu9vyO4CBH^%&_4*Ywpo4*)NMrME6Iu2bz>7iriF>@Y9!*L0L<5 zpRQM4i%5c=b9pdPJOS3Q$5@jkVOXOM>!F$BWm~grRahC;jG0h1xiC?5Qq%!m5b@zM zWEw`CNy;Tea~f*lD=A1}P@p0NK0vz>REqZm4SqOk-~cj|2tD*2yl&i1Cm!tJXMXBF zH#My^cG6=w*cAcupw(lX#tI^TVp9B(k+-rxt#_?o*}Nr2bL2D6j0Kn$^F|Q zM+@w0J;56ARIK>z?yAp0%7F*Cma72{(*-G20#1>6cdb2;0LTY?#qJ z=blac#a7tguAJF=R;%zsKIt?x^B25$C+{3!VVV#-Yd(mwj4x8-b(Rxoei8W7k$nND z@8vYqpgfwxB`$>6xiq_k$YuX5#UGTXob5LAO(#YSTA_^-|<^y`q0vln(VqwO0|l$j&^IK6JqDZ_+3Ttv*_M zxxBaZ*t3KvTt9#;?) znOA?qpc6^%V&TR!ixPPs0(<+d=qr|>Y8A9l>E;2X&w;IbvgrMG0E#FB*oc{syR26z z8LS?FpNBObiF~U&Csn3n*B%t1-t+m`v<7PYB|>QBB`8}RxjjyhUMJ{78XCD3l)l~H z9nn;qb6EY6Q+KW+G$0uXM8J%e^utw>PcoKfqGl3Xfb#U`f-m!fFE?t#h$}vL4!^)g zkLyg^adOTnG|g0`_e^cCyge5}hg8qJ$tGYIF zvgiSnG_HrZTD}_TJ?Sg=DacttmEAl$D)kf7isQ>vmD`1#4Ve4ck44ubg=WmckW``1 zM&(vZcMzkh_0~i4o;&Xsqfot9Y;q?}LT&BT^|>l(aUVQnx8_cNYJacu#O?@>k9BA4UY*`}y(UK8&sgFE!GyNjnvjr5iKQ)F*BH3q% zk+ z<4I@)CPy%jTTtoZd}msj+|A}A1o!C0=dk0nZUCp71F^E04)(ccbP3&^j3;cmefRFk z%ybB2B@E(;H*d8_mzfbY(K}9aX!NB{ud4NpC$df`u6QRHpQQPU^8gd99x}Sz^*ts0 z{lg+FMi{pXHKY2v+Tio9^IfuVQ2>*&QXc6IubALF9XNSVkPEkLseOmBzI(G@1d!~a zK%D4y{t8)#ysajk(j*A&7#Zb7`sNd)PMKw}k&j+1Y~LZ+Puam=bFHSJaMALV?`&U2 zw)ys54GNj9`}gA4>_ndB_^*8xayp+eRk5- zFy3OrUlb|TqhAHR1M?F(v}~v0h^jI@VPLj}{EZ|&eD+sYPp*o=1B(ZR$f#W1wz|iw z{asD(==ld|KD`NC^Cd67un#p*o-NHpf79}Ne~O|5%;eYe`(`Zgi@BUWN{BvB=Mg6OzfC3x{|MFNF4PxWYRm~BYH z4vV~cbDabG!e8Y|A&n7kVin0#i*j<*9S%xobF%c3Hp|IZP5yMFROr-y0T= zs~n)koU&PGHkL%oqyZN?(%LX+5LwZhA|LCxaLdUuXc+6%)!e226z%en^5J6m)Kw+v zd*ctCVNgX*RBTo)T>=fE0mcl7R=ML9-t)(`pfz&^vfL$Nh8g>P7p4bK>F1@^Q=y># zhC78R+o-y?M2GWz3LVA9@(M!CV1TDqWE+?)kMhar(H0Rs5#<6yWJJv))%oG1@36ts zxmPl2lz!bTm>Q_topE!?91MxgGFD#CY3qFPey9P#ZH$oOi=d1AJ$Vr62^w)G! zejY0N^$iphQy4F!j4=~9{KsaDRMH5WjRw{i#0JHMO4Rj}dRhi6^(-?i9hVubR%=wE zLcA@bep~*M{P9KC3*YAMo#Ryfufcq z?y~B3)mGGiW%!}k231&TDH|tA1-`~aOkwPuXf32B*;9`53`;>w13897y5y((T=bK1 zG}E~m*@6)ji=dj3x=I=tW3~&qi=zbeHMKlYcA$i0G(eLG@dq|${TTg0P~av%k3-#C zm@!Kcgc{Oh)0y1#QLv5i3Iy0Rhy48NLDMGWnNMgt6Y=46d-)3P3|o^GFIyAl0F#z*-cLELb+ zNQQ?JW*3)63yT&-^H$9*kWtZWx;$XV{U!E;jQ#bSZ201FJ}J=nD5%n4M{F&?0ANi)JNXfg=I?p^v9>OLbO2keg?&~lkD#(4LgFPX~K^T(_s7MfW34`(0{?v-Cc zbR{ImPiZK`B>73p4W){@04w2f9T88S(p#0ir{*}ulv-c?pyaI6q!w}(QC79lVI3*t znzJDn=E?qNwJxvV{FPm~jc`~{OgH-8P~jBfjoO$?X=g@41?j`#1d~fgi*;97Kn*$C znBp)f@t%HoOkCA^WGsIexY$cxvbiUuzwR4pm-eA0+i`@QFbS(8@RA}Lcu8@fTw*kL zjjBQMrP&!d@tNAfh~p+nc-}vP6ZadHYatdxW?ntaZyPDwwT7dXCLKb0_)dArc`r)y zE@-GUw8cKe`C!&IoAp-)3r_$^v2!x$Mz+6Iq_3p1iz^X>=XA&kho6WX%<^Q3n(OQQ#lE)rZ%V zJ^Q4?D5firGgez<@Et`_E$ES{iEG04)7`jL&bUAyP4tQ?k_c4tvFMaM_O!r1Db}x` z5kE31gV#Im^l1)QQuDK>^SkiPiLMs}Q*#(&y0m2`dH3Rr2uvK@8%Z>xh`{}hi0wKH z3ED{EpH{6F$M#J)l=Q!9sToqfGgdY=SL+UTe%;x&Fn~iw~W2i-vJ>p zdLN&w5~MgYy^1mxE;RF+Xe*+?Xr<~7*7{S-bXx{=TlRBX+;m$N1k`%nRt4Qw3BBPF zzFL7f@o3{=+!oUP>#f@|sQ-s2{}*rnACw>cH^oc;6D$4~b@^|6@HSTX{(o`I|Eb77 zzWcwx`hP>6*nbIBK2ZDqUmAZ`UH>0erv2Mv|39-{?QT9$sw9ksfdOnLFv<&nQ>SSF zKv)3=eg5x@>3;qNqT#`4t%EApc9E`FE+R1`z8Xx$EC0@=s#?zrgx`e>Ms3d;b5)dWvW5Wd9_{ i{|_D4n%;gxg8}_jxGO<^bP6OR3`JQrnNrZJ_x}SCMJqS} literal 0 HcmV?d00001 diff --git a/yshop-drink-vue3/public/UEditor22/themes/default/images/toolbar_bg.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/unhighlighted.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/upload.png b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/default/images/word.gif b/yshop-drink-vue3/public/UEditor22/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/yshop-drink-vue3/public/UEditor22/themes/iframe.css b/yshop-drink-vue3/public/UEditor22/themes/iframe.css new file mode 100644 index 0000000..32e7222 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/themes/iframe.css @@ -0,0 +1 @@ +/*可以在这里添加你自己的css*/ diff --git a/yshop-drink-vue3/public/UEditor22/third-party/SyntaxHighlighter/shCore.js b/yshop-drink-vue3/public/UEditor22/third-party/SyntaxHighlighter/shCore.js new file mode 100644 index 0000000..3249184 --- /dev/null +++ b/yshop-drink-vue3/public/UEditor22/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(attrs.hasOwnProperty(attr)){ + var value = attrs[attr]; + switch (attr) { + case 'class': + //ie下要这样赋值,setAttribute不起作用 + node.className = value; + break; + case 'style' : + node.style.cssText = node.style.cssText + ";" + value; + break; + case 'innerHTML': + node[attr] = value; + break; + case 'value': + node.value = value; + break; + default: + node.setAttribute(attrFix[attr] || attr, value); + } + } + } + return node; + }, + + /** + * 获取元素element经过计算后的样式值 + * @method getComputedStyle + * @param { Element } element 需要获取样式的元素对象 + * @param { String } styleName 需要获取的样式名 + * @return { String } 获取到的样式值 + * @example + * ```html + * + * + * + * + * + * ``` + */ + 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) { + // HaoChuan9421 + if(!node){ + return; + } + 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); + 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 + * + * + * + * + * + * + * + * + * ``` + */ + + /** + * 遍历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.textarea) { + if (utils.isString(editor.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", + 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 html = ( ie && browser.version < 9 ? '' : '') + + '' + + '' + + ( options.iframeCssUrl ? '' : '' ) + + (options.initialStyle ? '' : '') + + '' + + ''; + 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); + }, + + /** + * 设置编辑器高度 + * @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; + } + } + } + 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) { + // HaoChuan9421 + if(!this.options){ + return ''; + } + 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', + textarea: 'editorValue', + focus: false, + focusInEnd: true, + autoClearEmptyNode: true, + fullscreen: false, + readonly: false, + zIndex: 99999, + 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); + 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=)/ig.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( //ig, "" ) + //转换图片 + .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/ig, 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('<\/' + node.tagName + '>'); + } + + } + + 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 原来的方式 [^"'<>\/] 有\/就不能配对上 ') + } + html.push('') + } + //禁止指定table-width + return '
    这样的标签了 + //先去掉了,加上的原因忘了,这里先记录 + var re_tag = /<(?:(?:\/([^>]+)>)|(?:!--([\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?'':' ')+']*<\/?(\\w+)\\s*(?:[^>]*)>[\\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 || getUserData() || null, + LOCAL_FILE = 'localStorage'; + + return { + + saveLocalData: function (key, data) { + + if (storage && data) { + storage.setItem(key, data); + return true; + } + + return false; + + }, + + getLocalData: function (key) { + + if (storage) { + return storage.getItem(key); + } + + return null; + + }, + + removeItem: function (key) { + + storage && storage.removeItem(key); + + } + + }; + + function getUserData() { + + var container = document.createElement("div"); + container.style.display = "none"; + + if (!container.addBehavior) { + return null; + } + + container.addBehavior("#default#userdata"); + + return { + + getItem: function (key) { + + var result = null; + + try { + document.body.appendChild(container); + container.load(LOCAL_FILE); + result = container.getAttribute(key); + document.body.removeChild(container); + } catch (e) { + } + + return result; + + }, + + setItem: function (key, value) { + + document.body.appendChild(container); + container.setAttribute(key, value); + container.save(LOCAL_FILE); + document.body.removeChild(container); + + }, + + //// 暂时没有用到 + //clear: function () { + // + // var expiresTime = new Date(); + // expiresTime.setFullYear(expiresTime.getFullYear() - 1); + // document.body.appendChild(container); + // container.expires = expiresTime.toUTCString(); + // container.save(LOCAL_FILE); + // document.body.removeChild(container); + // + //}, + + removeItem: function (key) { + + document.body.appendChild(container); + container.removeAttribute(key); + container.save(LOCAL_FILE); + document.body.removeChild(container); + + } + + }; + + } + +})(); + +(function () { + + var ROOTKEY = 'ueditor_preference'; + + UE.Editor.prototype.setPreferences = function(key,value){ + var obj = {}; + if (utils.isString(key)) { + obj[ key ] = value; + } else { + obj = key; + } + var data = LocalStorage.getLocalData(ROOTKEY); + if (data && (data = utils.str2json(data))) { + utils.extend(data, obj); + } else { + data = obj; + } + data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data)); + }; + + UE.Editor.prototype.getPreferences = function(key){ + var data = LocalStorage.getLocalData(ROOTKEY); + if (data && (data = utils.str2json(data))) { + return key ? data[key] : data + } + return null; + }; + + UE.Editor.prototype.removePreferences = function (key) { + var data = LocalStorage.getLocalData(ROOTKEY); + if (data && (data = utils.str2json(data))) { + data[key] = undefined; + delete data[key] + } + data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data)); + }; + +})(); + + +// plugins/defaultfilter.js +///import core +///plugin 编辑器默认的过滤转换机制 + +UE.plugins['defaultfilter'] = function () { + var me = this; + me.setOpt({ + 'allowDivTransToP':true, + 'disabledTableInTable':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) + } + 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(/"|\(|\)/ig, ""); + } else { + url = su != "none" ? su.replace(/url\("?|"?\)/ig, "") : ""; + } + 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; + } + + function unhtmlData(imgCi) { + + utils.each('width,height,border,hspace,vspace'.split(','), function (item) { + + if (imgCi[item]) { + imgCi[item] = parseInt(imgCi[item], 10) || 0; + } + }); + + utils.each('src,_src'.split(','), function (item) { + + if (imgCi[item]) { + imgCi[item] = utils.unhtmlForUrl(imgCi[item]); + } + }); + utils.each('title,alt'.split(','), function (item) { + + if (imgCi[item]) { + imgCi[item] = utils.unhtml(imgCi[item]); + } + }); + } + + if (img && /img/i.test(img.tagName) && (img.className != "edui-faked-video" || img.className.indexOf("edui-upload-video")!=-1) && !img.getAttribute("word_img")) { + 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) { + unhtmlData(ci); + + str = '' + ci.alt + ''; + if (ci['floatStyle'] == 'center') { + str = '

    ' + str + '

    '; + } + html.push(str); + + } else { + for (var i = 0; ci = opt[i++];) { + unhtmlData(ci); + 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 + 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,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/ig, hh).replace(/ii/ig, ii).replace(/ss/ig, 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/ig, yyyy).replace(/yy/ig, yy).replace(/mm/ig, mm).replace(/dd/ig, 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.]*/ig,""); + } + } + }; +}; + + + + +// plugins/insertcode.js +/** + * 插入代码插件 + * @file + * @since 1.2.6.1 + */ + +UE.plugins['insertcode'] = function() { + var me = this; + me.ready(function(){ + utils.cssRule('pre','pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}', + me.document) + }); + 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')){ + 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 = []; + 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("word_img"); + 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("word_img")) { + 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, + word_img: 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/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 + '|<\/hr>', '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 (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(); + }); + } + + 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; + } + }; + }, + 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; + } + }; + } + }; + + UE.plugins['source'] = function (){ + var me = this; + var opt = this.options; + var sourceMode = false; + var sourceEditor; + var orgSetContent; + 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 ? '' : '
    ')+'

    '; + }; + } else { + me.iframe.style.cssText = bakCssText; + var cont = sourceEditor.getContent() || '

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

    '; + //处理掉block节点前后的空格,有可能会误命中,暂时不考虑 + cont = cont.replace(new RegExp('[\\r\\t\\n ]*<\/?(\\w+)\\s*(?:[^>]*)>','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; + 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" + }); + + }); + } + + }; + +})(); + +// 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; + } + } + } + }); + 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) { + + var range = me.selection.getRange(), + img = range.getClosedNode(); + + if (img && img.tagName == 'IMG' && me.body.contentEditable!="false") { + + if (img.className.indexOf("edui-faked-music") != -1 || + 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' && 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?:\/\/)/ig.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 () { + 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); + + }); + //修复内容过多时,回到顶部,顶部内容被工具栏遮挡问题 + var lastScrollY; + window.onscroll = function(){ + if(lastScrollY === null){ + lastScrollY = this.scrollY + }else if(this.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; + } + + 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){ + + url = utils.unhtmlForUrl(url); + align = utils.unhtml(align); + classname = utils.unhtml(classname).trim(); + + width = parseInt(width, 10) || 0; + height = parseInt(height, 10) || 0; + + var str; + switch (type){ + case 'image': + str = '' + break; + case 'embed': + str = ''; + break; + case 'video': + var ext = url.substr(url.lastIndexOf('.') + 1); + if(ext == 'ogv') ext = 'ogg'; + str = '' + + ''; + break; + } + return str; + } + + function switchImgAndVideo(root,img2video){ + utils.each(root.getNodesByTagName(img2video ? 'img' : 'embed video'),function(node){ + var className = node.getAttr('class'); + if(className && className.indexOf('edui-faked-video') != -1){ + var html = creatInsertStr( img2video ? node.getAttr('_url') : node.getAttr('src'),node.getAttr('width'),node.getAttr('height'),null,node.getStyle('float') || '',className,img2video ? 'embed':'image'); + node.parentNode.replaceChild(UE.uNode.createElement(html),node); + } + if(className && className.indexOf('edui-upload-video') != -1){ + var html = creatInsertStr( img2video ? node.getAttr('_url') : node.getAttr('src'),node.getAttr('width'),node.getAttr('height'),null,node.getStyle('float') || '',className,img2video ? 'video':'image'); + node.parentNode.replaceChild(UE.uNode.createElement(html),node); + } + }) + } + + me.addOutputRule(function(root){ + switchImgAndVideo(root,true) + }); + me.addInputRule(function(root){ + switchImgAndVideo(root) + }); + + /** + * 插入视频 + * @command insertvideo + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Object } videoAttr 键值对对象, 描述一个视频的所有属性 + * @example + * ```javascript + * + * var videoAttr = { + * //视频地址 + * url: 'http://www.youku.com/xxx', + * //视频宽高值, 单位px + * width: 200, + * height: 100 + * }; + * + * //editor 是编辑器实例 + * //向编辑器插入单个视频 + * editor.execCommand( 'insertvideo', videoAttr ); + * ``` + */ + + /** + * 插入视频 + * @command insertvideo + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Array } videoArr 需要插入的视频的数组, 其中的每一个元素都是一个键值对对象, 描述了一个视频的所有属性 + * @example + * ```javascript + * + * var videoAttr1 = { + * //视频地址 + * url: 'http://www.youku.com/xxx', + * //视频宽高值, 单位px + * width: 200, + * height: 100 + * }, + * videoAttr2 = { + * //视频地址 + * url: 'http://www.youku.com/xxx', + * //视频宽高值, 单位px + * width: 200, + * height: 100 + * } + * + * //editor 是编辑器实例 + * //该方法将会向编辑器内插入两个视频 + * editor.execCommand( 'insertvideo', [ videoAttr1, videoAttr2 ] ); + * ``` + */ + + /** + * 查询当前光标所在处是否是一个视频 + * @command insertvideo + * @method queryCommandState + * @param { String } cmd 需要查询的命令字符串 + * @return { int } 如果当前光标所在处的元素是一个视频对象, 则返回1,否则返回0 + * @example + * ```javascript + * + * //editor 是编辑器实例 + * editor.queryCommandState( 'insertvideo' ); + * ``` + */ + me.commands["insertvideo"] = { + execCommand: function (cmd, videoObjs, type){ + videoObjs = utils.isArray(videoObjs)?videoObjs:[videoObjs]; + var html = [],id = 'tmpVedio', cl; + for(var i=0,vi,len = videoObjs.length;i 0) { + return 0; + } + for (var i in dtd.$isNotEmpty) if (dtd.$isNotEmpty.hasOwnProperty(i)) { + if (node.getElementsByTagName(i).length) { + return 0; + } + } + return 1; + }; + UETable.getWidth = function (cell) { + if (!cell)return 0; + return parseInt(domUtils.getComputedStyle(cell, "width"), 10); + }; + + /** + * 获取单元格或者单元格组的“对齐”状态。 如果当前的检测对象是一个单元格组, 只有在满足所有单元格的 水平和竖直 对齐属性都相同的 + * 条件时才会返回其状态值,否则将返回null; 如果当前只检测了一个单元格, 则直接返回当前单元格的对齐状态; + * @param table cell or table cells , 支持单个单元格dom对象 或者 单元格dom对象数组 + * @return { align: 'left' || 'right' || 'center', valign: 'top' || 'middle' || 'bottom' } 或者 null + */ + UETable.getTableCellAlignState = function ( cells ) { + + !utils.isArray( cells ) && ( cells = [cells] ); + + var result = {}, + status = ['align', 'valign'], + tempStatus = null, + isSame = true;//状态是否相同 + + utils.each( cells, function( cellNode ){ + + utils.each( status, function( currentState ){ + + tempStatus = cellNode.getAttribute( currentState ); + + if( !result[ currentState ] && tempStatus ) { + result[ currentState ] = tempStatus; + } else if( !result[ currentState ] || ( tempStatus !== result[ currentState ] ) ) { + isSame = false; + return false; + } + + } ); + + return isSame; + + }); + + return isSame ? result : null; + + }; + + /** + * 根据当前选区获取相关的table信息 + * @return {Object} + */ + UETable.getTableItemsByRange = function (editor) { + var start = editor.selection.getStart(); + + //ff下会选中bookmark + if( start && start.id && start.id.indexOf('_baidu_bookmark_start_') === 0 && start.nextSibling) { + start = start.nextSibling; + } + + //在table或者td边缘有可能存在选中tr的情况 + var cell = start && domUtils.findParentByTagName(start, ["td", "th"], true), + tr = cell && cell.parentNode, + caption = start && domUtils.findParentByTagName(start, 'caption', true), + table = caption ? caption.parentNode : tr && tr.parentNode.parentNode; + + return { + cell:cell, + tr:tr, + table:table, + caption:caption + } + }; + UETable.getUETableBySelected = function (editor) { + var table = UETable.getTableItemsByRange(editor).table; + if (table && table.ueTable && table.ueTable.selectedTds.length) { + return table.ueTable; + } + return null; + }; + + UETable.getDefaultValue = function (editor, table) { + var borderMap = { + thin:'0px', + medium:'1px', + thick:'2px' + }, + tableBorder, tdPadding, tdBorder, tmpValue; + if (!table) { + table = editor.document.createElement('table'); + table.insertRow(0).insertCell(0).innerHTML = 'xxx'; + editor.body.appendChild(table); + var td = table.getElementsByTagName('td')[0]; + tmpValue = domUtils.getComputedStyle(table, 'border-left-width'); + tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); + tmpValue = domUtils.getComputedStyle(td, 'padding-left'); + tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10); + tmpValue = domUtils.getComputedStyle(td, 'border-left-width'); + tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); + domUtils.remove(table); + return { + tableBorder:tableBorder, + tdPadding:tdPadding, + tdBorder:tdBorder + }; + } else { + td = table.getElementsByTagName('td')[0]; + tmpValue = domUtils.getComputedStyle(table, 'border-left-width'); + tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); + tmpValue = domUtils.getComputedStyle(td, 'padding-left'); + tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10); + tmpValue = domUtils.getComputedStyle(td, 'border-left-width'); + tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); + return { + tableBorder:tableBorder, + tdPadding:tdPadding, + tdBorder:tdBorder + }; + } + }; + /** + * 根据当前点击的td或者table获取索引对象 + * @param tdOrTable + */ + UETable.getUETable = function (tdOrTable) { + var tag = tdOrTable.tagName.toLowerCase(); + tdOrTable = (tag == "td" || tag == "th" || tag == 'caption') ? domUtils.findParentByTagName(tdOrTable, "table", true) : tdOrTable; + if (!tdOrTable.ueTable) { + tdOrTable.ueTable = new UETable(tdOrTable); + } + return tdOrTable.ueTable; + }; + + UETable.cloneCell = function(cell,ignoreMerge,keepPro){ + if (!cell || utils.isString(cell)) { + return this.table.ownerDocument.createElement(cell || 'td'); + } + var flag = domUtils.hasClass(cell, "selectTdClass"); + flag && domUtils.removeClasses(cell, "selectTdClass"); + var tmpCell = cell.cloneNode(true); + if (ignoreMerge) { + tmpCell.rowSpan = tmpCell.colSpan = 1; + } + //去掉宽高 + !keepPro && domUtils.removeAttributes(tmpCell,'width height'); + !keepPro && domUtils.removeAttributes(tmpCell,'style'); + + tmpCell.style.borderLeftStyle = ""; + tmpCell.style.borderTopStyle = ""; + tmpCell.style.borderLeftColor = cell.style.borderRightColor; + tmpCell.style.borderLeftWidth = cell.style.borderRightWidth; + tmpCell.style.borderTopColor = cell.style.borderBottomColor; + tmpCell.style.borderTopWidth = cell.style.borderBottomWidth; + flag && domUtils.addClass(cell, "selectTdClass"); + return tmpCell; + } + + UETable.prototype = { + getMaxRows:function () { + var rows = this.table.rows, maxLen = 1; + for (var i = 0, row; row = rows[i]; i++) { + var currentMax = 1; + for (var j = 0, cj; cj = row.cells[j++];) { + currentMax = Math.max(cj.rowSpan || 1, currentMax); + } + maxLen = Math.max(currentMax + i, maxLen); + } + return maxLen; + }, + /** + * 获取当前表格的最大列数 + */ + getMaxCols:function () { + var rows = this.table.rows, maxLen = 0, cellRows = {}; + for (var i = 0, row; row = rows[i]; i++) { + var cellsNum = 0; + for (var j = 0, cj; cj = row.cells[j++];) { + cellsNum += (cj.colSpan || 1); + if (cj.rowSpan && cj.rowSpan > 1) { + for (var k = 1; k < cj.rowSpan; k++) { + if (!cellRows['row_' + (i + k)]) { + cellRows['row_' + (i + k)] = (cj.colSpan || 1); + } else { + cellRows['row_' + (i + k)]++ + } + } + + } + } + cellsNum += cellRows['row_' + i] || 0; + maxLen = Math.max(cellsNum, maxLen); + } + return maxLen; + }, + getCellColIndex:function (cell) { + + }, + /** + * 获取当前cell旁边的单元格, + * @param cell + * @param right + */ + getHSideCell:function (cell, right) { + try { + var cellInfo = this.getCellInfo(cell), + previewRowIndex, previewColIndex; + var len = this.selectedTds.length, + range = this.cellsRange; + //首行或者首列没有前置单元格 + if ((!right && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || (right && (!len ? (cellInfo.colIndex == (this.colsNum - 1)) : (range.endColIndex == this.colsNum - 1)))) return null; + + previewRowIndex = !len ? cellInfo.rowIndex : range.beginRowIndex; + previewColIndex = !right ? ( !len ? (cellInfo.colIndex < 1 ? 0 : (cellInfo.colIndex - 1)) : range.beginColIndex - 1) + : ( !len ? cellInfo.colIndex + 1 : range.endColIndex + 1); + return this.getCell(this.indexTable[previewRowIndex][previewColIndex].rowIndex, this.indexTable[previewRowIndex][previewColIndex].cellIndex); + } catch (e) { + showError(e); + } + }, + getTabNextCell:function (cell, preRowIndex) { + var cellInfo = this.getCellInfo(cell), + rowIndex = preRowIndex || cellInfo.rowIndex, + colIndex = cellInfo.colIndex + 1 + (cellInfo.colSpan - 1), + nextCell; + try { + nextCell = this.getCell(this.indexTable[rowIndex][colIndex].rowIndex, this.indexTable[rowIndex][colIndex].cellIndex); + } catch (e) { + try { + rowIndex = rowIndex * 1 + 1; + colIndex = 0; + nextCell = this.getCell(this.indexTable[rowIndex][colIndex].rowIndex, this.indexTable[rowIndex][colIndex].cellIndex); + } catch (e) { + } + } + return nextCell; + + }, + /** + * 获取视觉上的后置单元格 + * @param cell + * @param bottom + */ + getVSideCell:function (cell, bottom, ignoreRange) { + try { + var cellInfo = this.getCellInfo(cell), + nextRowIndex, nextColIndex; + var len = this.selectedTds.length && !ignoreRange, + range = this.cellsRange; + //末行或者末列没有后置单元格 + if ((!bottom && (cellInfo.rowIndex == 0)) || (bottom && (!len ? (cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1) : (range.endRowIndex == this.rowsNum - 1)))) return null; + + nextRowIndex = !bottom ? ( !len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1) + : ( !len ? (cellInfo.rowIndex + cellInfo.rowSpan) : range.endRowIndex + 1); + nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex; + return this.getCell(this.indexTable[nextRowIndex][nextColIndex].rowIndex, this.indexTable[nextRowIndex][nextColIndex].cellIndex); + } catch (e) { + showError(e); + } + }, + /** + * 获取相同结束位置的单元格,xOrY指代了是获取x轴相同还是y轴相同 + */ + getSameEndPosCells:function (cell, xOrY) { + try { + var flag = (xOrY.toLowerCase() === "x"), + end = domUtils.getXY(cell)[flag ? 'x' : 'y'] + cell["offset" + (flag ? 'Width' : 'Height')], + rows = this.table.rows, + cells = null, returns = []; + for (var i = 0; i < this.rowsNum; i++) { + cells = rows[i].cells; + for (var j = 0, tmpCell; tmpCell = cells[j++];) { + var tmpEnd = domUtils.getXY(tmpCell)[flag ? 'x' : 'y'] + tmpCell["offset" + (flag ? 'Width' : 'Height')]; + //对应行的td已经被上面行rowSpan了 + if (tmpEnd > end && flag) break; + if (cell == tmpCell || end == tmpEnd) { + //只获取单一的单元格 + //todo 仅获取单一单元格在特定情况下会造成returns为空,从而影响后续的拖拽实现,修正这个。需考虑性能 + if (tmpCell[flag ? "colSpan" : "rowSpan"] == 1) { + returns.push(tmpCell); + } + if (flag) break; + } + } + } + return returns; + } catch (e) { + showError(e); + } + }, + setCellContent:function (cell, content) { + cell.innerHTML = content || (browser.ie ? domUtils.fillChar : "
    "); + }, + cloneCell:UETable.cloneCell, + /** + * 获取跟当前单元格的右边竖线为左边的所有未合并单元格 + */ + getSameStartPosXCells:function (cell) { + try { + var start = domUtils.getXY(cell).x + cell.offsetWidth, + rows = this.table.rows, cells , returns = []; + for (var i = 0; i < this.rowsNum; i++) { + cells = rows[i].cells; + for (var j = 0, tmpCell; tmpCell = cells[j++];) { + var tmpStart = domUtils.getXY(tmpCell).x; + if (tmpStart > start) break; + if (tmpStart == start && tmpCell.colSpan == 1) { + returns.push(tmpCell); + break; + } + } + } + return returns; + } catch (e) { + showError(e); + } + }, + /** + * 更新table对应的索引表 + */ + update:function (table) { + this.table = table || this.table; + this.selectedTds = []; + this.cellsRange = {}; + this.indexTable = []; + var rows = this.table.rows, + rowsNum = this.getMaxRows(), + dNum = rowsNum - rows.length, + colsNum = this.getMaxCols(); + while (dNum--) { + this.table.insertRow(rows.length); + } + this.rowsNum = rowsNum; + this.colsNum = colsNum; + for (var i = 0, len = rows.length; i < len; i++) { + this.indexTable[i] = new Array(colsNum); + } + //填充索引表 + for (var rowIndex = 0, row; row = rows[rowIndex]; rowIndex++) { + for (var cellIndex = 0, cell, cells = row.cells; cell = cells[cellIndex]; cellIndex++) { + //修正整行被rowSpan时导致的行数计算错误 + if (cell.rowSpan > rowsNum) { + cell.rowSpan = rowsNum; + } + var colIndex = cellIndex, + rowSpan = cell.rowSpan || 1, + colSpan = cell.colSpan || 1; + //当已经被上一行rowSpan或者被前一列colSpan了,则跳到下一个单元格进行 + while (this.indexTable[rowIndex][colIndex]) colIndex++; + for (var j = 0; j < rowSpan; j++) { + for (var k = 0; k < colSpan; k++) { + this.indexTable[rowIndex + j][colIndex + k] = { + rowIndex:rowIndex, + cellIndex:cellIndex, + colIndex:colIndex, + rowSpan:rowSpan, + colSpan:colSpan + } + } + } + } + } + //修复残缺td + for (j = 0; j < rowsNum; j++) { + for (k = 0; k < colsNum; k++) { + if (this.indexTable[j][k] === undefined) { + row = rows[j]; + cell = row.cells[row.cells.length - 1]; + cell = cell ? cell.cloneNode(true) : this.table.ownerDocument.createElement("td"); + this.setCellContent(cell); + if (cell.colSpan !== 1)cell.colSpan = 1; + if (cell.rowSpan !== 1)cell.rowSpan = 1; + row.appendChild(cell); + this.indexTable[j][k] = { + rowIndex:j, + cellIndex:cell.cellIndex, + colIndex:k, + rowSpan:1, + colSpan:1 + } + } + } + } + //当框选后删除行或者列后撤销,需要重建选区。 + var tds = domUtils.getElementsByTagName(this.table, "td"), + selectTds = []; + utils.each(tds, function (td) { + if (domUtils.hasClass(td, "selectTdClass")) { + selectTds.push(td); + } + }); + if (selectTds.length) { + var start = selectTds[0], + end = selectTds[selectTds.length - 1], + startInfo = this.getCellInfo(start), + endInfo = this.getCellInfo(end); + this.selectedTds = selectTds; + this.cellsRange = { + beginRowIndex:startInfo.rowIndex, + beginColIndex:startInfo.colIndex, + endRowIndex:endInfo.rowIndex + endInfo.rowSpan - 1, + endColIndex:endInfo.colIndex + endInfo.colSpan - 1 + }; + } + //给第一行设置firstRow的样式名称,在排序图标的样式上使用到 + if(!domUtils.hasClass(this.table.rows[0], "firstRow")) { + domUtils.addClass(this.table.rows[0], "firstRow"); + for(var i = 1; i< this.table.rows.length; i++) { + domUtils.removeClasses(this.table.rows[i], "firstRow"); + } + } + }, + /** + * 获取单元格的索引信息 + */ + getCellInfo:function (cell) { + if (!cell) return; + var cellIndex = cell.cellIndex, + rowIndex = cell.parentNode.rowIndex, + rowInfo = this.indexTable[rowIndex], + numCols = this.colsNum; + for (var colIndex = cellIndex; colIndex < numCols; colIndex++) { + var cellInfo = rowInfo[colIndex]; + if (cellInfo.rowIndex === rowIndex && cellInfo.cellIndex === cellIndex) { + return cellInfo; + } + } + }, + /** + * 根据行列号获取单元格 + */ + getCell:function (rowIndex, cellIndex) { + return rowIndex < this.rowsNum && this.table.rows[rowIndex].cells[cellIndex] || null; + }, + /** + * 删除单元格 + */ + deleteCell:function (cell, rowIndex) { + rowIndex = typeof rowIndex == 'number' ? rowIndex : cell.parentNode.rowIndex; + var row = this.table.rows[rowIndex]; + row.deleteCell(cell.cellIndex); + }, + /** + * 根据始末两个单元格获取被框选的所有单元格范围 + */ + getCellsRange:function (cellA, cellB) { + function checkRange(beginRowIndex, beginColIndex, endRowIndex, endColIndex) { + var tmpBeginRowIndex = beginRowIndex, + tmpBeginColIndex = beginColIndex, + tmpEndRowIndex = endRowIndex, + tmpEndColIndex = endColIndex, + cellInfo, colIndex, rowIndex; + // 通过indexTable检查是否存在超出TableRange上边界的情况 + if (beginRowIndex > 0) { + for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) { + cellInfo = me.indexTable[beginRowIndex][colIndex]; + rowIndex = cellInfo.rowIndex; + if (rowIndex < beginRowIndex) { + tmpBeginRowIndex = Math.min(rowIndex, tmpBeginRowIndex); + } + } + } + // 通过indexTable检查是否存在超出TableRange右边界的情况 + if (endColIndex < me.colsNum) { + for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) { + cellInfo = me.indexTable[rowIndex][endColIndex]; + colIndex = cellInfo.colIndex + cellInfo.colSpan - 1; + if (colIndex > endColIndex) { + tmpEndColIndex = Math.max(colIndex, tmpEndColIndex); + } + } + } + // 检查是否有超出TableRange下边界的情况 + if (endRowIndex < me.rowsNum) { + for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) { + cellInfo = me.indexTable[endRowIndex][colIndex]; + rowIndex = cellInfo.rowIndex + cellInfo.rowSpan - 1; + if (rowIndex > endRowIndex) { + tmpEndRowIndex = Math.max(rowIndex, tmpEndRowIndex); + } + } + } + // 检查是否有超出TableRange左边界的情况 + if (beginColIndex > 0) { + for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) { + cellInfo = me.indexTable[rowIndex][beginColIndex]; + colIndex = cellInfo.colIndex; + if (colIndex < beginColIndex) { + tmpBeginColIndex = Math.min(cellInfo.colIndex, tmpBeginColIndex); + } + } + } + //递归调用直至所有完成所有框选单元格的扩展 + if (tmpBeginRowIndex != beginRowIndex || tmpBeginColIndex != beginColIndex || tmpEndRowIndex != endRowIndex || tmpEndColIndex != endColIndex) { + return checkRange(tmpBeginRowIndex, tmpBeginColIndex, tmpEndRowIndex, tmpEndColIndex); + } else { + // 不需要扩展TableRange的情况 + return { + beginRowIndex:beginRowIndex, + beginColIndex:beginColIndex, + endRowIndex:endRowIndex, + endColIndex:endColIndex + }; + } + } + + try { + var me = this, + cellAInfo = me.getCellInfo(cellA); + if (cellA === cellB) { + return { + beginRowIndex:cellAInfo.rowIndex, + beginColIndex:cellAInfo.colIndex, + endRowIndex:cellAInfo.rowIndex + cellAInfo.rowSpan - 1, + endColIndex:cellAInfo.colIndex + cellAInfo.colSpan - 1 + }; + } + var cellBInfo = me.getCellInfo(cellB); + // 计算TableRange的四个边 + var beginRowIndex = Math.min(cellAInfo.rowIndex, cellBInfo.rowIndex), + beginColIndex = Math.min(cellAInfo.colIndex, cellBInfo.colIndex), + endRowIndex = Math.max(cellAInfo.rowIndex + cellAInfo.rowSpan - 1, cellBInfo.rowIndex + cellBInfo.rowSpan - 1), + endColIndex = Math.max(cellAInfo.colIndex + cellAInfo.colSpan - 1, cellBInfo.colIndex + cellBInfo.colSpan - 1); + + return checkRange(beginRowIndex, beginColIndex, endRowIndex, endColIndex); + } catch (e) { + //throw e; + } + }, + /** + * 依据cellsRange获取对应的单元格集合 + */ + getCells:function (range) { + //每次获取cells之前必须先清除上次的选择,否则会对后续获取操作造成影响 + this.clearSelected(); + var beginRowIndex = range.beginRowIndex, + beginColIndex = range.beginColIndex, + endRowIndex = range.endRowIndex, + endColIndex = range.endColIndex, + cellInfo, rowIndex, colIndex, tdHash = {}, returnTds = []; + for (var i = beginRowIndex; i <= endRowIndex; i++) { + for (var j = beginColIndex; j <= endColIndex; j++) { + cellInfo = this.indexTable[i][j]; + rowIndex = cellInfo.rowIndex; + colIndex = cellInfo.colIndex; + // 如果Cells里已经包含了此Cell则跳过 + var key = rowIndex + '|' + colIndex; + if (tdHash[key]) continue; + tdHash[key] = 1; + if (rowIndex < i || colIndex < j || rowIndex + cellInfo.rowSpan - 1 > endRowIndex || colIndex + cellInfo.colSpan - 1 > endColIndex) { + return null; + } + returnTds.push(this.getCell(rowIndex, cellInfo.cellIndex)); + } + } + return returnTds; + }, + /** + * 清理已经选中的单元格 + */ + clearSelected:function () { + UETable.removeSelectedClass(this.selectedTds); + this.selectedTds = []; + this.cellsRange = {}; + }, + /** + * 根据range设置已经选中的单元格 + */ + setSelected:function (range) { + var cells = this.getCells(range); + UETable.addSelectedClass(cells); + this.selectedTds = cells; + this.cellsRange = range; + }, + isFullRow:function () { + var range = this.cellsRange; + return (range.endColIndex - range.beginColIndex + 1) == this.colsNum; + }, + isFullCol:function () { + var range = this.cellsRange, + table = this.table, + ths = table.getElementsByTagName("th"), + rows = range.endRowIndex - range.beginRowIndex + 1; + return !ths.length ? rows == this.rowsNum : rows == this.rowsNum || (rows == this.rowsNum - 1); + + }, + /** + * 获取视觉上的前置单元格,默认是左边,top传入时 + * @param cell + * @param top + */ + getNextCell:function (cell, bottom, ignoreRange) { + try { + var cellInfo = this.getCellInfo(cell), + nextRowIndex, nextColIndex; + var len = this.selectedTds.length && !ignoreRange, + range = this.cellsRange; + //末行或者末列没有后置单元格 + if ((!bottom && (cellInfo.rowIndex == 0)) || (bottom && (!len ? (cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1) : (range.endRowIndex == this.rowsNum - 1)))) return null; + + nextRowIndex = !bottom ? ( !len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1) + : ( !len ? (cellInfo.rowIndex + cellInfo.rowSpan) : range.endRowIndex + 1); + nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex; + return this.getCell(this.indexTable[nextRowIndex][nextColIndex].rowIndex, this.indexTable[nextRowIndex][nextColIndex].cellIndex); + } catch (e) { + showError(e); + } + }, + getPreviewCell:function (cell, top) { + try { + var cellInfo = this.getCellInfo(cell), + previewRowIndex, previewColIndex; + var len = this.selectedTds.length, + range = this.cellsRange; + //首行或者首列没有前置单元格 + if ((!top && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || (top && (!len ? (cellInfo.rowIndex > (this.colsNum - 1)) : (range.endColIndex == this.colsNum - 1)))) return null; + + previewRowIndex = !top ? ( !len ? cellInfo.rowIndex : range.beginRowIndex ) + : ( !len ? (cellInfo.rowIndex < 1 ? 0 : (cellInfo.rowIndex - 1)) : range.beginRowIndex); + previewColIndex = !top ? ( !len ? (cellInfo.colIndex < 1 ? 0 : (cellInfo.colIndex - 1)) : range.beginColIndex - 1) + : ( !len ? cellInfo.colIndex : range.endColIndex + 1); + return this.getCell(this.indexTable[previewRowIndex][previewColIndex].rowIndex, this.indexTable[previewRowIndex][previewColIndex].cellIndex); + } catch (e) { + showError(e); + } + }, + /** + * 移动单元格中的内容 + */ + moveContent:function (cellTo, cellFrom) { + if (UETable.isEmptyBlock(cellFrom)) return; + if (UETable.isEmptyBlock(cellTo)) { + cellTo.innerHTML = cellFrom.innerHTML; + return; + } + var child = cellTo.lastChild; + if (child.nodeType == 3 || !dtd.$block[child.tagName]) { + cellTo.appendChild(cellTo.ownerDocument.createElement('br')) + } + while (child = cellFrom.firstChild) { + cellTo.appendChild(child); + } + }, + /** + * 向右合并单元格 + */ + mergeRight:function (cell) { + var cellInfo = this.getCellInfo(cell), + rightColIndex = cellInfo.colIndex + cellInfo.colSpan, + rightCellInfo = this.indexTable[cellInfo.rowIndex][rightColIndex], + rightCell = this.getCell(rightCellInfo.rowIndex, rightCellInfo.cellIndex); + //合并 + cell.colSpan = cellInfo.colSpan + rightCellInfo.colSpan; + //被合并的单元格不应存在宽度属性 + cell.removeAttribute("width"); + //移动内容 + this.moveContent(cell, rightCell); + //删掉被合并的Cell + this.deleteCell(rightCell, rightCellInfo.rowIndex); + this.update(); + }, + /** + * 向下合并单元格 + */ + mergeDown:function (cell) { + var cellInfo = this.getCellInfo(cell), + downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan, + downCellInfo = this.indexTable[downRowIndex][cellInfo.colIndex], + downCell = this.getCell(downCellInfo.rowIndex, downCellInfo.cellIndex); + cell.rowSpan = cellInfo.rowSpan + downCellInfo.rowSpan; + cell.removeAttribute("height"); + this.moveContent(cell, downCell); + this.deleteCell(downCell, downCellInfo.rowIndex); + this.update(); + }, + /** + * 合并整个range中的内容 + */ + mergeRange:function () { + //由于合并操作可以在任意时刻进行,所以无法通过鼠标位置等信息实时生成range,只能通过缓存实例中的cellsRange对象来访问 + var range = this.cellsRange, + leftTopCell = this.getCell(range.beginRowIndex, this.indexTable[range.beginRowIndex][range.beginColIndex].cellIndex); + + if (leftTopCell.tagName == "TH" && range.endRowIndex !== range.beginRowIndex) { + var index = this.indexTable, + info = this.getCellInfo(leftTopCell); + leftTopCell = this.getCell(1, index[1][info.colIndex].cellIndex); + range = this.getCellsRange(leftTopCell, this.getCell(index[this.rowsNum - 1][info.colIndex].rowIndex, index[this.rowsNum - 1][info.colIndex].cellIndex)); + } + + // 删除剩余的Cells + var cells = this.getCells(range); + for(var i= 0,ci;ci=cells[i++];){ + if (ci !== leftTopCell) { + this.moveContent(leftTopCell, ci); + this.deleteCell(ci); + } + } + // 修改左上角Cell的rowSpan和colSpan,并调整宽度属性设置 + leftTopCell.rowSpan = range.endRowIndex - range.beginRowIndex + 1; + leftTopCell.rowSpan > 1 && leftTopCell.removeAttribute("height"); + leftTopCell.colSpan = range.endColIndex - range.beginColIndex + 1; + leftTopCell.colSpan > 1 && leftTopCell.removeAttribute("width"); + if (leftTopCell.rowSpan == this.rowsNum && leftTopCell.colSpan != 1) { + leftTopCell.colSpan = 1; + } + + if (leftTopCell.colSpan == this.colsNum && leftTopCell.rowSpan != 1) { + var rowIndex = leftTopCell.parentNode.rowIndex; + //解决IE下的表格操作问题 + if( this.table.deleteRow ) { + for (var i = rowIndex+ 1, curIndex=rowIndex+ 1, len=leftTopCell.rowSpan; i < len; i++) { + this.table.deleteRow(curIndex); + } + } else { + for (var i = 0, len=leftTopCell.rowSpan - 1; i < len; i++) { + var row = this.table.rows[rowIndex + 1]; + row.parentNode.removeChild(row); + } + } + leftTopCell.rowSpan = 1; + } + this.update(); + }, + /** + * 插入一行单元格 + */ + insertRow:function (rowIndex, sourceCell) { + var numCols = this.colsNum, + table = this.table, + row = table.insertRow(rowIndex), cell, + isInsertTitle = typeof sourceCell == 'string' && sourceCell.toUpperCase() == 'TH'; + + function replaceTdToTh(colIndex, cell, tableRow) { + if (colIndex == 0) { + var tr = tableRow.nextSibling || tableRow.previousSibling, + th = tr.cells[colIndex]; + if (th.tagName == 'TH') { + th = cell.ownerDocument.createElement("th"); + th.appendChild(cell.firstChild); + tableRow.insertBefore(th, cell); + domUtils.remove(cell) + } + }else{ + if (cell.tagName == 'TH') { + var td = cell.ownerDocument.createElement("td"); + td.appendChild(cell.firstChild); + tableRow.insertBefore(td, cell); + domUtils.remove(cell) + } + } + } + + //首行直接插入,无需考虑部分单元格被rowspan的情况 + if (rowIndex == 0 || rowIndex == this.rowsNum) { + for (var colIndex = 0; colIndex < numCols; colIndex++) { + cell = this.cloneCell(sourceCell, true); + this.setCellContent(cell); + cell.getAttribute('vAlign') && cell.setAttribute('vAlign', cell.getAttribute('vAlign')); + row.appendChild(cell); + if(!isInsertTitle) replaceTdToTh(colIndex, cell, row); + } + } else { + var infoRow = this.indexTable[rowIndex], + cellIndex = 0; + for (colIndex = 0; colIndex < numCols; colIndex++) { + var cellInfo = infoRow[colIndex]; + //如果存在某个单元格的rowspan穿过待插入行的位置,则修改该单元格的rowspan即可,无需插入单元格 + if (cellInfo.rowIndex < rowIndex) { + cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); + cell.rowSpan = cellInfo.rowSpan + 1; + } else { + cell = this.cloneCell(sourceCell, true); + this.setCellContent(cell); + row.appendChild(cell); + } + if(!isInsertTitle) replaceTdToTh(colIndex, cell, row); + } + } + //框选时插入不触发contentchange,需要手动更新索引。 + this.update(); + return row; + }, + /** + * 删除一行单元格 + * @param rowIndex + */ + deleteRow:function (rowIndex) { + var row = this.table.rows[rowIndex], + infoRow = this.indexTable[rowIndex], + colsNum = this.colsNum, + count = 0; //处理计数 + for (var colIndex = 0; colIndex < colsNum;) { + var cellInfo = infoRow[colIndex], + cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); + if (cell.rowSpan > 1) { + if (cellInfo.rowIndex == rowIndex) { + var clone = cell.cloneNode(true); + clone.rowSpan = cell.rowSpan - 1; + clone.innerHTML = ""; + cell.rowSpan = 1; + var nextRowIndex = rowIndex + 1, + nextRow = this.table.rows[nextRowIndex], + insertCellIndex, + preMerged = this.getPreviewMergedCellsNum(nextRowIndex, colIndex) - count; + if (preMerged < colIndex) { + insertCellIndex = colIndex - preMerged - 1; + //nextRow.insertCell(insertCellIndex); + domUtils.insertAfter(nextRow.cells[insertCellIndex], clone); + } else { + if (nextRow.cells.length) nextRow.insertBefore(clone, nextRow.cells[0]) + } + count += 1; + //cell.parentNode.removeChild(cell); + } + } + colIndex += cell.colSpan || 1; + } + var deleteTds = [], cacheMap = {}; + for (colIndex = 0; colIndex < colsNum; colIndex++) { + var tmpRowIndex = infoRow[colIndex].rowIndex, + tmpCellIndex = infoRow[colIndex].cellIndex, + key = tmpRowIndex + "_" + tmpCellIndex; + if (cacheMap[key])continue; + cacheMap[key] = 1; + cell = this.getCell(tmpRowIndex, tmpCellIndex); + deleteTds.push(cell); + } + var mergeTds = []; + utils.each(deleteTds, function (td) { + if (td.rowSpan == 1) { + td.parentNode.removeChild(td); + } else { + mergeTds.push(td); + } + }); + utils.each(mergeTds, function (td) { + td.rowSpan--; + }); + row.parentNode.removeChild(row); + //浏览器方法本身存在bug,采用自定义方法删除 + //this.table.deleteRow(rowIndex); + this.update(); + }, + insertCol:function (colIndex, sourceCell, defaultValue) { + var rowsNum = this.rowsNum, + rowIndex = 0, + tableRow, cell, + backWidth = parseInt((this.table.offsetWidth - (this.colsNum + 1) * 20 - (this.colsNum + 1)) / (this.colsNum + 1), 10), + isInsertTitleCol = typeof sourceCell == 'string' && sourceCell.toUpperCase() == 'TH'; + + function replaceTdToTh(rowIndex, cell, tableRow) { + if (rowIndex == 0) { + var th = cell.nextSibling || cell.previousSibling; + if (th.tagName == 'TH') { + th = cell.ownerDocument.createElement("th"); + th.appendChild(cell.firstChild); + tableRow.insertBefore(th, cell); + domUtils.remove(cell) + } + }else{ + if (cell.tagName == 'TH') { + var td = cell.ownerDocument.createElement("td"); + td.appendChild(cell.firstChild); + tableRow.insertBefore(td, cell); + domUtils.remove(cell) + } + } + } + + var preCell; + if (colIndex == 0 || colIndex == this.colsNum) { + for (; rowIndex < rowsNum; rowIndex++) { + tableRow = this.table.rows[rowIndex]; + preCell = tableRow.cells[colIndex == 0 ? colIndex : tableRow.cells.length]; + cell = this.cloneCell(sourceCell, true); //tableRow.insertCell(colIndex == 0 ? colIndex : tableRow.cells.length); + this.setCellContent(cell); + cell.setAttribute('vAlign', cell.getAttribute('vAlign')); + preCell && cell.setAttribute('width', preCell.getAttribute('width')); + if (!colIndex) { + tableRow.insertBefore(cell, tableRow.cells[0]); + } else { + domUtils.insertAfter(tableRow.cells[tableRow.cells.length - 1], cell); + } + if(!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow) + } + } else { + for (; rowIndex < rowsNum; rowIndex++) { + var cellInfo = this.indexTable[rowIndex][colIndex]; + if (cellInfo.colIndex < colIndex) { + cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); + cell.colSpan = cellInfo.colSpan + 1; + } else { + tableRow = this.table.rows[rowIndex]; + preCell = tableRow.cells[cellInfo.cellIndex]; + + cell = this.cloneCell(sourceCell, true);//tableRow.insertCell(cellInfo.cellIndex); + this.setCellContent(cell); + cell.setAttribute('vAlign', cell.getAttribute('vAlign')); + preCell && cell.setAttribute('width', preCell.getAttribute('width')); + //防止IE下报错 + preCell ? tableRow.insertBefore(cell, preCell) : tableRow.appendChild(cell); + } + if(!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow); + } + } + //框选时插入不触发contentchange,需要手动更新索引 + this.update(); + this.updateWidth(backWidth, defaultValue || {tdPadding:10, tdBorder:1}); + }, + updateWidth:function (width, defaultValue) { + var table = this.table, + tmpWidth = UETable.getWidth(table) - defaultValue.tdPadding * 2 - defaultValue.tdBorder + width; + if (tmpWidth < table.ownerDocument.body.offsetWidth) { + table.setAttribute("width", tmpWidth); + return; + } + var tds = domUtils.getElementsByTagName(this.table, "td th"); + utils.each(tds, function (td) { + td.setAttribute("width", width); + }) + }, + deleteCol:function (colIndex) { + var indexTable = this.indexTable, + tableRows = this.table.rows, + backTableWidth = this.table.getAttribute("width"), + backTdWidth = 0, + rowsNum = this.rowsNum, + cacheMap = {}; + for (var rowIndex = 0; rowIndex < rowsNum;) { + var infoRow = indexTable[rowIndex], + cellInfo = infoRow[colIndex], + key = cellInfo.rowIndex + '_' + cellInfo.colIndex; + // 跳过已经处理过的Cell + if (cacheMap[key])continue; + cacheMap[key] = 1; + var cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); + if (!backTdWidth) backTdWidth = cell && parseInt(cell.offsetWidth / cell.colSpan, 10).toFixed(0); + // 如果Cell的colSpan大于1, 就修改colSpan, 否则就删掉这个Cell + if (cell.colSpan > 1) { + cell.colSpan--; + } else { + tableRows[rowIndex].deleteCell(cellInfo.cellIndex); + } + rowIndex += cellInfo.rowSpan || 1; + } + this.table.setAttribute("width", backTableWidth - backTdWidth); + this.update(); + }, + splitToCells:function (cell) { + var me = this, + cells = this.splitToRows(cell); + utils.each(cells, function (cell) { + me.splitToCols(cell); + }) + }, + splitToRows:function (cell) { + var cellInfo = this.getCellInfo(cell), + rowIndex = cellInfo.rowIndex, + colIndex = cellInfo.colIndex, + results = []; + // 修改Cell的rowSpan + cell.rowSpan = 1; + results.push(cell); + // 补齐单元格 + for (var i = rowIndex, endRow = rowIndex + cellInfo.rowSpan; i < endRow; i++) { + if (i == rowIndex)continue; + var tableRow = this.table.rows[i], + tmpCell = tableRow.insertCell(colIndex - this.getPreviewMergedCellsNum(i, colIndex)); + tmpCell.colSpan = cellInfo.colSpan; + this.setCellContent(tmpCell); + tmpCell.setAttribute('vAlign', cell.getAttribute('vAlign')); + tmpCell.setAttribute('align', cell.getAttribute('align')); + if (cell.style.cssText) { + tmpCell.style.cssText = cell.style.cssText; + } + results.push(tmpCell); + } + this.update(); + return results; + }, + getPreviewMergedCellsNum:function (rowIndex, colIndex) { + var indexRow = this.indexTable[rowIndex], + num = 0; + for (var i = 0; i < colIndex;) { + var colSpan = indexRow[i].colSpan, + tmpRowIndex = indexRow[i].rowIndex; + num += (colSpan - (tmpRowIndex == rowIndex ? 1 : 0)); + i += colSpan; + } + return num; + }, + splitToCols:function (cell) { + var backWidth = (cell.offsetWidth / cell.colSpan - 22).toFixed(0), + + cellInfo = this.getCellInfo(cell), + rowIndex = cellInfo.rowIndex, + colIndex = cellInfo.colIndex, + results = []; + // 修改Cell的rowSpan + cell.colSpan = 1; + cell.setAttribute("width", backWidth); + results.push(cell); + // 补齐单元格 + for (var j = colIndex, endCol = colIndex + cellInfo.colSpan; j < endCol; j++) { + if (j == colIndex)continue; + var tableRow = this.table.rows[rowIndex], + tmpCell = tableRow.insertCell(this.indexTable[rowIndex][j].cellIndex + 1); + tmpCell.rowSpan = cellInfo.rowSpan; + this.setCellContent(tmpCell); + tmpCell.setAttribute('vAlign', cell.getAttribute('vAlign')); + tmpCell.setAttribute('align', cell.getAttribute('align')); + tmpCell.setAttribute('width', backWidth); + if (cell.style.cssText) { + tmpCell.style.cssText = cell.style.cssText; + } + //处理th的情况 + if (cell.tagName == 'TH') { + var th = cell.ownerDocument.createElement('th'); + th.appendChild(tmpCell.firstChild); + th.setAttribute('vAlign', cell.getAttribute('vAlign')); + th.rowSpan = tmpCell.rowSpan; + tableRow.insertBefore(th, tmpCell); + domUtils.remove(tmpCell); + } + results.push(tmpCell); + } + this.update(); + return results; + }, + isLastCell:function (cell, rowsNum, colsNum) { + rowsNum = rowsNum || this.rowsNum; + colsNum = colsNum || this.colsNum; + var cellInfo = this.getCellInfo(cell); + return ((cellInfo.rowIndex + cellInfo.rowSpan) == rowsNum) && + ((cellInfo.colIndex + cellInfo.colSpan) == colsNum); + }, + getLastCell:function (cells) { + cells = cells || this.table.getElementsByTagName("td"); + var firstInfo = this.getCellInfo(cells[0]); + var me = this, last = cells[0], + tr = last.parentNode, + cellsNum = 0, cols = 0, rows; + utils.each(cells, function (cell) { + if (cell.parentNode == tr)cols += cell.colSpan || 1; + cellsNum += cell.rowSpan * cell.colSpan || 1; + }); + rows = cellsNum / cols; + utils.each(cells, function (cell) { + if (me.isLastCell(cell, rows, cols)) { + last = cell; + return false; + } + }); + return last; + + }, + selectRow:function (rowIndex) { + var indexRow = this.indexTable[rowIndex], + start = this.getCell(indexRow[0].rowIndex, indexRow[0].cellIndex), + end = this.getCell(indexRow[this.colsNum - 1].rowIndex, indexRow[this.colsNum - 1].cellIndex), + range = this.getCellsRange(start, end); + this.setSelected(range); + }, + selectTable:function () { + var tds = this.table.getElementsByTagName("td"), + range = this.getCellsRange(tds[0], tds[tds.length - 1]); + this.setSelected(range); + }, + setBackground:function (cells, value) { + if (typeof value === "string") { + utils.each(cells, function (cell) { + cell.style.backgroundColor = value; + }) + } else if (typeof value === "object") { + value = utils.extend({ + repeat:true, + colorList:["#ddd", "#fff"] + }, value); + var rowIndex = this.getCellInfo(cells[0]).rowIndex, + count = 0, + colors = value.colorList, + getColor = function (list, index, repeat) { + return list[index] ? list[index] : repeat ? list[index % list.length] : ""; + }; + for (var i = 0, cell; cell = cells[i++];) { + var cellInfo = this.getCellInfo(cell); + cell.style.backgroundColor = getColor(colors, ((rowIndex + count) == cellInfo.rowIndex) ? count : ++count, value.repeat); + } + } + }, + removeBackground:function (cells) { + utils.each(cells, function (cell) { + cell.style.backgroundColor = ""; + }) + } + + + }; + function showError(e) { + } +})(); + +// plugins/table.cmds.js +/** + * Created with JetBrains PhpStorm. + * User: taoqili + * Date: 13-2-20 + * Time: 下午6:25 + * To change this template use File | Settings | File Templates. + */ +; +(function () { + var UT = UE.UETable, + getTableItemsByRange = function (editor) { + return UT.getTableItemsByRange(editor); + }, + getUETableBySelected = function (editor) { + return UT.getUETableBySelected(editor) + }, + getDefaultValue = function (editor, table) { + return UT.getDefaultValue(editor, table); + }, + getUETable = function (tdOrTable) { + return UT.getUETable(tdOrTable); + }; + + + UE.commands['inserttable'] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? -1 : 0; + }, + execCommand: function (cmd, opt) { + function createTable(opt, tdWidth) { + var html = [], + rowsNum = opt.numRows, + colsNum = opt.numCols; + for (var r = 0; r < rowsNum; r++) { + html.push(''); + for (var c = 0; c < colsNum; c++) { + html.push('
  • ' + (browser.ie && browser.version < 11 ? domUtils.fillChar : '
    ') + '
    ' + html.join('') + '
    ' + } + + if (!opt) { + opt = utils.extend({}, { + numCols: this.options.defaultCols, + numRows: this.options.defaultRows, + tdvalign: this.options.tdvalign + }) + } + var me = this; + var range = this.selection.getRange(), + start = range.startContainer, + firstParentBlock = domUtils.findParent(start, function (node) { + return domUtils.isBlockElm(node); + }, true) || me.body; + + var defaultValue = getDefaultValue(me), + tableWidth = firstParentBlock.offsetWidth, + tdWidth = Math.floor(tableWidth / opt.numCols - defaultValue.tdPadding * 2 - defaultValue.tdBorder); + + //todo其他属性 + !opt.tdvalign && (opt.tdvalign = me.options.tdvalign); + me.execCommand("inserthtml", createTable(opt, tdWidth)); + } + }; + + UE.commands['insertparagraphbeforetable'] = { + queryCommandState: function () { + return getTableItemsByRange(this).cell ? 0 : -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var p = this.document.createElement("p"); + p.innerHTML = browser.ie ? ' ' : '
    '; + table.parentNode.insertBefore(p, table); + this.selection.getRange().setStart(p, 0).setCursor(); + } + } + }; + + UE.commands['deletetable'] = { + queryCommandState: function () { + var rng = this.selection.getRange(); + return domUtils.findParentByTagName(rng.startContainer, 'table', true) ? 0 : -1; + }, + execCommand: function (cmd, table) { + var rng = this.selection.getRange(); + table = table || domUtils.findParentByTagName(rng.startContainer, 'table', true); + if (table) { + var next = table.nextSibling; + if (!next) { + next = domUtils.createElement(this.document, 'p', { + 'innerHTML': browser.ie ? domUtils.fillChar : '
    ' + }); + table.parentNode.insertBefore(next, table); + } + domUtils.remove(table); + rng = this.selection.getRange(); + if (next.nodeType == 3) { + rng.setStartBefore(next) + } else { + rng.setStart(next, 0) + } + rng.setCursor(false, true) + this.fireEvent("tablehasdeleted") + + } + + } + }; + UE.commands['cellalign'] = { + queryCommandState: function () { + return getSelectedArr(this).length ? 0 : -1 + }, + execCommand: function (cmd, align) { + var selectedTds = getSelectedArr(this); + if (selectedTds.length) { + for (var i = 0, ci; ci = selectedTds[i++];) { + ci.setAttribute('align', align); + } + } + } + }; + UE.commands['cellvalign'] = { + queryCommandState: function () { + return getSelectedArr(this).length ? 0 : -1; + }, + execCommand: function (cmd, valign) { + var selectedTds = getSelectedArr(this); + if (selectedTds.length) { + for (var i = 0, ci; ci = selectedTds[i++];) { + ci.setAttribute('vAlign', valign); + } + } + } + }; + UE.commands['insertcaption'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + return table.getElementsByTagName('caption').length == 0 ? 1 : -1; + } + return -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var caption = this.document.createElement('caption'); + caption.innerHTML = browser.ie ? domUtils.fillChar : '
    '; + table.insertBefore(caption, table.firstChild); + var range = this.selection.getRange(); + range.setStart(caption, 0).setCursor(); + } + + } + }; + UE.commands['deletecaption'] = { + queryCommandState: function () { + var rng = this.selection.getRange(), + table = domUtils.findParentByTagName(rng.startContainer, 'table'); + if (table) { + return table.getElementsByTagName('caption').length == 0 ? -1 : 1; + } + return -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + table = domUtils.findParentByTagName(rng.startContainer, 'table'); + if (table) { + domUtils.remove(table.getElementsByTagName('caption')[0]); + var range = this.selection.getRange(); + range.setStart(table.rows[0].cells[0], 0).setCursor(); + } + + } + }; + UE.commands['inserttitle'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var firstRow = table.rows[0]; + return firstRow.cells[firstRow.cells.length-1].tagName.toLowerCase() != 'th' ? 0 : -1 + } + return -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + getUETable(table).insertRow(0, 'th'); + } + var th = table.getElementsByTagName('th')[0]; + this.selection.getRange().setStart(th, 0).setCursor(false, true); + } + }; + UE.commands['deletetitle'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var firstRow = table.rows[0]; + return firstRow.cells[firstRow.cells.length-1].tagName.toLowerCase() == 'th' ? 0 : -1 + } + return -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + domUtils.remove(table.rows[0]) + } + var td = table.getElementsByTagName('td')[0]; + this.selection.getRange().setStart(td, 0).setCursor(false, true); + } + }; + UE.commands['inserttitlecol'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var lastRow = table.rows[table.rows.length-1]; + return lastRow.getElementsByTagName('th').length ? -1 : 0; + } + return -1; + }, + execCommand: function (cmd) { + var table = getTableItemsByRange(this).table; + if (table) { + getUETable(table).insertCol(0, 'th'); + } + resetTdWidth(table, this); + var th = table.getElementsByTagName('th')[0]; + this.selection.getRange().setStart(th, 0).setCursor(false, true); + } + }; + UE.commands['deletetitlecol'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var lastRow = table.rows[table.rows.length-1]; + return lastRow.getElementsByTagName('th').length ? 0 : -1; + } + return -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + for(var i = 0; i< table.rows.length; i++ ){ + domUtils.remove(table.rows[i].children[0]) + } + } + resetTdWidth(table, this); + var td = table.getElementsByTagName('td')[0]; + this.selection.getRange().setStart(td, 0).setCursor(false, true); + } + }; + + UE.commands["mergeright"] = { + queryCommandState: function (cmd) { + var tableItems = getTableItemsByRange(this), + table = tableItems.table, + cell = tableItems.cell; + + if (!table || !cell) return -1; + var ut = getUETable(table); + if (ut.selectedTds.length) return -1; + + var cellInfo = ut.getCellInfo(cell), + rightColIndex = cellInfo.colIndex + cellInfo.colSpan; + if (rightColIndex >= ut.colsNum) return -1; // 如果处于最右边则不能向右合并 + + var rightCellInfo = ut.indexTable[cellInfo.rowIndex][rightColIndex], + rightCell = table.rows[rightCellInfo.rowIndex].cells[rightCellInfo.cellIndex]; + if (!rightCell || cell.tagName != rightCell.tagName) return -1; // TH和TD不能相互合并 + + // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并 + return (rightCellInfo.rowIndex == cellInfo.rowIndex && rightCellInfo.rowSpan == cellInfo.rowSpan) ? 0 : -1; + }, + execCommand: function (cmd) { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.mergeRight(cell); + rng.moveToBookmark(bk).select(); + } + }; + UE.commands["mergedown"] = { + queryCommandState: function (cmd) { + var tableItems = getTableItemsByRange(this), + table = tableItems.table, + cell = tableItems.cell; + + if (!table || !cell) return -1; + var ut = getUETable(table); + if (ut.selectedTds.length)return -1; + + var cellInfo = ut.getCellInfo(cell), + downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan; + if (downRowIndex >= ut.rowsNum) return -1; // 如果处于最下边则不能向下合并 + + var downCellInfo = ut.indexTable[downRowIndex][cellInfo.colIndex], + downCell = table.rows[downCellInfo.rowIndex].cells[downCellInfo.cellIndex]; + if (!downCell || cell.tagName != downCell.tagName) return -1; // TH和TD不能相互合并 + + // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并 + return (downCellInfo.colIndex == cellInfo.colIndex && downCellInfo.colSpan == cellInfo.colSpan) ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.mergeDown(cell); + rng.moveToBookmark(bk).select(); + } + }; + UE.commands["mergecells"] = { + queryCommandState: function () { + return getUETableBySelected(this) ? 0 : -1; + }, + execCommand: function () { + var ut = getUETableBySelected(this); + if (ut && ut.selectedTds.length) { + var cell = ut.selectedTds[0]; + ut.mergeRange(); + var rng = this.selection.getRange(); + if (domUtils.isEmptyBlock(cell)) { + rng.setStart(cell, 0).collapse(true) + } else { + rng.selectNodeContents(cell) + } + rng.select(); + } + + + } + }; + UE.commands["insertrow"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + return cell && (cell.tagName == "TD" || (cell.tagName == 'TH' && tableItems.tr !== tableItems.table.rows[0])) && + getUETable(tableItems.table).rowsNum < this.options.maxRowNum ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell, + table = tableItems.table, + ut = getUETable(table), + cellInfo = ut.getCellInfo(cell); + //ut.insertRow(!ut.selectedTds.length ? cellInfo.rowIndex:ut.cellsRange.beginRowIndex,''); + if (!ut.selectedTds.length) { + ut.insertRow(cellInfo.rowIndex, cell); + } else { + var range = ut.cellsRange; + for (var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; i < len; i++) { + ut.insertRow(range.beginRowIndex, cell); + } + } + rng.moveToBookmark(bk).select(); + if (table.getAttribute("interlaced") === "enabled")this.fireEvent("interlacetable", table); + } + }; + //后插入行 + UE.commands["insertrownext"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + return cell && (cell.tagName == "TD") && getUETable(tableItems.table).rowsNum < this.options.maxRowNum ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell, + table = tableItems.table, + ut = getUETable(table), + cellInfo = ut.getCellInfo(cell); + //ut.insertRow(!ut.selectedTds.length? cellInfo.rowIndex + cellInfo.rowSpan : ut.cellsRange.endRowIndex + 1,''); + if (!ut.selectedTds.length) { + ut.insertRow(cellInfo.rowIndex + cellInfo.rowSpan, cell); + } else { + var range = ut.cellsRange; + for (var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; i < len; i++) { + ut.insertRow(range.endRowIndex + 1, cell); + } + } + rng.moveToBookmark(bk).select(); + if (table.getAttribute("interlaced") === "enabled")this.fireEvent("interlacetable", table); + } + }; + UE.commands["deleterow"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this); + return tableItems.cell ? 0 : -1; + }, + execCommand: function () { + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell), + cellsRange = ut.cellsRange, + cellInfo = ut.getCellInfo(cell), + preCell = ut.getVSideCell(cell), + nextCell = ut.getVSideCell(cell, true), + rng = this.selection.getRange(); + if (utils.isEmptyObject(cellsRange)) { + ut.deleteRow(cellInfo.rowIndex); + } else { + for (var i = cellsRange.beginRowIndex; i < cellsRange.endRowIndex + 1; i++) { + ut.deleteRow(cellsRange.beginRowIndex); + } + } + var table = ut.table; + if (!table.getElementsByTagName('td').length) { + var nextSibling = table.nextSibling; + domUtils.remove(table); + if (nextSibling) { + rng.setStart(nextSibling, 0).setCursor(false, true); + } + } else { + if (cellInfo.rowSpan == 1 || cellInfo.rowSpan == cellsRange.endRowIndex - cellsRange.beginRowIndex + 1) { + if (nextCell || preCell) rng.selectNodeContents(nextCell || preCell).setCursor(false, true); + } else { + var newCell = ut.getCell(cellInfo.rowIndex, ut.indexTable[cellInfo.rowIndex][cellInfo.colIndex].cellIndex); + if (newCell) rng.selectNodeContents(newCell).setCursor(false, true); + } + } + if (table.getAttribute("interlaced") === "enabled")this.fireEvent("interlacetable", table); + } + }; + UE.commands["insertcol"] = { + queryCommandState: function (cmd) { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + return cell && (cell.tagName == "TD" || (cell.tagName == 'TH' && cell !== tableItems.tr.cells[0])) && + getUETable(tableItems.table).colsNum < this.options.maxColNum ? 0 : -1; + }, + execCommand: function (cmd) { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + if (this.queryCommandState(cmd) == -1)return; + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell), + cellInfo = ut.getCellInfo(cell); + + //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex:ut.cellsRange.beginColIndex); + if (!ut.selectedTds.length) { + ut.insertCol(cellInfo.colIndex, cell); + } else { + var range = ut.cellsRange; + for (var i = 0, len = range.endColIndex - range.beginColIndex + 1; i < len; i++) { + ut.insertCol(range.beginColIndex, cell); + } + } + rng.moveToBookmark(bk).select(true); + } + }; + UE.commands["insertcolnext"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + return cell && getUETable(tableItems.table).colsNum < this.options.maxColNum ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell), + cellInfo = ut.getCellInfo(cell); + //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex + cellInfo.colSpan:ut.cellsRange.endColIndex +1); + if (!ut.selectedTds.length) { + ut.insertCol(cellInfo.colIndex + cellInfo.colSpan, cell); + } else { + var range = ut.cellsRange; + for (var i = 0, len = range.endColIndex - range.beginColIndex + 1; i < len; i++) { + ut.insertCol(range.endColIndex + 1, cell); + } + } + rng.moveToBookmark(bk).select(); + } + }; + + UE.commands["deletecol"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this); + return tableItems.cell ? 0 : -1; + }, + execCommand: function () { + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell), + range = ut.cellsRange, + cellInfo = ut.getCellInfo(cell), + preCell = ut.getHSideCell(cell), + nextCell = ut.getHSideCell(cell, true); + if (utils.isEmptyObject(range)) { + ut.deleteCol(cellInfo.colIndex); + } else { + for (var i = range.beginColIndex; i < range.endColIndex + 1; i++) { + ut.deleteCol(range.beginColIndex); + } + } + var table = ut.table, + rng = this.selection.getRange(); + + if (!table.getElementsByTagName('td').length) { + var nextSibling = table.nextSibling; + domUtils.remove(table); + if (nextSibling) { + rng.setStart(nextSibling, 0).setCursor(false, true); + } + } else { + if (domUtils.inDoc(cell, this.document)) { + rng.setStart(cell, 0).setCursor(false, true); + } else { + if (nextCell && domUtils.inDoc(nextCell, this.document)) { + rng.selectNodeContents(nextCell).setCursor(false, true); + } else { + if (preCell && domUtils.inDoc(preCell, this.document)) { + rng.selectNodeContents(preCell).setCursor(true, true); + } + } + } + } + } + }; + UE.commands["splittocells"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + if (!cell) return -1; + var ut = getUETable(tableItems.table); + if (ut.selectedTds.length > 0) return -1; + return cell && (cell.colSpan > 1 || cell.rowSpan > 1) ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.splitToCells(cell); + rng.moveToBookmark(bk).select(); + } + }; + UE.commands["splittorows"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + if (!cell) return -1; + var ut = getUETable(tableItems.table); + if (ut.selectedTds.length > 0) return -1; + return cell && cell.rowSpan > 1 ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.splitToRows(cell); + rng.moveToBookmark(bk).select(); + } + }; + UE.commands["splittocols"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + if (!cell) return -1; + var ut = getUETable(tableItems.table); + if (ut.selectedTds.length > 0) return -1; + return cell && cell.colSpan > 1 ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.splitToCols(cell); + rng.moveToBookmark(bk).select(); + + } + }; + + UE.commands["adaptbytext"] = + UE.commands["adaptbywindow"] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd) { + var tableItems = getTableItemsByRange(this), + table = tableItems.table; + if (table) { + if (cmd == 'adaptbywindow') { + resetTdWidth(table, this); + } else { + var cells = domUtils.getElementsByTagName(table, "td th"); + utils.each(cells, function (cell) { + cell.removeAttribute("width"); + }); + table.removeAttribute("width"); + } + } + } + }; + + //平均分配各列 + UE.commands['averagedistributecol'] = { + queryCommandState: function () { + var ut = getUETableBySelected(this); + if (!ut) return -1; + return ut.isFullRow() || ut.isFullCol() ? 0 : -1; + }, + execCommand: function (cmd) { + var me = this, + ut = getUETableBySelected(me); + + function getAverageWidth() { + var tb = ut.table, + averageWidth, sumWidth = 0, colsNum = 0, + tbAttr = getDefaultValue(me, tb); + + if (ut.isFullRow()) { + sumWidth = tb.offsetWidth; + colsNum = ut.colsNum; + } else { + var begin = ut.cellsRange.beginColIndex, + end = ut.cellsRange.endColIndex, + node; + for (var i = begin; i <= end;) { + node = ut.selectedTds[i]; + sumWidth += node.offsetWidth; + i += node.colSpan; + colsNum += 1; + } + } + averageWidth = Math.ceil(sumWidth / colsNum) - tbAttr.tdBorder * 2 - tbAttr.tdPadding * 2; + return averageWidth; + } + + function setAverageWidth(averageWidth) { + utils.each(domUtils.getElementsByTagName(ut.table, "th"), function (node) { + node.setAttribute("width", ""); + }); + var cells = ut.isFullRow() ? domUtils.getElementsByTagName(ut.table, "td") : ut.selectedTds; + + utils.each(cells, function (node) { + if (node.colSpan == 1) { + node.setAttribute("width", averageWidth); + } + }); + } + + if (ut && ut.selectedTds.length) { + setAverageWidth(getAverageWidth()); + } + } + }; + //平均分配各行 + UE.commands['averagedistributerow'] = { + queryCommandState: function () { + var ut = getUETableBySelected(this); + if (!ut) return -1; + if (ut.selectedTds && /th/ig.test(ut.selectedTds[0].tagName)) return -1; + return ut.isFullRow() || ut.isFullCol() ? 0 : -1; + }, + execCommand: function (cmd) { + var me = this, + ut = getUETableBySelected(me); + + function getAverageHeight() { + var averageHeight, rowNum, sumHeight = 0, + tb = ut.table, + tbAttr = getDefaultValue(me, tb), + tdpadding = parseInt(domUtils.getComputedStyle(tb.getElementsByTagName('td')[0], "padding-top")); + + if (ut.isFullCol()) { + var captionArr = domUtils.getElementsByTagName(tb, "caption"), + thArr = domUtils.getElementsByTagName(tb, "th"), + captionHeight, thHeight; + + if (captionArr.length > 0) { + captionHeight = captionArr[0].offsetHeight; + } + if (thArr.length > 0) { + thHeight = thArr[0].offsetHeight; + } + + sumHeight = tb.offsetHeight - (captionHeight || 0) - (thHeight || 0); + rowNum = thArr.length == 0 ? ut.rowsNum : (ut.rowsNum - 1); + } else { + var begin = ut.cellsRange.beginRowIndex, + end = ut.cellsRange.endRowIndex, + count = 0, + trs = domUtils.getElementsByTagName(tb, "tr"); + for (var i = begin; i <= end; i++) { + sumHeight += trs[i].offsetHeight; + count += 1; + } + rowNum = count; + } + //ie8下是混杂模式 + if (browser.ie && browser.version < 9) { + averageHeight = Math.ceil(sumHeight / rowNum); + } else { + averageHeight = Math.ceil(sumHeight / rowNum) - tbAttr.tdBorder * 2 - tdpadding * 2; + } + return averageHeight; + } + + function setAverageHeight(averageHeight) { + var cells = ut.isFullCol() ? domUtils.getElementsByTagName(ut.table, "td") : ut.selectedTds; + utils.each(cells, function (node) { + if (node.rowSpan == 1) { + node.setAttribute("height", averageHeight); + } + }); + } + + if (ut && ut.selectedTds.length) { + setAverageHeight(getAverageHeight()); + } + } + }; + + //单元格对齐方式 + UE.commands['cellalignment'] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd, data) { + var me = this, + ut = getUETableBySelected(me); + + if (!ut) { + var start = me.selection.getStart(), + cell = start && domUtils.findParentByTagName(start, ["td", "th", "caption"], true); + if (!/caption/ig.test(cell.tagName)) { + domUtils.setAttributes(cell, data); + } else { + cell.style.textAlign = data.align; + cell.style.verticalAlign = data.vAlign; + } + me.selection.getRange().setCursor(true); + } else { + utils.each(ut.selectedTds, function (cell) { + domUtils.setAttributes(cell, data); + }); + } + }, + /** + * 查询当前点击的单元格的对齐状态, 如果当前已经选择了多个单元格, 则会返回所有单元格经过统一协调过后的状态 + * @see UE.UETable.getTableCellAlignState + */ + queryCommandValue: function (cmd) { + + var activeMenuCell = getTableItemsByRange( this).cell; + + if( !activeMenuCell ) { + activeMenuCell = getSelectedArr(this)[0]; + } + + if (!activeMenuCell) { + + return null; + + } else { + + //获取同时选中的其他单元格 + var cells = UE.UETable.getUETable(activeMenuCell).selectedTds; + + !cells.length && ( cells = activeMenuCell ); + + return UE.UETable.getTableCellAlignState(cells); + + } + + } + }; + //表格对齐方式 + UE.commands['tablealignment'] = { + queryCommandState: function () { + if (browser.ie && browser.version < 8) { + return -1; + } + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd, value) { + var me = this, + start = me.selection.getStart(), + table = start && domUtils.findParentByTagName(start, ["table"], true); + + if (table) { + table.setAttribute("align",value); + } + } + }; + + //表格属性 + UE.commands['edittable'] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd, color) { + var rng = this.selection.getRange(), + table = domUtils.findParentByTagName(rng.startContainer, 'table'); + if (table) { + var arr = domUtils.getElementsByTagName(table, "td").concat( + domUtils.getElementsByTagName(table, "th"), + domUtils.getElementsByTagName(table, "caption") + ); + utils.each(arr, function (node) { + node.style.borderColor = color; + }); + } + } + }; + //单元格属性 + UE.commands['edittd'] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd, bkColor) { + var me = this, + ut = getUETableBySelected(me); + + if (!ut) { + var start = me.selection.getStart(), + cell = start && domUtils.findParentByTagName(start, ["td", "th", "caption"], true); + if (cell) { + cell.style.backgroundColor = bkColor; + } + } else { + utils.each(ut.selectedTds, function (cell) { + cell.style.backgroundColor = bkColor; + }); + } + } + }; + + UE.commands["settablebackground"] = { + queryCommandState: function () { + return getSelectedArr(this).length > 1 ? 0 : -1; + }, + execCommand: function (cmd, value) { + var cells, ut; + cells = getSelectedArr(this); + ut = getUETable(cells[0]); + ut.setBackground(cells, value); + } + }; + + UE.commands["cleartablebackground"] = { + queryCommandState: function () { + var cells = getSelectedArr(this); + if (!cells.length)return -1; + for (var i = 0, cell; cell = cells[i++];) { + if (cell.style.backgroundColor !== "") return 0; + } + return -1; + }, + execCommand: function () { + var cells = getSelectedArr(this), + ut = getUETable(cells[0]); + ut.removeBackground(cells); + } + }; + + UE.commands["interlacetable"] = UE.commands["uninterlacetable"] = { + queryCommandState: function (cmd) { + var table = getTableItemsByRange(this).table; + if (!table) return -1; + var interlaced = table.getAttribute("interlaced"); + if (cmd == "interlacetable") { + //TODO 待定 + //是否需要待定,如果设置,则命令只能单次执行成功,但反射具备toggle效果;否则可以覆盖前次命令,但反射将不存在toggle效果 + return (interlaced === "enabled") ? -1 : 0; + } else { + return (!interlaced || interlaced === "disabled") ? -1 : 0; + } + }, + execCommand: function (cmd, classList) { + var table = getTableItemsByRange(this).table; + if (cmd == "interlacetable") { + table.setAttribute("interlaced", "enabled"); + this.fireEvent("interlacetable", table, classList); + } else { + table.setAttribute("interlaced", "disabled"); + this.fireEvent("uninterlacetable", table); + } + } + }; + UE.commands["setbordervisible"] = { + queryCommandState: function (cmd) { + var table = getTableItemsByRange(this).table; + if (!table) return -1; + return 0; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + utils.each(domUtils.getElementsByTagName(table,'td'),function(td){ + td.style.borderWidth = '1px'; + td.style.borderStyle = 'solid'; + }) + } + }; + function resetTdWidth(table, editor) { + var tds = domUtils.getElementsByTagName(table,'td th'); + utils.each(tds, function (td) { + td.removeAttribute("width"); + }); + table.setAttribute('width', getTableWidth(editor, true, getDefaultValue(editor, table))); + var tdsWidths = []; + setTimeout(function () { + utils.each(tds, function (td) { + (td.colSpan == 1) && tdsWidths.push(td.offsetWidth) + }) + utils.each(tds, function (td,i) { + (td.colSpan == 1) && td.setAttribute("width", tdsWidths[i] + ""); + }) + }, 0); + } + + function getTableWidth(editor, needIEHack, defaultValue) { + var body = editor.body; + return body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (editor.options.offsetWidth || 0); + } + + function getSelectedArr(editor) { + var cell = getTableItemsByRange(editor).cell; + if (cell) { + var ut = getUETable(cell); + return ut.selectedTds.length ? ut.selectedTds : [cell]; + } else { + return []; + } + } +})(); + + +// plugins/table.action.js +/** + * Created with JetBrains PhpStorm. + * User: taoqili + * Date: 12-10-12 + * Time: 上午10:05 + * To change this template use File | Settings | File Templates. + */ +UE.plugins['table'] = function () { + var me = this, + tabTimer = null, + //拖动计时器 + tableDragTimer = null, + //双击计时器 + tableResizeTimer = null, + //单元格最小宽度 + cellMinWidth = 5, + isInResizeBuffer = false, + //单元格边框大小 + cellBorderWidth = 5, + //鼠标偏移距离 + offsetOfTableCell = 10, + //记录在有限时间内的点击状态, 共有3个取值, 0, 1, 2。 0代表未初始化, 1代表单击了1次,2代表2次 + singleClickState = 0, + userActionStatus = null, + //双击允许的时间范围 + dblclickTime = 360, + UT = UE.UETable, + getUETable = function (tdOrTable) { + return UT.getUETable(tdOrTable); + }, + getUETableBySelected = function (editor) { + return UT.getUETableBySelected(editor); + }, + getDefaultValue = function (editor, table) { + return UT.getDefaultValue(editor, table); + }, + removeSelectedClass = function (cells) { + return UT.removeSelectedClass(cells); + }; + + function showError(e) { +// throw e; + } + me.ready(function(){ + var me = this; + var orgGetText = me.selection.getText; + me.selection.getText = function(){ + var table = getUETableBySelected(me); + if(table){ + var str = ''; + utils.each(table.selectedTds,function(td){ + str += td[browser.ie?'innerText':'textContent']; + }) + return str; + }else{ + return orgGetText.call(me.selection) + } + + } + }) + + //处理拖动及框选相关方法 + var startTd = null, //鼠标按下时的锚点td + currentTd = null, //当前鼠标经过时的td + onDrag = "", //指示当前拖动状态,其值可为"","h","v" ,分别表示未拖动状态,横向拖动状态,纵向拖动状态,用于鼠标移动过程中的判断 + onBorder = false, //检测鼠标按下时是否处在单元格边缘位置 + dragButton = null, + dragOver = false, + dragLine = null, //模拟的拖动线 + dragTd = null; //发生拖动的目标td + + var mousedown = false, + //todo 判断混乱模式 + needIEHack = true; + + me.setOpt({ + 'maxColNum':20, + 'maxRowNum':100, + 'defaultCols':5, + 'defaultRows':5, + 'tdvalign':'top', + 'cursorpath':me.options.UEDITOR_HOME_URL + "themes/default/images/cursor_", + 'tableDragable':false, + 'classList':["ue-table-interlace-color-single","ue-table-interlace-color-double"] + }); + me.getUETable = getUETable; + var commands = { + 'deletetable':1, + 'inserttable':1, + 'cellvalign':1, + 'insertcaption':1, + 'deletecaption':1, + 'inserttitle':1, + 'deletetitle':1, + "mergeright":1, + "mergedown":1, + "mergecells":1, + "insertrow":1, + "insertrownext":1, + "deleterow":1, + "insertcol":1, + "insertcolnext":1, + "deletecol":1, + "splittocells":1, + "splittorows":1, + "splittocols":1, + "adaptbytext":1, + "adaptbywindow":1, + "adaptbycustomer":1, + "insertparagraph":1, + "insertparagraphbeforetable":1, + "averagedistributecol":1, + "averagedistributerow":1 + }; + me.ready(function () { + utils.cssRule('table', + //选中的td上的样式 + '.selectTdClass{background-color:#edf5fa !important}' + + 'table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}' + + //插入的表格的默认样式 + 'table{margin-bottom:10px;border-collapse:collapse;display:table;}' + + 'td,th{padding: 5px 10px;border: 1px solid #DDD;}' + + 'caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}' + + 'th{border-top:1px solid #BBB;background-color:#F7F7F7;}' + + 'table tr.firstRow th{border-top-width:2px;}' + + '.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }' + + 'td p{margin:0;padding:0;}', me.document); + + var tableCopyList, isFullCol, isFullRow; + //注册del/backspace事件 + me.addListener('keydown', function (cmd, evt) { + var me = this; + var keyCode = evt.keyCode || evt.which; + + if (keyCode == 8) { + + var ut = getUETableBySelected(me); + if (ut && ut.selectedTds.length) { + + if (ut.isFullCol()) { + me.execCommand('deletecol') + } else if (ut.isFullRow()) { + me.execCommand('deleterow') + } else { + me.fireEvent('delcells'); + } + domUtils.preventDefault(evt); + } + + var caption = domUtils.findParentByTagName(me.selection.getStart(), 'caption', true), + range = me.selection.getRange(); + if (range.collapsed && caption && isEmptyBlock(caption)) { + me.fireEvent('saveScene'); + var table = caption.parentNode; + domUtils.remove(caption); + if (table) { + range.setStart(table.rows[0].cells[0], 0).setCursor(false, true); + } + me.fireEvent('saveScene'); + } + + } + + if (keyCode == 46) { + + ut = getUETableBySelected(me); + if (ut) { + me.fireEvent('saveScene'); + for (var i = 0, ci; ci = ut.selectedTds[i++];) { + domUtils.fillNode(me.document, ci) + } + me.fireEvent('saveScene'); + domUtils.preventDefault(evt); + + } + + } + if (keyCode == 13) { + + var rng = me.selection.getRange(), + caption = domUtils.findParentByTagName(rng.startContainer, 'caption', true); + if (caption) { + var table = domUtils.findParentByTagName(caption, 'table'); + if (!rng.collapsed) { + + rng.deleteContents(); + me.fireEvent('saveScene'); + } else { + if (caption) { + rng.setStart(table.rows[0].cells[0], 0).setCursor(false, true); + } + } + domUtils.preventDefault(evt); + return; + } + if (rng.collapsed) { + var table = domUtils.findParentByTagName(rng.startContainer, 'table'); + if (table) { + var cell = table.rows[0].cells[0], + start = domUtils.findParentByTagName(me.selection.getStart(), ['td', 'th'], true), + preNode = table.previousSibling; + if (cell === start && (!preNode || preNode.nodeType == 1 && preNode.tagName == 'TABLE' ) && domUtils.isStartInblock(rng)) { + var first = domUtils.findParent(me.selection.getStart(), function(n){return domUtils.isBlockElm(n)}, true); + if(first && ( /t(h|d)/i.test(first.tagName) || first === start.firstChild )){ + me.execCommand('insertparagraphbeforetable'); + domUtils.preventDefault(evt); + } + + } + } + } + } + + if ((evt.ctrlKey || evt.metaKey) && evt.keyCode == '67') { + tableCopyList = null; + var ut = getUETableBySelected(me); + if (ut) { + var tds = ut.selectedTds; + isFullCol = ut.isFullCol(); + isFullRow = ut.isFullRow(); + tableCopyList = [ + [ut.cloneCell(tds[0],null,true)] + ]; + for (var i = 1, ci; ci = tds[i]; i++) { + if (ci.parentNode !== tds[i - 1].parentNode) { + tableCopyList.push([ut.cloneCell(ci,null,true)]); + } else { + tableCopyList[tableCopyList.length - 1].push(ut.cloneCell(ci,null,true)); + } + + } + } + } + }); + me.addListener("tablehasdeleted",function(){ + toggleDraggableState(this, false, "", null); + if (dragButton)domUtils.remove(dragButton); + }); + + me.addListener('beforepaste', function (cmd, html) { + var me = this; + var rng = me.selection.getRange(); + if (domUtils.findParentByTagName(rng.startContainer, 'caption', true)) { + var div = me.document.createElement("div"); + div.innerHTML = html.html; + //trace:3729 + html.html = div[browser.ie9below ? 'innerText' : 'textContent']; + return; + } + var table = getUETableBySelected(me); + if (tableCopyList) { + me.fireEvent('saveScene'); + var rng = me.selection.getRange(); + var td = domUtils.findParentByTagName(rng.startContainer, ['td', 'th'], true), tmpNode, preNode; + if (td) { + var ut = getUETable(td); + if (isFullRow) { + var rowIndex = ut.getCellInfo(td).rowIndex; + if (td.tagName == 'TH') { + rowIndex++; + } + for (var i = 0, ci; ci = tableCopyList[i++];) { + var tr = ut.insertRow(rowIndex++, "td"); + for (var j = 0, cj; cj = ci[j]; j++) { + var cell = tr.cells[j]; + if (!cell) { + cell = tr.insertCell(j) + } + cell.innerHTML = cj.innerHTML; + cj.getAttribute('width') && cell.setAttribute('width', cj.getAttribute('width')); + cj.getAttribute('vAlign') && cell.setAttribute('vAlign', cj.getAttribute('vAlign')); + cj.getAttribute('align') && cell.setAttribute('align', cj.getAttribute('align')); + cj.style.cssText && (cell.style.cssText = cj.style.cssText) + } + for (var j = 0, cj; cj = tr.cells[j]; j++) { + if (!ci[j]) + break; + cj.innerHTML = ci[j].innerHTML; + ci[j].getAttribute('width') && cj.setAttribute('width', ci[j].getAttribute('width')); + ci[j].getAttribute('vAlign') && cj.setAttribute('vAlign', ci[j].getAttribute('vAlign')); + ci[j].getAttribute('align') && cj.setAttribute('align', ci[j].getAttribute('align')); + ci[j].style.cssText && (cj.style.cssText = ci[j].style.cssText) + } + } + } else { + if (isFullCol) { + cellInfo = ut.getCellInfo(td); + var maxColNum = 0; + for (var j = 0, ci = tableCopyList[0], cj; cj = ci[j++];) { + maxColNum += cj.colSpan || 1; + } + me.__hasEnterExecCommand = true; + for (i = 0; i < maxColNum; i++) { + me.execCommand('insertcol'); + } + me.__hasEnterExecCommand = false; + td = ut.table.rows[0].cells[cellInfo.cellIndex]; + if (td.tagName == 'TH') { + td = ut.table.rows[1].cells[cellInfo.cellIndex]; + } + } + for (var i = 0, ci; ci = tableCopyList[i++];) { + tmpNode = td; + for (var j = 0, cj; cj = ci[j++];) { + if (td) { + td.innerHTML = cj.innerHTML; + //todo 定制处理 + cj.getAttribute('width') && td.setAttribute('width', cj.getAttribute('width')); + cj.getAttribute('vAlign') && td.setAttribute('vAlign', cj.getAttribute('vAlign')); + cj.getAttribute('align') && td.setAttribute('align', cj.getAttribute('align')); + cj.style.cssText && (td.style.cssText = cj.style.cssText); + preNode = td; + td = td.nextSibling; + } else { + var cloneTd = cj.cloneNode(true); + domUtils.removeAttributes(cloneTd, ['class', 'rowSpan', 'colSpan']); + + preNode.parentNode.appendChild(cloneTd) + } + } + td = ut.getNextCell(tmpNode, true, true); + if (!tableCopyList[i]) + break; + if (!td) { + var cellInfo = ut.getCellInfo(tmpNode); + ut.table.insertRow(ut.table.rows.length); + ut.update(); + td = ut.getVSideCell(tmpNode, true); + } + } + } + ut.update(); + } else { + table = me.document.createElement('table'); + for (var i = 0, ci; ci = tableCopyList[i++];) { + var tr = table.insertRow(table.rows.length); + for (var j = 0, cj; cj = ci[j++];) { + cloneTd = UT.cloneCell(cj,null,true); + domUtils.removeAttributes(cloneTd, ['class']); + tr.appendChild(cloneTd) + } + if (j == 2 && cloneTd.rowSpan > 1) { + cloneTd.rowSpan = 1; + } + } + + var defaultValue = getDefaultValue(me), + width = me.body.offsetWidth - + (needIEHack ? parseInt(domUtils.getComputedStyle(me.body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (me.options.offsetWidth || 0); + me.execCommand('insertHTML', '' + table.innerHTML.replace(/>\s*<').replace(/\bth\b/gi, "td") + '
    ') + } + me.fireEvent('contentchange'); + me.fireEvent('saveScene'); + html.html = ''; + return true; + } else { + var div = me.document.createElement("div"), tables; + div.innerHTML = html.html; + tables = div.getElementsByTagName("table"); + if (domUtils.findParentByTagName(me.selection.getStart(), 'table')) { + utils.each(tables, function (t) { + domUtils.remove(t) + }); + if (domUtils.findParentByTagName(me.selection.getStart(), 'caption', true)) { + div.innerHTML = div[browser.ie ? 'innerText' : 'textContent']; + } + } else { + utils.each(tables, function (table) { + removeStyleSize(table, true); + domUtils.removeAttributes(table, ['style', 'border']); + utils.each(domUtils.getElementsByTagName(table, "td"), function (td) { + if (isEmptyBlock(td)) { + domUtils.fillNode(me.document, td); + } + removeStyleSize(td, true); +// domUtils.removeAttributes(td, ['style']) + }); + }); + } + html.html = div.innerHTML; + } + }); + + me.addListener('afterpaste', function () { + utils.each(domUtils.getElementsByTagName(me.body, "table"), function (table) { + if (table.offsetWidth > me.body.offsetWidth) { + var defaultValue = getDefaultValue(me, table); + table.style.width = me.body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(me.body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (me.options.offsetWidth || 0) + 'px' + } + }) + }); + me.addListener('blur', function () { + tableCopyList = null; + }); + var timer; + me.addListener('keydown', function () { + clearTimeout(timer); + timer = setTimeout(function () { + var rng = me.selection.getRange(), + cell = domUtils.findParentByTagName(rng.startContainer, ['th', 'td'], true); + if (cell) { + var table = cell.parentNode.parentNode.parentNode; + if (table.offsetWidth > table.getAttribute("width")) { + cell.style.wordBreak = "break-all"; + } + } + + }, 100); + }); + me.addListener("selectionchange", function () { + toggleDraggableState(me, false, "", null); + }); + + + //内容变化时触发索引更新 + //todo 可否考虑标记检测,如果不涉及表格的变化就不进行索引重建和更新 + me.addListener("contentchange", function () { + var me = this; + //尽可能排除一些不需要更新的状况 + hideDragLine(me); + if (getUETableBySelected(me))return; + var rng = me.selection.getRange(); + var start = rng.startContainer; + start = domUtils.findParentByTagName(start, ['td', 'th'], true); + utils.each(domUtils.getElementsByTagName(me.document, 'table'), function (table) { + if (me.fireEvent("excludetable", table) === true) return; + table.ueTable = new UT(table); + //trace:3742 +// utils.each(domUtils.getElementsByTagName(me.document, 'td'), function (td) { +// +// if (domUtils.isEmptyBlock(td) && td !== start) { +// domUtils.fillNode(me.document, td); +// if (browser.ie && browser.version == 6) { +// td.innerHTML = ' ' +// } +// } +// }); +// utils.each(domUtils.getElementsByTagName(me.document, 'th'), function (th) { +// if (domUtils.isEmptyBlock(th) && th !== start) { +// domUtils.fillNode(me.document, th); +// if (browser.ie && browser.version == 6) { +// th.innerHTML = ' ' +// } +// } +// }); + table.onmouseover = function () { + me.fireEvent('tablemouseover', table); + }; + table.onmousemove = function () { + me.fireEvent('tablemousemove', table); + me.options.tableDragable && toggleDragButton(true, this, me); + utils.defer(function(){ + me.fireEvent('contentchange',50) + },true) + }; + table.onmouseout = function () { + me.fireEvent('tablemouseout', table); + toggleDraggableState(me, false, "", null); + hideDragLine(me); + }; + table.onclick = function (evt) { + evt = me.window.event || evt; + var target = getParentTdOrTh(evt.target || evt.srcElement); + if (!target)return; + var ut = getUETable(target), + table = ut.table, + cellInfo = ut.getCellInfo(target), + cellsRange, + rng = me.selection.getRange(); +// if ("topLeft" == inPosition(table, mouseCoords(evt))) { +// cellsRange = ut.getCellsRange(ut.table.rows[0].cells[0], ut.getLastCell()); +// ut.setSelected(cellsRange); +// return; +// } +// if ("bottomRight" == inPosition(table, mouseCoords(evt))) { +// +// return; +// } + if (inTableSide(table, target, evt, true)) { + var endTdCol = ut.getCell(ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].rowIndex, ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].cellIndex); + if (evt.shiftKey && ut.selectedTds.length) { + if (ut.selectedTds[0] !== endTdCol) { + cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdCol); + ut.setSelected(cellsRange); + } else { + rng && rng.selectNodeContents(endTdCol).select(); + } + } else { + if (target !== endTdCol) { + cellsRange = ut.getCellsRange(target, endTdCol); + ut.setSelected(cellsRange); + } else { + rng && rng.selectNodeContents(endTdCol).select(); + } + } + return; + } + if (inTableSide(table, target, evt)) { + var endTdRow = ut.getCell(ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].rowIndex, ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].cellIndex); + if (evt.shiftKey && ut.selectedTds.length) { + if (ut.selectedTds[0] !== endTdRow) { + cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdRow); + ut.setSelected(cellsRange); + } else { + rng && rng.selectNodeContents(endTdRow).select(); + } + } else { + if (target !== endTdRow) { + cellsRange = ut.getCellsRange(target, endTdRow); + ut.setSelected(cellsRange); + } else { + rng && rng.selectNodeContents(endTdRow).select(); + } + } + } + }; + }); + + switchBorderColor(me, true); + }); + + domUtils.on(me.document, "mousemove", mouseMoveEvent); + + domUtils.on(me.document, "mouseout", function (evt) { + var target = evt.target || evt.srcElement; + if (target.tagName == "TABLE") { + toggleDraggableState(me, false, "", null); + } + }); + /** + * 表格隔行变色 + */ + me.addListener("interlacetable",function(type,table,classList){ + if(!table) return; + var me = this, + rows = table.rows, + len = rows.length, + getClass = function(list,index,repeat){ + return list[index] ? list[index] : repeat ? list[index % list.length]: ""; + }; + for(var i = 0;i 1 ? currentRowIndex : ua.getCellInfo(cell).rowIndex; + var nextCell = ua.getTabNextCell(cell, currentRowIndex); + if (nextCell) { + if (isEmptyBlock(nextCell)) { + range.setStart(nextCell, 0).setCursor(false, true) + } else { + range.selectNodeContents(nextCell).select() + } + } else { + me.fireEvent('saveScene'); + me.__hasEnterExecCommand = true; + this.execCommand('insertrownext'); + me.__hasEnterExecCommand = false; + range = this.selection.getRange(); + range.setStart(table.rows[table.rows.length - 1].cells[0], 0).setCursor(); + me.fireEvent('saveScene'); + } + } + return true; + } + + }); + browser.ie && me.addListener('selectionchange', function () { + toggleDraggableState(this, false, "", null); + }); + me.addListener("keydown", function (type, evt) { + var me = this; + //处理在表格的最后一个输入tab产生新的表格 + var keyCode = evt.keyCode || evt.which; + if (keyCode == 8 || keyCode == 46) { + return; + } + var notCtrlKey = !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey; + notCtrlKey && removeSelectedClass(domUtils.getElementsByTagName(me.body, "td")); + var ut = getUETableBySelected(me); + if (!ut) return; + notCtrlKey && ut.clearSelected(); + }); + + me.addListener("beforegetcontent", function () { + switchBorderColor(this, false); + browser.ie && utils.each(this.document.getElementsByTagName('caption'), function (ci) { + if (domUtils.isEmptyNode(ci)) { + ci.innerHTML = ' ' + } + }); + }); + me.addListener("aftergetcontent", function () { + switchBorderColor(this, true); + }); + me.addListener("getAllHtml", function () { + removeSelectedClass(me.document.getElementsByTagName("td")); + }); + //修正全屏状态下插入的表格宽度在非全屏状态下撑开编辑器的情况 + me.addListener("fullscreenchanged", function (type, fullscreen) { + if (!fullscreen) { + var ratio = this.body.offsetWidth / document.body.offsetWidth, + tables = domUtils.getElementsByTagName(this.body, "table"); + utils.each(tables, function (table) { + if (table.offsetWidth < me.body.offsetWidth) return false; + var tds = domUtils.getElementsByTagName(table, "td"), + backWidths = []; + utils.each(tds, function (td) { + backWidths.push(td.offsetWidth); + }); + for (var i = 0, td; td = tds[i]; i++) { + td.setAttribute("width", Math.floor(backWidths[i] * ratio)); + } + table.setAttribute("width", Math.floor(getTableWidth(me, needIEHack, getDefaultValue(me)))) + }); + } + }); + + //重写execCommand命令,用于处理框选时的处理 + var oldExecCommand = me.execCommand; + me.execCommand = function (cmd, datatat) { + + var me = this, + args = arguments; + + cmd = cmd.toLowerCase(); + var ut = getUETableBySelected(me), tds, + range = new dom.Range(me.document), + cmdFun = me.commands[cmd] || UE.commands[cmd], + result; + if (!cmdFun) return; + if (ut && !commands[cmd] && !cmdFun.notNeedUndo && !me.__hasEnterExecCommand) { + me.__hasEnterExecCommand = true; + me.fireEvent("beforeexeccommand", cmd); + tds = ut.selectedTds; + var lastState = -2, lastValue = -2, value, state; + for (var i = 0, td; td = tds[i]; i++) { + if (isEmptyBlock(td)) { + range.setStart(td, 0).setCursor(false, true) + } else { + range.selectNode(td).select(true); + } + state = me.queryCommandState(cmd); + value = me.queryCommandValue(cmd); + if (state != -1) { + if (lastState !== state || lastValue !== value) { + me._ignoreContentChange = true; + result = oldExecCommand.apply(me, arguments); + me._ignoreContentChange = false; + + } + lastState = me.queryCommandState(cmd); + lastValue = me.queryCommandValue(cmd); + if (domUtils.isEmptyBlock(td)) { + domUtils.fillNode(me.document, td) + } + } + } + range.setStart(tds[0], 0).shrinkBoundary(true).setCursor(false, true); + me.fireEvent('contentchange'); + me.fireEvent("afterexeccommand", cmd); + me.__hasEnterExecCommand = false; + me._selectionChange(); + } else { + result = oldExecCommand.apply(me, arguments); + } + return result; + }; + + + }); + /** + * 删除obj的宽高style,改成属性宽高 + * @param obj + * @param replaceToProperty + */ + function removeStyleSize(obj, replaceToProperty) { + removeStyle(obj, "width", true); + removeStyle(obj, "height", true); + } + + function removeStyle(obj, styleName, replaceToProperty) { + if (obj.style[styleName]) { + replaceToProperty && obj.setAttribute(styleName, parseInt(obj.style[styleName], 10)); + obj.style[styleName] = ""; + } + } + + function getParentTdOrTh(ele) { + if (ele.tagName == "TD" || ele.tagName == "TH") return ele; + var td; + if (td = domUtils.findParentByTagName(ele, "td", true) || domUtils.findParentByTagName(ele, "th", true)) return td; + return null; + } + + function isEmptyBlock(node) { + var reg = new RegExp(domUtils.fillChar, 'g'); + if (node[browser.ie ? 'innerText' : 'textContent'].replace(/^\s*$/, '').replace(reg, '').length > 0) { + return 0; + } + for (var n in dtd.$isNotEmpty) { + if (node.getElementsByTagName(n).length) { + return 0; + } + } + return 1; + } + + + function mouseCoords(evt) { + if (evt.pageX || evt.pageY) { + return { x:evt.pageX, y:evt.pageY }; + } + return { + x:evt.clientX + me.document.body.scrollLeft - me.document.body.clientLeft, + y:evt.clientY + me.document.body.scrollTop - me.document.body.clientTop + }; + } + + function mouseMoveEvent(evt) { + + if( isEditorDisabled() ) { + return; + } + + try { + + //普通状态下鼠标移动 + var target = getParentTdOrTh(evt.target || evt.srcElement), + pos; + + //区分用户的行为是拖动还是双击 + if( isInResizeBuffer ) { + + me.body.style.webkitUserSelect = 'none'; + + if( Math.abs( userActionStatus.x - evt.clientX ) > offsetOfTableCell || Math.abs( userActionStatus.y - evt.clientY ) > offsetOfTableCell ) { + clearTableDragTimer(); + isInResizeBuffer = false; + singleClickState = 0; + //drag action + tableBorderDrag(evt); + } + } + + //修改单元格大小时的鼠标移动 + if (onDrag && dragTd) { + singleClickState = 0; + me.body.style.webkitUserSelect = 'none'; + me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges'](); + pos = mouseCoords(evt); + toggleDraggableState(me, true, onDrag, pos, target); + if (onDrag == "h") { + dragLine.style.left = getPermissionX(dragTd, evt) + "px"; + } else if (onDrag == "v") { + dragLine.style.top = getPermissionY(dragTd, evt) + "px"; + } + return; + } + //当鼠标处于table上时,修改移动过程中的光标状态 + if (target) { + //针对使用table作为容器的组件不触发拖拽效果 + if (me.fireEvent('excludetable', target) === true) + return; + pos = mouseCoords(evt); + var state = getRelation(target, pos), + table = domUtils.findParentByTagName(target, "table", true); + + if (inTableSide(table, target, evt, true)) { + if (me.fireEvent("excludetable", table) === true) return; + me.body.style.cursor = "url(" + me.options.cursorpath + "h.png),pointer"; + } else if (inTableSide(table, target, evt)) { + if (me.fireEvent("excludetable", table) === true) return; + me.body.style.cursor = "url(" + me.options.cursorpath + "v.png),pointer"; + } else { + me.body.style.cursor = "text"; + var curCell = target; + if (/\d/.test(state)) { + state = state.replace(/\d/, ''); + target = getUETable(target).getPreviewCell(target, state == "v"); + } + //位于第一行的顶部或者第一列的左边时不可拖动 + toggleDraggableState(me, target ? !!state : false, target ? state : '', pos, target); + + } + } else { + toggleDragButton(false, table, me); + } + + } catch (e) { + showError(e); + } + } + + var dragButtonTimer; + + function toggleDragButton(show, table, editor) { + if (!show) { + if (dragOver)return; + dragButtonTimer = setTimeout(function () { + !dragOver && dragButton && dragButton.parentNode && dragButton.parentNode.removeChild(dragButton); + }, 2000); + } else { + createDragButton(table, editor); + } + } + + function createDragButton(table, editor) { + var pos = domUtils.getXY(table), + doc = table.ownerDocument; + if (dragButton && dragButton.parentNode)return dragButton; + dragButton = doc.createElement("div"); + dragButton.contentEditable = false; + dragButton.innerHTML = ""; + dragButton.style.cssText = "width:15px;height:15px;background-image:url(" + editor.options.UEDITOR_HOME_URL + "dialogs/table/dragicon.png);position: absolute;cursor:move;top:" + (pos.y - 15) + "px;left:" + (pos.x) + "px;"; + domUtils.unSelectable(dragButton); + dragButton.onmouseover = function (evt) { + dragOver = true; + }; + dragButton.onmouseout = function (evt) { + dragOver = false; + }; + domUtils.on(dragButton, 'click', function (type, evt) { + doClick(evt, this); + }); + domUtils.on(dragButton, 'dblclick', function (type, evt) { + doDblClick(evt); + }); + domUtils.on(dragButton, 'dragstart', function (type, evt) { + domUtils.preventDefault(evt); + }); + var timer; + + function doClick(evt, button) { + // 部分浏览器下需要清理 + clearTimeout(timer); + timer = setTimeout(function () { + editor.fireEvent("tableClicked", table, button); + }, 300); + } + + function doDblClick(evt) { + clearTimeout(timer); + var ut = getUETable(table), + start = table.rows[0].cells[0], + end = ut.getLastCell(), + range = ut.getCellsRange(start, end); + editor.selection.getRange().setStart(start, 0).setCursor(false, true); + ut.setSelected(range); + } + + doc.body.appendChild(dragButton); + } + + +// function inPosition(table, pos) { +// var tablePos = domUtils.getXY(table), +// width = table.offsetWidth, +// height = table.offsetHeight; +// if (pos.x - tablePos.x < 5 && pos.y - tablePos.y < 5) { +// return "topLeft"; +// } else if (tablePos.x + width - pos.x < 5 && tablePos.y + height - pos.y < 5) { +// return "bottomRight"; +// } +// } + + function inTableSide(table, cell, evt, top) { + var pos = mouseCoords(evt), + state = getRelation(cell, pos); + + if (top) { + var caption = table.getElementsByTagName("caption")[0], + capHeight = caption ? caption.offsetHeight : 0; + return (state == "v1") && ((pos.y - domUtils.getXY(table).y - capHeight) < 8); + } else { + return (state == "h1") && ((pos.x - domUtils.getXY(table).x) < 8); + } + } + + /** + * 获取拖动时允许的X轴坐标 + * @param dragTd + * @param evt + */ + function getPermissionX(dragTd, evt) { + var ut = getUETable(dragTd); + if (ut) { + var preTd = ut.getSameEndPosCells(dragTd, "x")[0], + nextTd = ut.getSameStartPosXCells(dragTd)[0], + mouseX = mouseCoords(evt).x, + left = (preTd ? domUtils.getXY(preTd).x : domUtils.getXY(ut.table).x) + 20 , + right = nextTd ? domUtils.getXY(nextTd).x + nextTd.offsetWidth - 20 : (me.body.offsetWidth + 5 || parseInt(domUtils.getComputedStyle(me.body, "width"), 10)); + + left += cellMinWidth; + right -= cellMinWidth; + + return mouseX < left ? left : mouseX > right ? right : mouseX; + } + } + + /** + * 获取拖动时允许的Y轴坐标 + */ + function getPermissionY(dragTd, evt) { + try { + var top = domUtils.getXY(dragTd).y, + mousePosY = mouseCoords(evt).y; + return mousePosY < top ? top : mousePosY; + } catch (e) { + showError(e); + } + } + + /** + * 移动状态切换 + */ + function toggleDraggableState(editor, draggable, dir, mousePos, cell) { + try { + editor.body.style.cursor = dir == "h" ? "col-resize" : dir == "v" ? "row-resize" : "text"; + if (browser.ie) { + if (dir && !mousedown && !getUETableBySelected(editor)) { + getDragLine(editor, editor.document); + showDragLineAt(dir, cell); + } else { + hideDragLine(editor) + } + } + onBorder = draggable; + } catch (e) { + showError(e); + } + } + + /** + * 获取与UETable相关的resize line + * @param uetable UETable对象 + */ + function getResizeLineByUETable() { + + var lineId = '_UETableResizeLine', + line = this.document.getElementById( lineId ); + + if( !line ) { + line = this.document.createElement("div"); + line.id = lineId; + line.contnetEditable = false; + line.setAttribute("unselectable", "on"); + + var styles = { + width: 2*cellBorderWidth + 1 + 'px', + position: 'absolute', + 'z-index': 100000, + cursor: 'col-resize', + background: 'red', + display: 'none' + }; + + //切换状态 + line.onmouseout = function(){ + this.style.display = 'none'; + }; + + utils.extend( line.style, styles ); + + this.document.body.appendChild( line ); + + } + + return line; + + } + + /** + * 更新resize-line + */ + function updateResizeLine( cell, uetable ) { + + var line = getResizeLineByUETable.call( this ), + table = uetable.table, + styles = { + top: domUtils.getXY( table ).y + 'px', + left: domUtils.getXY( cell).x + cell.offsetWidth - cellBorderWidth + 'px', + display: 'block', + height: table.offsetHeight + 'px' + }; + + utils.extend( line.style, styles ); + + } + + /** + * 显示resize-line + */ + function showResizeLine( cell ) { + + var uetable = getUETable( cell ); + + updateResizeLine.call( this, cell, uetable ); + + } + + /** + * 获取鼠标与当前单元格的相对位置 + * @param ele + * @param mousePos + */ + function getRelation(ele, mousePos) { + var elePos = domUtils.getXY(ele); + + if( !elePos ) { + return ''; + } + + if (elePos.x + ele.offsetWidth - mousePos.x < cellBorderWidth) { + return "h"; + } + if (mousePos.x - elePos.x < cellBorderWidth) { + return 'h1' + } + if (elePos.y + ele.offsetHeight - mousePos.y < cellBorderWidth) { + return "v"; + } + if (mousePos.y - elePos.y < cellBorderWidth) { + return 'v1' + } + return ''; + } + + function mouseDownEvent(type, evt) { + + if( isEditorDisabled() ) { + return ; + } + + userActionStatus = { + x: evt.clientX, + y: evt.clientY + }; + + //右键菜单单独处理 + if (evt.button == 2) { + var ut = getUETableBySelected(me), + flag = false; + + if (ut) { + var td = getTargetTd(me, evt); + utils.each(ut.selectedTds, function (ti) { + if (ti === td) { + flag = true; + } + }); + if (!flag) { + removeSelectedClass(domUtils.getElementsByTagName(me.body, "th td")); + ut.clearSelected() + } else { + td = ut.selectedTds[0]; + setTimeout(function () { + me.selection.getRange().setStart(td, 0).setCursor(false, true); + }, 0); + + } + } + } else { + tableClickHander( evt ); + } + + } + + //清除表格的计时器 + function clearTableTimer() { + tabTimer && clearTimeout( tabTimer ); + tabTimer = null; + } + + //双击收缩 + function tableDbclickHandler(evt) { + singleClickState = 0; + evt = evt || me.window.event; + var target = getParentTdOrTh(evt.target || evt.srcElement); + if (target) { + var h; + if (h = getRelation(target, mouseCoords(evt))) { + + hideDragLine( me ); + + if (h == 'h1') { + h = 'h'; + if (inTableSide(domUtils.findParentByTagName(target, "table"), target, evt)) { + me.execCommand('adaptbywindow'); + } else { + target = getUETable(target).getPreviewCell(target); + if (target) { + var rng = me.selection.getRange(); + rng.selectNodeContents(target).setCursor(true, true) + } + } + } + if (h == 'h') { + var ut = getUETable(target), + table = ut.table, + cells = getCellsByMoveBorder( target, table, true ); + + cells = extractArray( cells, 'left' ); + + ut.width = ut.offsetWidth; + + var oldWidth = [], + newWidth = []; + + utils.each( cells, function( cell ){ + + oldWidth.push( cell.offsetWidth ); + + } ); + + utils.each( cells, function( cell ){ + + cell.removeAttribute("width"); + + } ); + + window.setTimeout( function(){ + + //是否允许改变 + var changeable = true; + + utils.each( cells, function( cell, index ){ + + var width = cell.offsetWidth; + + if( width > oldWidth[index] ) { + changeable = false; + return false; + } + + newWidth.push( width ); + + } ); + + var change = changeable ? newWidth : oldWidth; + + utils.each( cells, function( cell, index ){ + + cell.width = change[index] - getTabcellSpace(); + + } ); + + + }, 0 ); + +// minWidth -= cellMinWidth; +// +// table.removeAttribute("width"); +// utils.each(cells, function (cell) { +// cell.style.width = ""; +// cell.width -= minWidth; +// }); + + } + } + } + } + + function tableClickHander( evt ) { + + removeSelectedClass(domUtils.getElementsByTagName(me.body, "td th")); + //trace:3113 + //选中单元格,点击table外部,不会清掉table上挂的ueTable,会引起getUETableBySelected方法返回值 + utils.each(me.document.getElementsByTagName('table'), function (t) { + t.ueTable = null; + }); + startTd = getTargetTd(me, evt); + if( !startTd ) return; + var table = domUtils.findParentByTagName(startTd, "table", true); + ut = getUETable(table); + ut && ut.clearSelected(); + + //判断当前鼠标状态 + if (!onBorder) { + me.document.body.style.webkitUserSelect = ''; + mousedown = true; + me.addListener('mouseover', mouseOverEvent); + } else { + //边框上的动作处理 + borderActionHandler( evt ); + } + + + } + + //处理表格边框上的动作, 这里做延时处理,避免两种动作互相影响 + function borderActionHandler( evt ) { + + if ( browser.ie ) { + evt = reconstruct(evt ); + } + + clearTableDragTimer(); + + //是否正在等待resize的缓冲中 + isInResizeBuffer = true; + + tableDragTimer = setTimeout(function(){ + tableBorderDrag( evt ); + }, dblclickTime); + + } + + function extractArray( originArr, key ) { + + var result = [], + tmp = null; + + for( var i = 0, len = originArr.length; i 0 && singleClickState--; + }, dblclickTime ); + + if( singleClickState === 2 ) { + + singleClickState = 0; + tableDbclickHandler(evt); + return; + + } + + } + + if (evt.button == 2)return; + var me = this; + //清除表格上原生跨选问题 + var range = me.selection.getRange(), + start = domUtils.findParentByTagName(range.startContainer, 'table', true), + end = domUtils.findParentByTagName(range.endContainer, 'table', true); + + if (start || end) { + if (start === end) { + start = domUtils.findParentByTagName(range.startContainer, ['td', 'th', 'caption'], true); + end = domUtils.findParentByTagName(range.endContainer, ['td', 'th', 'caption'], true); + if (start !== end) { + me.selection.clearRange() + } + } else { + me.selection.clearRange() + } + } + mousedown = false; + me.document.body.style.webkitUserSelect = ''; + //拖拽状态下的mouseUP + if ( onDrag && dragTd ) { + + me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges'](); + + singleClickState = 0; + dragLine = me.document.getElementById('ue_tableDragLine'); + + // trace 3973 + if (dragLine) { + var dragTdPos = domUtils.getXY(dragTd), + dragLinePos = domUtils.getXY(dragLine); + + switch (onDrag) { + case "h": + changeColWidth(dragTd, dragLinePos.x - dragTdPos.x); + break; + case "v": + changeRowHeight(dragTd, dragLinePos.y - dragTdPos.y - dragTd.offsetHeight); + break; + default: + } + onDrag = ""; + dragTd = null; + + hideDragLine(me); + me.fireEvent('saveScene'); + return; + } + } + //正常状态下的mouseup + if (!startTd) { + var target = domUtils.findParentByTagName(evt.target || evt.srcElement, "td", true); + if (!target) target = domUtils.findParentByTagName(evt.target || evt.srcElement, "th", true); + if (target && (target.tagName == "TD" || target.tagName == "TH")) { + if (me.fireEvent("excludetable", target) === true) return; + range = new dom.Range(me.document); + range.setStart(target, 0).setCursor(false, true); + } + } else { + var ut = getUETable(startTd), + cell = ut ? ut.selectedTds[0] : null; + if (cell) { + range = new dom.Range(me.document); + if (domUtils.isEmptyBlock(cell)) { + range.setStart(cell, 0).setCursor(false, true); + } else { + range.selectNodeContents(cell).shrinkBoundary().setCursor(false, true); + } + } else { + range = me.selection.getRange().shrinkBoundary(); + if (!range.collapsed) { + var start = domUtils.findParentByTagName(range.startContainer, ['td', 'th'], true), + end = domUtils.findParentByTagName(range.endContainer, ['td', 'th'], true); + //在table里边的不能清除 + if (start && !end || !start && end || start && end && start !== end) { + range.setCursor(false, true); + } + } + } + startTd = null; + me.removeListener('mouseover', mouseOverEvent); + } + me._selectionChange(250, evt); + } + + function mouseOverEvent(type, evt) { + + if( isEditorDisabled() ) { + return; + } + + var me = this, + tar = evt.target || evt.srcElement; + currentTd = domUtils.findParentByTagName(tar, "td", true) || domUtils.findParentByTagName(tar, "th", true); + //需要判断两个TD是否位于同一个表格内 + if (startTd && currentTd && + ((startTd.tagName == "TD" && currentTd.tagName == "TD") || (startTd.tagName == "TH" && currentTd.tagName == "TH")) && + domUtils.findParentByTagName(startTd, 'table') == domUtils.findParentByTagName(currentTd, 'table')) { + var ut = getUETable(currentTd); + if (startTd != currentTd) { + me.document.body.style.webkitUserSelect = 'none'; + me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges'](); + var range = ut.getCellsRange(startTd, currentTd); + ut.setSelected(range); + } else { + me.document.body.style.webkitUserSelect = ''; + ut.clearSelected(); + } + + } + evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); + } + + function setCellHeight(cell, height, backHeight) { + var lineHight = parseInt(domUtils.getComputedStyle(cell, "line-height"), 10), + tmpHeight = backHeight + height; + height = tmpHeight < lineHight ? lineHight : tmpHeight; + if (cell.style.height) cell.style.height = ""; + cell.rowSpan == 1 ? cell.setAttribute("height", height) : (cell.removeAttribute && cell.removeAttribute("height")); + } + + function getWidth(cell) { + if (!cell)return 0; + return parseInt(domUtils.getComputedStyle(cell, "width"), 10); + } + + function changeColWidth(cell, changeValue) { + + var ut = getUETable(cell); + if (ut) { + + //根据当前移动的边框获取相关的单元格 + var table = ut.table, + cells = getCellsByMoveBorder( cell, table ); + + table.style.width = ""; + table.removeAttribute("width"); + + //修正改变量 + changeValue = correctChangeValue( changeValue, cell, cells ); + + if (cell.nextSibling) { + + var i=0; + + utils.each( cells, function( cellGroup ){ + + cellGroup.left.width = (+cellGroup.left.width)+changeValue; + cellGroup.right && ( cellGroup.right.width = (+cellGroup.right.width)-changeValue ); + + } ); + + } else { + + utils.each( cells, function( cellGroup ){ + cellGroup.left.width -= -changeValue; + } ); + + } + } + + } + + function isEditorDisabled() { + return me.body.contentEditable === "false"; + } + + function changeRowHeight(td, changeValue) { + if (Math.abs(changeValue) < 10) return; + var ut = getUETable(td); + if (ut) { + var cells = ut.getSameEndPosCells(td, "y"), + //备份需要连带变化的td的原始高度,否则后期无法获取正确的值 + backHeight = cells[0] ? cells[0].offsetHeight : 0; + for (var i = 0, cell; cell = cells[i++];) { + setCellHeight(cell, changeValue, backHeight); + } + } + + } + + /** + * 获取调整单元格大小的相关单元格 + * @isContainMergeCell 返回的结果中是否包含发生合并后的单元格 + */ + function getCellsByMoveBorder( cell, table, isContainMergeCell ) { + + if( !table ) { + table = domUtils.findParentByTagName( cell, 'table' ); + } + + if( !table ) { + return null; + } + + //获取到该单元格所在行的序列号 + var index = domUtils.getNodeIndex( cell ), + temp = cell, + rows = table.rows, + colIndex = 0; + + while( temp ) { + //获取到当前单元格在未发生单元格合并时的序列 + if( temp.nodeType === 1 ) { + colIndex += (temp.colSpan || 1); + } + temp = temp.previousSibling; + } + + temp = null; + + //记录想关的单元格 + var borderCells = []; + + utils.each(rows, function( tabRow ){ + + var cells = tabRow.cells, + currIndex = 0; + + utils.each( cells, function( tabCell ){ + + currIndex += (tabCell.colSpan || 1); + + if( currIndex === colIndex ) { + + borderCells.push({ + left: tabCell, + right: tabCell.nextSibling || null + }); + + return false; + + } else if( currIndex > colIndex ) { + + if( isContainMergeCell ) { + borderCells.push({ + left: tabCell + }); + } + + return false; + } + + + } ); + + }); + + return borderCells; + + } + + + /** + * 通过给定的单元格集合获取最小的单元格width + */ + function getMinWidthByTableCells( cells ) { + + var minWidth = Number.MAX_VALUE; + + for( var i = 0, curCell; curCell = cells[ i ] ; i++ ) { + + minWidth = Math.min( minWidth, curCell.width || getTableCellWidth( curCell ) ); + + } + + return minWidth; + + } + + function correctChangeValue( changeValue, relatedCell, cells ) { + + //为单元格的paading预留空间 + changeValue -= getTabcellSpace(); + + if( changeValue < 0 ) { + return 0; + } + + changeValue -= getTableCellWidth( relatedCell ); + + //确定方向 + var direction = changeValue < 0 ? 'left':'right'; + + changeValue = Math.abs(changeValue); + + //只关心非最后一个单元格就可以 + utils.each( cells, function( cellGroup ){ + + var curCell = cellGroup[direction]; + + //为单元格保留最小空间 + if( curCell ) { + changeValue = Math.min( changeValue, getTableCellWidth( curCell )-cellMinWidth ); + } + + + } ); + + + //修正越界 + changeValue = changeValue < 0 ? 0 : changeValue; + + return direction === 'left' ? -changeValue : changeValue; + + } + + function getTableCellWidth( cell ) { + + var width = 0, + //偏移纠正量 + offset = 0, + width = cell.offsetWidth - getTabcellSpace(); + + //最后一个节点纠正一下 + if( !cell.nextSibling ) { + + width -= getTableCellOffset( cell ); + + } + + width = width < 0 ? 0 : width; + + try { + cell.width = width; + } catch(e) { + } + + return width; + + } + + /** + * 获取单元格所在表格的最末单元格的偏移量 + */ + function getTableCellOffset( cell ) { + + tab = domUtils.findParentByTagName( cell, "table", false); + + if( tab.offsetVal === undefined ) { + + var prev = cell.previousSibling; + + if( prev ) { + + //最后一个单元格和前一个单元格的width diff结果 如果恰好为一个border width, 则条件成立 + tab.offsetVal = cell.offsetWidth - prev.offsetWidth === UT.borderWidth ? UT.borderWidth : 0; + + } else { + tab.offsetVal = 0; + } + + } + + return tab.offsetVal; + + } + + function getTabcellSpace() { + + if( UT.tabcellSpace === undefined ) { + + var cell = null, + tab = me.document.createElement("table"), + tbody = me.document.createElement("tbody"), + trow = me.document.createElement("tr"), + tabcell = me.document.createElement("td"), + mirror = null; + + tabcell.style.cssText = 'border: 0;'; + tabcell.width = 1; + + trow.appendChild( tabcell ); + trow.appendChild( mirror = tabcell.cloneNode( false ) ); + + tbody.appendChild( trow ); + + tab.appendChild( tbody ); + + tab.style.cssText = "visibility: hidden;"; + + me.body.appendChild( tab ); + + UT.paddingSpace = tabcell.offsetWidth - 1; + + var tmpTabWidth = tab.offsetWidth; + + tabcell.style.cssText = ''; + mirror.style.cssText = ''; + + UT.borderWidth = ( tab.offsetWidth - tmpTabWidth ) / 3; + + UT.tabcellSpace = UT.paddingSpace + UT.borderWidth; + + me.body.removeChild( tab ); + + } + + getTabcellSpace = function(){ return UT.tabcellSpace; }; + + return UT.tabcellSpace; + + } + + function getDragLine(editor, doc) { + if (mousedown)return; + dragLine = editor.document.createElement("div"); + domUtils.setAttributes(dragLine, { + id:"ue_tableDragLine", + unselectable:'on', + contenteditable:false, + 'onresizestart':'return false', + 'ondragstart':'return false', + 'onselectstart':'return false', + style:"background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)" + }); + editor.body.appendChild(dragLine); + } + + function hideDragLine(editor) { + if (mousedown)return; + var line; + while (line = editor.document.getElementById('ue_tableDragLine')) { + domUtils.remove(line) + } + } + + /** + * 依据state(v|h)在cell位置显示横线 + * @param state + * @param cell + */ + function showDragLineAt(state, cell) { + if (!cell) return; + var table = domUtils.findParentByTagName(cell, "table"), + caption = table.getElementsByTagName('caption'), + width = table.offsetWidth, + height = table.offsetHeight - (caption.length > 0 ? caption[0].offsetHeight : 0), + tablePos = domUtils.getXY(table), + cellPos = domUtils.getXY(cell), css; + switch (state) { + case "h": + css = 'height:' + height + 'px;top:' + (tablePos.y + (caption.length > 0 ? caption[0].offsetHeight : 0)) + 'px;left:' + (cellPos.x + cell.offsetWidth); + dragLine.style.cssText = css + 'px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)'; + break; + case "v": + css = 'width:' + width + 'px;left:' + tablePos.x + 'px;top:' + (cellPos.y + cell.offsetHeight ); + //必须加上border:0和color:blue,否则低版ie不支持背景色显示 + dragLine.style.cssText = css + 'px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)'; + break; + default: + } + } + + /** + * 当表格边框颜色为白色时设置为虚线,true为添加虚线 + * @param editor + * @param flag + */ + function switchBorderColor(editor, flag) { + var tableArr = domUtils.getElementsByTagName(editor.body, "table"), color; + for (var i = 0, node; node = tableArr[i++];) { + var td = domUtils.getElementsByTagName(node, "td"); + if (td[0]) { + if (flag) { + color = (td[0].style.borderColor).replace(/\s/g, ""); + if (/(#ffffff)|(rgb\(255,255,255\))/ig.test(color)) + domUtils.addClass(node, "noBorderTable") + } else { + domUtils.removeClasses(node, "noBorderTable") + } + } + + } + } + + function getTableWidth(editor, needIEHack, defaultValue) { + var body = editor.body; + return body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (editor.options.offsetWidth || 0); + } + + /** + * 获取当前拖动的单元格 + */ + function getTargetTd(editor, evt) { + + var target = domUtils.findParentByTagName(evt.target || evt.srcElement, ["td", "th"], true), + dir = null; + + if( !target ) { + return null; + } + + dir = getRelation( target, mouseCoords( evt ) ); + + //如果有前一个节点, 需要做一个修正, 否则可能会得到一个错误的td + + if( !target ) { + return null; + } + + if( dir === 'h1' && target.previousSibling ) { + + var position = domUtils.getXY( target), + cellWidth = target.offsetWidth; + + if( Math.abs( position.x + cellWidth - evt.clientX ) > cellWidth / 3 ) { + target = target.previousSibling; + } + + } else if( dir === 'v1' && target.parentNode.previousSibling ) { + + var position = domUtils.getXY( target), + cellHeight = target.offsetHeight; + + if( Math.abs( position.y + cellHeight - evt.clientY ) > cellHeight / 3 ) { + target = target.parentNode.previousSibling.firstChild; + } + + } + + + //排除了非td内部以及用于代码高亮部分的td + return target && !(editor.fireEvent("excludetable", target) === true) ? target : null; + } + +}; + + +// plugins/table.sort.js +/** + * Created with JetBrains PhpStorm. + * User: Jinqn + * Date: 13-10-12 + * Time: 上午10:20 + * To change this template use File | Settings | File Templates. + */ + +UE.UETable.prototype.sortTable = function (sortByCellIndex, compareFn) { + var table = this.table, + rows = table.rows, + trArray = [], + flag = rows[0].cells[0].tagName === "TH", + lastRowIndex = 0; + if(this.selectedTds.length){ + var range = this.cellsRange, + len = range.endRowIndex + 1; + for (var i = range.beginRowIndex; i < len; i++) { + trArray[i] = rows[i]; + } + trArray.splice(0,range.beginRowIndex); + lastRowIndex = (range.endRowIndex +1) === this.rowsNum ? 0 : range.endRowIndex +1; + }else{ + 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[browser.ie ? 'innerText':'textContent'].match(/\d+/), + value2 = td2[browser.ie ? '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[browser.ie ? 'innerText':'textContent'].match(/\d+/), + value2 = td2[browser.ie ? '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 = utils.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]) + } +}; + +UE.plugins['tablesort'] = function () { + var me = this, + UT = UE.UETable, + getUETable = function (tdOrTable) { + return UT.getUETable(tdOrTable); + }, + getTableItemsByRange = function (editor) { + return UT.getTableItemsByRange(editor); + }; + + + me.ready(function () { + //添加表格可排序的样式 + utils.cssRule('tablesort', + 'table.sortEnabled tr.firstRow th,table.sortEnabled tr.firstRow td{padding-right:20px;background-repeat: no-repeat;background-position: center right;' + + ' background-image:url(' + me.options.themePath + me.options.theme + '/images/sortable.png);}', + me.document); + + //做单元格合并操作时,清除可排序标识 + me.addListener("afterexeccommand", function (type, cmd) { + if( cmd == 'mergeright' || cmd == 'mergedown' || cmd == 'mergecells') { + this.execCommand('disablesort'); + } + }); + }); + + + + //表格排序 + UE.commands['sorttable'] = { + queryCommandState: function () { + var me = this, + tableItems = getTableItemsByRange(me); + if (!tableItems.cell) return -1; + var table = tableItems.table, + cells = table.getElementsByTagName("td"); + for (var i = 0, cell; cell = cells[i++];) { + if (cell.rowSpan != 1 || cell.colSpan != 1) return -1; + } + return 0; + }, + execCommand: function (cmd, fn) { + var me = this, + range = me.selection.getRange(), + bk = range.createBookmark(true), + tableItems = getTableItemsByRange(me), + cell = tableItems.cell, + ut = getUETable(tableItems.table), + cellInfo = ut.getCellInfo(cell); + ut.sortTable(cellInfo.cellIndex, fn); + range.moveToBookmark(bk); + try{ + range.select(); + }catch(e){} + } + }; + + //设置表格可排序,清除表格可排序 + UE.commands["enablesort"] = UE.commands["disablesort"] = { + queryCommandState: function (cmd) { + var table = getTableItemsByRange(this).table; + if(table && cmd=='enablesort') { + var cells = domUtils.getElementsByTagName(table, 'th td'); + for(var i = 0; i1 || cells[i].getAttribute('rowspan')>1) return -1; + } + } + + return !table ? -1: cmd=='enablesort' ^ table.getAttribute('data-sort')!='sortEnabled' ? -1:0; + }, + execCommand: function (cmd) { + var table = getTableItemsByRange(this).table; + table.setAttribute("data-sort", cmd == "enablesort" ? "sortEnabled" : "sortDisabled"); + cmd == "enablesort" ? domUtils.addClass(table,"sortEnabled"):domUtils.removeClasses(table,"sortEnabled"); + } + }; +}; + + +// plugins/contextmenu.js +///import core +///commands 右键菜单 +///commandsName ContextMenu +///commandsTitle 右键菜单 +/** + * 右键菜单 + * @function + * @name baidu.editor.plugins.contextmenu + * @author zhanyi + */ + +UE.plugins['contextmenu'] = function () { + var me = this; + me.setOpt('enableContextMenu',true); + if(me.getOpt('enableContextMenu') === false){ + return; + } + var lang = me.getLang( "contextMenu" ), + menu, + items = me.options.contextMenu || [ + {label:lang['selectall'], cmdName:'selectall'}, + { + label:lang.cleardoc, + cmdName:'cleardoc', + exec:function () { + if ( confirm( lang.confirmclear ) ) { + this.execCommand( 'cleardoc' ); + } + } + }, + '-', + { + label:lang.unlink, + cmdName:'unlink' + }, + '-', + { + group:lang.paragraph, + icon:'justifyjustify', + subMenu:[ + { + label:lang.justifyleft, + cmdName:'justify', + value:'left' + }, + { + label:lang.justifyright, + cmdName:'justify', + value:'right' + }, + { + label:lang.justifycenter, + cmdName:'justify', + value:'center' + }, + { + label:lang.justifyjustify, + cmdName:'justify', + value:'justify' + } + ] + }, + '-', + { + group:lang.table, + icon:'table', + subMenu:[ + { + label:lang.inserttable, + cmdName:'inserttable' + }, + { + label:lang.deletetable, + cmdName:'deletetable' + }, + '-', + { + label:lang.deleterow, + cmdName:'deleterow' + }, + { + label:lang.deletecol, + cmdName:'deletecol' + }, + { + label:lang.insertcol, + cmdName:'insertcol' + }, + { + label:lang.insertcolnext, + cmdName:'insertcolnext' + }, + { + label:lang.insertrow, + cmdName:'insertrow' + }, + { + label:lang.insertrownext, + cmdName:'insertrownext' + }, + '-', + { + label:lang.insertcaption, + cmdName:'insertcaption' + }, + { + label:lang.deletecaption, + cmdName:'deletecaption' + }, + { + label:lang.inserttitle, + cmdName:'inserttitle' + }, + { + label:lang.deletetitle, + cmdName:'deletetitle' + }, + { + label:lang.inserttitlecol, + cmdName:'inserttitlecol' + }, + { + label:lang.deletetitlecol, + cmdName:'deletetitlecol' + }, + '-', + { + label:lang.mergecells, + cmdName:'mergecells' + }, + { + label:lang.mergeright, + cmdName:'mergeright' + }, + { + label:lang.mergedown, + cmdName:'mergedown' + }, + '-', + { + label:lang.splittorows, + cmdName:'splittorows' + }, + { + label:lang.splittocols, + cmdName:'splittocols' + }, + { + label:lang.splittocells, + cmdName:'splittocells' + }, + '-', + { + label:lang.averageDiseRow, + cmdName:'averagedistributerow' + }, + { + label:lang.averageDisCol, + cmdName:'averagedistributecol' + }, + '-', + { + label:lang.edittd, + cmdName:'edittd', + exec:function () { + if ( UE.ui['edittd'] ) { + new UE.ui['edittd']( this ); + } + this.getDialog('edittd').open(); + } + }, + { + label:lang.edittable, + cmdName:'edittable', + exec:function () { + if ( UE.ui['edittable'] ) { + new UE.ui['edittable']( this ); + } + this.getDialog('edittable').open(); + } + }, + { + label:lang.setbordervisible, + cmdName:'setbordervisible' + } + ] + }, + { + group:lang.tablesort, + icon:'tablesort', + subMenu:[ + { + label:lang.enablesort, + cmdName:'enablesort' + }, + { + label:lang.disablesort, + cmdName:'disablesort' + }, + '-', + { + label:lang.reversecurrent, + cmdName:'sorttable', + value:'reversecurrent' + }, + { + label:lang.orderbyasc, + cmdName:'sorttable', + value:'orderbyasc' + }, + { + label:lang.reversebyasc, + cmdName:'sorttable', + value:'reversebyasc' + }, + { + label:lang.orderbynum, + cmdName:'sorttable', + value:'orderbynum' + }, + { + label:lang.reversebynum, + cmdName:'sorttable', + value:'reversebynum' + } + ] + }, + { + group:lang.borderbk, + icon:'borderBack', + subMenu:[ + { + label:lang.setcolor, + cmdName:"interlacetable", + exec:function(){ + this.execCommand("interlacetable"); + } + }, + { + label:lang.unsetcolor, + cmdName:"uninterlacetable", + exec:function(){ + this.execCommand("uninterlacetable"); + } + }, + { + label:lang.setbackground, + cmdName:"settablebackground", + exec:function(){ + this.execCommand("settablebackground",{repeat:true,colorList:["#bbb","#ccc"]}); + } + }, + { + label:lang.unsetbackground, + cmdName:"cleartablebackground", + exec:function(){ + this.execCommand("cleartablebackground"); + } + }, + { + label:lang.redandblue, + cmdName:"settablebackground", + exec:function(){ + this.execCommand("settablebackground",{repeat:true,colorList:["red","blue"]}); + } + }, + { + label:lang.threecolorgradient, + cmdName:"settablebackground", + exec:function(){ + this.execCommand("settablebackground",{repeat:true,colorList:["#aaa","#bbb","#ccc"]}); + } + } + ] + }, + { + group:lang.aligntd, + icon:'aligntd', + subMenu:[ + { + cmdName:'cellalignment', + value:{align:'left',vAlign:'top'} + }, + { + cmdName:'cellalignment', + value:{align:'center',vAlign:'top'} + }, + { + cmdName:'cellalignment', + value:{align:'right',vAlign:'top'} + }, + { + cmdName:'cellalignment', + value:{align:'left',vAlign:'middle'} + }, + { + cmdName:'cellalignment', + value:{align:'center',vAlign:'middle'} + }, + { + cmdName:'cellalignment', + value:{align:'right',vAlign:'middle'} + }, + { + cmdName:'cellalignment', + value:{align:'left',vAlign:'bottom'} + }, + { + cmdName:'cellalignment', + value:{align:'center',vAlign:'bottom'} + }, + { + cmdName:'cellalignment', + value:{align:'right',vAlign:'bottom'} + } + ] + }, + { + group:lang.aligntable, + icon:'aligntable', + subMenu:[ + { + cmdName:'tablealignment', + className: 'left', + label:lang.tableleft, + value:"left" + }, + { + cmdName:'tablealignment', + className: 'center', + label:lang.tablecenter, + value:"center" + }, + { + cmdName:'tablealignment', + className: 'right', + label:lang.tableright, + value:"right" + } + ] + }, + '-', + { + label:lang.insertparagraphbefore, + cmdName:'insertparagraph', + value:true + }, + { + label:lang.insertparagraphafter, + cmdName:'insertparagraph' + }, + { + label:lang['copy'], + cmdName:'copy' + }, + { + label:lang['paste'], + cmdName:'paste' + } + ]; + if ( !items.length ) { + return; + } + var uiUtils = UE.ui.uiUtils; + + me.addListener( 'contextmenu', function ( type, evt ) { + + var offset = uiUtils.getViewportOffsetByEvent( evt ); + me.fireEvent( 'beforeselectionchange' ); + if ( menu ) { + menu.destroy(); + } + for ( var i = 0, ti, contextItems = []; ti = items[i]; i++ ) { + var last; + (function ( item ) { + if ( item == '-' ) { + if ( (last = contextItems[contextItems.length - 1 ] ) && last !== '-' ) { + contextItems.push( '-' ); + } + } else if ( item.hasOwnProperty( "group" ) ) { + for ( var j = 0, cj, subMenu = []; cj = item.subMenu[j]; j++ ) { + (function ( subItem ) { + if ( subItem == '-' ) { + if ( (last = subMenu[subMenu.length - 1 ] ) && last !== '-' ) { + subMenu.push( '-' ); + }else{ + subMenu.splice(subMenu.length-1); + } + } else { + if ( (me.commands[subItem.cmdName] || UE.commands[subItem.cmdName] || subItem.query) && + (subItem.query ? subItem.query() : me.queryCommandState( subItem.cmdName )) > -1 ) { + subMenu.push( { + 'label':subItem.label || me.getLang( "contextMenu." + subItem.cmdName + (subItem.value || '') )||"", + 'className':'edui-for-' +subItem.cmdName + ( subItem.className ? ( ' edui-for-' + subItem.cmdName + '-' + subItem.className ) : '' ), + onclick:subItem.exec ? function () { + subItem.exec.call( me ); + } : function () { + me.execCommand( subItem.cmdName, subItem.value ); + } + } ); + } + } + })( cj ); + } + if ( subMenu.length ) { + function getLabel(){ + switch (item.icon){ + case "table": + return me.getLang( "contextMenu.table" ); + case "justifyjustify": + return me.getLang( "contextMenu.paragraph" ); + case "aligntd": + return me.getLang("contextMenu.aligntd"); + case "aligntable": + return me.getLang("contextMenu.aligntable"); + case "tablesort": + return lang.tablesort; + case "borderBack": + return lang.borderbk; + default : + return ''; + } + } + contextItems.push( { + //todo 修正成自动获取方式 + 'label':getLabel(), + className:'edui-for-' + item.icon, + 'subMenu':{ + items:subMenu, + editor:me + } + } ); + } + + } else { + //有可能commmand没有加载右键不能出来,或者没有command也想能展示出来添加query方法 + if ( (me.commands[item.cmdName] || UE.commands[item.cmdName] || item.query) && + (item.query ? item.query.call(me) : me.queryCommandState( item.cmdName )) > -1 ) { + + contextItems.push( { + 'label':item.label || me.getLang( "contextMenu." + item.cmdName ), + className:'edui-for-' + (item.icon ? item.icon : item.cmdName + (item.value || '')), + onclick:item.exec ? function () { + item.exec.call( me ); + } : function () { + me.execCommand( item.cmdName, item.value ); + } + } ); + } + + } + + })( ti ); + } + if ( contextItems[contextItems.length - 1] == '-' ) { + contextItems.pop(); + } + + menu = new UE.ui.Menu( { + items:contextItems, + className:"edui-contextmenu", + editor:me + } ); + menu.render(); + menu.showAt( offset ); + + me.fireEvent("aftershowcontextmenu",menu); + + domUtils.preventDefault( evt ); + if ( browser.ie ) { + var ieRange; + try { + ieRange = me.selection.getNative().createRange(); + } catch ( e ) { + return; + } + if ( ieRange.item ) { + var range = new dom.Range( me.document ); + range.selectNode( ieRange.item( 0 ) ).select( true, true ); + } + } + }); + + // 添加复制的flash按钮 + me.addListener('aftershowcontextmenu', function(type, menu) { + if (me.zeroclipboard) { + var items = menu.items; + for (var key in items) { + if (items[key].className == 'edui-for-copy') { + me.zeroclipboard.clip(items[key].getDom()); + } + } + } + }); + +}; + + +// plugins/shortcutmenu.js +///import core +///commands 弹出菜单 +// commandsName popupmenu +///commandsTitle 弹出菜单 +/** + * 弹出菜单 + * @function + * @name baidu.editor.plugins.popupmenu + * @author xuheng + */ + +UE.plugins['shortcutmenu'] = function () { + var me = this, + menu, + items = me.options.shortcutMenu || []; + + if (!items.length) { + return; + } + + me.addListener ('contextmenu mouseup' , function (type , e) { + var me = this, + customEvt = { + type : type , + target : e.target || e.srcElement , + screenX : e.screenX , + screenY : e.screenY , + clientX : e.clientX , + clientY : e.clientY + }; + + setTimeout (function () { + var rng = me.selection.getRange (); + if (rng.collapsed === false || type == "contextmenu") { + + if (!menu) { + menu = new baidu.editor.ui.ShortCutMenu ({ + editor : me , + items : items , + theme : me.options.theme , + className : 'edui-shortcutmenu' + }); + + menu.render (); + me.fireEvent ("afterrendershortcutmenu" , menu); + } + + menu.show (customEvt , !!UE.plugins['contextmenu']); + } + }); + + if (type == 'contextmenu') { + domUtils.preventDefault (e); + if (browser.ie9below) { + var ieRange; + try { + ieRange = me.selection.getNative().createRange(); + } catch (e) { + return; + } + if (ieRange.item) { + var range = new dom.Range (me.document); + range.selectNode (ieRange.item (0)).select (true , true); + + } + } + } + }); + + me.addListener ('keydown' , function (type) { + if (type == "keydown") { + menu && !menu.isHidden && menu.hide (); + } + + }); + +}; + + + + +// plugins/basestyle.js +/** + * B、I、sub、super命令支持 + * @file + * @since 1.2.6.1 + */ + +UE.plugins['basestyle'] = function(){ + + /** + * 字体加粗 + * @command bold + * @param { String } cmd 命令字符串 + * @remind 对已加粗的文本内容执行该命令, 将取消加粗 + * @method execCommand + * @example + * ```javascript + * //editor是编辑器实例 + * //对当前选中的文本内容执行加粗操作 + * //第一次执行, 文本内容加粗 + * editor.execCommand( 'bold' ); + * + * //第二次执行, 文本内容取消加粗 + * editor.execCommand( 'bold' ); + * ``` + */ + + + /** + * 字体倾斜 + * @command italic + * @method execCommand + * @param { String } cmd 命令字符串 + * @remind 对已倾斜的文本内容执行该命令, 将取消倾斜 + * @example + * ```javascript + * //editor是编辑器实例 + * //对当前选中的文本内容执行斜体操作 + * //第一次操作, 文本内容将变成斜体 + * editor.execCommand( 'italic' ); + * + * //再次对同一文本内容执行, 则文本内容将恢复正常 + * editor.execCommand( 'italic' ); + * ``` + */ + + /** + * 下标文本,与“superscript”命令互斥 + * @command subscript + * @method execCommand + * @remind 把选中的文本内容切换成下标文本, 如果当前选中的文本已经是下标, 则该操作会把文本内容还原成正常文本 + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor是编辑器实例 + * //对当前选中的文本内容执行下标操作 + * //第一次操作, 文本内容将变成下标文本 + * editor.execCommand( 'subscript' ); + * + * //再次对同一文本内容执行, 则文本内容将恢复正常 + * editor.execCommand( 'subscript' ); + * ``` + */ + + /** + * 上标文本,与“subscript”命令互斥 + * @command superscript + * @method execCommand + * @remind 把选中的文本内容切换成上标文本, 如果当前选中的文本已经是上标, 则该操作会把文本内容还原成正常文本 + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor是编辑器实例 + * //对当前选中的文本内容执行上标操作 + * //第一次操作, 文本内容将变成上标文本 + * editor.execCommand( 'superscript' ); + * + * //再次对同一文本内容执行, 则文本内容将恢复正常 + * editor.execCommand( 'superscript' ); + * ``` + */ + var basestyles = { + 'bold':['strong','b'], + 'italic':['em','i'], + 'subscript':['sub'], + 'superscript':['sup'] + }, + getObj = function(editor,tagNames){ + return domUtils.filterNodeList(editor.selection.getStartElementPath(),tagNames); + }, + me = this; + //添加快捷键 + me.addshortcutkey({ + "Bold" : "ctrl+66",//^B + "Italic" : "ctrl+73", //^I + "Underline" : "ctrl+85"//^U + }); + me.addInputRule(function(root){ + utils.each(root.getNodesByTagName('b i'),function(node){ + switch (node.tagName){ + case 'b': + node.tagName = 'strong'; + break; + case 'i': + node.tagName = 'em'; + } + }); + }); + for ( var style in basestyles ) { + (function( cmd, tagNames ) { + me.commands[cmd] = { + execCommand : function( cmdName ) { + var range = me.selection.getRange(),obj = getObj(this,tagNames); + if ( range.collapsed ) { + if ( obj ) { + var tmpText = me.document.createTextNode(''); + range.insertNode( tmpText ).removeInlineStyle( tagNames ); + range.setStartBefore(tmpText); + domUtils.remove(tmpText); + } else { + var tmpNode = range.document.createElement( tagNames[0] ); + if(cmdName == 'superscript' || cmdName == 'subscript'){ + tmpText = me.document.createTextNode(''); + range.insertNode(tmpText) + .removeInlineStyle(['sub','sup']) + .setStartBefore(tmpText) + .collapse(true); + } + range.insertNode( tmpNode ).setStart( tmpNode, 0 ); + } + range.collapse( true ); + } else { + if(cmdName == 'superscript' || cmdName == 'subscript'){ + if(!obj || obj.tagName.toLowerCase() != cmdName){ + range.removeInlineStyle(['sub','sup']); + } + } + obj ? range.removeInlineStyle( tagNames ) : range.applyInlineStyle( tagNames[0] ); + } + range.select(); + }, + queryCommandState : function() { + return getObj(this,tagNames) ? 1 : 0; + } + }; + })( style, basestyles[style] ); + } +}; + + + +// plugins/elementpath.js +/** + * 选取路径命令 + * @file + */ +UE.plugins['elementpath'] = function(){ + var currentLevel, + tagNames, + me = this; + me.setOpt('elementPathEnabled',true); + if(!me.options.elementPathEnabled){ + return; + } + me.commands['elementpath'] = { + execCommand : function( cmdName, level ) { + var start = tagNames[level], + range = me.selection.getRange(); + currentLevel = level*1; + range.selectNode(start).select(); + }, + queryCommandValue : function() { + //产生一个副本,不能修改原来的startElementPath; + var parents = [].concat(this.selection.getStartElementPath()).reverse(), + names = []; + tagNames = parents; + for(var i=0,ci;ci=parents[i];i++){ + if(ci.nodeType == 3) { + continue; + } + var name = ci.tagName.toLowerCase(); + if(name == 'img' && ci.getAttribute('anchorname')){ + name = 'anchor'; + } + names[i] = name; + if(currentLevel == i){ + currentLevel = -1; + break; + } + } + return names; + } + }; +}; + + + +// plugins/formatmatch.js +/** + * 格式刷,只格式inline的 + * @file + * @since 1.2.6.1 + */ + +/** + * 格式刷 + * @command formatmatch + * @method execCommand + * @remind 该操作不能复制段落格式 + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor是编辑器实例 + * //获取格式刷 + * editor.execCommand( 'formatmatch' ); + * ``` + */ +UE.plugins['formatmatch'] = function(){ + + var me = this, + list = [],img, + flag = 0; + + me.addListener('reset',function(){ + list = []; + flag = 0; + }); + + function addList(type,evt){ + + if(browser.webkit){ + var target = evt.target.tagName == 'IMG' ? evt.target : null; + } + + function addFormat(range){ + + if(text){ + range.selectNode(text); + } + return range.applyInlineStyle(list[list.length-1].tagName,null,list); + + } + + me.undoManger && me.undoManger.save(); + + var range = me.selection.getRange(), + imgT = target || range.getClosedNode(); + if(img && imgT && imgT.tagName == 'IMG'){ + //trace:964 + + imgT.style.cssText += ';float:' + (img.style.cssFloat || img.style.styleFloat ||'none') + ';display:' + (img.style.display||'inline'); + + img = null; + }else{ + if(!img){ + var collapsed = range.collapsed; + if(collapsed){ + var text = me.document.createTextNode('match'); + range.insertNode(text).select(); + + + } + me.__hasEnterExecCommand = true; + //不能把block上的属性干掉 + //trace:1553 + var removeFormatAttributes = me.options.removeFormatAttributes; + me.options.removeFormatAttributes = ''; + me.execCommand('removeformat'); + me.options.removeFormatAttributes = removeFormatAttributes; + me.__hasEnterExecCommand = false; + //trace:969 + range = me.selection.getRange(); + if(list.length){ + addFormat(range); + } + if(text){ + range.setStartBefore(text).collapse(true); + + } + range.select(); + text && domUtils.remove(text); + } + + } + + + + + me.undoManger && me.undoManger.save(); + me.removeListener('mouseup',addList); + flag = 0; + } + + me.commands['formatmatch'] = { + execCommand : function( cmdName ) { + + if(flag){ + flag = 0; + list = []; + me.removeListener('mouseup',addList); + return; + } + + + + var range = me.selection.getRange(); + img = range.getClosedNode(); + if(!img || img.tagName != 'IMG'){ + range.collapse(true).shrinkBoundary(); + var start = range.startContainer; + list = domUtils.findParents(start,true,function(node){ + return !domUtils.isBlockElm(node) && node.nodeType == 1; + }); + //a不能加入格式刷, 并且克隆节点 + for(var i=0,ci;ci=list[i];i++){ + if(ci.tagName == 'A'){ + list.splice(i,1); + break; + } + } + + } + + me.addListener('mouseup',addList); + flag = 1; + + + }, + queryCommandState : function() { + return flag; + }, + notNeedUndo : 1 + }; +}; + + + +// plugins/searchreplace.js +///import core +///commands 查找替换 +///commandsName SearchReplace +///commandsTitle 查询替换 +///commandsDialog dialogs\searchreplace +/** + * @description 查找替换 + * @author zhanyi + */ + +UE.plugin.register('searchreplace',function(){ + var me = this; + + var _blockElm = {'table':1,'tbody':1,'tr':1,'ol':1,'ul':1}; + + function findTextInString(textContent,opt,currentIndex){ + var str = opt.searchStr; + if(opt.dir == -1){ + textContent = textContent.split('').reverse().join(''); + str = str.split('').reverse().join(''); + currentIndex = textContent.length - currentIndex; + + } + var reg = new RegExp(str,'g' + (opt.casesensitive ? '' : 'i')),match; + + while(match = reg.exec(textContent)){ + if(match.index >= currentIndex){ + return opt.dir == -1 ? textContent.length - match.index - opt.searchStr.length : match.index; + } + } + return -1 + } + function findTextBlockElm(node,currentIndex,opt){ + var textContent,index,methodName = opt.all || opt.dir == 1 ? 'getNextDomNode' : 'getPreDomNode'; + if(domUtils.isBody(node)){ + node = node.firstChild; + } + var first = 1; + while(node){ + textContent = node.nodeType == 3 ? node.nodeValue : node[browser.ie ? 'innerText' : 'textContent']; + index = findTextInString(textContent,opt,currentIndex ); + first = 0; + if(index!=-1){ + return { + 'node':node, + 'index':index + } + } + node = domUtils[methodName](node); + while(node && _blockElm[node.nodeName.toLowerCase()]){ + node = domUtils[methodName](node,true); + } + if(node){ + currentIndex = opt.dir == -1 ? (node.nodeType == 3 ? node.nodeValue : node[browser.ie ? 'innerText' : 'textContent']).length : 0; + } + + } + } + function findNTextInBlockElm(node,index,str){ + var currentIndex = 0, + currentNode = node.firstChild, + currentNodeLength = 0, + result; + while(currentNode){ + if(currentNode.nodeType == 3){ + currentNodeLength = currentNode.nodeValue.replace(/(^[\t\r\n]+)|([\t\r\n]+$)/,'').length; + currentIndex += currentNodeLength; + if(currentIndex >= index){ + return { + 'node':currentNode, + 'index': currentNodeLength - (currentIndex - index) + } + } + }else if(!dtd.$empty[currentNode.tagName]){ + currentNodeLength = currentNode[browser.ie ? 'innerText' : 'textContent'].replace(/(^[\t\r\n]+)|([\t\r\n]+$)/,'').length + currentIndex += currentNodeLength; + if(currentIndex >= index){ + result = findNTextInBlockElm(currentNode,currentNodeLength - (currentIndex - index),str); + if(result){ + return result; + } + } + } + currentNode = domUtils.getNextDomNode(currentNode); + + } + } + + function searchReplace(me,opt){ + + var rng = me.selection.getRange(), + startBlockNode, + searchStr = opt.searchStr, + span = me.document.createElement('span'); + span.innerHTML = '$$ueditor_searchreplace_key$$'; + + rng.shrinkBoundary(true); + + //判断是不是第一次选中 + if(!rng.collapsed){ + rng.select(); + var rngText = me.selection.getText(); + if(new RegExp('^' + opt.searchStr + '$',(opt.casesensitive ? '' : 'i')).test(rngText)){ + if(opt.replaceStr != undefined){ + replaceText(rng,opt.replaceStr); + rng.select(); + return true; + }else{ + rng.collapse(opt.dir == -1) + } + + } + } + + + rng.insertNode(span); + rng.enlargeToBlockElm(true); + startBlockNode = rng.startContainer; + var currentIndex = startBlockNode[browser.ie ? 'innerText' : 'textContent'].indexOf('$$ueditor_searchreplace_key$$'); + rng.setStartBefore(span); + domUtils.remove(span); + var result = findTextBlockElm(startBlockNode,currentIndex,opt); + if(result){ + var rngStart = findNTextInBlockElm(result.node,result.index,searchStr); + var rngEnd = findNTextInBlockElm(result.node,result.index + searchStr.length,searchStr); + rng.setStart(rngStart.node,rngStart.index).setEnd(rngEnd.node,rngEnd.index); + + if(opt.replaceStr !== undefined){ + replaceText(rng,opt.replaceStr) + } + rng.select(); + return true; + }else{ + rng.setCursor() + } + + } + function replaceText(rng,str){ + + str = me.document.createTextNode(str); + rng.deleteContents().insertNode(str); + + } + return { + commands:{ + 'searchreplace':{ + execCommand:function(cmdName,opt){ + utils.extend(opt,{ + all : false, + casesensitive : false, + dir : 1 + },true); + var num = 0; + if(opt.all){ + + var rng = me.selection.getRange(), + first = me.body.firstChild; + if(first && first.nodeType == 1){ + rng.setStart(first,0); + rng.shrinkBoundary(true); + }else if(first.nodeType == 3){ + rng.setStartBefore(first) + } + rng.collapse(true).select(true); + if(opt.replaceStr !== undefined){ + me.fireEvent('saveScene'); + } + while(searchReplace(this,opt)){ + num++; + } + if(num){ + me.fireEvent('saveScene'); + } + }else{ + if(opt.replaceStr !== undefined){ + me.fireEvent('saveScene'); + } + if(searchReplace(this,opt)){ + num++ + } + if(num){ + me.fireEvent('saveScene'); + } + + } + + return num; + }, + notNeedUndo:1 + } + } + } +}); + +// plugins/customstyle.js +/** + * 自定义样式 + * @file + * @since 1.2.6.1 + */ + +/** + * 根据config配置文件里“customstyle”选项的值对匹配的标签执行样式替换。 + * @command customstyle + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'customstyle' ); + * ``` + */ +UE.plugins['customstyle'] = function() { + var me = this; + me.setOpt({ 'customstyle':[ + {tag:'h1',name:'tc', style:'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;'}, + {tag:'h1',name:'tl', style:'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;'}, + {tag:'span',name:'im', style:'font-size:16px;font-style:italic;font-weight:bold;line-height:18px;'}, + {tag:'span',name:'hi', style:'font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;'} + ]}); + me.commands['customstyle'] = { + execCommand : function(cmdName, obj) { + var me = this, + tagName = obj.tag, + node = domUtils.findParent(me.selection.getStart(), function(node) { + return node.getAttribute('label'); + }, true), + range,bk,tmpObj = {}; + for (var p in obj) { + if(obj[p]!==undefined) + tmpObj[p] = obj[p]; + } + delete tmpObj.tag; + if (node && node.getAttribute('label') == obj.label) { + range = this.selection.getRange(); + bk = range.createBookmark(); + if (range.collapsed) { + //trace:1732 删掉自定义标签,要有p来回填站位 + if(dtd.$block[node.tagName]){ + var fillNode = me.document.createElement('p'); + domUtils.moveChild(node, fillNode); + node.parentNode.insertBefore(fillNode, node); + domUtils.remove(node); + }else{ + domUtils.remove(node,true); + } + + } else { + + var common = domUtils.getCommonAncestor(bk.start, bk.end), + nodes = domUtils.getElementsByTagName(common, tagName); + if(new RegExp(tagName,'i').test(common.tagName)){ + nodes.push(common); + } + for (var i = 0,ni; ni = nodes[i++];) { + if (ni.getAttribute('label') == obj.label) { + var ps = domUtils.getPosition(ni, bk.start),pe = domUtils.getPosition(ni, bk.end); + if ((ps & domUtils.POSITION_FOLLOWING || ps & domUtils.POSITION_CONTAINS) + && + (pe & domUtils.POSITION_PRECEDING || pe & domUtils.POSITION_CONTAINS) + ) + if (dtd.$block[tagName]) { + var fillNode = me.document.createElement('p'); + domUtils.moveChild(ni, fillNode); + ni.parentNode.insertBefore(fillNode, ni); + } + domUtils.remove(ni, true); + } + } + node = domUtils.findParent(common, function(node) { + return node.getAttribute('label') == obj.label; + }, true); + if (node) { + + domUtils.remove(node, true); + + } + + } + range.moveToBookmark(bk).select(); + } else { + if (dtd.$block[tagName]) { + this.execCommand('paragraph', tagName, tmpObj,'customstyle'); + range = me.selection.getRange(); + if (!range.collapsed) { + range.collapse(); + node = domUtils.findParent(me.selection.getStart(), function(node) { + return node.getAttribute('label') == obj.label; + }, true); + var pNode = me.document.createElement('p'); + domUtils.insertAfter(node, pNode); + domUtils.fillNode(me.document, pNode); + range.setStart(pNode, 0).setCursor(); + } + } else { + + range = me.selection.getRange(); + if (range.collapsed) { + node = me.document.createElement(tagName); + domUtils.setAttributes(node, tmpObj); + range.insertNode(node).setStart(node, 0).setCursor(); + + return; + } + + bk = range.createBookmark(); + range.applyInlineStyle(tagName, tmpObj).moveToBookmark(bk).select(); + } + } + + }, + queryCommandValue : function() { + var parent = domUtils.filterNodeList( + this.selection.getStartElementPath(), + function(node){return node.getAttribute('label')} + ); + return parent ? parent.getAttribute('label') : ''; + } + }; + //当去掉customstyle是,如果是块元素,用p代替 + me.addListener('keyup', function(type, evt) { + var keyCode = evt.keyCode || evt.which; + + if (keyCode == 32 || keyCode == 13) { + var range = me.selection.getRange(); + if (range.collapsed) { + var node = domUtils.findParent(me.selection.getStart(), function(node) { + return node.getAttribute('label'); + }, true); + if (node && dtd.$block[node.tagName] && domUtils.isEmptyNode(node)) { + var p = me.document.createElement('p'); + domUtils.insertAfter(node, p); + domUtils.fillNode(me.document, p); + domUtils.remove(node); + range.setStart(p, 0).setCursor(); + + + } + } + } + }); +}; + +// plugins/catchremoteimage.js +///import core +///commands 远程图片抓取 +///commandsName catchRemoteImage,catchremoteimageenable +///commandsTitle 远程图片抓取 +/** + * 远程图片抓取,当开启本插件时所有不符合本地域名的图片都将被抓取成为本地服务器上的图片 + */ +UE.plugins['catchremoteimage'] = function () { + var me = this, + ajax = UE.ajax; + + /* 设置默认值 */ + if (me.options.catchRemoteImageEnable === false) return; + me.setOpt({ + catchRemoteImageEnable: false + }); + + me.addListener("afterpaste", function () { + me.fireEvent("catchRemoteImage"); + }); + + me.addListener("catchRemoteImage", function () { + + var catcherLocalDomain = me.getOpt('catcherLocalDomain'), + catcherActionUrl = me.getActionUrl(me.getOpt('catcherActionName')), + catcherUrlPrefix = me.getOpt('catcherUrlPrefix'), + catcherFieldName = me.getOpt('catcherFieldName'); + + var remoteImages = [], + imgs = domUtils.getElementsByTagName(me.document, "img"), + test = function (src, urls) { + if (src.indexOf(location.host) != -1 || /(^\.)|(^\/)/.test(src)) { + return true; + } + if (urls) { + for (var j = 0, url; url = urls[j++];) { + if (src.indexOf(url) !== -1) { + return true; + } + } + } + return false; + }; + + for (var i = 0, ci; ci = imgs[i++];) { + if (ci.getAttribute("word_img")) { + continue; + } + var src = ci.getAttribute("_src") || ci.src || ""; + if (/^(https?|ftp):/i.test(src) && !test(src, catcherLocalDomain)) { + remoteImages.push(src); + } + } + + if (remoteImages.length) { + catchremoteimage(remoteImages, { + //成功抓取 + success: function (r) { + try { + var info = r.state !== undefined ? r:eval("(" + r.responseText + ")"); + } catch (e) { + return; + } + + /* 获取源路径和新路径 */ + var i, j, ci, cj, oldSrc, newSrc, list = info.list; + + for (i = 0; ci = imgs[i++];) { + oldSrc = ci.getAttribute("_src") || ci.src || ""; + for (j = 0; cj = list[j++];) { + if (oldSrc == cj.source && cj.state == "SUCCESS") { //抓取失败时不做替换处理 + newSrc = catcherUrlPrefix + cj.url; + domUtils.setAttributes(ci, { + "src": newSrc, + "_src": newSrc + }); + break; + } + } + } + me.fireEvent('catchremotesuccess') + }, + //回调失败,本次请求超时 + error: function () { + me.fireEvent("catchremoteerror"); + } + }); + } + + function catchremoteimage(imgs, callbacks) { + var params = utils.serializeParam(me.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(catcherActionUrl + (catcherActionUrl.indexOf('?') == -1 ? '?':'&') + params), + isJsonp = utils.isCrossDomainUrl(url), + opt = { + 'method': 'POST', + 'dataType': isJsonp ? 'jsonp':'', + 'timeout': 60000, //单位:毫秒,回调请求超时设置。目标用户如果网速不是很快的话此处建议设置一个较大的数值 + 'onsuccess': callbacks["success"], + 'onerror': callbacks["error"] + }; + opt[catcherFieldName] = imgs; + ajax.request(url, opt); + } + + }); +}; + +// plugins/snapscreen.js +/** + * 截屏插件,为UEditor提供插入支持 + * @file + * @since 1.4.2 + */ +UE.plugin.register('snapscreen', function (){ + + var me = this; + var snapplugin; + + function getLocation(url){ + var search, + a = document.createElement('a'), + params = utils.serializeParam(me.queryCommandValue('serverparam')) || ''; + + a.href = url; + if (browser.ie) { + a.href = a.href; + } + + + search = a.search; + if (params) { + search = search + (search.indexOf('?') == -1 ? '?':'&')+ params; + search = search.replace(/[&]+/ig, '&'); + } + return { + 'port': a.port, + 'hostname': a.hostname, + 'path': a.pathname + search || + a.hash + } + } + + return { + commands:{ + /** + * 字体背景颜色 + * @command snapscreen + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand('snapscreen'); + * ``` + */ + 'snapscreen':{ + execCommand:function (cmd) { + var url, local, res; + var lang = me.getLang("snapScreen_plugin"); + + if(!snapplugin){ + var container = me.container; + var doc = me.container.ownerDocument || me.container.document; + snapplugin = doc.createElement("object"); + try{snapplugin.type = "application/x-pluginbaidusnap";}catch(e){ + return; + } + snapplugin.style.cssText = "position:absolute;left:-9999px;width:0;height:0;"; + snapplugin.setAttribute("width","0"); + snapplugin.setAttribute("height","0"); + container.appendChild(snapplugin); + } + + function onSuccess(rs){ + try{ + rs = eval("("+ rs +")"); + if(rs.state == 'SUCCESS'){ + var opt = me.options; + me.execCommand('insertimage', { + src: opt.snapscreenUrlPrefix + rs.url, + _src: opt.snapscreenUrlPrefix + rs.url, + alt: rs.title || '', + floatStyle: opt.snapscreenImgAlign + }); + } else { + alert(rs.state); + } + }catch(e){ + alert(lang.callBackErrorMsg); + } + } + url = me.getActionUrl(me.getOpt('snapscreenActionName')); + local = getLocation(url); + setTimeout(function () { + try{ + res =snapplugin.saveSnapshot(local.hostname, local.path, local.port); + }catch(e){ + me.ui._dialogs['snapscreenDialog'].open(); + return; + } + + onSuccess(res); + }, 50); + }, + queryCommandState: function(){ + return (navigator.userAgent.indexOf("Windows",0) != -1) ? 0:-1; + } + } + } + } +}); + + +// plugins/insertparagraph.js +/** + * 插入段落 + * @file + * @since 1.2.6.1 + */ + + +/** + * 插入段落 + * @command insertparagraph + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor是编辑器实例 + * editor.execCommand( 'insertparagraph' ); + * ``` + */ + +UE.commands['insertparagraph'] = { + execCommand : function( cmdName,front) { + var me = this, + range = me.selection.getRange(), + start = range.startContainer,tmpNode; + while(start ){ + if(domUtils.isBody(start)){ + break; + } + tmpNode = start; + start = start.parentNode; + } + if(tmpNode){ + var p = me.document.createElement('p'); + if(front){ + tmpNode.parentNode.insertBefore(p,tmpNode) + }else{ + tmpNode.parentNode.insertBefore(p,tmpNode.nextSibling) + } + domUtils.fillNode(me.document,p); + range.setStart(p,0).setCursor(false,true); + } + } +}; + + + +// plugins/webapp.js +/** + * 百度应用 + * @file + * @since 1.2.6.1 + */ + + +/** + * 插入百度应用 + * @command webapp + * @method execCommand + * @remind 需要百度APPKey + * @remind 百度应用主页: http://app.baidu.com/ + * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度, + * height=>应用容器高度,logo=>应用logo,url=>应用地址 + * @example + * ```javascript + * //editor是编辑器实例 + * //在编辑器里插入一个“植物大战僵尸”的APP + * editor.execCommand( 'webapp' , { + * title: '植物大战僵尸', + * width: 560, + * height: 465, + * logo: '应用展示的图片', + * url: '百度应用的地址' + * } ); + * ``` + */ + +//UE.plugins['webapp'] = function () { +// var me = this; +// function createInsertStr( obj, toIframe, addParagraph ) { +// return !toIframe ? +// (addParagraph ? '

    ' : '') + '' + +// (addParagraph ? '

    ' : '') +// : +// ''; +// } +// +// function switchImgAndIframe( img2frame ) { +// var tmpdiv, +// nodes = domUtils.getElementsByTagName( me.document, !img2frame ? "iframe" : "img" ); +// for ( var i = 0, node; node = nodes[i++]; ) { +// if ( node.className != "edui-faked-webapp" ){ +// continue; +// } +// tmpdiv = me.document.createElement( "div" ); +// tmpdiv.innerHTML = createInsertStr( img2frame ? {url:node.getAttribute( "_url" ), width:node.width, height:node.height,title:node.title,logo:node.style.backgroundImage.replace("url(","").replace(")","")} : {url:node.getAttribute( "src", 2 ),title:node.title, width:node.width, height:node.height,logo:node.getAttribute("logo_url")}, img2frame ? true : false,false ); +// node.parentNode.replaceChild( tmpdiv.firstChild, node ); +// } +// } +// +// me.addListener( "beforegetcontent", function () { +// switchImgAndIframe( true ); +// } ); +// me.addListener( 'aftersetcontent', function () { +// switchImgAndIframe( false ); +// } ); +// me.addListener( 'aftergetcontent', function ( cmdName ) { +// if ( cmdName == 'aftergetcontent' && me.queryCommandState( 'source' ) ){ +// return; +// } +// switchImgAndIframe( false ); +// } ); +// +// me.commands['webapp'] = { +// execCommand:function ( cmd, obj ) { +// me.execCommand( "inserthtml", createInsertStr( obj, false,true ) ); +// } +// }; +//}; + +UE.plugin.register('webapp', function (){ + var me = this; + function createInsertStr(obj,toEmbed){ + return !toEmbed ? + '' + : + '' + + } + return { + outputRule: function(root){ + utils.each(root.getNodesByTagName('img'),function(node){ + var html; + if(node.getAttr('class') == 'edui-faked-webapp'){ + html = createInsertStr({ + title:node.getAttr('title'), + 'width':node.getAttr('width'), + 'height':node.getAttr('height'), + 'align':node.getAttr('align'), + 'cssfloat':node.getStyle('float'), + 'url':node.getAttr("_url"), + 'logo':node.getAttr('_logo_url') + },true); + var embed = UE.uNode.createElement(html); + node.parentNode.replaceChild(embed,node); + } + }) + }, + inputRule:function(root){ + utils.each(root.getNodesByTagName('iframe'),function(node){ + if(node.getAttr('class') == 'edui-faked-webapp'){ + var img = UE.uNode.createElement(createInsertStr({ + title:node.getAttr('title'), + 'width':node.getAttr('width'), + 'height':node.getAttr('height'), + 'align':node.getAttr('align'), + 'cssfloat':node.getStyle('float'), + 'url':node.getAttr("src"), + 'logo':node.getAttr('logo_url') + })); + node.parentNode.replaceChild(img,node); + } + }) + + }, + commands:{ + /** + * 插入百度应用 + * @command webapp + * @method execCommand + * @remind 需要百度APPKey + * @remind 百度应用主页: http://app.baidu.com/ + * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度, + * height=>应用容器高度,logo=>应用logo,url=>应用地址 + * @example + * ```javascript + * //editor是编辑器实例 + * //在编辑器里插入一个“植物大战僵尸”的APP + * editor.execCommand( 'webapp' , { + * title: '植物大战僵尸', + * width: 560, + * height: 465, + * logo: '应用展示的图片', + * url: '百度应用的地址' + * } ); + * ``` + */ + 'webapp':{ + execCommand:function (cmd, obj) { + + var me = this, + str = createInsertStr(utils.extend(obj,{ + align:'none' + }), false); + me.execCommand("inserthtml",str); + }, + queryCommandState:function () { + var me = this, + img = me.selection.getRange().getClosedNode(), + flag = img && (img.className == "edui-faked-webapp"); + return flag ? 1 : 0; + } + } + } + } +}); + +// plugins/template.js +///import core +///import plugins\inserthtml.js +///import plugins\cleardoc.js +///commands 模板 +///commandsName template +///commandsTitle 模板 +///commandsDialog dialogs\template +UE.plugins['template'] = function () { + UE.commands['template'] = { + execCommand:function (cmd, obj) { + obj.html && this.execCommand("inserthtml", obj.html); + } + }; + this.addListener("click", function (type, evt) { + var el = evt.target || evt.srcElement, + range = this.selection.getRange(); + var tnode = domUtils.findParent(el, function (node) { + if (node.className && domUtils.hasClass(node, "ue_t")) { + return node; + } + }, true); + tnode && range.selectNode(tnode).shrinkBoundary().select(); + }); + this.addListener("keydown", function (type, evt) { + var range = this.selection.getRange(); + if (!range.collapsed) { + if (!evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) { + var tnode = domUtils.findParent(range.startContainer, function (node) { + if (node.className && domUtils.hasClass(node, "ue_t")) { + return node; + } + }, true); + if (tnode) { + domUtils.removeClasses(tnode, ["ue_t"]); + } + } + } + }); +}; + + +// plugins/music.js +/** + * 插入音乐命令 + * @file + */ +UE.plugin.register('music', function (){ + var me = this; + function creatInsertStr(url,width,height,align,cssfloat,toEmbed){ + return !toEmbed ? + '' + : + ''; + } + return { + outputRule: function(root){ + utils.each(root.getNodesByTagName('img'),function(node){ + var html; + if(node.getAttr('class') == 'edui-faked-music'){ + var cssfloat = node.getStyle('float'); + var align = node.getAttr('align'); + html = creatInsertStr(node.getAttr("_url"), node.getAttr('width'), node.getAttr('height'), align, cssfloat, true); + var embed = UE.uNode.createElement(html); + node.parentNode.replaceChild(embed,node); + } + }) + }, + inputRule:function(root){ + utils.each(root.getNodesByTagName('embed'),function(node){ + if(node.getAttr('class') == 'edui-faked-music'){ + var cssfloat = node.getStyle('float'); + var align = node.getAttr('align'); + html = creatInsertStr(node.getAttr("src"), node.getAttr('width'), node.getAttr('height'), align, cssfloat,false); + var img = UE.uNode.createElement(html); + node.parentNode.replaceChild(img,node); + } + }) + + }, + commands:{ + /** + * 插入音乐 + * @command music + * @method execCommand + * @param { Object } musicOptions 插入音乐的参数项, 支持的key有: url=>音乐地址; + * width=>音乐容器宽度;height=>音乐容器高度;align=>音乐文件的对齐方式, 可选值有: left, center, right, none + * @example + * ```javascript + * //editor是编辑器实例 + * //在编辑器里插入一个“植物大战僵尸”的APP + * editor.execCommand( 'music' , { + * width: 400, + * height: 95, + * align: "center", + * url: "音乐地址" + * } ); + * ``` + */ + 'music':{ + execCommand:function (cmd, musicObj) { + var me = this, + str = creatInsertStr(musicObj.url, musicObj.width || 400, musicObj.height || 95, "none", false); + me.execCommand("inserthtml",str); + }, + queryCommandState:function () { + var me = this, + img = me.selection.getRange().getClosedNode(), + flag = img && (img.className == "edui-faked-music"); + return flag ? 1 : 0; + } + } + } + } +}); + +// plugins/autoupload.js +/** + * @description + * 1.拖放文件到编辑区域,自动上传并插入到选区 + * 2.插入粘贴板的图片,自动上传并插入到选区 + * @author Jinqn + * @date 2013-10-14 + */ +UE.plugin.register('autoupload', function (){ + + function sendAndInsertFile(file, editor) { + var me = editor; + //模拟数据 + var fieldName, urlPrefix, maxSize, allowFiles, actionUrl, + loadingHtml, errorHandler, successHandler, + filetype = /image\/\w+/i.test(file.type) ? 'image':'file', + loadingId = 'loading_' + (+new Date()).toString(36); + + fieldName = me.getOpt(filetype + 'FieldName'); + urlPrefix = me.getOpt(filetype + 'UrlPrefix'); + maxSize = me.getOpt(filetype + 'MaxSize'); + allowFiles = me.getOpt(filetype + 'AllowFiles'); + actionUrl = me.getActionUrl(me.getOpt(filetype + 'ActionName')); + errorHandler = function(title) { + var loader = me.document.getElementById(loadingId); + loader && domUtils.remove(loader); + me.fireEvent('showmessage', { + 'id': loadingId, + 'content': title, + 'type': 'error', + 'timeout': 4000 + }); + }; + + if (filetype == 'image') { + loadingHtml = ''; + successHandler = function(data) { + var link = urlPrefix + data.url, + loader = me.document.getElementById(loadingId); + if (loader) { + loader.setAttribute('src', link); + loader.setAttribute('_src', link); + loader.setAttribute('title', data.title || ''); + loader.setAttribute('alt', data.original || ''); + loader.removeAttribute('id'); + domUtils.removeClasses(loader, 'loadingclass'); + } + }; + } else { + loadingHtml = '

    ' + + '' + + '

    '; + successHandler = function(data) { + var link = urlPrefix + data.url, + loader = me.document.getElementById(loadingId); + + var rng = me.selection.getRange(), + bk = rng.createBookmark(); + rng.selectNode(loader).select(); + me.execCommand('insertfile', {'url': link}); + rng.moveToBookmark(bk).select(); + }; + } + + /* 插入loading的占位符 */ + me.execCommand('inserthtml', loadingHtml); + + /* 判断后端配置是否没有加载成功 */ + if (!me.getOpt(filetype + 'ActionName')) { + errorHandler(me.getLang('autoupload.errorLoadConfig')); + return; + } + /* 判断文件大小是否超出限制 */ + if(file.size > maxSize) { + errorHandler(me.getLang('autoupload.exceedSizeError')); + return; + } + /* 判断文件格式是否超出允许 */ + var fileext = file.name ? file.name.substr(file.name.lastIndexOf('.')):''; + if ((fileext && filetype != 'image') || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) { + errorHandler(me.getLang('autoupload.exceedTypeError')); + return; + } + + /* 创建Ajax并提交 */ + var xhr = new XMLHttpRequest(), + fd = new FormData(), + params = utils.serializeParam(me.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + params); + + fd.append(fieldName, file, file.name || ('blob.' + file.type.substr('image/'.length))); + fd.append('type', 'ajax'); + xhr.open("post", url, true); + xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); + xhr.addEventListener('load', function (e) { + try{ + var json = (new Function("return " + utils.trim(e.target.response)))(); + if (json.state == 'SUCCESS' && json.url) { + successHandler(json); + } else { + errorHandler(json.state); + } + }catch(er){ + errorHandler(me.getLang('autoupload.loadError')); + } + }); + xhr.send(fd); + } + + function getPasteImage(e){ + return e.clipboardData && e.clipboardData.items && e.clipboardData.items.length == 1 && /^image\//.test(e.clipboardData.items[0].type) ? e.clipboardData.items:null; + } + function getDropImage(e){ + return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files:null; + } + + return { + outputRule: function(root){ + utils.each(root.getNodesByTagName('img'),function(n){ + if (/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr('class'))) { + n.parentNode.removeChild(n); + } + }); + utils.each(root.getNodesByTagName('p'),function(n){ + if (/\bloadpara\b/.test(n.getAttr('class'))) { + n.parentNode.removeChild(n); + } + }); + }, + bindEvents:{ + //插入粘贴板的图片,拖放插入图片 + 'ready':function(e){ + var me = this; + if(window.FormData && window.FileReader) { + domUtils.on(me.body, 'paste drop', function(e){ + var hasImg = false, + items; + //获取粘贴板文件列表或者拖放文件列表 + items = e.type == 'paste' ? getPasteImage(e):getDropImage(e); + if(items){ + var len = items.length, + file; + while (len--){ + file = items[len]; + if(file.getAsFile) file = file.getAsFile(); + if(file && file.size > 0) { + sendAndInsertFile(file, me); + hasImg = true; + } + } + hasImg && e.preventDefault(); + } + + }); + //取消拖放图片时出现的文字光标位置提示 + domUtils.on(me.body, 'dragover', function (e) { + if(e.dataTransfer.types[0] == 'Files') { + e.preventDefault(); + } + }); + + //设置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:1px solid #cccccc;margin-left: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:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;' + + '}', + this.document); + } + } + } + } +}); + +// plugins/autosave.js +UE.plugin.register('autosave', function (){ + + var me = this, + //无限循环保护 + lastSaveTime = new Date(), + //最小保存间隔时间 + MIN_TIME = 20, + //auto save key + saveKey = null; + + function save ( editor ) { + + var saveData; + + if ( new Date() - lastSaveTime < MIN_TIME ) { + return; + } + + if ( !editor.hasContents() ) { + //这里不能调用命令来删除, 会造成事件死循环 + saveKey && me.removePreferences( saveKey ); + return; + } + + lastSaveTime = new Date(); + + editor._saveFlag = null; + + saveData = me.body.innerHTML; + + if ( editor.fireEvent( "beforeautosave", { + content: saveData + } ) === false ) { + return; + } + + me.setPreferences( saveKey, saveData ); + + editor.fireEvent( "afterautosave", { + content: saveData + } ); + + } + + return { + defaultOptions: { + //默认间隔时间 + saveInterval: 500, + enableAutoSave: true // HaoChuan9421 + }, + bindEvents:{ + 'ready':function(){ + + var _suffix = "-drafts-data", + key = null; + + if ( me.key ) { + key = me.key + _suffix; + } else { + key = ( me.container.parentNode.id || 'ue-common' ) + _suffix; + } + + //页面地址+编辑器ID 保持唯一 + saveKey = ( location.protocol + location.host + location.pathname ).replace( /[.:\/]/g, '_' ) + key; + + }, + + 'contentchange': function () { + // HaoChuan9421 + if (!me.getOpt('enableAutoSave')) { + return; + } + + if ( !saveKey ) { + return; + } + + if ( me._saveFlag ) { + window.clearTimeout( me._saveFlag ); + } + + if ( me.options.saveInterval > 0 ) { + + me._saveFlag = window.setTimeout( function () { + + save( me ); + + }, me.options.saveInterval ); + + } else { + + save(me); + + } + + + } + }, + commands:{ + 'clearlocaldata':{ + execCommand:function (cmd, name) { + if ( saveKey && me.getPreferences( saveKey ) ) { + me.removePreferences( saveKey ) + } + }, + notNeedUndo: true, + ignoreContentChange:true + }, + + 'getlocaldata':{ + execCommand:function (cmd, name) { + return saveKey ? me.getPreferences( saveKey ) || '' : ''; + }, + notNeedUndo: true, + ignoreContentChange:true + }, + + 'drafts':{ + 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/charts.js +UE.plugin.register('charts', function (){ + + var me = this; + + return { + bindEvents: { + 'chartserror': function () { + } + }, + commands:{ + 'charts': { + execCommand: function ( cmd, data ) { + + var tableNode = domUtils.findParentByTagName(this.selection.getRange().startContainer, 'table', true), + flagText = [], + config = {}; + + if ( !tableNode ) { + return false; + } + + if ( !validData( tableNode ) ) { + me.fireEvent( "chartserror" ); + return false; + } + + config.title = data.title || ''; + config.subTitle = data.subTitle || ''; + config.xTitle = data.xTitle || ''; + config.yTitle = data.yTitle || ''; + config.suffix = data.suffix || ''; + config.tip = data.tip || ''; + //数据对齐方式 + config.dataFormat = data.tableDataFormat || ''; + //图表类型 + config.chartType = data.chartType || 0; + + for ( var key in config ) { + + if ( !config.hasOwnProperty( key ) ) { + continue; + } + + flagText.push( key+":"+config[ key ] ); + + } + + tableNode.setAttribute( "data-chart", flagText.join( ";" ) ); + domUtils.addClass( tableNode, "edui-charts-table" ); + + + + }, + queryCommandState: function ( cmd, name ) { + + var tableNode = domUtils.findParentByTagName(this.selection.getRange().startContainer, 'table', true); + return tableNode && validData( tableNode ) ? 0 : -1; + + } + } + }, + inputRule:function(root){ + utils.each(root.getNodesByTagName('table'),function( tableNode ){ + + if ( tableNode.getAttr("data-chart") !== undefined ) { + tableNode.setAttr("style"); + } + + }) + + }, + outputRule:function(root){ + utils.each(root.getNodesByTagName('table'),function( tableNode ){ + + if ( tableNode.getAttr("data-chart") !== undefined ) { + tableNode.setAttr("style", "display: none;"); + } + + }) + + } + } + + function validData ( table ) { + + var firstRows = null, + cellCount = 0; + + //行数不够 + if ( table.rows.length < 2 ) { + return false; + } + + //列数不够 + if ( table.rows[0].cells.length < 2 ) { + return false; + } + + //第一行所有cell必须是th + firstRows = table.rows[ 0 ].cells; + cellCount = firstRows.length; + + for ( var i = 0, cell; cell = firstRows[ i ]; i++ ) { + + if ( cell.tagName.toLowerCase() !== 'th' ) { + return false; + } + + } + + for ( var i = 1, row; row = table.rows[ i ]; i++ ) { + + //每行单元格数不匹配, 返回false + if ( row.cells.length != cellCount ) { + return false; + } + + //第一列不是th也返回false + if ( row.cells[0].tagName.toLowerCase() !== 'th' ) { + return false; + } + + for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { + + var value = utils.trim( ( cell.innerText || cell.textContent || '' ) ); + + value = value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\s+|\s+$/g, '' ); + + //必须是数字 + if ( !/^\d*\.?\d+$/.test( value ) ) { + return false; + } + + } + + } + + return true; + + } + +}); + +// plugins/section.js +/** + * 目录大纲支持插件 + * @file + * @since 1.3.0 + */ +UE.plugin.register('section', function (){ + /* 目录节点对象 */ + function Section(option){ + this.tag = ''; + this.level = -1, + this.dom = null; + this.nextSection = null; + this.previousSection = null; + this.parentSection = null; + this.startAddress = []; + this.endAddress = []; + this.children = []; + } + function getSection(option) { + var section = new Section(); + return utils.extend(section, option); + } + function getNodeFromAddress(startAddress, root) { + var current = root; + for(var i = 0;i < startAddress.length; i++) { + if(!current.childNodes) return null; + current = current.childNodes[startAddress[i]]; + } + return current; + } + + var me = this; + + return { + bindMultiEvents:{ + type: 'aftersetcontent afterscencerestore', + handler: function(){ + me.fireEvent('updateSections'); + } + }, + bindEvents:{ + /* 初始化、拖拽、粘贴、执行setcontent之后 */ + 'ready': function (){ + me.fireEvent('updateSections'); + domUtils.on(me.body, 'drop paste', function(){ + me.fireEvent('updateSections'); + }); + }, + /* 执行paragraph命令之后 */ + 'afterexeccommand': function (type, cmd) { + if(cmd == 'paragraph') { + me.fireEvent('updateSections'); + } + }, + /* 部分键盘操作,触发updateSections事件 */ + 'keyup': function (type, e) { + var me = this, + range = me.selection.getRange(); + if(range.collapsed != true) { + me.fireEvent('updateSections'); + } else { + var keyCode = e.keyCode || e.which; + if(keyCode == 13 || keyCode == 8 || keyCode == 46) { + me.fireEvent('updateSections'); + } + } + } + }, + commands:{ + 'getsections': { + execCommand: function (cmd, levels) { + var levelFn = levels || ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']; + + for (var i = 0; i < levelFn.length; i++) { + if (typeof levelFn[i] == 'string') { + levelFn[i] = function(fn){ + return function(node){ + return node.tagName == fn.toUpperCase() + }; + }(levelFn[i]); + } else if (typeof levelFn[i] != 'function') { + levelFn[i] = function (node) { + return null; + } + } + } + function getSectionLevel(node) { + for (var i = 0; i < levelFn.length; i++) { + if (levelFn[i](node)) return i; + } + return -1; + } + + var me = this, + Directory = getSection({'level':-1, 'title':'root'}), + previous = Directory; + + function traversal(node, Directory) { + var level, + tmpSection = null, + parent, + child, + children = node.childNodes; + for (var i = 0, len = children.length; i < len; i++) { + child = children[i]; + level = getSectionLevel(child); + if (level >= 0) { + var address = me.selection.getRange().selectNode(child).createAddress(true).startAddress, + current = getSection({ + 'tag': child.tagName, + 'title': child.innerText || child.textContent || '', + 'level': level, + 'dom': child, + 'startAddress': utils.clone(address, []), + 'endAddress': utils.clone(address, []), + 'children': [] + }); + previous.nextSection = current; + current.previousSection = previous; + parent = previous; + while(level <= parent.level){ + parent = parent.parentSection; + } + current.parentSection = parent; + parent.children.push(current); + tmpSection = previous = current; + } else { + child.nodeType === 1 && traversal(child, Directory); + tmpSection && tmpSection.endAddress[tmpSection.endAddress.length - 1] ++; + } + } + } + traversal(me.body, Directory); + return Directory; + }, + notNeedUndo: true + }, + 'movesection': { + execCommand: function (cmd, sourceSection, targetSection, isAfter) { + + var me = this, + targetAddress, + target; + + if(!sourceSection || !targetSection || targetSection.level == -1) return; + + targetAddress = isAfter ? targetSection.endAddress:targetSection.startAddress; + target = getNodeFromAddress(targetAddress, me.body); + + /* 判断目标地址是否被源章节包含 */ + if(!targetAddress || !target || isContainsAddress(sourceSection.startAddress, sourceSection.endAddress, targetAddress)) return; + + var startNode = getNodeFromAddress(sourceSection.startAddress, me.body), + endNode = getNodeFromAddress(sourceSection.endAddress, me.body), + current, + nextNode; + + if(isAfter) { + current = endNode; + while ( current && !(domUtils.getPosition( startNode, current ) & domUtils.POSITION_FOLLOWING) ) { + nextNode = current.previousSibling; + domUtils.insertAfter(target, current); + if(current == startNode) break; + current = nextNode; + } + } else { + current = startNode; + while ( current && !(domUtils.getPosition( current, endNode ) & domUtils.POSITION_FOLLOWING) ) { + nextNode = current.nextSibling; + target.parentNode.insertBefore(current, target); + if(current == endNode) break; + current = nextNode; + } + } + + me.fireEvent('updateSections'); + + /* 获取地址的包含关系 */ + function isContainsAddress(startAddress, endAddress, addressTarget){ + var isAfterStartAddress = false, + isBeforeEndAddress = false; + for(var i = 0; i< startAddress.length; i++){ + if(i >= addressTarget.length) break; + if(addressTarget[i] > startAddress[i]) { + isAfterStartAddress = true; + break; + } else if(addressTarget[i] < startAddress[i]) { + break; + } + } + for(var i = 0; i< endAddress.length; i++){ + if(i >= addressTarget.length) break; + if(addressTarget[i] < startAddress[i]) { + isBeforeEndAddress = true; + break; + } else if(addressTarget[i] > startAddress[i]) { + break; + } + } + return isAfterStartAddress && isBeforeEndAddress; + } + } + }, + 'deletesection': { + execCommand: function (cmd, section, keepChildren) { + var me = this; + + if(!section) return; + + function getNodeFromAddress(startAddress) { + var current = me.body; + for(var i = 0;i < startAddress.length; i++) { + if(!current.childNodes) return null; + current = current.childNodes[startAddress[i]]; + } + return current; + } + + var startNode = getNodeFromAddress(section.startAddress), + endNode = getNodeFromAddress(section.endAddress), + current = startNode, + nextNode; + + if(!keepChildren) { + while ( current && domUtils.inDoc(endNode, me.document) && !(domUtils.getPosition( current, endNode ) & domUtils.POSITION_FOLLOWING) ) { + nextNode = current.nextSibling; + domUtils.remove(current); + current = nextNode; + } + } else { + domUtils.remove(current); + } + + me.fireEvent('updateSections'); + } + }, + 'selectsection': { + execCommand: function (cmd, section) { + if(!section && !section.dom) return false; + var me = this, + range = me.selection.getRange(), + address = { + 'startAddress':utils.clone(section.startAddress, []), + 'endAddress':utils.clone(section.endAddress, []) + }; + address.endAddress[address.endAddress.length - 1]++; + range.moveToAddress(address).select().scrollToView(); + return true; + }, + notNeedUndo: true + }, + 'scrolltosection': { + execCommand: function (cmd, section) { + if(!section && !section.dom) return false; + var me = this, + range = me.selection.getRange(), + address = { + 'startAddress':section.startAddress, + 'endAddress':section.endAddress + }; + address.endAddress[address.endAddress.length - 1]++; + range.moveToAddress(address).scrollToView(); + return true; + }, + notNeedUndo: true + } + } + } +}); + +// plugins/simpleupload.js +/** + * @description + * 简单上传:点击按钮,直接选择文件上传。 + * 原 UEditor 作者使用了 form 表单 + iframe 的方式上传 + * 但由于同源策略的限制,父页面无法访问跨域的 iframe 内容 + * 导致无法获取接口返回的数据,使得单图上传无法在跨域的情况下使用 + * 这里改为普通的XHR上传,兼容到IE10+ + * @author HaoChuan9421 + * @date 2018-12-20 + */ +UE.plugin.register('simpleupload', function() { + var me = this, + containerBtn, + timestrap = (+new Date()).toString(36); + + function initUploadBtn() { + var w = containerBtn.offsetWidth || 20, + h = containerBtn.offsetHeight || 20, + btnStyle = 'display:block;width:' + w + 'px;height:' + h + 'px;overflow:hidden;border:0;margin:0;padding:0;position:absolute;top:0;left:0;filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity: 0;opacity: 0;cursor:pointer;'; + + var form = document.createElement('form'); + var input = document.createElement('input'); + form.id = 'edui_form_' + timestrap; + form.enctype = 'multipart/form-data'; + form.style = btnStyle; + input.id = 'edui_input_' + timestrap; + input.type = 'file' + input.accept = 'image/*'; + input.name = me.options.imageFieldName; + input.style = btnStyle; + form.appendChild(input); + containerBtn.appendChild(form); + + input.addEventListener('change', function(event) { + if (!input.value) return; + var loadingId = 'loading_' + (+new Date()).toString(36); + var imageActionUrl = me.getActionUrl(me.getOpt('imageActionName')); + var params = utils.serializeParam(me.queryCommandValue('serverparam')) || ''; + var action = utils.formatUrl(imageActionUrl + (imageActionUrl.indexOf('?') == -1 ? '?' : '&') + params); + var allowFiles = me.getOpt('imageAllowFiles'); + me.focus(); + me.execCommand('inserthtml', ''); + + 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')) { + showErrorLoader(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; + } + + var xhr = new XMLHttpRequest() + xhr.open('post', action, true) + if (me.options.headers && Object.prototype.toString.apply(me.options.headers) === "[object Object]") { + for (var key in me.options.headers) { + xhr.setRequestHeader(key, me.options.headers[key]) + } + } + xhr.onload = function() { + if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) { + var res = JSON.parse(xhr.responseText) + var link = me.options.imageUrlPrefix + res.url; + + if (res.state == 'SUCCESS' && res.url) { + loader = me.document.getElementById(loadingId); + loader.setAttribute('src', link); + loader.setAttribute('_src', link); + loader.setAttribute('title', res.title || ''); + loader.setAttribute('alt', res.original || ''); + loader.removeAttribute('id'); + domUtils.removeClasses(loader, 'loadingclass'); + me.fireEvent("contentchange"); + } else { + showErrorLoader(res.state); + } + } else { + showErrorLoader(me.getLang('simpleupload.loadError')); + } + }; + xhr.onerror = function() { + showErrorLoader(me.getLang('simpleupload.loadError')); + }; + xhr.send(new FormData(form)); + form.reset(); + }) + } + + 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:1px solid #cccccc;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:1px solid #cccccc;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); + } + }); + } + } +}); + +// 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, true); + } else if (utils.isFunction(key)){ //传入函数,添加列表项 + utils.extend(serverParam, key(), true); + } + }, + 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]; + + 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); + } + } + } + } +}); + + + + +// plugins/xssFilter.js +/** + * @file xssFilter.js + * @desc xss过滤器 + * @author robbenmu + */ + +UE.plugins.xssFilter = function() { + + var config = UEDITOR_CONFIG; + var whitList = config.whitList; + + function filter(node) { + + var tagName = node.tagName; + var attrs = node.attrs; + + if (!whitList.hasOwnProperty(tagName)) { + node.parentNode.removeChild(node); + return false; + } + + UE.utils.each(attrs, function (val, key) { + + if (whitList[tagName].indexOf(key) === -1) { + node.setAttr(key); + } + }); + } + + // 添加inserthtml\paste等操作用的过滤规则 + if (whitList && config.xssFilterRules) { + this.options.filterRules = function () { + + var result = {}; + + UE.utils.each(whitList, function(val, key) { + result[key] = function (node) { + return filter(node); + }; + }); + + return result; + }(); + } + + var tagList = []; + + UE.utils.each(whitList, function (val, key) { + tagList.push(key); + }); + + // 添加input过滤规则 + // + if (whitList && config.inputXssFilter) { + this.addInputRule(function (root) { + + root.traversal(function(node) { + if (node.type !== 'element') { + return false; + } + filter(node); + }); + }); + } + // 添加output过滤规则 + // + if (whitList && config.outputXssFilter) { + this.addOutputRule(function (root) { + + root.traversal(function(node) { + if (node.type !== 'element') { + return false; + } + filter(node); + }); + }); + } + +}; + + +// 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'; + } + return layer; + }, + makeUnselectable: function (element){ + if (browser.opera || (browser.ie && browser.version < 9)) { + element.unselectable = 'on'; + if (element.hasChildNodes()) { + for (var i=0; i
    '; + } + }; + 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/ig.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上的鼠标滚轮事件, 防止用户的正常操作被误解 + if( window.XMLHttpRequest ) { + + 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; + + } + + }); + + } else { + + //ie6 + domUtils.on( this.getDom(), 'mousewheel' , function(e){ + + e.returnValue = false; + + me.getDom('content').scrollTop -= ( e.wheelDelta / 120 )*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 (){ + 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); + } + + 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':'')+''; + } + html += i<70 ? '':''; + } + html += '
    '+editor.getLang("themeColor")+'
    '+editor.getLang("standardColor")+'
    '; + 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-default .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/ig.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'); + + tmpl.push( '
    ' ); + + tempIndex === 2 && tmpl.push(''); + + } + + return '
    ' + + '
    ' + + '' + + 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/ig.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' + + buff.join('') + + '
    ' + }, + postRender: function (){ + var box = this.getDom(); + for (var i=0; i
    '; + }, + 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 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' + buff.join('') + '