├── .browserslistrc ├── .editorconfig ├── .eslintrc.json ├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .npmignore ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── LICENSE ├── README.md ├── angular.json ├── karma.conf.js ├── lib ├── index.ts ├── ng-package.json ├── package.json ├── public_api.ts ├── src │ ├── directive.spec.ts │ ├── ueditor.component.ts │ ├── ueditor.config.ts │ └── ueditor.module.ts ├── test.ts └── tsconfig.lib.json ├── package.json ├── scripts └── build.js ├── src ├── app │ ├── app.component.ts │ ├── app.module.ts │ └── components │ │ ├── demo.component.html │ │ ├── demo.component.ts │ │ ├── dev.component.html │ │ ├── dev.component.ts │ │ ├── modal.component.html │ │ └── modal.component.ts ├── assets │ ├── .gitkeep │ ├── bootstrap.min.css │ ├── fork.png │ └── ueditor │ │ ├── dialogs │ │ ├── anchor │ │ │ └── anchor.html │ │ ├── attachment │ │ │ ├── attachment.css │ │ │ ├── attachment.html │ │ │ ├── attachment.js │ │ │ ├── fileTypeImages │ │ │ │ ├── icon_chm.gif │ │ │ │ ├── icon_default.png │ │ │ │ ├── icon_doc.gif │ │ │ │ ├── icon_exe.gif │ │ │ │ ├── icon_jpg.gif │ │ │ │ ├── icon_mp3.gif │ │ │ │ ├── icon_mv.gif │ │ │ │ ├── icon_pdf.gif │ │ │ │ ├── icon_ppt.gif │ │ │ │ ├── icon_psd.gif │ │ │ │ ├── icon_rar.gif │ │ │ │ ├── icon_txt.gif │ │ │ │ └── icon_xls.gif │ │ │ └── images │ │ │ │ ├── alignicon.gif │ │ │ │ ├── alignicon.png │ │ │ │ ├── bg.png │ │ │ │ ├── file-icons.gif │ │ │ │ ├── file-icons.png │ │ │ │ ├── icons.gif │ │ │ │ ├── icons.png │ │ │ │ ├── image.png │ │ │ │ ├── progress.png │ │ │ │ ├── success.gif │ │ │ │ └── success.png │ │ ├── background │ │ │ ├── background.css │ │ │ ├── background.html │ │ │ ├── background.js │ │ │ └── images │ │ │ │ ├── bg.png │ │ │ │ └── success.png │ │ ├── charts │ │ │ ├── chart.config.js │ │ │ ├── charts.css │ │ │ ├── charts.html │ │ │ ├── charts.js │ │ │ └── images │ │ │ │ ├── charts0.png │ │ │ │ ├── charts1.png │ │ │ │ ├── charts2.png │ │ │ │ ├── charts3.png │ │ │ │ ├── charts4.png │ │ │ │ └── charts5.png │ │ ├── emotion │ │ │ ├── emotion.css │ │ │ ├── emotion.html │ │ │ ├── emotion.js │ │ │ └── images │ │ │ │ ├── 0.gif │ │ │ │ ├── bface.gif │ │ │ │ ├── cface.gif │ │ │ │ ├── fface.gif │ │ │ │ ├── jxface2.gif │ │ │ │ ├── neweditor-tab-bg.png │ │ │ │ ├── tface.gif │ │ │ │ ├── wface.gif │ │ │ │ └── yface.gif │ │ ├── gmap │ │ │ └── gmap.html │ │ ├── help │ │ │ ├── help.css │ │ │ ├── help.html │ │ │ └── help.js │ │ ├── image │ │ │ ├── image.css │ │ │ ├── image.html │ │ │ ├── image.js │ │ │ └── images │ │ │ │ ├── alignicon.jpg │ │ │ │ ├── bg.png │ │ │ │ ├── icons.gif │ │ │ │ ├── icons.png │ │ │ │ ├── image.png │ │ │ │ ├── progress.png │ │ │ │ ├── success.gif │ │ │ │ └── success.png │ │ ├── insertframe │ │ │ └── insertframe.html │ │ ├── internal.js │ │ ├── link │ │ │ └── link.html │ │ ├── map │ │ │ ├── map.html │ │ │ └── show.html │ │ ├── music │ │ │ ├── music.css │ │ │ ├── music.html │ │ │ └── music.js │ │ ├── preview │ │ │ └── preview.html │ │ ├── scrawl │ │ │ ├── images │ │ │ │ ├── addimg.png │ │ │ │ ├── brush.png │ │ │ │ ├── delimg.png │ │ │ │ ├── delimgH.png │ │ │ │ ├── empty.png │ │ │ │ ├── emptyH.png │ │ │ │ ├── eraser.png │ │ │ │ ├── redo.png │ │ │ │ ├── redoH.png │ │ │ │ ├── scale.png │ │ │ │ ├── scaleH.png │ │ │ │ ├── size.png │ │ │ │ ├── undo.png │ │ │ │ └── undoH.png │ │ │ ├── scrawl.css │ │ │ ├── scrawl.html │ │ │ └── scrawl.js │ │ ├── searchreplace │ │ │ ├── searchreplace.html │ │ │ └── searchreplace.js │ │ ├── snapscreen │ │ │ └── snapscreen.html │ │ ├── spechars │ │ │ ├── spechars.html │ │ │ └── spechars.js │ │ ├── table │ │ │ ├── dragicon.png │ │ │ ├── edittable.css │ │ │ ├── edittable.html │ │ │ ├── edittable.js │ │ │ ├── edittd.html │ │ │ └── edittip.html │ │ ├── template │ │ │ ├── config.js │ │ │ ├── images │ │ │ │ ├── bg.gif │ │ │ │ ├── pre0.png │ │ │ │ ├── pre1.png │ │ │ │ ├── pre2.png │ │ │ │ ├── pre3.png │ │ │ │ └── pre4.png │ │ │ ├── template.css │ │ │ ├── template.html │ │ │ └── template.js │ │ ├── video │ │ │ ├── images │ │ │ │ ├── bg.png │ │ │ │ ├── center_focus.jpg │ │ │ │ ├── file-icons.gif │ │ │ │ ├── file-icons.png │ │ │ │ ├── icons.gif │ │ │ │ ├── icons.png │ │ │ │ ├── image.png │ │ │ │ ├── left_focus.jpg │ │ │ │ ├── none_focus.jpg │ │ │ │ ├── progress.png │ │ │ │ ├── right_focus.jpg │ │ │ │ ├── success.gif │ │ │ │ └── success.png │ │ │ ├── video.css │ │ │ ├── video.html │ │ │ └── video.js │ │ ├── webapp │ │ │ └── webapp.html │ │ └── wordimage │ │ │ ├── fClipboard_ueditor.swf │ │ │ ├── imageUploader.swf │ │ │ ├── tangram.js │ │ │ ├── wordimage.html │ │ │ └── wordimage.js │ │ ├── index.html │ │ ├── lang │ │ ├── en │ │ │ ├── en.js │ │ │ └── images │ │ │ │ ├── addimage.png │ │ │ │ ├── alldeletebtnhoverskin.png │ │ │ │ ├── alldeletebtnupskin.png │ │ │ │ ├── background.png │ │ │ │ ├── button.png │ │ │ │ ├── copy.png │ │ │ │ ├── deletedisable.png │ │ │ │ ├── deleteenable.png │ │ │ │ ├── listbackground.png │ │ │ │ ├── localimage.png │ │ │ │ ├── music.png │ │ │ │ ├── rotateleftdisable.png │ │ │ │ ├── rotateleftenable.png │ │ │ │ ├── rotaterightdisable.png │ │ │ │ ├── rotaterightenable.png │ │ │ │ └── upload.png │ │ └── zh-cn │ │ │ ├── images │ │ │ ├── copy.png │ │ │ ├── localimage.png │ │ │ ├── music.png │ │ │ └── upload.png │ │ │ └── zh-cn.js │ │ ├── net │ │ ├── App_Code │ │ │ ├── Config.cs │ │ │ ├── ConfigHandler.cs │ │ │ ├── CrawlerHandler.cs │ │ │ ├── Handler.cs │ │ │ ├── ListFileHandler.cs │ │ │ ├── NotSupportedHandler.cs │ │ │ ├── PathFormater.cs │ │ │ └── UploadHandler.cs │ │ ├── Bin │ │ │ ├── Newtonsoft.Json.dll │ │ │ ├── Newtonsoft.Json.pdb │ │ │ └── Newtonsoft.Json.xml │ │ ├── README.md │ │ ├── Web.config │ │ ├── config.json │ │ ├── controller.ashx │ │ └── net.sln │ │ ├── themes │ │ ├── default │ │ │ ├── css │ │ │ │ ├── ueditor.css │ │ │ │ └── ueditor.min.css │ │ │ ├── dialogbase.css │ │ │ └── images │ │ │ │ ├── anchor.gif │ │ │ │ ├── arrow.png │ │ │ │ ├── arrow_down.png │ │ │ │ ├── arrow_up.png │ │ │ │ ├── button-bg.gif │ │ │ │ ├── cancelbutton.gif │ │ │ │ ├── charts.png │ │ │ │ ├── cursor_h.gif │ │ │ │ ├── cursor_h.png │ │ │ │ ├── cursor_v.gif │ │ │ │ ├── cursor_v.png │ │ │ │ ├── dialog-title-bg.png │ │ │ │ ├── filescan.png │ │ │ │ ├── highlighted.gif │ │ │ │ ├── icons-all.gif │ │ │ │ ├── icons.gif │ │ │ │ ├── icons.png │ │ │ │ ├── loaderror.png │ │ │ │ ├── loading.gif │ │ │ │ ├── lock.gif │ │ │ │ ├── neweditor-tab-bg.png │ │ │ │ ├── pagebreak.gif │ │ │ │ ├── scale.png │ │ │ │ ├── sortable.png │ │ │ │ ├── spacer.gif │ │ │ │ ├── sparator_v.png │ │ │ │ ├── table-cell-align.png │ │ │ │ ├── tangram-colorpicker.png │ │ │ │ ├── toolbar_bg.png │ │ │ │ ├── unhighlighted.gif │ │ │ │ ├── upload.png │ │ │ │ ├── videologo.gif │ │ │ │ ├── word.gif │ │ │ │ └── wordpaste.png │ │ └── iframe.css │ │ ├── third-party │ │ ├── SyntaxHighlighter │ │ │ ├── shCore.js │ │ │ └── shCoreDefault.css │ │ ├── codemirror │ │ │ ├── codemirror.css │ │ │ └── codemirror.js │ │ ├── highcharts │ │ │ ├── adapters │ │ │ │ ├── mootools-adapter.js │ │ │ │ ├── mootools-adapter.src.js │ │ │ │ ├── prototype-adapter.js │ │ │ │ ├── prototype-adapter.src.js │ │ │ │ ├── standalone-framework.js │ │ │ │ └── standalone-framework.src.js │ │ │ ├── highcharts-more.js │ │ │ ├── highcharts-more.src.js │ │ │ ├── highcharts.js │ │ │ ├── highcharts.src.js │ │ │ ├── modules │ │ │ │ ├── annotations.js │ │ │ │ ├── annotations.src.js │ │ │ │ ├── canvas-tools.js │ │ │ │ ├── canvas-tools.src.js │ │ │ │ ├── data.js │ │ │ │ ├── data.src.js │ │ │ │ ├── drilldown.js │ │ │ │ ├── drilldown.src.js │ │ │ │ ├── exporting.js │ │ │ │ ├── exporting.src.js │ │ │ │ ├── funnel.js │ │ │ │ ├── funnel.src.js │ │ │ │ ├── heatmap.js │ │ │ │ ├── heatmap.src.js │ │ │ │ ├── map.js │ │ │ │ ├── map.src.js │ │ │ │ ├── no-data-to-display.js │ │ │ │ └── no-data-to-display.src.js │ │ │ └── themes │ │ │ │ ├── dark-blue.js │ │ │ │ ├── dark-green.js │ │ │ │ ├── gray.js │ │ │ │ ├── grid.js │ │ │ │ └── skies.js │ │ ├── jquery-1.10.2.js │ │ ├── jquery-1.10.2.min.js │ │ ├── jquery-1.10.2.min.map │ │ ├── snapscreen │ │ │ └── UEditorSnapscreen.exe │ │ ├── video-js │ │ │ ├── font │ │ │ │ ├── vjs.eot │ │ │ │ ├── vjs.svg │ │ │ │ ├── vjs.ttf │ │ │ │ └── vjs.woff │ │ │ ├── video-js.css │ │ │ ├── video-js.min.css │ │ │ ├── video-js.swf │ │ │ ├── video.dev.js │ │ │ └── video.js │ │ ├── webuploader │ │ │ ├── Uploader.swf │ │ │ ├── webuploader.css │ │ │ ├── webuploader.custom.js │ │ │ ├── webuploader.custom.min.js │ │ │ ├── webuploader.flashonly.js │ │ │ ├── webuploader.flashonly.min.js │ │ │ ├── webuploader.html5only.js │ │ │ ├── webuploader.html5only.min.js │ │ │ ├── webuploader.js │ │ │ ├── webuploader.min.js │ │ │ ├── webuploader.withoutimage.js │ │ │ └── webuploader.withoutimage.min.js │ │ ├── xss.min.js │ │ └── zeroclipboard │ │ │ ├── ZeroClipboard.js │ │ │ ├── ZeroClipboard.min.js │ │ │ └── ZeroClipboard.swf │ │ ├── ueditor.all.js │ │ ├── ueditor.all.min.js │ │ ├── ueditor.config.js │ │ ├── ueditor.parse.js │ │ └── ueditor.parse.min.js ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── index.html ├── main.ts ├── polyfills.ts └── styles.css ├── tsconfig.app.json ├── tsconfig.json └── tsconfig.spec.json /.browserslistrc: -------------------------------------------------------------------------------- 1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | 5 | # For the full list of supported browsers by the Angular framework, please see: 6 | # https://angular.io/guide/browser-support 7 | 8 | # You can see what browsers were selected by your queries by running: 9 | # npx browserslist 10 | 11 | last 1 Chrome version 12 | last 1 Firefox version 13 | last 2 Edge major versions 14 | last 2 Safari major versions 15 | last 2 iOS major versions 16 | Firefox ESR 17 | not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. 18 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "ignorePatterns": [ 4 | "projects/**/*" 5 | ], 6 | "overrides": [ 7 | { 8 | "files": [ 9 | "*.ts" 10 | ], 11 | "parserOptions": { 12 | "project": [ 13 | "tsconfig.json", 14 | "e2e/tsconfig.json" 15 | ], 16 | "createDefaultProgram": true 17 | }, 18 | "extends": [ 19 | "plugin:@angular-eslint/recommended", 20 | "plugin:@angular-eslint/template/process-inline-templates" 21 | ], 22 | "rules": { 23 | "@angular-eslint/directive-selector": [ 24 | "off", 25 | { 26 | "type": "attribute", 27 | "prefix": "app", 28 | "style": "camelCase" 29 | } 30 | ], 31 | "@angular-eslint/component-selector": [ 32 | "off", 33 | { 34 | "type": "element", 35 | "prefix": "app", 36 | "style": "kebab-case" 37 | } 38 | ], 39 | "@angular-eslint/no-host-metadata-property": [ 40 | "off" 41 | ], 42 | "@angular-eslint/no-output-on-prefix": [ 43 | "off" 44 | ] 45 | } 46 | }, 47 | { 48 | "files": [ 49 | "*.html" 50 | ], 51 | "extends": [ 52 | "plugin:@angular-eslint/template/recommended" 53 | ], 54 | "rules": {} 55 | } 56 | ] 57 | } 58 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Ci 2 | 3 | on: push 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: checkout 10 | uses: actions/checkout@master 11 | 12 | - uses: borales/actions-yarn@v3.0.0 13 | with: 14 | cmd: install 15 | 16 | - name: run 17 | run: | 18 | yarn run build 19 | 20 | test: 21 | runs-on: ubuntu-latest 22 | steps: 23 | - name: checkout 24 | uses: actions/checkout@master 25 | 26 | - uses: borales/actions-yarn@v3.0.0 27 | with: 28 | cmd: install 29 | 30 | - name: run 31 | run: | 32 | yarn run test 33 | cat ./coverage/lcov.info | ./node_modules/.bin/codecov 34 | env: 35 | CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} 36 | 37 | lint: 38 | runs-on: ubuntu-latest 39 | steps: 40 | - name: checkout 41 | uses: actions/checkout@master 42 | 43 | - uses: borales/actions-yarn@v3.0.0 44 | with: 45 | cmd: install 46 | 47 | - name: run 48 | run: | 49 | yarn run lint 50 | 51 | site: 52 | runs-on: ubuntu-latest 53 | steps: 54 | - name: checkout 55 | uses: actions/checkout@master 56 | 57 | - uses: borales/actions-yarn@v3.0.0 58 | with: 59 | cmd: install 60 | 61 | - name: build 62 | run: | 63 | node --max_old_space_size=5120 ./node_modules/@angular/cli/bin/ng build --base-href /ngx-ueditor/ 64 | cp ./dist/index.html ./dist/404.html 65 | ls ./dist 66 | 67 | - name: deploy-to-gh-pages 68 | uses: peaceiris/actions-gh-pages@v3 69 | with: 70 | github_token: ${{ secrets.GITHUB_TOKEN }} 71 | publish_dir: ./dist 72 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | /publish 8 | /yarn.lock 9 | /.angular/cache 10 | 11 | # dependencies 12 | /node_modules 13 | 14 | # IDEs and editors 15 | /.idea 16 | .project 17 | .classpath 18 | .c9/ 19 | *.launch 20 | .settings/ 21 | *.sublime-workspace 22 | 23 | # IDE - VSCode 24 | .vscode/* 25 | !.vscode/settings.json 26 | !.vscode/tasks.json 27 | !.vscode/launch.json 28 | !.vscode/extensions.json 29 | 30 | # misc 31 | /.sass-cache 32 | /connect.lock 33 | /coverage 34 | /libpeerconnection.log 35 | npm-debug.log 36 | yarn-error.log 37 | testem.log 38 | /typings 39 | 40 | # System Files 41 | .DS_Store 42 | Thumbs.db 43 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # Compiled binary addons (http://nodejs.org/api/addons.html) 20 | build/Release 21 | 22 | # Dependency directory 23 | # Commenting this out is preferred by some people, see 24 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- 25 | node_modules 26 | 27 | # Users Environment Variables 28 | .lock-wscript 29 | .tsdrc 30 | 31 | #IntelliJ configuration files 32 | .idea 33 | 34 | dist 35 | dev 36 | docs 37 | lib 38 | test 39 | tmp 40 | 41 | Thumbs.db 42 | .DS_Store 43 | 44 | *.ts 45 | !*.d.ts 46 | 47 | src/app/example* 48 | src/public 49 | typings 50 | *_spec.* 51 | CONTRIBUTING.md 52 | gulpfile.ts 53 | favicon.ico 54 | karma-shim.js 55 | karma.conf.js 56 | make.js 57 | protractor.conf.js 58 | test-main.js 59 | tsconfig.json 60 | tslint.json 61 | typedoc.json 62 | typings.json 63 | webpack.config.js 64 | *.yml 65 | .jshintrc 66 | .editorconfig 67 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 14.16.1 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/.prettierignore -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 140, 3 | "singleQuote": true, 4 | "trailingComma": "all" 5 | } 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018-present 卡色 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /angular.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json", 3 | "version": 1, 4 | "newProjectRoot": "projects", 5 | "projects": { 6 | "ngx-highlight-js": { 7 | "projectType": "application", 8 | "schematics": { 9 | "@schematics/angular:component": { 10 | "style": "less" 11 | }, 12 | "@schematics/angular:application": { 13 | "strict": true 14 | } 15 | }, 16 | "root": "", 17 | "sourceRoot": "src", 18 | "prefix": "app", 19 | "architect": { 20 | "build": { 21 | "builder": "@angular-devkit/build-angular:browser", 22 | "options": { 23 | "outputPath": "dist", 24 | "index": "src/index.html", 25 | "main": "src/main.ts", 26 | "polyfills": "src/polyfills.ts", 27 | "tsConfig": "tsconfig.app.json", 28 | "assets": [ 29 | "src/favicon.ico", 30 | "src/assets" 31 | ], 32 | "inlineStyleLanguage": "less", 33 | "styles": [], 34 | "scripts": [] 35 | }, 36 | "configurations": { 37 | "production": { 38 | "budgets": [ 39 | { 40 | "type": "initial", 41 | "maximumWarning": "500kb", 42 | "maximumError": "1mb" 43 | }, 44 | { 45 | "type": "anyComponentStyle", 46 | "maximumWarning": "2kb", 47 | "maximumError": "4kb" 48 | } 49 | ], 50 | "fileReplacements": [ 51 | { 52 | "replace": "src/environments/environment.ts", 53 | "with": "src/environments/environment.prod.ts" 54 | } 55 | ], 56 | "outputHashing": "all" 57 | }, 58 | "development": { 59 | "buildOptimizer": false, 60 | "optimization": false, 61 | "vendorChunk": true, 62 | "extractLicenses": false, 63 | "sourceMap": true, 64 | "namedChunks": true 65 | } 66 | }, 67 | "defaultConfiguration": "production" 68 | }, 69 | "serve": { 70 | "builder": "@angular-devkit/build-angular:dev-server", 71 | "configurations": { 72 | "production": { 73 | "browserTarget": "ngx-highlight-js:build:production" 74 | }, 75 | "development": { 76 | "browserTarget": "ngx-highlight-js:build:development" 77 | } 78 | }, 79 | "defaultConfiguration": "development" 80 | }, 81 | "test": { 82 | "builder": "@angular-devkit/build-angular:karma", 83 | "options": { 84 | "main": "lib/test.ts", 85 | "polyfills": "src/polyfills.ts", 86 | "tsConfig": "tsconfig.spec.json", 87 | "karmaConfig": "karma.conf.js" 88 | } 89 | }, 90 | "lint": { 91 | "builder": "@angular-eslint/builder:lint", 92 | "options": { 93 | "lintFilePatterns": [ 94 | "src/**/*.ts", 95 | "src/**/*.html", 96 | "lib/**/*.ts", 97 | "lib/**/*.html" 98 | ] 99 | } 100 | } 101 | } 102 | } 103 | }, 104 | "cli": { 105 | "schematicCollections": [ 106 | "@angular-eslint/schematics" 107 | ] 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/1.0/config/configuration-file.html 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', '@angular-devkit/build-angular'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-chrome-launcher'), 11 | require('karma-jasmine-html-reporter'), 12 | require('karma-coverage'), 13 | require('@angular-devkit/build-angular/plugins/karma') 14 | ], 15 | client: { 16 | jasmine: { 17 | // you can add configuration options for Jasmine here 18 | // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html 19 | // for example, you can disable the random execution with `random: false` 20 | // or set a specific seed with `seed: 4321` 21 | }, 22 | clearContext: false // leave Jasmine Spec Runner output visible in browser 23 | }, 24 | jasmineHtmlReporter: { 25 | suppressAll: true // removes the duplicated traces 26 | }, 27 | coverageReporter: { 28 | dir: require('path').join(__dirname, './coverage'), 29 | subdir: '.', 30 | reporters: [ 31 | { type: 'html' }, 32 | { type: 'text-summary' } 33 | ] 34 | }, 35 | reporters: ['progress', 'kjhtml'], 36 | port: 9876, 37 | colors: true, 38 | logLevel: config.LOG_INFO, 39 | autoWatch: true, 40 | browsers: ['Chrome'], 41 | singleRun: false, 42 | restartOnFileChange: true, 43 | customLaunchers: { 44 | ChromeHeadlessCI: { 45 | base: 'ChromeHeadless', 46 | flags: ['--no-sandbox'], 47 | }, 48 | } 49 | }); 50 | }; 51 | -------------------------------------------------------------------------------- /lib/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public_api'; 2 | -------------------------------------------------------------------------------- /lib/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../publish", 4 | "deleteDestPath": true, 5 | "lib": { 6 | "entryFile": "index.ts" 7 | }, 8 | "allowedNonPeerDependencies": [ 9 | "@ng-util/util", 10 | "@ng-util/lazy" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /lib/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngx-ueditor", 3 | "version": "14.0.0", 4 | "description": "Angular for Baidu UEditor", 5 | "author": "cipchk ", 6 | "license": "MIT", 7 | "bugs": { 8 | "url": "https://github.com/cipchk/ngx-ueditor/issues" 9 | }, 10 | "homepage": "https://cipchk.github.io/ngx-ueditor/", 11 | "dependencies": { 12 | "@ng-util/lazy": "^14.0.0", 13 | "@ng-util/util": "^14.0.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/public_api.ts: -------------------------------------------------------------------------------- 1 | export { UEditorComponent } from './src/ueditor.component'; 2 | export { UEditorConfig } from './src/ueditor.config'; 3 | export * from './src/ueditor.module'; 4 | -------------------------------------------------------------------------------- /lib/src/directive.spec.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 3 | 4 | import { UEditorModule } from './ueditor.module'; 5 | 6 | const html = ``; 7 | 8 | describe('Component: ngx-ueditor', () => { 9 | let fixture: ComponentFixture; 10 | let context: TestNGComponent; 11 | let element: any; 12 | let clean: any; 13 | 14 | beforeEach(() => { 15 | TestBed.configureTestingModule({ 16 | declarations: [TestNGComponent], 17 | imports: [UEditorModule], 18 | }); 19 | TestBed.overrideComponent(TestNGComponent, { set: { template: html } }); 20 | fixture = TestBed.createComponent(TestNGComponent); 21 | context = fixture.componentInstance; 22 | element = fixture.nativeElement.querySelector('#c1'); 23 | clean = fixture.nativeElement.querySelector('#c2'); 24 | fixture.detectChanges(); 25 | }); 26 | 27 | it('fixture should not be null', () => { 28 | expect(fixture).not.toBeNull(); 29 | }); 30 | }); 31 | 32 | @Component({ 33 | selector: 'app-ueditor-test', 34 | template: '', 35 | }) 36 | class TestNGComponent {} 37 | -------------------------------------------------------------------------------- /lib/src/ueditor.config.ts: -------------------------------------------------------------------------------- 1 | export interface UEditorOptions { 2 | [key: string]: any; 3 | /** 当你使用 `cdn` 时,属性必填,相当于整个 Ueditor 所需要语言、主题、对话框等根路径 */ 4 | UEDITOR_HOME_URL: string; 5 | /** 服务器统一请求接口路径 */ 6 | serverUrl?: string; 7 | /** 工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的从新定义 */ 8 | toolbars?: string[][]; 9 | /** 编辑器层级的基数,默认 `900` */ 10 | zIndex?: number; 11 | } 12 | 13 | export class UEditorConfig { 14 | /** 15 | * Ueditor [前端配置项](http://fex.baidu.com/ueditor/#start-config) 16 | */ 17 | options?: UEditorOptions; 18 | 19 | /** 20 | * 指定ueditor.js和config.js路径,这是启动 Ueditor 必备 21 | * - **务必**指定 `options.UEDITOR_HOME_URL`(虽然默认会根据 `config.js` 路径获取,但某些环境下更有保证) 22 | */ 23 | js?: string[]; 24 | 25 | /** 26 | * Hook 27 | * - 在 Ueditor 对象加载完成后执行 28 | * - 只执行一次 29 | */ 30 | hook?: (ue: any) => void; 31 | } 32 | -------------------------------------------------------------------------------- /lib/src/ueditor.module.ts: -------------------------------------------------------------------------------- 1 | import { CommonModule } from '@angular/common'; 2 | import { NgModule, ModuleWithProviders } from '@angular/core'; 3 | import { UEditorComponent } from './ueditor.component'; 4 | import { UEditorConfig } from './ueditor.config'; 5 | 6 | @NgModule({ 7 | imports: [CommonModule, UEditorComponent], 8 | exports: [UEditorComponent], 9 | }) 10 | export class UEditorModule { 11 | static forRoot(config: UEditorConfig): ModuleWithProviders { 12 | return { 13 | ngModule: UEditorModule, 14 | providers: [{ provide: UEditorConfig, useValue: config }], 15 | }; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; 6 | 7 | declare const require: { 8 | context( 9 | path: string, 10 | deep?: boolean, 11 | filter?: RegExp, 12 | ): { 13 | keys(): string[]; 14 | (id: string): T; 15 | }; 16 | }; 17 | 18 | // First, initialize the Angular testing environment. 19 | getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting()); 20 | // Then we find all the tests. 21 | const context = require.context('./', true, /\.spec\.ts$/); 22 | // And load the modules. 23 | context.keys().map(context); 24 | -------------------------------------------------------------------------------- /lib/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "alwaysStrict": true, 5 | "inlineSources": true, 6 | "strictFunctionTypes": true, 7 | "stripInternal": true 8 | }, 9 | "files": ["./src/ueditor.module.ts"], 10 | "include": ["**/*.ts"], 11 | "angularCompilerOptions": { 12 | "enableIvy": true, 13 | "compilationMode": "partial" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngx-ueditor", 3 | "version": "14.0.0", 4 | "description": "Angular for Baidu UEditor", 5 | "license": "MIT", 6 | "author": "cipchk ", 7 | "bugs": { 8 | "url": "https://github.com/cipchk/ngx-ueditor/issues" 9 | }, 10 | "homepage": "https://cipchk.github.io/ngx-ueditor/", 11 | "scripts": { 12 | "analyze": "ng b --stats-json --source-map", 13 | "lint": "ng lint", 14 | "test": "ng t --no-progress --browsers=ChromeHeadlessCI --code-coverage --no-watch", 15 | "build": "node scripts/build.js", 16 | "release:next": "npm run build && cd publish && npm publish --access public --tag next", 17 | "release": "npm run build && cd publish && npm publish --access public" 18 | }, 19 | "dependencies": { 20 | "@angular/animations": "^14.0.0", 21 | "@angular/common": "^14.0.0", 22 | "@angular/compiler": "^14.0.0", 23 | "@angular/core": "^14.0.0", 24 | "@angular/forms": "^14.0.0", 25 | "@angular/platform-browser": "^14.0.0", 26 | "@angular/platform-browser-dynamic": "^14.0.0", 27 | "@angular/router": "^14.0.0", 28 | "rxjs": "~7.5.0", 29 | "tslib": "^2.3.0", 30 | "zone.js": "~0.11.4", 31 | "@ng-util/lazy": "^14.0.0", 32 | "@ng-util/util": "^14.0.0" 33 | }, 34 | "devDependencies": { 35 | "@angular-devkit/build-angular": "^14.0.3", 36 | "@angular/cli": "~14.0.3", 37 | "@angular/compiler-cli": "^14.0.0", 38 | "@types/jasmine": "~4.0.0", 39 | "jasmine-core": "~4.1.0", 40 | "karma": "~6.3.0", 41 | "karma-chrome-launcher": "~3.1.1", 42 | "karma-coverage": "~2.2.0", 43 | "karma-jasmine": "~5.1.0", 44 | "karma-jasmine-html-reporter": "~1.7.0", 45 | "typescript": "~4.7.4", 46 | "@angular-eslint/builder": "^14.0.0", 47 | "@angular-eslint/eslint-plugin": "^14.0.0", 48 | "@angular-eslint/eslint-plugin-template": "^14.0.0", 49 | "@angular-eslint/schematics": "^14.0.0", 50 | "@angular-eslint/template-parser": "^14.0.0", 51 | "@typescript-eslint/eslint-plugin": "^5.29.0", 52 | "@typescript-eslint/parser": "^5.29.0", 53 | "codecov": "^3.8.3", 54 | "eslint": "^8.18.0", 55 | "ng-packagr": "^14.0.2", 56 | "ngx-highlight-js": "^14.0.0", 57 | "ngx-bootstrap": "^8.0.0" 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /scripts/build.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const fs = require('fs-extra'); 3 | const ngPackage = require('ng-packagr'); 4 | 5 | const root = path.resolve(__dirname, `..`); 6 | const libPackagePath = path.resolve(root, `./lib/package.json`); 7 | 8 | // Update version 9 | const rootPackageJson = require(path.resolve(root, `./package.json`)); 10 | const libPackageJson = require(libPackagePath); 11 | [ 12 | 'name', 13 | 'version', 14 | 'description', 15 | 'keywords', 16 | 'author', 17 | 'license', 18 | 'repository', 19 | 'bugs', 20 | 'homepage', 21 | ].forEach((key) => (libPackageJson[key] = rootPackageJson[key])); 22 | fs.writeJsonSync(libPackagePath, libPackageJson, { spaces: 2 }); 23 | 24 | ngPackage 25 | .ngPackagr() 26 | .forProject(path.resolve(root, `./lib/ng-package.json`)) 27 | .withTsConfig(path.resolve(root, './lib/tsconfig.lib.json')) 28 | .build() 29 | .then(() => 30 | fs.copyFileSync( 31 | path.resolve(root, `./README.md`), 32 | path.resolve(root, `./publish/README.md`), 33 | ), 34 | ) 35 | .catch((error) => { 36 | console.error(error); 37 | process.exit(1); 38 | }); 39 | -------------------------------------------------------------------------------- /src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | template: ` 6 | 25 |

Angular2 百度UEditor组件,有关更多细节见README.md

26 | 27 | ` 28 | }) 29 | export class AppComponent {} 30 | -------------------------------------------------------------------------------- /src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | import { CommonModule } from '@angular/common'; 4 | import { FormsModule } from '@angular/forms'; 5 | import { RouterModule } from '@angular/router'; 6 | 7 | import { HighlightJsModule } from 'ngx-highlight-js'; 8 | import { UEditorModule } from 'ngx-ueditor'; 9 | import { ModalModule } from 'ngx-bootstrap/modal'; 10 | 11 | import { AppComponent } from './app.component'; 12 | import { DemoComponent } from './components/demo.component'; 13 | import { DevComponent } from './components/dev.component'; 14 | import { 15 | DemoModalComponent, 16 | DemoModalContentComponent, 17 | } from './components/modal.component'; 18 | 19 | @NgModule({ 20 | imports: [ 21 | BrowserModule, 22 | FormsModule, 23 | RouterModule.forRoot( 24 | [ 25 | { path: '', component: DemoComponent }, 26 | { path: 'dev', component: DevComponent }, 27 | { path: 'modal', component: DemoModalComponent }, 28 | ], 29 | { useHash: true, relativeLinkResolution: 'legacy' }, 30 | ), 31 | CommonModule, 32 | HighlightJsModule, 33 | ModalModule.forRoot(), 34 | 35 | UEditorModule.forRoot({ 36 | js: [ 37 | `./assets/ueditor/ueditor.config.js`, 38 | `./assets/ueditor/ueditor.all.min.js`, 39 | ], 40 | options: { 41 | zIndex: 5000, 42 | UEDITOR_HOME_URL: 43 | (location.href.indexOf('github') !== -1 ? '/ngx-ueditor' : '.') + 44 | '/assets/ueditor/', 45 | }, 46 | }), 47 | ], 48 | declarations: [ 49 | AppComponent, 50 | DemoComponent, 51 | DevComponent, 52 | DemoModalComponent, 53 | DemoModalContentComponent, 54 | ], 55 | entryComponents: [DemoModalContentComponent], 56 | bootstrap: [AppComponent], 57 | }) 58 | export class AppModule {} 59 | -------------------------------------------------------------------------------- /src/app/components/demo.component.html: -------------------------------------------------------------------------------- 1 |
2 |
完整示例
3 |
4 | 5 | 6 |
7 |
8 |
9 |
10 |
11 |
语言切换
12 |
13 | 14 | 15 |
16 |
常用API
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
36 |
事件监听
37 |
38 | 39 | 40 | focus: {{focus}} 41 |
42 |
43 |
44 |
45 |
配置项
46 |
47 |
48 |
49 | 55 |
56 |
57 | 58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
表单非空校验
70 |
71 | 72 | 73 |
74 | 75 |
76 |
77 |
78 |
79 | -------------------------------------------------------------------------------- /src/app/components/demo.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewChild, ElementRef } from '@angular/core'; 2 | import { UEditorComponent } from 'ngx-ueditor'; 3 | 4 | @Component({ 5 | selector: 'demo', 6 | templateUrl: './demo.component.html', 7 | }) 8 | export class DemoComponent { 9 | @ViewChild('full') 10 | full!: UEditorComponent; 11 | full_source = ''; 12 | 13 | constructor(private el: ElementRef) {} 14 | 15 | setLanguage(lang: 'zh-cn' | 'en') { 16 | this.full.setLanguage(lang); 17 | } 18 | 19 | getAllHtml() { 20 | alert(this.full.Instance.getAllHtml()); 21 | } 22 | 23 | getContent() { 24 | const arr = []; 25 | arr.push('使用editor.getContent()方法可以获得编辑器的内容'); 26 | arr.push('内容为:'); 27 | arr.push(this.full.Instance.getContent()); 28 | alert(arr.join('\n')); 29 | } 30 | 31 | getContentTxt() { 32 | const arr = []; 33 | arr.push('使用editor.getContentTxt()方法可以获得编辑器的纯文本内容'); 34 | arr.push('编辑器的纯文本内容为:'); 35 | arr.push(this.full.Instance.getContentTxt()); 36 | alert(arr.join('\n')); 37 | } 38 | 39 | setContent(isAppendTo: boolean) { 40 | const arr = []; 41 | arr.push(`使用editor.setContent('欢迎使用ueditor')方法可以设置编辑器的内容`); 42 | this.full.Instance.setContent('欢迎使用ueditor', isAppendTo); 43 | alert(arr.join('\n')); 44 | } 45 | 46 | getPlainTxt() { 47 | const arr = []; 48 | arr.push('使用editor.getPlainTxt()方法可以获得编辑器的带格式的纯文本内容'); 49 | arr.push('内容为:'); 50 | arr.push(this.full.Instance.getPlainTxt()); 51 | alert(arr.join('\n')); 52 | } 53 | 54 | hasContent() { 55 | const arr = []; 56 | arr.push('使用editor.hasContents()方法判断编辑器里是否有内容'); 57 | arr.push('判断结果为:'); 58 | arr.push(this.full.Instance.hasContents()); 59 | alert(arr.join('\n')); 60 | } 61 | 62 | insertHtml() { 63 | const value = prompt('插入html代码', ''); 64 | this.full.Instance.execCommand('insertHtml', value); 65 | } 66 | 67 | getText() { 68 | // 当你点击按钮时编辑区域已经失去了焦点,如果直接用getText将不会得到内容,所以要在选回来,然后取得内容 69 | const range = this.full.Instance.selection.getRange(); 70 | range.select(); 71 | const txt = this.full.Instance.selection.getText(); 72 | alert(txt); 73 | } 74 | 75 | focus!: boolean | string; 76 | addListenerFocus() { 77 | this.full.addListener('focus', () => { 78 | this.focus = `fire focus in ${new Date().getTime()}`; 79 | }); 80 | this.focus = '监听中,尝试在编辑中输入几个字!'; 81 | } 82 | removeListenerFocus() { 83 | this.full.removeListener('focus'); 84 | this.focus = '已移除监听'; 85 | } 86 | 87 | config_source!: string; 88 | config: any = { 89 | toolbars: [['FullScreen', 'Source', 'Undo', 'Redo', 'Bold']], 90 | autoClearinitialContent: true, 91 | wordCount: false, 92 | }; 93 | 94 | form_source!: string; 95 | 96 | custom_source!: string; 97 | custom: any = { 98 | toolbars: [['FullScreen', 'Source', 'Undo', 'Redo', 'Bold', 'button']], 99 | }; 100 | } 101 | -------------------------------------------------------------------------------- /src/app/components/dev.component.html: -------------------------------------------------------------------------------- 1 |
2 |
自定义按钮
3 |
4 |

示例只是针对当前UEditor实例,如果想所有实例都通用,可以尝试在 Module 中注册。

5 |
6 |
7 | 12 | 52 |
53 |
54 | 55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | -------------------------------------------------------------------------------- /src/app/components/dev.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, ViewEncapsulation, AfterViewInit, ViewChild, ElementRef } from '@angular/core'; 2 | import { UEditorComponent } from 'ngx-ueditor'; 3 | 4 | declare const UE: any; 5 | 6 | @Component({ 7 | selector: 'dev', 8 | templateUrl: './dev.component.html', 9 | }) 10 | export class DevComponent { 11 | constructor(private el: ElementRef) {} 12 | 13 | custom_source = `

Hello ${+new Date()}

`; 14 | custom: any = { 15 | toolbars: [['FullScreen', 'Source', 'Undo', 'Redo', 'Bold', 'button']], 16 | }; 17 | 18 | onPreReady(comp: UEditorComponent) { 19 | UE.registerUI( 20 | 'button', 21 | function (editor: any, uiName: any) { 22 | // 注册按钮执行时的command命令,使用命令默认就会带有回退操作 23 | editor.registerCommand(uiName, { 24 | execCommand: function () { 25 | alert('execCommand:' + uiName); 26 | }, 27 | }); 28 | // 创建一个button 29 | const btn = new UE.ui.Button({ 30 | // 按钮的名字 31 | name: uiName, 32 | // 提示 33 | title: uiName, 34 | // 添加额外样式,指定icon图标,这里默认使用一个重复的icon 35 | cssRules: 'background-position: -500px 0;', 36 | // 点击时执行的命令 37 | onclick: function () { 38 | // 这里可以不用执行命令,做你自己的操作也可 39 | editor.execCommand(uiName); 40 | }, 41 | }); 42 | // 当点到编辑内容上时,按钮要做的状态反射 43 | editor.addListener('selectionchange', function () { 44 | const state = editor.queryCommandState(uiName); 45 | if (state === -1) { 46 | btn.setDisabled(true); 47 | btn.setChecked(false); 48 | } else { 49 | btn.setDisabled(false); 50 | btn.setChecked(state); 51 | } 52 | }); 53 | // 因为你是添加button,所以需要返回这个button 54 | return btn; 55 | }, 56 | 5, 57 | comp.id, 58 | ); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/app/components/modal.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/app/components/modal.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal'; 3 | import { Subject } from 'rxjs'; 4 | 5 | @Component({ 6 | selector: 'demo-modal-content', 7 | template: ` 8 | 14 | 17 | 20 | `, 21 | }) 22 | export class DemoModalContentComponent { 23 | onClose = new Subject(); 24 | html = ``; 25 | constructor(public bsModalRef: BsModalRef) {} 26 | 27 | save() { 28 | this.onClose.next(this.html); 29 | this.bsModalRef.hide(); 30 | } 31 | } 32 | 33 | @Component({ 34 | selector: 'demo-modal', 35 | template: ` 36 | 37 |
38 |
39 |
40 |
41 |
42 | `, 43 | }) 44 | export class DemoModalComponent { 45 | html = ``; 46 | bsModalRef: BsModalRef | null = null; 47 | constructor(private modalService: BsModalService) {} 48 | 49 | openModalWithComponent() { 50 | this.bsModalRef = this.modalService.show(DemoModalContentComponent, { 51 | initialState: { html: this.html }, 52 | class: 'modal-lg', 53 | }); 54 | this.bsModalRef.content.onClose.subscribe((html: string) => (this.html = html)); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/.gitkeep -------------------------------------------------------------------------------- /src/assets/fork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/fork.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/anchor/anchor.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 13 | 14 | 15 |
16 | 17 |
18 | 19 | 39 | 40 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/attachment.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ueditor图片对话框 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 |
22 | 23 | 24 |
25 |
26 | 27 |
28 |
29 |
30 |
31 | 0% 32 | 33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
    45 |
  • 46 |
47 |
48 |
49 | 50 | 51 |
52 |
53 |
54 | 55 |
56 |
57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_default.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_exe.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_exe.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_jpg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_jpg.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_mp3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_mp3.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_pdf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_pdf.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_txt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_txt.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_xls.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/fileTypeImages/icon_xls.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/images/alignicon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/images/alignicon.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/images/alignicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/images/alignicon.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/images/bg.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/images/file-icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/images/file-icons.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/images/file-icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/images/file-icons.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/images/icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/images/icons.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/images/icons.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/images/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/images/image.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/images/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/images/progress.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/images/success.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/images/success.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/attachment/images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/attachment/images/success.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/background/background.css: -------------------------------------------------------------------------------- 1 | .wrapper{ width: 424px;margin: 10px auto; zoom:1;position: relative} 2 | .tabbody{height:225px;} 3 | .tabbody .panel { position: absolute;width:100%; height:100%;background: #fff; display: none;} 4 | .tabbody .focus { display: block;} 5 | 6 | body{font-size: 12px;color: #888;overflow: hidden;} 7 | input,label{vertical-align:middle} 8 | .clear{clear: both;} 9 | .pl{padding-left: 18px;padding-left: 23px\9;} 10 | 11 | #imageList {width: 420px;height: 215px;margin-top: 10px;overflow: hidden;overflow-y: auto;} 12 | #imageList div {float: left;width: 100px;height: 95px;margin: 5px 10px;} 13 | #imageList img {cursor: pointer;border: 2px solid white;} 14 | 15 | .bgarea{margin: 10px;padding: 5px;height: 84%;border: 1px solid #A8A297;} 16 | .content div{margin: 10px 0 10px 5px;} 17 | .content .iptradio{margin: 0px 5px 5px 0px;} 18 | .txt{width:280px;} 19 | 20 | .wrapcolor{height: 19px;} 21 | div.color{float: left;margin: 0;} 22 | #colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;margin: 0;float: left;} 23 | div.alignment,#custom{margin-left: 23px;margin-left: 28px\9;} 24 | #custom input{height: 15px;min-height: 15px;width:20px;} 25 | #repeatType{width:100px;} 26 | 27 | 28 | /* 图片管理样式 */ 29 | #imgManager { 30 | width: 100%; 31 | height: 225px; 32 | } 33 | #imgManager #imageList{ 34 | width: 100%; 35 | overflow-x: hidden; 36 | overflow-y: auto; 37 | } 38 | #imgManager ul { 39 | display: block; 40 | list-style: none; 41 | margin: 0; 42 | padding: 0; 43 | } 44 | #imgManager li { 45 | float: left; 46 | display: block; 47 | list-style: none; 48 | padding: 0; 49 | width: 113px; 50 | height: 113px; 51 | margin: 9px 0 0 19px; 52 | background-color: #eee; 53 | overflow: hidden; 54 | cursor: pointer; 55 | position: relative; 56 | } 57 | #imgManager li.clearFloat { 58 | float: none; 59 | clear: both; 60 | display: block; 61 | width:0; 62 | height:0; 63 | margin: 0; 64 | padding: 0; 65 | } 66 | #imgManager li img { 67 | cursor: pointer; 68 | } 69 | #imgManager li .icon { 70 | cursor: pointer; 71 | width: 113px; 72 | height: 113px; 73 | position: absolute; 74 | top: 0; 75 | left: 0; 76 | z-index: 2; 77 | border: 0; 78 | background-repeat: no-repeat; 79 | } 80 | #imgManager li .icon:hover { 81 | width: 107px; 82 | height: 107px; 83 | border: 3px solid #1094fa; 84 | } 85 | #imgManager li.selected .icon { 86 | background-image: url(images/success.png); 87 | background-position: 75px 75px; 88 | } 89 | #imgManager li.selected .icon:hover { 90 | width: 107px; 91 | height: 107px; 92 | border: 3px solid #1094fa; 93 | background-position: 72px 72px; 94 | } -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/background/background.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 |
11 | 12 | 13 |
14 |
15 |
16 |
17 | 18 |
19 |
20 | 21 | 22 |
23 |
24 |
25 | : 26 |
27 |
28 |
29 |
30 |
31 | 32 |
33 |
34 | : 41 |
42 |
43 | :x:px  y:px 44 |
45 |
46 |
47 | 48 |
49 |
50 |
51 |
52 |
53 |
54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/background/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/background/images/bg.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/background/images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/background/images/success.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/charts/chart.config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * 图表配置文件 3 | * */ 4 | 5 | 6 | //不同类型的配置 7 | var typeConfig = [ 8 | { 9 | chart: { 10 | type: 'line' 11 | }, 12 | plotOptions: { 13 | line: { 14 | dataLabels: { 15 | enabled: false 16 | }, 17 | enableMouseTracking: true 18 | } 19 | } 20 | }, { 21 | chart: { 22 | type: 'line' 23 | }, 24 | plotOptions: { 25 | line: { 26 | dataLabels: { 27 | enabled: true 28 | }, 29 | enableMouseTracking: false 30 | } 31 | } 32 | }, { 33 | chart: { 34 | type: 'area' 35 | } 36 | }, { 37 | chart: { 38 | type: 'bar' 39 | } 40 | }, { 41 | chart: { 42 | type: 'column' 43 | } 44 | }, { 45 | chart: { 46 | plotBackgroundColor: null, 47 | plotBorderWidth: null, 48 | plotShadow: false 49 | }, 50 | plotOptions: { 51 | pie: { 52 | allowPointSelect: true, 53 | cursor: 'pointer', 54 | dataLabels: { 55 | enabled: true, 56 | color: '#000000', 57 | connectorColor: '#000000', 58 | formatter: function() { 59 | return ''+ this.point.name +': '+ ( Math.round( this.point.percentage*100 ) / 100 ) +' %'; 60 | } 61 | } 62 | } 63 | } 64 | } 65 | ]; 66 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/charts/charts.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | width: 100%; 3 | height: 100%; 4 | margin: 0; 5 | padding: 0; 6 | overflow-x: hidden; 7 | } 8 | 9 | .main { 10 | width: 100%; 11 | overflow: hidden; 12 | } 13 | 14 | .table-view { 15 | height: 100%; 16 | float: left; 17 | margin: 20px; 18 | width: 40%; 19 | } 20 | 21 | .table-view .table-container { 22 | width: 100%; 23 | margin-bottom: 50px; 24 | overflow: scroll; 25 | } 26 | 27 | .table-view th { 28 | padding: 5px 10px; 29 | background-color: #F7F7F7; 30 | } 31 | 32 | .table-view td { 33 | width: 50px; 34 | text-align: center; 35 | padding:0; 36 | } 37 | 38 | .table-container input { 39 | width: 40px; 40 | padding: 5px; 41 | border: none; 42 | outline: none; 43 | } 44 | 45 | .table-view caption { 46 | font-size: 18px; 47 | text-align: left; 48 | } 49 | 50 | .charts-view { 51 | /*margin-left: 49%!important;*/ 52 | width: 50%; 53 | margin-left: 49%; 54 | height: 400px; 55 | } 56 | 57 | .charts-container { 58 | border-left: 1px solid #c3c3c3; 59 | } 60 | 61 | .charts-format fieldset { 62 | padding-left: 20px; 63 | margin-bottom: 50px; 64 | } 65 | 66 | .charts-format legend { 67 | padding-left: 10px; 68 | padding-right: 10px; 69 | } 70 | 71 | .format-item-container { 72 | padding: 20px; 73 | } 74 | 75 | .format-item-container label { 76 | display: block; 77 | margin: 10px 0; 78 | } 79 | 80 | .charts-format .data-item { 81 | border: 1px solid black; 82 | outline: none; 83 | padding: 2px 3px; 84 | } 85 | 86 | /* 图表类型 */ 87 | 88 | .charts-type { 89 | margin-top: 50px; 90 | height: 300px; 91 | } 92 | 93 | .scroll-view { 94 | border: 1px solid #c3c3c3; 95 | border-left: none; 96 | border-right: none; 97 | overflow: hidden; 98 | } 99 | 100 | .scroll-container { 101 | margin: 20px; 102 | width: 100%; 103 | overflow: hidden; 104 | } 105 | 106 | .scroll-bed { 107 | width: 10000px; 108 | _margin-top: 20px; 109 | -webkit-transition: margin-left .5s ease; 110 | -moz-transition: margin-left .5s ease; 111 | transition: margin-left .5s ease; 112 | } 113 | 114 | .view-box { 115 | display: inline-block; 116 | *display: inline; 117 | *zoom: 1; 118 | margin-right: 20px; 119 | border: 2px solid white; 120 | line-height: 0; 121 | overflow: hidden; 122 | cursor: pointer; 123 | } 124 | 125 | .view-box img { 126 | border: 1px solid #cecece; 127 | } 128 | 129 | .view-box.selected { 130 | border-color: #7274A7; 131 | } 132 | 133 | .button-container { 134 | margin-bottom: 20px; 135 | text-align: center; 136 | } 137 | 138 | .button-container a { 139 | display: inline-block; 140 | width: 100px; 141 | height: 25px; 142 | line-height: 25px; 143 | border: 1px solid #c2ccd1; 144 | margin-right: 30px; 145 | text-decoration: none; 146 | color: black; 147 | -webkit-border-radius: 2px; 148 | -moz-border-radius: 2px; 149 | border-radius: 2px; 150 | } 151 | 152 | .button-container a:HOVER { 153 | background: #fcfcfc; 154 | } 155 | 156 | .button-container a:ACTIVE { 157 | border-top-color: #c2ccd1; 158 | box-shadow:inset 0 5px 4px -4px rgba(49, 49, 64, 0.1); 159 | } 160 | 161 | .edui-charts-not-data { 162 | height: 100px; 163 | line-height: 100px; 164 | text-align: center; 165 | } -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/charts/images/charts0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/charts/images/charts0.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/charts/images/charts1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/charts/images/charts1.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/charts/images/charts2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/charts/images/charts2.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/charts/images/charts3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/charts/images/charts3.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/charts/images/charts4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/charts/images/charts4.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/charts/images/charts5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/charts/images/charts5.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/emotion/emotion.css: -------------------------------------------------------------------------------- 1 | .jd img{ 2 | background:transparent url(images/jxface2.gif?v=1.1) no-repeat scroll left top; 3 | cursor:pointer;width:35px;height:35px;display:block; 4 | } 5 | .pp img{ 6 | background:transparent url(images/fface.gif?v=1.1) no-repeat scroll left top; 7 | cursor:pointer;width:25px;height:25px;display:block; 8 | } 9 | .ldw img{ 10 | background:transparent url(images/wface.gif?v=1.1) no-repeat scroll left top; 11 | cursor:pointer;width:35px;height:35px;display:block; 12 | } 13 | .tsj img{ 14 | background:transparent url(images/tface.gif?v=1.1) no-repeat scroll left top; 15 | cursor:pointer;width:35px;height:35px;display:block; 16 | } 17 | .cat img{ 18 | background:transparent url(images/cface.gif?v=1.1) no-repeat scroll left top; 19 | cursor:pointer;width:35px;height:35px;display:block; 20 | } 21 | .bb img{ 22 | background:transparent url(images/bface.gif?v=1.1) no-repeat scroll left top; 23 | cursor:pointer;width:35px;height:35px;display:block; 24 | } 25 | .youa img{ 26 | background:transparent url(images/yface.gif?v=1.1) no-repeat scroll left top; 27 | cursor:pointer;width:35px;height:35px;display:block; 28 | } 29 | 30 | .smileytable td {height: 37px;} 31 | #tabPanel{margin-left:5px;overflow: hidden;} 32 | #tabContent {float:left;background:#FFFFFF;} 33 | #tabContent div{display: none;width:480px;overflow:hidden;} 34 | #tabIconReview.show{left:17px;display:block;} 35 | .menuFocus{background:#ACCD3C;} 36 | .menuDefault{background:#FFFFFF;} 37 | #tabIconReview{position:absolute;left:406px;left:398px \9;top:41px;z-index:65533;width:90px;height:76px;} 38 | img.review{width:90px;height:76px;border:2px solid #9cb945;background:#FFFFFF;background-position:center;background-repeat:no-repeat;} 39 | 40 | .wrapper .tabbody{position:relative;float:left;clear:both;padding:10px;width: 95%;} 41 | .tabbody table{width: 100%;} 42 | .tabbody td{border:1px solid #BAC498;} 43 | .tabbody td span{display: block;zoom:1;padding:0 4px;} -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/emotion/emotion.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | 33 |
34 | 35 | 53 | 54 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/emotion/images/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/emotion/images/0.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/emotion/images/bface.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/emotion/images/bface.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/emotion/images/cface.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/emotion/images/cface.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/emotion/images/fface.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/emotion/images/fface.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/emotion/images/jxface2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/emotion/images/jxface2.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/emotion/images/neweditor-tab-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/emotion/images/neweditor-tab-bg.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/emotion/images/tface.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/emotion/images/tface.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/emotion/images/wface.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/emotion/images/wface.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/emotion/images/yface.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/emotion/images/yface.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/gmap/gmap.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |
26 |
27 | 88 | 89 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/help/help.css: -------------------------------------------------------------------------------- 1 | .wrapper{width: 370px;margin: 10px auto;zoom: 1;} 2 | .tabbody{height: 360px;} 3 | .tabbody .panel{width:100%;height: 360px;position: absolute;background: #fff;} 4 | .tabbody .panel h1{font-size:26px;margin: 5px 0 0 5px;} 5 | .tabbody .panel p{font-size:12px;margin: 5px 0 0 5px;} 6 | .tabbody table{width:90%;line-height: 20px;margin: 5px 0 0 5px;;} 7 | .tabbody table thead{font-weight: bold;line-height: 25px;} -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/help/help.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 帮助 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 | 14 | 15 |
16 |
17 |
18 |

UEditor

19 |

20 |

21 |
22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 |
ctrl+b
ctrl+c
ctrl+x
ctrl+v
ctrl+y
ctrl+z
ctrl+i
ctrl+u
ctrl+a
shift+enter
alt+z
77 |
78 |
79 |
80 | 81 | 82 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/help/help.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created with JetBrains PhpStorm. 3 | * User: xuheng 4 | * Date: 12-9-26 5 | * Time: 下午1:06 6 | * To change this template use File | Settings | File Templates. 7 | */ 8 | /** 9 | * tab点击处理事件 10 | * @param tabHeads 11 | * @param tabBodys 12 | * @param obj 13 | */ 14 | function clickHandler( tabHeads,tabBodys,obj ) { 15 | //head样式更改 16 | for ( var k = 0, len = tabHeads.length; k < len; k++ ) { 17 | tabHeads[k].className = ""; 18 | } 19 | obj.className = "focus"; 20 | //body显隐 21 | var tabSrc = obj.getAttribute( "tabSrc" ); 22 | for ( var j = 0, length = tabBodys.length; j < length; j++ ) { 23 | var body = tabBodys[j], 24 | id = body.getAttribute( "id" ); 25 | body.onclick = function(){ 26 | this.style.zoom = 1; 27 | }; 28 | if ( id != tabSrc ) { 29 | body.style.zIndex = 1; 30 | } else { 31 | body.style.zIndex = 200; 32 | } 33 | } 34 | 35 | } 36 | 37 | /** 38 | * TAB切换 39 | * @param tabParentId tab的父节点ID或者对象本身 40 | */ 41 | function switchTab( tabParentId ) { 42 | var tabElements = $G( tabParentId ).children, 43 | tabHeads = tabElements[0].children, 44 | tabBodys = tabElements[1].children; 45 | 46 | for ( var i = 0, length = tabHeads.length; i < length; i++ ) { 47 | var head = tabHeads[i]; 48 | if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head ); 49 | head.onclick = function () { 50 | clickHandler(tabHeads,tabBodys,this); 51 | } 52 | } 53 | } 54 | switchTab("helptab"); 55 | 56 | document.getElementById('version').innerHTML = parent.UE.version; -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/image/images/alignicon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/image/images/alignicon.jpg -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/image/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/image/images/bg.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/image/images/icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/image/images/icons.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/image/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/image/images/icons.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/image/images/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/image/images/image.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/image/images/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/image/images/progress.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/image/images/success.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/image/images/success.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/image/images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/image/images/success.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/internal.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var parent = window.parent; 3 | //dialog对象 4 | dialog = parent.$EDITORUI[window.frameElement.id.replace( /_iframe$/, '' )]; 5 | //当前打开dialog的编辑器实例 6 | editor = dialog.editor; 7 | 8 | UE = parent.UE; 9 | 10 | domUtils = UE.dom.domUtils; 11 | 12 | utils = UE.utils; 13 | 14 | browser = UE.browser; 15 | 16 | ajax = UE.ajax; 17 | 18 | $G = function ( id ) { 19 | return document.getElementById( id ) 20 | }; 21 | //focus元素 22 | $focus = function ( node ) { 23 | setTimeout( function () { 24 | if ( browser.ie ) { 25 | var r = node.createTextRange(); 26 | r.collapse( false ); 27 | r.select(); 28 | } else { 29 | node.focus() 30 | } 31 | }, 0 ) 32 | }; 33 | utils.loadFile(document,{ 34 | href:editor.options.themePath + editor.options.theme + "/dialogbase.css?cache="+Math.random(), 35 | tag:"link", 36 | type:"text/css", 37 | rel:"stylesheet" 38 | }); 39 | lang = editor.getLang(dialog.className.split( "-" )[2]); 40 | if(lang){ 41 | domUtils.on(window,'load',function () { 42 | 43 | var langImgPath = editor.options.langPath + editor.options.lang + "/images/"; 44 | //针对静态资源 45 | for ( var i in lang["static"] ) { 46 | var dom = $G( i ); 47 | if(!dom) continue; 48 | var tagName = dom.tagName, 49 | content = lang["static"][i]; 50 | if(content.src){ 51 | //clone 52 | content = utils.extend({},content,false); 53 | content.src = langImgPath + content.src; 54 | } 55 | if(content.style){ 56 | content = utils.extend({},content,false); 57 | content.style = content.style.replace(/url\s*\(/g,"url(" + langImgPath) 58 | } 59 | switch ( tagName.toLowerCase() ) { 60 | case "var": 61 | dom.parentNode.replaceChild( document.createTextNode( content ), dom ); 62 | break; 63 | case "select": 64 | var ops = dom.options; 65 | for ( var j = 0, oj; oj = ops[j]; ) { 66 | oj.innerHTML = content.options[j++]; 67 | } 68 | for ( var p in content ) { 69 | p != "options" && dom.setAttribute( p, content[p] ); 70 | } 71 | break; 72 | default : 73 | domUtils.setAttributes( dom, content); 74 | } 75 | } 76 | } ); 77 | } 78 | 79 | 80 | })(); 81 | 82 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/music/music.css: -------------------------------------------------------------------------------- 1 | .wrapper{margin: 5px 10px;} 2 | 3 | .searchBar{height:30px;padding:7px 0 3px;text-align:center;} 4 | .searchBtn{font-size:13px;height:24px;} 5 | 6 | .resultBar{width:460px;margin:5px auto;border: 1px solid #CCC;border-radius: 5px;box-shadow: 2px 2px 5px #D3D6DA;overflow: hidden;} 7 | 8 | .listPanel{overflow: hidden;} 9 | .panelon{display:block;} 10 | .paneloff{display:none} 11 | 12 | .page{width:220px;margin:20px auto;overflow: hidden;} 13 | .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} 14 | .pageoff{float:right;width:24px;line-height:24px;height:24px;cursor:pointer;background-color: #fff; 15 | border: 1px solid #E7ECF0;color: #2D64B3;margin-right: 5px;text-decoration: none;text-align:center;} 16 | 17 | .m-box{width:460px;} 18 | .m-m{float: left;line-height: 20px;height: 20px;} 19 | .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;} 20 | .m-l{float:left;width:40px; } 21 | .m-t{float:left;width:140px;} 22 | .m-s{float:left;width:110px;} 23 | .m-z{float:left;width:100px;} 24 | .m-try-t{float: left;width: 60px;;} 25 | 26 | .m-try{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/try_music.gif') no-repeat ;} 27 | .m-trying{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/stop_music.gif') no-repeat ;} 28 | 29 | .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} 30 | .empty{width:300px;height:40px;padding:2px;margin:50px auto;line-height:40px; color:#006699;text-align:center;} -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/music/music.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 插入音乐 6 | 7 | 8 | 9 | 10 |
11 | 15 |
16 | 17 |
18 |
19 |
20 |
21 | 22 | 31 | 32 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/preview/preview.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 |
29 | 30 | 40 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/addimg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/addimg.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/brush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/brush.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/delimg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/delimg.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/delimgH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/delimgH.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/empty.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/emptyH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/emptyH.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/eraser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/eraser.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/redo.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/redoH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/redoH.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/scale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/scale.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/scaleH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/scaleH.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/size.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/undo.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/images/undoH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/scrawl/images/undoH.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/scrawl.css: -------------------------------------------------------------------------------- 1 | /*common 2 | */ 3 | body{margin: 0;} 4 | table{width:100%;} 5 | table td{padding:2px 4px;vertical-align: middle;} 6 | a{text-decoration: none;} 7 | em{font-style: normal;} 8 | .border_style1{border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;} 9 | /*module 10 | */ 11 | .main{margin: 8px;overflow: hidden;} 12 | 13 | .hot{float:left;height:335px;} 14 | .drawBoard{position: relative; cursor: crosshair;} 15 | .brushBorad{position: absolute;left:0;top:0;z-index: 998;} 16 | .picBoard{border: none;text-align: center;line-height: 300px;cursor: default;} 17 | .operateBar{margin-top:10px;font-size:12px;text-align: center;} 18 | .operateBar span{margin-left: 10px;} 19 | 20 | .drawToolbar{float:right;width:110px;height:300px;overflow: hidden;} 21 | .colorBar{margin-top:10px;font-size: 12px;text-align: center;} 22 | .colorBar a{display:block;width: 10px;height: 10px;border:1px solid #1006F1;border-radius: 3px; box-shadow:2px 2px 5px #d3d6da;opacity: 0.3} 23 | .sectionBar{margin-top:15px;font-size: 12px;text-align: center;} 24 | .sectionBar a{display:inline-block;width:10px;height:12px;color: #888;text-indent: -999px;opacity: 0.3} 25 | .size1{background: url('images/size.png') 1px center no-repeat ;} 26 | .size2{background: url('images/size.png') -10px center no-repeat;} 27 | .size3{background: url('images/size.png') -22px center no-repeat;} 28 | .size4{background: url('images/size.png') -35px center no-repeat;} 29 | 30 | .addImgH{position: relative;} 31 | .addImgH_form{position: absolute;left: 18px;top: -1px;width: 75px;height: 21px;opacity: 0;cursor: pointer;} 32 | .addImgH_form input{width: 100%;} 33 | /*scrawl遮罩层 34 | */ 35 | .maskLayerNull{display: none;} 36 | .maskLayer{position: absolute;top:0;left:0;width: 100%; height: 100%;opacity: 0.7; 37 | background-color: #fff;text-align:center;font-weight:bold;line-height:300px;z-index: 1000;} 38 | /*btn state 39 | */ 40 | .previousStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undoH.png');cursor: pointer;} 41 | .previousStepH .text{color:#888;cursor:pointer;} 42 | .previousStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undo.png');cursor:default;} 43 | .previousStep .text{color:#ccc;cursor:default;} 44 | 45 | .nextStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redoH.png');cursor: pointer;} 46 | .nextStepH .text{color:#888;cursor:pointer;} 47 | .nextStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redo.png');cursor:default;} 48 | .nextStep .text{color:#ccc;cursor:default;} 49 | 50 | .clearBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/emptyH.png');cursor: pointer;} 51 | .clearBoardH .text{color:#888;cursor:pointer;} 52 | .clearBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/empty.png');cursor:default;} 53 | .clearBoard .text{color:#ccc;cursor:default;} 54 | 55 | .scaleBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scaleH.png');cursor: pointer;} 56 | .scaleBoardH .text{color:#888;cursor:pointer;} 57 | .scaleBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scale.png');cursor:default;} 58 | .scaleBoard .text{color:#ccc;cursor:default;} 59 | 60 | .removeImgH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimgH.png');cursor: pointer;} 61 | .removeImgH .text{color:#888;cursor:pointer;} 62 | .removeImg .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimg.png');cursor:default;} 63 | .removeImg .text{color:#ccc;cursor:default;} 64 | 65 | .addImgH .icon{vertical-align:top;display: inline-block;width:16px;height:16px;background-image: url('images/addimg.png')} 66 | .addImgH .text{color:#888;cursor:pointer;} 67 | /*icon 68 | */ 69 | .brushIcon{display: inline-block;width:16px;height:16px;background-image: url('images/brush.png')} 70 | .eraserIcon{display: inline-block;width:16px;height:16px;background-image: url('images/eraser.png')} 71 | 72 | 73 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/scrawl/scrawl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 |
14 | 15 |
16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 |
36 |
37 |
38 |
39 | 40 | 1 41 | 3 42 | 5 43 | 7 44 |
45 |
46 | 47 | 1 48 | 3 49 | 5 50 | 7 51 |
52 |
53 |
54 | 55 | 56 |
57 | 59 |
60 | 61 |
62 |
63 |
64 | 65 | 66 | 67 | 68 |
69 |
70 |
71 |
72 | 73 | 74 | 94 | 95 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/snapscreen/snapscreen.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 47 | 48 | 49 |
50 |

51 |
52 |
53 |
54 |
55 |
56 |
57 | 58 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/spechars/spechars.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 14 | 15 | 16 |
17 |
18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/spechars/spechars.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created with JetBrains PhpStorm. 3 | * User: xuheng 4 | * Date: 12-9-26 5 | * Time: 下午1:09 6 | * To change this template use File | Settings | File Templates. 7 | */ 8 | var charsContent = [ 9 | { name:"tsfh", title:lang.tsfh, content:toArray("、,。,·,ˉ,ˇ,¨,〃,々,—,~,‖,…,‘,’,“,”,〔,〕,〈,〉,《,》,「,」,『,』,〖,〗,【,】,±,×,÷,∶,∧,∨,∑,∏,∪,∩,∈,∷,√,⊥,∥,∠,⌒,⊙,∫,∮,≡,≌,≈,∽,∝,≠,≮,≯,≤,≥,∞,∵,∴,♂,♀,°,′,″,℃,$,¤,¢,£,‰,§,№,☆,★,○,●,◎,◇,◆,□,■,△,▲,※,→,←,↑,↓,〓,〡,〢,〣,〤,〥,〦,〧,〨,〩,㊣,㎎,㎏,㎜,㎝,㎞,㎡,㏄,㏎,㏑,㏒,㏕,︰,¬,¦,℡,ˊ,ˋ,˙,–,―,‥,‵,℅,℉,↖,↗,↘,↙,∕,∟,∣,≒,≦,≧,⊿,═,║,╒,╓,╔,╕,╖,╗,╘,╙,╚,╛,╜,╝,╞,╟,╠,╡,╢,╣,╤,╥,╦,╧,╨,╩,╪,╫,╬,╭,╮,╯,╰,╱,╲,╳,▁,▂,▃,▄,▅,▆,▇,�,█,▉,▊,▋,▌,▍,▎,▏,▓,▔,▕,▼,▽,◢,◣,◤,◥,☉,⊕,〒,〝,〞")}, 10 | { name:"lmsz", title:lang.lmsz, content:toArray("ⅰ,ⅱ,ⅲ,ⅳ,ⅴ,ⅵ,ⅶ,ⅷ,ⅸ,ⅹ,Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ,Ⅶ,Ⅷ,Ⅸ,Ⅹ,Ⅺ,Ⅻ")}, 11 | { name:"szfh", title:lang.szfh, content:toArray("⒈,⒉,⒊,⒋,⒌,⒍,⒎,⒏,⒐,⒑,⒒,⒓,⒔,⒕,⒖,⒗,⒘,⒙,⒚,⒛,⑴,⑵,⑶,⑷,⑸,⑹,⑺,⑻,⑼,⑽,⑾,⑿,⒀,⒁,⒂,⒃,⒄,⒅,⒆,⒇,①,②,③,④,⑤,⑥,⑦,⑧,⑨,⑩,㈠,㈡,㈢,㈣,㈤,㈥,㈦,㈧,㈨,㈩")}, 12 | { name:"rwfh", title:lang.rwfh, content:toArray("ぁ,あ,ぃ,い,ぅ,う,ぇ,え,ぉ,お,か,が,き,ぎ,く,ぐ,け,げ,こ,ご,さ,ざ,し,じ,す,ず,せ,ぜ,そ,ぞ,た,だ,ち,ぢ,っ,つ,づ,て,で,と,ど,な,に,ぬ,ね,の,は,ば,ぱ,ひ,び,ぴ,ふ,ぶ,ぷ,へ,べ,ぺ,ほ,ぼ,ぽ,ま,み,む,め,も,ゃ,や,ゅ,ゆ,ょ,よ,ら,り,る,れ,ろ,ゎ,わ,ゐ,ゑ,を,ん,ァ,ア,ィ,イ,ゥ,ウ,ェ,エ,ォ,オ,カ,ガ,キ,ギ,ク,グ,ケ,ゲ,コ,ゴ,サ,ザ,シ,ジ,ス,ズ,セ,ゼ,ソ,ゾ,タ,ダ,チ,ヂ,ッ,ツ,ヅ,テ,デ,ト,ド,ナ,ニ,ヌ,ネ,ノ,ハ,バ,パ,ヒ,ビ,ピ,フ,ブ,プ,ヘ,ベ,ペ,ホ,ボ,ポ,マ,ミ,ム,メ,モ,ャ,ヤ,ュ,ユ,ョ,ヨ,ラ,リ,ル,レ,ロ,ヮ,ワ,ヰ,ヱ,ヲ,ン,ヴ,ヵ,ヶ")}, 13 | { name:"xlzm", title:lang.xlzm, content:toArray("Α,Β,Γ,Δ,Ε,Ζ,Η,Θ,Ι,Κ,Λ,Μ,Ν,Ξ,Ο,Π,Ρ,Σ,Τ,Υ,Φ,Χ,Ψ,Ω,α,β,γ,δ,ε,ζ,η,θ,ι,κ,λ,μ,ν,ξ,ο,π,ρ,σ,τ,υ,φ,χ,ψ,ω")}, 14 | { name:"ewzm", title:lang.ewzm, content:toArray("А,Б,В,Г,Д,Е,Ё,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я,а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я")}, 15 | { name:"pyzm", title:lang.pyzm, content:toArray("ā,á,ǎ,à,ē,é,ě,è,ī,í,ǐ,ì,ō,ó,ǒ,ò,ū,ú,ǔ,ù,ǖ,ǘ,ǚ,ǜ,ü")}, 16 | { 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,")}, 17 | { name:"zyzf", title:lang.zyzf, content:toArray("ㄅ,ㄆ,ㄇ,ㄈ,ㄉ,ㄊ,ㄋ,ㄌ,ㄍ,ㄎ,ㄏ,ㄐ,ㄑ,ㄒ,ㄓ,ㄔ,ㄕ,ㄖ,ㄗ,ㄘ,ㄙ,ㄚ,ㄛ,ㄜ,ㄝ,ㄞ,ㄟ,ㄠ,ㄡ,ㄢ,ㄣ,ㄤ,ㄥ,ㄦ,ㄧ,ㄨ")} 18 | ]; 19 | (function createTab(content) { 20 | for (var i = 0, ci; ci = content[i++];) { 21 | var span = document.createElement("span"); 22 | span.setAttribute("tabSrc", ci.name); 23 | span.innerHTML = ci.title; 24 | if (i == 1)span.className = "focus"; 25 | domUtils.on(span, "click", function () { 26 | var tmps = $G("tabHeads").children; 27 | for (var k = 0, sk; sk = tmps[k++];) { 28 | sk.className = ""; 29 | } 30 | tmps = $G("tabBodys").children; 31 | for (var k = 0, sk; sk = tmps[k++];) { 32 | sk.style.display = "none"; 33 | } 34 | this.className = "focus"; 35 | $G(this.getAttribute("tabSrc")).style.display = ""; 36 | }); 37 | $G("tabHeads").appendChild(span); 38 | domUtils.insertAfter(span, document.createTextNode("\n")); 39 | var div = document.createElement("div"); 40 | div.id = ci.name; 41 | div.style.display = (i == 1) ? "" : "none"; 42 | var cons = ci.content; 43 | for (var j = 0, con; con = cons[j++];) { 44 | var charSpan = document.createElement("span"); 45 | charSpan.innerHTML = con; 46 | domUtils.on(charSpan, "click", function () { 47 | editor.execCommand("insertHTML", this.innerHTML); 48 | dialog.close(); 49 | }); 50 | div.appendChild(charSpan); 51 | } 52 | $G("tabBodys").appendChild(div); 53 | } 54 | })(charsContent); 55 | function toArray(str) { 56 | return str.split(","); 57 | } 58 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/table/dragicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/table/dragicon.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/table/edittable.css: -------------------------------------------------------------------------------- 1 | body{ 2 | overflow: hidden; 3 | width: 540px; 4 | } 5 | .wrapper { 6 | margin: 10px auto 0; 7 | font-size: 12px; 8 | overflow: hidden; 9 | width: 520px; 10 | height: 315px; 11 | } 12 | 13 | .clear { 14 | clear: both; 15 | } 16 | 17 | .wrapper .left { 18 | float: left; 19 | margin-left: 10px;; 20 | } 21 | 22 | .wrapper .right { 23 | float: right; 24 | border-left: 2px dotted #EDEDED; 25 | padding-left: 15px; 26 | } 27 | 28 | .section { 29 | margin-bottom: 15px; 30 | width: 240px; 31 | overflow: hidden; 32 | } 33 | 34 | .section h3 { 35 | font-weight: bold; 36 | padding: 5px 0; 37 | margin-bottom: 10px; 38 | border-bottom: 1px solid #EDEDED; 39 | font-size: 12px; 40 | } 41 | 42 | .section ul { 43 | list-style: none; 44 | overflow: hidden; 45 | clear: both; 46 | 47 | } 48 | 49 | .section li { 50 | float: left; 51 | width: 120px;; 52 | } 53 | 54 | .section .tone { 55 | width: 80px;; 56 | } 57 | 58 | .section .preview { 59 | width: 220px; 60 | } 61 | 62 | .section .preview table { 63 | text-align: center; 64 | vertical-align: middle; 65 | color: #666; 66 | } 67 | 68 | .section .preview caption { 69 | font-weight: bold; 70 | } 71 | 72 | .section .preview td { 73 | border-width: 1px; 74 | border-style: solid; 75 | height: 22px; 76 | } 77 | 78 | .section .preview th { 79 | border-style: solid; 80 | border-color: #DDD; 81 | border-width: 2px 1px 1px 1px; 82 | height: 22px; 83 | background-color: #F7F7F7; 84 | } -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/table/edittable.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 |
11 |
12 |

13 |
    14 |
  • 15 | 16 |
  • 17 |
  • 18 | 19 |
  • 20 |
21 |
    22 |
  • 23 | 24 |
  • 25 |
  • 26 | 27 |
  • 28 |
29 |
30 |
31 |
32 |

33 |
    34 |
  • 35 | 36 |
  • 37 |
  • 38 | 39 |
  • 40 |
41 |
42 |
43 |
44 |

45 |
    46 |
  • 47 | 48 | 49 |
  • 50 |
51 |
52 |
53 |
54 |
55 |
56 |

57 |
58 |
59 |
60 |
61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/table/edittd.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 16 | 17 | 18 |
19 | 20 | 21 |
22 | 60 | 61 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/table/edittip.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 表格删除提示 5 | 6 | 17 | 18 | 19 |
20 |
21 | 22 |
23 |
24 | 25 |
26 |
27 | 32 | 33 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/template/images/bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/template/images/bg.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/template/images/pre0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/template/images/pre0.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/template/images/pre1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/template/images/pre1.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/template/images/pre2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/template/images/pre2.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/template/images/pre3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/template/images/pre3.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/template/images/pre4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/template/images/pre4.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/template/template.css: -------------------------------------------------------------------------------- 1 | .wrap{ padding: 5px;font-size: 14px;} 2 | .left{width:425px;float: left;} 3 | .right{width:160px;border: 1px solid #ccc;float: right;padding: 5px;margin-right: 5px;} 4 | .right .pre{height: 332px;overflow-y: auto;} 5 | .right .preitem{border: white 1px solid;margin: 5px 0;padding: 2px 0;} 6 | .right .preitem:hover{background-color: lemonChiffon;cursor: pointer;border: #ccc 1px solid;} 7 | .right .preitem img{display: block;margin: 0 auto;width:100px;} 8 | .clear{clear: both;} 9 | .top{height:26px;line-height: 26px;padding: 5px;} 10 | .bottom{height:320px;width:100%;margin: 0 auto;} 11 | .transparent{ background: url("images/bg.gif") repeat;} 12 | .bottom table tr td{border:1px dashed #ccc;} 13 | #colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;} 14 | .border_style1{padding:2px;border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;} 15 | p{margin: 5px 0} 16 | table{clear:both;margin-bottom:10px;border-collapse:collapse;word-break:break-all;} 17 | li{clear:both} 18 | ol{padding-left:40px; } -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/template/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 |
13 | 14 |
15 |
16 |
17 |
18 | 19 |
20 |
21 |
22 |
23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/template/template.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created with JetBrains PhpStorm. 3 | * User: xuheng 4 | * Date: 12-8-8 5 | * Time: 下午2:09 6 | * To change this template use File | Settings | File Templates. 7 | */ 8 | (function () { 9 | var me = editor, 10 | preview = $G( "preview" ), 11 | preitem = $G( "preitem" ), 12 | tmps = templates, 13 | currentTmp; 14 | var initPre = function () { 15 | var str = ""; 16 | for ( var i = 0, tmp; tmp = tmps[i++]; ) { 17 | str += '
'; 18 | } 19 | preitem.innerHTML = str; 20 | }; 21 | var pre = function ( n ) { 22 | var tmp = tmps[n - 1]; 23 | currentTmp = tmp; 24 | clearItem(); 25 | domUtils.setStyles( preitem.childNodes[n - 1], { 26 | "background-color":"lemonChiffon", 27 | "border":"#ccc 1px solid" 28 | } ); 29 | preview.innerHTML = tmp.preHtml ? tmp.preHtml : ""; 30 | }; 31 | var clearItem = function () { 32 | var items = preitem.children; 33 | for ( var i = 0, item; item = items[i++]; ) { 34 | domUtils.setStyles( item, { 35 | "background-color":"", 36 | "border":"white 1px solid" 37 | } ); 38 | } 39 | }; 40 | dialog.onok = function () { 41 | if ( !$G( "issave" ).checked ){ 42 | me.execCommand( "cleardoc" ); 43 | } 44 | var obj = { 45 | html:currentTmp && currentTmp.html 46 | }; 47 | me.execCommand( "template", obj ); 48 | }; 49 | initPre(); 50 | window.pre = pre; 51 | pre(2) 52 | 53 | })(); -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/bg.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/center_focus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/center_focus.jpg -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/file-icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/file-icons.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/file-icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/file-icons.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/icons.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/icons.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/image.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/left_focus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/left_focus.jpg -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/none_focus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/none_focus.jpg -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/progress.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/right_focus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/right_focus.jpg -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/success.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/success.gif -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/video/images/success.png -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/video/video.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 |
14 | 15 | 16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | 24 | 25 | 26 | 27 |
28 |
29 |
30 | 31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | 0% 41 | 42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
    54 |
  • 55 |
56 |
57 |
58 |
59 |
60 | 61 | 62 | 63 | 64 |
65 |
66 |
67 | 68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/webapp/webapp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | 14 |
15 |
16 |
17 | 52 | 53 | -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/wordimage/fClipboard_ueditor.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/wordimage/fClipboard_ueditor.swf -------------------------------------------------------------------------------- /src/assets/ueditor/dialogs/wordimage/imageUploader.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/dialogs/wordimage/imageUploader.swf -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/addimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/addimage.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/alldeletebtnhoverskin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/alldeletebtnhoverskin.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/alldeletebtnupskin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/alldeletebtnupskin.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/background.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/button.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/copy.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/deletedisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/deletedisable.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/deleteenable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/deleteenable.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/listbackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/listbackground.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/localimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/localimage.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/music.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/rotateleftdisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/rotateleftdisable.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/rotateleftenable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/rotateleftenable.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/rotaterightdisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/rotaterightdisable.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/rotaterightenable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/rotaterightenable.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/en/images/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/en/images/upload.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/zh-cn/images/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/zh-cn/images/copy.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/zh-cn/images/localimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/zh-cn/images/localimage.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/zh-cn/images/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/zh-cn/images/music.png -------------------------------------------------------------------------------- /src/assets/ueditor/lang/zh-cn/images/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/lang/zh-cn/images/upload.png -------------------------------------------------------------------------------- /src/assets/ueditor/net/App_Code/Config.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using Newtonsoft.Json.Linq; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Dynamic; 6 | using System.IO; 7 | using System.Linq; 8 | using System.Web; 9 | 10 | /// 11 | /// Config 的摘要说明 12 | /// 13 | public static class Config 14 | { 15 | private static bool noCache = true; 16 | private static JObject BuildItems() 17 | { 18 | var json = File.ReadAllText(HttpContext.Current.Server.MapPath("config.json")); 19 | return JObject.Parse(json); 20 | } 21 | 22 | public static JObject Items 23 | { 24 | get 25 | { 26 | if (noCache || _Items == null) 27 | { 28 | _Items = BuildItems(); 29 | } 30 | return _Items; 31 | } 32 | } 33 | private static JObject _Items; 34 | 35 | 36 | public static T GetValue(string key) 37 | { 38 | return Items[key].Value(); 39 | } 40 | 41 | public static String[] GetStringList(string key) 42 | { 43 | return Items[key].Select(x => x.Value()).ToArray(); 44 | } 45 | 46 | public static String GetString(string key) 47 | { 48 | return GetValue(key); 49 | } 50 | 51 | public static int GetInt(string key) 52 | { 53 | return GetValue(key); 54 | } 55 | } -------------------------------------------------------------------------------- /src/assets/ueditor/net/App_Code/ConfigHandler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | /// 7 | /// Config 的摘要说明 8 | /// 9 | public class ConfigHandler : Handler 10 | { 11 | public ConfigHandler(HttpContext context) : base(context) { } 12 | 13 | public override void Process() 14 | { 15 | WriteJson(Config.Items); 16 | } 17 | } -------------------------------------------------------------------------------- /src/assets/ueditor/net/App_Code/Handler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using Newtonsoft.Json; 6 | 7 | 8 | /// 9 | /// Handler 的摘要说明 10 | /// 11 | public abstract class Handler 12 | { 13 | public Handler(HttpContext context) 14 | { 15 | this.Request = context.Request; 16 | this.Response = context.Response; 17 | this.Context = context; 18 | this.Server = context.Server; 19 | } 20 | 21 | public abstract void Process(); 22 | 23 | protected void WriteJson(object response) 24 | { 25 | string jsonpCallback = Request["callback"], 26 | json = JsonConvert.SerializeObject(response); 27 | if (String.IsNullOrWhiteSpace(jsonpCallback)) 28 | { 29 | Response.AddHeader("Content-Type", "text/plain"); 30 | Response.Write(json); 31 | } 32 | else 33 | { 34 | Response.AddHeader("Content-Type", "application/javascript"); 35 | Response.Write(String.Format("{0}({1});", jsonpCallback, json)); 36 | } 37 | Response.End(); 38 | } 39 | 40 | public HttpRequest Request { get; private set; } 41 | public HttpResponse Response { get; private set; } 42 | public HttpContext Context { get; private set; } 43 | public HttpServerUtility Server { get; private set; } 44 | } -------------------------------------------------------------------------------- /src/assets/ueditor/net/App_Code/ListFileHandler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Web; 6 | 7 | /// 8 | /// FileManager 的摘要说明 9 | /// 10 | public class ListFileManager : Handler 11 | { 12 | enum ResultState 13 | { 14 | Success, 15 | InvalidParam, 16 | AuthorizError, 17 | IOError, 18 | PathNotFound 19 | } 20 | 21 | private int Start; 22 | private int Size; 23 | private int Total; 24 | private ResultState State; 25 | private String PathToList; 26 | private String[] FileList; 27 | private String[] SearchExtensions; 28 | 29 | public ListFileManager(HttpContext context, string pathToList, string[] searchExtensions) 30 | : base(context) 31 | { 32 | this.SearchExtensions = searchExtensions.Select(x => x.ToLower()).ToArray(); 33 | this.PathToList = pathToList; 34 | } 35 | 36 | public override void Process() 37 | { 38 | try 39 | { 40 | Start = String.IsNullOrEmpty(Request["start"]) ? 0 : Convert.ToInt32(Request["start"]); 41 | Size = String.IsNullOrEmpty(Request["size"]) ? Config.GetInt("imageManagerListSize") : Convert.ToInt32(Request["size"]); 42 | } 43 | catch (FormatException) 44 | { 45 | State = ResultState.InvalidParam; 46 | WriteResult(); 47 | return; 48 | } 49 | var buildingList = new List(); 50 | try 51 | { 52 | var localPath = Server.MapPath(PathToList); 53 | buildingList.AddRange(Directory.GetFiles(localPath, "*", SearchOption.AllDirectories) 54 | .Where(x => SearchExtensions.Contains(Path.GetExtension(x).ToLower())) 55 | .Select(x => PathToList + x.Substring(localPath.Length).Replace("\\", "/"))); 56 | Total = buildingList.Count; 57 | FileList = buildingList.OrderBy(x => x).Skip(Start).Take(Size).ToArray(); 58 | } 59 | catch (UnauthorizedAccessException) 60 | { 61 | State = ResultState.AuthorizError; 62 | } 63 | catch (DirectoryNotFoundException) 64 | { 65 | State = ResultState.PathNotFound; 66 | } 67 | catch (IOException) 68 | { 69 | State = ResultState.IOError; 70 | } 71 | finally 72 | { 73 | WriteResult(); 74 | } 75 | } 76 | 77 | private void WriteResult() 78 | { 79 | WriteJson(new 80 | { 81 | state = GetStateString(), 82 | list = FileList == null ? null : FileList.Select(x => new { url = x }), 83 | start = Start, 84 | size = Size, 85 | total = Total 86 | }); 87 | } 88 | 89 | private string GetStateString() 90 | { 91 | switch (State) 92 | { 93 | case ResultState.Success: 94 | return "SUCCESS"; 95 | case ResultState.InvalidParam: 96 | return "参数不正确"; 97 | case ResultState.PathNotFound: 98 | return "路径不存在"; 99 | case ResultState.AuthorizError: 100 | return "文件系统权限不足"; 101 | case ResultState.IOError: 102 | return "文件系统读取错误"; 103 | } 104 | return "未知错误"; 105 | } 106 | } -------------------------------------------------------------------------------- /src/assets/ueditor/net/App_Code/NotSupportedHandler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | /// 7 | /// NotSupportedHandler 的摘要说明 8 | /// 9 | public class NotSupportedHandler : Handler 10 | { 11 | public NotSupportedHandler(HttpContext context) 12 | : base(context) 13 | { 14 | } 15 | 16 | public override void Process() 17 | { 18 | WriteJson(new 19 | { 20 | state = "action 参数为空或者 action 不被支持。" 21 | }); 22 | } 23 | } -------------------------------------------------------------------------------- /src/assets/ueditor/net/App_Code/PathFormater.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Text.RegularExpressions; 7 | using System.Web; 8 | 9 | /// 10 | /// PathFormater 的摘要说明 11 | /// 12 | public static class PathFormatter 13 | { 14 | public static string Format(string originFileName, string pathFormat) 15 | { 16 | if (String.IsNullOrWhiteSpace(pathFormat)) 17 | { 18 | pathFormat = "{filename}{rand:6}"; 19 | } 20 | 21 | var invalidPattern = new Regex(@"[\\\/\:\*\?\042\<\>\|]"); 22 | originFileName = invalidPattern.Replace(originFileName, ""); 23 | 24 | string extension = Path.GetExtension(originFileName); 25 | string filename = Path.GetFileNameWithoutExtension(originFileName); 26 | 27 | pathFormat = pathFormat.Replace("{filename}", filename); 28 | pathFormat = new Regex(@"\{rand(\:?)(\d+)\}", RegexOptions.Compiled).Replace(pathFormat, new MatchEvaluator(delegate(Match match) 29 | { 30 | var digit = 6; 31 | if (match.Groups.Count > 2) 32 | { 33 | digit = Convert.ToInt32(match.Groups[2].Value); 34 | } 35 | var rand = new Random(); 36 | return rand.Next((int)Math.Pow(10, digit), (int)Math.Pow(10, digit + 1)).ToString(); 37 | })); 38 | 39 | pathFormat = pathFormat.Replace("{time}", DateTime.Now.Ticks.ToString()); 40 | pathFormat = pathFormat.Replace("{yyyy}", DateTime.Now.Year.ToString()); 41 | pathFormat = pathFormat.Replace("{yy}", (DateTime.Now.Year % 100).ToString("D2")); 42 | pathFormat = pathFormat.Replace("{mm}", DateTime.Now.Month.ToString("D2")); 43 | pathFormat = pathFormat.Replace("{dd}", DateTime.Now.Day.ToString("D2")); 44 | pathFormat = pathFormat.Replace("{hh}", DateTime.Now.Hour.ToString("D2")); 45 | pathFormat = pathFormat.Replace("{ii}", DateTime.Now.Minute.ToString("D2")); 46 | pathFormat = pathFormat.Replace("{ss}", DateTime.Now.Second.ToString("D2")); 47 | 48 | return pathFormat + extension; 49 | } 50 | } -------------------------------------------------------------------------------- /src/assets/ueditor/net/Bin/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/net/Bin/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /src/assets/ueditor/net/Bin/Newtonsoft.Json.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/net/Bin/Newtonsoft.Json.pdb -------------------------------------------------------------------------------- /src/assets/ueditor/net/README.md: -------------------------------------------------------------------------------- 1 | UEditor ASP.NET 后台使用说明 2 | ===== 3 | 4 | ## 背景 5 | 6 | UEditor 在 1.4 版本之后进行了一次[前后端统一配置](../_doc/3.1 后端请求规范.md)的整理,.Net 的后台也进行了一次重写,跟之前的版本差别较大,升级的用户注意阅读本文档。 7 | 8 | 本文档介绍 UEditor ASP.NET 后台的部署、配置、源码说明。 9 | 10 | 11 | ## 1. 部署说明 12 | 13 | ### 1.1. 安装并注册 .NET Framework 4.0 14 | 15 | 代码的运行时环境是 .NET Framework 4.0,首先要确认 IIS 已经安装了 .NET 4.0 的运行时框架。方法是打开「IIS 管理器」,选择根目录下的「应用程序池」,在右侧查看是否有一个应用程序池的版本是 v4.0,如果存在,则 IIS 已经安装了所需的运行时环境,此时读者可以跳过本节。 16 | 17 | ![检查 .NET 4.0 安装情况](../_doc/images/net-publish-1.png) 18 | 19 | 如果没有找到对应的应用程序池,需要手动安装。 20 | 21 | Windows 7 和 Windows Server 2008 R2 默认安装了 .Net Framework 4.0,如果是 Server 03 和老掉牙的 Windows XP,则需要手动安装 [.NET Framework 4.0](http://www.microsoft.com/zh-cn/download/details.aspx?id=17718)。 22 | 23 | 安装完 .NET Framework 4.0 后,还需要向 IIS 注册应用程序池,注册的方法是,使用**管理员权限**打开命令提示符(CMD),输入以下命令: 24 | 25 | ```shell 26 | C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -i 27 | ``` 28 | 29 | 安装完毕后,在 IIS 管理器刷新就能看到 4.0 的应用程序池。 30 | 31 | ### 1.2. 设置 .NET 应用程序 32 | 33 | 代码要求以应用程序的形式来运行(可以方便加入库依赖和组织代码)。需要把 `net` 目录转换为应用程序。 34 | 35 | 1. 在 IIS 中,展开到 `ueditor/net` 目录,在目录上右击,点击「转换为应用程序」。 36 | 37 | ![转换为应用程序](../_doc/images/net-publish-2.png) 38 | 39 | 2. 弹出的对话框中,点击「选择...」来指定使用的应用程序池。选择版本为 4.0 的应用程序池,然后点确定。 40 | 41 | ![选择应用程序池](../_doc/images/net-publish-3.png) 42 | 43 | 3. 设置连接凭据。点击「链接为...」按钮,在弹出的对话框中指定一个对目录具有读写权限的用户(如 administrator),然后点确定。 44 | 45 | ![设置连接凭据](../_doc/images/net-publish-4.png) 46 | 47 | 设置完毕后,可以点击「测试设置...」来测试权限是否正常。 48 | 49 | ![设置连接凭据](../_doc/images/net-publish-5.png) 50 | 51 | ### 1.3. 运行测试 52 | 53 | 在浏览器中运行 `net/controller.ashx`,如果返回 "`{"state":"action 参数为空或者 action 不被支持。"}`",则表示应用程序运行成功。 54 | 55 | 如果你确认上述步骤已经执行,但是依然有问题,请给我们[提 Issue](https://github.com/fex-team/ueditor/issues/new?labels=NET%E5%90%8E%E5%8F%B0),我们会尽快答复解决。 56 | 57 | ## 2. 配置说明 58 | 59 | 前后端配置统一之后,配置文件由后台读取,返回给前端。但是部分配置是给后台使用的。 60 | 61 | ### 2.1. 上传配置说明 62 | 63 | 关于上传的部分,后台需要关心以下模板的配置项。 64 | 65 | ```json 66 | { 67 | "{tpl}FieldName": "upfile", 68 | "{tpl}PathFormat": "upload/{tpl}/{yyyy}{mm}{dd}/{time}{rand:6}", 69 | "{tpl}UrlPrefix": "/ueditor/net/", 70 | "{tpl}AllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], 71 | "{tpl}MaxSize": 2048000 72 | } 73 | ``` 74 | 75 | "{tpl}FieldName" 表示提交的表单的文件域名称。 76 | 77 | "{tpl}PathFormat" 表示上传文件保存的路径和名称。注意,这里的路径是相对应用程序的,如果需要修改的话,请自行修改源码。 78 | 79 | "{tpl}UrlPrefix" 表示上传文件访问的 URL 前缀。注意,这里应该给出应用程序的 URL 路径,否则上传的文件不能正确定位。 80 | 81 | > 举个例子,如果你的 UEditor 的位置在 `http://www.mydomain.com/myapp/ueditor`,对应的本地路径是 `C:\iis_pub\www\myapp\ueditor`,那么 .NET 应用程序的位置在 `http://www.mydomain.com/myapp/ueditor/net`,对应的本地路径是 `C:\iis_pub\www\myapp\ueditor\net`。图片上传配置项应该如下: 82 | > 83 | > { 84 | > "imagePathFormat": "upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", 85 | > "imageUrlPrefix": "/myapp/ueditor/net/", 86 | > } 87 | > 88 | > 上传的文件会保存在 `C:\iis_pub\www\myapp\ueditor\net\upload\image\{日期}\{文件名}` 89 | 90 | "{tpl}AllowFiles" 限制文件上传的类型,注意要有 "."。 91 | 92 | "{tpl}MaxSize" 限制文件上传的大小。注意这里的限制是代码上的判断,应用程序本身还有一个请求报文大小限制。该限制在 web.config 文件中修改,注意要有以下的节: 93 | 94 | ```xml 95 | 96 | 97 | 98 | 99 | 100 | ``` 101 | 102 | maxRequestLength 就是请求报文大小限制,该大小应该要比设置的所有上传大小都大,否则应用程序执行之前,请求会被被拒绝。 103 | 104 | ## 3. 源码说明 105 | 106 | 可以看到 net 目录内的源码结构是这样的: 107 | 108 | ``` 109 | net 110 | App_Code 111 | Config.cs 112 | Handler.cs 113 | PathFormatter.cs 114 | *Handler.cs 115 | Bin 116 | Newtonsoft.Json.dll 117 | config.json 118 | controller.ashx 119 | net.sln 120 | README.md 121 | Web.config 122 | ``` 123 | 124 | App_Code 上的文件是应用程序的源码。 125 | 126 | - Config.cs 负责读取配置文件 127 | - Handler.cs 是请求处理器的基类,提供了一些基本对象的访问以及输出控制。如果需要增加处理器,应该从该基类继承 128 | - PathFormatter.cs 解析 PathFormat,把信息填充为运行时信息。 129 | - *Handler.cs 是各种处理器,处理各种 UEditor 需要的请求。 130 | 131 | Bin 里面的是应用程序的依赖库,当前依赖 Newtonsoft 的 Json 库。Bin 目录和 App_Code 目录受应用程序保护,不用担心被用户访问到。 132 | 133 | config.json 是 UEditor 后端的配置文件,上一节已经介绍了比较重要的配置项。 134 | 135 | controller.ashx 是 UEditor 请求的入口,它把不同的 action 分发到不同的 Handler 来处理。 136 | 137 | net.sln 是项目的解决方案文件,安装 Visual Studio 2013 或以上的机器可以打开进行项目的改造。 138 | 139 | README.md 是本说明文件。 140 | 141 | Web.config 是应用程序的配置文件。 142 | -------------------------------------------------------------------------------- /src/assets/ueditor/net/Web.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/ueditor/net/controller.ashx: -------------------------------------------------------------------------------- 1 | <%@ WebHandler Language="C#" Class="UEditorHandler" %> 2 | 3 | using System; 4 | using System.Web; 5 | using System.IO; 6 | using System.Collections; 7 | using Newtonsoft.Json; 8 | 9 | public class UEditorHandler : IHttpHandler 10 | { 11 | public void ProcessRequest(HttpContext context) 12 | { 13 | Handler action = null; 14 | switch (context.Request["action"]) 15 | { 16 | case "config": 17 | action = new ConfigHandler(context); 18 | break; 19 | case "uploadimage": 20 | action = new UploadHandler(context, new UploadConfig() 21 | { 22 | AllowExtensions = Config.GetStringList("imageAllowFiles"), 23 | PathFormat = Config.GetString("imagePathFormat"), 24 | SizeLimit = Config.GetInt("imageMaxSize"), 25 | UploadFieldName = Config.GetString("imageFieldName") 26 | }); 27 | break; 28 | case "uploadscrawl": 29 | action = new UploadHandler(context, new UploadConfig() 30 | { 31 | AllowExtensions = new string[] { ".png" }, 32 | PathFormat = Config.GetString("scrawlPathFormat"), 33 | SizeLimit = Config.GetInt("scrawlMaxSize"), 34 | UploadFieldName = Config.GetString("scrawlFieldName"), 35 | Base64 = true, 36 | Base64Filename = "scrawl.png" 37 | }); 38 | break; 39 | case "uploadvideo": 40 | action = new UploadHandler(context, new UploadConfig() 41 | { 42 | AllowExtensions = Config.GetStringList("videoAllowFiles"), 43 | PathFormat = Config.GetString("videoPathFormat"), 44 | SizeLimit = Config.GetInt("videoMaxSize"), 45 | UploadFieldName = Config.GetString("videoFieldName") 46 | }); 47 | break; 48 | case "uploadfile": 49 | action = new UploadHandler(context, new UploadConfig() 50 | { 51 | AllowExtensions = Config.GetStringList("fileAllowFiles"), 52 | PathFormat = Config.GetString("filePathFormat"), 53 | SizeLimit = Config.GetInt("fileMaxSize"), 54 | UploadFieldName = Config.GetString("fileFieldName") 55 | }); 56 | break; 57 | case "listimage": 58 | action = new ListFileManager(context, Config.GetString("imageManagerListPath"), Config.GetStringList("imageManagerAllowFiles")); 59 | break; 60 | case "listfile": 61 | action = new ListFileManager(context, Config.GetString("fileManagerListPath"), Config.GetStringList("fileManagerAllowFiles")); 62 | break; 63 | case "catchimage": 64 | action = new CrawlerHandler(context); 65 | break; 66 | default: 67 | action = new NotSupportedHandler(context); 68 | break; 69 | } 70 | action.Process(); 71 | } 72 | 73 | public bool IsReusable 74 | { 75 | get 76 | { 77 | return false; 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /src/assets/ueditor/net/net.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.21005.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "net", "http://localhost:7957", "{36F65A7F-64E7-4E05-BBC2-EAB6E4EDAF30}" 7 | ProjectSection(WebsiteProperties) = preProject 8 | UseIISExpress = "true" 9 | TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0" 10 | Debug.AspNetCompiler.VirtualPath = "/localhost_7957" 11 | Debug.AspNetCompiler.PhysicalPath = "..\..\..\..\prj\ueditor\net\" 12 | Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_7957\" 13 | Debug.AspNetCompiler.Updateable = "true" 14 | Debug.AspNetCompiler.ForceOverwrite = "true" 15 | Debug.AspNetCompiler.FixedNames = "false" 16 | Debug.AspNetCompiler.Debug = "True" 17 | Release.AspNetCompiler.VirtualPath = "/localhost_7957" 18 | Release.AspNetCompiler.PhysicalPath = "..\..\..\..\prj\ueditor\net\" 19 | Release.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_7957\" 20 | Release.AspNetCompiler.Updateable = "true" 21 | Release.AspNetCompiler.ForceOverwrite = "true" 22 | Release.AspNetCompiler.FixedNames = "false" 23 | Release.AspNetCompiler.Debug = "False" 24 | SlnRelativePath = "..\..\..\..\prj\ueditor\net\" 25 | EndProjectSection 26 | EndProject 27 | Global 28 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 29 | Debug|Any CPU = Debug|Any CPU 30 | EndGlobalSection 31 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 32 | {36F65A7F-64E7-4E05-BBC2-EAB6E4EDAF30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 33 | {36F65A7F-64E7-4E05-BBC2-EAB6E4EDAF30}.Debug|Any CPU.Build.0 = Debug|Any CPU 34 | EndGlobalSection 35 | GlobalSection(SolutionProperties) = preSolution 36 | HideSolutionNode = FALSE 37 | EndGlobalSection 38 | EndGlobal 39 | -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/dialogbase.css: -------------------------------------------------------------------------------- 1 | /*弹出对话框页面样式组件 2 | */ 3 | 4 | /*reset 5 | */ 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, font, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td { 15 | margin: 0; 16 | padding: 0; 17 | outline: 0; 18 | font-size: 100%; 19 | } 20 | 21 | body { 22 | line-height: 1; 23 | } 24 | 25 | ol, ul { 26 | list-style: none; 27 | } 28 | 29 | blockquote, q { 30 | quotes: none; 31 | } 32 | 33 | ins { 34 | text-decoration: none; 35 | } 36 | 37 | del { 38 | text-decoration: line-through; 39 | } 40 | 41 | table { 42 | border-collapse: collapse; 43 | border-spacing: 0; 44 | } 45 | 46 | /*module 47 | */ 48 | body { 49 | background-color: #fff; 50 | font: 12px/1.5 sans-serif, "宋体", "Arial Narrow", HELVETICA; 51 | color: #646464; 52 | } 53 | 54 | /*tab*/ 55 | .tabhead { 56 | position: relative; 57 | z-index: 10; 58 | } 59 | 60 | .tabhead span { 61 | display: inline-block; 62 | padding: 0 5px; 63 | height: 30px; 64 | border: 1px solid #ccc; 65 | background: url("images/dialog-title-bg.png") repeat-x; 66 | text-align: center; 67 | line-height: 30px; 68 | cursor: pointer; 69 | *margin-right: 5px; 70 | } 71 | 72 | .tabhead span.focus { 73 | height: 31px; 74 | border-bottom: none; 75 | background: #fff; 76 | } 77 | 78 | .tabbody { 79 | position: relative; 80 | top: -1px; 81 | margin: 0 auto; 82 | border: 1px solid #ccc; 83 | } 84 | 85 | /*button*/ 86 | a.button { 87 | display: block; 88 | text-align: center; 89 | line-height: 24px; 90 | text-decoration: none; 91 | height: 24px; 92 | width: 95px; 93 | border: 0; 94 | color: #838383; 95 | background: url(../../themes/default/images/icons-all.gif) no-repeat; 96 | } 97 | 98 | a.button:hover { 99 | background-position: 0 -30px; 100 | } -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/anchor.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/arrow.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/arrow_down.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/arrow_up.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/button-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/button-bg.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/cancelbutton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/cancelbutton.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/charts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/charts.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/cursor_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/cursor_h.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/cursor_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/cursor_h.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/cursor_v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/cursor_v.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/cursor_v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/cursor_v.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/dialog-title-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/dialog-title-bg.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/filescan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/filescan.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/highlighted.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/highlighted.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/icons-all.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/icons-all.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/icons.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/icons.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/loaderror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/loaderror.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/loading.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/lock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/lock.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/neweditor-tab-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/neweditor-tab-bg.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/pagebreak.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/pagebreak.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/scale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/scale.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/sortable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/sortable.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/spacer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/spacer.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/sparator_v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/sparator_v.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/table-cell-align.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/table-cell-align.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/tangram-colorpicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/tangram-colorpicker.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/toolbar_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/toolbar_bg.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/unhighlighted.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/unhighlighted.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/upload.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/videologo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/videologo.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/word.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/word.gif -------------------------------------------------------------------------------- /src/assets/ueditor/themes/default/images/wordpaste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/themes/default/images/wordpaste.png -------------------------------------------------------------------------------- /src/assets/ueditor/themes/iframe.css: -------------------------------------------------------------------------------- 1 | /*可以在这里添加你自己的css*/ 2 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/codemirror/codemirror.css: -------------------------------------------------------------------------------- 1 | .CodeMirror { 2 | line-height: 1em; 3 | font-family: monospace; 4 | } 5 | 6 | .CodeMirror-scroll { 7 | overflow: auto; 8 | height: 300px; 9 | /* This is needed to prevent an IE[67] bug where the scrolled content 10 | is visible outside of the scrolling box. */ 11 | position: relative; 12 | } 13 | 14 | .CodeMirror-gutter { 15 | position: absolute; left: 0; top: 0; 16 | z-index: 10; 17 | background-color: #f7f7f7; 18 | border-right: 1px solid #eee; 19 | min-width: 2em; 20 | height: 100%; 21 | } 22 | .CodeMirror-gutter-text { 23 | color: #aaa; 24 | text-align: right; 25 | padding: .4em .2em .4em .4em; 26 | white-space: pre !important; 27 | } 28 | .CodeMirror-lines { 29 | padding: .4em; 30 | } 31 | 32 | .CodeMirror pre { 33 | -moz-border-radius: 0; 34 | -webkit-border-radius: 0; 35 | -o-border-radius: 0; 36 | border-radius: 0; 37 | border-width: 0; margin: 0; padding: 0; background: transparent; 38 | font-family: inherit; 39 | font-size: inherit; 40 | padding: 0; margin: 0; 41 | white-space: pre; 42 | word-wrap: normal; 43 | } 44 | 45 | .CodeMirror-wrap pre { 46 | word-wrap: break-word; 47 | white-space: pre-wrap; 48 | } 49 | .CodeMirror-wrap .CodeMirror-scroll { 50 | overflow-x: hidden; 51 | } 52 | 53 | .CodeMirror textarea { 54 | outline: none !important; 55 | } 56 | 57 | .CodeMirror pre.CodeMirror-cursor { 58 | z-index: 10; 59 | position: absolute; 60 | visibility: hidden; 61 | border-left: 1px solid black; 62 | } 63 | .CodeMirror-focused pre.CodeMirror-cursor { 64 | visibility: visible; 65 | } 66 | 67 | span.CodeMirror-selected { background: #d9d9d9; } 68 | .CodeMirror-focused span.CodeMirror-selected { background: #d2dcf8; } 69 | 70 | .CodeMirror-searching {background: #ffa;} 71 | 72 | /* Default theme */ 73 | 74 | .cm-s-default span.cm-keyword {color: #708;} 75 | .cm-s-default span.cm-atom {color: #219;} 76 | .cm-s-default span.cm-number {color: #164;} 77 | .cm-s-default span.cm-def {color: #00f;} 78 | .cm-s-default span.cm-variable {color: black;} 79 | .cm-s-default span.cm-variable-2 {color: #05a;} 80 | .cm-s-default span.cm-variable-3 {color: #085;} 81 | .cm-s-default span.cm-property {color: black;} 82 | .cm-s-default span.cm-operator {color: black;} 83 | .cm-s-default span.cm-comment {color: #a50;} 84 | .cm-s-default span.cm-string {color: #a11;} 85 | .cm-s-default span.cm-string-2 {color: #f50;} 86 | .cm-s-default span.cm-meta {color: #555;} 87 | .cm-s-default span.cm-error {color: #f00;} 88 | .cm-s-default span.cm-qualifier {color: #555;} 89 | .cm-s-default span.cm-builtin {color: #30a;} 90 | .cm-s-default span.cm-bracket {color: #cc7;} 91 | .cm-s-default span.cm-tag {color: #170;} 92 | .cm-s-default span.cm-attribute {color: #00c;} 93 | .cm-s-default span.cm-header {color: #a0a;} 94 | .cm-s-default span.cm-quote {color: #090;} 95 | .cm-s-default span.cm-hr {color: #999;} 96 | .cm-s-default span.cm-link {color: #00c;} 97 | 98 | span.cm-header, span.cm-strong {font-weight: bold;} 99 | span.cm-em {font-style: italic;} 100 | span.cm-emstrong {font-style: italic; font-weight: bold;} 101 | span.cm-link {text-decoration: underline;} 102 | 103 | div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} 104 | div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} 105 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/highcharts/adapters/mootools-adapter.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v3.0.6 (2013-10-04) 3 | MooTools adapter 4 | 5 | (c) 2010-2013 Torstein Hønsi 6 | 7 | License: www.highcharts.com/license 8 | */ 9 | (function(){var e=window,h=document,f=e.MooTools.version.substring(0,3),i=f==="1.2"||f==="1.1",j=i||f==="1.3",g=e.$extend||function(){return Object.append.apply(Object,arguments)};e.HighchartsAdapter={init:function(a){var b=Fx.prototype,c=b.start,d=Fx.Morph.prototype,e=d.compute;b.start=function(b,d){var e=this.element;if(b.d)this.paths=a.init(e,e.d,this.toD);c.apply(this,arguments);return this};d.compute=function(b,c,d){var f=this.paths;if(f)this.element.attr("d",a.step(f[0],f[1],d,this.toD));else return e.apply(this, 10 | arguments)}},adapterRun:function(a,b){if(b==="width"||b==="height")return parseInt($(a).getStyle(b),10)},getScript:function(a,b){var c=h.getElementsByTagName("head")[0],d=h.createElement("script");d.type="text/javascript";d.src=a;d.onload=b;c.appendChild(d)},animate:function(a,b,c){var d=a.attr,f=c&&c.complete;if(d&&!a.setStyle)a.getStyle=a.attr,a.setStyle=function(){var a=arguments;this.attr.call(this,a[0],a[1][0])},a.$family=function(){return!0};e.HighchartsAdapter.stop(a);c=new Fx.Morph(d?a:$(a), 11 | g({transition:Fx.Transitions.Quad.easeInOut},c));if(d)c.element=a;if(b.d)c.toD=b.d;f&&c.addEvent("complete",f);c.start(b);a.fx=c},each:function(a,b){return i?$each(a,b):Array.each(a,b)},map:function(a,b){return a.map(b)},grep:function(a,b){return a.filter(b)},inArray:function(a,b,c){return b?b.indexOf(a,c):-1},offset:function(a){a=a.getPosition();return{left:a.x,top:a.y}},extendWithEvents:function(a){a.addEvent||(a.nodeName?$(a):g(a,new Events))},addEvent:function(a,b,c){typeof b==="string"&&(b=== 12 | "unload"&&(b="beforeunload"),e.HighchartsAdapter.extendWithEvents(a),a.addEvent(b,c))},removeEvent:function(a,b,c){typeof a!=="string"&&a.addEvent&&(b?(b==="unload"&&(b="beforeunload"),c?a.removeEvent(b,c):a.removeEvents&&a.removeEvents(b)):a.removeEvents())},fireEvent:function(a,b,c,d){b={type:b,target:a};b=j?new Event(b):new DOMEvent(b);b=g(b,c);if(!b.target&&b.event)b.target=b.event.target;b.preventDefault=function(){d=null};a.fireEvent&&a.fireEvent(b.type,b);d&&d(b)},washMouseEvent:function(a){if(a.page)a.pageX= 13 | a.page.x,a.pageY=a.page.y;return a},stop:function(a){a.fx&&a.fx.cancel()}}})(); 14 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/highcharts/adapters/prototype-adapter.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v3.0.6 (2013-10-04) 3 | Prototype adapter 4 | 5 | @author Michael Nelson, Torstein Hønsi. 6 | 7 | Feel free to use and modify this script. 8 | Highcharts license: www.highcharts.com/license. 9 | */ 10 | var HighchartsAdapter=function(){var f=typeof Effect!=="undefined";return{init:function(a){if(f)Effect.HighchartsTransition=Class.create(Effect.Base,{initialize:function(b,c,d,g){var e;this.element=b;this.key=c;e=b.attr?b.attr(c):$(b).getStyle(c);if(c==="d")this.paths=a.init(b,b.d,d),this.toD=d,e=0,d=1;this.start(Object.extend(g||{},{from:e,to:d,attribute:c}))},setup:function(){HighchartsAdapter._extend(this.element);if(!this.element._highchart_animation)this.element._highchart_animation={};this.element._highchart_animation[this.key]= 11 | this},update:function(b){var c=this.paths,d=this.element;c&&(b=a.step(c[0],c[1],b,this.toD));d.attr?d.element&&d.attr(this.options.attribute,b):(c={},c[this.options.attribute]=b,$(d).setStyle(c))},finish:function(){this.element&&this.element._highchart_animation&&delete this.element._highchart_animation[this.key]}})},adapterRun:function(a,b){return parseInt($(a).getStyle(b),10)},getScript:function(a,b){var c=$$("head")[0];c&&c.appendChild((new Element("script",{type:"text/javascript",src:a})).observe("load", 12 | b))},addNS:function(a){var b=/^(?:click|mouse(?:down|up|over|move|out))$/;return/^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/.test(a)||b.test(a)?a:"h:"+a},addEvent:function(a,b,c){a.addEventListener||a.attachEvent?Event.observe($(a),HighchartsAdapter.addNS(b),c):(HighchartsAdapter._extend(a),a._highcharts_observe(b,c))},animate:function(a,b,c){var d,c=c||{};c.delay=0;c.duration=(c.duration||500)/1E3;c.afterFinish=c.complete;if(f)for(d in b)new Effect.HighchartsTransition($(a), 13 | d,b[d],c);else{if(a.attr)for(d in b)a.attr(d,b[d]);c.complete&&c.complete()}a.attr||$(a).setStyle(b)},stop:function(a){var b;if(a._highcharts_extended&&a._highchart_animation)for(b in a._highchart_animation)a._highchart_animation[b].cancel()},each:function(a,b){$A(a).each(b)},inArray:function(a,b,c){return b?b.indexOf(a,c):-1},offset:function(a){return $(a).cumulativeOffset()},fireEvent:function(a,b,c,d){a.fire?a.fire(HighchartsAdapter.addNS(b),c):a._highcharts_extended&&(c=c||{},a._highcharts_fire(b, 14 | c));c&&c.defaultPrevented&&(d=null);d&&d(c)},removeEvent:function(a,b,c){$(a).stopObserving&&(b&&(b=HighchartsAdapter.addNS(b)),$(a).stopObserving(b,c));window===a?Event.stopObserving(a,b,c):(HighchartsAdapter._extend(a),a._highcharts_stop_observing(b,c))},washMouseEvent:function(a){return a},grep:function(a,b){return a.findAll(b)},map:function(a,b){return a.map(b)},_extend:function(a){a._highcharts_extended||Object.extend(a,{_highchart_events:{},_highchart_animation:null,_highcharts_extended:!0, 15 | _highcharts_observe:function(b,a){this._highchart_events[b]=[this._highchart_events[b],a].compact().flatten()},_highcharts_stop_observing:function(b,a){b?a?this._highchart_events[b]=[this._highchart_events[b]].compact().flatten().without(a):delete this._highchart_events[b]:this._highchart_events={}},_highcharts_fire:function(a,c){var d=this;(this._highchart_events[a]||[]).each(function(a){if(!c.stopped)c.preventDefault=function(){c.defaultPrevented=!0},c.target=d,a.bind(this)(c)===!1&&c.preventDefault()}.bind(this))}})}}}(); 16 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/highcharts/modules/annotations.js: -------------------------------------------------------------------------------- 1 | (function(i,C){function m(a){return typeof a==="number"}function n(a){return a!==D&&a!==null}var D,p,r,s=i.Chart,t=i.extend,z=i.each;r=["path","rect","circle"];p={top:0,left:0,center:0.5,middle:0.5,bottom:1,right:1};var u=C.inArray,A=i.merge,B=function(){this.init.apply(this,arguments)};B.prototype={init:function(a,d){var c=d.shape&&d.shape.type;this.chart=a;var b,f;f={xAxis:0,yAxis:0,title:{style:{},text:"",x:0,y:0},shape:{params:{stroke:"#000000",fill:"transparent",strokeWidth:2}}};b={circle:{params:{x:0, 2 | y:0}}};if(b[c])f.shape=A(f.shape,b[c]);this.options=A({},f,d)},render:function(a){var d=this.chart,c=this.chart.renderer,b=this.group,f=this.title,e=this.shape,h=this.options,i=h.title,l=h.shape;if(!b)b=this.group=c.g();if(!e&&l&&u(l.type,r)!==-1)e=this.shape=c[h.shape.type](l.params),e.add(b);if(!f&&i)f=this.title=c.label(i),f.add(b);b.add(d.annotations.group);this.linkObjects();a!==!1&&this.redraw()},redraw:function(){var a=this.options,d=this.chart,c=this.group,b=this.title,f=this.shape,e=this.linkedObject, 3 | h=d.xAxis[a.xAxis],v=d.yAxis[a.yAxis],l=a.width,w=a.height,x=p[a.anchorY],y=p[a.anchorX],j,o,g,q;if(e)j=e instanceof i.Point?"point":e instanceof i.Series?"series":null,j==="point"?(a.xValue=e.x,a.yValue=e.y,o=e.series):j==="series"&&(o=e),c.visibility!==o.group.visibility&&c.attr({visibility:o.group.visibility});e=n(a.xValue)?h.toPixels(a.xValue+h.minPointOffset)-h.minPixelPadding:a.x;j=n(a.yValue)?v.toPixels(a.yValue):a.y;if(!isNaN(e)&&!isNaN(j)&&m(e)&&m(j)){b&&(b.attr(a.title),b.css(a.title.style)); 4 | if(f){b=t({},a.shape.params);if(a.units==="values"){for(g in b)u(g,["width","x"])>-1?b[g]=h.translate(b[g]):u(g,["height","y"])>-1&&(b[g]=v.translate(b[g]));b.width&&(b.width-=h.toPixels(0)-h.left);b.x&&(b.x+=h.minPixelPadding);if(a.shape.type==="path"){g=b.d;o=e;for(var r=j,s=g.length,k=0;k-1&&d.splice(c,1);z(["title","shape","group"],function(b){a[b]&&(a[b].destroy(),a[b]=null)});a.group=a.title=a.shape=a.chart=a.options=null},update:function(a,d){t(this.options,a);this.linkObjects();this.render(d)}, 6 | linkObjects:function(){var a=this.chart,d=this.linkedObject,c=d&&(d.id||d.options.id),b=this.options.linkedTo;if(n(b)){if(!n(d)||b!==c)this.linkedObject=a.get(b)}else this.linkedObject=null}};t(s.prototype,{annotations:{add:function(a,d){var c=this.allItems,b=this.chart,f,e;Object.prototype.toString.call(a)==="[object Array]"||(a=[a]);for(e=a.length;e--;)f=new B(b,a[e]),c.push(f),f.render(d)},redraw:function(){z(this.allItems,function(a){a.redraw()})}}});s.prototype.callbacks.push(function(a){var d= 7 | a.options.annotations,c;c=a.renderer.g("annotations");c.attr({zIndex:7});c.add();a.annotations.allItems=[];a.annotations.chart=a;a.annotations.group=c;Object.prototype.toString.call(d)==="[object Array]"&&d.length>0&&a.annotations.add(a.options.annotations);i.addEvent(a,"redraw",function(){a.annotations.redraw()})})})(Highcharts,HighchartsAdapter); 8 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/highcharts/modules/data.js: -------------------------------------------------------------------------------- 1 | /* 2 | Data plugin for Highcharts 3 | 4 | (c) 2012-2013 Torstein Hønsi 5 | Last revision 2013-06-07 6 | 7 | License: www.highcharts.com/license 8 | */ 9 | (function(h){var k=h.each,m=function(b,a){this.init(b,a)};h.extend(m.prototype,{init:function(b,a){this.options=b;this.chartOptions=a;this.columns=b.columns||this.rowsToColumns(b.rows)||[];this.columns.length?this.dataFound():(this.parseCSV(),this.parseTable(),this.parseGoogleSpreadsheet())},getColumnDistribution:function(){var b=this.chartOptions,a=b&&b.chart&&b.chart.type,c=[];k(b&&b.series||[],function(b){c.push((h.seriesTypes[b.type||a||"line"].prototype.pointArrayMap||[0]).length)});this.valueCount= 10 | {global:(h.seriesTypes[a||"line"].prototype.pointArrayMap||[0]).length,individual:c}},dataFound:function(){this.parseTypes();this.findHeaderRow();this.parsed();this.complete()},parseCSV:function(){var b=this,a=this.options,c=a.csv,d=this.columns,f=a.startRow||0,i=a.endRow||Number.MAX_VALUE,j=a.startColumn||0,e=a.endColumn||Number.MAX_VALUE,g=0;c&&(c=c.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split(a.lineDelimiter||"\n"),k(c,function(c,h){var n=b.trim(c),p=n.indexOf("#")===0;h>=f&&h<=i&&!p&&n!==""&& 11 | (n=c.split(a.itemDelimiter||","),k(n,function(b,a){a>=j&&a<=e&&(d[a-j]||(d[a-j]=[]),d[a-j][g]=b)}),g+=1)}),this.dataFound())},parseTable:function(){var b=this.options,a=b.table,c=this.columns,d=b.startRow||0,f=b.endRow||Number.MAX_VALUE,i=b.startColumn||0,j=b.endColumn||Number.MAX_VALUE,e;a&&(typeof a==="string"&&(a=document.getElementById(a)),k(a.getElementsByTagName("tr"),function(a,b){e=0;b>=d&&b<=f&&k(a.childNodes,function(a){if((a.tagName==="TD"||a.tagName==="TH")&&e>=i&&e<=j)c[e]||(c[e]=[]), 12 | c[e][b-d]=a.innerHTML,e+=1})}),this.dataFound())},parseGoogleSpreadsheet:function(){var b=this,a=this.options,c=a.googleSpreadsheetKey,d=this.columns,f=a.startRow||0,i=a.endRow||Number.MAX_VALUE,j=a.startColumn||0,e=a.endColumn||Number.MAX_VALUE,g,h;c&&jQuery.getJSON("https://spreadsheets.google.com/feeds/cells/"+c+"/"+(a.googleSpreadsheetWorksheet||"od6")+"/public/values?alt=json-in-script&callback=?",function(a){var a=a.feed.entry,c,k=a.length,m=0,o=0,l;for(l=0;l=j&&l<=e)d[l-j]=[],d[l-j].length=Math.min(o,i-f);for(l=0;l=j&&h<=e&&g>=f&&g<=i)d[h-j][g-f]=c.content.$t;b.dataFound()})},findHeaderRow:function(){k(this.columns,function(){});this.headerRow=0},trim:function(b){return typeof b==="string"?b.replace(/^\s+|\s+$/g,""):b},parseTypes:function(){for(var b=this.columns,a=b.length,c,d,f,i;a--;)for(c=b[a].length;c--;)d=b[a][c],f=parseFloat(d),i=this.trim(d), 14 | i==f?(b[a][c]=f,f>31536E6?b[a].isDatetime=!0:b[a].isNumeric=!0):(d=this.parseDate(d),a===0&&typeof d==="number"&&!isNaN(d)?(b[a][c]=d,b[a].isDatetime=!0):b[a][c]=i===""?null:i)},dateFormats:{"YYYY-mm-dd":{regex:"^([0-9]{4})-([0-9]{2})-([0-9]{2})$",parser:function(b){return Date.UTC(+b[1],b[2]-1,+b[3])}}},parseDate:function(b){var a=this.options.parseDate,c,d,f;a&&(c=a(b));if(typeof b==="string")for(d in this.dateFormats)a=this.dateFormats[d],(f=b.match(a.regex))&&(c=a.parser(f));return c},rowsToColumns:function(b){var a, 15 | c,d,f,i;if(b){i=[];c=b.length;for(a=0;a1&&(a=b.shift(),this.headerRow===0&&a.shift(),a.isDatetime?c="datetime":a.isNumeric||(c="category"));for(e=0;e1&&j[g].push(b[e+1][g]!==void 0?b[e+1][g]:null),f>2&&j[g].push(b[e+2][g]!==void 0?b[e+2][g]:null),f>3&&j[g].push(b[e+3][g]!==void 0?b[e+3][g]:null),f>4&&j[g].push(b[e+4][g]!==void 0?b[e+4][g]:null);i[k]={name:b[e].name,data:j};e+=f}d.complete({xAxis:{type:c},series:i})}}});h.Data=m;h.data=function(b,a){return new m(b,a)};h.wrap(h.Chart.prototype, 17 | "init",function(b,a,c){var d=this;a&&a.data?h.data(h.extend(a.data,{complete:function(f){a.series&&k(a.series,function(b,c){a.series[c]=h.merge(b,f.series[c])});a=h.merge(f,a);b.call(d,a,c)}}),a):b.call(d,a,c)})})(Highcharts); 18 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/highcharts/modules/funnel.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Highcharts funnel module, Beta 4 | 5 | (c) 2010-2012 Torstein Hønsi 6 | 7 | License: www.highcharts.com/license 8 | */ 9 | (function(d){var u=d.getOptions().plotOptions,p=d.seriesTypes,D=d.merge,z=function(){},A=d.each;u.funnel=D(u.pie,{center:["50%","50%"],width:"90%",neckWidth:"30%",height:"100%",neckHeight:"25%",dataLabels:{connectorWidth:1,connectorColor:"#606060"},size:!0,states:{select:{color:"#C0C0C0",borderColor:"#000000",shadow:!1}}});p.funnel=d.extendClass(p.pie,{type:"funnel",animate:z,translate:function(){var a=function(k,a){return/%$/.test(k)?a*parseInt(k,10)/100:parseInt(k,10)},g=0,e=this.chart,f=e.plotWidth, 10 | e=e.plotHeight,h=0,c=this.options,C=c.center,b=a(C[0],f),d=a(C[0],e),p=a(c.width,f),i,q,j=a(c.height,e),r=a(c.neckWidth,f),s=a(c.neckHeight,e),v=j-s,a=this.data,w,x,u=c.dataLabels.position==="left"?1:0,y,m,B,n,l,t,o;this.getWidthAt=q=function(k){return k>j-s||j===s?r:r+(p-r)*((j-s-k)/(j-s))};this.getX=function(k,a){return b+(a?-1:1)*(q(k)/2+c.dataLabels.distance)};this.center=[b,d,j];this.centerX=b;A(a,function(a){g+=a.y});A(a,function(a){o=null;x=g?a.y/g:0;m=d-j/2+h*j;l=m+x*j;i=q(m);y=b-i/2;B=y+ 11 | i;i=q(l);n=b-i/2;t=n+i;m>v?(y=n=b-r/2,B=t=b+r/2):l>v&&(o=l,i=q(v),n=b-i/2,t=n+i,l=v);w=["M",y,m,"L",B,m,t,l];o&&w.push(t,o,n,o);w.push(n,l,"Z");a.shapeType="path";a.shapeArgs={d:w};a.percentage=x*100;a.plotX=b;a.plotY=(m+(o||l))/2;a.tooltipPos=[b,a.plotY];a.slice=z;a.half=u;h+=x});this.setTooltipPoints()},drawPoints:function(){var a=this,g=a.options,e=a.chart.renderer;A(a.data,function(f){var h=f.graphic,c=f.shapeArgs;h?h.animate(c):f.graphic=e.path(c).attr({fill:f.color,stroke:g.borderColor,"stroke-width":g.borderWidth}).add(a.group)})}, 12 | sortByAngle:z,drawDataLabels:function(){var a=this.data,g=this.options.dataLabels.distance,e,f,h,c=a.length,d,b;for(this.center[2]-=2*g;c--;)h=a[c],f=(e=h.half)?1:-1,b=h.plotY,d=this.getX(b,e),h.labelPos=[0,b,d+(g-5)*f,b,d+g*f,b,e?"right":"left",0];p.pie.prototype.drawDataLabels.call(this)}})})(Highcharts); 13 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/highcharts/modules/heatmap.js: -------------------------------------------------------------------------------- 1 | (function(b){var k=b.seriesTypes,l=b.each;k.heatmap=b.extendClass(k.map,{colorKey:"z",useMapGeometry:!1,pointArrayMap:["y","z"],translate:function(){var c=this,b=c.options,i=Number.MAX_VALUE,j=Number.MIN_VALUE;c.generatePoints();l(c.data,function(a){var e=a.x,f=a.y,d=a.z,g=(b.colsize||1)/2,h=(b.rowsize||1)/2;a.path=["M",e-g,f-h,"L",e+g,f-h,"L",e+g,f+h,"L",e-g,f+h,"Z"];a.shapeType="path";a.shapeArgs={d:c.translatePath(a.path)};typeof d==="number"&&(d>j?j=d:d dataMax) { 39 | dataMax = value; 40 | } else if (value < dataMin) { 41 | dataMin = value; 42 | } 43 | } 44 | }); 45 | 46 | series.translateColors(dataMin, dataMax); 47 | }, 48 | 49 | getBox: function () {} 50 | 51 | }); 52 | 53 | }(Highcharts)); 54 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/highcharts/modules/no-data-to-display.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v3.0.6 (2013-10-04) 3 | Plugin for displaying a message when there is no data visible in chart. 4 | 5 | (c) 2010-2013 Highsoft AS 6 | Author: Øystein Moseng 7 | 8 | License: www.highcharts.com/license 9 | */ 10 | (function(c){function f(){return!!this.points.length}function g(){this.hasData()?this.hideNoData():this.showNoData()}var d=c.seriesTypes,e=c.Chart.prototype,h=c.getOptions(),i=c.extend;i(h.lang,{noData:"No data to display"});h.noData={position:{x:0,y:0,align:"center",verticalAlign:"middle"},attr:{},style:{fontWeight:"bold",fontSize:"12px",color:"#60606a"}};d.pie.prototype.hasData=f;if(d.gauge)d.gauge.prototype.hasData=f;if(d.waterfall)d.waterfall.prototype.hasData=f;c.Series.prototype.hasData=function(){return this.dataMax!== 11 | void 0&&this.dataMin!==void 0};e.showNoData=function(a){var b=this.options,a=a||b.lang.noData,b=b.noData;if(!this.noDataLabel)this.noDataLabel=this.renderer.label(a,0,0,null,null,null,null,null,"no-data").attr(b.attr).css(b.style).add(),this.noDataLabel.align(i(this.noDataLabel.getBBox(),b.position),!1,"plotBox")};e.hideNoData=function(){if(this.noDataLabel)this.noDataLabel=this.noDataLabel.destroy()};e.hasData=function(){for(var a=this.series,b=a.length;b--;)if(a[b].hasData()&&!a[b].options.isInternal)return!0; 12 | return!1};e.callbacks.push(function(a){c.addEvent(a,"load",g);c.addEvent(a,"redraw",g)})})(Highcharts); 13 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/highcharts/modules/no-data-to-display.src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Highcharts JS v3.0.6 (2013-10-04) 3 | * Plugin for displaying a message when there is no data visible in chart. 4 | * 5 | * (c) 2010-2013 Highsoft AS 6 | * Author: Øystein Moseng 7 | * 8 | * License: www.highcharts.com/license 9 | */ 10 | 11 | (function (H) { // docs 12 | 13 | var seriesTypes = H.seriesTypes, 14 | chartPrototype = H.Chart.prototype, 15 | defaultOptions = H.getOptions(), 16 | extend = H.extend; 17 | 18 | // Add language option 19 | extend(defaultOptions.lang, { 20 | noData: 'No data to display' 21 | }); 22 | 23 | // Add default display options for message 24 | defaultOptions.noData = { 25 | position: { 26 | x: 0, 27 | y: 0, 28 | align: 'center', 29 | verticalAlign: 'middle' 30 | }, 31 | attr: { 32 | }, 33 | style: { 34 | fontWeight: 'bold', 35 | fontSize: '12px', 36 | color: '#60606a' 37 | } 38 | }; 39 | 40 | /** 41 | * Define hasData functions for series. These return true if there are data points on this series within the plot area 42 | */ 43 | function hasDataPie() { 44 | return !!this.points.length; /* != 0 */ 45 | } 46 | 47 | seriesTypes.pie.prototype.hasData = hasDataPie; 48 | 49 | if (seriesTypes.gauge) { 50 | seriesTypes.gauge.prototype.hasData = hasDataPie; 51 | } 52 | 53 | if (seriesTypes.waterfall) { 54 | seriesTypes.waterfall.prototype.hasData = hasDataPie; 55 | } 56 | 57 | H.Series.prototype.hasData = function () { 58 | return this.dataMax !== undefined && this.dataMin !== undefined; 59 | }; 60 | 61 | /** 62 | * Display a no-data message. 63 | * 64 | * @param {String} str An optional message to show in place of the default one 65 | */ 66 | chartPrototype.showNoData = function (str) { 67 | var chart = this, 68 | options = chart.options, 69 | text = str || options.lang.noData, 70 | noDataOptions = options.noData; 71 | 72 | if (!chart.noDataLabel) { 73 | chart.noDataLabel = chart.renderer.label(text, 0, 0, null, null, null, null, null, 'no-data') 74 | .attr(noDataOptions.attr) 75 | .css(noDataOptions.style) 76 | .add(); 77 | chart.noDataLabel.align(extend(chart.noDataLabel.getBBox(), noDataOptions.position), false, 'plotBox'); 78 | } 79 | }; 80 | 81 | /** 82 | * Hide no-data message 83 | */ 84 | chartPrototype.hideNoData = function () { 85 | var chart = this; 86 | if (chart.noDataLabel) { 87 | chart.noDataLabel = chart.noDataLabel.destroy(); 88 | } 89 | }; 90 | 91 | /** 92 | * Returns true if there are data points within the plot area now 93 | */ 94 | chartPrototype.hasData = function () { 95 | var chart = this, 96 | series = chart.series, 97 | i = series.length; 98 | 99 | while (i--) { 100 | if (series[i].hasData() && !series[i].options.isInternal) { 101 | return true; 102 | } 103 | } 104 | 105 | return false; 106 | }; 107 | 108 | /** 109 | * Show no-data message if there is no data in sight. Otherwise, hide it. 110 | */ 111 | function handleNoData() { 112 | var chart = this; 113 | if (chart.hasData()) { 114 | chart.hideNoData(); 115 | } else { 116 | chart.showNoData(); 117 | } 118 | } 119 | 120 | /** 121 | * Add event listener to handle automatic display of no-data message 122 | */ 123 | chartPrototype.callbacks.push(function (chart) { 124 | H.addEvent(chart, 'load', handleNoData); 125 | H.addEvent(chart, 'redraw', handleNoData); 126 | }); 127 | 128 | }(Highcharts)); 129 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/highcharts/themes/grid.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Grid theme for Highcharts JS 3 | * @author Torstein Hønsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'], 8 | chart: { 9 | backgroundColor: { 10 | linearGradient: { x1: 0, y1: 0, x2: 1, y2: 1 }, 11 | stops: [ 12 | [0, 'rgb(255, 255, 255)'], 13 | [1, 'rgb(240, 240, 255)'] 14 | ] 15 | }, 16 | borderWidth: 2, 17 | plotBackgroundColor: 'rgba(255, 255, 255, .9)', 18 | plotShadow: true, 19 | plotBorderWidth: 1 20 | }, 21 | title: { 22 | style: { 23 | color: '#000', 24 | font: 'bold 16px "Trebuchet MS", Verdana, sans-serif' 25 | } 26 | }, 27 | subtitle: { 28 | style: { 29 | color: '#666666', 30 | font: 'bold 12px "Trebuchet MS", Verdana, sans-serif' 31 | } 32 | }, 33 | xAxis: { 34 | gridLineWidth: 1, 35 | lineColor: '#000', 36 | tickColor: '#000', 37 | labels: { 38 | style: { 39 | color: '#000', 40 | font: '11px Trebuchet MS, Verdana, sans-serif' 41 | } 42 | }, 43 | title: { 44 | style: { 45 | color: '#333', 46 | fontWeight: 'bold', 47 | fontSize: '12px', 48 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 49 | 50 | } 51 | } 52 | }, 53 | yAxis: { 54 | minorTickInterval: 'auto', 55 | lineColor: '#000', 56 | lineWidth: 1, 57 | tickWidth: 1, 58 | tickColor: '#000', 59 | labels: { 60 | style: { 61 | color: '#000', 62 | font: '11px Trebuchet MS, Verdana, sans-serif' 63 | } 64 | }, 65 | title: { 66 | style: { 67 | color: '#333', 68 | fontWeight: 'bold', 69 | fontSize: '12px', 70 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 71 | } 72 | } 73 | }, 74 | legend: { 75 | itemStyle: { 76 | font: '9pt Trebuchet MS, Verdana, sans-serif', 77 | color: 'black' 78 | 79 | }, 80 | itemHoverStyle: { 81 | color: '#039' 82 | }, 83 | itemHiddenStyle: { 84 | color: 'gray' 85 | } 86 | }, 87 | labels: { 88 | style: { 89 | color: '#99b' 90 | } 91 | }, 92 | 93 | navigation: { 94 | buttonOptions: { 95 | theme: { 96 | stroke: '#CCCCCC' 97 | } 98 | } 99 | } 100 | }; 101 | 102 | // Apply the theme 103 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 104 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/highcharts/themes/skies.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Skies theme for Highcharts JS 3 | * @author Torstein Hønsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ["#514F78", "#42A07B", "#9B5E4A", "#72727F", "#1F949A", "#82914E", "#86777F", "#42A07B"], 8 | chart: { 9 | className: 'skies', 10 | borderWidth: 0, 11 | plotShadow: true, 12 | plotBackgroundImage: 'http://www.highcharts.com/demo/gfx/skies.jpg', 13 | plotBackgroundColor: { 14 | linearGradient: [0, 0, 250, 500], 15 | stops: [ 16 | [0, 'rgba(255, 255, 255, 1)'], 17 | [1, 'rgba(255, 255, 255, 0)'] 18 | ] 19 | }, 20 | plotBorderWidth: 1 21 | }, 22 | title: { 23 | style: { 24 | color: '#3E576F', 25 | font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 26 | } 27 | }, 28 | subtitle: { 29 | style: { 30 | color: '#6D869F', 31 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 32 | } 33 | }, 34 | xAxis: { 35 | gridLineWidth: 0, 36 | lineColor: '#C0D0E0', 37 | tickColor: '#C0D0E0', 38 | labels: { 39 | style: { 40 | color: '#666', 41 | fontWeight: 'bold' 42 | } 43 | }, 44 | title: { 45 | style: { 46 | color: '#666', 47 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 48 | } 49 | } 50 | }, 51 | yAxis: { 52 | alternateGridColor: 'rgba(255, 255, 255, .5)', 53 | lineColor: '#C0D0E0', 54 | tickColor: '#C0D0E0', 55 | tickWidth: 1, 56 | labels: { 57 | style: { 58 | color: '#666', 59 | fontWeight: 'bold' 60 | } 61 | }, 62 | title: { 63 | style: { 64 | color: '#666', 65 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 66 | } 67 | } 68 | }, 69 | legend: { 70 | itemStyle: { 71 | font: '9pt Trebuchet MS, Verdana, sans-serif', 72 | color: '#3E576F' 73 | }, 74 | itemHoverStyle: { 75 | color: 'black' 76 | }, 77 | itemHiddenStyle: { 78 | color: 'silver' 79 | } 80 | }, 81 | labels: { 82 | style: { 83 | color: '#3E576F' 84 | } 85 | } 86 | }; 87 | 88 | // Apply the theme 89 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 90 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/snapscreen/UEditorSnapscreen.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/third-party/snapscreen/UEditorSnapscreen.exe -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/video-js/font/vjs.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/third-party/video-js/font/vjs.eot -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/video-js/font/vjs.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/third-party/video-js/font/vjs.ttf -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/video-js/font/vjs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/third-party/video-js/font/vjs.woff -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/video-js/video-js.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/third-party/video-js/video-js.swf -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/webuploader/Uploader.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/third-party/webuploader/Uploader.swf -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/webuploader/webuploader.css: -------------------------------------------------------------------------------- 1 | .webuploader-container { 2 | position: relative; 3 | } 4 | .webuploader-element-invisible { 5 | position: absolute !important; 6 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 7 | clip: rect(1px,1px,1px,1px); 8 | } 9 | .webuploader-pick { 10 | position: relative; 11 | display: inline-block; 12 | cursor: pointer; 13 | background: #00b7ee; 14 | padding: 10px 15px; 15 | color: #fff; 16 | text-align: center; 17 | border-radius: 3px; 18 | overflow: hidden; 19 | } 20 | .webuploader-pick-hover { 21 | background: #00a2d4; 22 | } 23 | 24 | .webuploader-pick-disable { 25 | opacity: 0.6; 26 | pointer-events:none; 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/assets/ueditor/third-party/zeroclipboard/ZeroClipboard.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/assets/ueditor/third-party/zeroclipboard/ZeroClipboard.swf -------------------------------------------------------------------------------- /src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // The file contents for the current environment will overwrite these during build. 2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do 3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead. 4 | // The list of which env maps to which file can be found in `.angular-cli.json`. 5 | 6 | export const environment = { 7 | production: false 8 | }; 9 | -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cipchk/ngx-ueditor/fc78322525834ff2293a99f10e9605b5df5ef596/src/favicon.ico -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | NgxUEditor | Angular for Baidu UEditor 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | Loading... 18 |
19 | 20 | Fork me on GitHub 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { environment } from './environments/environment'; 5 | import { AppModule } from './app/app.module'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /src/polyfills.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file includes polyfills needed by Angular and is loaded before the app. 3 | * You can add your own extra polyfills to this file. 4 | * 5 | * This file is divided into 2 sections: 6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. 7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main 8 | * file. 9 | * 10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that 11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), 12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. 13 | * 14 | * Learn more in https://angular.io/guide/browser-support 15 | */ 16 | 17 | /*************************************************************************************************** 18 | * BROWSER POLYFILLS 19 | */ 20 | 21 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */ 22 | // import 'classlist.js'; // Run `npm install --save classlist.js`. 23 | 24 | /** 25 | * Web Animations `@angular/platform-browser/animations` 26 | * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. 27 | * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). 28 | */ 29 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`. 30 | 31 | /** 32 | * By default, zone.js will patch all possible macroTask and DomEvents 33 | * user can disable parts of macroTask/DomEvents patch by setting following flags 34 | * because those flags need to be set before `zone.js` being loaded, and webpack 35 | * will put import in the top of bundle, so user need to create a separate file 36 | * in this directory (for example: zone-flags.ts), and put the following flags 37 | * into that file, and then add the following code before importing zone.js. 38 | * import './zone-flags'; 39 | * 40 | * The flags allowed in zone-flags.ts are listed here. 41 | * 42 | * The following flags will work for all browsers. 43 | * 44 | * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame 45 | * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick 46 | * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames 47 | * 48 | * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js 49 | * with the following flag, it will bypass `zone.js` patch for IE/Edge 50 | * 51 | * (window as any).__Zone_enable_cross_context_check = true; 52 | * 53 | */ 54 | 55 | /*************************************************************************************************** 56 | * Zone JS is required by default for Angular itself. 57 | */ 58 | import 'zone.js'; // Included with Angular CLI. 59 | 60 | /*************************************************************************************************** 61 | * APPLICATION IMPORTS 62 | */ 63 | -------------------------------------------------------------------------------- /src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | button + button { 3 | margin-left: 8px; 4 | } 5 | -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": ["src/main.ts", "src/polyfills.ts"], 9 | "include": ["src/**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "compileOnSave": false, 4 | "compilerOptions": { 5 | "baseUrl": "./", 6 | "outDir": "./dist/out-tsc", 7 | "forceConsistentCasingInFileNames": true, 8 | "strict": true, 9 | "noImplicitOverride": true, 10 | "noPropertyAccessFromIndexSignature": true, 11 | "noImplicitReturns": true, 12 | "noFallthroughCasesInSwitch": true, 13 | "sourceMap": true, 14 | "declaration": false, 15 | "downlevelIteration": true, 16 | "experimentalDecorators": true, 17 | "moduleResolution": "node", 18 | "importHelpers": true, 19 | "target": "es2017", 20 | "module": "es2020", 21 | "lib": [ 22 | "es2020", 23 | "dom" 24 | ], 25 | "paths": { 26 | "ngx-ueditor": ["lib/index"] 27 | } 28 | }, 29 | "angularCompilerOptions": { 30 | "enableI18nLegacyMessageIdFormat": false, 31 | "strictInjectionParameters": true, 32 | "strictInputAccessModifiers": true, 33 | "strictTemplates": true 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": ["jasmine"] 7 | }, 8 | "files": ["lib/test.ts", "src/polyfills.ts"], 9 | "include": ["lib/**/*.spec.ts", "lib/**/*.d.ts"] 10 | } 11 | --------------------------------------------------------------------------------