promethee 1.4.8 → 1.4.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -6
- data/app/assets/javascripts/promethee.js +4 -0
- data/app/assets/stylesheets/promethee-edit.sass +1 -0
- data/config/initializers/assets.rb +1 -0
- data/lib/promethee/rails/version.rb +1 -1
- data/node_modules/angular-summernote/CHANGELOG.md +149 -0
- data/node_modules/angular-summernote/LICENSE-MIT +22 -0
- data/node_modules/angular-summernote/README.md +270 -0
- data/node_modules/angular-summernote/bower.json +49 -0
- data/{vendor/assets/javascripts → node_modules/angular-summernote/dist}/angular-summernote.js +0 -0
- data/node_modules/angular-summernote/dist/angular-summernote.min.js +2 -0
- data/node_modules/angular-summernote/examples/fontstyle-plugin.html +48 -0
- data/node_modules/angular-summernote/examples/index.html +180 -0
- data/node_modules/angular-summernote/examples/index2.html +60 -0
- data/node_modules/angular-summernote/examples/index3.html +57 -0
- data/node_modules/angular-summernote/gulpfile.js +115 -0
- data/node_modules/angular-summernote/package.json +53 -0
- data/node_modules/angular-summernote/src/angular-summernote.js +206 -0
- data/node_modules/angular-summernote/test/angular-summernote.test.js +660 -0
- data/node_modules/angular-summernote/test/chai.conf.js +6 -0
- data/node_modules/angular-summernote/test/coverage/Chrome 37.0.2062 (Mac OS X 10.9.4)/index.html +350 -0
- data/node_modules/angular-summernote/test/coverage/Chrome 37.0.2062 (Mac OS X 10.9.4)/prettify.css +1 -0
- data/node_modules/angular-summernote/test/coverage/Chrome 37.0.2062 (Mac OS X 10.9.4)/prettify.js +1 -0
- data/node_modules/angular-summernote/test/coverage/Chrome 37.0.2062 (Mac OS X 10.9.4)/src/angular-summernote.js.html +694 -0
- data/node_modules/angular-summernote/test/coverage/Chrome 37.0.2062 (Mac OS X 10.9.4)/src/index.html +350 -0
- data/node_modules/angular-summernote/test/karma-angular-1-2-x.conf.js +33 -0
- data/node_modules/angular-summernote/test/karma-angular-1-3-x.conf.js +33 -0
- data/node_modules/angular-summernote/test/karma-angular-1-4-x.conf.js +33 -0
- data/node_modules/angular-summernote/test/karma-shared.conf.js +64 -0
- data/node_modules/angular-summernote/test/karma.conf.js +33 -0
- data/{vendor/assets/javascripts/summernote/locales/de-DE.js → node_modules/angular-summernote/test/lang/summernote-de-DE.js} +2 -17
- data/node_modules/angular-summernote/test/mocha.conf.js +3 -0
- data/node_modules/angular-ui-sortable/API.md +84 -0
- data/node_modules/angular-ui-sortable/CONTRIBUTING.md +12 -0
- data/node_modules/angular-ui-sortable/LICENSE +21 -0
- data/node_modules/angular-ui-sortable/README.md +350 -0
- data/node_modules/angular-ui-sortable/bower.json +26 -0
- data/node_modules/angular-ui-sortable/demo/demo.css +34 -0
- data/node_modules/angular-ui-sortable/demo/demo.html +29 -0
- data/node_modules/angular-ui-sortable/demo/demo.js +41 -0
- data/node_modules/angular-ui-sortable/dist/sortable.js +593 -0
- data/node_modules/angular-ui-sortable/dist/sortable.min.js +8 -0
- data/node_modules/angular-ui-sortable/gruntFile.js +202 -0
- data/node_modules/angular-ui-sortable/package.json +48 -0
- data/node_modules/angular-ui-sortable/publish.js +41 -0
- data/{vendor/assets/javascripts/ui-sortable.js → node_modules/angular-ui-sortable/src/sortable.js} +106 -200
- data/node_modules/angular-ui-sortable/test/bower_overrides.json +13 -0
- data/node_modules/angular-ui-sortable/test/karma.conf.js +85 -0
- data/node_modules/angular-ui-sortable/test/libs/jquery.simulate.dragandrevert.js +60 -0
- data/node_modules/angular-ui-sortable/test/sortable.e2e.callbacks.attr.spec.js +199 -0
- data/node_modules/angular-ui-sortable/test/sortable.e2e.callbacks.spec.js +729 -0
- data/node_modules/angular-ui-sortable/test/sortable.e2e.directiveoptions.spec.js +554 -0
- data/node_modules/angular-ui-sortable/test/sortable.e2e.directives.spec.js +371 -0
- data/node_modules/angular-ui-sortable/test/sortable.e2e.events.spec.js +167 -0
- data/node_modules/angular-ui-sortable/test/sortable.e2e.multi.spec.js +1232 -0
- data/node_modules/angular-ui-sortable/test/sortable.e2e.nested.spec.js +186 -0
- data/node_modules/angular-ui-sortable/test/sortable.e2e.spec.js +895 -0
- data/node_modules/angular-ui-sortable/test/sortable.spec.js +440 -0
- data/node_modules/angular-ui-sortable/test/sortable.test-directives.js +54 -0
- data/node_modules/angular-ui-sortable/test/sortable.test-helper.js +114 -0
- data/node_modules/angular-ui-sortable/test/sortable.tests.css +12 -0
- data/node_modules/ng-file-upload/LICENSE +20 -0
- data/node_modules/ng-file-upload/README.md +616 -0
- data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/FileAPI.flash.swf +0 -0
- data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/FileAPI.js +0 -0
- data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/FileAPI.min.js +0 -0
- data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/ng-file-upload-all.js +0 -0
- data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/ng-file-upload-all.min.js +0 -0
- data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/ng-file-upload-shim.js +0 -0
- data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/ng-file-upload-shim.min.js +0 -0
- data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/ng-file-upload.js +0 -0
- data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/ng-file-upload.min.js +0 -0
- data/node_modules/ng-file-upload/index.js +2 -0
- data/node_modules/ng-file-upload/package.json +42 -0
- data/node_modules/summernote/CODE_OF_CONDUCT.md +46 -0
- data/node_modules/summernote/CONTRIBUTING.md +67 -0
- data/node_modules/summernote/ISSUE_TEMPLATE.md +14 -0
- data/node_modules/summernote/LICENSE +21 -0
- data/node_modules/summernote/PULL_REQUEST_TEMPLATE.md +28 -0
- data/node_modules/summernote/README.md +90 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/base.css +213 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/index.html +262 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/prettify.css +1 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/prettify.js +1 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/sort-arrow-sprite.png +0 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/sorter.js +158 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/Context.js.html +758 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/core/async.js.html +206 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/core/dom.js.html +3329 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/core/env.js.html +386 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/core/func.js.html +551 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/core/index.html +171 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/core/key.js.html +341 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/core/lists.js.html +695 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/core/range.js.html +2441 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/editing/Bullet.js.html +668 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/editing/History.js.html +380 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/editing/Style.js.html +539 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/editing/Table.js.html +1787 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/editing/Typing.js.html +335 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/editing/index.html +145 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/index.html +119 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/AirPopover.js.html +284 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/AutoLink.js.html +248 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/AutoSync.js.html +122 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/Buttons.js.html +2504 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/Clipboard.js.html +149 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/Codeview.js.html +434 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/Dropzone.js.html +410 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/Editor.js.html +2648 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/Fullscreen.js.html +218 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/Handle.js.html +494 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/HelpDialog.js.html +302 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/HintPopover.js.html +743 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/ImageDialog.js.html +458 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/ImagePopover.js.html +239 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/LinkDialog.js.html +587 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/LinkPopover.js.html +272 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/Placeholder.js.html +182 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/Statusbar.js.html +191 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/TablePopover.js.html +278 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/Toolbar.js.html +473 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/VideoDialog.js.html +680 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/index.html +353 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/renderer.js.html +263 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/summernote-en-US.js.html +542 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/bs3/index.html +106 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/bs3/settings.js.html +956 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/bs3/ui.js.html +776 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/bs4/index.html +106 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/bs4/settings.js.html +968 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/bs4/ui.js.html +791 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/index.html +93 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/lite/index.html +106 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/lite/settings.js.html +953 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/lite/ui.js.html +1919 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/lite/ui/DropdownUI.js.html +260 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/lite/ui/ModalUI.js.html +167 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/lite/ui/PopoverUI.js.html +347 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/lite/ui/TooltipUI.js.html +344 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/lite/ui/index.html +132 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/summernote.js.html +203 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/Context.spec.js.html +323 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/core/dom.spec.js.html +1046 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/core/func.spec.js.html +482 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/core/index.html +145 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/core/key.spec.js.html +140 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/core/lists.spec.js.html +419 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/core/range.spec.js.html +1286 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/editing/Table.spec.js.html +1724 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/editing/index.html +106 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/editing/style.spec.js.html +341 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/index.html +93 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/module/Codeview.spec.js.html +161 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/module/Editor.spec.js.html +1235 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/module/Fullscreen.spec.js.html +161 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/module/index.html +119 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/bs/module/Buttons.spec.js.html +770 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/bs/module/VideoDialog.spec.js.html +209 -0
- data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/bs/module/index.html +106 -0
- data/node_modules/summernote/dist/font/summernote.eot +0 -0
- data/node_modules/summernote/dist/font/summernote.ttf +0 -0
- data/node_modules/summernote/dist/font/summernote.woff +0 -0
- data/{vendor/assets/javascripts/summernote/locales/ar-AR.js → node_modules/summernote/dist/lang/summernote-ar-AR.js} +55 -4
- data/node_modules/summernote/dist/lang/summernote-ar-AR.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/bg-BG.js → node_modules/summernote/dist/lang/summernote-bg-BG.js} +60 -4
- data/node_modules/summernote/dist/lang/summernote-bg-BG.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/ca-ES.js → node_modules/summernote/dist/lang/summernote-ca-ES.js} +12 -4
- data/node_modules/summernote/dist/lang/summernote-ca-ES.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/cs-CZ.js → node_modules/summernote/dist/lang/summernote-cs-CZ.js} +50 -4
- data/node_modules/summernote/dist/lang/summernote-cs-CZ.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/da-DK.js → node_modules/summernote/dist/lang/summernote-da-DK.js} +46 -5
- data/node_modules/summernote/dist/lang/summernote-da-DK.min.js +3 -0
- data/node_modules/summernote/dist/lang/summernote-de-DE.js +154 -0
- data/node_modules/summernote/dist/lang/summernote-de-DE.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/el-GR.js → node_modules/summernote/dist/lang/summernote-el-GR.js} +11 -3
- data/node_modules/summernote/dist/lang/summernote-el-GR.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/es-ES.js → node_modules/summernote/dist/lang/summernote-es-ES.js} +12 -4
- data/node_modules/summernote/dist/lang/summernote-es-ES.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/es-EU.js → node_modules/summernote/dist/lang/summernote-es-EU.js} +55 -4
- data/node_modules/summernote/dist/lang/summernote-es-EU.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/fa-IR.js → node_modules/summernote/dist/lang/summernote-fa-IR.js} +55 -5
- data/node_modules/summernote/dist/lang/summernote-fa-IR.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/fi-FI.js → node_modules/summernote/dist/lang/summernote-fi-FI.js} +52 -3
- data/node_modules/summernote/dist/lang/summernote-fi-FI.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/fr-FR.js → node_modules/summernote/dist/lang/summernote-fr-FR.js} +3 -2
- data/node_modules/summernote/dist/lang/summernote-fr-FR.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/gl-ES.js → node_modules/summernote/dist/lang/summernote-gl-ES.js} +12 -4
- data/node_modules/summernote/dist/lang/summernote-gl-ES.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/he-IL.js → node_modules/summernote/dist/lang/summernote-he-IL.js} +51 -3
- data/node_modules/summernote/dist/lang/summernote-he-IL.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/hr-HR.js → node_modules/summernote/dist/lang/summernote-hr-HR.js} +54 -3
- data/node_modules/summernote/dist/lang/summernote-hr-HR.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/hu-HU.js → node_modules/summernote/dist/lang/summernote-hu-HU.js} +25 -5
- data/node_modules/summernote/dist/lang/summernote-hu-HU.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/id-ID.js → node_modules/summernote/dist/lang/summernote-id-ID.js} +56 -4
- data/node_modules/summernote/dist/lang/summernote-id-ID.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/it-IT.js → node_modules/summernote/dist/lang/summernote-it-IT.js} +55 -4
- data/node_modules/summernote/dist/lang/summernote-it-IT.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/ja-JP.js → node_modules/summernote/dist/lang/summernote-ja-JP.js} +32 -10
- data/node_modules/summernote/dist/lang/summernote-ja-JP.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/ko-KR.js → node_modules/summernote/dist/lang/summernote-ko-KR.js} +44 -4
- data/node_modules/summernote/dist/lang/summernote-ko-KR.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/lt-LT.js → node_modules/summernote/dist/lang/summernote-lt-LT.js} +52 -4
- data/node_modules/summernote/dist/lang/summernote-lt-LT.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/lt-LV.js → node_modules/summernote/dist/lang/summernote-lt-LV.js} +27 -7
- data/node_modules/summernote/dist/lang/summernote-lt-LV.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/mn-MN.js → node_modules/summernote/dist/lang/summernote-mn-MN.js} +43 -4
- data/node_modules/summernote/dist/lang/summernote-mn-MN.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/nb-NO.js → node_modules/summernote/dist/lang/summernote-nb-NO.js} +53 -3
- data/node_modules/summernote/dist/lang/summernote-nb-NO.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/nl-NL.js → node_modules/summernote/dist/lang/summernote-nl-NL.js} +55 -4
- data/node_modules/summernote/dist/lang/summernote-nl-NL.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/pl-PL.js → node_modules/summernote/dist/lang/summernote-pl-PL.js} +46 -3
- data/node_modules/summernote/dist/lang/summernote-pl-PL.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/pt-BR.js → node_modules/summernote/dist/lang/summernote-pt-BR.js} +25 -8
- data/node_modules/summernote/dist/lang/summernote-pt-BR.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/pt-PT.js → node_modules/summernote/dist/lang/summernote-pt-PT.js} +54 -3
- data/node_modules/summernote/dist/lang/summernote-pt-PT.min.js +3 -0
- data/node_modules/summernote/dist/lang/summernote-ro-RO.js +155 -0
- data/node_modules/summernote/dist/lang/summernote-ro-RO.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/ru-RU.js → node_modules/summernote/dist/lang/summernote-ru-RU.js} +46 -3
- data/node_modules/summernote/dist/lang/summernote-ru-RU.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/sk-SK.js → node_modules/summernote/dist/lang/summernote-sk-SK.js} +54 -3
- data/node_modules/summernote/dist/lang/summernote-sk-SK.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/sl-SI.js → node_modules/summernote/dist/lang/summernote-sl-SI.js} +53 -4
- data/node_modules/summernote/dist/lang/summernote-sl-SI.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/sr-RS-Latin.js → node_modules/summernote/dist/lang/summernote-sr-RS-Latin.js} +54 -3
- data/node_modules/summernote/dist/lang/summernote-sr-RS-Latin.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/sr-RS.js → node_modules/summernote/dist/lang/summernote-sr-RS.js} +54 -3
- data/node_modules/summernote/dist/lang/summernote-sr-RS.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/sv-SE.js → node_modules/summernote/dist/lang/summernote-sv-SE.js} +55 -4
- data/node_modules/summernote/dist/lang/summernote-sv-SE.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/ta-IN.js → node_modules/summernote/dist/lang/summernote-ta-IN.js} +46 -4
- data/node_modules/summernote/dist/lang/summernote-ta-IN.min.js +3 -0
- data/node_modules/summernote/dist/lang/summernote-th-TH.js +155 -0
- data/node_modules/summernote/dist/lang/summernote-th-TH.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/tr-TR.js → node_modules/summernote/dist/lang/summernote-tr-TR.js} +3 -2
- data/node_modules/summernote/dist/lang/summernote-tr-TR.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/uk-UA.js → node_modules/summernote/dist/lang/summernote-uk-UA.js} +48 -4
- data/node_modules/summernote/dist/lang/summernote-uk-UA.min.js +3 -0
- data/node_modules/summernote/dist/lang/summernote-uz-UZ.js +112 -0
- data/node_modules/summernote/dist/lang/summernote-uz-UZ.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/vi-VN.js → node_modules/summernote/dist/lang/summernote-vi-VN.js} +55 -4
- data/node_modules/summernote/dist/lang/summernote-vi-VN.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/zh-CN.js → node_modules/summernote/dist/lang/summernote-zh-CN.js} +20 -7
- data/node_modules/summernote/dist/lang/summernote-zh-CN.min.js +3 -0
- data/{vendor/assets/javascripts/summernote/locales/zh-TW.js → node_modules/summernote/dist/lang/summernote-zh-TW.js} +45 -3
- data/node_modules/summernote/dist/lang/summernote-zh-TW.min.js +3 -0
- data/node_modules/summernote/dist/summernote-0.8.10-dist.zip +0 -0
- data/node_modules/summernote/dist/summernote-bs4.css +1 -0
- data/node_modules/summernote/dist/summernote-bs4.js +7323 -0
- data/node_modules/summernote/dist/summernote-bs4.js.map +1 -0
- data/node_modules/summernote/dist/summernote-bs4.min.js +3 -0
- data/node_modules/summernote/dist/summernote-lite.css +1 -0
- data/node_modules/summernote/dist/summernote-lite.js +7837 -0
- data/node_modules/summernote/dist/summernote-lite.js.map +1 -0
- data/node_modules/summernote/dist/summernote.css +1 -0
- data/node_modules/summernote/dist/summernote.js +7315 -0
- data/node_modules/summernote/dist/summernote.js.map +1 -0
- data/node_modules/summernote/dist/summernote.min.js +3 -0
- data/node_modules/summernote/examples/airmode.html +35 -0
- data/node_modules/summernote/examples/bs3.html +60 -0
- data/node_modules/summernote/examples/bs4.html +57 -0
- data/node_modules/summernote/examples/codemirror.html +45 -0
- data/node_modules/summernote/examples/external-api.html +76 -0
- data/node_modules/summernote/examples/hint-emoji.html +61 -0
- data/node_modules/summernote/examples/hint-symbols_mathematical-symbols_Greek-letters.html +54 -0
- data/node_modules/summernote/examples/hint-userdefine.html +48 -0
- data/node_modules/summernote/examples/ie8.html +32 -0
- data/node_modules/summernote/examples/jquery-custom-event.html +119 -0
- data/node_modules/summernote/examples/jquery19lt.html +25 -0
- data/node_modules/summernote/examples/lang.html +33 -0
- data/node_modules/summernote/examples/link-blank.html +33 -0
- data/node_modules/summernote/examples/lite.html +24 -0
- data/node_modules/summernote/examples/nativestyle.html +32 -0
- data/node_modules/summernote/examples/ondialog-multitab.html +77 -0
- data/node_modules/summernote/examples/ondialog.html +58 -0
- data/node_modules/summernote/examples/plugin-hello.html +37 -0
- data/node_modules/summernote/examples/rtl.html +32 -0
- data/node_modules/summernote/examples/symbols_mathematical-symbols_Greek-letters.json +1118 -0
- data/node_modules/summernote/examples/textarea.html +46 -0
- data/node_modules/summernote/examples/toolbar-container.html +35 -0
- data/node_modules/summernote/examples/with-google-font.html +50 -0
- data/node_modules/summernote/index.html +33 -0
- data/node_modules/summernote/karma.conf.js +42 -0
- data/node_modules/summernote/lang/summernote-ar-AR.js +155 -0
- data/node_modules/summernote/lang/summernote-bg-BG.js +155 -0
- data/node_modules/summernote/lang/summernote-ca-ES.js +155 -0
- data/node_modules/summernote/lang/summernote-cs-CZ.js +149 -0
- data/node_modules/summernote/lang/summernote-da-DK.js +155 -0
- data/node_modules/summernote/lang/summernote-de-DE.js +154 -0
- data/node_modules/summernote/lang/summernote-el-GR.js +155 -0
- data/node_modules/summernote/lang/summernote-es-ES.js +155 -0
- data/node_modules/summernote/lang/summernote-es-EU.js +154 -0
- data/node_modules/summernote/lang/summernote-fa-IR.js +155 -0
- data/node_modules/summernote/lang/summernote-fi-FI.js +153 -0
- data/node_modules/summernote/lang/summernote-fr-FR.js +155 -0
- data/node_modules/summernote/lang/summernote-gl-ES.js +155 -0
- data/node_modules/summernote/lang/summernote-he-IL.js +155 -0
- data/node_modules/summernote/lang/summernote-hr-HR.js +155 -0
- data/node_modules/summernote/lang/summernote-hu-HU.js +155 -0
- data/node_modules/summernote/lang/summernote-id-ID.js +155 -0
- data/node_modules/summernote/lang/summernote-it-IT.js +155 -0
- data/node_modules/summernote/lang/summernote-ja-JP.js +155 -0
- data/node_modules/summernote/lang/summernote-ko-KR.js +155 -0
- data/node_modules/summernote/lang/summernote-lt-LT.js +155 -0
- data/node_modules/summernote/lang/summernote-lt-LV.js +155 -0
- data/node_modules/summernote/lang/summernote-mn-MN.js +157 -0
- data/node_modules/summernote/lang/summernote-nb-NO.js +154 -0
- data/node_modules/summernote/lang/summernote-nl-NL.js +155 -0
- data/node_modules/summernote/lang/summernote-pl-PL.js +155 -0
- data/node_modules/summernote/lang/summernote-pt-BR.js +155 -0
- data/node_modules/summernote/lang/summernote-pt-PT.js +154 -0
- data/node_modules/summernote/lang/summernote-ro-RO.js +155 -0
- data/node_modules/summernote/lang/summernote-ru-RU.js +155 -0
- data/node_modules/summernote/lang/summernote-sk-SK.js +153 -0
- data/node_modules/summernote/lang/summernote-sl-SI.js +155 -0
- data/node_modules/summernote/lang/summernote-sr-RS-Latin.js +155 -0
- data/node_modules/summernote/lang/summernote-sr-RS.js +155 -0
- data/node_modules/summernote/lang/summernote-sv-SE.js +155 -0
- data/node_modules/summernote/lang/summernote-ta-IN.js +155 -0
- data/node_modules/summernote/lang/summernote-th-TH.js +155 -0
- data/node_modules/summernote/lang/summernote-tr-TR.js +155 -0
- data/node_modules/summernote/lang/summernote-uk-UA.js +155 -0
- data/node_modules/summernote/lang/summernote-uz-UZ.js +112 -0
- data/node_modules/summernote/lang/summernote-vi-VN.js +155 -0
- data/node_modules/summernote/lang/summernote-zh-CN.js +155 -0
- data/node_modules/summernote/lang/summernote-zh-TW.js +155 -0
- data/node_modules/summernote/package.json +87 -0
- data/{vendor/assets/javascripts → node_modules}/summernote/plugin/databasic/summernote-ext-databasic.css +0 -0
- data/{vendor/assets/javascripts → node_modules}/summernote/plugin/databasic/summernote-ext-databasic.js +62 -73
- data/{vendor/assets/javascripts → node_modules}/summernote/plugin/hello/summernote-ext-hello.js +9 -10
- data/{vendor/assets/javascripts → node_modules}/summernote/plugin/specialchars/summernote-ext-specialchars.js +22 -25
- data/node_modules/summernote/src/icons/align-center.svg +11 -0
- data/node_modules/summernote/src/icons/align-indent.svg +11 -0
- data/node_modules/summernote/src/icons/align-justify.svg +11 -0
- data/node_modules/summernote/src/icons/align-left.svg +12 -0
- data/node_modules/summernote/src/icons/align-outdent.svg +11 -0
- data/node_modules/summernote/src/icons/align-right.svg +11 -0
- data/node_modules/summernote/src/icons/align.svg +8 -0
- data/node_modules/summernote/src/icons/arrow-circle-down.svg +1 -0
- data/node_modules/summernote/src/icons/arrow-circle-left.svg +1 -0
- data/node_modules/summernote/src/icons/arrow-circle-right.svg +1 -0
- data/node_modules/summernote/src/icons/arrow-circle-up.svg +1 -0
- data/node_modules/summernote/src/icons/arrows-alt.svg +11 -0
- data/node_modules/summernote/src/icons/arrows-h.svg +1 -0
- data/node_modules/summernote/src/icons/arrows-v.svg +1 -0
- data/node_modules/summernote/src/icons/bold.svg +11 -0
- data/node_modules/summernote/src/icons/caret.svg +9 -0
- data/node_modules/summernote/src/icons/chain-broken.svg +47 -0
- data/node_modules/summernote/src/icons/circle.svg +10 -0
- data/node_modules/summernote/src/icons/close.svg +16 -0
- data/node_modules/summernote/src/icons/code.svg +11 -0
- data/node_modules/summernote/src/icons/col-after.svg +96 -0
- data/node_modules/summernote/src/icons/col-before.svg +19 -0
- data/node_modules/summernote/src/icons/col-remove.svg +19 -0
- data/node_modules/summernote/src/icons/dist/font/summernote.eot +0 -0
- data/node_modules/summernote/src/icons/dist/font/summernote.ttf +0 -0
- data/node_modules/summernote/src/icons/dist/font/summernote.woff +0 -0
- data/node_modules/summernote/src/icons/dist/summernote.html +536 -0
- data/node_modules/summernote/src/icons/dist/summernote.less +511 -0
- data/node_modules/summernote/src/icons/eraser.svg +13 -0
- data/node_modules/summernote/src/icons/font.svg +11 -0
- data/node_modules/summernote/src/icons/frame.svg +10 -0
- data/node_modules/summernote/src/icons/italic.svg +11 -0
- data/node_modules/summernote/src/icons/link.svg +21 -0
- data/node_modules/summernote/src/icons/magic.svg +10 -0
- data/node_modules/summernote/src/icons/menu-check.svg +8 -0
- data/node_modules/summernote/src/icons/minus.svg +11 -0
- data/node_modules/summernote/src/icons/orderedlist.svg +12 -0
- data/node_modules/summernote/src/icons/pencil.svg +8 -0
- data/node_modules/summernote/src/icons/picture.svg +11 -0
- data/node_modules/summernote/src/icons/question.svg +10 -0
- data/node_modules/summernote/src/icons/redo.svg +10 -0
- data/node_modules/summernote/src/icons/row-above.svg +19 -0
- data/node_modules/summernote/src/icons/row-below.svg +19 -0
- data/node_modules/summernote/src/icons/row-remove.svg +19 -0
- data/node_modules/summernote/src/icons/special-character.svg +10 -0
- data/node_modules/summernote/src/icons/square.svg +10 -0
- data/node_modules/summernote/src/icons/strikethrough.svg +11 -0
- data/node_modules/summernote/src/icons/subscript.svg +11 -0
- data/node_modules/summernote/src/icons/summernote.svg +11 -0
- data/node_modules/summernote/src/icons/superscript.svg +11 -0
- data/node_modules/summernote/src/icons/table.svg +11 -0
- data/node_modules/summernote/src/icons/templates/summernote.css +110 -0
- data/node_modules/summernote/src/icons/templates/summernote.json +5 -0
- data/node_modules/summernote/src/icons/text-height.svg +11 -0
- data/node_modules/summernote/src/icons/trash.svg +17 -0
- data/node_modules/summernote/src/icons/underline.svg +11 -0
- data/node_modules/summernote/src/icons/undo.svg +10 -0
- data/node_modules/summernote/src/icons/unorderedlist.svg +9 -0
- data/node_modules/summernote/src/icons/video.svg +9 -0
- data/node_modules/summernote/src/js/base/Context.js +231 -0
- data/node_modules/summernote/src/js/base/core/async.js +47 -0
- data/node_modules/summernote/src/js/base/core/dom.js +1088 -0
- data/node_modules/summernote/src/js/base/core/env.js +107 -0
- data/node_modules/summernote/src/js/base/core/func.js +162 -0
- data/node_modules/summernote/src/js/base/core/key.js +92 -0
- data/node_modules/summernote/src/js/base/core/lists.js +210 -0
- data/node_modules/summernote/src/js/base/core/range.js +792 -0
- data/node_modules/summernote/src/js/base/editing/Bullet.js +201 -0
- data/node_modules/summernote/src/js/base/editing/History.js +105 -0
- data/node_modules/summernote/src/js/base/editing/Style.js +158 -0
- data/node_modules/summernote/src/js/base/editing/Table.js +574 -0
- data/node_modules/summernote/src/js/base/editing/Typing.js +90 -0
- data/node_modules/summernote/src/js/base/module/AirPopover.js +73 -0
- data/node_modules/summernote/src/js/base/module/AutoLink.js +61 -0
- data/node_modules/summernote/src/js/base/module/AutoSync.js +19 -0
- data/node_modules/summernote/src/js/base/module/Buttons.js +813 -0
- data/node_modules/summernote/src/js/base/module/Clipboard.js +28 -0
- data/node_modules/summernote/src/js/base/module/Codeview.js +123 -0
- data/node_modules/summernote/src/js/base/module/Dropzone.js +115 -0
- data/node_modules/summernote/src/js/base/module/Editor.js +861 -0
- data/node_modules/summernote/src/js/base/module/Fullscreen.js +51 -0
- data/node_modules/summernote/src/js/base/module/Handle.js +143 -0
- data/node_modules/summernote/src/js/base/module/HelpDialog.js +79 -0
- data/node_modules/summernote/src/js/base/module/HintPopover.js +226 -0
- data/node_modules/summernote/src/js/base/module/ImageDialog.js +131 -0
- data/node_modules/summernote/src/js/base/module/ImagePopover.js +58 -0
- data/node_modules/summernote/src/js/base/module/LinkDialog.js +174 -0
- data/node_modules/summernote/src/js/base/module/LinkPopover.js +69 -0
- data/node_modules/summernote/src/js/base/module/Placeholder.js +39 -0
- data/node_modules/summernote/src/js/base/module/Statusbar.js +42 -0
- data/node_modules/summernote/src/js/base/module/TablePopover.js +71 -0
- data/node_modules/summernote/src/js/base/module/Toolbar.js +136 -0
- data/node_modules/summernote/src/js/base/module/VideoDialog.js +205 -0
- data/node_modules/summernote/src/js/base/renderer.js +66 -0
- data/node_modules/summernote/src/js/base/summernote-en-US.js +159 -0
- data/node_modules/summernote/src/js/bs3/settings.js +297 -0
- data/node_modules/summernote/src/js/bs3/ui.js +237 -0
- data/node_modules/summernote/src/js/bs4/settings.js +301 -0
- data/node_modules/summernote/src/js/bs4/ui.js +242 -0
- data/node_modules/summernote/src/js/lite/settings.js +296 -0
- data/node_modules/summernote/src/js/lite/ui.js +618 -0
- data/node_modules/summernote/src/js/lite/ui/DropdownUI.js +65 -0
- data/node_modules/summernote/src/js/lite/ui/ModalUI.js +34 -0
- data/node_modules/summernote/src/js/lite/ui/PopoverUI.js +94 -0
- data/node_modules/summernote/src/js/lite/ui/TooltipUI.js +93 -0
- data/node_modules/summernote/src/js/summernote.js +46 -0
- data/node_modules/summernote/src/less/elements.less +149 -0
- data/node_modules/summernote/src/less/elements.scss +149 -0
- data/node_modules/summernote/src/less/lite-ui/all.less +15 -0
- data/node_modules/summernote/src/less/lite-ui/btn-group.less +51 -0
- data/node_modules/summernote/src/less/lite-ui/buttons.less +102 -0
- data/node_modules/summernote/src/less/lite-ui/common.less +20 -0
- data/node_modules/summernote/src/less/lite-ui/dropdown.less +39 -0
- data/node_modules/summernote/src/less/lite-ui/form.less +43 -0
- data/node_modules/summernote/src/less/lite-ui/mixins.less +1 -0
- data/node_modules/summernote/src/less/lite-ui/mixins/buttons.less +40 -0
- data/node_modules/summernote/src/less/lite-ui/modal.less +104 -0
- data/node_modules/summernote/src/less/lite-ui/popover.less +121 -0
- data/node_modules/summernote/src/less/lite-ui/toolbar.less +4 -0
- data/node_modules/summernote/src/less/lite-ui/tooltip.less +66 -0
- data/node_modules/summernote/src/less/lite-ui/variables.less +81 -0
- data/node_modules/summernote/src/less/summernote-bs4.less +577 -0
- data/node_modules/summernote/src/less/summernote-bs4.scss +560 -0
- data/node_modules/summernote/src/less/summernote-lite.less +601 -0
- data/node_modules/summernote/src/less/summernote.less +576 -0
- data/node_modules/summernote/src/less/summernote.scss +560 -0
- data/node_modules/summernote/tsconfig.json +12 -0
- metadata +459 -69
- data/vendor/assets/fonts/summernote.eot +0 -0
- data/vendor/assets/fonts/summernote.ttf +0 -0
- data/vendor/assets/fonts/summernote.woff +0 -0
- data/vendor/assets/javascripts/summernote/index.js +0 -1
- data/vendor/assets/javascripts/summernote/locales/index.js +0 -1
- data/vendor/assets/javascripts/summernote/locales/ro-RO.js +0 -102
- data/vendor/assets/javascripts/summernote/locales/th-TH.js +0 -106
- data/vendor/assets/javascripts/summernote/summernote-bs4.js +0 -7990
- data/vendor/assets/javascripts/summernote/summernote-lite.js +0 -8598
- data/vendor/assets/javascripts/summernote/summernote.js +0 -7987
- data/vendor/assets/stylesheets/summernote-bs4.css +0 -1
- data/vendor/assets/stylesheets/summernote-lite.css +0 -1
- data/vendor/assets/stylesheets/summernote.scss +0 -1
@@ -0,0 +1,53 @@
|
|
1
|
+
{
|
2
|
+
"name": "angular-summernote",
|
3
|
+
"description": "AngularJS directive to Summernote",
|
4
|
+
"version": "0.8.1",
|
5
|
+
"author": {
|
6
|
+
"name": "\"Outsider\" Jeonghoon Byun",
|
7
|
+
"email": "outsideris@gmail.com",
|
8
|
+
"url": "http://blog.outsider.ne.kr/"
|
9
|
+
},
|
10
|
+
"keywords": [
|
11
|
+
"editor",
|
12
|
+
"bootstrap",
|
13
|
+
"WYSIWYG",
|
14
|
+
"angular",
|
15
|
+
"angular.js"
|
16
|
+
],
|
17
|
+
"homepage": "https://github.com/summernote/angular-summernote",
|
18
|
+
"repository": {
|
19
|
+
"type": "git",
|
20
|
+
"url": "https://github.com/outsideris/involved.git"
|
21
|
+
},
|
22
|
+
"licenses": [
|
23
|
+
{
|
24
|
+
"type": "MIT",
|
25
|
+
"url": "http://outsider.mit-license.org/"
|
26
|
+
}
|
27
|
+
],
|
28
|
+
"devDependencies": {
|
29
|
+
"del": "^2.1.0",
|
30
|
+
"gulp": "^3.9.0",
|
31
|
+
"gulp-coveralls": "^0.1.4",
|
32
|
+
"gulp-header": "^1.7.1",
|
33
|
+
"gulp-jshint": "^1.11.2",
|
34
|
+
"gulp-nuget-pack": "0.0.6",
|
35
|
+
"gulp-rename": "^1.2.2",
|
36
|
+
"gulp-uglify": "^1.4.2",
|
37
|
+
"jshint-stylish": "^2.0.1",
|
38
|
+
"karma": "~0.13.9",
|
39
|
+
"karma-chrome-launcher": "~0.2.0",
|
40
|
+
"karma-coffee-preprocessor": "~0.3.0",
|
41
|
+
"karma-coverage": "^0.5.0",
|
42
|
+
"karma-firefox-launcher": "~0.1.3",
|
43
|
+
"karma-html2js-preprocessor": "~0.1.0",
|
44
|
+
"karma-mocha": "~0.2.0",
|
45
|
+
"karma-phantomjs-launcher": "~0.2.0",
|
46
|
+
"karma-requirejs": "~0.2.1",
|
47
|
+
"karma-script-launcher": "~0.1.0",
|
48
|
+
"mocha": "~2.2.0",
|
49
|
+
"requirejs": "~2.1.10",
|
50
|
+
"run-sequence": "^1.1.5"
|
51
|
+
},
|
52
|
+
"dependencies": {}
|
53
|
+
}
|
@@ -0,0 +1,206 @@
|
|
1
|
+
/* global angular */
|
2
|
+
angular.module('summernote', [])
|
3
|
+
|
4
|
+
.controller('SummernoteController', ['$scope', '$attrs', '$timeout', function($scope, $attrs, $timeout) {
|
5
|
+
'use strict';
|
6
|
+
|
7
|
+
var currentElement,
|
8
|
+
summernoteConfig = angular.copy($scope.summernoteConfig) || {};
|
9
|
+
|
10
|
+
if (angular.isDefined($attrs.height)) { summernoteConfig.height = +$attrs.height; }
|
11
|
+
if (angular.isDefined($attrs.minHeight)) { summernoteConfig.minHeight = +$attrs.minHeight; }
|
12
|
+
if (angular.isDefined($attrs.maxHeight)) { summernoteConfig.maxHeight = +$attrs.maxHeight; }
|
13
|
+
if (angular.isDefined($attrs.placeholder)) { summernoteConfig.placeholder = $attrs.placeholder; }
|
14
|
+
if (angular.isDefined($attrs.focus)) { summernoteConfig.focus = true; }
|
15
|
+
if (angular.isDefined($attrs.airmode)) { summernoteConfig.airMode = true; }
|
16
|
+
if (angular.isDefined($attrs.dialogsinbody)) { summernoteConfig.dialogsInBody = true; }
|
17
|
+
if (angular.isDefined($attrs.lang)) {
|
18
|
+
if (!angular.isDefined($.summernote.lang[$attrs.lang])) {
|
19
|
+
throw new Error('"' + $attrs.lang + '" lang file must be exist.');
|
20
|
+
}
|
21
|
+
summernoteConfig.lang = $attrs.lang;
|
22
|
+
}
|
23
|
+
|
24
|
+
summernoteConfig.callbacks = summernoteConfig.callbacks || {};
|
25
|
+
|
26
|
+
if (angular.isDefined($attrs.onInit)) {
|
27
|
+
summernoteConfig.callbacks.onInit = function(evt) {
|
28
|
+
$scope.init({evt:evt});
|
29
|
+
};
|
30
|
+
}
|
31
|
+
if (angular.isDefined($attrs.onEnter)) {
|
32
|
+
summernoteConfig.callbacks.onEnter = function(evt) {
|
33
|
+
$scope.enter({evt:evt});
|
34
|
+
};
|
35
|
+
}
|
36
|
+
if (angular.isDefined($attrs.onFocus)) {
|
37
|
+
summernoteConfig.callbacks.onFocus = function(evt) {
|
38
|
+
$scope.focus({evt:evt});
|
39
|
+
};
|
40
|
+
}
|
41
|
+
if (angular.isDefined($attrs.onPaste)) {
|
42
|
+
summernoteConfig.callbacks.onPaste = function(evt) {
|
43
|
+
$scope.paste({evt:evt});
|
44
|
+
};
|
45
|
+
}
|
46
|
+
if (angular.isDefined($attrs.onKeyup)) {
|
47
|
+
summernoteConfig.callbacks.onKeyup = function(evt) {
|
48
|
+
$scope.keyup({evt:evt});
|
49
|
+
};
|
50
|
+
}
|
51
|
+
if (angular.isDefined($attrs.onKeydown)) {
|
52
|
+
summernoteConfig.callbacks.onKeydown = function(evt) {
|
53
|
+
$scope.keydown({evt:evt});
|
54
|
+
};
|
55
|
+
}
|
56
|
+
if (angular.isDefined($attrs.onImageUpload)) {
|
57
|
+
summernoteConfig.callbacks.onImageUpload = function(files) {
|
58
|
+
$scope.imageUpload({files:files, editable: $scope.editable});
|
59
|
+
};
|
60
|
+
}
|
61
|
+
if (angular.isDefined($attrs.onMediaDelete)) {
|
62
|
+
summernoteConfig.callbacks.onMediaDelete = function(target) {
|
63
|
+
// make new object that has information of target to avoid error:isecdom
|
64
|
+
var removedMedia = {attrs: {}};
|
65
|
+
removedMedia.tagName = target[0].tagName;
|
66
|
+
angular.forEach(target[0].attributes, function(attr) {
|
67
|
+
removedMedia.attrs[attr.name] = attr.value;
|
68
|
+
});
|
69
|
+
$scope.mediaDelete({target: removedMedia});
|
70
|
+
};
|
71
|
+
}
|
72
|
+
|
73
|
+
this.activate = function(scope, element, ngModel) {
|
74
|
+
var updateNgModel = function() {
|
75
|
+
var newValue = element.summernote('code');
|
76
|
+
if (element.summernote('isEmpty')) { newValue = ''; }
|
77
|
+
if (ngModel && ngModel.$viewValue !== newValue) {
|
78
|
+
$timeout(function() {
|
79
|
+
ngModel.$setViewValue(newValue);
|
80
|
+
}, 0);
|
81
|
+
}
|
82
|
+
};
|
83
|
+
|
84
|
+
var originalOnChange = summernoteConfig.callbacks.onChange;
|
85
|
+
summernoteConfig.callbacks.onChange = function (contents) {
|
86
|
+
$timeout(function () {
|
87
|
+
if (element.summernote('isEmpty')) {
|
88
|
+
contents = '';
|
89
|
+
}
|
90
|
+
updateNgModel();
|
91
|
+
}, 0);
|
92
|
+
if (angular.isDefined($attrs.onChange)) {
|
93
|
+
$scope.change({contents: contents, editable: $scope.editable});
|
94
|
+
} else if (angular.isFunction(originalOnChange)) {
|
95
|
+
originalOnChange.apply(this, arguments);
|
96
|
+
}
|
97
|
+
};
|
98
|
+
if (angular.isDefined($attrs.onBlur)) {
|
99
|
+
summernoteConfig.callbacks.onBlur = function (evt) {
|
100
|
+
(!summernoteConfig.airMode) && element.blur();
|
101
|
+
$scope.blur({evt: evt});
|
102
|
+
};
|
103
|
+
}
|
104
|
+
element.summernote(summernoteConfig);
|
105
|
+
|
106
|
+
var editor$ = element.next('.note-editor'),
|
107
|
+
unwatchNgModel;
|
108
|
+
editor$.find('.note-toolbar').click(function() {
|
109
|
+
updateNgModel();
|
110
|
+
|
111
|
+
// sync ngModel in codeview mode
|
112
|
+
if (editor$.hasClass('codeview')) {
|
113
|
+
editor$.on('keyup', updateNgModel);
|
114
|
+
if (ngModel) {
|
115
|
+
unwatchNgModel = scope.$watch(function () {
|
116
|
+
return ngModel.$modelValue;
|
117
|
+
}, function(newValue) {
|
118
|
+
editor$.find('.note-codable').val(newValue);
|
119
|
+
});
|
120
|
+
}
|
121
|
+
} else {
|
122
|
+
editor$.off('keyup', updateNgModel);
|
123
|
+
if (angular.isFunction(unwatchNgModel)) {
|
124
|
+
unwatchNgModel();
|
125
|
+
}
|
126
|
+
}
|
127
|
+
});
|
128
|
+
|
129
|
+
if (ngModel) {
|
130
|
+
ngModel.$render = function() {
|
131
|
+
if (ngModel.$viewValue) {
|
132
|
+
element.summernote('code', ngModel.$viewValue);
|
133
|
+
} else {
|
134
|
+
element.summernote('empty');
|
135
|
+
}
|
136
|
+
};
|
137
|
+
}
|
138
|
+
|
139
|
+
// set editable to avoid error:isecdom since Angular v1.3
|
140
|
+
if (angular.isDefined($attrs.editable)) {
|
141
|
+
$scope.editable = editor$.find('.note-editable');
|
142
|
+
}
|
143
|
+
if (angular.isDefined($attrs.editor)) {
|
144
|
+
$scope.editor = element;
|
145
|
+
}
|
146
|
+
|
147
|
+
currentElement = element;
|
148
|
+
// use jquery Event binding instead $on('$destroy') to preserve options data of DOM
|
149
|
+
element.on('$destroy', function() {
|
150
|
+
element.summernote('destroy');
|
151
|
+
$scope.summernoteDestroyed = true;
|
152
|
+
});
|
153
|
+
};
|
154
|
+
|
155
|
+
$scope.$on('$destroy', function () {
|
156
|
+
// when destroying scope directly
|
157
|
+
if (!$scope.summernoteDestroyed) {
|
158
|
+
currentElement.summernote('destroy');
|
159
|
+
}
|
160
|
+
});
|
161
|
+
}])
|
162
|
+
.directive('summernote', [function() {
|
163
|
+
'use strict';
|
164
|
+
|
165
|
+
return {
|
166
|
+
restrict: 'EA',
|
167
|
+
transclude: 'element',
|
168
|
+
replace: true,
|
169
|
+
require: ['summernote', '?ngModel'],
|
170
|
+
controller: 'SummernoteController',
|
171
|
+
scope: {
|
172
|
+
summernoteConfig: '=config',
|
173
|
+
editable: '=',
|
174
|
+
editor: '=',
|
175
|
+
init: '&onInit',
|
176
|
+
enter: '&onEnter',
|
177
|
+
focus: '&onFocus',
|
178
|
+
blur: '&onBlur',
|
179
|
+
paste: '&onPaste',
|
180
|
+
keyup: '&onKeyup',
|
181
|
+
keydown: '&onKeydown',
|
182
|
+
change: '&onChange',
|
183
|
+
imageUpload: '&onImageUpload',
|
184
|
+
mediaDelete: '&onMediaDelete'
|
185
|
+
},
|
186
|
+
template: '<div class="summernote"></div>',
|
187
|
+
link: function(scope, element, attrs, ctrls, transclude) {
|
188
|
+
var summernoteController = ctrls[0],
|
189
|
+
ngModel = ctrls[1];
|
190
|
+
|
191
|
+
if (!ngModel) {
|
192
|
+
transclude(scope, function(clone, scope) {
|
193
|
+
// to prevent binding to angular scope (It require `tranclude: 'element'`)
|
194
|
+
element.append(clone.html());
|
195
|
+
});
|
196
|
+
summernoteController.activate(scope, element, ngModel);
|
197
|
+
} else {
|
198
|
+
var clearWatch = scope.$watch(function() { return ngModel.$viewValue; }, function(value) {
|
199
|
+
clearWatch();
|
200
|
+
element.append(value);
|
201
|
+
summernoteController.activate(scope, element, ngModel);
|
202
|
+
}, true);
|
203
|
+
}
|
204
|
+
}
|
205
|
+
};
|
206
|
+
}]);
|
@@ -0,0 +1,660 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
|
3
|
+
* Licensed under the MIT license.
|
4
|
+
* <http://outsider.mit-license.org/>
|
5
|
+
*/
|
6
|
+
describe('Summernote directive', function() {
|
7
|
+
'use strict';
|
8
|
+
|
9
|
+
var $rootScope, $compile, $timeout;
|
10
|
+
|
11
|
+
beforeEach(module('summernote'));
|
12
|
+
beforeEach(inject(function(_$compile_, _$rootScope_, _$timeout_) {
|
13
|
+
$compile = _$compile_;
|
14
|
+
$rootScope = _$rootScope_;
|
15
|
+
$timeout = _$timeout_;
|
16
|
+
}));
|
17
|
+
|
18
|
+
describe('initialization', function() {
|
19
|
+
|
20
|
+
it('has "summernote" class', function () {
|
21
|
+
var element = $compile('<summernote></summernote>')($rootScope);
|
22
|
+
$rootScope.$digest();
|
23
|
+
|
24
|
+
expect($(element.get(0)).hasClass('summernote')).to.be.true;
|
25
|
+
});
|
26
|
+
|
27
|
+
it('works with "summernote" element', function () {
|
28
|
+
var element = $compile('<summernote></summernote>')($rootScope);
|
29
|
+
$rootScope.$digest();
|
30
|
+
|
31
|
+
expect(element.next().hasClass('note-editor')).to.be.true;
|
32
|
+
});
|
33
|
+
|
34
|
+
it('works with "summernote" attribute', function () {
|
35
|
+
var element = $compile('<div summernote></div>')($rootScope);
|
36
|
+
$rootScope.$digest();
|
37
|
+
|
38
|
+
expect(element.next().hasClass('note-editor')).to.be.true;
|
39
|
+
});
|
40
|
+
|
41
|
+
it('works with multiple "summernote" elements', function () {
|
42
|
+
var element = $compile('<summernote></summernote><br><summernote></summernote>')($rootScope);
|
43
|
+
$rootScope.$digest();
|
44
|
+
|
45
|
+
expect(element.next('.note-editor')).to.length(2);
|
46
|
+
});
|
47
|
+
});
|
48
|
+
|
49
|
+
describe('"height" option', function() {
|
50
|
+
|
51
|
+
it('should be 0 unless it specified', function () {
|
52
|
+
var element = $compile('<summernote></summernote>')($rootScope);
|
53
|
+
$rootScope.$digest();
|
54
|
+
|
55
|
+
expect(element.next().find('.note-editable').outerHeight()).to.be.equal(0);
|
56
|
+
});
|
57
|
+
|
58
|
+
it('should be 400 if it specified', function () {
|
59
|
+
var element = $compile('<summernote height="400"></summernote>')($rootScope);
|
60
|
+
$rootScope.$digest();
|
61
|
+
|
62
|
+
expect(element.next().find('.note-editable').outerHeight()).to.be.equal(400);
|
63
|
+
});
|
64
|
+
|
65
|
+
it('should set with multiple directives', function () {
|
66
|
+
var element = $compile('<summernote height="200"></summernote><br><summernote height="400"></summernote>')($rootScope);
|
67
|
+
$rootScope.$digest();
|
68
|
+
|
69
|
+
expect(element.next().find('.note-editable').eq(0).outerHeight()).to.be.equal(200);
|
70
|
+
expect(element.next().find('.note-editable').eq(1).outerHeight()).to.be.equal(400);
|
71
|
+
});
|
72
|
+
});
|
73
|
+
|
74
|
+
describe('"min-height" option', function() {
|
75
|
+
it('should be 300 if it specified', function () {
|
76
|
+
var element = $compile('<summernote min-height="300"></summernote>')($rootScope);
|
77
|
+
$rootScope.$digest();
|
78
|
+
|
79
|
+
expect(element.next().find('.note-editable').css('min-height')).to.be.equal('300px');
|
80
|
+
});
|
81
|
+
});
|
82
|
+
|
83
|
+
describe('"max-height" option', function() {
|
84
|
+
it('should be 500 if it specified', function () {
|
85
|
+
var element = $compile('<summernote max-height="500"></summernote>')($rootScope);
|
86
|
+
$rootScope.$digest();
|
87
|
+
|
88
|
+
expect(element.next().find('.note-editable').css('max-height')).to.be.equal('500px');
|
89
|
+
});
|
90
|
+
});
|
91
|
+
|
92
|
+
describe('"placeholder" option', function() {
|
93
|
+
it('should placeholder', function () {
|
94
|
+
var element = $compile('<summernote placeholder="This is a placeholder"></summernote>')($rootScope);
|
95
|
+
$rootScope.$digest();
|
96
|
+
|
97
|
+
expect(element.next().find('.note-placeholder')).to.length(1);
|
98
|
+
expect(element.next().find('.note-placeholder').text()).to.be.equal('This is a placeholder');
|
99
|
+
});
|
100
|
+
});
|
101
|
+
|
102
|
+
describe('"focus" option', function() {
|
103
|
+
it('should be focused if it specified', function () {
|
104
|
+
var el = $('<summernote focus height="400"></summernote>').appendTo(document.body);
|
105
|
+
var element = $compile(el)($rootScope);
|
106
|
+
$rootScope.$digest();
|
107
|
+
|
108
|
+
expect(element.next().find('.note-editable').get(0)).to.be.equal(document.activeElement);
|
109
|
+
|
110
|
+
el.next().remove();
|
111
|
+
el.remove();
|
112
|
+
});
|
113
|
+
});
|
114
|
+
|
115
|
+
describe('"airmode" option', function() {
|
116
|
+
|
117
|
+
it('should be on', function () {
|
118
|
+
var element = $compile('<summernote airMode></summernote>')($rootScope);
|
119
|
+
$rootScope.$digest();
|
120
|
+
|
121
|
+
expect(element.data('summernote').options.airMode).to.be.true;
|
122
|
+
});
|
123
|
+
|
124
|
+
|
125
|
+
it('should be on using config', function () {
|
126
|
+
var scope = $rootScope.$new();
|
127
|
+
scope.summernoteConfig = {airMode: true};
|
128
|
+
var element = $compile('<summernote config="summernoteConfig"></summernote>')(scope);
|
129
|
+
$rootScope.$digest();
|
130
|
+
|
131
|
+
expect(element.data('summernote').options.airMode).to.be.true;
|
132
|
+
|
133
|
+
element.next().remove();
|
134
|
+
element.remove();
|
135
|
+
});
|
136
|
+
|
137
|
+
});
|
138
|
+
|
139
|
+
describe('summernoteConfig', function() {
|
140
|
+
var scope;
|
141
|
+
|
142
|
+
beforeEach(function() {
|
143
|
+
scope = $rootScope.$new();
|
144
|
+
scope.summernoteConfig = {
|
145
|
+
height: 300,
|
146
|
+
minHeight: 200,
|
147
|
+
maxHeight: 500,
|
148
|
+
focus: true,
|
149
|
+
toolbar: [
|
150
|
+
['style', ['bold', 'italic', 'underline', 'clear']],
|
151
|
+
['fontsize', ['fontsize']],
|
152
|
+
['color', ['color']],
|
153
|
+
['para', ['ul', 'ol', 'paragraph']],
|
154
|
+
['height', ['height']]
|
155
|
+
]
|
156
|
+
};
|
157
|
+
});
|
158
|
+
|
159
|
+
it('"height" should be 300', function() {
|
160
|
+
var element = $compile('<summernote config="summernoteConfig"></summernote>')(scope);
|
161
|
+
$rootScope.$digest();
|
162
|
+
|
163
|
+
expect(element.next().find('.note-editable').outerHeight()).to.be.equal(300);
|
164
|
+
});
|
165
|
+
|
166
|
+
it('"minHeight" should be 300', function() {
|
167
|
+
var element = $compile('<summernote config="summernoteConfig"></summernote>')(scope);
|
168
|
+
$rootScope.$digest();
|
169
|
+
|
170
|
+
expect(element.next().find('.note-editable').css('min-height')).to.be.equal('200px');
|
171
|
+
});
|
172
|
+
|
173
|
+
it('"maxHeight" should be 300', function() {
|
174
|
+
var element = $compile('<summernote config="summernoteConfig"></summernote>')(scope);
|
175
|
+
$rootScope.$digest();
|
176
|
+
|
177
|
+
expect(element.next().find('.note-editable').css('max-height')).to.be.equal('500px');
|
178
|
+
});
|
179
|
+
|
180
|
+
it('toolbar should be customized', function() {
|
181
|
+
var element = $compile('<summernote config="summernoteConfig"></summernote>')(scope);
|
182
|
+
$rootScope.$digest();
|
183
|
+
|
184
|
+
expect(element.next().find('.note-toolbar > .note-fontsize')).to.length(1);
|
185
|
+
expect(element.next().find('.note-toolbar > .note-help')).to.length(0);
|
186
|
+
});
|
187
|
+
|
188
|
+
it('"lang" needs the lang file', function() {
|
189
|
+
var fn = $compile('<summernote lang="ko-KR"></summernote>');
|
190
|
+
|
191
|
+
try {
|
192
|
+
fn($rootScope);
|
193
|
+
} catch(e) {
|
194
|
+
expect(e.message).to.be.exist;
|
195
|
+
}
|
196
|
+
});
|
197
|
+
|
198
|
+
it('"lang" load the lang file correctly', function() {
|
199
|
+
var element = $compile('<summernote lang="de-DE"></summernote>')(scope);
|
200
|
+
$rootScope.$digest();
|
201
|
+
|
202
|
+
expect(element.next().find('.note-toolbar > .note-view .btn-fullscreen').attr('data-original-title'))
|
203
|
+
.to.be.equal('Vollbild');
|
204
|
+
});
|
205
|
+
});
|
206
|
+
|
207
|
+
describe('destroy', function() {
|
208
|
+
var scope;
|
209
|
+
|
210
|
+
beforeEach(function() {
|
211
|
+
scope = $rootScope.$new();
|
212
|
+
});
|
213
|
+
|
214
|
+
it('shoud be destroyed when scope is destroyed.', function() {
|
215
|
+
// given
|
216
|
+
var element = $compile('<summernote></summernote>')(scope);
|
217
|
+
scope.$digest();
|
218
|
+
expect(element.next().hasClass('note-editor')).to.be.true;
|
219
|
+
// when
|
220
|
+
scope.$destroy();
|
221
|
+
// then
|
222
|
+
expect(element.next().hasClass('note-editor')).to.be.false;
|
223
|
+
});
|
224
|
+
|
225
|
+
it('should clean up summernnote', function () {
|
226
|
+
// given
|
227
|
+
scope.summernoteConfig = {height: 300};
|
228
|
+
scope.test = [];
|
229
|
+
var element = $compile('<div ng-repeat="t in test"><summernote ng-model="t.c" config="summernoteConfig"></summernote></div>')(scope);
|
230
|
+
scope.$digest();
|
231
|
+
|
232
|
+
scope.test.push({c: ''});
|
233
|
+
scope.$digest();
|
234
|
+
expect($(element.next().children().get(0)).hasClass('summernote')).to.be.true;
|
235
|
+
|
236
|
+
// when
|
237
|
+
scope.test.pop();
|
238
|
+
scope.$digest();
|
239
|
+
|
240
|
+
// then
|
241
|
+
expect($(element.next().children().get(0)).hasClass('summernote')).to.be.false;
|
242
|
+
});
|
243
|
+
});
|
244
|
+
|
245
|
+
describe('ngModel', function() {
|
246
|
+
var scope;
|
247
|
+
|
248
|
+
beforeEach(function() {
|
249
|
+
scope = $rootScope.$new();
|
250
|
+
scope.summernoteConfig = {focus: true};
|
251
|
+
});
|
252
|
+
|
253
|
+
it('text should be synchronized when value are changed in outer scope', function() {
|
254
|
+
// given
|
255
|
+
var oldText = 'Hello World!', newText = 'new text';
|
256
|
+
scope.text = oldText;
|
257
|
+
var element = $compile('<summernote ng-model="text"></summernote>')(scope);
|
258
|
+
scope.$digest();
|
259
|
+
expect(element.summernote('code')).to.be.equal(oldText);
|
260
|
+
// when
|
261
|
+
scope.text = newText;
|
262
|
+
scope.$digest();
|
263
|
+
// then
|
264
|
+
expect(element.summernote('code')).to.be.equal(newText);
|
265
|
+
});
|
266
|
+
|
267
|
+
it('text should be synchronized when value are changed in summernote', function() {
|
268
|
+
var oldText = 'Hello World!', newText = 'new text';
|
269
|
+
// given
|
270
|
+
scope.text = oldText;
|
271
|
+
var el = $('<summernote ng-Model="text"></summernote>').appendTo(document.body);
|
272
|
+
var element = $compile(el)(scope);
|
273
|
+
scope.$digest();
|
274
|
+
expect(element.summernote('code')).to.be.equal(oldText);
|
275
|
+
// when
|
276
|
+
element.summernote('code', newText);
|
277
|
+
$(element.next().find('.note-editable').eq(0)).trigger('input'); // to trigger onChange
|
278
|
+
scope.$digest();
|
279
|
+
// then
|
280
|
+
$timeout.flush();
|
281
|
+
expect(scope.text).to.be.equal(newText);
|
282
|
+
|
283
|
+
el.next().remove();
|
284
|
+
el.remove();
|
285
|
+
});
|
286
|
+
|
287
|
+
it('element text should be blank in outer scope before digesting', function() {
|
288
|
+
// given
|
289
|
+
var blankText = '', helloText = 'Hello World';
|
290
|
+
var element = $compile('<summernote ng-model="text"></summernote>')(scope);
|
291
|
+
scope.text = helloText;
|
292
|
+
expect(element.html()).to.be.equal(blankText);
|
293
|
+
// when
|
294
|
+
scope.$digest();
|
295
|
+
// then
|
296
|
+
expect(element.html()).to.be.equal(helloText);
|
297
|
+
});
|
298
|
+
|
299
|
+
it('text should be synchronized when text is changed using toolbar', function() {
|
300
|
+
var selectText = function(element){
|
301
|
+
var doc = document,
|
302
|
+
range;
|
303
|
+
if (doc.body.createTextRange) {
|
304
|
+
range = document.body.createTextRange();
|
305
|
+
range.moveToElementText(element);
|
306
|
+
range.select();
|
307
|
+
} else if (window.getSelection) {
|
308
|
+
var selection = window.getSelection();
|
309
|
+
range = document.createRange();
|
310
|
+
range.selectNodeContents(element);
|
311
|
+
selection.removeAllRanges();
|
312
|
+
selection.addRange(range);
|
313
|
+
}
|
314
|
+
};
|
315
|
+
|
316
|
+
var oldText = 'Hello World!';
|
317
|
+
// given
|
318
|
+
scope.text = oldText;
|
319
|
+
var el = $('<summernote ng-Model="text"></summernote>').appendTo(document.body);
|
320
|
+
var element = $compile(el)(scope);
|
321
|
+
scope.$digest();
|
322
|
+
expect(element.summernote('code')).to.be.equal(oldText);
|
323
|
+
// when
|
324
|
+
selectText($(element.next().find('.note-editable'))[0]);
|
325
|
+
$(element.next().find('.note-font').find('button').eq(0)).click();
|
326
|
+
scope.$digest();
|
327
|
+
// then
|
328
|
+
$timeout.flush();
|
329
|
+
expect(scope.text).to.be.equal(element.summernote('code'));
|
330
|
+
|
331
|
+
el.next().remove();
|
332
|
+
el.remove();
|
333
|
+
});
|
334
|
+
|
335
|
+
it('text chould be synchronized when text is changed in codeview mode', function() {
|
336
|
+
var oldText = 'Hello World!', newText = 'new text';
|
337
|
+
// given
|
338
|
+
scope.text = oldText;
|
339
|
+
var el = $('<summernote ng-Model="text"></summernote>').appendTo(document.body);
|
340
|
+
var element = $compile(el)(scope);
|
341
|
+
scope.$digest();
|
342
|
+
expect(element.summernote('code')).to.be.equal(oldText);
|
343
|
+
// when
|
344
|
+
element.next().find('.note-view').find('button.btn-codeview').click();
|
345
|
+
scope.text = newText;
|
346
|
+
scope.$digest();
|
347
|
+
// then
|
348
|
+
expect(element.summernote('code')).to.be.equal(newText);
|
349
|
+
|
350
|
+
el.next().remove();
|
351
|
+
el.remove();
|
352
|
+
});
|
353
|
+
|
354
|
+
it('text should be synchronized in use codeview when text is changed in outer scope', function() {
|
355
|
+
var oldText = 'Hello World!', newText = 'new text';
|
356
|
+
// given
|
357
|
+
scope.text = oldText;
|
358
|
+
var el = $('<summernote ng-Model="text"></summernote>').appendTo(document.body);
|
359
|
+
var element = $compile(el)(scope);
|
360
|
+
scope.$digest();
|
361
|
+
expect(element.summernote('code')).to.be.equal(oldText);
|
362
|
+
// when
|
363
|
+
element.next().find('.note-view').find('button.btn-codeview').click();
|
364
|
+
element.next().find('.note-codable').val(newText);
|
365
|
+
$(element.next().find('.note-codable').eq(0)).trigger('keyup');
|
366
|
+
scope.$digest();
|
367
|
+
// then
|
368
|
+
$timeout.flush();
|
369
|
+
expect(scope.text).to.be.equal(newText);
|
370
|
+
|
371
|
+
el.next().remove();
|
372
|
+
el.remove();
|
373
|
+
});
|
374
|
+
|
375
|
+
it('should be synchronized when image inserted', function(done) {
|
376
|
+
// given
|
377
|
+
var text = 'Hello World';
|
378
|
+
scope.text = text;
|
379
|
+
var el = $('<summernote ng-Model="text"></summernote>').appendTo(document.body);
|
380
|
+
var element = $compile(el)(scope);
|
381
|
+
scope.$digest();
|
382
|
+
// when
|
383
|
+
var preventBubbling = function(e) { e.stopPropagation(); };
|
384
|
+
$('.note-toolbar').on('click', preventBubbling);
|
385
|
+
|
386
|
+
$(element.next().find('.note-insert').find('button[data-original-title=Picture]')).click(); // image
|
387
|
+
|
388
|
+
var imageModal$ = element.next().find('.modal.in .modal-dialog');
|
389
|
+
expect(imageModal$).to.length(1);
|
390
|
+
var imgUrl = 'https://www.gravatar.com/avatar/748a6dc8b4eaba0fde62909e39be7987?s=200';
|
391
|
+
imageModal$.find('.note-image-url').val(imgUrl);
|
392
|
+
imageModal$.find('.note-image-url').trigger('keyup');
|
393
|
+
imageModal$.find('.note-image-btn').click();
|
394
|
+
|
395
|
+
// then
|
396
|
+
var timer = setInterval(function() {
|
397
|
+
if (element.summernote('code') !== text) {
|
398
|
+
expect(element.summernote('code')).to.match(/gravatar/);
|
399
|
+
|
400
|
+
// tear down
|
401
|
+
$('.note-toolbar').off('click', preventBubbling);
|
402
|
+
el.next().remove();
|
403
|
+
el.remove();
|
404
|
+
clearInterval(timer);
|
405
|
+
done();
|
406
|
+
}
|
407
|
+
}, 200);
|
408
|
+
});
|
409
|
+
|
410
|
+
it('should empty summernote when model is empty', function() {
|
411
|
+
// given
|
412
|
+
scope.text = 'Hello World';
|
413
|
+
var element = $compile($('<summernote ng-Model="text"></summernote>').appendTo(document.body))(scope);
|
414
|
+
scope.$digest();
|
415
|
+
|
416
|
+
// when
|
417
|
+
scope.text = '';
|
418
|
+
scope.$digest();
|
419
|
+
|
420
|
+
// then
|
421
|
+
expect(element.summernote('code')).to.not.equal('');
|
422
|
+
expect(element.summernote('isEmpty')).to.equal(true);
|
423
|
+
});
|
424
|
+
});
|
425
|
+
|
426
|
+
describe('callbacks', function() {
|
427
|
+
var scope;
|
428
|
+
|
429
|
+
beforeEach(function() {
|
430
|
+
scope = $rootScope.$new();
|
431
|
+
scope.summernoteConfig = {focus: false};
|
432
|
+
});
|
433
|
+
|
434
|
+
it('onInit should be invoked', function(done) {
|
435
|
+
scope.init = function() {
|
436
|
+
expect(true).to.be.true;
|
437
|
+
done();
|
438
|
+
};
|
439
|
+
$compile('<summernote on-init="init()"></summernote>')(scope);
|
440
|
+
scope.$digest();
|
441
|
+
});
|
442
|
+
|
443
|
+
it('onEnter should be invoked', function(done) {
|
444
|
+
scope.enter = function() {
|
445
|
+
// then
|
446
|
+
expect(true).to.be.true;
|
447
|
+
done();
|
448
|
+
};
|
449
|
+
// given
|
450
|
+
var el = $('<summernote on-enter="enter()"></summernote>').appendTo(document.body);
|
451
|
+
var element = $compile(el)(scope);
|
452
|
+
scope.$digest();
|
453
|
+
// when
|
454
|
+
var e= jQuery.Event('keydown');
|
455
|
+
e.keyCode = 13; // Enter key
|
456
|
+
element.next().find('.note-editable').trigger(e);
|
457
|
+
scope.$digest();
|
458
|
+
// tear down
|
459
|
+
el.next().remove();
|
460
|
+
el.remove();
|
461
|
+
});
|
462
|
+
|
463
|
+
it('onFocus should be invoked', function(done) {
|
464
|
+
scope.focus = function(e) {
|
465
|
+
// then
|
466
|
+
expect(e).to.be.exist;
|
467
|
+
done();
|
468
|
+
};
|
469
|
+
// given
|
470
|
+
var el = $('<summernote on-focus="focus(evt)"></summernote>').appendTo(document.body);
|
471
|
+
var element = $compile(el)(scope);
|
472
|
+
scope.$digest();
|
473
|
+
// when
|
474
|
+
// TODO: check the reason why it need triggering focus twice
|
475
|
+
element.next().find('.note-editable').focus().focus();
|
476
|
+
scope.$digest();
|
477
|
+
// tear down
|
478
|
+
el.next().remove();
|
479
|
+
el.remove();
|
480
|
+
});
|
481
|
+
|
482
|
+
it('onBlur should be invoked', function(done) {
|
483
|
+
scope.blur = function(e) {
|
484
|
+
// then
|
485
|
+
expect(e).to.be.exist;
|
486
|
+
done();
|
487
|
+
};
|
488
|
+
// given
|
489
|
+
var el = $('<summernote on-blur="blur(evt)"></summernote>').appendTo(document.body);
|
490
|
+
var element = $compile(el)(scope);
|
491
|
+
scope.$digest();
|
492
|
+
// when
|
493
|
+
element.next().find('.note-editable').blur();
|
494
|
+
scope.$digest();
|
495
|
+
// tear down
|
496
|
+
el.next().remove();
|
497
|
+
el.remove();
|
498
|
+
});
|
499
|
+
|
500
|
+
it('onPaste should be invoked', function(done) {
|
501
|
+
scope.paste = function() {
|
502
|
+
// then
|
503
|
+
expect(true).to.be.true;
|
504
|
+
done();
|
505
|
+
};
|
506
|
+
// given
|
507
|
+
var el = $('<summernote on-paste="paste(evt)"></summernote>').appendTo(document.body);
|
508
|
+
var element = $compile(el)(scope);
|
509
|
+
scope.$digest();
|
510
|
+
// when
|
511
|
+
var event = jQuery.Event('paste');
|
512
|
+
event.originalEvent = '';
|
513
|
+
element.next().find('.note-editable').trigger(event);
|
514
|
+
|
515
|
+
scope.$digest();
|
516
|
+
// tear down
|
517
|
+
el.next().remove();
|
518
|
+
el.remove();
|
519
|
+
});
|
520
|
+
|
521
|
+
it('onKeyup should be invoked', function(done) {
|
522
|
+
scope.keyup = function(e) {
|
523
|
+
// then
|
524
|
+
expect(e).to.be.exist;
|
525
|
+
done();
|
526
|
+
};
|
527
|
+
// given
|
528
|
+
var el = $('<summernote on-keyup="keyup(evt)"></summernote>').appendTo(document.body);
|
529
|
+
var element = $compile(el)(scope);
|
530
|
+
scope.$digest();
|
531
|
+
// when
|
532
|
+
element.next().find('.note-editable').keyup();
|
533
|
+
scope.$digest();
|
534
|
+
// tear down
|
535
|
+
el.next().remove();
|
536
|
+
el.remove();
|
537
|
+
});
|
538
|
+
|
539
|
+
it('onKeydown should be invoked', function(done) {
|
540
|
+
scope.keydown = function(e) {
|
541
|
+
// then
|
542
|
+
expect(e).to.be.exist;
|
543
|
+
done();
|
544
|
+
};
|
545
|
+
// given
|
546
|
+
var el = $('<summernote on-keydown="keydown(evt)"></summernote>').appendTo(document.body);
|
547
|
+
var element = $compile(el)(scope);
|
548
|
+
scope.$digest();
|
549
|
+
// when
|
550
|
+
element.next().find('.note-editable').keydown();
|
551
|
+
scope.$digest();
|
552
|
+
// tear down
|
553
|
+
el.next().remove();
|
554
|
+
el.remove();
|
555
|
+
});
|
556
|
+
|
557
|
+
it('onChange should be invoked', function(done) {
|
558
|
+
var selectText = function(element){
|
559
|
+
var doc = document,
|
560
|
+
range;
|
561
|
+
if (doc.body.createTextRange) {
|
562
|
+
range = document.body.createTextRange();
|
563
|
+
range.moveToElementText(element);
|
564
|
+
range.select();
|
565
|
+
} else if (window.getSelection) {
|
566
|
+
var selection = window.getSelection();
|
567
|
+
range = document.createRange();
|
568
|
+
range.selectNodeContents(element);
|
569
|
+
selection.removeAllRanges();
|
570
|
+
selection.addRange(range);
|
571
|
+
}
|
572
|
+
};
|
573
|
+
|
574
|
+
scope.change = function(contents) {
|
575
|
+
// then
|
576
|
+
// FIXME: summernote v0.7.0 has a bug, so `contents` is Event obejct not string of contents
|
577
|
+
//expect(/Hello World/.test(contents)).to.be.ok;
|
578
|
+
expect(true).to.be.ok;
|
579
|
+
done();
|
580
|
+
};
|
581
|
+
// given
|
582
|
+
var oldText = 'Hello World!';
|
583
|
+
scope.text = oldText;
|
584
|
+
var el = $('<summernote ng-Model="text" on-change="change(contents)"></summernote>')
|
585
|
+
.appendTo(document.body);
|
586
|
+
var element = $compile(el)(scope);
|
587
|
+
scope.$digest();
|
588
|
+
// when
|
589
|
+
selectText($(element.next().find('.note-editable'))[0]);
|
590
|
+
$(element.next().find('.note-font').find('button').eq(0)).click();
|
591
|
+
scope.$digest();
|
592
|
+
// tear down
|
593
|
+
el.next().remove();
|
594
|
+
el.remove();
|
595
|
+
});
|
596
|
+
|
597
|
+
// TODO: add tests for onImageUpload
|
598
|
+
});
|
599
|
+
|
600
|
+
describe('"editable" attribute', function() {
|
601
|
+
var scope;
|
602
|
+
|
603
|
+
beforeEach(function() {
|
604
|
+
scope = $rootScope.$new();
|
605
|
+
});
|
606
|
+
|
607
|
+
it('should be assigned as editable object', function () {
|
608
|
+
var el = $('<summernote editable="myEditable"></summernote>');
|
609
|
+
var element = $compile(el)(scope);
|
610
|
+
scope.$digest();
|
611
|
+
|
612
|
+
expect(element.next().find('.note-editable').get(0)).to.be.equal(scope.myEditable.get(0));
|
613
|
+
|
614
|
+
el.next().remove();
|
615
|
+
el.remove();
|
616
|
+
});
|
617
|
+
});
|
618
|
+
|
619
|
+
describe('"editor" attribute', function() {
|
620
|
+
var scope;
|
621
|
+
|
622
|
+
beforeEach(function() {
|
623
|
+
scope = $rootScope.$new();
|
624
|
+
});
|
625
|
+
|
626
|
+
it('should be assigned as editor object', function () {
|
627
|
+
var el = $('<summernote editor="snote"></summernote>');
|
628
|
+
var element = $compile(el)(scope);
|
629
|
+
scope.$digest();
|
630
|
+
|
631
|
+
expect(element.get(0)).to.be.equal(scope.snote.get(0));
|
632
|
+
|
633
|
+
el.next().remove();
|
634
|
+
el.remove();
|
635
|
+
});
|
636
|
+
});
|
637
|
+
|
638
|
+
describe('transclude', function() {
|
639
|
+
it('set initialize text with inner text', function() {
|
640
|
+
// given
|
641
|
+
var scope = $rootScope.$new();
|
642
|
+
var html = '<span style="font-weight: bold;">init text</span>';
|
643
|
+
// when
|
644
|
+
var element = $compile('<summernote>'+html+'</summernote>')(scope);
|
645
|
+
scope.$digest();
|
646
|
+
// then
|
647
|
+
expect(element.summernote('code')).to.be.equal(html);
|
648
|
+
});
|
649
|
+
|
650
|
+
it('set blank html if no text in summernote directive', function() {
|
651
|
+
// given
|
652
|
+
var scope = $rootScope.$new();
|
653
|
+
// when
|
654
|
+
var element = $compile('<summernote></summernote>')(scope);
|
655
|
+
scope.$digest();
|
656
|
+
// then
|
657
|
+
expect(element.summernote('code')).to.be.equal('<p><br></p>');
|
658
|
+
});
|
659
|
+
});
|
660
|
+
});
|