promethee 1.4.8 → 1.4.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (476) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -6
  3. data/app/assets/javascripts/promethee.js +4 -0
  4. data/app/assets/stylesheets/promethee-edit.sass +1 -0
  5. data/config/initializers/assets.rb +1 -0
  6. data/lib/promethee/rails/version.rb +1 -1
  7. data/node_modules/angular-summernote/CHANGELOG.md +149 -0
  8. data/node_modules/angular-summernote/LICENSE-MIT +22 -0
  9. data/node_modules/angular-summernote/README.md +270 -0
  10. data/node_modules/angular-summernote/bower.json +49 -0
  11. data/{vendor/assets/javascripts → node_modules/angular-summernote/dist}/angular-summernote.js +0 -0
  12. data/node_modules/angular-summernote/dist/angular-summernote.min.js +2 -0
  13. data/node_modules/angular-summernote/examples/fontstyle-plugin.html +48 -0
  14. data/node_modules/angular-summernote/examples/index.html +180 -0
  15. data/node_modules/angular-summernote/examples/index2.html +60 -0
  16. data/node_modules/angular-summernote/examples/index3.html +57 -0
  17. data/node_modules/angular-summernote/gulpfile.js +115 -0
  18. data/node_modules/angular-summernote/package.json +53 -0
  19. data/node_modules/angular-summernote/src/angular-summernote.js +206 -0
  20. data/node_modules/angular-summernote/test/angular-summernote.test.js +660 -0
  21. data/node_modules/angular-summernote/test/chai.conf.js +6 -0
  22. data/node_modules/angular-summernote/test/coverage/Chrome 37.0.2062 (Mac OS X 10.9.4)/index.html +350 -0
  23. data/node_modules/angular-summernote/test/coverage/Chrome 37.0.2062 (Mac OS X 10.9.4)/prettify.css +1 -0
  24. data/node_modules/angular-summernote/test/coverage/Chrome 37.0.2062 (Mac OS X 10.9.4)/prettify.js +1 -0
  25. data/node_modules/angular-summernote/test/coverage/Chrome 37.0.2062 (Mac OS X 10.9.4)/src/angular-summernote.js.html +694 -0
  26. data/node_modules/angular-summernote/test/coverage/Chrome 37.0.2062 (Mac OS X 10.9.4)/src/index.html +350 -0
  27. data/node_modules/angular-summernote/test/karma-angular-1-2-x.conf.js +33 -0
  28. data/node_modules/angular-summernote/test/karma-angular-1-3-x.conf.js +33 -0
  29. data/node_modules/angular-summernote/test/karma-angular-1-4-x.conf.js +33 -0
  30. data/node_modules/angular-summernote/test/karma-shared.conf.js +64 -0
  31. data/node_modules/angular-summernote/test/karma.conf.js +33 -0
  32. data/{vendor/assets/javascripts/summernote/locales/de-DE.js → node_modules/angular-summernote/test/lang/summernote-de-DE.js} +2 -17
  33. data/node_modules/angular-summernote/test/mocha.conf.js +3 -0
  34. data/node_modules/angular-ui-sortable/API.md +84 -0
  35. data/node_modules/angular-ui-sortable/CONTRIBUTING.md +12 -0
  36. data/node_modules/angular-ui-sortable/LICENSE +21 -0
  37. data/node_modules/angular-ui-sortable/README.md +350 -0
  38. data/node_modules/angular-ui-sortable/bower.json +26 -0
  39. data/node_modules/angular-ui-sortable/demo/demo.css +34 -0
  40. data/node_modules/angular-ui-sortable/demo/demo.html +29 -0
  41. data/node_modules/angular-ui-sortable/demo/demo.js +41 -0
  42. data/node_modules/angular-ui-sortable/dist/sortable.js +593 -0
  43. data/node_modules/angular-ui-sortable/dist/sortable.min.js +8 -0
  44. data/node_modules/angular-ui-sortable/gruntFile.js +202 -0
  45. data/node_modules/angular-ui-sortable/package.json +48 -0
  46. data/node_modules/angular-ui-sortable/publish.js +41 -0
  47. data/{vendor/assets/javascripts/ui-sortable.js → node_modules/angular-ui-sortable/src/sortable.js} +106 -200
  48. data/node_modules/angular-ui-sortable/test/bower_overrides.json +13 -0
  49. data/node_modules/angular-ui-sortable/test/karma.conf.js +85 -0
  50. data/node_modules/angular-ui-sortable/test/libs/jquery.simulate.dragandrevert.js +60 -0
  51. data/node_modules/angular-ui-sortable/test/sortable.e2e.callbacks.attr.spec.js +199 -0
  52. data/node_modules/angular-ui-sortable/test/sortable.e2e.callbacks.spec.js +729 -0
  53. data/node_modules/angular-ui-sortable/test/sortable.e2e.directiveoptions.spec.js +554 -0
  54. data/node_modules/angular-ui-sortable/test/sortable.e2e.directives.spec.js +371 -0
  55. data/node_modules/angular-ui-sortable/test/sortable.e2e.events.spec.js +167 -0
  56. data/node_modules/angular-ui-sortable/test/sortable.e2e.multi.spec.js +1232 -0
  57. data/node_modules/angular-ui-sortable/test/sortable.e2e.nested.spec.js +186 -0
  58. data/node_modules/angular-ui-sortable/test/sortable.e2e.spec.js +895 -0
  59. data/node_modules/angular-ui-sortable/test/sortable.spec.js +440 -0
  60. data/node_modules/angular-ui-sortable/test/sortable.test-directives.js +54 -0
  61. data/node_modules/angular-ui-sortable/test/sortable.test-helper.js +114 -0
  62. data/node_modules/angular-ui-sortable/test/sortable.tests.css +12 -0
  63. data/node_modules/ng-file-upload/LICENSE +20 -0
  64. data/node_modules/ng-file-upload/README.md +616 -0
  65. data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/FileAPI.flash.swf +0 -0
  66. data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/FileAPI.js +0 -0
  67. data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/FileAPI.min.js +0 -0
  68. data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/ng-file-upload-all.js +0 -0
  69. data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/ng-file-upload-all.min.js +0 -0
  70. data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/ng-file-upload-shim.js +0 -0
  71. data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/ng-file-upload-shim.min.js +0 -0
  72. data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/ng-file-upload.js +0 -0
  73. data/{vendor/assets/javascripts/ng-file-upload → node_modules/ng-file-upload/dist}/ng-file-upload.min.js +0 -0
  74. data/node_modules/ng-file-upload/index.js +2 -0
  75. data/node_modules/ng-file-upload/package.json +42 -0
  76. data/node_modules/summernote/CODE_OF_CONDUCT.md +46 -0
  77. data/node_modules/summernote/CONTRIBUTING.md +67 -0
  78. data/node_modules/summernote/ISSUE_TEMPLATE.md +14 -0
  79. data/node_modules/summernote/LICENSE +21 -0
  80. data/node_modules/summernote/PULL_REQUEST_TEMPLATE.md +28 -0
  81. data/node_modules/summernote/README.md +90 -0
  82. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/base.css +213 -0
  83. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/index.html +262 -0
  84. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/prettify.css +1 -0
  85. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/prettify.js +1 -0
  86. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/sort-arrow-sprite.png +0 -0
  87. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/sorter.js +158 -0
  88. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/Context.js.html +758 -0
  89. 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
  90. 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
  91. 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
  92. 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
  93. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/core/index.html +171 -0
  94. 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
  95. 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
  96. 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
  97. 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
  98. 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
  99. 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
  100. 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
  101. 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
  102. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/editing/index.html +145 -0
  103. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/index.html +119 -0
  104. 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
  105. 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
  106. 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
  107. 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
  108. 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
  109. 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
  110. 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
  111. 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
  112. 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
  113. 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
  114. 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
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. 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
  121. 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
  122. 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
  123. 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
  124. 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
  125. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/module/index.html +353 -0
  126. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/base/renderer.js.html +263 -0
  127. 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
  128. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/bs3/index.html +106 -0
  129. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/bs3/settings.js.html +956 -0
  130. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/bs3/ui.js.html +776 -0
  131. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/bs4/index.html +106 -0
  132. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/bs4/settings.js.html +968 -0
  133. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/bs4/ui.js.html +791 -0
  134. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/index.html +93 -0
  135. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/lite/index.html +106 -0
  136. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/lite/settings.js.html +953 -0
  137. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/lite/ui.js.html +1919 -0
  138. 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
  139. 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
  140. 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
  141. 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
  142. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/lite/ui/index.html +132 -0
  143. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/src/js/summernote.js.html +203 -0
  144. 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
  145. 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
  146. 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
  147. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/core/index.html +145 -0
  148. 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
  149. 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
  150. 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
  151. 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
  152. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/editing/index.html +106 -0
  153. 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
  154. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/index.html +93 -0
  155. 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
  156. 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
  157. 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
  158. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/base/module/index.html +119 -0
  159. 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
  160. 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
  161. data/node_modules/summernote/coverage/PhantomJS 2.1.1 (Mac OS X 0.0.0)/html/test/unit/bs/module/index.html +106 -0
  162. data/node_modules/summernote/dist/font/summernote.eot +0 -0
  163. data/node_modules/summernote/dist/font/summernote.ttf +0 -0
  164. data/node_modules/summernote/dist/font/summernote.woff +0 -0
  165. data/{vendor/assets/javascripts/summernote/locales/ar-AR.js → node_modules/summernote/dist/lang/summernote-ar-AR.js} +55 -4
  166. data/node_modules/summernote/dist/lang/summernote-ar-AR.min.js +3 -0
  167. data/{vendor/assets/javascripts/summernote/locales/bg-BG.js → node_modules/summernote/dist/lang/summernote-bg-BG.js} +60 -4
  168. data/node_modules/summernote/dist/lang/summernote-bg-BG.min.js +3 -0
  169. data/{vendor/assets/javascripts/summernote/locales/ca-ES.js → node_modules/summernote/dist/lang/summernote-ca-ES.js} +12 -4
  170. data/node_modules/summernote/dist/lang/summernote-ca-ES.min.js +3 -0
  171. data/{vendor/assets/javascripts/summernote/locales/cs-CZ.js → node_modules/summernote/dist/lang/summernote-cs-CZ.js} +50 -4
  172. data/node_modules/summernote/dist/lang/summernote-cs-CZ.min.js +3 -0
  173. data/{vendor/assets/javascripts/summernote/locales/da-DK.js → node_modules/summernote/dist/lang/summernote-da-DK.js} +46 -5
  174. data/node_modules/summernote/dist/lang/summernote-da-DK.min.js +3 -0
  175. data/node_modules/summernote/dist/lang/summernote-de-DE.js +154 -0
  176. data/node_modules/summernote/dist/lang/summernote-de-DE.min.js +3 -0
  177. data/{vendor/assets/javascripts/summernote/locales/el-GR.js → node_modules/summernote/dist/lang/summernote-el-GR.js} +11 -3
  178. data/node_modules/summernote/dist/lang/summernote-el-GR.min.js +3 -0
  179. data/{vendor/assets/javascripts/summernote/locales/es-ES.js → node_modules/summernote/dist/lang/summernote-es-ES.js} +12 -4
  180. data/node_modules/summernote/dist/lang/summernote-es-ES.min.js +3 -0
  181. data/{vendor/assets/javascripts/summernote/locales/es-EU.js → node_modules/summernote/dist/lang/summernote-es-EU.js} +55 -4
  182. data/node_modules/summernote/dist/lang/summernote-es-EU.min.js +3 -0
  183. data/{vendor/assets/javascripts/summernote/locales/fa-IR.js → node_modules/summernote/dist/lang/summernote-fa-IR.js} +55 -5
  184. data/node_modules/summernote/dist/lang/summernote-fa-IR.min.js +3 -0
  185. data/{vendor/assets/javascripts/summernote/locales/fi-FI.js → node_modules/summernote/dist/lang/summernote-fi-FI.js} +52 -3
  186. data/node_modules/summernote/dist/lang/summernote-fi-FI.min.js +3 -0
  187. data/{vendor/assets/javascripts/summernote/locales/fr-FR.js → node_modules/summernote/dist/lang/summernote-fr-FR.js} +3 -2
  188. data/node_modules/summernote/dist/lang/summernote-fr-FR.min.js +3 -0
  189. data/{vendor/assets/javascripts/summernote/locales/gl-ES.js → node_modules/summernote/dist/lang/summernote-gl-ES.js} +12 -4
  190. data/node_modules/summernote/dist/lang/summernote-gl-ES.min.js +3 -0
  191. data/{vendor/assets/javascripts/summernote/locales/he-IL.js → node_modules/summernote/dist/lang/summernote-he-IL.js} +51 -3
  192. data/node_modules/summernote/dist/lang/summernote-he-IL.min.js +3 -0
  193. data/{vendor/assets/javascripts/summernote/locales/hr-HR.js → node_modules/summernote/dist/lang/summernote-hr-HR.js} +54 -3
  194. data/node_modules/summernote/dist/lang/summernote-hr-HR.min.js +3 -0
  195. data/{vendor/assets/javascripts/summernote/locales/hu-HU.js → node_modules/summernote/dist/lang/summernote-hu-HU.js} +25 -5
  196. data/node_modules/summernote/dist/lang/summernote-hu-HU.min.js +3 -0
  197. data/{vendor/assets/javascripts/summernote/locales/id-ID.js → node_modules/summernote/dist/lang/summernote-id-ID.js} +56 -4
  198. data/node_modules/summernote/dist/lang/summernote-id-ID.min.js +3 -0
  199. data/{vendor/assets/javascripts/summernote/locales/it-IT.js → node_modules/summernote/dist/lang/summernote-it-IT.js} +55 -4
  200. data/node_modules/summernote/dist/lang/summernote-it-IT.min.js +3 -0
  201. data/{vendor/assets/javascripts/summernote/locales/ja-JP.js → node_modules/summernote/dist/lang/summernote-ja-JP.js} +32 -10
  202. data/node_modules/summernote/dist/lang/summernote-ja-JP.min.js +3 -0
  203. data/{vendor/assets/javascripts/summernote/locales/ko-KR.js → node_modules/summernote/dist/lang/summernote-ko-KR.js} +44 -4
  204. data/node_modules/summernote/dist/lang/summernote-ko-KR.min.js +3 -0
  205. data/{vendor/assets/javascripts/summernote/locales/lt-LT.js → node_modules/summernote/dist/lang/summernote-lt-LT.js} +52 -4
  206. data/node_modules/summernote/dist/lang/summernote-lt-LT.min.js +3 -0
  207. data/{vendor/assets/javascripts/summernote/locales/lt-LV.js → node_modules/summernote/dist/lang/summernote-lt-LV.js} +27 -7
  208. data/node_modules/summernote/dist/lang/summernote-lt-LV.min.js +3 -0
  209. data/{vendor/assets/javascripts/summernote/locales/mn-MN.js → node_modules/summernote/dist/lang/summernote-mn-MN.js} +43 -4
  210. data/node_modules/summernote/dist/lang/summernote-mn-MN.min.js +3 -0
  211. data/{vendor/assets/javascripts/summernote/locales/nb-NO.js → node_modules/summernote/dist/lang/summernote-nb-NO.js} +53 -3
  212. data/node_modules/summernote/dist/lang/summernote-nb-NO.min.js +3 -0
  213. data/{vendor/assets/javascripts/summernote/locales/nl-NL.js → node_modules/summernote/dist/lang/summernote-nl-NL.js} +55 -4
  214. data/node_modules/summernote/dist/lang/summernote-nl-NL.min.js +3 -0
  215. data/{vendor/assets/javascripts/summernote/locales/pl-PL.js → node_modules/summernote/dist/lang/summernote-pl-PL.js} +46 -3
  216. data/node_modules/summernote/dist/lang/summernote-pl-PL.min.js +3 -0
  217. data/{vendor/assets/javascripts/summernote/locales/pt-BR.js → node_modules/summernote/dist/lang/summernote-pt-BR.js} +25 -8
  218. data/node_modules/summernote/dist/lang/summernote-pt-BR.min.js +3 -0
  219. data/{vendor/assets/javascripts/summernote/locales/pt-PT.js → node_modules/summernote/dist/lang/summernote-pt-PT.js} +54 -3
  220. data/node_modules/summernote/dist/lang/summernote-pt-PT.min.js +3 -0
  221. data/node_modules/summernote/dist/lang/summernote-ro-RO.js +155 -0
  222. data/node_modules/summernote/dist/lang/summernote-ro-RO.min.js +3 -0
  223. data/{vendor/assets/javascripts/summernote/locales/ru-RU.js → node_modules/summernote/dist/lang/summernote-ru-RU.js} +46 -3
  224. data/node_modules/summernote/dist/lang/summernote-ru-RU.min.js +3 -0
  225. data/{vendor/assets/javascripts/summernote/locales/sk-SK.js → node_modules/summernote/dist/lang/summernote-sk-SK.js} +54 -3
  226. data/node_modules/summernote/dist/lang/summernote-sk-SK.min.js +3 -0
  227. data/{vendor/assets/javascripts/summernote/locales/sl-SI.js → node_modules/summernote/dist/lang/summernote-sl-SI.js} +53 -4
  228. data/node_modules/summernote/dist/lang/summernote-sl-SI.min.js +3 -0
  229. data/{vendor/assets/javascripts/summernote/locales/sr-RS-Latin.js → node_modules/summernote/dist/lang/summernote-sr-RS-Latin.js} +54 -3
  230. data/node_modules/summernote/dist/lang/summernote-sr-RS-Latin.min.js +3 -0
  231. data/{vendor/assets/javascripts/summernote/locales/sr-RS.js → node_modules/summernote/dist/lang/summernote-sr-RS.js} +54 -3
  232. data/node_modules/summernote/dist/lang/summernote-sr-RS.min.js +3 -0
  233. data/{vendor/assets/javascripts/summernote/locales/sv-SE.js → node_modules/summernote/dist/lang/summernote-sv-SE.js} +55 -4
  234. data/node_modules/summernote/dist/lang/summernote-sv-SE.min.js +3 -0
  235. data/{vendor/assets/javascripts/summernote/locales/ta-IN.js → node_modules/summernote/dist/lang/summernote-ta-IN.js} +46 -4
  236. data/node_modules/summernote/dist/lang/summernote-ta-IN.min.js +3 -0
  237. data/node_modules/summernote/dist/lang/summernote-th-TH.js +155 -0
  238. data/node_modules/summernote/dist/lang/summernote-th-TH.min.js +3 -0
  239. data/{vendor/assets/javascripts/summernote/locales/tr-TR.js → node_modules/summernote/dist/lang/summernote-tr-TR.js} +3 -2
  240. data/node_modules/summernote/dist/lang/summernote-tr-TR.min.js +3 -0
  241. data/{vendor/assets/javascripts/summernote/locales/uk-UA.js → node_modules/summernote/dist/lang/summernote-uk-UA.js} +48 -4
  242. data/node_modules/summernote/dist/lang/summernote-uk-UA.min.js +3 -0
  243. data/node_modules/summernote/dist/lang/summernote-uz-UZ.js +112 -0
  244. data/node_modules/summernote/dist/lang/summernote-uz-UZ.min.js +3 -0
  245. data/{vendor/assets/javascripts/summernote/locales/vi-VN.js → node_modules/summernote/dist/lang/summernote-vi-VN.js} +55 -4
  246. data/node_modules/summernote/dist/lang/summernote-vi-VN.min.js +3 -0
  247. data/{vendor/assets/javascripts/summernote/locales/zh-CN.js → node_modules/summernote/dist/lang/summernote-zh-CN.js} +20 -7
  248. data/node_modules/summernote/dist/lang/summernote-zh-CN.min.js +3 -0
  249. data/{vendor/assets/javascripts/summernote/locales/zh-TW.js → node_modules/summernote/dist/lang/summernote-zh-TW.js} +45 -3
  250. data/node_modules/summernote/dist/lang/summernote-zh-TW.min.js +3 -0
  251. data/node_modules/summernote/dist/summernote-0.8.10-dist.zip +0 -0
  252. data/node_modules/summernote/dist/summernote-bs4.css +1 -0
  253. data/node_modules/summernote/dist/summernote-bs4.js +7323 -0
  254. data/node_modules/summernote/dist/summernote-bs4.js.map +1 -0
  255. data/node_modules/summernote/dist/summernote-bs4.min.js +3 -0
  256. data/node_modules/summernote/dist/summernote-lite.css +1 -0
  257. data/node_modules/summernote/dist/summernote-lite.js +7837 -0
  258. data/node_modules/summernote/dist/summernote-lite.js.map +1 -0
  259. data/node_modules/summernote/dist/summernote.css +1 -0
  260. data/node_modules/summernote/dist/summernote.js +7315 -0
  261. data/node_modules/summernote/dist/summernote.js.map +1 -0
  262. data/node_modules/summernote/dist/summernote.min.js +3 -0
  263. data/node_modules/summernote/examples/airmode.html +35 -0
  264. data/node_modules/summernote/examples/bs3.html +60 -0
  265. data/node_modules/summernote/examples/bs4.html +57 -0
  266. data/node_modules/summernote/examples/codemirror.html +45 -0
  267. data/node_modules/summernote/examples/external-api.html +76 -0
  268. data/node_modules/summernote/examples/hint-emoji.html +61 -0
  269. data/node_modules/summernote/examples/hint-symbols_mathematical-symbols_Greek-letters.html +54 -0
  270. data/node_modules/summernote/examples/hint-userdefine.html +48 -0
  271. data/node_modules/summernote/examples/ie8.html +32 -0
  272. data/node_modules/summernote/examples/jquery-custom-event.html +119 -0
  273. data/node_modules/summernote/examples/jquery19lt.html +25 -0
  274. data/node_modules/summernote/examples/lang.html +33 -0
  275. data/node_modules/summernote/examples/link-blank.html +33 -0
  276. data/node_modules/summernote/examples/lite.html +24 -0
  277. data/node_modules/summernote/examples/nativestyle.html +32 -0
  278. data/node_modules/summernote/examples/ondialog-multitab.html +77 -0
  279. data/node_modules/summernote/examples/ondialog.html +58 -0
  280. data/node_modules/summernote/examples/plugin-hello.html +37 -0
  281. data/node_modules/summernote/examples/rtl.html +32 -0
  282. data/node_modules/summernote/examples/symbols_mathematical-symbols_Greek-letters.json +1118 -0
  283. data/node_modules/summernote/examples/textarea.html +46 -0
  284. data/node_modules/summernote/examples/toolbar-container.html +35 -0
  285. data/node_modules/summernote/examples/with-google-font.html +50 -0
  286. data/node_modules/summernote/index.html +33 -0
  287. data/node_modules/summernote/karma.conf.js +42 -0
  288. data/node_modules/summernote/lang/summernote-ar-AR.js +155 -0
  289. data/node_modules/summernote/lang/summernote-bg-BG.js +155 -0
  290. data/node_modules/summernote/lang/summernote-ca-ES.js +155 -0
  291. data/node_modules/summernote/lang/summernote-cs-CZ.js +149 -0
  292. data/node_modules/summernote/lang/summernote-da-DK.js +155 -0
  293. data/node_modules/summernote/lang/summernote-de-DE.js +154 -0
  294. data/node_modules/summernote/lang/summernote-el-GR.js +155 -0
  295. data/node_modules/summernote/lang/summernote-es-ES.js +155 -0
  296. data/node_modules/summernote/lang/summernote-es-EU.js +154 -0
  297. data/node_modules/summernote/lang/summernote-fa-IR.js +155 -0
  298. data/node_modules/summernote/lang/summernote-fi-FI.js +153 -0
  299. data/node_modules/summernote/lang/summernote-fr-FR.js +155 -0
  300. data/node_modules/summernote/lang/summernote-gl-ES.js +155 -0
  301. data/node_modules/summernote/lang/summernote-he-IL.js +155 -0
  302. data/node_modules/summernote/lang/summernote-hr-HR.js +155 -0
  303. data/node_modules/summernote/lang/summernote-hu-HU.js +155 -0
  304. data/node_modules/summernote/lang/summernote-id-ID.js +155 -0
  305. data/node_modules/summernote/lang/summernote-it-IT.js +155 -0
  306. data/node_modules/summernote/lang/summernote-ja-JP.js +155 -0
  307. data/node_modules/summernote/lang/summernote-ko-KR.js +155 -0
  308. data/node_modules/summernote/lang/summernote-lt-LT.js +155 -0
  309. data/node_modules/summernote/lang/summernote-lt-LV.js +155 -0
  310. data/node_modules/summernote/lang/summernote-mn-MN.js +157 -0
  311. data/node_modules/summernote/lang/summernote-nb-NO.js +154 -0
  312. data/node_modules/summernote/lang/summernote-nl-NL.js +155 -0
  313. data/node_modules/summernote/lang/summernote-pl-PL.js +155 -0
  314. data/node_modules/summernote/lang/summernote-pt-BR.js +155 -0
  315. data/node_modules/summernote/lang/summernote-pt-PT.js +154 -0
  316. data/node_modules/summernote/lang/summernote-ro-RO.js +155 -0
  317. data/node_modules/summernote/lang/summernote-ru-RU.js +155 -0
  318. data/node_modules/summernote/lang/summernote-sk-SK.js +153 -0
  319. data/node_modules/summernote/lang/summernote-sl-SI.js +155 -0
  320. data/node_modules/summernote/lang/summernote-sr-RS-Latin.js +155 -0
  321. data/node_modules/summernote/lang/summernote-sr-RS.js +155 -0
  322. data/node_modules/summernote/lang/summernote-sv-SE.js +155 -0
  323. data/node_modules/summernote/lang/summernote-ta-IN.js +155 -0
  324. data/node_modules/summernote/lang/summernote-th-TH.js +155 -0
  325. data/node_modules/summernote/lang/summernote-tr-TR.js +155 -0
  326. data/node_modules/summernote/lang/summernote-uk-UA.js +155 -0
  327. data/node_modules/summernote/lang/summernote-uz-UZ.js +112 -0
  328. data/node_modules/summernote/lang/summernote-vi-VN.js +155 -0
  329. data/node_modules/summernote/lang/summernote-zh-CN.js +155 -0
  330. data/node_modules/summernote/lang/summernote-zh-TW.js +155 -0
  331. data/node_modules/summernote/package.json +87 -0
  332. data/{vendor/assets/javascripts → node_modules}/summernote/plugin/databasic/summernote-ext-databasic.css +0 -0
  333. data/{vendor/assets/javascripts → node_modules}/summernote/plugin/databasic/summernote-ext-databasic.js +62 -73
  334. data/{vendor/assets/javascripts → node_modules}/summernote/plugin/hello/summernote-ext-hello.js +9 -10
  335. data/{vendor/assets/javascripts → node_modules}/summernote/plugin/specialchars/summernote-ext-specialchars.js +22 -25
  336. data/node_modules/summernote/src/icons/align-center.svg +11 -0
  337. data/node_modules/summernote/src/icons/align-indent.svg +11 -0
  338. data/node_modules/summernote/src/icons/align-justify.svg +11 -0
  339. data/node_modules/summernote/src/icons/align-left.svg +12 -0
  340. data/node_modules/summernote/src/icons/align-outdent.svg +11 -0
  341. data/node_modules/summernote/src/icons/align-right.svg +11 -0
  342. data/node_modules/summernote/src/icons/align.svg +8 -0
  343. data/node_modules/summernote/src/icons/arrow-circle-down.svg +1 -0
  344. data/node_modules/summernote/src/icons/arrow-circle-left.svg +1 -0
  345. data/node_modules/summernote/src/icons/arrow-circle-right.svg +1 -0
  346. data/node_modules/summernote/src/icons/arrow-circle-up.svg +1 -0
  347. data/node_modules/summernote/src/icons/arrows-alt.svg +11 -0
  348. data/node_modules/summernote/src/icons/arrows-h.svg +1 -0
  349. data/node_modules/summernote/src/icons/arrows-v.svg +1 -0
  350. data/node_modules/summernote/src/icons/bold.svg +11 -0
  351. data/node_modules/summernote/src/icons/caret.svg +9 -0
  352. data/node_modules/summernote/src/icons/chain-broken.svg +47 -0
  353. data/node_modules/summernote/src/icons/circle.svg +10 -0
  354. data/node_modules/summernote/src/icons/close.svg +16 -0
  355. data/node_modules/summernote/src/icons/code.svg +11 -0
  356. data/node_modules/summernote/src/icons/col-after.svg +96 -0
  357. data/node_modules/summernote/src/icons/col-before.svg +19 -0
  358. data/node_modules/summernote/src/icons/col-remove.svg +19 -0
  359. data/node_modules/summernote/src/icons/dist/font/summernote.eot +0 -0
  360. data/node_modules/summernote/src/icons/dist/font/summernote.ttf +0 -0
  361. data/node_modules/summernote/src/icons/dist/font/summernote.woff +0 -0
  362. data/node_modules/summernote/src/icons/dist/summernote.html +536 -0
  363. data/node_modules/summernote/src/icons/dist/summernote.less +511 -0
  364. data/node_modules/summernote/src/icons/eraser.svg +13 -0
  365. data/node_modules/summernote/src/icons/font.svg +11 -0
  366. data/node_modules/summernote/src/icons/frame.svg +10 -0
  367. data/node_modules/summernote/src/icons/italic.svg +11 -0
  368. data/node_modules/summernote/src/icons/link.svg +21 -0
  369. data/node_modules/summernote/src/icons/magic.svg +10 -0
  370. data/node_modules/summernote/src/icons/menu-check.svg +8 -0
  371. data/node_modules/summernote/src/icons/minus.svg +11 -0
  372. data/node_modules/summernote/src/icons/orderedlist.svg +12 -0
  373. data/node_modules/summernote/src/icons/pencil.svg +8 -0
  374. data/node_modules/summernote/src/icons/picture.svg +11 -0
  375. data/node_modules/summernote/src/icons/question.svg +10 -0
  376. data/node_modules/summernote/src/icons/redo.svg +10 -0
  377. data/node_modules/summernote/src/icons/row-above.svg +19 -0
  378. data/node_modules/summernote/src/icons/row-below.svg +19 -0
  379. data/node_modules/summernote/src/icons/row-remove.svg +19 -0
  380. data/node_modules/summernote/src/icons/special-character.svg +10 -0
  381. data/node_modules/summernote/src/icons/square.svg +10 -0
  382. data/node_modules/summernote/src/icons/strikethrough.svg +11 -0
  383. data/node_modules/summernote/src/icons/subscript.svg +11 -0
  384. data/node_modules/summernote/src/icons/summernote.svg +11 -0
  385. data/node_modules/summernote/src/icons/superscript.svg +11 -0
  386. data/node_modules/summernote/src/icons/table.svg +11 -0
  387. data/node_modules/summernote/src/icons/templates/summernote.css +110 -0
  388. data/node_modules/summernote/src/icons/templates/summernote.json +5 -0
  389. data/node_modules/summernote/src/icons/text-height.svg +11 -0
  390. data/node_modules/summernote/src/icons/trash.svg +17 -0
  391. data/node_modules/summernote/src/icons/underline.svg +11 -0
  392. data/node_modules/summernote/src/icons/undo.svg +10 -0
  393. data/node_modules/summernote/src/icons/unorderedlist.svg +9 -0
  394. data/node_modules/summernote/src/icons/video.svg +9 -0
  395. data/node_modules/summernote/src/js/base/Context.js +231 -0
  396. data/node_modules/summernote/src/js/base/core/async.js +47 -0
  397. data/node_modules/summernote/src/js/base/core/dom.js +1088 -0
  398. data/node_modules/summernote/src/js/base/core/env.js +107 -0
  399. data/node_modules/summernote/src/js/base/core/func.js +162 -0
  400. data/node_modules/summernote/src/js/base/core/key.js +92 -0
  401. data/node_modules/summernote/src/js/base/core/lists.js +210 -0
  402. data/node_modules/summernote/src/js/base/core/range.js +792 -0
  403. data/node_modules/summernote/src/js/base/editing/Bullet.js +201 -0
  404. data/node_modules/summernote/src/js/base/editing/History.js +105 -0
  405. data/node_modules/summernote/src/js/base/editing/Style.js +158 -0
  406. data/node_modules/summernote/src/js/base/editing/Table.js +574 -0
  407. data/node_modules/summernote/src/js/base/editing/Typing.js +90 -0
  408. data/node_modules/summernote/src/js/base/module/AirPopover.js +73 -0
  409. data/node_modules/summernote/src/js/base/module/AutoLink.js +61 -0
  410. data/node_modules/summernote/src/js/base/module/AutoSync.js +19 -0
  411. data/node_modules/summernote/src/js/base/module/Buttons.js +813 -0
  412. data/node_modules/summernote/src/js/base/module/Clipboard.js +28 -0
  413. data/node_modules/summernote/src/js/base/module/Codeview.js +123 -0
  414. data/node_modules/summernote/src/js/base/module/Dropzone.js +115 -0
  415. data/node_modules/summernote/src/js/base/module/Editor.js +861 -0
  416. data/node_modules/summernote/src/js/base/module/Fullscreen.js +51 -0
  417. data/node_modules/summernote/src/js/base/module/Handle.js +143 -0
  418. data/node_modules/summernote/src/js/base/module/HelpDialog.js +79 -0
  419. data/node_modules/summernote/src/js/base/module/HintPopover.js +226 -0
  420. data/node_modules/summernote/src/js/base/module/ImageDialog.js +131 -0
  421. data/node_modules/summernote/src/js/base/module/ImagePopover.js +58 -0
  422. data/node_modules/summernote/src/js/base/module/LinkDialog.js +174 -0
  423. data/node_modules/summernote/src/js/base/module/LinkPopover.js +69 -0
  424. data/node_modules/summernote/src/js/base/module/Placeholder.js +39 -0
  425. data/node_modules/summernote/src/js/base/module/Statusbar.js +42 -0
  426. data/node_modules/summernote/src/js/base/module/TablePopover.js +71 -0
  427. data/node_modules/summernote/src/js/base/module/Toolbar.js +136 -0
  428. data/node_modules/summernote/src/js/base/module/VideoDialog.js +205 -0
  429. data/node_modules/summernote/src/js/base/renderer.js +66 -0
  430. data/node_modules/summernote/src/js/base/summernote-en-US.js +159 -0
  431. data/node_modules/summernote/src/js/bs3/settings.js +297 -0
  432. data/node_modules/summernote/src/js/bs3/ui.js +237 -0
  433. data/node_modules/summernote/src/js/bs4/settings.js +301 -0
  434. data/node_modules/summernote/src/js/bs4/ui.js +242 -0
  435. data/node_modules/summernote/src/js/lite/settings.js +296 -0
  436. data/node_modules/summernote/src/js/lite/ui.js +618 -0
  437. data/node_modules/summernote/src/js/lite/ui/DropdownUI.js +65 -0
  438. data/node_modules/summernote/src/js/lite/ui/ModalUI.js +34 -0
  439. data/node_modules/summernote/src/js/lite/ui/PopoverUI.js +94 -0
  440. data/node_modules/summernote/src/js/lite/ui/TooltipUI.js +93 -0
  441. data/node_modules/summernote/src/js/summernote.js +46 -0
  442. data/node_modules/summernote/src/less/elements.less +149 -0
  443. data/node_modules/summernote/src/less/elements.scss +149 -0
  444. data/node_modules/summernote/src/less/lite-ui/all.less +15 -0
  445. data/node_modules/summernote/src/less/lite-ui/btn-group.less +51 -0
  446. data/node_modules/summernote/src/less/lite-ui/buttons.less +102 -0
  447. data/node_modules/summernote/src/less/lite-ui/common.less +20 -0
  448. data/node_modules/summernote/src/less/lite-ui/dropdown.less +39 -0
  449. data/node_modules/summernote/src/less/lite-ui/form.less +43 -0
  450. data/node_modules/summernote/src/less/lite-ui/mixins.less +1 -0
  451. data/node_modules/summernote/src/less/lite-ui/mixins/buttons.less +40 -0
  452. data/node_modules/summernote/src/less/lite-ui/modal.less +104 -0
  453. data/node_modules/summernote/src/less/lite-ui/popover.less +121 -0
  454. data/node_modules/summernote/src/less/lite-ui/toolbar.less +4 -0
  455. data/node_modules/summernote/src/less/lite-ui/tooltip.less +66 -0
  456. data/node_modules/summernote/src/less/lite-ui/variables.less +81 -0
  457. data/node_modules/summernote/src/less/summernote-bs4.less +577 -0
  458. data/node_modules/summernote/src/less/summernote-bs4.scss +560 -0
  459. data/node_modules/summernote/src/less/summernote-lite.less +601 -0
  460. data/node_modules/summernote/src/less/summernote.less +576 -0
  461. data/node_modules/summernote/src/less/summernote.scss +560 -0
  462. data/node_modules/summernote/tsconfig.json +12 -0
  463. metadata +459 -69
  464. data/vendor/assets/fonts/summernote.eot +0 -0
  465. data/vendor/assets/fonts/summernote.ttf +0 -0
  466. data/vendor/assets/fonts/summernote.woff +0 -0
  467. data/vendor/assets/javascripts/summernote/index.js +0 -1
  468. data/vendor/assets/javascripts/summernote/locales/index.js +0 -1
  469. data/vendor/assets/javascripts/summernote/locales/ro-RO.js +0 -102
  470. data/vendor/assets/javascripts/summernote/locales/th-TH.js +0 -106
  471. data/vendor/assets/javascripts/summernote/summernote-bs4.js +0 -7990
  472. data/vendor/assets/javascripts/summernote/summernote-lite.js +0 -8598
  473. data/vendor/assets/javascripts/summernote/summernote.js +0 -7987
  474. data/vendor/assets/stylesheets/summernote-bs4.css +0 -1
  475. data/vendor/assets/stylesheets/summernote-lite.css +0 -1
  476. data/vendor/assets/stylesheets/summernote.scss +0 -1
@@ -0,0 +1,792 @@
1
+ import $ from 'jquery';
2
+ import env from './env';
3
+ import func from './func';
4
+ import lists from './lists';
5
+ import dom from './dom';
6
+
7
+ /**
8
+ * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js
9
+ *
10
+ * @param {TextRange} textRange
11
+ * @param {Boolean} isStart
12
+ * @return {BoundaryPoint}
13
+ *
14
+ * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx
15
+ */
16
+ function textRangeToPoint(textRange, isStart) {
17
+ let container = textRange.parentElement();
18
+ let offset;
19
+
20
+ const tester = document.body.createTextRange();
21
+ let prevContainer;
22
+ const childNodes = lists.from(container.childNodes);
23
+ for (offset = 0; offset < childNodes.length; offset++) {
24
+ if (dom.isText(childNodes[offset])) {
25
+ continue;
26
+ }
27
+ tester.moveToElementText(childNodes[offset]);
28
+ if (tester.compareEndPoints('StartToStart', textRange) >= 0) {
29
+ break;
30
+ }
31
+ prevContainer = childNodes[offset];
32
+ }
33
+
34
+ if (offset !== 0 && dom.isText(childNodes[offset - 1])) {
35
+ const textRangeStart = document.body.createTextRange();
36
+ let curTextNode = null;
37
+ textRangeStart.moveToElementText(prevContainer || container);
38
+ textRangeStart.collapse(!prevContainer);
39
+ curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild;
40
+
41
+ const pointTester = textRange.duplicate();
42
+ pointTester.setEndPoint('StartToStart', textRangeStart);
43
+ let textCount = pointTester.text.replace(/[\r\n]/g, '').length;
44
+
45
+ while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) {
46
+ textCount -= curTextNode.nodeValue.length;
47
+ curTextNode = curTextNode.nextSibling;
48
+ }
49
+
50
+ // [workaround] enforce IE to re-reference curTextNode, hack
51
+ const dummy = curTextNode.nodeValue; // eslint-disable-line
52
+
53
+ if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) &&
54
+ textCount === curTextNode.nodeValue.length) {
55
+ textCount -= curTextNode.nodeValue.length;
56
+ curTextNode = curTextNode.nextSibling;
57
+ }
58
+
59
+ container = curTextNode;
60
+ offset = textCount;
61
+ }
62
+
63
+ return {
64
+ cont: container,
65
+ offset: offset
66
+ };
67
+ }
68
+
69
+ /**
70
+ * return TextRange from boundary point (inspired by google closure-library)
71
+ * @param {BoundaryPoint} point
72
+ * @return {TextRange}
73
+ */
74
+ function pointToTextRange(point) {
75
+ const textRangeInfo = function(container, offset) {
76
+ let node, isCollapseToStart;
77
+
78
+ if (dom.isText(container)) {
79
+ const prevTextNodes = dom.listPrev(container, func.not(dom.isText));
80
+ const prevContainer = lists.last(prevTextNodes).previousSibling;
81
+ node = prevContainer || container.parentNode;
82
+ offset += lists.sum(lists.tail(prevTextNodes), dom.nodeLength);
83
+ isCollapseToStart = !prevContainer;
84
+ } else {
85
+ node = container.childNodes[offset] || container;
86
+ if (dom.isText(node)) {
87
+ return textRangeInfo(node, 0);
88
+ }
89
+
90
+ offset = 0;
91
+ isCollapseToStart = false;
92
+ }
93
+
94
+ return {
95
+ node: node,
96
+ collapseToStart: isCollapseToStart,
97
+ offset: offset
98
+ };
99
+ };
100
+
101
+ const textRange = document.body.createTextRange();
102
+ const info = textRangeInfo(point.node, point.offset);
103
+
104
+ textRange.moveToElementText(info.node);
105
+ textRange.collapse(info.collapseToStart);
106
+ textRange.moveStart('character', info.offset);
107
+ return textRange;
108
+ }
109
+
110
+ /**
111
+ * Wrapped Range
112
+ *
113
+ * @constructor
114
+ * @param {Node} sc - start container
115
+ * @param {Number} so - start offset
116
+ * @param {Node} ec - end container
117
+ * @param {Number} eo - end offset
118
+ */
119
+ class WrappedRange {
120
+ constructor(sc, so, ec, eo) {
121
+ this.sc = sc;
122
+ this.so = so;
123
+ this.ec = ec;
124
+ this.eo = eo;
125
+
126
+ // isOnEditable: judge whether range is on editable or not
127
+ this.isOnEditable = this.makeIsOn(dom.isEditable);
128
+ // isOnList: judge whether range is on list node or not
129
+ this.isOnList = this.makeIsOn(dom.isList);
130
+ // isOnAnchor: judge whether range is on anchor node or not
131
+ this.isOnAnchor = this.makeIsOn(dom.isAnchor);
132
+ // isOnCell: judge whether range is on cell node or not
133
+ this.isOnCell = this.makeIsOn(dom.isCell);
134
+ // isOnData: judge whether range is on data node or not
135
+ this.isOnData = this.makeIsOn(dom.isData);
136
+ }
137
+
138
+ // nativeRange: get nativeRange from sc, so, ec, eo
139
+ nativeRange() {
140
+ if (env.isW3CRangeSupport) {
141
+ const w3cRange = document.createRange();
142
+ w3cRange.setStart(this.sc, this.so);
143
+ w3cRange.setEnd(this.ec, this.eo);
144
+
145
+ return w3cRange;
146
+ } else {
147
+ const textRange = pointToTextRange({
148
+ node: this.sc,
149
+ offset: this.so
150
+ });
151
+
152
+ textRange.setEndPoint('EndToEnd', pointToTextRange({
153
+ node: this.ec,
154
+ offset: this.eo
155
+ }));
156
+
157
+ return textRange;
158
+ }
159
+ }
160
+
161
+ getPoints() {
162
+ return {
163
+ sc: this.sc,
164
+ so: this.so,
165
+ ec: this.ec,
166
+ eo: this.eo
167
+ };
168
+ }
169
+
170
+ getStartPoint() {
171
+ return {
172
+ node: this.sc,
173
+ offset: this.so
174
+ };
175
+ }
176
+
177
+ getEndPoint() {
178
+ return {
179
+ node: this.ec,
180
+ offset: this.eo
181
+ };
182
+ }
183
+
184
+ /**
185
+ * select update visible range
186
+ */
187
+ select() {
188
+ const nativeRng = this.nativeRange();
189
+ if (env.isW3CRangeSupport) {
190
+ const selection = document.getSelection();
191
+ if (selection.rangeCount > 0) {
192
+ selection.removeAllRanges();
193
+ }
194
+ selection.addRange(nativeRng);
195
+ } else {
196
+ nativeRng.select();
197
+ }
198
+
199
+ return this;
200
+ }
201
+
202
+ /**
203
+ * Moves the scrollbar to start container(sc) of current range
204
+ *
205
+ * @return {WrappedRange}
206
+ */
207
+ scrollIntoView(container) {
208
+ const height = $(container).height();
209
+ if (container.scrollTop + height < this.sc.offsetTop) {
210
+ container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop);
211
+ }
212
+
213
+ return this;
214
+ }
215
+
216
+ /**
217
+ * @return {WrappedRange}
218
+ */
219
+ normalize() {
220
+ /**
221
+ * @param {BoundaryPoint} point
222
+ * @param {Boolean} isLeftToRight
223
+ * @return {BoundaryPoint}
224
+ */
225
+ const getVisiblePoint = function(point, isLeftToRight) {
226
+ if ((dom.isVisiblePoint(point) && !dom.isEdgePoint(point)) ||
227
+ (dom.isVisiblePoint(point) && dom.isRightEdgePoint(point) && !isLeftToRight) ||
228
+ (dom.isVisiblePoint(point) && dom.isLeftEdgePoint(point) && isLeftToRight) ||
229
+ (dom.isVisiblePoint(point) && dom.isBlock(point.node) && dom.isEmpty(point.node))) {
230
+ return point;
231
+ }
232
+
233
+ // point on block's edge
234
+ const block = dom.ancestor(point.node, dom.isBlock);
235
+ if (((dom.isLeftEdgePointOf(point, block) || dom.isVoid(dom.prevPoint(point).node)) && !isLeftToRight) ||
236
+ ((dom.isRightEdgePointOf(point, block) || dom.isVoid(dom.nextPoint(point).node)) && isLeftToRight)) {
237
+ // returns point already on visible point
238
+ if (dom.isVisiblePoint(point)) {
239
+ return point;
240
+ }
241
+ // reverse direction
242
+ isLeftToRight = !isLeftToRight;
243
+ }
244
+
245
+ const nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint)
246
+ : dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint);
247
+ return nextPoint || point;
248
+ };
249
+
250
+ const endPoint = getVisiblePoint(this.getEndPoint(), false);
251
+ const startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true);
252
+
253
+ return new WrappedRange(
254
+ startPoint.node,
255
+ startPoint.offset,
256
+ endPoint.node,
257
+ endPoint.offset
258
+ );
259
+ }
260
+
261
+ /**
262
+ * returns matched nodes on range
263
+ *
264
+ * @param {Function} [pred] - predicate function
265
+ * @param {Object} [options]
266
+ * @param {Boolean} [options.includeAncestor]
267
+ * @param {Boolean} [options.fullyContains]
268
+ * @return {Node[]}
269
+ */
270
+ nodes(pred, options) {
271
+ pred = pred || func.ok;
272
+
273
+ const includeAncestor = options && options.includeAncestor;
274
+ const fullyContains = options && options.fullyContains;
275
+
276
+ // TODO compare points and sort
277
+ const startPoint = this.getStartPoint();
278
+ const endPoint = this.getEndPoint();
279
+
280
+ const nodes = [];
281
+ const leftEdgeNodes = [];
282
+
283
+ dom.walkPoint(startPoint, endPoint, function(point) {
284
+ if (dom.isEditable(point.node)) {
285
+ return;
286
+ }
287
+
288
+ let node;
289
+ if (fullyContains) {
290
+ if (dom.isLeftEdgePoint(point)) {
291
+ leftEdgeNodes.push(point.node);
292
+ }
293
+ if (dom.isRightEdgePoint(point) && lists.contains(leftEdgeNodes, point.node)) {
294
+ node = point.node;
295
+ }
296
+ } else if (includeAncestor) {
297
+ node = dom.ancestor(point.node, pred);
298
+ } else {
299
+ node = point.node;
300
+ }
301
+
302
+ if (node && pred(node)) {
303
+ nodes.push(node);
304
+ }
305
+ }, true);
306
+
307
+ return lists.unique(nodes);
308
+ }
309
+
310
+ /**
311
+ * returns commonAncestor of range
312
+ * @return {Element} - commonAncestor
313
+ */
314
+ commonAncestor() {
315
+ return dom.commonAncestor(this.sc, this.ec);
316
+ }
317
+
318
+ /**
319
+ * returns expanded range by pred
320
+ *
321
+ * @param {Function} pred - predicate function
322
+ * @return {WrappedRange}
323
+ */
324
+ expand(pred) {
325
+ const startAncestor = dom.ancestor(this.sc, pred);
326
+ const endAncestor = dom.ancestor(this.ec, pred);
327
+
328
+ if (!startAncestor && !endAncestor) {
329
+ return new WrappedRange(this.sc, this.so, this.ec, this.eo);
330
+ }
331
+
332
+ const boundaryPoints = this.getPoints();
333
+
334
+ if (startAncestor) {
335
+ boundaryPoints.sc = startAncestor;
336
+ boundaryPoints.so = 0;
337
+ }
338
+
339
+ if (endAncestor) {
340
+ boundaryPoints.ec = endAncestor;
341
+ boundaryPoints.eo = dom.nodeLength(endAncestor);
342
+ }
343
+
344
+ return new WrappedRange(
345
+ boundaryPoints.sc,
346
+ boundaryPoints.so,
347
+ boundaryPoints.ec,
348
+ boundaryPoints.eo
349
+ );
350
+ }
351
+
352
+ /**
353
+ * @param {Boolean} isCollapseToStart
354
+ * @return {WrappedRange}
355
+ */
356
+ collapse(isCollapseToStart) {
357
+ if (isCollapseToStart) {
358
+ return new WrappedRange(this.sc, this.so, this.sc, this.so);
359
+ } else {
360
+ return new WrappedRange(this.ec, this.eo, this.ec, this.eo);
361
+ }
362
+ }
363
+
364
+ /**
365
+ * splitText on range
366
+ */
367
+ splitText() {
368
+ const isSameContainer = this.sc === this.ec;
369
+ const boundaryPoints = this.getPoints();
370
+
371
+ if (dom.isText(this.ec) && !dom.isEdgePoint(this.getEndPoint())) {
372
+ this.ec.splitText(this.eo);
373
+ }
374
+
375
+ if (dom.isText(this.sc) && !dom.isEdgePoint(this.getStartPoint())) {
376
+ boundaryPoints.sc = this.sc.splitText(this.so);
377
+ boundaryPoints.so = 0;
378
+
379
+ if (isSameContainer) {
380
+ boundaryPoints.ec = boundaryPoints.sc;
381
+ boundaryPoints.eo = this.eo - this.so;
382
+ }
383
+ }
384
+
385
+ return new WrappedRange(
386
+ boundaryPoints.sc,
387
+ boundaryPoints.so,
388
+ boundaryPoints.ec,
389
+ boundaryPoints.eo
390
+ );
391
+ }
392
+
393
+ /**
394
+ * delete contents on range
395
+ * @return {WrappedRange}
396
+ */
397
+ deleteContents() {
398
+ if (this.isCollapsed()) {
399
+ return this;
400
+ }
401
+
402
+ const rng = this.splitText();
403
+ const nodes = rng.nodes(null, {
404
+ fullyContains: true
405
+ });
406
+
407
+ // find new cursor point
408
+ const point = dom.prevPointUntil(rng.getStartPoint(), function(point) {
409
+ return !lists.contains(nodes, point.node);
410
+ });
411
+
412
+ const emptyParents = [];
413
+ $.each(nodes, function(idx, node) {
414
+ // find empty parents
415
+ const parent = node.parentNode;
416
+ if (point.node !== parent && dom.nodeLength(parent) === 1) {
417
+ emptyParents.push(parent);
418
+ }
419
+ dom.remove(node, false);
420
+ });
421
+
422
+ // remove empty parents
423
+ $.each(emptyParents, function(idx, node) {
424
+ dom.remove(node, false);
425
+ });
426
+
427
+ return new WrappedRange(
428
+ point.node,
429
+ point.offset,
430
+ point.node,
431
+ point.offset
432
+ ).normalize();
433
+ }
434
+
435
+ /**
436
+ * makeIsOn: return isOn(pred) function
437
+ */
438
+ makeIsOn(pred) {
439
+ return function() {
440
+ const ancestor = dom.ancestor(this.sc, pred);
441
+ return !!ancestor && (ancestor === dom.ancestor(this.ec, pred));
442
+ };
443
+ }
444
+
445
+ /**
446
+ * @param {Function} pred
447
+ * @return {Boolean}
448
+ */
449
+ isLeftEdgeOf(pred) {
450
+ if (!dom.isLeftEdgePoint(this.getStartPoint())) {
451
+ return false;
452
+ }
453
+
454
+ const node = dom.ancestor(this.sc, pred);
455
+ return node && dom.isLeftEdgeOf(this.sc, node);
456
+ }
457
+
458
+ /**
459
+ * returns whether range was collapsed or not
460
+ */
461
+ isCollapsed() {
462
+ return this.sc === this.ec && this.so === this.eo;
463
+ }
464
+
465
+ /**
466
+ * wrap inline nodes which children of body with paragraph
467
+ *
468
+ * @return {WrappedRange}
469
+ */
470
+ wrapBodyInlineWithPara() {
471
+ if (dom.isBodyContainer(this.sc) && dom.isEmpty(this.sc)) {
472
+ this.sc.innerHTML = dom.emptyPara;
473
+ return new WrappedRange(this.sc.firstChild, 0, this.sc.firstChild, 0);
474
+ }
475
+
476
+ /**
477
+ * [workaround] firefox often create range on not visible point. so normalize here.
478
+ * - firefox: |<p>text</p>|
479
+ * - chrome: <p>|text|</p>
480
+ */
481
+ const rng = this.normalize();
482
+ if (dom.isParaInline(this.sc) || dom.isPara(this.sc)) {
483
+ return rng;
484
+ }
485
+
486
+ // find inline top ancestor
487
+ let topAncestor;
488
+ if (dom.isInline(rng.sc)) {
489
+ const ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline));
490
+ topAncestor = lists.last(ancestors);
491
+ if (!dom.isInline(topAncestor)) {
492
+ topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so];
493
+ }
494
+ } else {
495
+ topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0];
496
+ }
497
+
498
+ // siblings not in paragraph
499
+ let inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse();
500
+ inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline));
501
+
502
+ // wrap with paragraph
503
+ if (inlineSiblings.length) {
504
+ const para = dom.wrap(lists.head(inlineSiblings), 'p');
505
+ dom.appendChildNodes(para, lists.tail(inlineSiblings));
506
+ }
507
+
508
+ return this.normalize();
509
+ }
510
+
511
+ /**
512
+ * insert node at current cursor
513
+ *
514
+ * @param {Node} node
515
+ * @return {Node}
516
+ */
517
+ insertNode(node) {
518
+ const rng = this.wrapBodyInlineWithPara().deleteContents();
519
+ const info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node));
520
+
521
+ if (info.rightNode) {
522
+ info.rightNode.parentNode.insertBefore(node, info.rightNode);
523
+ } else {
524
+ info.container.appendChild(node);
525
+ }
526
+
527
+ return node;
528
+ }
529
+
530
+ /**
531
+ * insert html at current cursor
532
+ */
533
+ pasteHTML(markup) {
534
+ const contentsContainer = $('<div></div>').html(markup)[0];
535
+ const childNodes = lists.from(contentsContainer.childNodes);
536
+
537
+ const rng = this.wrapBodyInlineWithPara().deleteContents();
538
+
539
+ return childNodes.reverse().map(function(childNode) {
540
+ return rng.insertNode(childNode);
541
+ }).reverse();
542
+ }
543
+
544
+ /**
545
+ * returns text in range
546
+ *
547
+ * @return {String}
548
+ */
549
+ toString() {
550
+ const nativeRng = this.nativeRange();
551
+ return env.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text;
552
+ }
553
+
554
+ /**
555
+ * returns range for word before cursor
556
+ *
557
+ * @param {Boolean} [findAfter] - find after cursor, default: false
558
+ * @return {WrappedRange}
559
+ */
560
+ getWordRange(findAfter) {
561
+ let endPoint = this.getEndPoint();
562
+
563
+ if (!dom.isCharPoint(endPoint)) {
564
+ return this;
565
+ }
566
+
567
+ const startPoint = dom.prevPointUntil(endPoint, function(point) {
568
+ return !dom.isCharPoint(point);
569
+ });
570
+
571
+ if (findAfter) {
572
+ endPoint = dom.nextPointUntil(endPoint, function(point) {
573
+ return !dom.isCharPoint(point);
574
+ });
575
+ }
576
+
577
+ return new WrappedRange(
578
+ startPoint.node,
579
+ startPoint.offset,
580
+ endPoint.node,
581
+ endPoint.offset
582
+ );
583
+ }
584
+
585
+ /**
586
+ * create offsetPath bookmark
587
+ *
588
+ * @param {Node} editable
589
+ */
590
+ bookmark(editable) {
591
+ return {
592
+ s: {
593
+ path: dom.makeOffsetPath(editable, this.sc),
594
+ offset: this.so
595
+ },
596
+ e: {
597
+ path: dom.makeOffsetPath(editable, this.ec),
598
+ offset: this.eo
599
+ }
600
+ };
601
+ }
602
+
603
+ /**
604
+ * create offsetPath bookmark base on paragraph
605
+ *
606
+ * @param {Node[]} paras
607
+ */
608
+ paraBookmark(paras) {
609
+ return {
610
+ s: {
611
+ path: lists.tail(dom.makeOffsetPath(lists.head(paras), this.sc)),
612
+ offset: this.so
613
+ },
614
+ e: {
615
+ path: lists.tail(dom.makeOffsetPath(lists.last(paras), this.ec)),
616
+ offset: this.eo
617
+ }
618
+ };
619
+ }
620
+
621
+ /**
622
+ * getClientRects
623
+ * @return {Rect[]}
624
+ */
625
+ getClientRects() {
626
+ const nativeRng = this.nativeRange();
627
+ return nativeRng.getClientRects();
628
+ }
629
+ }
630
+
631
+ /**
632
+ * Data structure
633
+ * * BoundaryPoint: a point of dom tree
634
+ * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range
635
+ *
636
+ * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position
637
+ */
638
+ export default {
639
+ /**
640
+ * create Range Object From arguments or Browser Selection
641
+ *
642
+ * @param {Node} sc - start container
643
+ * @param {Number} so - start offset
644
+ * @param {Node} ec - end container
645
+ * @param {Number} eo - end offset
646
+ * @return {WrappedRange}
647
+ */
648
+ create: function(sc, so, ec, eo) {
649
+ if (arguments.length === 4) {
650
+ return new WrappedRange(sc, so, ec, eo);
651
+ } else if (arguments.length === 2) { // collapsed
652
+ ec = sc;
653
+ eo = so;
654
+ return new WrappedRange(sc, so, ec, eo);
655
+ } else {
656
+ let wrappedRange = this.createFromSelection();
657
+ if (!wrappedRange && arguments.length === 1) {
658
+ wrappedRange = this.createFromNode(arguments[0]);
659
+ return wrappedRange.collapse(dom.emptyPara === arguments[0].innerHTML);
660
+ }
661
+ return wrappedRange;
662
+ }
663
+ },
664
+
665
+ createFromSelection: function() {
666
+ let sc, so, ec, eo;
667
+ if (env.isW3CRangeSupport) {
668
+ const selection = document.getSelection();
669
+ if (!selection || selection.rangeCount === 0) {
670
+ return null;
671
+ } else if (dom.isBody(selection.anchorNode)) {
672
+ // Firefox: returns entire body as range on initialization.
673
+ // We won't never need it.
674
+ return null;
675
+ }
676
+
677
+ const nativeRng = selection.getRangeAt(0);
678
+ sc = nativeRng.startContainer;
679
+ so = nativeRng.startOffset;
680
+ ec = nativeRng.endContainer;
681
+ eo = nativeRng.endOffset;
682
+ } else { // IE8: TextRange
683
+ const textRange = document.selection.createRange();
684
+ const textRangeEnd = textRange.duplicate();
685
+ textRangeEnd.collapse(false);
686
+ const textRangeStart = textRange;
687
+ textRangeStart.collapse(true);
688
+
689
+ let startPoint = textRangeToPoint(textRangeStart, true);
690
+ let endPoint = textRangeToPoint(textRangeEnd, false);
691
+
692
+ // same visible point case: range was collapsed.
693
+ if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) &&
694
+ dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) &&
695
+ endPoint.node.nextSibling === startPoint.node) {
696
+ startPoint = endPoint;
697
+ }
698
+
699
+ sc = startPoint.cont;
700
+ so = startPoint.offset;
701
+ ec = endPoint.cont;
702
+ eo = endPoint.offset;
703
+ }
704
+
705
+ return new WrappedRange(sc, so, ec, eo);
706
+ },
707
+
708
+ /**
709
+ * @method
710
+ *
711
+ * create WrappedRange from node
712
+ *
713
+ * @param {Node} node
714
+ * @return {WrappedRange}
715
+ */
716
+ createFromNode: function(node) {
717
+ let sc = node;
718
+ let so = 0;
719
+ let ec = node;
720
+ let eo = dom.nodeLength(ec);
721
+
722
+ // browsers can't target a picture or void node
723
+ if (dom.isVoid(sc)) {
724
+ so = dom.listPrev(sc).length - 1;
725
+ sc = sc.parentNode;
726
+ }
727
+ if (dom.isBR(ec)) {
728
+ eo = dom.listPrev(ec).length - 1;
729
+ ec = ec.parentNode;
730
+ } else if (dom.isVoid(ec)) {
731
+ eo = dom.listPrev(ec).length;
732
+ ec = ec.parentNode;
733
+ }
734
+
735
+ return this.create(sc, so, ec, eo);
736
+ },
737
+
738
+ /**
739
+ * create WrappedRange from node after position
740
+ *
741
+ * @param {Node} node
742
+ * @return {WrappedRange}
743
+ */
744
+ createFromNodeBefore: function(node) {
745
+ return this.createFromNode(node).collapse(true);
746
+ },
747
+
748
+ /**
749
+ * create WrappedRange from node after position
750
+ *
751
+ * @param {Node} node
752
+ * @return {WrappedRange}
753
+ */
754
+ createFromNodeAfter: function(node) {
755
+ return this.createFromNode(node).collapse();
756
+ },
757
+
758
+ /**
759
+ * @method
760
+ *
761
+ * create WrappedRange from bookmark
762
+ *
763
+ * @param {Node} editable
764
+ * @param {Object} bookmark
765
+ * @return {WrappedRange}
766
+ */
767
+ createFromBookmark: function(editable, bookmark) {
768
+ const sc = dom.fromOffsetPath(editable, bookmark.s.path);
769
+ const so = bookmark.s.offset;
770
+ const ec = dom.fromOffsetPath(editable, bookmark.e.path);
771
+ const eo = bookmark.e.offset;
772
+ return new WrappedRange(sc, so, ec, eo);
773
+ },
774
+
775
+ /**
776
+ * @method
777
+ *
778
+ * create WrappedRange from paraBookmark
779
+ *
780
+ * @param {Object} bookmark
781
+ * @param {Node[]} paras
782
+ * @return {WrappedRange}
783
+ */
784
+ createFromParaBookmark: function(bookmark, paras) {
785
+ const so = bookmark.s.offset;
786
+ const eo = bookmark.e.offset;
787
+ const sc = dom.fromOffsetPath(lists.head(paras), bookmark.s.path);
788
+ const ec = dom.fromOffsetPath(lists.last(paras), bookmark.e.path);
789
+
790
+ return new WrappedRange(sc, so, ec, eo);
791
+ }
792
+ };