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,17 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve">
6
+ <g>
7
+ <g>
8
+ <path fill="#040507" d="M684.868,95.723c-38.258,0-69.273-30.712-69.273-68.606H389.834c0,37.891-31.018,68.606-69.276,68.606
9
+ H15.731v69.894h978.333V95.723H684.868z M224.755,996.884h560.281L924.92,234.799H84.871L224.755,996.884z M688.173,355.88
10
+ c0-22.491,18.415-40.721,41.121-40.721c22.71,0,41.12,18.23,41.12,40.721l-60.545,515.828c0,22.491-18.415,40.719-41.118,40.719
11
+ c-22.707,0-41.116-18.229-41.116-40.719L688.173,355.88z M464.44,355.88c0-22.491,18.413-40.721,41.123-40.721
12
+ c22.708,0,41.115,18.23,41.115,40.721v515.828c0,22.491-18.407,40.719-41.115,40.719c-22.712,0-41.123-18.229-41.123-40.719
13
+ V355.88z M269.712,315.159c22.711,0,41.118,18.23,41.118,40.721l70.229,515.828c0,22.491-18.405,40.719-41.113,40.719
14
+ c-22.712,0-41.123-18.229-41.123-40.719L228.593,355.88C228.594,333.39,247.004,315.159,269.712,315.159z"/>
15
+ </g>
16
+ </g>
17
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024">
2
+ <defs>
3
+ <style>
4
+ .cls-1 {
5
+ fill: #000;
6
+ fill-rule: evenodd;
7
+ }
8
+ </style>
9
+ </defs>
10
+ <path d="M908.526,146.582 C888.706,156.816 875.010,171.009 867.419,189.175 C859.828,207.341 856.035,232.713 856.035,265.284 L856.035,549.047 C856.035,610.022 852.133,659.822 844.334,698.446 C836.531,737.077 818.089,774.240 788.998,809.946 C759.903,845.651 719.429,874.367 667.570,896.077 C615.711,917.783 558.158,928.648 494.914,928.648 C428.718,928.648 369.376,917.893 316.885,896.388 C264.394,874.886 224.231,847.742 196.405,814.955 C168.579,782.175 149.702,746.473 139.800,707.842 C129.892,669.218 124.938,623.384 124.938,570.343 L124.938,235.218 C124.938,195.125 117.984,167.780 104.071,153.158 C90.153,138.544 59.799,131.235 12.997,131.235 L12.997,61.702 L465.824,61.702 L465.824,131.235 L451.278,131.235 C408.686,131.235 381.077,138.965 368.428,154.410 C355.779,169.867 349.453,196.799 349.453,235.218 L349.453,570.343 C349.453,631.319 354.515,679.338 364.635,714.418 C374.750,749.498 396.886,779.359 431.039,803.995 C465.192,828.639 506.081,840.953 553.732,840.953 C605.591,840.953 649.958,827.796 686.861,801.487 C723.745,775.177 747.670,743.134 758.639,705.333 C769.599,667.544 775.085,614.819 775.085,547.168 L775.085,261.527 C775.085,174.671 732.709,131.235 647.962,131.235 L647.962,61.702 L965.447,61.702 L965.447,131.235 C947.312,131.235 928.341,136.351 908.526,146.582 ZM932.995,1046.691 L70.468,1046.691 L70.468,975.619 L932.995,975.619 L932.995,1046.691 Z" class="cls-1"/>
11
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024">
2
+ <defs>
3
+ <style>
4
+ .cls-1 {
5
+ fill-rule: evenodd;
6
+ }
7
+ </style>
8
+ </defs>
9
+ <path id="Shape_29_copy_2" data-name="Shape 29 copy 2" class="cls-1" d="M-84.808,193.372V728.531H480.079L325.064,580.294s-21.019-241.2,341.56-241.2S1176.34,648.131,1176.34,648.131s-147.14-482.4-546.5-482.4c-364.362,0-567.515,165.824-567.515,165.824Z"/>
10
+ </svg>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve">
6
+ <path d="M1032.671,90.351H270.806v170.108h761.865V90.351L1032.671,90.351z M271.531,428.395v168.558h761.97V428.395H271.531z
7
+ M270.806,933.649h761.865V765.3H270.806V933.649z M160.712,90.351H-9.5v170.108h170.212V90.351L160.712,90.351z M-8.982,596.951
8
+ h170.314V428.395H-8.982V596.951z M-9.397,933.649h170.212V765.3H-9.397V933.649L-9.397,933.649z"/>
9
+ </svg>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve">
6
+ <path d="M-70.443,728.622l284.268-120.036V416.415L-70.443,296.266V728.622z M962.801,200.673H329.249
7
+ c-39.146,0-71.374,31.489-71.374,69.789v484.301c0,38.076,32.118,69.564,71.374,69.564h633.552
8
+ c39.256,0,71.263-31.488,71.263-69.564V270.351C1034.064,232.162,1001.946,200.673,962.801,200.673z"/>
9
+ </svg>
@@ -0,0 +1,231 @@
1
+ import $ from 'jquery';
2
+ import func from './core/func';
3
+ import lists from './core/lists';
4
+ import dom from './core/dom';
5
+
6
+ export default class Context {
7
+ /**
8
+ * @param {jQuery} $note
9
+ * @param {Object} options
10
+ */
11
+ constructor($note, options) {
12
+ this.ui = $.summernote.ui;
13
+ this.$note = $note;
14
+
15
+ this.memos = {};
16
+ this.modules = {};
17
+ this.layoutInfo = {};
18
+ this.options = options;
19
+
20
+ this.initialize();
21
+ }
22
+
23
+ /**
24
+ * create layout and initialize modules and other resources
25
+ */
26
+ initialize() {
27
+ this.layoutInfo = this.ui.createLayout(this.$note, this.options);
28
+ this._initialize();
29
+ this.$note.hide();
30
+ return this;
31
+ }
32
+
33
+ /**
34
+ * destroy modules and other resources and remove layout
35
+ */
36
+ destroy() {
37
+ this._destroy();
38
+ this.$note.removeData('summernote');
39
+ this.ui.removeLayout(this.$note, this.layoutInfo);
40
+ }
41
+
42
+ /**
43
+ * destory modules and other resources and initialize it again
44
+ */
45
+ reset() {
46
+ const disabled = this.isDisabled();
47
+ this.code(dom.emptyPara);
48
+ this._destroy();
49
+ this._initialize();
50
+
51
+ if (disabled) {
52
+ this.disable();
53
+ }
54
+ }
55
+
56
+ _initialize() {
57
+ // add optional buttons
58
+ const buttons = $.extend({}, this.options.buttons);
59
+ Object.keys(buttons).forEach((key) => {
60
+ this.memo('button.' + key, buttons[key]);
61
+ });
62
+
63
+ const modules = $.extend({}, this.options.modules, $.summernote.plugins || {});
64
+
65
+ // add and initialize modules
66
+ Object.keys(modules).forEach((key) => {
67
+ this.module(key, modules[key], true);
68
+ });
69
+
70
+ Object.keys(this.modules).forEach((key) => {
71
+ this.initializeModule(key);
72
+ });
73
+ }
74
+
75
+ _destroy() {
76
+ // destroy modules with reversed order
77
+ Object.keys(this.modules).reverse().forEach((key) => {
78
+ this.removeModule(key);
79
+ });
80
+
81
+ Object.keys(this.memos).forEach((key) => {
82
+ this.removeMemo(key);
83
+ });
84
+ // trigger custom onDestroy callback
85
+ this.triggerEvent('destroy', this);
86
+ }
87
+
88
+ code(html) {
89
+ const isActivated = this.invoke('codeview.isActivated');
90
+
91
+ if (html === undefined) {
92
+ this.invoke('codeview.sync');
93
+ return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html();
94
+ } else {
95
+ if (isActivated) {
96
+ this.layoutInfo.codable.val(html);
97
+ } else {
98
+ this.layoutInfo.editable.html(html);
99
+ }
100
+ this.$note.val(html);
101
+ this.triggerEvent('change', html);
102
+ }
103
+ }
104
+
105
+ isDisabled() {
106
+ return this.layoutInfo.editable.attr('contenteditable') === 'false';
107
+ }
108
+
109
+ enable() {
110
+ this.layoutInfo.editable.attr('contenteditable', true);
111
+ this.invoke('toolbar.activate', true);
112
+ this.triggerEvent('disable', false);
113
+ }
114
+
115
+ disable() {
116
+ // close codeview if codeview is opend
117
+ if (this.invoke('codeview.isActivated')) {
118
+ this.invoke('codeview.deactivate');
119
+ }
120
+ this.layoutInfo.editable.attr('contenteditable', false);
121
+ this.invoke('toolbar.deactivate', true);
122
+
123
+ this.triggerEvent('disable', true);
124
+ }
125
+
126
+ triggerEvent() {
127
+ const namespace = lists.head(arguments);
128
+ const args = lists.tail(lists.from(arguments));
129
+
130
+ const callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')];
131
+ if (callback) {
132
+ callback.apply(this.$note[0], args);
133
+ }
134
+ this.$note.trigger('summernote.' + namespace, args);
135
+ }
136
+
137
+ initializeModule(key) {
138
+ const module = this.modules[key];
139
+ module.shouldInitialize = module.shouldInitialize || func.ok;
140
+ if (!module.shouldInitialize()) {
141
+ return;
142
+ }
143
+
144
+ // initialize module
145
+ if (module.initialize) {
146
+ module.initialize();
147
+ }
148
+
149
+ // attach events
150
+ if (module.events) {
151
+ dom.attachEvents(this.$note, module.events);
152
+ }
153
+ }
154
+
155
+ module(key, ModuleClass, withoutIntialize) {
156
+ if (arguments.length === 1) {
157
+ return this.modules[key];
158
+ }
159
+
160
+ this.modules[key] = new ModuleClass(this);
161
+
162
+ if (!withoutIntialize) {
163
+ this.initializeModule(key);
164
+ }
165
+ }
166
+
167
+ removeModule(key) {
168
+ const module = this.modules[key];
169
+ if (module.shouldInitialize()) {
170
+ if (module.events) {
171
+ dom.detachEvents(this.$note, module.events);
172
+ }
173
+
174
+ if (module.destroy) {
175
+ module.destroy();
176
+ }
177
+ }
178
+
179
+ delete this.modules[key];
180
+ }
181
+
182
+ memo(key, obj) {
183
+ if (arguments.length === 1) {
184
+ return this.memos[key];
185
+ }
186
+ this.memos[key] = obj;
187
+ }
188
+
189
+ removeMemo(key) {
190
+ if (this.memos[key] && this.memos[key].destroy) {
191
+ this.memos[key].destroy();
192
+ }
193
+
194
+ delete this.memos[key];
195
+ }
196
+
197
+ /**
198
+ * Some buttons need to change their visual style immediately once they get pressed
199
+ */
200
+ createInvokeHandlerAndUpdateState(namespace, value) {
201
+ return (event) => {
202
+ this.createInvokeHandler(namespace, value)(event);
203
+ this.invoke('buttons.updateCurrentStyle');
204
+ };
205
+ }
206
+
207
+ createInvokeHandler(namespace, value) {
208
+ return (event) => {
209
+ event.preventDefault();
210
+ const $target = $(event.target);
211
+ this.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target);
212
+ };
213
+ }
214
+
215
+ invoke() {
216
+ const namespace = lists.head(arguments);
217
+ const args = lists.tail(lists.from(arguments));
218
+
219
+ const splits = namespace.split('.');
220
+ const hasSeparator = splits.length > 1;
221
+ const moduleName = hasSeparator && lists.head(splits);
222
+ const methodName = hasSeparator ? lists.last(splits) : lists.head(splits);
223
+
224
+ const module = this.modules[moduleName || 'editor'];
225
+ if (!moduleName && this[methodName]) {
226
+ return this[methodName].apply(this, args);
227
+ } else if (module && module[methodName] && module.shouldInitialize()) {
228
+ return module[methodName].apply(module, args);
229
+ }
230
+ }
231
+ }
@@ -0,0 +1,47 @@
1
+ import $ from 'jquery';
2
+
3
+ /**
4
+ * @method readFileAsDataURL
5
+ *
6
+ * read contents of file as representing URL
7
+ *
8
+ * @param {File} file
9
+ * @return {Promise} - then: dataUrl
10
+ */
11
+ export function readFileAsDataURL(file) {
12
+ return $.Deferred((deferred) => {
13
+ $.extend(new FileReader(), {
14
+ onload: (e) => {
15
+ const dataURL = e.target.result;
16
+ deferred.resolve(dataURL);
17
+ },
18
+ onerror: (err) => {
19
+ deferred.reject(err);
20
+ }
21
+ }).readAsDataURL(file);
22
+ }).promise();
23
+ }
24
+
25
+ /**
26
+ * @method createImage
27
+ *
28
+ * create `<image>` from url string
29
+ *
30
+ * @param {String} url
31
+ * @return {Promise} - then: $image
32
+ */
33
+ export function createImage(url) {
34
+ return $.Deferred((deferred) => {
35
+ const $img = $('<img>');
36
+
37
+ $img.one('load', () => {
38
+ $img.off('error abort');
39
+ deferred.resolve($img);
40
+ }).one('error abort', () => {
41
+ $img.off('load').detach();
42
+ deferred.reject($img);
43
+ }).css({
44
+ display: 'none'
45
+ }).appendTo(document.body).attr('src', url);
46
+ }).promise();
47
+ }
@@ -0,0 +1,1088 @@
1
+ import $ from 'jquery';
2
+ import func from './func';
3
+ import lists from './lists';
4
+ import env from './env';
5
+
6
+ const NBSP_CHAR = String.fromCharCode(160);
7
+ const ZERO_WIDTH_NBSP_CHAR = '\ufeff';
8
+
9
+ /**
10
+ * @method isEditable
11
+ *
12
+ * returns whether node is `note-editable` or not.
13
+ *
14
+ * @param {Node} node
15
+ * @return {Boolean}
16
+ */
17
+ function isEditable(node) {
18
+ return node && $(node).hasClass('note-editable');
19
+ }
20
+
21
+ /**
22
+ * @method isControlSizing
23
+ *
24
+ * returns whether node is `note-control-sizing` or not.
25
+ *
26
+ * @param {Node} node
27
+ * @return {Boolean}
28
+ */
29
+ function isControlSizing(node) {
30
+ return node && $(node).hasClass('note-control-sizing');
31
+ }
32
+
33
+ /**
34
+ * @method makePredByNodeName
35
+ *
36
+ * returns predicate which judge whether nodeName is same
37
+ *
38
+ * @param {String} nodeName
39
+ * @return {Function}
40
+ */
41
+ function makePredByNodeName(nodeName) {
42
+ nodeName = nodeName.toUpperCase();
43
+ return function(node) {
44
+ return node && node.nodeName.toUpperCase() === nodeName;
45
+ };
46
+ }
47
+
48
+ /**
49
+ * @method isText
50
+ *
51
+ *
52
+ *
53
+ * @param {Node} node
54
+ * @return {Boolean} true if node's type is text(3)
55
+ */
56
+ function isText(node) {
57
+ return node && node.nodeType === 3;
58
+ }
59
+
60
+ /**
61
+ * @method isElement
62
+ *
63
+ *
64
+ *
65
+ * @param {Node} node
66
+ * @return {Boolean} true if node's type is element(1)
67
+ */
68
+ function isElement(node) {
69
+ return node && node.nodeType === 1;
70
+ }
71
+
72
+ /**
73
+ * ex) br, col, embed, hr, img, input, ...
74
+ * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements
75
+ */
76
+ function isVoid(node) {
77
+ return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT/.test(node.nodeName.toUpperCase());
78
+ }
79
+
80
+ function isPara(node) {
81
+ if (isEditable(node)) {
82
+ return false;
83
+ }
84
+
85
+ // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph
86
+ return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase());
87
+ }
88
+
89
+ function isHeading(node) {
90
+ return node && /^H[1-7]/.test(node.nodeName.toUpperCase());
91
+ }
92
+
93
+ const isPre = makePredByNodeName('PRE');
94
+
95
+ const isLi = makePredByNodeName('LI');
96
+
97
+ function isPurePara(node) {
98
+ return isPara(node) && !isLi(node);
99
+ }
100
+
101
+ const isTable = makePredByNodeName('TABLE');
102
+
103
+ const isData = makePredByNodeName('DATA');
104
+
105
+ function isInline(node) {
106
+ return !isBodyContainer(node) &&
107
+ !isList(node) &&
108
+ !isHr(node) &&
109
+ !isPara(node) &&
110
+ !isTable(node) &&
111
+ !isBlockquote(node) &&
112
+ !isData(node);
113
+ }
114
+
115
+ function isList(node) {
116
+ return node && /^UL|^OL/.test(node.nodeName.toUpperCase());
117
+ }
118
+
119
+ const isHr = makePredByNodeName('HR');
120
+
121
+ function isCell(node) {
122
+ return node && /^TD|^TH/.test(node.nodeName.toUpperCase());
123
+ }
124
+
125
+ const isBlockquote = makePredByNodeName('BLOCKQUOTE');
126
+
127
+ function isBodyContainer(node) {
128
+ return isCell(node) || isBlockquote(node) || isEditable(node);
129
+ }
130
+
131
+ const isAnchor = makePredByNodeName('A');
132
+
133
+ function isParaInline(node) {
134
+ return isInline(node) && !!ancestor(node, isPara);
135
+ }
136
+
137
+ function isBodyInline(node) {
138
+ return isInline(node) && !ancestor(node, isPara);
139
+ }
140
+
141
+ const isBody = makePredByNodeName('BODY');
142
+
143
+ /**
144
+ * returns whether nodeB is closest sibling of nodeA
145
+ *
146
+ * @param {Node} nodeA
147
+ * @param {Node} nodeB
148
+ * @return {Boolean}
149
+ */
150
+ function isClosestSibling(nodeA, nodeB) {
151
+ return nodeA.nextSibling === nodeB ||
152
+ nodeA.previousSibling === nodeB;
153
+ }
154
+
155
+ /**
156
+ * returns array of closest siblings with node
157
+ *
158
+ * @param {Node} node
159
+ * @param {function} [pred] - predicate function
160
+ * @return {Node[]}
161
+ */
162
+ function withClosestSiblings(node, pred) {
163
+ pred = pred || func.ok;
164
+
165
+ const siblings = [];
166
+ if (node.previousSibling && pred(node.previousSibling)) {
167
+ siblings.push(node.previousSibling);
168
+ }
169
+ siblings.push(node);
170
+ if (node.nextSibling && pred(node.nextSibling)) {
171
+ siblings.push(node.nextSibling);
172
+ }
173
+ return siblings;
174
+ }
175
+
176
+ /**
177
+ * blank HTML for cursor position
178
+ * - [workaround] old IE only works with &nbsp;
179
+ * - [workaround] IE11 and other browser works with bogus br
180
+ */
181
+ const blankHTML = env.isMSIE && env.browserVersion < 11 ? '&nbsp;' : '<br>';
182
+
183
+ /**
184
+ * @method nodeLength
185
+ *
186
+ * returns #text's text size or element's childNodes size
187
+ *
188
+ * @param {Node} node
189
+ */
190
+ function nodeLength(node) {
191
+ if (isText(node)) {
192
+ return node.nodeValue.length;
193
+ }
194
+
195
+ if (node) {
196
+ return node.childNodes.length;
197
+ }
198
+
199
+ return 0;
200
+ }
201
+
202
+ /**
203
+ * returns whether node is empty or not.
204
+ *
205
+ * @param {Node} node
206
+ * @return {Boolean}
207
+ */
208
+ function isEmpty(node) {
209
+ const len = nodeLength(node);
210
+
211
+ if (len === 0) {
212
+ return true;
213
+ } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) {
214
+ // ex) <p><br></p>, <span><br></span>
215
+ return true;
216
+ } else if (lists.all(node.childNodes, isText) && node.innerHTML === '') {
217
+ // ex) <p></p>, <span></span>
218
+ return true;
219
+ }
220
+
221
+ return false;
222
+ }
223
+
224
+ /**
225
+ * padding blankHTML if node is empty (for cursor position)
226
+ */
227
+ function paddingBlankHTML(node) {
228
+ if (!isVoid(node) && !nodeLength(node)) {
229
+ node.innerHTML = blankHTML;
230
+ }
231
+ }
232
+
233
+ /**
234
+ * find nearest ancestor predicate hit
235
+ *
236
+ * @param {Node} node
237
+ * @param {Function} pred - predicate function
238
+ */
239
+ function ancestor(node, pred) {
240
+ while (node) {
241
+ if (pred(node)) { return node; }
242
+ if (isEditable(node)) { break; }
243
+
244
+ node = node.parentNode;
245
+ }
246
+ return null;
247
+ }
248
+
249
+ /**
250
+ * find nearest ancestor only single child blood line and predicate hit
251
+ *
252
+ * @param {Node} node
253
+ * @param {Function} pred - predicate function
254
+ */
255
+ function singleChildAncestor(node, pred) {
256
+ node = node.parentNode;
257
+
258
+ while (node) {
259
+ if (nodeLength(node) !== 1) { break; }
260
+ if (pred(node)) { return node; }
261
+ if (isEditable(node)) { break; }
262
+
263
+ node = node.parentNode;
264
+ }
265
+ return null;
266
+ }
267
+
268
+ /**
269
+ * returns new array of ancestor nodes (until predicate hit).
270
+ *
271
+ * @param {Node} node
272
+ * @param {Function} [optional] pred - predicate function
273
+ */
274
+ function listAncestor(node, pred) {
275
+ pred = pred || func.fail;
276
+
277
+ const ancestors = [];
278
+ ancestor(node, function(el) {
279
+ if (!isEditable(el)) {
280
+ ancestors.push(el);
281
+ }
282
+
283
+ return pred(el);
284
+ });
285
+ return ancestors;
286
+ }
287
+
288
+ /**
289
+ * find farthest ancestor predicate hit
290
+ */
291
+ function lastAncestor(node, pred) {
292
+ const ancestors = listAncestor(node);
293
+ return lists.last(ancestors.filter(pred));
294
+ }
295
+
296
+ /**
297
+ * returns common ancestor node between two nodes.
298
+ *
299
+ * @param {Node} nodeA
300
+ * @param {Node} nodeB
301
+ */
302
+ function commonAncestor(nodeA, nodeB) {
303
+ const ancestors = listAncestor(nodeA);
304
+ for (let n = nodeB; n; n = n.parentNode) {
305
+ if ($.inArray(n, ancestors) > -1) { return n; }
306
+ }
307
+ return null; // difference document area
308
+ }
309
+
310
+ /**
311
+ * listing all previous siblings (until predicate hit).
312
+ *
313
+ * @param {Node} node
314
+ * @param {Function} [optional] pred - predicate function
315
+ */
316
+ function listPrev(node, pred) {
317
+ pred = pred || func.fail;
318
+
319
+ const nodes = [];
320
+ while (node) {
321
+ if (pred(node)) { break; }
322
+ nodes.push(node);
323
+ node = node.previousSibling;
324
+ }
325
+ return nodes;
326
+ }
327
+
328
+ /**
329
+ * listing next siblings (until predicate hit).
330
+ *
331
+ * @param {Node} node
332
+ * @param {Function} [pred] - predicate function
333
+ */
334
+ function listNext(node, pred) {
335
+ pred = pred || func.fail;
336
+
337
+ const nodes = [];
338
+ while (node) {
339
+ if (pred(node)) { break; }
340
+ nodes.push(node);
341
+ node = node.nextSibling;
342
+ }
343
+ return nodes;
344
+ }
345
+
346
+ /**
347
+ * listing descendant nodes
348
+ *
349
+ * @param {Node} node
350
+ * @param {Function} [pred] - predicate function
351
+ */
352
+ function listDescendant(node, pred) {
353
+ const descendants = [];
354
+ pred = pred || func.ok;
355
+
356
+ // start DFS(depth first search) with node
357
+ (function fnWalk(current) {
358
+ if (node !== current && pred(current)) {
359
+ descendants.push(current);
360
+ }
361
+ for (let idx = 0, len = current.childNodes.length; idx < len; idx++) {
362
+ fnWalk(current.childNodes[idx]);
363
+ }
364
+ })(node);
365
+
366
+ return descendants;
367
+ }
368
+
369
+ /**
370
+ * wrap node with new tag.
371
+ *
372
+ * @param {Node} node
373
+ * @param {Node} tagName of wrapper
374
+ * @return {Node} - wrapper
375
+ */
376
+ function wrap(node, wrapperName) {
377
+ const parent = node.parentNode;
378
+ const wrapper = $('<' + wrapperName + '>')[0];
379
+
380
+ parent.insertBefore(wrapper, node);
381
+ wrapper.appendChild(node);
382
+
383
+ return wrapper;
384
+ }
385
+
386
+ /**
387
+ * insert node after preceding
388
+ *
389
+ * @param {Node} node
390
+ * @param {Node} preceding - predicate function
391
+ */
392
+ function insertAfter(node, preceding) {
393
+ const next = preceding.nextSibling;
394
+ let parent = preceding.parentNode;
395
+ if (next) {
396
+ parent.insertBefore(node, next);
397
+ } else {
398
+ parent.appendChild(node);
399
+ }
400
+ return node;
401
+ }
402
+
403
+ /**
404
+ * append elements.
405
+ *
406
+ * @param {Node} node
407
+ * @param {Collection} aChild
408
+ */
409
+ function appendChildNodes(node, aChild) {
410
+ $.each(aChild, function(idx, child) {
411
+ node.appendChild(child);
412
+ });
413
+ return node;
414
+ }
415
+
416
+ /**
417
+ * returns whether boundaryPoint is left edge or not.
418
+ *
419
+ * @param {BoundaryPoint} point
420
+ * @return {Boolean}
421
+ */
422
+ function isLeftEdgePoint(point) {
423
+ return point.offset === 0;
424
+ }
425
+
426
+ /**
427
+ * returns whether boundaryPoint is right edge or not.
428
+ *
429
+ * @param {BoundaryPoint} point
430
+ * @return {Boolean}
431
+ */
432
+ function isRightEdgePoint(point) {
433
+ return point.offset === nodeLength(point.node);
434
+ }
435
+
436
+ /**
437
+ * returns whether boundaryPoint is edge or not.
438
+ *
439
+ * @param {BoundaryPoint} point
440
+ * @return {Boolean}
441
+ */
442
+ function isEdgePoint(point) {
443
+ return isLeftEdgePoint(point) || isRightEdgePoint(point);
444
+ }
445
+
446
+ /**
447
+ * returns whether node is left edge of ancestor or not.
448
+ *
449
+ * @param {Node} node
450
+ * @param {Node} ancestor
451
+ * @return {Boolean}
452
+ */
453
+ function isLeftEdgeOf(node, ancestor) {
454
+ while (node && node !== ancestor) {
455
+ if (position(node) !== 0) {
456
+ return false;
457
+ }
458
+ node = node.parentNode;
459
+ }
460
+
461
+ return true;
462
+ }
463
+
464
+ /**
465
+ * returns whether node is right edge of ancestor or not.
466
+ *
467
+ * @param {Node} node
468
+ * @param {Node} ancestor
469
+ * @return {Boolean}
470
+ */
471
+ function isRightEdgeOf(node, ancestor) {
472
+ if (!ancestor) {
473
+ return false;
474
+ }
475
+ while (node && node !== ancestor) {
476
+ if (position(node) !== nodeLength(node.parentNode) - 1) {
477
+ return false;
478
+ }
479
+ node = node.parentNode;
480
+ }
481
+
482
+ return true;
483
+ }
484
+
485
+ /**
486
+ * returns whether point is left edge of ancestor or not.
487
+ * @param {BoundaryPoint} point
488
+ * @param {Node} ancestor
489
+ * @return {Boolean}
490
+ */
491
+ function isLeftEdgePointOf(point, ancestor) {
492
+ return isLeftEdgePoint(point) && isLeftEdgeOf(point.node, ancestor);
493
+ }
494
+
495
+ /**
496
+ * returns whether point is right edge of ancestor or not.
497
+ * @param {BoundaryPoint} point
498
+ * @param {Node} ancestor
499
+ * @return {Boolean}
500
+ */
501
+ function isRightEdgePointOf(point, ancestor) {
502
+ return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor);
503
+ }
504
+
505
+ /**
506
+ * returns offset from parent.
507
+ *
508
+ * @param {Node} node
509
+ */
510
+ function position(node) {
511
+ let offset = 0;
512
+ while ((node = node.previousSibling)) {
513
+ offset += 1;
514
+ }
515
+ return offset;
516
+ }
517
+
518
+ function hasChildren(node) {
519
+ return !!(node && node.childNodes && node.childNodes.length);
520
+ }
521
+
522
+ /**
523
+ * returns previous boundaryPoint
524
+ *
525
+ * @param {BoundaryPoint} point
526
+ * @param {Boolean} isSkipInnerOffset
527
+ * @return {BoundaryPoint}
528
+ */
529
+ function prevPoint(point, isSkipInnerOffset) {
530
+ let node;
531
+ let offset;
532
+
533
+ if (point.offset === 0) {
534
+ if (isEditable(point.node)) {
535
+ return null;
536
+ }
537
+
538
+ node = point.node.parentNode;
539
+ offset = position(point.node);
540
+ } else if (hasChildren(point.node)) {
541
+ node = point.node.childNodes[point.offset - 1];
542
+ offset = nodeLength(node);
543
+ } else {
544
+ node = point.node;
545
+ offset = isSkipInnerOffset ? 0 : point.offset - 1;
546
+ }
547
+
548
+ return {
549
+ node: node,
550
+ offset: offset
551
+ };
552
+ }
553
+
554
+ /**
555
+ * returns next boundaryPoint
556
+ *
557
+ * @param {BoundaryPoint} point
558
+ * @param {Boolean} isSkipInnerOffset
559
+ * @return {BoundaryPoint}
560
+ */
561
+ function nextPoint(point, isSkipInnerOffset) {
562
+ let node, offset;
563
+
564
+ if (nodeLength(point.node) === point.offset) {
565
+ if (isEditable(point.node)) {
566
+ return null;
567
+ }
568
+
569
+ node = point.node.parentNode;
570
+ offset = position(point.node) + 1;
571
+ } else if (hasChildren(point.node)) {
572
+ node = point.node.childNodes[point.offset];
573
+ offset = 0;
574
+ } else {
575
+ node = point.node;
576
+ offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;
577
+ }
578
+
579
+ return {
580
+ node: node,
581
+ offset: offset
582
+ };
583
+ }
584
+
585
+ /**
586
+ * returns whether pointA and pointB is same or not.
587
+ *
588
+ * @param {BoundaryPoint} pointA
589
+ * @param {BoundaryPoint} pointB
590
+ * @return {Boolean}
591
+ */
592
+ function isSamePoint(pointA, pointB) {
593
+ return pointA.node === pointB.node && pointA.offset === pointB.offset;
594
+ }
595
+
596
+ /**
597
+ * returns whether point is visible (can set cursor) or not.
598
+ *
599
+ * @param {BoundaryPoint} point
600
+ * @return {Boolean}
601
+ */
602
+ function isVisiblePoint(point) {
603
+ if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) {
604
+ return true;
605
+ }
606
+
607
+ const leftNode = point.node.childNodes[point.offset - 1];
608
+ const rightNode = point.node.childNodes[point.offset];
609
+ if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) {
610
+ return true;
611
+ }
612
+
613
+ return false;
614
+ }
615
+
616
+ /**
617
+ * @method prevPointUtil
618
+ *
619
+ * @param {BoundaryPoint} point
620
+ * @param {Function} pred
621
+ * @return {BoundaryPoint}
622
+ */
623
+ function prevPointUntil(point, pred) {
624
+ while (point) {
625
+ if (pred(point)) {
626
+ return point;
627
+ }
628
+
629
+ point = prevPoint(point);
630
+ }
631
+
632
+ return null;
633
+ }
634
+
635
+ /**
636
+ * @method nextPointUntil
637
+ *
638
+ * @param {BoundaryPoint} point
639
+ * @param {Function} pred
640
+ * @return {BoundaryPoint}
641
+ */
642
+ function nextPointUntil(point, pred) {
643
+ while (point) {
644
+ if (pred(point)) {
645
+ return point;
646
+ }
647
+
648
+ point = nextPoint(point);
649
+ }
650
+
651
+ return null;
652
+ }
653
+
654
+ /**
655
+ * returns whether point has character or not.
656
+ *
657
+ * @param {Point} point
658
+ * @return {Boolean}
659
+ */
660
+ function isCharPoint(point) {
661
+ if (!isText(point.node)) {
662
+ return false;
663
+ }
664
+
665
+ const ch = point.node.nodeValue.charAt(point.offset - 1);
666
+ return ch && (ch !== ' ' && ch !== NBSP_CHAR);
667
+ }
668
+
669
+ /**
670
+ * @method walkPoint
671
+ *
672
+ * @param {BoundaryPoint} startPoint
673
+ * @param {BoundaryPoint} endPoint
674
+ * @param {Function} handler
675
+ * @param {Boolean} isSkipInnerOffset
676
+ */
677
+ function walkPoint(startPoint, endPoint, handler, isSkipInnerOffset) {
678
+ let point = startPoint;
679
+
680
+ while (point) {
681
+ handler(point);
682
+
683
+ if (isSamePoint(point, endPoint)) {
684
+ break;
685
+ }
686
+
687
+ const isSkipOffset = isSkipInnerOffset &&
688
+ startPoint.node !== point.node &&
689
+ endPoint.node !== point.node;
690
+ point = nextPoint(point, isSkipOffset);
691
+ }
692
+ }
693
+
694
+ /**
695
+ * @method makeOffsetPath
696
+ *
697
+ * return offsetPath(array of offset) from ancestor
698
+ *
699
+ * @param {Node} ancestor - ancestor node
700
+ * @param {Node} node
701
+ */
702
+ function makeOffsetPath(ancestor, node) {
703
+ const ancestors = listAncestor(node, func.eq(ancestor));
704
+ return ancestors.map(position).reverse();
705
+ }
706
+
707
+ /**
708
+ * @method fromOffsetPath
709
+ *
710
+ * return element from offsetPath(array of offset)
711
+ *
712
+ * @param {Node} ancestor - ancestor node
713
+ * @param {array} offsets - offsetPath
714
+ */
715
+ function fromOffsetPath(ancestor, offsets) {
716
+ let current = ancestor;
717
+ for (let i = 0, len = offsets.length; i < len; i++) {
718
+ if (current.childNodes.length <= offsets[i]) {
719
+ current = current.childNodes[current.childNodes.length - 1];
720
+ } else {
721
+ current = current.childNodes[offsets[i]];
722
+ }
723
+ }
724
+ return current;
725
+ }
726
+
727
+ /**
728
+ * @method splitNode
729
+ *
730
+ * split element or #text
731
+ *
732
+ * @param {BoundaryPoint} point
733
+ * @param {Object} [options]
734
+ * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false
735
+ * @param {Boolean} [options.isNotSplitEdgePoint] - default: false
736
+ * @return {Node} right node of boundaryPoint
737
+ */
738
+ function splitNode(point, options) {
739
+ const isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML;
740
+ const isNotSplitEdgePoint = options && options.isNotSplitEdgePoint;
741
+
742
+ // edge case
743
+ if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) {
744
+ if (isLeftEdgePoint(point)) {
745
+ return point.node;
746
+ } else if (isRightEdgePoint(point)) {
747
+ return point.node.nextSibling;
748
+ }
749
+ }
750
+
751
+ // split #text
752
+ if (isText(point.node)) {
753
+ return point.node.splitText(point.offset);
754
+ } else {
755
+ const childNode = point.node.childNodes[point.offset];
756
+ const clone = insertAfter(point.node.cloneNode(false), point.node);
757
+ appendChildNodes(clone, listNext(childNode));
758
+
759
+ if (!isSkipPaddingBlankHTML) {
760
+ paddingBlankHTML(point.node);
761
+ paddingBlankHTML(clone);
762
+ }
763
+
764
+ return clone;
765
+ }
766
+ }
767
+
768
+ /**
769
+ * @method splitTree
770
+ *
771
+ * split tree by point
772
+ *
773
+ * @param {Node} root - split root
774
+ * @param {BoundaryPoint} point
775
+ * @param {Object} [options]
776
+ * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false
777
+ * @param {Boolean} [options.isNotSplitEdgePoint] - default: false
778
+ * @return {Node} right node of boundaryPoint
779
+ */
780
+ function splitTree(root, point, options) {
781
+ // ex) [#text, <span>, <p>]
782
+ const ancestors = listAncestor(point.node, func.eq(root));
783
+
784
+ if (!ancestors.length) {
785
+ return null;
786
+ } else if (ancestors.length === 1) {
787
+ return splitNode(point, options);
788
+ }
789
+
790
+ return ancestors.reduce(function(node, parent) {
791
+ if (node === point.node) {
792
+ node = splitNode(point, options);
793
+ }
794
+
795
+ return splitNode({
796
+ node: parent,
797
+ offset: node ? position(node) : nodeLength(parent)
798
+ }, options);
799
+ });
800
+ }
801
+
802
+ /**
803
+ * split point
804
+ *
805
+ * @param {Point} point
806
+ * @param {Boolean} isInline
807
+ * @return {Object}
808
+ */
809
+ function splitPoint(point, isInline) {
810
+ // find splitRoot, container
811
+ // - inline: splitRoot is a child of paragraph
812
+ // - block: splitRoot is a child of bodyContainer
813
+ const pred = isInline ? isPara : isBodyContainer;
814
+ const ancestors = listAncestor(point.node, pred);
815
+ const topAncestor = lists.last(ancestors) || point.node;
816
+
817
+ let splitRoot, container;
818
+ if (pred(topAncestor)) {
819
+ splitRoot = ancestors[ancestors.length - 2];
820
+ container = topAncestor;
821
+ } else {
822
+ splitRoot = topAncestor;
823
+ container = splitRoot.parentNode;
824
+ }
825
+
826
+ // if splitRoot is exists, split with splitTree
827
+ let pivot = splitRoot && splitTree(splitRoot, point, {
828
+ isSkipPaddingBlankHTML: isInline,
829
+ isNotSplitEdgePoint: isInline
830
+ });
831
+
832
+ // if container is point.node, find pivot with point.offset
833
+ if (!pivot && container === point.node) {
834
+ pivot = point.node.childNodes[point.offset];
835
+ }
836
+
837
+ return {
838
+ rightNode: pivot,
839
+ container: container
840
+ };
841
+ }
842
+
843
+ function create(nodeName) {
844
+ return document.createElement(nodeName);
845
+ }
846
+
847
+ function createText(text) {
848
+ return document.createTextNode(text);
849
+ }
850
+
851
+ /**
852
+ * @method remove
853
+ *
854
+ * remove node, (isRemoveChild: remove child or not)
855
+ *
856
+ * @param {Node} node
857
+ * @param {Boolean} isRemoveChild
858
+ */
859
+ function remove(node, isRemoveChild) {
860
+ if (!node || !node.parentNode) { return; }
861
+ if (node.removeNode) { return node.removeNode(isRemoveChild); }
862
+
863
+ const parent = node.parentNode;
864
+ if (!isRemoveChild) {
865
+ const nodes = [];
866
+ for (let i = 0, len = node.childNodes.length; i < len; i++) {
867
+ nodes.push(node.childNodes[i]);
868
+ }
869
+
870
+ for (let i = 0, len = nodes.length; i < len; i++) {
871
+ parent.insertBefore(nodes[i], node);
872
+ }
873
+ }
874
+
875
+ parent.removeChild(node);
876
+ }
877
+
878
+ /**
879
+ * @method removeWhile
880
+ *
881
+ * @param {Node} node
882
+ * @param {Function} pred
883
+ */
884
+ function removeWhile(node, pred) {
885
+ while (node) {
886
+ if (isEditable(node) || !pred(node)) {
887
+ break;
888
+ }
889
+
890
+ const parent = node.parentNode;
891
+ remove(node);
892
+ node = parent;
893
+ }
894
+ }
895
+
896
+ /**
897
+ * @method replace
898
+ *
899
+ * replace node with provided nodeName
900
+ *
901
+ * @param {Node} node
902
+ * @param {String} nodeName
903
+ * @return {Node} - new node
904
+ */
905
+ function replace(node, nodeName) {
906
+ if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) {
907
+ return node;
908
+ }
909
+
910
+ const newNode = create(nodeName);
911
+
912
+ if (node.style.cssText) {
913
+ newNode.style.cssText = node.style.cssText;
914
+ }
915
+
916
+ appendChildNodes(newNode, lists.from(node.childNodes));
917
+ insertAfter(newNode, node);
918
+ remove(node);
919
+
920
+ return newNode;
921
+ }
922
+
923
+ const isTextarea = makePredByNodeName('TEXTAREA');
924
+
925
+ /**
926
+ * @param {jQuery} $node
927
+ * @param {Boolean} [stripLinebreaks] - default: false
928
+ */
929
+ function value($node, stripLinebreaks) {
930
+ const val = isTextarea($node[0]) ? $node.val() : $node.html();
931
+ if (stripLinebreaks) {
932
+ return val.replace(/[\n\r]/g, '');
933
+ }
934
+ return val;
935
+ }
936
+
937
+ /**
938
+ * @method html
939
+ *
940
+ * get the HTML contents of node
941
+ *
942
+ * @param {jQuery} $node
943
+ * @param {Boolean} [isNewlineOnBlock]
944
+ */
945
+ function html($node, isNewlineOnBlock) {
946
+ let markup = value($node);
947
+
948
+ if (isNewlineOnBlock) {
949
+ const regexTag = /<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g;
950
+ markup = markup.replace(regexTag, function(match, endSlash, name) {
951
+ name = name.toUpperCase();
952
+ const isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) &&
953
+ !!endSlash;
954
+ const isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name);
955
+
956
+ return match + ((isEndOfInlineContainer || isBlockNode) ? '\n' : '');
957
+ });
958
+ markup = $.trim(markup);
959
+ }
960
+
961
+ return markup;
962
+ }
963
+
964
+ function posFromPlaceholder(placeholder) {
965
+ const $placeholder = $(placeholder);
966
+ const pos = $placeholder.offset();
967
+ const height = $placeholder.outerHeight(true); // include margin
968
+
969
+ return {
970
+ left: pos.left,
971
+ top: pos.top + height
972
+ };
973
+ }
974
+
975
+ function attachEvents($node, events) {
976
+ Object.keys(events).forEach(function(key) {
977
+ $node.on(key, events[key]);
978
+ });
979
+ }
980
+
981
+ function detachEvents($node, events) {
982
+ Object.keys(events).forEach(function(key) {
983
+ $node.off(key, events[key]);
984
+ });
985
+ }
986
+
987
+ /**
988
+ * @method isCustomStyleTag
989
+ *
990
+ * assert if a node contains a "note-styletag" class,
991
+ * which implies that's a custom-made style tag node
992
+ *
993
+ * @param {Node} an HTML DOM node
994
+ */
995
+ function isCustomStyleTag(node) {
996
+ return node && !isText(node) && lists.contains(node.classList, 'note-styletag');
997
+ }
998
+
999
+ export default {
1000
+ /** @property {String} NBSP_CHAR */
1001
+ NBSP_CHAR,
1002
+ /** @property {String} ZERO_WIDTH_NBSP_CHAR */
1003
+ ZERO_WIDTH_NBSP_CHAR,
1004
+ /** @property {String} blank */
1005
+ blank: blankHTML,
1006
+ /** @property {String} emptyPara */
1007
+ emptyPara: `<p>${blankHTML}</p>`,
1008
+ makePredByNodeName,
1009
+ isEditable,
1010
+ isControlSizing,
1011
+ isText,
1012
+ isElement,
1013
+ isVoid,
1014
+ isPara,
1015
+ isPurePara,
1016
+ isHeading,
1017
+ isInline,
1018
+ isBlock: func.not(isInline),
1019
+ isBodyInline,
1020
+ isBody,
1021
+ isParaInline,
1022
+ isPre,
1023
+ isList,
1024
+ isTable,
1025
+ isData,
1026
+ isCell,
1027
+ isBlockquote,
1028
+ isBodyContainer,
1029
+ isAnchor,
1030
+ isDiv: makePredByNodeName('DIV'),
1031
+ isLi,
1032
+ isBR: makePredByNodeName('BR'),
1033
+ isSpan: makePredByNodeName('SPAN'),
1034
+ isB: makePredByNodeName('B'),
1035
+ isU: makePredByNodeName('U'),
1036
+ isS: makePredByNodeName('S'),
1037
+ isI: makePredByNodeName('I'),
1038
+ isImg: makePredByNodeName('IMG'),
1039
+ isTextarea,
1040
+ isEmpty,
1041
+ isEmptyAnchor: func.and(isAnchor, isEmpty),
1042
+ isClosestSibling,
1043
+ withClosestSiblings,
1044
+ nodeLength,
1045
+ isLeftEdgePoint,
1046
+ isRightEdgePoint,
1047
+ isEdgePoint,
1048
+ isLeftEdgeOf,
1049
+ isRightEdgeOf,
1050
+ isLeftEdgePointOf,
1051
+ isRightEdgePointOf,
1052
+ prevPoint,
1053
+ nextPoint,
1054
+ isSamePoint,
1055
+ isVisiblePoint,
1056
+ prevPointUntil,
1057
+ nextPointUntil,
1058
+ isCharPoint,
1059
+ walkPoint,
1060
+ ancestor,
1061
+ singleChildAncestor,
1062
+ listAncestor,
1063
+ lastAncestor,
1064
+ listNext,
1065
+ listPrev,
1066
+ listDescendant,
1067
+ commonAncestor,
1068
+ wrap,
1069
+ insertAfter,
1070
+ appendChildNodes,
1071
+ position,
1072
+ hasChildren,
1073
+ makeOffsetPath,
1074
+ fromOffsetPath,
1075
+ splitTree,
1076
+ splitPoint,
1077
+ create,
1078
+ createText,
1079
+ remove,
1080
+ removeWhile,
1081
+ replace,
1082
+ html,
1083
+ value,
1084
+ posFromPlaceholder,
1085
+ attachEvents,
1086
+ detachEvents,
1087
+ isCustomStyleTag
1088
+ };