tui_editor-rails 1.0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (887) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.ruby-version +1 -0
  4. data/Gemfile +6 -0
  5. data/Gemfile.lock +20 -0
  6. data/README.md +69 -0
  7. data/Rakefile +2 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +8 -0
  10. data/example/.gitignore +30 -0
  11. data/example/.ruby-version +1 -0
  12. data/example/Gemfile +64 -0
  13. data/example/Gemfile.lock +224 -0
  14. data/example/README.md +67 -0
  15. data/example/Rakefile +6 -0
  16. data/example/app/assets/config/manifest.js +3 -0
  17. data/example/app/assets/images/.keep +0 -0
  18. data/example/app/assets/images/screen_capture.png +0 -0
  19. data/example/app/assets/javascripts/application.js +23 -0
  20. data/example/app/assets/javascripts/cable.js +13 -0
  21. data/example/app/assets/javascripts/channels/.keep +0 -0
  22. data/example/app/assets/javascripts/home.coffee +3 -0
  23. data/example/app/assets/javascripts/posts.coffee +3 -0
  24. data/example/app/assets/stylesheets/application.scss +4 -0
  25. data/example/app/assets/stylesheets/home.scss +3 -0
  26. data/example/app/assets/stylesheets/posts.scss +3 -0
  27. data/example/app/assets/stylesheets/scaffolds.scss +84 -0
  28. data/example/app/channels/application_cable/channel.rb +4 -0
  29. data/example/app/channels/application_cable/connection.rb +4 -0
  30. data/example/app/controllers/application_controller.rb +2 -0
  31. data/example/app/controllers/concerns/.keep +0 -0
  32. data/example/app/controllers/home_controller.rb +4 -0
  33. data/example/app/controllers/posts_controller.rb +74 -0
  34. data/example/app/helpers/application_helper.rb +2 -0
  35. data/example/app/helpers/home_helper.rb +2 -0
  36. data/example/app/helpers/posts_helper.rb +2 -0
  37. data/example/app/jobs/application_job.rb +2 -0
  38. data/example/app/mailers/application_mailer.rb +4 -0
  39. data/example/app/models/application_record.rb +3 -0
  40. data/example/app/models/concerns/.keep +0 -0
  41. data/example/app/models/post.rb +2 -0
  42. data/example/app/views/home/index.html.erb +11 -0
  43. data/example/app/views/layouts/application.html.erb +14 -0
  44. data/example/app/views/layouts/mailer.html.erb +13 -0
  45. data/example/app/views/layouts/mailer.text.erb +1 -0
  46. data/example/app/views/posts/_form.html.erb +27 -0
  47. data/example/app/views/posts/_post.json.jbuilder +2 -0
  48. data/example/app/views/posts/edit.html.erb +6 -0
  49. data/example/app/views/posts/index.html.erb +29 -0
  50. data/example/app/views/posts/index.json.jbuilder +1 -0
  51. data/example/app/views/posts/new.html.erb +5 -0
  52. data/example/app/views/posts/show.html.erb +14 -0
  53. data/example/app/views/posts/show.json.jbuilder +1 -0
  54. data/example/bin/bundle +3 -0
  55. data/example/bin/rails +9 -0
  56. data/example/bin/rake +9 -0
  57. data/example/bin/setup +36 -0
  58. data/example/bin/spring +17 -0
  59. data/example/bin/update +31 -0
  60. data/example/bin/yarn +11 -0
  61. data/example/config.ru +5 -0
  62. data/example/config/application.rb +19 -0
  63. data/example/config/boot.rb +4 -0
  64. data/example/config/cable.yml +10 -0
  65. data/example/config/credentials.yml.enc +1 -0
  66. data/example/config/database.yml +25 -0
  67. data/example/config/environment.rb +5 -0
  68. data/example/config/environments/development.rb +61 -0
  69. data/example/config/environments/production.rb +94 -0
  70. data/example/config/environments/test.rb +46 -0
  71. data/example/config/initializers/application_controller_renderer.rb +8 -0
  72. data/example/config/initializers/assets.rb +14 -0
  73. data/example/config/initializers/backtrace_silencers.rb +7 -0
  74. data/example/config/initializers/content_security_policy.rb +22 -0
  75. data/example/config/initializers/cookies_serializer.rb +5 -0
  76. data/example/config/initializers/filter_parameter_logging.rb +4 -0
  77. data/example/config/initializers/inflections.rb +16 -0
  78. data/example/config/initializers/mime_types.rb +4 -0
  79. data/example/config/initializers/wrap_parameters.rb +14 -0
  80. data/example/config/locales/en.yml +33 -0
  81. data/example/config/puma.rb +34 -0
  82. data/example/config/routes.rb +6 -0
  83. data/example/config/spring.rb +6 -0
  84. data/example/config/storage.yml +35 -0
  85. data/example/db/migrate/20180208210404_create_posts.rb +10 -0
  86. data/example/db/schema.rb +22 -0
  87. data/example/db/seeds.rb +7 -0
  88. data/example/lib/assets/.keep +0 -0
  89. data/example/lib/tasks/.keep +0 -0
  90. data/example/log/.keep +0 -0
  91. data/example/package.json +5 -0
  92. data/example/public/404.html +67 -0
  93. data/example/public/422.html +67 -0
  94. data/example/public/500.html +66 -0
  95. data/example/public/apple-touch-icon-precomposed.png +0 -0
  96. data/example/public/apple-touch-icon.png +0 -0
  97. data/example/public/favicon.ico +0 -0
  98. data/example/public/robots.txt +1 -0
  99. data/example/test/application_system_test_case.rb +5 -0
  100. data/example/test/controllers/.keep +0 -0
  101. data/example/test/controllers/home_controller_test.rb +9 -0
  102. data/example/test/controllers/posts_controller_test.rb +48 -0
  103. data/example/test/fixtures/.keep +0 -0
  104. data/example/test/fixtures/files/.keep +0 -0
  105. data/example/test/fixtures/posts.yml +9 -0
  106. data/example/test/helpers/.keep +0 -0
  107. data/example/test/integration/.keep +0 -0
  108. data/example/test/mailers/.keep +0 -0
  109. data/example/test/models/.keep +0 -0
  110. data/example/test/models/post_test.rb +7 -0
  111. data/example/test/system/.keep +0 -0
  112. data/example/test/system/posts_test.rb +45 -0
  113. data/example/test/test_helper.rb +10 -0
  114. data/example/tmp/.keep +0 -0
  115. data/example/vendor/.keep +0 -0
  116. data/lib/tui_editor/rails.rb +8 -0
  117. data/lib/tui_editor/rails/version.rb +5 -0
  118. data/tui_editor-rails.gemspec +34 -0
  119. data/vendor/assets/components/codemirror/.bower.json +31 -0
  120. data/vendor/assets/components/codemirror/AUTHORS +714 -0
  121. data/vendor/assets/components/codemirror/CHANGELOG.md +1316 -0
  122. data/vendor/assets/components/codemirror/CONTRIBUTING.md +92 -0
  123. data/vendor/assets/components/codemirror/LICENSE +21 -0
  124. data/vendor/assets/components/codemirror/README.md +35 -0
  125. data/vendor/assets/components/codemirror/addon/comment/comment.js +209 -0
  126. data/vendor/assets/components/codemirror/addon/comment/continuecomment.js +78 -0
  127. data/vendor/assets/components/codemirror/addon/dialog/dialog.css +32 -0
  128. data/vendor/assets/components/codemirror/addon/dialog/dialog.js +157 -0
  129. data/vendor/assets/components/codemirror/addon/display/autorefresh.js +47 -0
  130. data/vendor/assets/components/codemirror/addon/display/fullscreen.css +6 -0
  131. data/vendor/assets/components/codemirror/addon/display/fullscreen.js +41 -0
  132. data/vendor/assets/components/codemirror/addon/display/panel.js +123 -0
  133. data/vendor/assets/components/codemirror/addon/display/placeholder.js +63 -0
  134. data/vendor/assets/components/codemirror/addon/display/rulers.js +51 -0
  135. data/vendor/assets/components/codemirror/addon/edit/closebrackets.js +194 -0
  136. data/vendor/assets/components/codemirror/addon/edit/closetag.js +175 -0
  137. data/vendor/assets/components/codemirror/addon/edit/continuelist.js +89 -0
  138. data/vendor/assets/components/codemirror/addon/edit/matchbrackets.js +145 -0
  139. data/vendor/assets/components/codemirror/addon/edit/matchtags.js +66 -0
  140. data/vendor/assets/components/codemirror/addon/edit/trailingspace.js +27 -0
  141. data/vendor/assets/components/codemirror/addon/fold/brace-fold.js +105 -0
  142. data/vendor/assets/components/codemirror/addon/fold/comment-fold.js +59 -0
  143. data/vendor/assets/components/codemirror/addon/fold/foldcode.js +152 -0
  144. data/vendor/assets/components/codemirror/addon/fold/foldgutter.css +20 -0
  145. data/vendor/assets/components/codemirror/addon/fold/foldgutter.js +146 -0
  146. data/vendor/assets/components/codemirror/addon/fold/indent-fold.js +48 -0
  147. data/vendor/assets/components/codemirror/addon/fold/markdown-fold.js +49 -0
  148. data/vendor/assets/components/codemirror/addon/fold/xml-fold.js +182 -0
  149. data/vendor/assets/components/codemirror/addon/hint/anyword-hint.js +41 -0
  150. data/vendor/assets/components/codemirror/addon/hint/css-hint.js +60 -0
  151. data/vendor/assets/components/codemirror/addon/hint/html-hint.js +348 -0
  152. data/vendor/assets/components/codemirror/addon/hint/javascript-hint.js +155 -0
  153. data/vendor/assets/components/codemirror/addon/hint/show-hint.css +36 -0
  154. data/vendor/assets/components/codemirror/addon/hint/show-hint.js +432 -0
  155. data/vendor/assets/components/codemirror/addon/hint/sql-hint.js +286 -0
  156. data/vendor/assets/components/codemirror/addon/hint/xml-hint.js +110 -0
  157. data/vendor/assets/components/codemirror/addon/lint/coffeescript-lint.js +47 -0
  158. data/vendor/assets/components/codemirror/addon/lint/css-lint.js +40 -0
  159. data/vendor/assets/components/codemirror/addon/lint/html-lint.js +53 -0
  160. data/vendor/assets/components/codemirror/addon/lint/javascript-lint.js +63 -0
  161. data/vendor/assets/components/codemirror/addon/lint/json-lint.js +37 -0
  162. data/vendor/assets/components/codemirror/addon/lint/lint.css +73 -0
  163. data/vendor/assets/components/codemirror/addon/lint/lint.js +252 -0
  164. data/vendor/assets/components/codemirror/addon/lint/yaml-lint.js +41 -0
  165. data/vendor/assets/components/codemirror/addon/merge/merge.css +113 -0
  166. data/vendor/assets/components/codemirror/addon/merge/merge.js +1001 -0
  167. data/vendor/assets/components/codemirror/addon/mode/loadmode.js +64 -0
  168. data/vendor/assets/components/codemirror/addon/mode/multiplex.js +123 -0
  169. data/vendor/assets/components/codemirror/addon/mode/multiplex_test.js +33 -0
  170. data/vendor/assets/components/codemirror/addon/mode/overlay.js +90 -0
  171. data/vendor/assets/components/codemirror/addon/mode/simple.js +216 -0
  172. data/vendor/assets/components/codemirror/addon/runmode/colorize.js +40 -0
  173. data/vendor/assets/components/codemirror/addon/runmode/runmode-standalone.js +158 -0
  174. data/vendor/assets/components/codemirror/addon/runmode/runmode.js +72 -0
  175. data/vendor/assets/components/codemirror/addon/runmode/runmode.node.js +197 -0
  176. data/vendor/assets/components/codemirror/addon/scroll/annotatescrollbar.js +122 -0
  177. data/vendor/assets/components/codemirror/addon/scroll/scrollpastend.js +48 -0
  178. data/vendor/assets/components/codemirror/addon/scroll/simplescrollbars.css +66 -0
  179. data/vendor/assets/components/codemirror/addon/scroll/simplescrollbars.js +152 -0
  180. data/vendor/assets/components/codemirror/addon/search/jump-to-line.js +49 -0
  181. data/vendor/assets/components/codemirror/addon/search/match-highlighter.js +165 -0
  182. data/vendor/assets/components/codemirror/addon/search/matchesonscrollbar.css +8 -0
  183. data/vendor/assets/components/codemirror/addon/search/matchesonscrollbar.js +97 -0
  184. data/vendor/assets/components/codemirror/addon/search/search.js +252 -0
  185. data/vendor/assets/components/codemirror/addon/search/searchcursor.js +289 -0
  186. data/vendor/assets/components/codemirror/addon/selection/active-line.js +72 -0
  187. data/vendor/assets/components/codemirror/addon/selection/mark-selection.js +119 -0
  188. data/vendor/assets/components/codemirror/addon/selection/selection-pointer.js +98 -0
  189. data/vendor/assets/components/codemirror/addon/tern/tern.css +87 -0
  190. data/vendor/assets/components/codemirror/addon/tern/tern.js +718 -0
  191. data/vendor/assets/components/codemirror/addon/tern/worker.js +44 -0
  192. data/vendor/assets/components/codemirror/addon/wrap/hardwrap.js +144 -0
  193. data/vendor/assets/components/codemirror/bower.json +17 -0
  194. data/vendor/assets/components/codemirror/component-tools/bower.json +17 -0
  195. data/vendor/assets/components/codemirror/component-tools/build.sh +31 -0
  196. data/vendor/assets/components/codemirror/component-tools/update.py +38 -0
  197. data/vendor/assets/components/codemirror/keymap/emacs.js +416 -0
  198. data/vendor/assets/components/codemirror/keymap/sublime.js +685 -0
  199. data/vendor/assets/components/codemirror/keymap/vim.js +5219 -0
  200. data/vendor/assets/components/codemirror/lib/codemirror.css +346 -0
  201. data/vendor/assets/components/codemirror/lib/codemirror.js +9669 -0
  202. data/vendor/assets/components/codemirror/mode/apl/apl.js +174 -0
  203. data/vendor/assets/components/codemirror/mode/asciiarmor/asciiarmor.js +74 -0
  204. data/vendor/assets/components/codemirror/mode/asn.1/asn.1.js +204 -0
  205. data/vendor/assets/components/codemirror/mode/asterisk/asterisk.js +196 -0
  206. data/vendor/assets/components/codemirror/mode/brainfuck/brainfuck.js +85 -0
  207. data/vendor/assets/components/codemirror/mode/clike/clike.js +817 -0
  208. data/vendor/assets/components/codemirror/mode/clojure/clojure.js +306 -0
  209. data/vendor/assets/components/codemirror/mode/cmake/cmake.js +97 -0
  210. data/vendor/assets/components/codemirror/mode/cobol/cobol.js +255 -0
  211. data/vendor/assets/components/codemirror/mode/coffeescript/coffeescript.js +359 -0
  212. data/vendor/assets/components/codemirror/mode/commonlisp/commonlisp.js +124 -0
  213. data/vendor/assets/components/codemirror/mode/crystal/crystal.js +433 -0
  214. data/vendor/assets/components/codemirror/mode/css/css.js +832 -0
  215. data/vendor/assets/components/codemirror/mode/cypher/cypher.js +150 -0
  216. data/vendor/assets/components/codemirror/mode/d/d.js +218 -0
  217. data/vendor/assets/components/codemirror/mode/dart/dart.js +157 -0
  218. data/vendor/assets/components/codemirror/mode/diff/diff.js +47 -0
  219. data/vendor/assets/components/codemirror/mode/django/django.js +356 -0
  220. data/vendor/assets/components/codemirror/mode/dockerfile/dockerfile.js +79 -0
  221. data/vendor/assets/components/codemirror/mode/dtd/dtd.js +142 -0
  222. data/vendor/assets/components/codemirror/mode/dylan/dylan.js +352 -0
  223. data/vendor/assets/components/codemirror/mode/ebnf/ebnf.js +195 -0
  224. data/vendor/assets/components/codemirror/mode/ecl/ecl.js +206 -0
  225. data/vendor/assets/components/codemirror/mode/eiffel/eiffel.js +160 -0
  226. data/vendor/assets/components/codemirror/mode/elm/elm.js +205 -0
  227. data/vendor/assets/components/codemirror/mode/erlang/erlang.js +619 -0
  228. data/vendor/assets/components/codemirror/mode/factor/factor.js +85 -0
  229. data/vendor/assets/components/codemirror/mode/fcl/fcl.js +173 -0
  230. data/vendor/assets/components/codemirror/mode/forth/forth.js +180 -0
  231. data/vendor/assets/components/codemirror/mode/fortran/fortran.js +188 -0
  232. data/vendor/assets/components/codemirror/mode/gas/gas.js +345 -0
  233. data/vendor/assets/components/codemirror/mode/gfm/gfm.js +129 -0
  234. data/vendor/assets/components/codemirror/mode/gherkin/gherkin.js +178 -0
  235. data/vendor/assets/components/codemirror/mode/go/go.js +187 -0
  236. data/vendor/assets/components/codemirror/mode/groovy/groovy.js +230 -0
  237. data/vendor/assets/components/codemirror/mode/haml/haml.js +161 -0
  238. data/vendor/assets/components/codemirror/mode/handlebars/handlebars.js +62 -0
  239. data/vendor/assets/components/codemirror/mode/haskell-literate/haskell-literate.js +43 -0
  240. data/vendor/assets/components/codemirror/mode/haskell/haskell.js +267 -0
  241. data/vendor/assets/components/codemirror/mode/haxe/haxe.js +515 -0
  242. data/vendor/assets/components/codemirror/mode/htmlembedded/htmlembedded.js +37 -0
  243. data/vendor/assets/components/codemirror/mode/htmlmixed/htmlmixed.js +152 -0
  244. data/vendor/assets/components/codemirror/mode/http/http.js +113 -0
  245. data/vendor/assets/components/codemirror/mode/idl/idl.js +290 -0
  246. data/vendor/assets/components/codemirror/mode/javascript/javascript.js +865 -0
  247. data/vendor/assets/components/codemirror/mode/jinja2/jinja2.js +142 -0
  248. data/vendor/assets/components/codemirror/mode/jsx/jsx.js +148 -0
  249. data/vendor/assets/components/codemirror/mode/julia/julia.js +418 -0
  250. data/vendor/assets/components/codemirror/mode/livescript/livescript.js +280 -0
  251. data/vendor/assets/components/codemirror/mode/lua/lua.js +159 -0
  252. data/vendor/assets/components/codemirror/mode/markdown/markdown.js +872 -0
  253. data/vendor/assets/components/codemirror/mode/mathematica/mathematica.js +176 -0
  254. data/vendor/assets/components/codemirror/mode/mbox/mbox.js +129 -0
  255. data/vendor/assets/components/codemirror/mode/meta.js +217 -0
  256. data/vendor/assets/components/codemirror/mode/mirc/mirc.js +193 -0
  257. data/vendor/assets/components/codemirror/mode/mllike/mllike.js +356 -0
  258. data/vendor/assets/components/codemirror/mode/modelica/modelica.js +245 -0
  259. data/vendor/assets/components/codemirror/mode/mscgen/mscgen.js +175 -0
  260. data/vendor/assets/components/codemirror/mode/mumps/mumps.js +148 -0
  261. data/vendor/assets/components/codemirror/mode/nginx/nginx.js +178 -0
  262. data/vendor/assets/components/codemirror/mode/nsis/nsis.js +95 -0
  263. data/vendor/assets/components/codemirror/mode/ntriples/ntriples.js +195 -0
  264. data/vendor/assets/components/codemirror/mode/octave/octave.js +139 -0
  265. data/vendor/assets/components/codemirror/mode/oz/oz.js +252 -0
  266. data/vendor/assets/components/codemirror/mode/pascal/pascal.js +109 -0
  267. data/vendor/assets/components/codemirror/mode/pegjs/pegjs.js +114 -0
  268. data/vendor/assets/components/codemirror/mode/perl/perl.js +837 -0
  269. data/vendor/assets/components/codemirror/mode/php/php.js +234 -0
  270. data/vendor/assets/components/codemirror/mode/pig/pig.js +178 -0
  271. data/vendor/assets/components/codemirror/mode/powershell/powershell.js +398 -0
  272. data/vendor/assets/components/codemirror/mode/properties/properties.js +78 -0
  273. data/vendor/assets/components/codemirror/mode/protobuf/protobuf.js +69 -0
  274. data/vendor/assets/components/codemirror/mode/pug/pug.js +591 -0
  275. data/vendor/assets/components/codemirror/mode/puppet/puppet.js +220 -0
  276. data/vendor/assets/components/codemirror/mode/python/python.js +334 -0
  277. data/vendor/assets/components/codemirror/mode/q/q.js +139 -0
  278. data/vendor/assets/components/codemirror/mode/r/r.js +183 -0
  279. data/vendor/assets/components/codemirror/mode/rpm/rpm.js +109 -0
  280. data/vendor/assets/components/codemirror/mode/rst/rst.js +557 -0
  281. data/vendor/assets/components/codemirror/mode/ruby/ruby.js +296 -0
  282. data/vendor/assets/components/codemirror/mode/rust/rust.js +72 -0
  283. data/vendor/assets/components/codemirror/mode/sas/sas.js +303 -0
  284. data/vendor/assets/components/codemirror/mode/sass/sass.js +454 -0
  285. data/vendor/assets/components/codemirror/mode/scheme/scheme.js +249 -0
  286. data/vendor/assets/components/codemirror/mode/shell/shell.js +151 -0
  287. data/vendor/assets/components/codemirror/mode/sieve/sieve.js +193 -0
  288. data/vendor/assets/components/codemirror/mode/slim/slim.js +575 -0
  289. data/vendor/assets/components/codemirror/mode/smalltalk/smalltalk.js +168 -0
  290. data/vendor/assets/components/codemirror/mode/smarty/smarty.js +225 -0
  291. data/vendor/assets/components/codemirror/mode/solr/solr.js +104 -0
  292. data/vendor/assets/components/codemirror/mode/soy/soy.js +354 -0
  293. data/vendor/assets/components/codemirror/mode/sparql/sparql.js +180 -0
  294. data/vendor/assets/components/codemirror/mode/spreadsheet/spreadsheet.js +112 -0
  295. data/vendor/assets/components/codemirror/mode/sql/sql.js +488 -0
  296. data/vendor/assets/components/codemirror/mode/stex/stex.js +251 -0
  297. data/vendor/assets/components/codemirror/mode/stylus/stylus.js +771 -0
  298. data/vendor/assets/components/codemirror/mode/swift/swift.js +219 -0
  299. data/vendor/assets/components/codemirror/mode/tcl/tcl.js +139 -0
  300. data/vendor/assets/components/codemirror/mode/textile/textile.js +469 -0
  301. data/vendor/assets/components/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
  302. data/vendor/assets/components/codemirror/mode/tiddlywiki/tiddlywiki.js +308 -0
  303. data/vendor/assets/components/codemirror/mode/tiki/tiki.css +26 -0
  304. data/vendor/assets/components/codemirror/mode/tiki/tiki.js +312 -0
  305. data/vendor/assets/components/codemirror/mode/toml/toml.js +88 -0
  306. data/vendor/assets/components/codemirror/mode/tornado/tornado.js +68 -0
  307. data/vendor/assets/components/codemirror/mode/troff/troff.js +84 -0
  308. data/vendor/assets/components/codemirror/mode/ttcn-cfg/ttcn-cfg.js +214 -0
  309. data/vendor/assets/components/codemirror/mode/ttcn/ttcn.js +283 -0
  310. data/vendor/assets/components/codemirror/mode/turtle/turtle.js +162 -0
  311. data/vendor/assets/components/codemirror/mode/twig/twig.js +141 -0
  312. data/vendor/assets/components/codemirror/mode/vb/vb.js +275 -0
  313. data/vendor/assets/components/codemirror/mode/vbscript/vbscript.js +350 -0
  314. data/vendor/assets/components/codemirror/mode/velocity/velocity.js +201 -0
  315. data/vendor/assets/components/codemirror/mode/verilog/verilog.js +675 -0
  316. data/vendor/assets/components/codemirror/mode/vhdl/vhdl.js +189 -0
  317. data/vendor/assets/components/codemirror/mode/vue/vue.js +77 -0
  318. data/vendor/assets/components/codemirror/mode/webidl/webidl.js +195 -0
  319. data/vendor/assets/components/codemirror/mode/xml/xml.js +401 -0
  320. data/vendor/assets/components/codemirror/mode/xquery/xquery.js +448 -0
  321. data/vendor/assets/components/codemirror/mode/yacas/yacas.js +204 -0
  322. data/vendor/assets/components/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +68 -0
  323. data/vendor/assets/components/codemirror/mode/yaml/yaml.js +118 -0
  324. data/vendor/assets/components/codemirror/mode/z80/z80.js +116 -0
  325. data/vendor/assets/components/codemirror/rollup.config.js +18 -0
  326. data/vendor/assets/components/codemirror/src/codemirror.js +3 -0
  327. data/vendor/assets/components/codemirror/src/display/Display.js +106 -0
  328. data/vendor/assets/components/codemirror/src/display/focus.js +47 -0
  329. data/vendor/assets/components/codemirror/src/display/gutters.js +34 -0
  330. data/vendor/assets/components/codemirror/src/display/highlight_worker.js +55 -0
  331. data/vendor/assets/components/codemirror/src/display/line_numbers.js +48 -0
  332. data/vendor/assets/components/codemirror/src/display/mode_state.js +22 -0
  333. data/vendor/assets/components/codemirror/src/display/operations.js +205 -0
  334. data/vendor/assets/components/codemirror/src/display/scroll_events.js +115 -0
  335. data/vendor/assets/components/codemirror/src/display/scrollbars.js +192 -0
  336. data/vendor/assets/components/codemirror/src/display/scrolling.js +184 -0
  337. data/vendor/assets/components/codemirror/src/display/selection.js +158 -0
  338. data/vendor/assets/components/codemirror/src/display/update_display.js +260 -0
  339. data/vendor/assets/components/codemirror/src/display/update_line.js +188 -0
  340. data/vendor/assets/components/codemirror/src/display/update_lines.js +64 -0
  341. data/vendor/assets/components/codemirror/src/display/view_tracking.js +153 -0
  342. data/vendor/assets/components/codemirror/src/edit/CodeMirror.js +214 -0
  343. data/vendor/assets/components/codemirror/src/edit/commands.js +178 -0
  344. data/vendor/assets/components/codemirror/src/edit/deleteNearSelection.js +30 -0
  345. data/vendor/assets/components/codemirror/src/edit/drop_events.js +119 -0
  346. data/vendor/assets/components/codemirror/src/edit/fromTextArea.js +61 -0
  347. data/vendor/assets/components/codemirror/src/edit/global_events.js +44 -0
  348. data/vendor/assets/components/codemirror/src/edit/key_events.js +159 -0
  349. data/vendor/assets/components/codemirror/src/edit/legacy.js +62 -0
  350. data/vendor/assets/components/codemirror/src/edit/main.js +69 -0
  351. data/vendor/assets/components/codemirror/src/edit/methods.js +539 -0
  352. data/vendor/assets/components/codemirror/src/edit/mouse_events.js +407 -0
  353. data/vendor/assets/components/codemirror/src/edit/options.js +191 -0
  354. data/vendor/assets/components/codemirror/src/edit/utils.js +7 -0
  355. data/vendor/assets/components/codemirror/src/input/ContentEditableInput.js +517 -0
  356. data/vendor/assets/components/codemirror/src/input/TextareaInput.js +350 -0
  357. data/vendor/assets/components/codemirror/src/input/indent.js +71 -0
  358. data/vendor/assets/components/codemirror/src/input/input.js +135 -0
  359. data/vendor/assets/components/codemirror/src/input/keymap.js +148 -0
  360. data/vendor/assets/components/codemirror/src/input/keynames.js +17 -0
  361. data/vendor/assets/components/codemirror/src/input/movement.js +110 -0
  362. data/vendor/assets/components/codemirror/src/line/highlight.js +284 -0
  363. data/vendor/assets/components/codemirror/src/line/line_data.js +337 -0
  364. data/vendor/assets/components/codemirror/src/line/pos.js +40 -0
  365. data/vendor/assets/components/codemirror/src/line/saw_special_spans.js +10 -0
  366. data/vendor/assets/components/codemirror/src/line/spans.js +372 -0
  367. data/vendor/assets/components/codemirror/src/line/utils_line.js +85 -0
  368. data/vendor/assets/components/codemirror/src/measurement/position_measurement.js +700 -0
  369. data/vendor/assets/components/codemirror/src/measurement/widgets.js +26 -0
  370. data/vendor/assets/components/codemirror/src/model/Doc.js +432 -0
  371. data/vendor/assets/components/codemirror/src/model/change_measurement.js +61 -0
  372. data/vendor/assets/components/codemirror/src/model/changes.js +330 -0
  373. data/vendor/assets/components/codemirror/src/model/chunk.js +167 -0
  374. data/vendor/assets/components/codemirror/src/model/document_data.js +111 -0
  375. data/vendor/assets/components/codemirror/src/model/history.js +228 -0
  376. data/vendor/assets/components/codemirror/src/model/line_widget.js +78 -0
  377. data/vendor/assets/components/codemirror/src/model/mark_text.js +292 -0
  378. data/vendor/assets/components/codemirror/src/model/selection.js +82 -0
  379. data/vendor/assets/components/codemirror/src/model/selection_updates.js +208 -0
  380. data/vendor/assets/components/codemirror/src/modes.js +96 -0
  381. data/vendor/assets/components/codemirror/src/util/StringStream.js +90 -0
  382. data/vendor/assets/components/codemirror/src/util/bidi.js +214 -0
  383. data/vendor/assets/components/codemirror/src/util/browser.js +33 -0
  384. data/vendor/assets/components/codemirror/src/util/dom.js +97 -0
  385. data/vendor/assets/components/codemirror/src/util/event.js +103 -0
  386. data/vendor/assets/components/codemirror/src/util/feature_detection.js +84 -0
  387. data/vendor/assets/components/codemirror/src/util/misc.js +150 -0
  388. data/vendor/assets/components/codemirror/src/util/operation_group.js +72 -0
  389. data/vendor/assets/components/codemirror/theme/3024-day.css +41 -0
  390. data/vendor/assets/components/codemirror/theme/3024-night.css +39 -0
  391. data/vendor/assets/components/codemirror/theme/abcdef.css +32 -0
  392. data/vendor/assets/components/codemirror/theme/ambiance-mobile.css +5 -0
  393. data/vendor/assets/components/codemirror/theme/ambiance.css +74 -0
  394. data/vendor/assets/components/codemirror/theme/base16-dark.css +38 -0
  395. data/vendor/assets/components/codemirror/theme/base16-light.css +38 -0
  396. data/vendor/assets/components/codemirror/theme/bespin.css +34 -0
  397. data/vendor/assets/components/codemirror/theme/blackboard.css +32 -0
  398. data/vendor/assets/components/codemirror/theme/cobalt.css +25 -0
  399. data/vendor/assets/components/codemirror/theme/colorforth.css +33 -0
  400. data/vendor/assets/components/codemirror/theme/dracula.css +40 -0
  401. data/vendor/assets/components/codemirror/theme/duotone-dark.css +35 -0
  402. data/vendor/assets/components/codemirror/theme/duotone-light.css +36 -0
  403. data/vendor/assets/components/codemirror/theme/eclipse.css +23 -0
  404. data/vendor/assets/components/codemirror/theme/elegant.css +13 -0
  405. data/vendor/assets/components/codemirror/theme/erlang-dark.css +34 -0
  406. data/vendor/assets/components/codemirror/theme/hopscotch.css +34 -0
  407. data/vendor/assets/components/codemirror/theme/icecoder.css +43 -0
  408. data/vendor/assets/components/codemirror/theme/isotope.css +34 -0
  409. data/vendor/assets/components/codemirror/theme/lesser-dark.css +47 -0
  410. data/vendor/assets/components/codemirror/theme/liquibyte.css +95 -0
  411. data/vendor/assets/components/codemirror/theme/material.css +53 -0
  412. data/vendor/assets/components/codemirror/theme/mbo.css +37 -0
  413. data/vendor/assets/components/codemirror/theme/mdn-like.css +46 -0
  414. data/vendor/assets/components/codemirror/theme/midnight.css +43 -0
  415. data/vendor/assets/components/codemirror/theme/monokai.css +36 -0
  416. data/vendor/assets/components/codemirror/theme/neat.css +12 -0
  417. data/vendor/assets/components/codemirror/theme/neo.css +43 -0
  418. data/vendor/assets/components/codemirror/theme/night.css +27 -0
  419. data/vendor/assets/components/codemirror/theme/oceanic-next.css +44 -0
  420. data/vendor/assets/components/codemirror/theme/panda-syntax.css +85 -0
  421. data/vendor/assets/components/codemirror/theme/paraiso-dark.css +38 -0
  422. data/vendor/assets/components/codemirror/theme/paraiso-light.css +38 -0
  423. data/vendor/assets/components/codemirror/theme/pastel-on-dark.css +52 -0
  424. data/vendor/assets/components/codemirror/theme/railscasts.css +34 -0
  425. data/vendor/assets/components/codemirror/theme/rubyblue.css +25 -0
  426. data/vendor/assets/components/codemirror/theme/seti.css +44 -0
  427. data/vendor/assets/components/codemirror/theme/shadowfox.css +52 -0
  428. data/vendor/assets/components/codemirror/theme/solarized.css +168 -0
  429. data/vendor/assets/components/codemirror/theme/the-matrix.css +30 -0
  430. data/vendor/assets/components/codemirror/theme/tomorrow-night-bright.css +35 -0
  431. data/vendor/assets/components/codemirror/theme/tomorrow-night-eighties.css +38 -0
  432. data/vendor/assets/components/codemirror/theme/ttcn.css +64 -0
  433. data/vendor/assets/components/codemirror/theme/twilight.css +32 -0
  434. data/vendor/assets/components/codemirror/theme/vibrant-ink.css +34 -0
  435. data/vendor/assets/components/codemirror/theme/xq-dark.css +53 -0
  436. data/vendor/assets/components/codemirror/theme/xq-light.css +43 -0
  437. data/vendor/assets/components/codemirror/theme/yeti.css +44 -0
  438. data/vendor/assets/components/codemirror/theme/zenburn.css +37 -0
  439. data/vendor/assets/components/eve/.bower.json +12 -0
  440. data/vendor/assets/components/eve/LICENSE +202 -0
  441. data/vendor/assets/components/eve/README.md +7 -0
  442. data/vendor/assets/components/eve/component.json +13 -0
  443. data/vendor/assets/components/eve/e.html +66 -0
  444. data/vendor/assets/components/eve/eve.js +371 -0
  445. data/vendor/assets/components/eve/package.json +18 -0
  446. data/vendor/assets/components/highlightjs/.bower.json +24 -0
  447. data/vendor/assets/components/highlightjs/LICENSE +24 -0
  448. data/vendor/assets/components/highlightjs/Makefile +21 -0
  449. data/vendor/assets/components/highlightjs/README.md +12 -0
  450. data/vendor/assets/components/highlightjs/bower.json +14 -0
  451. data/vendor/assets/components/highlightjs/component.json +12 -0
  452. data/vendor/assets/components/highlightjs/composer.json +26 -0
  453. data/vendor/assets/components/highlightjs/highlight.pack.js +16645 -0
  454. data/vendor/assets/components/highlightjs/highlight.pack.min.js +15 -0
  455. data/vendor/assets/components/highlightjs/package.json +8 -0
  456. data/vendor/assets/components/highlightjs/styles/agate.css +108 -0
  457. data/vendor/assets/components/highlightjs/styles/androidstudio.css +66 -0
  458. data/vendor/assets/components/highlightjs/styles/arduino-light.css +88 -0
  459. data/vendor/assets/components/highlightjs/styles/arta.css +73 -0
  460. data/vendor/assets/components/highlightjs/styles/ascetic.css +45 -0
  461. data/vendor/assets/components/highlightjs/styles/atelier-cave-dark.css +83 -0
  462. data/vendor/assets/components/highlightjs/styles/atelier-cave-light.css +85 -0
  463. data/vendor/assets/components/highlightjs/styles/atelier-cave.dark.css +113 -0
  464. data/vendor/assets/components/highlightjs/styles/atelier-cave.light.css +113 -0
  465. data/vendor/assets/components/highlightjs/styles/atelier-dune-dark.css +69 -0
  466. data/vendor/assets/components/highlightjs/styles/atelier-dune-light.css +69 -0
  467. data/vendor/assets/components/highlightjs/styles/atelier-dune.dark.css +94 -0
  468. data/vendor/assets/components/highlightjs/styles/atelier-dune.light.css +94 -0
  469. data/vendor/assets/components/highlightjs/styles/atelier-estuary-dark.css +84 -0
  470. data/vendor/assets/components/highlightjs/styles/atelier-estuary-light.css +84 -0
  471. data/vendor/assets/components/highlightjs/styles/atelier-estuary.dark.css +113 -0
  472. data/vendor/assets/components/highlightjs/styles/atelier-estuary.light.css +113 -0
  473. data/vendor/assets/components/highlightjs/styles/atelier-forest-dark.css +69 -0
  474. data/vendor/assets/components/highlightjs/styles/atelier-forest-light.css +69 -0
  475. data/vendor/assets/components/highlightjs/styles/atelier-forest.dark.css +94 -0
  476. data/vendor/assets/components/highlightjs/styles/atelier-forest.light.css +94 -0
  477. data/vendor/assets/components/highlightjs/styles/atelier-heath-dark.css +69 -0
  478. data/vendor/assets/components/highlightjs/styles/atelier-heath-light.css +69 -0
  479. data/vendor/assets/components/highlightjs/styles/atelier-heath.dark.css +94 -0
  480. data/vendor/assets/components/highlightjs/styles/atelier-heath.light.css +94 -0
  481. data/vendor/assets/components/highlightjs/styles/atelier-lakeside-dark.css +69 -0
  482. data/vendor/assets/components/highlightjs/styles/atelier-lakeside-light.css +69 -0
  483. data/vendor/assets/components/highlightjs/styles/atelier-lakeside.dark.css +94 -0
  484. data/vendor/assets/components/highlightjs/styles/atelier-lakeside.light.css +94 -0
  485. data/vendor/assets/components/highlightjs/styles/atelier-plateau-dark.css +84 -0
  486. data/vendor/assets/components/highlightjs/styles/atelier-plateau-light.css +84 -0
  487. data/vendor/assets/components/highlightjs/styles/atelier-plateau.dark.css +113 -0
  488. data/vendor/assets/components/highlightjs/styles/atelier-plateau.light.css +113 -0
  489. data/vendor/assets/components/highlightjs/styles/atelier-savanna-dark.css +84 -0
  490. data/vendor/assets/components/highlightjs/styles/atelier-savanna-light.css +84 -0
  491. data/vendor/assets/components/highlightjs/styles/atelier-savanna.dark.css +113 -0
  492. data/vendor/assets/components/highlightjs/styles/atelier-savanna.light.css +113 -0
  493. data/vendor/assets/components/highlightjs/styles/atelier-seaside-dark.css +69 -0
  494. data/vendor/assets/components/highlightjs/styles/atelier-seaside-light.css +69 -0
  495. data/vendor/assets/components/highlightjs/styles/atelier-seaside.dark.css +94 -0
  496. data/vendor/assets/components/highlightjs/styles/atelier-seaside.light.css +94 -0
  497. data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool-dark.css +69 -0
  498. data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool-light.css +69 -0
  499. data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool.dark.css +94 -0
  500. data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool.light.css +94 -0
  501. data/vendor/assets/components/highlightjs/styles/atom-one-dark.css +96 -0
  502. data/vendor/assets/components/highlightjs/styles/atom-one-light.css +96 -0
  503. data/vendor/assets/components/highlightjs/styles/brown-paper.css +64 -0
  504. data/vendor/assets/components/highlightjs/styles/brown-papersq.png +0 -0
  505. data/vendor/assets/components/highlightjs/styles/brown_paper.css +103 -0
  506. data/vendor/assets/components/highlightjs/styles/brown_papersq.png +0 -0
  507. data/vendor/assets/components/highlightjs/styles/codepen-embed.css +60 -0
  508. data/vendor/assets/components/highlightjs/styles/color-brewer.css +71 -0
  509. data/vendor/assets/components/highlightjs/styles/darcula.css +77 -0
  510. data/vendor/assets/components/highlightjs/styles/dark.css +63 -0
  511. data/vendor/assets/components/highlightjs/styles/darkula.css +6 -0
  512. data/vendor/assets/components/highlightjs/styles/default.css +99 -0
  513. data/vendor/assets/components/highlightjs/styles/docco.css +97 -0
  514. data/vendor/assets/components/highlightjs/styles/dracula.css +76 -0
  515. data/vendor/assets/components/highlightjs/styles/far.css +71 -0
  516. data/vendor/assets/components/highlightjs/styles/foundation.css +88 -0
  517. data/vendor/assets/components/highlightjs/styles/github-gist.css +71 -0
  518. data/vendor/assets/components/highlightjs/styles/github.css +99 -0
  519. data/vendor/assets/components/highlightjs/styles/googlecode.css +89 -0
  520. data/vendor/assets/components/highlightjs/styles/grayscale.css +101 -0
  521. data/vendor/assets/components/highlightjs/styles/gruvbox-dark.css +108 -0
  522. data/vendor/assets/components/highlightjs/styles/gruvbox-light.css +108 -0
  523. data/vendor/assets/components/highlightjs/styles/hopscotch.css +83 -0
  524. data/vendor/assets/components/highlightjs/styles/hybrid.css +102 -0
  525. data/vendor/assets/components/highlightjs/styles/idea.css +97 -0
  526. data/vendor/assets/components/highlightjs/styles/ir-black.css +73 -0
  527. data/vendor/assets/components/highlightjs/styles/ir_black.css +106 -0
  528. data/vendor/assets/components/highlightjs/styles/kimbie.dark.css +74 -0
  529. data/vendor/assets/components/highlightjs/styles/kimbie.light.css +74 -0
  530. data/vendor/assets/components/highlightjs/styles/magula.css +70 -0
  531. data/vendor/assets/components/highlightjs/styles/mono-blue.css +59 -0
  532. data/vendor/assets/components/highlightjs/styles/monokai-sublime.css +83 -0
  533. data/vendor/assets/components/highlightjs/styles/monokai.css +70 -0
  534. data/vendor/assets/components/highlightjs/styles/monokai_sublime.css +154 -0
  535. data/vendor/assets/components/highlightjs/styles/obsidian.css +88 -0
  536. data/vendor/assets/components/highlightjs/styles/ocean.css +74 -0
  537. data/vendor/assets/components/highlightjs/styles/paraiso-dark.css +72 -0
  538. data/vendor/assets/components/highlightjs/styles/paraiso-light.css +72 -0
  539. data/vendor/assets/components/highlightjs/styles/paraiso.dark.css +96 -0
  540. data/vendor/assets/components/highlightjs/styles/paraiso.light.css +96 -0
  541. data/vendor/assets/components/highlightjs/styles/pojoaque.css +83 -0
  542. data/vendor/assets/components/highlightjs/styles/pojoaque.jpg +0 -0
  543. data/vendor/assets/components/highlightjs/styles/purebasic.css +96 -0
  544. data/vendor/assets/components/highlightjs/styles/qtcreator_dark.css +83 -0
  545. data/vendor/assets/components/highlightjs/styles/qtcreator_light.css +83 -0
  546. data/vendor/assets/components/highlightjs/styles/railscasts.css +106 -0
  547. data/vendor/assets/components/highlightjs/styles/rainbow.css +85 -0
  548. data/vendor/assets/components/highlightjs/styles/routeros.css +108 -0
  549. data/vendor/assets/components/highlightjs/styles/school-book.css +72 -0
  550. data/vendor/assets/components/highlightjs/styles/school-book.png +0 -0
  551. data/vendor/assets/components/highlightjs/styles/school_book.css +111 -0
  552. data/vendor/assets/components/highlightjs/styles/school_book.png +0 -0
  553. data/vendor/assets/components/highlightjs/styles/solarized-dark.css +84 -0
  554. data/vendor/assets/components/highlightjs/styles/solarized-light.css +84 -0
  555. data/vendor/assets/components/highlightjs/styles/solarized_dark.css +107 -0
  556. data/vendor/assets/components/highlightjs/styles/solarized_light.css +107 -0
  557. data/vendor/assets/components/highlightjs/styles/sunburst.css +102 -0
  558. data/vendor/assets/components/highlightjs/styles/tomorrow-night-blue.css +75 -0
  559. data/vendor/assets/components/highlightjs/styles/tomorrow-night-bright.css +74 -0
  560. data/vendor/assets/components/highlightjs/styles/tomorrow-night-eighties.css +74 -0
  561. data/vendor/assets/components/highlightjs/styles/tomorrow-night.css +75 -0
  562. data/vendor/assets/components/highlightjs/styles/tomorrow.css +72 -0
  563. data/vendor/assets/components/highlightjs/styles/vs.css +68 -0
  564. data/vendor/assets/components/highlightjs/styles/vs2015.css +115 -0
  565. data/vendor/assets/components/highlightjs/styles/xcode.css +93 -0
  566. data/vendor/assets/components/highlightjs/styles/xt256.css +92 -0
  567. data/vendor/assets/components/highlightjs/styles/zenburn.css +80 -0
  568. data/vendor/assets/components/jquery/.bower.json +25 -0
  569. data/vendor/assets/components/jquery/AUTHORS.txt +313 -0
  570. data/vendor/assets/components/jquery/LICENSE.txt +36 -0
  571. data/vendor/assets/components/jquery/README.md +67 -0
  572. data/vendor/assets/components/jquery/bower.json +14 -0
  573. data/vendor/assets/components/jquery/dist/core.js +399 -0
  574. data/vendor/assets/components/jquery/dist/jquery.js +10364 -0
  575. data/vendor/assets/components/jquery/dist/jquery.min.js +2 -0
  576. data/vendor/assets/components/jquery/dist/jquery.min.map +1 -0
  577. data/vendor/assets/components/jquery/dist/jquery.slim.js +8269 -0
  578. data/vendor/assets/components/jquery/dist/jquery.slim.min.js +2 -0
  579. data/vendor/assets/components/jquery/dist/jquery.slim.min.map +1 -0
  580. data/vendor/assets/components/jquery/external/sizzle/LICENSE.txt +36 -0
  581. data/vendor/assets/components/jquery/external/sizzle/dist/sizzle.js +2272 -0
  582. data/vendor/assets/components/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  583. data/vendor/assets/components/jquery/external/sizzle/dist/sizzle.min.map +1 -0
  584. data/vendor/assets/components/jquery/src/.eslintrc.json +5 -0
  585. data/vendor/assets/components/jquery/src/ajax.js +856 -0
  586. data/vendor/assets/components/jquery/src/ajax/jsonp.js +103 -0
  587. data/vendor/assets/components/jquery/src/ajax/load.js +77 -0
  588. data/vendor/assets/components/jquery/src/ajax/parseXML.js +30 -0
  589. data/vendor/assets/components/jquery/src/ajax/script.js +77 -0
  590. data/vendor/assets/components/jquery/src/ajax/var/location.js +5 -0
  591. data/vendor/assets/components/jquery/src/ajax/var/nonce.js +5 -0
  592. data/vendor/assets/components/jquery/src/ajax/var/rquery.js +5 -0
  593. data/vendor/assets/components/jquery/src/ajax/xhr.js +170 -0
  594. data/vendor/assets/components/jquery/src/attributes.js +13 -0
  595. data/vendor/assets/components/jquery/src/attributes/attr.js +141 -0
  596. data/vendor/assets/components/jquery/src/attributes/classes.js +186 -0
  597. data/vendor/assets/components/jquery/src/attributes/prop.js +143 -0
  598. data/vendor/assets/components/jquery/src/attributes/support.js +33 -0
  599. data/vendor/assets/components/jquery/src/attributes/val.js +191 -0
  600. data/vendor/assets/components/jquery/src/callbacks.js +236 -0
  601. data/vendor/assets/components/jquery/src/core.js +399 -0
  602. data/vendor/assets/components/jquery/src/core/DOMEval.js +30 -0
  603. data/vendor/assets/components/jquery/src/core/access.js +72 -0
  604. data/vendor/assets/components/jquery/src/core/camelCase.js +23 -0
  605. data/vendor/assets/components/jquery/src/core/init.js +129 -0
  606. data/vendor/assets/components/jquery/src/core/nodeName.js +13 -0
  607. data/vendor/assets/components/jquery/src/core/parseHTML.js +65 -0
  608. data/vendor/assets/components/jquery/src/core/ready-no-deferred.js +97 -0
  609. data/vendor/assets/components/jquery/src/core/ready.js +86 -0
  610. data/vendor/assets/components/jquery/src/core/readyException.js +13 -0
  611. data/vendor/assets/components/jquery/src/core/stripAndCollapse.js +14 -0
  612. data/vendor/assets/components/jquery/src/core/support.js +20 -0
  613. data/vendor/assets/components/jquery/src/core/toType.js +20 -0
  614. data/vendor/assets/components/jquery/src/core/var/rsingleTag.js +6 -0
  615. data/vendor/assets/components/jquery/src/css.js +481 -0
  616. data/vendor/assets/components/jquery/src/css/addGetHookIf.js +26 -0
  617. data/vendor/assets/components/jquery/src/css/adjustCSS.js +73 -0
  618. data/vendor/assets/components/jquery/src/css/curCSS.js +65 -0
  619. data/vendor/assets/components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  620. data/vendor/assets/components/jquery/src/css/showHide.js +105 -0
  621. data/vendor/assets/components/jquery/src/css/support.js +102 -0
  622. data/vendor/assets/components/jquery/src/css/var/cssExpand.js +5 -0
  623. data/vendor/assets/components/jquery/src/css/var/getStyles.js +17 -0
  624. data/vendor/assets/components/jquery/src/css/var/isHiddenWithinTree.js +34 -0
  625. data/vendor/assets/components/jquery/src/css/var/rboxStyle.js +7 -0
  626. data/vendor/assets/components/jquery/src/css/var/rnumnonpx.js +7 -0
  627. data/vendor/assets/components/jquery/src/css/var/swap.js +26 -0
  628. data/vendor/assets/components/jquery/src/data.js +180 -0
  629. data/vendor/assets/components/jquery/src/data/Data.js +162 -0
  630. data/vendor/assets/components/jquery/src/data/var/acceptData.js +19 -0
  631. data/vendor/assets/components/jquery/src/data/var/dataPriv.js +7 -0
  632. data/vendor/assets/components/jquery/src/data/var/dataUser.js +7 -0
  633. data/vendor/assets/components/jquery/src/deferred.js +399 -0
  634. data/vendor/assets/components/jquery/src/deferred/exceptionHook.js +21 -0
  635. data/vendor/assets/components/jquery/src/deprecated.js +98 -0
  636. data/vendor/assets/components/jquery/src/dimensions.js +57 -0
  637. data/vendor/assets/components/jquery/src/effects.js +702 -0
  638. data/vendor/assets/components/jquery/src/effects/Tween.js +123 -0
  639. data/vendor/assets/components/jquery/src/effects/animatedSelector.js +15 -0
  640. data/vendor/assets/components/jquery/src/event.js +748 -0
  641. data/vendor/assets/components/jquery/src/event/ajax.js +22 -0
  642. data/vendor/assets/components/jquery/src/event/alias.js +29 -0
  643. data/vendor/assets/components/jquery/src/event/focusin.js +55 -0
  644. data/vendor/assets/components/jquery/src/event/support.js +11 -0
  645. data/vendor/assets/components/jquery/src/event/trigger.js +199 -0
  646. data/vendor/assets/components/jquery/src/exports/amd.js +26 -0
  647. data/vendor/assets/components/jquery/src/exports/global.js +34 -0
  648. data/vendor/assets/components/jquery/src/jquery.js +40 -0
  649. data/vendor/assets/components/jquery/src/manipulation.js +486 -0
  650. data/vendor/assets/components/jquery/src/manipulation/_evalUrl.js +23 -0
  651. data/vendor/assets/components/jquery/src/manipulation/buildFragment.js +105 -0
  652. data/vendor/assets/components/jquery/src/manipulation/getAll.js +32 -0
  653. data/vendor/assets/components/jquery/src/manipulation/setGlobalEval.js +22 -0
  654. data/vendor/assets/components/jquery/src/manipulation/support.js +35 -0
  655. data/vendor/assets/components/jquery/src/manipulation/var/rcheckableType.js +5 -0
  656. data/vendor/assets/components/jquery/src/manipulation/var/rscriptType.js +5 -0
  657. data/vendor/assets/components/jquery/src/manipulation/var/rtagName.js +5 -0
  658. data/vendor/assets/components/jquery/src/manipulation/wrapMap.js +29 -0
  659. data/vendor/assets/components/jquery/src/offset.js +233 -0
  660. data/vendor/assets/components/jquery/src/queue.js +145 -0
  661. data/vendor/assets/components/jquery/src/queue/delay.js +24 -0
  662. data/vendor/assets/components/jquery/src/selector-native.js +237 -0
  663. data/vendor/assets/components/jquery/src/selector-sizzle.js +19 -0
  664. data/vendor/assets/components/jquery/src/selector.js +3 -0
  665. data/vendor/assets/components/jquery/src/serialize.js +132 -0
  666. data/vendor/assets/components/jquery/src/traversing.js +191 -0
  667. data/vendor/assets/components/jquery/src/traversing/findFilter.js +97 -0
  668. data/vendor/assets/components/jquery/src/traversing/var/dir.js +22 -0
  669. data/vendor/assets/components/jquery/src/traversing/var/rneedsContext.js +8 -0
  670. data/vendor/assets/components/jquery/src/traversing/var/siblings.js +17 -0
  671. data/vendor/assets/components/jquery/src/var/ObjectFunctionString.js +7 -0
  672. data/vendor/assets/components/jquery/src/var/arr.js +5 -0
  673. data/vendor/assets/components/jquery/src/var/class2type.js +6 -0
  674. data/vendor/assets/components/jquery/src/var/concat.js +7 -0
  675. data/vendor/assets/components/jquery/src/var/document.js +5 -0
  676. data/vendor/assets/components/jquery/src/var/documentElement.js +7 -0
  677. data/vendor/assets/components/jquery/src/var/fnToString.js +7 -0
  678. data/vendor/assets/components/jquery/src/var/getProto.js +5 -0
  679. data/vendor/assets/components/jquery/src/var/hasOwn.js +7 -0
  680. data/vendor/assets/components/jquery/src/var/indexOf.js +7 -0
  681. data/vendor/assets/components/jquery/src/var/isFunction.js +13 -0
  682. data/vendor/assets/components/jquery/src/var/isWindow.js +8 -0
  683. data/vendor/assets/components/jquery/src/var/pnum.js +5 -0
  684. data/vendor/assets/components/jquery/src/var/push.js +7 -0
  685. data/vendor/assets/components/jquery/src/var/rcssNum.js +9 -0
  686. data/vendor/assets/components/jquery/src/var/rnothtmlwhite.js +8 -0
  687. data/vendor/assets/components/jquery/src/var/slice.js +7 -0
  688. data/vendor/assets/components/jquery/src/var/support.js +6 -0
  689. data/vendor/assets/components/jquery/src/var/toString.js +7 -0
  690. data/vendor/assets/components/jquery/src/wrap.js +78 -0
  691. data/vendor/assets/components/markdown-it/.bower.json +38 -0
  692. data/vendor/assets/components/markdown-it/CHANGELOG.md +442 -0
  693. data/vendor/assets/components/markdown-it/CONTRIBUTING.md +15 -0
  694. data/vendor/assets/components/markdown-it/LICENSE +22 -0
  695. data/vendor/assets/components/markdown-it/Procfile +1 -0
  696. data/vendor/assets/components/markdown-it/README.md +294 -0
  697. data/vendor/assets/components/markdown-it/bin/markdown-it.js +113 -0
  698. data/vendor/assets/components/markdown-it/bower.json +28 -0
  699. data/vendor/assets/components/markdown-it/dist/markdown-it.js +7963 -0
  700. data/vendor/assets/components/markdown-it/dist/markdown-it.min.js +1 -0
  701. data/vendor/assets/components/markdown-it/package.json +64 -0
  702. data/vendor/assets/components/plantuml-encoder/.bower.json +29 -0
  703. data/vendor/assets/components/plantuml-encoder/LICENSE +19 -0
  704. data/vendor/assets/components/plantuml-encoder/README.md +38 -0
  705. data/vendor/assets/components/plantuml-encoder/bower.json +20 -0
  706. data/vendor/assets/components/plantuml-encoder/dist/plantuml-encoder.js +3994 -0
  707. data/vendor/assets/components/plantuml-encoder/dist/plantuml-encoder.min.js +1 -0
  708. data/vendor/assets/components/plantuml-encoder/package.json +33 -0
  709. data/vendor/assets/components/raphael/.bower.json +45 -0
  710. data/vendor/assets/components/raphael/bower.json +31 -0
  711. data/vendor/assets/components/raphael/dev/banner.txt +8 -0
  712. data/vendor/assets/components/raphael/dev/raphael.amd.js +14 -0
  713. data/vendor/assets/components/raphael/dev/raphael.core.js +5413 -0
  714. data/vendor/assets/components/raphael/dev/raphael.svg.js +1428 -0
  715. data/vendor/assets/components/raphael/dev/raphael.vml.js +1010 -0
  716. data/vendor/assets/components/raphael/dev/test/svg/dom.js +295 -0
  717. data/vendor/assets/components/raphael/dev/test/vml/dom.js +5 -0
  718. data/vendor/assets/components/raphael/license.txt +21 -0
  719. data/vendor/assets/components/raphael/raphael.js +8330 -0
  720. data/vendor/assets/components/raphael/raphael.min.js +3 -0
  721. data/vendor/assets/components/raphael/raphael.no-deps.js +7959 -0
  722. data/vendor/assets/components/raphael/raphael.no-deps.min.js +3 -0
  723. data/vendor/assets/components/raphael/webpack.config.js +62 -0
  724. data/vendor/assets/components/squire-rte/.bower.json +34 -0
  725. data/vendor/assets/components/squire-rte/Demo.html +143 -0
  726. data/vendor/assets/components/squire-rte/LICENSE +21 -0
  727. data/vendor/assets/components/squire-rte/Makefile +22 -0
  728. data/vendor/assets/components/squire-rte/README.md +473 -0
  729. data/vendor/assets/components/squire-rte/bower.json +24 -0
  730. data/vendor/assets/components/squire-rte/build/document.html +54 -0
  731. data/vendor/assets/components/squire-rte/build/squire-raw.js +4722 -0
  732. data/vendor/assets/components/squire-rte/build/squire.js +2 -0
  733. data/vendor/assets/components/squire-rte/package.json +31 -0
  734. data/vendor/assets/components/squire-rte/source/Clean.js +358 -0
  735. data/vendor/assets/components/squire-rte/source/Clipboard.js +331 -0
  736. data/vendor/assets/components/squire-rte/source/Constants.js +60 -0
  737. data/vendor/assets/components/squire-rte/source/Editor.js +2201 -0
  738. data/vendor/assets/components/squire-rte/source/KeyHandlers.js +502 -0
  739. data/vendor/assets/components/squire-rte/source/Node.js +553 -0
  740. data/vendor/assets/components/squire-rte/source/Range.js +540 -0
  741. data/vendor/assets/components/squire-rte/source/TreeWalker.js +118 -0
  742. data/vendor/assets/components/squire-rte/source/document.html +54 -0
  743. data/vendor/assets/components/squire-rte/source/exports.js +42 -0
  744. data/vendor/assets/components/squire-rte/source/intro.js +6 -0
  745. data/vendor/assets/components/squire-rte/source/outro.js +22 -0
  746. data/vendor/assets/components/to-mark/.bower.json +35 -0
  747. data/vendor/assets/components/to-mark/bower.json +22 -0
  748. data/vendor/assets/components/to-mark/demo/demo.html +24 -0
  749. data/vendor/assets/components/to-mark/demo/demo2.html +94 -0
  750. data/vendor/assets/components/to-mark/dist/to-mark.js +1283 -0
  751. data/vendor/assets/components/to-mark/dist/to-mark.min.js +1 -0
  752. data/vendor/assets/components/to-mark/gulpfile.js +112 -0
  753. data/vendor/assets/components/to-mark/karma.conf.js +260 -0
  754. data/vendor/assets/components/to-mark/package-lock.json +13061 -0
  755. data/vendor/assets/components/to-mark/package.json +53 -0
  756. data/vendor/assets/components/tui-chart/.bower.json +44 -0
  757. data/vendor/assets/components/tui-chart/CODE_OF_CONDUCT.md +73 -0
  758. data/vendor/assets/components/tui-chart/CONTRIBUTING.md +91 -0
  759. data/vendor/assets/components/tui-chart/LICENSE +21 -0
  760. data/vendor/assets/components/tui-chart/README.md +142 -0
  761. data/vendor/assets/components/tui-chart/bower.json +33 -0
  762. data/vendor/assets/components/tui-chart/dist/maps/china.js +10 -0
  763. data/vendor/assets/components/tui-chart/dist/maps/japan.js +10 -0
  764. data/vendor/assets/components/tui-chart/dist/maps/singapore.js +10 -0
  765. data/vendor/assets/components/tui-chart/dist/maps/south-korea.js +10 -0
  766. data/vendor/assets/components/tui-chart/dist/maps/taiwan.js +10 -0
  767. data/vendor/assets/components/tui-chart/dist/maps/thailand.js +10 -0
  768. data/vendor/assets/components/tui-chart/dist/maps/usa.js +10 -0
  769. data/vendor/assets/components/tui-chart/dist/maps/world.js +11 -0
  770. data/vendor/assets/components/tui-chart/dist/tui-chart.css +704 -0
  771. data/vendor/assets/components/tui-chart/dist/tui-chart.js +40567 -0
  772. data/vendor/assets/components/tui-chart/dist/tui-chart.min.css +10 -0
  773. data/vendor/assets/components/tui-chart/dist/tui-chart.min.js +20 -0
  774. data/vendor/assets/components/tui-chart/docs/COMMIT_MESSAGE_CONVENTION.md +49 -0
  775. data/vendor/assets/components/tui-chart/docs/ISSUE_TEMPLATE.md +24 -0
  776. data/vendor/assets/components/tui-chart/docs/PULL_REQUEST_TEMPLATE.md +42 -0
  777. data/vendor/assets/components/tui-chart/docs/README.md +11 -0
  778. data/vendor/assets/components/tui-chart/docs/wiki/README.md +27 -0
  779. data/vendor/assets/components/tui-chart/docs/wiki/_Sidebar.md +31 -0
  780. data/vendor/assets/components/tui-chart/docs/wiki/chart-export-menu.md +66 -0
  781. data/vendor/assets/components/tui-chart/docs/wiki/chart-type-radial.md +121 -0
  782. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-bar,column.md +312 -0
  783. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-bubble.md +63 -0
  784. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-column-line-combo.md +104 -0
  785. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-heatmap.md +39 -0
  786. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-line,area.md +333 -0
  787. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-line-area-combo.md +78 -0
  788. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-line-scatter-combo.md +101 -0
  789. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-map.md +153 -0
  790. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-pie-donut-combo.md +98 -0
  791. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-pie.md +186 -0
  792. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-scatter.md +58 -0
  793. data/vendor/assets/components/tui-chart/docs/wiki/chart-types-treemap.md +158 -0
  794. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-china-map.md +38 -0
  795. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-japan-map.md +51 -0
  796. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-singapore-map.md +9 -0
  797. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-south-korea-map.md +21 -0
  798. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-taiwan-map.md +26 -0
  799. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-thailand-map.md +82 -0
  800. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-usa-map.md +55 -0
  801. data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-world-map.md +180 -0
  802. data/vendor/assets/components/tui-chart/docs/wiki/features-axes.md +209 -0
  803. data/vendor/assets/components/tui-chart/docs/wiki/features-chart.md +157 -0
  804. data/vendor/assets/components/tui-chart/docs/wiki/features-circle-legend.md +20 -0
  805. data/vendor/assets/components/tui-chart/docs/wiki/features-legend.md +89 -0
  806. data/vendor/assets/components/tui-chart/docs/wiki/features-plot.md +141 -0
  807. data/vendor/assets/components/tui-chart/docs/wiki/features-series.md +240 -0
  808. data/vendor/assets/components/tui-chart/docs/wiki/features-tooltip.md +223 -0
  809. data/vendor/assets/components/tui-chart/docs/wiki/getting-started.md +74 -0
  810. data/vendor/assets/components/tui-chart/docs/wiki/import-chart-data-from-existing-table-element.md +150 -0
  811. data/vendor/assets/components/tui-chart/docs/wiki/table-of-supported-options.md +344 -0
  812. data/vendor/assets/components/tui-chart/docs/wiki/theme.md +338 -0
  813. data/vendor/assets/components/tui-chart/package-lock.json +8881 -0
  814. data/vendor/assets/components/tui-code-snippet/.bower.json +31 -0
  815. data/vendor/assets/components/tui-code-snippet/LICENSE +21 -0
  816. data/vendor/assets/components/tui-code-snippet/README.md +109 -0
  817. data/vendor/assets/components/tui-code-snippet/bower.json +20 -0
  818. data/vendor/assets/components/tui-code-snippet/demo/postBridge/README.md +26 -0
  819. data/vendor/assets/components/tui-code-snippet/demo/postBridge/public/popup.html +27 -0
  820. data/vendor/assets/components/tui-code-snippet/demo/postBridge/public/postBridge.html +31 -0
  821. data/vendor/assets/components/tui-code-snippet/demo/postBridge/server.js +28 -0
  822. data/vendor/assets/components/tui-code-snippet/dist/tui-code-snippet.js +4228 -0
  823. data/vendor/assets/components/tui-code-snippet/dist/tui-code-snippet.min.js +7 -0
  824. data/vendor/assets/components/tui-code-snippet/package-lock.json +6038 -0
  825. data/vendor/assets/components/tui-color-picker/.bower.json +37 -0
  826. data/vendor/assets/components/tui-color-picker/ISSUE_TEMPLATE.md +26 -0
  827. data/vendor/assets/components/tui-color-picker/LICENSE +34 -0
  828. data/vendor/assets/components/tui-color-picker/README.md +69 -0
  829. data/vendor/assets/components/tui-color-picker/bower.json +26 -0
  830. data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.css +148 -0
  831. data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.js +3146 -0
  832. data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.min.css +7 -0
  833. data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.min.js +9 -0
  834. data/vendor/assets/components/tui-color-picker/package-lock.json +8440 -0
  835. data/vendor/assets/components/tui-editor/.bower.json +71 -0
  836. data/vendor/assets/components/tui-editor/CODE_OF_CONDUCT.md +73 -0
  837. data/vendor/assets/components/tui-editor/CONTRIBUTING.md +92 -0
  838. data/vendor/assets/components/tui-editor/LICENSE +21 -0
  839. data/vendor/assets/components/tui-editor/README.md +204 -0
  840. data/vendor/assets/components/tui-editor/bower.json +59 -0
  841. data/vendor/assets/components/tui-editor/dist/tui-editor-Editor-all.js +36850 -0
  842. data/vendor/assets/components/tui-editor/dist/tui-editor-Editor-all.min.js +13 -0
  843. data/vendor/assets/components/tui-editor/dist/tui-editor-Editor.js +24646 -0
  844. data/vendor/assets/components/tui-editor/dist/tui-editor-Editor.min.js +7 -0
  845. data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer-all.js +14768 -0
  846. data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer-all.min.js +13 -0
  847. data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer.js +3686 -0
  848. data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer.min.js +7 -0
  849. data/vendor/assets/components/tui-editor/dist/tui-editor-contents.css +239 -0
  850. data/vendor/assets/components/tui-editor/dist/tui-editor-contents.min.css +1 -0
  851. data/vendor/assets/components/tui-editor/dist/tui-editor-extChart.js +7040 -0
  852. data/vendor/assets/components/tui-editor/dist/tui-editor-extChart.min.js +13 -0
  853. data/vendor/assets/components/tui-editor/dist/tui-editor-extColorSyntax.js +472 -0
  854. data/vendor/assets/components/tui-editor/dist/tui-editor-extColorSyntax.min.js +7 -0
  855. data/vendor/assets/components/tui-editor/dist/tui-editor-extScrollSync.js +1241 -0
  856. data/vendor/assets/components/tui-editor/dist/tui-editor-extScrollSync.min.js +7 -0
  857. data/vendor/assets/components/tui-editor/dist/tui-editor-extTable.js +3930 -0
  858. data/vendor/assets/components/tui-editor/dist/tui-editor-extTable.min.js +7 -0
  859. data/vendor/assets/components/tui-editor/dist/tui-editor-extUML.js +212 -0
  860. data/vendor/assets/components/tui-editor/dist/tui-editor-extUML.min.js +7 -0
  861. data/vendor/assets/components/tui-editor/dist/tui-editor.css +1166 -0
  862. data/vendor/assets/components/tui-editor/dist/tui-editor.min.css +1 -0
  863. data/vendor/assets/components/tui-editor/docs/COMMIT_MESSAGE_CONVENTION.md +49 -0
  864. data/vendor/assets/components/tui-editor/docs/PULL_REQUEST_TEMPLATE.md +41 -0
  865. data/vendor/assets/components/tui-editor/docs/README.md +13 -0
  866. data/vendor/assets/components/tui-editor/docs/getting-started-with-bower.md +93 -0
  867. data/vendor/assets/components/tui-editor/docs/getting-started.md +76 -0
  868. data/vendor/assets/components/tui-editor/docs/using-extensions.md +91 -0
  869. data/vendor/assets/components/tui-editor/docs/writing-your-own-extension.md +167 -0
  870. data/vendor/assets/components/tui-editor/examples/example00-demo.html +85 -0
  871. data/vendor/assets/components/tui-editor/examples/example01-basic.html +37 -0
  872. data/vendor/assets/components/tui-editor/examples/example02-viewer-basic.html +68 -0
  873. data/vendor/assets/components/tui-editor/examples/example03-jquery.html +36 -0
  874. data/vendor/assets/components/tui-editor/examples/example04-viewer-jquery.html +67 -0
  875. data/vendor/assets/components/tui-editor/examples/example05-scrollsync.html +77 -0
  876. data/vendor/assets/components/tui-editor/examples/example06-colorsyntax.html +44 -0
  877. data/vendor/assets/components/tui-editor/examples/example07-table.html +48 -0
  878. data/vendor/assets/components/tui-editor/examples/example08-uml.html +69 -0
  879. data/vendor/assets/components/tui-editor/examples/example09-multiple-extensions.html +85 -0
  880. data/vendor/assets/components/tui-editor/examples/example10-viewer-multiple-extensions.html +86 -0
  881. data/vendor/assets/components/tui-editor/examples/example11-chart.html +60 -0
  882. data/vendor/assets/components/tui-editor/examples/example12-writing-extension.html +66 -0
  883. data/vendor/assets/components/tui-editor/examples/examples.json +41 -0
  884. data/vendor/assets/components/tui-editor/examples/explain.css +7 -0
  885. data/vendor/assets/components/tui-editor/package-lock.json +13289 -0
  886. data/vendor/assets/components/tui-editor/package.json +90 -0
  887. metadata +956 -0
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * tui-editor
3
+ * @version 1.0.2
4
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com> (https://nhnent.github.io/tui.editor/)
5
+ * @license MIT
6
+ */
7
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("jquery"),require("tui-code-snippet"),function(){try{return require("tui-editor")}catch(e){}}(),function(){try{return require("tui-editor/dist/tui-editor-Viewer")}catch(e){}}());else if("function"==typeof define&&define.amd)define(["jquery","tui-code-snippet","tui-editor","tui-editor/dist/tui-editor-Viewer"],t);else{var i="object"==typeof exports?t(require("jquery"),require("tui-code-snippet"),function(){try{return require("tui-editor")}catch(e){}}(),function(){try{return require("tui-editor/dist/tui-editor-Viewer")}catch(e){}}()):t(e.$,e.tui&&e.tui.util,e.tui&&e.tui.Editor,e.tui&&e.tui.Editor);for(var n in i)("object"==typeof exports?exports:e)[n]=i[n]}}("undefined"!=typeof self?self:this,function(e,t,i,n){return function(e){function t(n){if(i[n])return i[n].exports;var o=i[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var i={};return t.m=e,t.c=i,t.d=function(e,i,n){t.o(e,i)||Object.defineProperty(e,i,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(i,"a",i),i},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="dist/",t(t.s=46)}({0:function(t,i){t.exports=e},1:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=void 0;try{n=i(4)}catch(e){}if(!n)try{n=i(5)}catch(e){}t.default=n},2:function(e,i){e.exports=t},4:function(e,t){if(void 0===i){var n=new Error('Cannot find module "undefined"');throw n.code="MODULE_NOT_FOUND",n}e.exports=i},46:function(e,t,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){function t(){"vertical"===e.mdPreviewStyle&&"markdown"===e.currentMode?(d.$el.show(),v.show()):(d.$el.hide(),v.hide())}var i=e.i18n,n={active:i.get("Auto scroll enabled"),inActive:i.get("Auto scroll disabled")};if(!e.isViewer()){var o=e.getCodeMirror(),r=new f.default(o,e.preview),l=new u.default(r,o,e.preview.$el),s=!1,a=!0,d=void 0,v=void 0;"default"===e.getUI().name&&(d=new h({className:"tui-scrollsync",command:"scrollSyncToggle",tooltip:n.active,$el:(0,c.default)('<button class="active tui-scrollsync" type="button"></button>')}),v=e.getUI().toolbar.addDivider(),e.getUI().toolbar.addButton(d),t(),e.on("changeMode",t),e.on("changePreviewStyle",t),e.addCommand("markdown",{name:"scrollSyncToggle",exec:function(){a=!a,d._onOut(),a?(d.$el.addClass("active"),d.tooltip=n.active):(d.$el.removeClass("active"),d.tooltip=n.inActive),d._onOver()}})),o.on("change",function(){s=!1,r.makeSectionList()}),e.on("previewRenderAfter",function(){r.sectionMatch(),l.syncPreviewScrollTopToMarkdown(),s=!0}),e.eventManager.listen("scroll",function(t){a&&(s&&e.preview.isVisible()?"markdown"!==t.source||l.isMarkdownScrollEventBlocked?"preview"!==t.source||l.isPreviewScrollEventBlocked||l.syncMarkdownScrollTopToPreview():l.syncPreviewScrollTopToMarkdown():l.saveScrollInfo())})}}Object.defineProperty(t,"__esModule",{value:!0});var r=i(0),c=n(r),l=i(1),s=n(l),a=i(47),u=n(a),d=i(48),f=n(d),h=s.default.Button;s.default.defineExtension("scrollSync",o),t.default=o},47:function(e,t,i){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}(),r=i(2),c=function(e){return e&&e.__esModule?e:{default:e}}(r),l=function(){function e(t,i,o){n(this,e),this.sectionManager=t,this.cm=i,this.$previewContainerEl=o,this.$contents=this.$previewContainerEl.find(".tui-editor-contents"),this.releaseTimer=null,this._currentTimeoutId=null,this._savedScrollInfo=null}return o(e,[{key:"_getEditorSectionHeight",value:function(e){var t=this.cm.heightAtLine(e.end,"local");return t-=this.cm.heightAtLine(e.start>0?e.start-1:0,"local")}},{key:"_getEditorLineHeightGapInSection",value:function(e,t){var i=this.cm.heightAtLine(t,"local");return i-=this.cm.heightAtLine(e.start>0?e.start-1:0,"local"),Math.max(i,0)}},{key:"_getEditorSectionScrollRatio",value:function(e,t){var i=e.end===e.start;return i?0:this._getEditorLineHeightGapInSection(e,t)/this._getEditorSectionHeight(e)}},{key:"_getScrollFactorsOfEditor",value:function(){var e=this.cm,t=e.getScrollInfo(),i=void 0,n=void 0,o=void 0,r=void 0;t=this._fallbackScrollInfoIfIncorrect(t);var c=t.height-t.top<=t.clientHeight;return c?r={isEditorBottom:c}:(i=e.coordsChar({left:t.left,top:t.top},"local").line,n=this.sectionManager.sectionByLine(i),o=this._getEditorSectionScrollRatio(n,i),r={section:n,sectionRatio:o}),r}},{key:"_getScrollInfoForMarkdown",value:function(){var e=this,t=this.sectionManager.getSectionList(),i=void 0;return c.default.forEachArray(t,function(t){var n=t.$previewSectionEl,o=n.parent().parent(),r=o[0].clientHeight-o.scrollTop()<=o[0].height,c=!0;return r?(i={isPreviewBottom:r},c=!1):e._isTopSection(o,n)&&(i={section:t,sectionRatio:e._getMarkdownEditorScrollRatio(o,n)},c=!1),c}),i}},{key:"_getMarkdownEditorScrollRatio",value:function(e,t){return(e.scrollTop()-t[0].offsetTop)/t.height()}},{key:"_getScrollTopForPreview",value:function(){var e=void 0,t=this._getScrollFactorsOfEditor(),i=t.section,n=t.sectionRatio;return t.isEditorBottom?e=this.$contents.height():i.$previewSectionEl&&(e=i.$previewSectionEl[0].offsetTop,e+=i.$previewSectionEl.height()*n-20),e=e&&Math.max(e,0)}},{key:"_getScrollTopForMarkdown",value:function(){var e=void 0,t=this._getScrollInfoForMarkdown(),i=t.sectionRatio;if(t.isPreviewBottom)e=this.cm.getScrollInfo().height;else if(t.section){var n=t.section,o=this.cm.charCoords({line:n.start,char:0},"local"),r=this.cm.charCoords({line:n.end,char:0},"local");e=o.top,e+=(r.top-o.top)*i}return e=e&&Math.max(e,0)}},{key:"syncPreviewScrollTopToMarkdown",value:function(){var e=this,t=this.$previewContainerEl,i=t.scrollTop(),n=this._getScrollTopForPreview();this.isPreviewScrollEventBlocked=!0,this._animateRun(i,n,function(i){clearTimeout(e.releaseTimer),t.scrollTop(i),e.releaseTimer=setTimeout(function(){e.isPreviewScrollEventBlocked=!1},15)})}},{key:"syncMarkdownScrollTopToPreview",value:function(){var e=this,t=this.cm,i=t.getScrollInfo(),n=i.top,o=this._getScrollTopForMarkdown();this.isMarkdownScrollEventBlocked=!0,this._animateRun(n,o,function(i){clearTimeout(e.releaseTimer),t.scrollTo(0,i),e.releaseTimer=setTimeout(function(){e.isMarkdownScrollEventBlocked=!1},15)})}},{key:"_animateRun",value:function(e,t,i){function n(){var l=Date.now(),s=(l-r)/200,a=void 0;s<1?(a=e+o*Math.cos((1-s)*Math.PI/2),i(Math.ceil(a)),c._currentTimeoutId=setTimeout(n,1)):(i(t),c._currentTimeoutId=null)}var o=t-e,r=Date.now(),c=this;this._currentTimeoutId&&clearTimeout(this._currentTimeoutId),n()}},{key:"_fallbackScrollInfoIfIncorrect",value:function(e){return e.height<0&&this._savedScrollInfo?this._savedScrollInfo:e}},{key:"saveScrollInfo",value:function(){this._savedScrollInfo=this.cm.getScrollInfo()}},{key:"_isTopSection",value:function(e,t){var i=e.scrollTop(),n=t[0].offsetTop,o=t.height(),r=i>=n-57,c=i>n+o;return r&&!c}}]),e}();t.default=l},48:function(e,t,i){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(){return this.nodeType===Node.ELEMENT_NODE}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}(),c=i(0),l=function(e){return e&&e.__esModule?e:{default:e}}(c),s=/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/,a=/^ *(\*|-|\d+\.|[*-] \[[ xX]])\s/,u=/^ {0,3}(> ?)+\s/,d=/^ {0,3}!\[([^[\]]*)]\(([^)]*)\)/,f=/^ *(?:={1,}|-{1,})\s*$/,h=/^ *(`{3,}|~{3,})[ ]*$/,v=/^ *(`{3,}|~{3,})[ .]*(\S+)? */,p=/\s/g,_=function(){function e(t,i){n(this,e),this.cm=t,this.preview=i,this.$previewContent=i.$el.find(".tui-editor-contents"),this._sectionList=null,this._currentSection=null}return r(e,[{key:"_addNewSection",value:function(e,t){var i=this._makeSectionData(e,t);this._sectionList.push(i),this._currentSection=i}},{key:"getSectionList",value:function(){return this._sectionList||this.makeSectionList(),this._sectionList}},{key:"_makeSectionData",value:function(e,t){return{start:e,end:t,$previewSectionEl:null}}},{key:"_updateCurrentSectionEnd",value:function(e){this._currentSection.end=e}},{key:"_eachLineState",value:function(e){var t=void 0,i=void 0,n=void 0,o=void 0,r=void 0,c=!0,l=!1,s=!1,a="",u=!1,d=!1,f=void 0,h=this.cm.getDoc().lineCount();for(i=0;i<h;i+=1){t=!1,n=this.cm.getLine(i),o=this.cm.getLine(i+1)||"",r=this.cm.getLine(i-1)||"";var v=this._isCodeBlockEnd(r)&&f!==i-1;if(!l||n&&this._isTableCode(n)?!l&&this._isTable(n,o)&&(l=!0):l=!1,s&&v&&(s=!1),!s&&this._isCodeBlockStart(n)&&(s=this._doFollowedLinesHaveCodeBlockEnd(i,h),f=i),d&&0!==n.length?(this._isIndependentImage(s,l,n,r)?(u=!0,d=!0):(u=!1,d=!1),t=!0):this._isAtxHeader(n)?(u=!1,t=!0,d=!1):this._isCodeBlockEnd(n)||l||!this._isSeTextHeader(n,o)?this._isIndependentImage(s,l,n,r)?(u=!0,t=!0,d=!1):u&&0===n.length&&(u=!1,d=!0):(u=!1,t=!0,d=!1),c){if(!(a+=n.trim()))continue;c=!1}e(t,i)}}},{key:"_isIndependentImage",value:function(e,t,i,n){return!e&&!t&&this._isImage(i)&&!this._isList(i)&&!this._isQuote(i)&&0===n.length}},{key:"_doFollowedLinesHaveCodeBlockEnd",value:function(e,t){for(var i=!1,n=e+1;n<t;n+=1)if(this._isCodeBlockEnd(this.cm.getLine(n))){i=!0;break}return i}},{key:"_isCodeBlockStart",value:function(e){return v.test(e)}},{key:"_isCodeBlockEnd",value:function(e){return h.test(e)}},{key:"_isTable",value:function(e,t){return this._isTableCode(e)&&this._isTableAligner(t)}},{key:"_isTableCode",value:function(e){return/(^\S?.*\|.*)/.test(e)}},{key:"_isTableAligner",value:function(e){return/(\s*[-:]+\s*\|)+/.test(e)}},{key:"_isAtxHeader",value:function(e){return s.test(e)}},{key:"_isSeTextHeader",value:function(e,t){return""!==e.replace(p,"")&&t&&f.test(t)}},{key:"_isImage",value:function(e){return d.test(e)}},{key:"_isList",value:function(e){return a.test(e)}},{key:"_isQuote",value:function(e){return u.test(e)}},{key:"makeSectionList",value:function(){var e=this;this._sectionList=[],this._eachLineState(function(t,i){t||!e._sectionList.length?e._addNewSection(i,i):e._updateCurrentSectionEnd(i)})}},{key:"sectionMatch",value:function(){if(this.getSectionList()){var e=this._getPreviewSections();this._matchPreviewSectionsWithSectionlist(e)}}},{key:"_matchPreviewSectionsWithSectionlist",value:function(e){var t=this.getSectionList();e.forEach(function(e,i){var n=t[i];if(n){var o=(0,l.default)("<div class='content-id-"+i+"'></div>");n.$previewSectionEl=(0,l.default)(e).wrapAll(o).parent()}})}},{key:"_getPreviewSections",value:function(){var e=[],t=0,i=!1;return e[0]=[],this.$previewContent.contents().filter(o).each(function(n,o){var r="P"===o.tagName,c=o.tagName.match(/^(H1|H2|H3|H4|H5|H6)$/),l=r&&"IMG"===o.childNodes[0].nodeName;(c||l||i)&&e[t].length&&(e.push([]),t+=1,i=!1),l&&(i=!0),e[t].push(o)}),e}},{key:"sectionByLine",value:function(e){var t=void 0,i=this.getSectionList(),n=i.length;for(t=0;t<n&&!(e<=i[t].end);t+=1);return t===n&&(t=n-1),i[t]}}]),e}();t.default=_},5:function(e,t){if(void 0===n){var i=new Error('Cannot find module "undefined"');throw i.code="MODULE_NOT_FOUND",i}e.exports=n}})});
@@ -0,0 +1,3930 @@
1
+ /*!
2
+ * tui-editor
3
+ * @version 1.0.2
4
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com> (https://nhnent.github.io/tui.editor/)
5
+ * @license MIT
6
+ */
7
+ (function webpackUniversalModuleDefinition(root, factory) {
8
+ if(typeof exports === 'object' && typeof module === 'object')
9
+ module.exports = factory(require("jquery"), require("tui-code-snippet"), (function webpackLoadOptionalExternalModule() { try { return require("tui-editor"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require("tui-editor/dist/tui-editor-Viewer"); } catch(e) {} }()), require("to-mark"));
10
+ else if(typeof define === 'function' && define.amd)
11
+ define(["jquery", "tui-code-snippet", "tui-editor", "tui-editor/dist/tui-editor-Viewer", "to-mark"], factory);
12
+ else {
13
+ var a = typeof exports === 'object' ? factory(require("jquery"), require("tui-code-snippet"), (function webpackLoadOptionalExternalModule() { try { return require("tui-editor"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require("tui-editor/dist/tui-editor-Viewer"); } catch(e) {} }()), require("to-mark")) : factory(root["$"], (root["tui"] && root["tui"]["util"]), (root["tui"] && root["tui"]["Editor"]), (root["tui"] && root["tui"]["Editor"]), root["toMark"]);
14
+ for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
15
+ }
16
+ })(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_5__, __WEBPACK_EXTERNAL_MODULE_54__) {
17
+ return /******/ (function(modules) { // webpackBootstrap
18
+ /******/ // The module cache
19
+ /******/ var installedModules = {};
20
+ /******/
21
+ /******/ // The require function
22
+ /******/ function __webpack_require__(moduleId) {
23
+ /******/
24
+ /******/ // Check if module is in cache
25
+ /******/ if(installedModules[moduleId]) {
26
+ /******/ return installedModules[moduleId].exports;
27
+ /******/ }
28
+ /******/ // Create a new module (and put it into the cache)
29
+ /******/ var module = installedModules[moduleId] = {
30
+ /******/ i: moduleId,
31
+ /******/ l: false,
32
+ /******/ exports: {}
33
+ /******/ };
34
+ /******/
35
+ /******/ // Execute the module function
36
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
37
+ /******/
38
+ /******/ // Flag the module as loaded
39
+ /******/ module.l = true;
40
+ /******/
41
+ /******/ // Return the exports of the module
42
+ /******/ return module.exports;
43
+ /******/ }
44
+ /******/
45
+ /******/
46
+ /******/ // expose the modules object (__webpack_modules__)
47
+ /******/ __webpack_require__.m = modules;
48
+ /******/
49
+ /******/ // expose the module cache
50
+ /******/ __webpack_require__.c = installedModules;
51
+ /******/
52
+ /******/ // define getter function for harmony exports
53
+ /******/ __webpack_require__.d = function(exports, name, getter) {
54
+ /******/ if(!__webpack_require__.o(exports, name)) {
55
+ /******/ Object.defineProperty(exports, name, {
56
+ /******/ configurable: false,
57
+ /******/ enumerable: true,
58
+ /******/ get: getter
59
+ /******/ });
60
+ /******/ }
61
+ /******/ };
62
+ /******/
63
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
64
+ /******/ __webpack_require__.n = function(module) {
65
+ /******/ var getter = module && module.__esModule ?
66
+ /******/ function getDefault() { return module['default']; } :
67
+ /******/ function getModuleExports() { return module; };
68
+ /******/ __webpack_require__.d(getter, 'a', getter);
69
+ /******/ return getter;
70
+ /******/ };
71
+ /******/
72
+ /******/ // Object.prototype.hasOwnProperty.call
73
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
74
+ /******/
75
+ /******/ // __webpack_public_path__
76
+ /******/ __webpack_require__.p = "dist/";
77
+ /******/
78
+ /******/ // Load entry module and return exports
79
+ /******/ return __webpack_require__(__webpack_require__.s = 49);
80
+ /******/ })
81
+ /************************************************************************/
82
+ /******/ ([
83
+ /* 0 */
84
+ /***/ (function(module, exports) {
85
+
86
+ module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
87
+
88
+ /***/ }),
89
+ /* 1 */
90
+ /***/ (function(module, exports, __webpack_require__) {
91
+
92
+ "use strict";
93
+
94
+
95
+ Object.defineProperty(exports, "__esModule", {
96
+ value: true
97
+ });
98
+ /**
99
+ * @fileoverview Editor/Viewer proxy for extensions
100
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
101
+ */
102
+ /* eslint global-require: 0 no-empty: 0 */
103
+
104
+ var Editor = void 0;
105
+ try {
106
+ Editor = __webpack_require__(4);
107
+ } catch (e) {}
108
+ if (!Editor) {
109
+ try {
110
+ Editor = __webpack_require__(5);
111
+ } catch (e) {}
112
+ }
113
+
114
+ exports.default = Editor;
115
+
116
+ /***/ }),
117
+ /* 2 */
118
+ /***/ (function(module, exports) {
119
+
120
+ module.exports = __WEBPACK_EXTERNAL_MODULE_2__;
121
+
122
+ /***/ }),
123
+ /* 3 */
124
+ /***/ (function(module, exports, __webpack_require__) {
125
+
126
+ "use strict";
127
+
128
+
129
+ Object.defineProperty(exports, "__esModule", {
130
+ value: true
131
+ });
132
+ exports.createTableData = createTableData;
133
+ exports.createCellIndexData = createCellIndexData;
134
+
135
+ var _jquery = __webpack_require__(0);
136
+
137
+ var _jquery2 = _interopRequireDefault(_jquery);
138
+
139
+ var _tuiCodeSnippet = __webpack_require__(2);
140
+
141
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
142
+
143
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
144
+
145
+ /**
146
+ * Parse cell like td or th.
147
+ * @param {HTMLElement} cell - cell element like td or th
148
+ * @param {number} rowIndex - row index
149
+ * @param {number} colIndex - column index
150
+ * @returns {{
151
+ * nodeName: string,
152
+ * colspan: number,
153
+ * rowspan: number,
154
+ * content: string,
155
+ * align: ?string
156
+ * }}
157
+ * @private
158
+ */
159
+ /**
160
+ * @fileoverview Implements tableDataHandler
161
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
162
+ */
163
+ function _parseCell(cell, rowIndex, colIndex) {
164
+ var $cell = (0, _jquery2.default)(cell);
165
+ var colspan = $cell.attr('colspan');
166
+ var rowspan = $cell.attr('rowspan');
167
+ var nodeName = cell.nodeName;
168
+
169
+
170
+ if (nodeName !== 'TH' && nodeName !== 'TD') {
171
+ return null;
172
+ }
173
+
174
+ var cellData = {
175
+ nodeName: cell.nodeName,
176
+ colspan: colspan ? parseInt(colspan, 10) : 1,
177
+ rowspan: rowspan ? parseInt(rowspan, 10) : 1,
178
+ content: $cell.html(),
179
+ elementIndex: {
180
+ rowIndex: rowIndex,
181
+ colIndex: colIndex
182
+ }
183
+ };
184
+
185
+ if (cell.nodeName === 'TH' && cell.align) {
186
+ cellData.align = cell.align;
187
+ }
188
+
189
+ return cellData;
190
+ }
191
+
192
+ /**
193
+ * Add merged cell.
194
+ * @param {object} base - base table data
195
+ * @param {object} cellData - cell data
196
+ * @param {number} startRowIndex - start row index
197
+ * @param {number} startCellIndex - start cell index
198
+ * @private
199
+ */
200
+ function _addMergedCell(base, cellData, startRowIndex, startCellIndex) {
201
+ var colspan = cellData.colspan,
202
+ rowspan = cellData.rowspan,
203
+ nodeName = cellData.nodeName;
204
+
205
+ var colMerged = colspan > 1;
206
+ var rowMerged = rowspan > 1;
207
+
208
+ if (!colMerged && !rowMerged) {
209
+ return;
210
+ }
211
+
212
+ var limitRowIndex = startRowIndex + rowspan;
213
+ var limitCellIndex = startCellIndex + colspan;
214
+
215
+ _tuiCodeSnippet2.default.range(startRowIndex, limitRowIndex).forEach(function (rowIndex) {
216
+ base[rowIndex] = base[rowIndex] || [];
217
+
218
+ _tuiCodeSnippet2.default.range(startCellIndex, limitCellIndex).forEach(function (cellIndex) {
219
+ var mergedData = {
220
+ nodeName: nodeName
221
+ };
222
+
223
+ if (rowIndex === startRowIndex && cellIndex === startCellIndex) {
224
+ return;
225
+ }
226
+
227
+ if (colMerged) {
228
+ mergedData.colMergeWith = startCellIndex;
229
+ }
230
+
231
+ if (rowMerged) {
232
+ mergedData.rowMergeWith = startRowIndex;
233
+ }
234
+
235
+ base[rowIndex][cellIndex] = mergedData;
236
+ });
237
+ });
238
+ }
239
+
240
+ /**
241
+ * Create table data from jQuery table Element.
242
+ * @param {jQuery} $table - jQuery table element
243
+ * @returns {Array.<Array.<object>>}
244
+ * @ignore
245
+ */
246
+ function createTableData($table) {
247
+ var tableData = [];
248
+
249
+ $table.find('tr').each(function (rowIndex, tr) {
250
+ var stackedColCount = 0;
251
+
252
+ tableData[rowIndex] = tableData[rowIndex] || [];
253
+
254
+ (0, _jquery2.default)(tr).children().each(function (colIndex, cell) {
255
+ var cellData = _parseCell(cell, rowIndex, colIndex);
256
+
257
+ if (!cellData) {
258
+ return;
259
+ }
260
+ var dataColIndex = colIndex + stackedColCount;
261
+
262
+ while (tableData[rowIndex][dataColIndex]) {
263
+ dataColIndex += 1;
264
+ stackedColCount += 1;
265
+ }
266
+
267
+ tableData[rowIndex][dataColIndex] = cellData;
268
+ _addMergedCell(tableData, cellData, rowIndex, dataColIndex);
269
+ });
270
+ });
271
+
272
+ if ($table[0].className) {
273
+ tableData.className = $table[0].className;
274
+ }
275
+
276
+ return tableData;
277
+ }
278
+
279
+ /**
280
+ * Create cell index data of table data.
281
+ * @param {Array.<Array.<object>>} tableData - table data
282
+ * @returns {Array.<Array.<object>>}
283
+ * @ignore
284
+ */
285
+ function createCellIndexData(tableData) {
286
+ var mappingData = [];
287
+
288
+ tableData.forEach(function (row, rowIndex) {
289
+ var mappingRow = [];
290
+
291
+ row.forEach(function (cell, colIndex) {
292
+ if (_tuiCodeSnippet2.default.isUndefined(cell.colMergeWith) && _tuiCodeSnippet2.default.isUndefined(cell.rowMergeWith)) {
293
+ mappingRow.push({
294
+ rowIndex: rowIndex,
295
+ colIndex: colIndex
296
+ });
297
+ }
298
+ });
299
+ mappingData.push(mappingRow);
300
+ });
301
+
302
+ return mappingData;
303
+ }
304
+
305
+ /**
306
+ * Get header aligns.
307
+ * @param {Array.<Array.<object>>} tableData - table data
308
+ * @returns {Array.<?string>}
309
+ * @private
310
+ */
311
+ function _getHeaderAligns(tableData) {
312
+ var headRowData = tableData[0];
313
+
314
+
315
+ return headRowData.map(function (cellData) {
316
+ var align = void 0;
317
+
318
+ if (_tuiCodeSnippet2.default.isExisty(cellData.colMergeWith)) {
319
+ align = headRowData[cellData.colMergeWith].align;
320
+ } else {
321
+ align = cellData.align;
322
+ }
323
+
324
+ return align;
325
+ });
326
+ }
327
+
328
+ /**
329
+ * Create render data.
330
+ * @param {Array.<object>} tableData - table data
331
+ * @param {Array.<object>} cellIndexData - cell index data
332
+ * @returns {Array.<Array.<object>>}
333
+ * @ignore
334
+ */
335
+ function createRenderData(tableData, cellIndexData) {
336
+ var headerAligns = _getHeaderAligns(tableData);
337
+ var renderData = cellIndexData.map(function (row) {
338
+ return row.map(function (_ref) {
339
+ var rowIndex = _ref.rowIndex,
340
+ colIndex = _ref.colIndex;
341
+ return _tuiCodeSnippet2.default.extend({
342
+ align: headerAligns[colIndex]
343
+ }, tableData[rowIndex][colIndex]);
344
+ });
345
+ });
346
+
347
+ if (tableData.className) {
348
+ renderData.className = tableData.className;
349
+ }
350
+
351
+ return renderData;
352
+ }
353
+
354
+ var BASIC_CELL_CONTENT = _tuiCodeSnippet2.default.browser.msie ? '' : '<br>';
355
+
356
+ /**
357
+ * Create basic cell data.
358
+ * @param {number} rowIndex - row index
359
+ * @param {number} colIndex - column index
360
+ * @param {string} nodeName - node name
361
+ * @returns {{
362
+ * nodeName: string,
363
+ * colspan: number,
364
+ * rowspan: number,
365
+ * content: string
366
+ * }}
367
+ * @ignore
368
+ */
369
+ function createBasicCell(rowIndex, colIndex, nodeName) {
370
+ return {
371
+ nodeName: nodeName || 'TD',
372
+ colspan: 1,
373
+ rowspan: 1,
374
+ content: BASIC_CELL_CONTENT,
375
+ elementIndex: {
376
+ rowIndex: rowIndex,
377
+ colIndex: colIndex
378
+ }
379
+ };
380
+ }
381
+
382
+ /**
383
+ * Find element row index.
384
+ * @param {jQuery} $cell - cell jQuery element like td or th
385
+ * @returns {number}
386
+ * @ignore
387
+ */
388
+ function findElementRowIndex($cell) {
389
+ var $tr = $cell.closest('tr');
390
+ var rowIndex = $tr.prevAll().length;
391
+
392
+ if ($tr.parent()[0].nodeName === 'TBODY') {
393
+ rowIndex += 1;
394
+ }
395
+
396
+ return rowIndex;
397
+ }
398
+
399
+ /**
400
+ * Find element col index.
401
+ * @param {jQuery} $cell - cell jQuery element like td or th
402
+ * @returns {number}
403
+ * @ignore
404
+ */
405
+ function findElementColIndex($cell) {
406
+ return $cell.closest('td, th').prevAll().length;
407
+ }
408
+
409
+ /**
410
+ * Find indexes of base table data from mappin data.
411
+ * @param {Array.<Array.<object>>} cellIndexData - cell index data
412
+ * @param {jQuery} $cell - cell jQuery element like td or th
413
+ * @returns {{rowIndex: number, cellIndex: number}}
414
+ * @ignore
415
+ */
416
+ function findCellIndex(cellIndexData, $cell) {
417
+ var elementRowIndex = findElementRowIndex($cell);
418
+ var elementColIndex = findElementColIndex($cell);
419
+
420
+ return cellIndexData[elementRowIndex][elementColIndex];
421
+ }
422
+
423
+ /**
424
+ * Find last index of col merged cells.
425
+ * @param {Array.<Array.<object>>} tableData - tableData data
426
+ * @param {number} rowIndex - row index of base data
427
+ * @param {number} colIndex - column index of tabld data
428
+ * @returns {number}
429
+ * @ignore
430
+ */
431
+ function findRowMergedLastIndex(tableData, rowIndex, colIndex) {
432
+ var cellData = tableData[rowIndex][colIndex];
433
+ var foundRowIndex = rowIndex;
434
+
435
+ if (cellData.rowspan > 1) {
436
+ foundRowIndex += cellData.rowspan - 1;
437
+ }
438
+
439
+ return foundRowIndex;
440
+ }
441
+
442
+ /**
443
+ * Find last index of col merged cells.
444
+ * @param {Array.<Array.<object>>} tableData - tableData data
445
+ * @param {number} rowIndex - row index of base data
446
+ * @param {number} colIndex - column index of tabld data
447
+ * @returns {number}
448
+ * @ignore
449
+ */
450
+ function findColMergedLastIndex(tableData, rowIndex, colIndex) {
451
+ var cellData = tableData[rowIndex][colIndex];
452
+ var foundColIndex = colIndex;
453
+
454
+ if (cellData.colspan > 1) {
455
+ foundColIndex += cellData.colspan - 1;
456
+ }
457
+
458
+ return foundColIndex;
459
+ }
460
+
461
+ /**
462
+ * Find cell element index.
463
+ * @param {Array.<Array.<object>>} tableData - tableData data
464
+ * @param {number} rowIndex - row index of base data
465
+ * @param {number} colIndex - col index of base data
466
+ * @returns {{rowIndex: number, colIndex: number}}
467
+ * @ignore
468
+ */
469
+ function findElementIndex(tableData, rowIndex, colIndex) {
470
+ var cellData = tableData[rowIndex][colIndex];
471
+
472
+ rowIndex = _tuiCodeSnippet2.default.isExisty(cellData.rowMergeWith) ? cellData.rowMergeWith : rowIndex;
473
+ colIndex = _tuiCodeSnippet2.default.isExisty(cellData.colMergeWith) ? cellData.colMergeWith : colIndex;
474
+
475
+ return tableData[rowIndex][colIndex].elementIndex;
476
+ }
477
+
478
+ /**
479
+ * Stuff cells into incomplete row.
480
+ * @param {Array.<Array.<object>>} tableData - table data
481
+ * @param {number} limitIndex - limit index
482
+ * @ignore
483
+ */
484
+ function stuffCellsIntoIncompleteRow(tableData, limitIndex) {
485
+ tableData.forEach(function (rowData, rowIndex) {
486
+ var startIndex = rowData.length;
487
+ var nodeName = rowData[0].nodeName;
488
+
489
+
490
+ _tuiCodeSnippet2.default.range(startIndex, limitIndex).forEach(function (colIndex) {
491
+ rowData.push(createBasicCell(rowIndex, colIndex, nodeName));
492
+ });
493
+ });
494
+ }
495
+
496
+ /**
497
+ * Add tbody or thead of table data if need.
498
+ * @param {Array.<Array.<object>>} tableData - table data
499
+ * @returns {boolean}
500
+ * @ignore
501
+ */
502
+ function addTbodyOrTheadIfNeed(tableData) {
503
+ var header = tableData[0];
504
+
505
+ var cellCount = header.length;
506
+ var added = true;
507
+
508
+ if (!cellCount && tableData[1]) {
509
+ _tuiCodeSnippet2.default.range(0, tableData[1].length).forEach(function (colIndex) {
510
+ header.push(createBasicCell(0, colIndex, 'TH'));
511
+ });
512
+ } else if (tableData[0][0].nodeName !== 'TH') {
513
+ var _ref2;
514
+
515
+ var newHeader = _tuiCodeSnippet2.default.range(0, cellCount).map(function (colIndex) {
516
+ return createBasicCell(0, colIndex, 'TH');
517
+ });
518
+
519
+ (_ref2 = []).concat.apply(_ref2, tableData).forEach(function (cellData) {
520
+ if (cellData.elementIndex) {
521
+ cellData.elementIndex.rowIndex += 1;
522
+ }
523
+ });
524
+
525
+ tableData.unshift(newHeader);
526
+ } else if (tableData.length === 1) {
527
+ var newRow = _tuiCodeSnippet2.default.range(0, cellCount).map(function (colIndex) {
528
+ return createBasicCell(1, colIndex, 'TD');
529
+ });
530
+
531
+ tableData.push(newRow);
532
+ } else {
533
+ added = false;
534
+ }
535
+
536
+ return added;
537
+ }
538
+
539
+ exports.default = {
540
+ createTableData: createTableData,
541
+ createCellIndexData: createCellIndexData,
542
+ createRenderData: createRenderData,
543
+ findElementRowIndex: findElementRowIndex,
544
+ findElementColIndex: findElementColIndex,
545
+ findCellIndex: findCellIndex,
546
+ createBasicCell: createBasicCell,
547
+ findRowMergedLastIndex: findRowMergedLastIndex,
548
+ findColMergedLastIndex: findColMergedLastIndex,
549
+ findElementIndex: findElementIndex,
550
+ stuffCellsIntoIncompleteRow: stuffCellsIntoIncompleteRow,
551
+ addTbodyOrTheadIfNeed: addTbodyOrTheadIfNeed
552
+ };
553
+
554
+ /***/ }),
555
+ /* 4 */
556
+ /***/ (function(module, exports) {
557
+
558
+ if(typeof __WEBPACK_EXTERNAL_MODULE_4__ === 'undefined') {var e = new Error("Cannot find module \"undefined\""); e.code = 'MODULE_NOT_FOUND'; throw e;}
559
+ module.exports = __WEBPACK_EXTERNAL_MODULE_4__;
560
+
561
+ /***/ }),
562
+ /* 5 */
563
+ /***/ (function(module, exports) {
564
+
565
+ if(typeof __WEBPACK_EXTERNAL_MODULE_5__ === 'undefined') {var e = new Error("Cannot find module \"undefined\""); e.code = 'MODULE_NOT_FOUND'; throw e;}
566
+ module.exports = __WEBPACK_EXTERNAL_MODULE_5__;
567
+
568
+ /***/ }),
569
+ /* 6 */
570
+ /***/ (function(module, exports, __webpack_require__) {
571
+
572
+ "use strict";
573
+
574
+
575
+ Object.defineProperty(exports, "__esModule", {
576
+ value: true
577
+ });
578
+
579
+ var _jquery = __webpack_require__(0);
580
+
581
+ var _jquery2 = _interopRequireDefault(_jquery);
582
+
583
+ var _tableDataHandler = __webpack_require__(3);
584
+
585
+ var _tableDataHandler2 = _interopRequireDefault(_tableDataHandler);
586
+
587
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
588
+
589
+ /**
590
+ * Create cell html.
591
+ * @param {object} cell - cell data of table base data
592
+ * @returns {string}
593
+ * @private
594
+ */
595
+ /**
596
+ * @fileoverview Implements tableRenderer
597
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
598
+ */
599
+ function _createCellHtml(cell) {
600
+ var attrs = cell.colspan > 1 ? ' colspan="' + cell.colspan + '"' : '';
601
+ attrs += cell.rowspan > 1 ? ' rowspan="' + cell.rowspan + '"' : '';
602
+ attrs += cell.align ? ' align="' + cell.align + '"' : '';
603
+
604
+ return '<' + cell.nodeName + attrs + '>' + cell.content + '</' + cell.nodeName + '>';
605
+ }
606
+
607
+ /**
608
+ * Create html for thead or tbody.
609
+ * @param {Array.<Array.<object>>} trs - tr list
610
+ * @param {string} wrapperNodeName - wrapper node name like THEAD, TBODY
611
+ * @returns {string}
612
+ * @private
613
+ */
614
+ function _createTheadOrTbodyHtml(trs, wrapperNodeName) {
615
+ var html = '';
616
+
617
+ if (trs.length) {
618
+ html = trs.map(function (tr) {
619
+ var tdHtml = tr.map(_createCellHtml).join('');
620
+
621
+ return '<tr>' + tdHtml + '</tr>';
622
+ }).join('');
623
+ html = '<' + wrapperNodeName + '>' + html + '</' + wrapperNodeName + '>';
624
+ }
625
+
626
+ return html;
627
+ }
628
+
629
+ /**
630
+ * Create table html.
631
+ * @param {Array.<Array.<object>>} renderData - table data for render
632
+ * @returns {string}
633
+ * @private
634
+ */
635
+ function createTableHtml(renderData) {
636
+ var thead = [renderData[0]];
637
+ var tbody = renderData.slice(1);
638
+ var theadHtml = _createTheadOrTbodyHtml(thead, 'THEAD');
639
+ var tbodyHtml = _createTheadOrTbodyHtml(tbody, 'TBODY');
640
+ var className = renderData.className ? ' class="' + renderData.className + '"' : '';
641
+
642
+ return '<table' + className + '>' + (theadHtml + tbodyHtml) + '</renderData>';
643
+ }
644
+
645
+ /**
646
+ * Replace table.
647
+ * @param {jQuery} $table - table jQuery element
648
+ * @param {Array.<Array.<object>>} tableData - table data
649
+ * @returns {jQuery}
650
+ * @ignore
651
+ */
652
+ function replaceTable($table, tableData) {
653
+ var cellIndexData = _tableDataHandler2.default.createCellIndexData(tableData);
654
+ var renderData = _tableDataHandler2.default.createRenderData(tableData, cellIndexData);
655
+ var $newTable = (0, _jquery2.default)(createTableHtml(renderData));
656
+
657
+ $table.replaceWith($newTable);
658
+
659
+ return $newTable;
660
+ }
661
+
662
+ /**
663
+ * Focus to cell.
664
+ * @param {squireext} sq - squire instance
665
+ * @param {range} range - range object
666
+ * @param {HTMLElement} targetCell - cell element for focus
667
+ * @ignore
668
+ */
669
+ function focusToCell(sq, range, targetCell) {
670
+ range.selectNodeContents(targetCell);
671
+ range.collapse(true);
672
+ sq.setSelection(range);
673
+ }
674
+
675
+ exports.default = {
676
+ createTableHtml: createTableHtml,
677
+ replaceTable: replaceTable,
678
+ focusToCell: focusToCell
679
+ };
680
+
681
+ /***/ }),
682
+ /* 7 */
683
+ /***/ (function(module, exports, __webpack_require__) {
684
+
685
+ "use strict";
686
+
687
+
688
+ Object.defineProperty(exports, "__esModule", {
689
+ value: true
690
+ });
691
+
692
+ var _jquery = __webpack_require__(0);
693
+
694
+ var _jquery2 = _interopRequireDefault(_jquery);
695
+
696
+ var _tuiCodeSnippet = __webpack_require__(2);
697
+
698
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
699
+
700
+ var _tableDataHandler = __webpack_require__(3);
701
+
702
+ var _tableDataHandler2 = _interopRequireDefault(_tableDataHandler);
703
+
704
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
705
+
706
+ /**
707
+ * Find unmerged table range.
708
+ * @param {Array.<Array.<object>>} tableData - table data
709
+ * @param {jQuery} $start - start talbe cell jQuery element
710
+ * @param {jQuery} $end - end table cell jQuery element
711
+ * @returns {{
712
+ * start: {rowIndex: number, colIndex: number},
713
+ * end: {rowIndex: number, colIndex: number}
714
+ * }}
715
+ * @private
716
+ */
717
+ function _findUnmergedRange(tableData, $start, $end) {
718
+ var cellIndexData = _tableDataHandler2.default.createCellIndexData(tableData);
719
+ var startCellIndex = _tableDataHandler2.default.findCellIndex(cellIndexData, $start);
720
+ var endCellIndex = _tableDataHandler2.default.findCellIndex(cellIndexData, $end);
721
+ var startRowIndex = void 0,
722
+ endRowIndex = void 0,
723
+ startColIndex = void 0,
724
+ endColIndex = void 0;
725
+
726
+ if (startCellIndex.rowIndex > endCellIndex.rowIndex) {
727
+ startRowIndex = endCellIndex.rowIndex;
728
+ endRowIndex = startCellIndex.rowIndex;
729
+ } else {
730
+ startRowIndex = startCellIndex.rowIndex;
731
+ endRowIndex = endCellIndex.rowIndex;
732
+ }
733
+
734
+ if (startCellIndex.colIndex > endCellIndex.colIndex) {
735
+ startColIndex = endCellIndex.colIndex;
736
+ endColIndex = startCellIndex.colIndex;
737
+ } else {
738
+ startColIndex = startCellIndex.colIndex;
739
+ endColIndex = endCellIndex.colIndex;
740
+ }
741
+
742
+ return {
743
+ start: {
744
+ rowIndex: startRowIndex,
745
+ colIndex: startColIndex
746
+ },
747
+ end: {
748
+ rowIndex: endRowIndex,
749
+ colIndex: endColIndex
750
+ }
751
+ };
752
+ }
753
+
754
+ /**
755
+ * Expand table range by row merge properties like rowspan, rowMergeWith.
756
+ * @param {Array.<Array.<object>>} tableData - table data
757
+ * @param {{
758
+ * start: {rowIndex: number, colIndex: number},
759
+ * end: {rowIndex: number, colIndex: number}
760
+ * }} tableRange - table range
761
+ * @param {string} rangeType - range type like start, end
762
+ * @private
763
+ */
764
+ /**
765
+ * @fileoverview Implements tableRangeHandler
766
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
767
+ */
768
+ function _expandRowMergedRange(tableData, tableRange, rangeType) {
769
+ var rowIndex = tableRange[rangeType].rowIndex;
770
+
771
+ var rowData = tableData[rowIndex];
772
+
773
+ _tuiCodeSnippet2.default.range(tableRange.start.colIndex, tableRange.end.colIndex + 1).forEach(function (colIndex) {
774
+ var cellData = rowData[colIndex];
775
+ var rowMergeWith = cellData.rowMergeWith;
776
+
777
+ var lastRowMergedIndex = -1;
778
+
779
+ if (_tuiCodeSnippet2.default.isExisty(rowMergeWith)) {
780
+ if (rowMergeWith < tableRange.start.rowIndex) {
781
+ tableRange.start.rowIndex = rowMergeWith;
782
+ }
783
+
784
+ lastRowMergedIndex = rowMergeWith + tableData[rowMergeWith][colIndex].rowspan - 1;
785
+ } else if (cellData.rowspan > 1) {
786
+ lastRowMergedIndex = rowIndex + cellData.rowspan - 1;
787
+ }
788
+
789
+ if (lastRowMergedIndex > tableRange.end.rowIndex) {
790
+ tableRange.end.rowIndex = lastRowMergedIndex;
791
+ }
792
+ });
793
+ }
794
+
795
+ /**
796
+ * Expand table range by column merge properties like colspan, colMergeWith.
797
+ * @param {Array.<Array.<object>>} tableData - table data
798
+ * @param {{
799
+ * start: {rowIndex: number, colIndex: number},
800
+ * end: {rowIndex: number, colIndex: number}
801
+ * }} tableRange - table range
802
+ * @param {number} rowIndex - row index
803
+ * @param {number} colIndex - column index
804
+ * @private
805
+ */
806
+ function _expandColMergedRange(tableData, tableRange, rowIndex, colIndex) {
807
+ var rowData = tableData[rowIndex];
808
+ var cellData = rowData[colIndex];
809
+ var colMergeWith = cellData.colMergeWith;
810
+
811
+ var lastColMergedIndex = -1;
812
+
813
+ if (_tuiCodeSnippet2.default.isExisty(colMergeWith)) {
814
+ if (colMergeWith < tableRange.start.colIndex) {
815
+ tableRange.start.colIndex = colMergeWith;
816
+ }
817
+
818
+ lastColMergedIndex = colMergeWith + rowData[colMergeWith].colspan - 1;
819
+ } else if (cellData.colspan > 1) {
820
+ lastColMergedIndex = colIndex + cellData.colspan - 1;
821
+ }
822
+
823
+ if (lastColMergedIndex > tableRange.end.colIndex) {
824
+ tableRange.end.colIndex = lastColMergedIndex;
825
+ }
826
+ }
827
+
828
+ /**
829
+ * Expand table range by merge properties like colspan, rowspan.
830
+ * @param {Array.<Array.<object>>} tableData - table data
831
+ * @param {{
832
+ * start: {rowIndex: number, colIndex: number},
833
+ * end: {rowIndex: number, colIndex: number}
834
+ * }} tableRange - table range
835
+ * @returns {{
836
+ * start: {rowIndex: number, colIndex: number},
837
+ * end: {rowIndex: number, colIndex: number}
838
+ * }}
839
+ * @private
840
+ */
841
+ function _expandMergedRange(tableData, tableRange) {
842
+ var rangeStr = '';
843
+
844
+ while (rangeStr !== JSON.stringify(tableRange)) {
845
+ rangeStr = JSON.stringify(tableRange);
846
+
847
+ _expandRowMergedRange(tableData, tableRange, 'start');
848
+ _expandRowMergedRange(tableData, tableRange, 'end');
849
+
850
+ _tuiCodeSnippet2.default.range(tableRange.start.rowIndex, tableRange.end.rowIndex + 1).forEach(function (rowIndex) {
851
+ _expandColMergedRange(tableData, tableRange, rowIndex, tableRange.start.colIndex);
852
+ _expandColMergedRange(tableData, tableRange, rowIndex, tableRange.end.colIndex);
853
+ });
854
+ }
855
+
856
+ return tableRange;
857
+ }
858
+
859
+ /**
860
+ * Find table range for selection.
861
+ * @param {Array.<Array.<object>>} tableData - table data
862
+ * @param {jQuery} $start - start jQuery element
863
+ * @param {jQuery} $end - end jQuery element
864
+ * @returns {{
865
+ * start: {rowIndex: number, colIndex: number},
866
+ * end: {rowIndex: number, colIndex: number}
867
+ * }}
868
+ * @ignore
869
+ */
870
+ function findSelectionRange(tableData, $start, $end) {
871
+ var unmergedRange = _findUnmergedRange(tableData, $start, $end);
872
+
873
+ return _expandMergedRange(tableData, unmergedRange);
874
+ }
875
+
876
+ /**
877
+ * Get table selection range.
878
+ * @param {Array.<Array.<object>>} tableData - table data
879
+ * @param {jQuery} $selectedCells - selected cells jQuery elements
880
+ * @param {jQuery} $startContainer - start container jQuery element of text range
881
+ * @returns {{
882
+ * start: {rowIndex: number, colIndex: number},
883
+ * end: {rowIndex: number, colIndex: number}
884
+ *}}
885
+ * @ignore
886
+ */
887
+ function getTableSelectionRange(tableData, $selectedCells, $startContainer) {
888
+ var cellIndexData = _tableDataHandler2.default.createCellIndexData(tableData);
889
+ var tableRange = {};
890
+
891
+ if ($selectedCells.length) {
892
+ var startRange = _tableDataHandler2.default.findCellIndex(cellIndexData, $selectedCells.first());
893
+ var endRange = _tuiCodeSnippet2.default.extend({}, startRange);
894
+
895
+ $selectedCells.each(function (index, cell) {
896
+ var cellIndex = _tableDataHandler2.default.findCellIndex(cellIndexData, (0, _jquery2.default)(cell));
897
+ var cellData = tableData[cellIndex.rowIndex][cellIndex.colIndex];
898
+ var lastRowMergedIndex = cellIndex.rowIndex + cellData.rowspan - 1;
899
+ var lastColMergedIndex = cellIndex.colIndex + cellData.colspan - 1;
900
+
901
+ endRange.rowIndex = Math.max(endRange.rowIndex, lastRowMergedIndex);
902
+ endRange.colIndex = Math.max(endRange.colIndex, lastColMergedIndex);
903
+ });
904
+
905
+ tableRange.start = startRange;
906
+ tableRange.end = endRange;
907
+ } else {
908
+ var cellIndex = _tableDataHandler2.default.findCellIndex(cellIndexData, $startContainer);
909
+
910
+ tableRange.start = cellIndex;
911
+ tableRange.end = _tuiCodeSnippet2.default.extend({}, cellIndex);
912
+ }
913
+
914
+ return tableRange;
915
+ }
916
+
917
+ exports.default = {
918
+ findSelectionRange: findSelectionRange,
919
+ getTableSelectionRange: getTableSelectionRange
920
+ };
921
+
922
+ /***/ }),
923
+ /* 8 */,
924
+ /* 9 */,
925
+ /* 10 */,
926
+ /* 11 */,
927
+ /* 12 */,
928
+ /* 13 */,
929
+ /* 14 */,
930
+ /* 15 */,
931
+ /* 16 */,
932
+ /* 17 */,
933
+ /* 18 */,
934
+ /* 19 */,
935
+ /* 20 */,
936
+ /* 21 */,
937
+ /* 22 */,
938
+ /* 23 */,
939
+ /* 24 */,
940
+ /* 25 */,
941
+ /* 26 */,
942
+ /* 27 */,
943
+ /* 28 */,
944
+ /* 29 */,
945
+ /* 30 */,
946
+ /* 31 */,
947
+ /* 32 */,
948
+ /* 33 */,
949
+ /* 34 */,
950
+ /* 35 */,
951
+ /* 36 */,
952
+ /* 37 */,
953
+ /* 38 */,
954
+ /* 39 */,
955
+ /* 40 */,
956
+ /* 41 */,
957
+ /* 42 */,
958
+ /* 43 */,
959
+ /* 44 */,
960
+ /* 45 */,
961
+ /* 46 */,
962
+ /* 47 */,
963
+ /* 48 */,
964
+ /* 49 */
965
+ /***/ (function(module, exports, __webpack_require__) {
966
+
967
+ "use strict";
968
+
969
+
970
+ var _jquery = __webpack_require__(0);
971
+
972
+ var _jquery2 = _interopRequireDefault(_jquery);
973
+
974
+ var _editorProxy = __webpack_require__(1);
975
+
976
+ var _editorProxy2 = _interopRequireDefault(_editorProxy);
977
+
978
+ __webpack_require__(50);
979
+
980
+ var _mergedTableCreator = __webpack_require__(51);
981
+
982
+ var _mergedTableCreator2 = _interopRequireDefault(_mergedTableCreator);
983
+
984
+ var _tableUnmergePreparer = __webpack_require__(52);
985
+
986
+ var _tableUnmergePreparer2 = _interopRequireDefault(_tableUnmergePreparer);
987
+
988
+ var _toMarkRenderer = __webpack_require__(53);
989
+
990
+ var _toMarkRenderer2 = _interopRequireDefault(_toMarkRenderer);
991
+
992
+ var _wwMergedTableManager = __webpack_require__(55);
993
+
994
+ var _wwMergedTableManager2 = _interopRequireDefault(_wwMergedTableManager);
995
+
996
+ var _wwMergedTableSelectionManager = __webpack_require__(56);
997
+
998
+ var _wwMergedTableSelectionManager2 = _interopRequireDefault(_wwMergedTableSelectionManager);
999
+
1000
+ var _mergedTableAddRow = __webpack_require__(57);
1001
+
1002
+ var _mergedTableAddRow2 = _interopRequireDefault(_mergedTableAddRow);
1003
+
1004
+ var _mergedTableAddCol = __webpack_require__(58);
1005
+
1006
+ var _mergedTableAddCol2 = _interopRequireDefault(_mergedTableAddCol);
1007
+
1008
+ var _mergedTableRemoveRow = __webpack_require__(59);
1009
+
1010
+ var _mergedTableRemoveRow2 = _interopRequireDefault(_mergedTableRemoveRow);
1011
+
1012
+ var _mergedTableRemoveCol = __webpack_require__(60);
1013
+
1014
+ var _mergedTableRemoveCol2 = _interopRequireDefault(_mergedTableRemoveCol);
1015
+
1016
+ var _mergedTableAlignCol = __webpack_require__(61);
1017
+
1018
+ var _mergedTableAlignCol2 = _interopRequireDefault(_mergedTableAlignCol);
1019
+
1020
+ var _mergeCell = __webpack_require__(62);
1021
+
1022
+ var _mergeCell2 = _interopRequireDefault(_mergeCell);
1023
+
1024
+ var _unmergeCell = __webpack_require__(63);
1025
+
1026
+ var _unmergeCell2 = _interopRequireDefault(_unmergeCell);
1027
+
1028
+ var _mergedTableUI = __webpack_require__(64);
1029
+
1030
+ var _mergedTableUI2 = _interopRequireDefault(_mergedTableUI);
1031
+
1032
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1033
+
1034
+ /**
1035
+ * table extension
1036
+ * @param {Editor} editor - editor instance
1037
+ * @ignore
1038
+ */
1039
+ /**
1040
+ * @fileoverview Implements table extension
1041
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
1042
+ */
1043
+ function tableExtension(editor) {
1044
+ var eventManager = editor.eventManager;
1045
+
1046
+
1047
+ editor.toMarkOptions = editor.toMarkOptions || {};
1048
+ editor.toMarkOptions.renderer = _toMarkRenderer2.default;
1049
+ _bindEvents(eventManager);
1050
+
1051
+ if (editor.isViewer()) {
1052
+ return;
1053
+ }
1054
+
1055
+ var wwComponentManager = editor.wwEditor.componentManager;
1056
+ var popupTableUtils = editor._ui.popupTableUtils;
1057
+
1058
+
1059
+ _addCommands(editor);
1060
+ _changeWysiwygManagers(wwComponentManager);
1061
+
1062
+ if (editor._ui.popupTableUtils) {
1063
+ _mergedTableUI2.default.updateContextMenu(popupTableUtils, eventManager, wwComponentManager.getManager('tableSelection'));
1064
+ }
1065
+ }
1066
+
1067
+ /**
1068
+ * Add commands.
1069
+ * @param {object} editor - editor instance
1070
+ * @private
1071
+ */
1072
+ function _addCommands(editor) {
1073
+ editor.addCommand(_mergeCell2.default);
1074
+ editor.addCommand(_unmergeCell2.default);
1075
+ }
1076
+
1077
+ /**
1078
+ * Change wysiwyg component managers.
1079
+ * @param {object} wwComponentManager - componentMananger instance
1080
+ * @private
1081
+ */
1082
+ function _changeWysiwygManagers(wwComponentManager) {
1083
+ wwComponentManager.removeManager('table');
1084
+ wwComponentManager.removeManager('tableSelection');
1085
+
1086
+ wwComponentManager.addManager(_wwMergedTableManager2.default);
1087
+ wwComponentManager.addManager(_wwMergedTableSelectionManager2.default);
1088
+ }
1089
+
1090
+ /**
1091
+ * Change html by onChangeTable function.
1092
+ * @param {string} html - original html
1093
+ * @param {function} onChangeTable - function for changing html
1094
+ * @returns {string}
1095
+ * @private
1096
+ */
1097
+ function _changeHtml(html, onChangeTable) {
1098
+ var $tempDiv = (0, _jquery2.default)('<div>' + html + '</div>');
1099
+ var $tables = $tempDiv.find('table');
1100
+
1101
+ if ($tables.length) {
1102
+ $tables.get().forEach(function (tableElement) {
1103
+ var changedTableElement = onChangeTable(tableElement);
1104
+
1105
+ (0, _jquery2.default)(tableElement).replaceWith(changedTableElement);
1106
+ });
1107
+
1108
+ html = $tempDiv.html();
1109
+ }
1110
+
1111
+ return html;
1112
+ }
1113
+
1114
+ /**
1115
+ * Snatch wysiwyg command.
1116
+ * @param {{command: object}} commandWrapper - wysiwyg command wrapper
1117
+ * @private
1118
+ */
1119
+ function _snatchWysiwygCommand(commandWrapper) {
1120
+ var command = commandWrapper.command;
1121
+
1122
+
1123
+ if (!command.isWWType()) {
1124
+ return;
1125
+ }
1126
+
1127
+ switch (command.getName()) {
1128
+ case 'AddRow':
1129
+ commandWrapper.command = _mergedTableAddRow2.default;
1130
+ break;
1131
+ case 'AddCol':
1132
+ commandWrapper.command = _mergedTableAddCol2.default;
1133
+ break;
1134
+ case 'RemoveRow':
1135
+ commandWrapper.command = _mergedTableRemoveRow2.default;
1136
+ break;
1137
+ case 'RemoveCol':
1138
+ commandWrapper.command = _mergedTableRemoveCol2.default;
1139
+ break;
1140
+ case 'AlignCol':
1141
+ commandWrapper.command = _mergedTableAlignCol2.default;
1142
+ break;
1143
+ default:
1144
+ }
1145
+ }
1146
+
1147
+ /**
1148
+ * Bind events.
1149
+ * @param {object} eventManager - eventManager instance
1150
+ * @private
1151
+ */
1152
+ function _bindEvents(eventManager) {
1153
+ eventManager.listen('convertorAfterMarkdownToHtmlConverted', function (html) {
1154
+ return _changeHtml(html, _mergedTableCreator2.default);
1155
+ });
1156
+ eventManager.listen('convertorBeforeHtmlToMarkdownConverted', function (html) {
1157
+ return _changeHtml(html, _tableUnmergePreparer2.default);
1158
+ });
1159
+ eventManager.listen('addCommandBefore', _snatchWysiwygCommand);
1160
+ }
1161
+
1162
+ _editorProxy2.default.defineExtension('table', tableExtension);
1163
+
1164
+ /***/ }),
1165
+ /* 50 */
1166
+ /***/ (function(module, exports, __webpack_require__) {
1167
+
1168
+ "use strict";
1169
+
1170
+
1171
+ var _editorProxy = __webpack_require__(1);
1172
+
1173
+ var _editorProxy2 = _interopRequireDefault(_editorProxy);
1174
+
1175
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1176
+
1177
+ var i18n = _editorProxy2.default.i18n; /**
1178
+ * @fileoverview i18n for table extension
1179
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
1180
+ */
1181
+
1182
+ if (i18n) {
1183
+ i18n.setLanguage(['ko', 'ko_KR'], {
1184
+ 'Merge cells': '셀 병합',
1185
+ 'Unmerge cells': '셀 병합해제',
1186
+ 'Cannot change part of merged cell': '병합 된 셀의 일부를 변경할 수 없습니다.',
1187
+ 'Cannot paste row merged cells into the table header': '테이블 헤더에는 행 병합된 셀을 붙여넣을 수 없습니다.'
1188
+ });
1189
+
1190
+ i18n.setLanguage(['en', 'en_US'], {
1191
+ 'Merge cells': 'Merge cells',
1192
+ 'Unmerge cells': 'Unmerge cells',
1193
+ 'Cannot change part of merged cell': 'Cannot change part of merged cell.',
1194
+ 'Cannot paste row merged cells into the table header': 'Cannot paste row merged cells into the table header.'
1195
+ });
1196
+
1197
+ i18n.setLanguage(['es', 'es_ES'], {
1198
+ 'Merge cells': 'Combinar celdas',
1199
+ 'Unmerge cells': 'Separar celdas',
1200
+ 'Cannot change part of merged cell': 'No se puede cambiar parte de una celda combinada.',
1201
+ 'Cannot paste row merged cells into the table header': 'No se pueden pegar celdas combinadas en el encabezado de tabla.'
1202
+ });
1203
+
1204
+ i18n.setLanguage(['ja', 'ja_JP'], {
1205
+ 'Merge cells': 'セルの結合',
1206
+ 'Unmerge cells': 'セルの結合を解除',
1207
+ 'Cannot change part of merged cell': '結合されたセルの一部を変更することはできません。',
1208
+ 'Cannot paste row merged cells into the table header': '行にマージされたセルをヘッダーに貼り付けることはできません。'
1209
+ });
1210
+
1211
+ i18n.setLanguage(['nl', 'nl_NL'], {
1212
+ 'Merge cells': 'cellen samenvoegen',
1213
+ 'Unmerge cells': 'Samenvoegen cellen ongedaan maken',
1214
+ 'Cannot change part of merged cell': 'Kan geen deel uit van samengevoegde cel te veranderen.',
1215
+ 'Cannot paste row merged cells into the table header': 'Kan niet plakken rij samengevoegde cellen in de koptekst. '
1216
+ });
1217
+
1218
+ i18n.setLanguage(['zh', 'zh_CN'], {
1219
+ 'Merge cells': '合并单元格',
1220
+ 'Unmerge cells': '取消合并单元格',
1221
+ 'Cannot change part of merged cell': '无法更改合并单元格的一部分。',
1222
+ 'Cannot paste row merged cells into the table header': '无法将行合并单元格粘贴到标题中。'
1223
+ });
1224
+
1225
+ i18n.setLanguage(['de', 'de_DE'], {
1226
+ 'Merge cells': 'Zellen zusammenführen',
1227
+ 'Unmerge cells': 'Zusammenführen rückgängig machen',
1228
+ 'Cannot change part of merged cell': 'Der Teil der verbundenen Zelle kann nicht geändert werden.',
1229
+ 'Cannot paste row merged cells into the table header': 'Die Zeile der verbundenen Zellen kann nicht in die Kopfzeile eingefügt werden.'
1230
+ });
1231
+
1232
+ i18n.setLanguage(['ru', 'ru_RU'], {
1233
+ 'Merge cells': 'Объединить ячейки',
1234
+ 'Unmerge cells': 'Разъединить ячейки',
1235
+ 'Cannot change part of merged cell': 'Вы не можете изменять часть комбинированной ячейки.',
1236
+ 'Cannot paste row merged cells into the table header': 'Вы не можете вставлять объединенные ячейки в заголовок таблицы.'
1237
+ });
1238
+
1239
+ i18n.setLanguage(['fr', 'fr_FR'], {
1240
+ 'Merge cells': 'Fusionner les cellules',
1241
+ 'Unmerge cells': 'Séparer les cellules',
1242
+ 'Cannot change part of merged cell': 'Impossible de modifier une partie de la cellule fusionnée.',
1243
+ 'Cannot paste row merged cells into the table header': 'Impossible de coller les cellules fusionnées dans l\'en-tête du tableau.'
1244
+ });
1245
+ }
1246
+
1247
+ /***/ }),
1248
+ /* 51 */
1249
+ /***/ (function(module, exports, __webpack_require__) {
1250
+
1251
+ "use strict";
1252
+
1253
+
1254
+ Object.defineProperty(exports, "__esModule", {
1255
+ value: true
1256
+ });
1257
+ exports._extractPropertiesForMerge = _extractPropertiesForMerge;
1258
+ exports._parseTableCell = _parseTableCell;
1259
+ exports._createTableObjectFrom$Table = _createTableObjectFrom$Table;
1260
+ exports._divideTrs = _divideTrs;
1261
+ exports._mergeByColspan = _mergeByColspan;
1262
+ exports._getRemovalTdCountsByRowspan = _getRemovalTdCountsByRowspan;
1263
+ exports._mergeByRowspan = _mergeByRowspan;
1264
+ exports.default = createMergedTable;
1265
+
1266
+ var _jquery = __webpack_require__(0);
1267
+
1268
+ var _jquery2 = _interopRequireDefault(_jquery);
1269
+
1270
+ var _tuiCodeSnippet = __webpack_require__(2);
1271
+
1272
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
1273
+
1274
+ var _tableRenderer = __webpack_require__(6);
1275
+
1276
+ var _tableRenderer2 = _interopRequireDefault(_tableRenderer);
1277
+
1278
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1279
+
1280
+ /**
1281
+ * Extract properties for merge.
1282
+ * @param {string} value - value
1283
+ * @param {string} type - merge type like colspan, rowspan
1284
+ * @param {string} oppossitType - oppossit merge type
1285
+ * if merge type is colspan, opossit merge type is rowspan
1286
+ * @returns {Array.<number|string>} - returns merge count and value
1287
+ * @private
1288
+ */
1289
+ function _extractPropertiesForMerge(value, type, oppossitType) {
1290
+ var regex = new RegExp('^((?:' + oppossitType + '=[0-9]+:)?)' + type + '=([0-9]+):(.*)');
1291
+ var regexResult = regex.exec(value);
1292
+ var mergeCount = 1;
1293
+
1294
+ if (regexResult) {
1295
+ mergeCount = parseInt(regexResult[2], 10);
1296
+ value = regexResult[1] + regexResult[3];
1297
+ }
1298
+
1299
+ return [mergeCount, value];
1300
+ }
1301
+
1302
+ /**
1303
+ * Parse table cell element like td, th.
1304
+ * @param {HTMLElement} cell - table cell element like td, th
1305
+ * @returns {{
1306
+ * nodeName: string,
1307
+ * colspan: number,
1308
+ * rowspan: number,
1309
+ * content: string,
1310
+ * align: string
1311
+ * }}
1312
+ * @private
1313
+ */
1314
+ /**
1315
+ * @fileoverview Implements mergedTableCreator.
1316
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
1317
+ */
1318
+ function _parseTableCell(cell) {
1319
+ var nodeName = cell.nodeName;
1320
+
1321
+ var align = cell.align || '';
1322
+ var content = cell.innerHTML.trim();
1323
+ var colspan = null;
1324
+ var rowspan = null;
1325
+
1326
+ var _extractPropertiesFor = _extractPropertiesForMerge(content, '@cols', '@rows');
1327
+
1328
+ colspan = _extractPropertiesFor[0];
1329
+ content = _extractPropertiesFor[1];
1330
+
1331
+ var _extractPropertiesFor2 = _extractPropertiesForMerge(content, '@rows', '@cols');
1332
+
1333
+ rowspan = _extractPropertiesFor2[0];
1334
+ content = _extractPropertiesFor2[1];
1335
+
1336
+
1337
+ return {
1338
+ nodeName: nodeName,
1339
+ colspan: colspan,
1340
+ rowspan: rowspan,
1341
+ content: content,
1342
+ align: align
1343
+ };
1344
+ }
1345
+
1346
+ /**
1347
+ * Create table object from jQuery table.
1348
+ * @param {jQuery} $table - jQuery table
1349
+ * @returns {Array.<Array.<object>>}
1350
+ * @private
1351
+ */
1352
+ function _createTableObjectFrom$Table($table) {
1353
+ return $table.find('tr').get().map(function (tr) {
1354
+ return (0, _jquery2.default)(tr).find('td, th').get().map(_parseTableCell);
1355
+ });
1356
+ }
1357
+
1358
+ /**
1359
+ * Find index by onFind function.
1360
+ * @param {Array} arr - target array
1361
+ * @param {function} onFind - find function
1362
+ * @returns {number}
1363
+ * @private
1364
+ */
1365
+ function _findIndex(arr, onFind) {
1366
+ var foundIndex = -1;
1367
+
1368
+ _tuiCodeSnippet2.default.forEach(arr, function (item, index) {
1369
+ var nextFind = true;
1370
+ if (onFind(item, index)) {
1371
+ foundIndex = index;
1372
+ nextFind = false;
1373
+ }
1374
+
1375
+ return nextFind;
1376
+ });
1377
+
1378
+ return foundIndex;
1379
+ }
1380
+
1381
+ /**
1382
+ * Separate the trs according to the type of parent, such as thead and tbody.
1383
+ * @param {Array.<Array.<object>>} trs - tr list
1384
+ * @returns {Array.<Array.<Array.<object>>>} - returns thead and tbody
1385
+ * @private
1386
+ */
1387
+ function _divideTrs(trs) {
1388
+ var tbodyStartIndex = _findIndex(trs, function (tr) {
1389
+ return tr[0].nodeName === 'TD';
1390
+ });
1391
+
1392
+ return [trs.slice(0, tbodyStartIndex), trs.slice(tbodyStartIndex)];
1393
+ }
1394
+
1395
+ /**
1396
+ * Merge by colspan.
1397
+ * @param {Array.<Array.<object>>} trs - tr list
1398
+ * @private
1399
+ */
1400
+ function _mergeByColspan(trs) {
1401
+ trs.forEach(function (tr) {
1402
+ var tdCount = tr.length;
1403
+ var removalCount = 0;
1404
+
1405
+ tr.forEach(function (td) {
1406
+ removalCount += td.colspan - 1;
1407
+ });
1408
+
1409
+ tr.splice(tdCount - removalCount);
1410
+ });
1411
+ }
1412
+
1413
+ /**
1414
+ * Get removal td counts by rowspan.
1415
+ * @param {Array.<Array.<object>>} trs - tr list
1416
+ * @returns {number}
1417
+ * @private
1418
+ */
1419
+ function _getRemovalTdCountsByRowspan(trs) {
1420
+ var trIndexes = trs.map(function (tr, index) {
1421
+ return index;
1422
+ });
1423
+ var removalCounts = trIndexes.map(function () {
1424
+ return 0;
1425
+ });
1426
+
1427
+ trs.forEach(function (tr, trIndex) {
1428
+ var rowspanTds = tr.filter(function (td) {
1429
+ return td.rowspan > 1;
1430
+ });
1431
+ var startTrIndexForRemoval = trIndex + 1;
1432
+
1433
+ rowspanTds.forEach(function (td) {
1434
+ var removeCount = td.colspan;
1435
+ var endTrIndexForRemoval = startTrIndexForRemoval + (td.rowspan - 1);
1436
+
1437
+ trIndexes.slice(startTrIndexForRemoval, endTrIndexForRemoval).forEach(function (removeIndex) {
1438
+ removalCounts[removeIndex] += removeCount;
1439
+ });
1440
+ });
1441
+ });
1442
+
1443
+ return removalCounts;
1444
+ }
1445
+
1446
+ /**
1447
+ * Merge by rowspan.
1448
+ * @param {Array.<Array.<object>>} trs - tr list
1449
+ * @private
1450
+ */
1451
+ function _mergeByRowspan(trs) {
1452
+ var removalCounts = _getRemovalTdCountsByRowspan(trs);
1453
+
1454
+ trs.forEach(function (tr, trIndex) {
1455
+ tr.splice(tr.length - removalCounts[trIndex]);
1456
+ });
1457
+ }
1458
+
1459
+ /**
1460
+ * Create merged table by @cols, @rows value in td innerHTML.
1461
+ * @param {HTMLElement} tableElement - unmerged table
1462
+ * @returns {HTMLElement}
1463
+ */
1464
+ function createMergedTable(tableElement) {
1465
+ var table = _createTableObjectFrom$Table((0, _jquery2.default)(tableElement));
1466
+
1467
+ var _divideTrs2 = _divideTrs(table),
1468
+ thead = _divideTrs2[0],
1469
+ tbody = _divideTrs2[1];
1470
+
1471
+ _mergeByColspan(thead);
1472
+ _mergeByColspan(tbody);
1473
+ _mergeByRowspan(tbody);
1474
+
1475
+ return (0, _jquery2.default)(_tableRenderer2.default.createTableHtml(table))[0];
1476
+ }
1477
+
1478
+ /***/ }),
1479
+ /* 52 */
1480
+ /***/ (function(module, exports, __webpack_require__) {
1481
+
1482
+ "use strict";
1483
+
1484
+
1485
+ Object.defineProperty(exports, "__esModule", {
1486
+ value: true
1487
+ });
1488
+ exports._prependMergeSyntaxToContent = _prependMergeSyntaxToContent;
1489
+ exports.default = prepareTableUnmerge;
1490
+
1491
+ var _jquery = __webpack_require__(0);
1492
+
1493
+ var _jquery2 = _interopRequireDefault(_jquery);
1494
+
1495
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1496
+
1497
+ /**
1498
+ * Prepend merge syntax to content.
1499
+ * @param {HTMLElement} cell - td or th
1500
+ * @private
1501
+ */
1502
+ function _prependMergeSyntaxToContent(cell) {
1503
+ var $cell = (0, _jquery2.default)(cell);
1504
+ var colspan = $cell.attr('colspan') || '';
1505
+ var rowspan = $cell.attr('rowspan') || '';
1506
+ var content = $cell.html();
1507
+
1508
+ if (colspan) {
1509
+ content = '@cols=' + colspan + ':' + content;
1510
+ }
1511
+
1512
+ if (rowspan) {
1513
+ content = '@rows=' + rowspan + ':' + content;
1514
+ }
1515
+
1516
+ if (content) {
1517
+ $cell.html(content);
1518
+ }
1519
+ }
1520
+
1521
+ /**
1522
+ * Prepare table unmerge.
1523
+ * @param {HTMLElement} tableElement - table element
1524
+ * @returns {HTMLElement}
1525
+ */
1526
+ /**
1527
+ * @fileoverview Implements tableUnmergePreparer.
1528
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
1529
+ */
1530
+ function prepareTableUnmerge(tableElement) {
1531
+ (0, _jquery2.default)(tableElement).find('td, th').get().forEach(_prependMergeSyntaxToContent);
1532
+
1533
+ return tableElement;
1534
+ }
1535
+
1536
+ /***/ }),
1537
+ /* 53 */
1538
+ /***/ (function(module, exports, __webpack_require__) {
1539
+
1540
+ "use strict";
1541
+
1542
+
1543
+ Object.defineProperty(exports, "__esModule", {
1544
+ value: true
1545
+ });
1546
+ exports._getAdditionalThCount = _getAdditionalThCount;
1547
+ exports._createTheadMarkdown = _createTheadMarkdown;
1548
+
1549
+ var _jquery = __webpack_require__(0);
1550
+
1551
+ var _jquery2 = _interopRequireDefault(_jquery);
1552
+
1553
+ var _tuiCodeSnippet = __webpack_require__(2);
1554
+
1555
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
1556
+
1557
+ var _toMark = __webpack_require__(54);
1558
+
1559
+ var _toMark2 = _interopRequireDefault(_toMark);
1560
+
1561
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1562
+
1563
+ var RX_COLS = /@cols=[0-9]+:/g;
1564
+
1565
+ /**
1566
+ * Create repeat string.
1567
+ * @param {string} str - target string
1568
+ * @param {number} count - count
1569
+ * @returns {string}
1570
+ * @private
1571
+ */
1572
+ /**
1573
+ * @fileoverview Implements toMarkRendererCreator.
1574
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
1575
+ */
1576
+ function _createRepeatString(str, count) {
1577
+ return _tuiCodeSnippet2.default.range(0, count).map(function () {
1578
+ return str;
1579
+ }).join('');
1580
+ }
1581
+
1582
+ /**
1583
+ * Make table head align text.
1584
+ * Copy from https://github.com/nhnent/to-mark/blob/develop/src/renderer.gfm.js
1585
+ * @param {HTMLElement} thElement - Table head cell element
1586
+ * @returns {string}
1587
+ * @private
1588
+ */
1589
+ function _makeTableHeadAlignText(thElement) {
1590
+ var align = thElement.align;
1591
+
1592
+ var textContent = (thElement.textContent || thElement.innerText).replace(RX_COLS, '');
1593
+ var textLength = textContent.length;
1594
+ var leftAlignValue = '';
1595
+ var rightAlignValue = '';
1596
+
1597
+ if (align) {
1598
+ if (align === 'left') {
1599
+ leftAlignValue = ':';
1600
+ textLength -= 1;
1601
+ } else if (align === 'right') {
1602
+ rightAlignValue = ':';
1603
+ textLength -= 1;
1604
+ } else if (align === 'center') {
1605
+ rightAlignValue = ':';
1606
+ leftAlignValue = ':';
1607
+ textLength -= 2;
1608
+ }
1609
+ }
1610
+
1611
+ textLength = Math.max(textLength, 3);
1612
+
1613
+ return leftAlignValue + _createRepeatString('-', textLength) + rightAlignValue;
1614
+ }
1615
+
1616
+ /**
1617
+ * Get additional th element count.
1618
+ * @param {Array.<HTMLElement>} ths - th element list
1619
+ * @private
1620
+ * @returns {Number}
1621
+ */
1622
+ function _getAdditionalThCount(ths) {
1623
+ var additionalThCount = 0;
1624
+
1625
+ ths.filter(function (th) {
1626
+ return (0, _jquery2.default)(th).attr('colspan');
1627
+ }).forEach(function (th) {
1628
+ additionalThCount += parseInt((0, _jquery2.default)(th).attr('colspan'), 10) - 1;
1629
+ });
1630
+
1631
+ return additionalThCount;
1632
+ }
1633
+
1634
+ /**
1635
+ * Create thead markdown.
1636
+ * @param {HTMLElement} theadElement - theadElement element
1637
+ * @param {string} theadContentMarkdown - thead markdown content
1638
+ * @returns {string}
1639
+ * @private
1640
+ */
1641
+ function _createTheadMarkdown(theadElement, theadContentMarkdown) {
1642
+ var ths = (0, _jquery2.default)(theadElement).find('th').get();
1643
+ var align = ths.map(function (th) {
1644
+ return ' ' + _makeTableHeadAlignText(th) + ' |';
1645
+ }).join('');
1646
+
1647
+ align += _createRepeatString(' --- |', _getAdditionalThCount(ths));
1648
+
1649
+ return theadContentMarkdown ? theadContentMarkdown + '|' + align + '\n' : '';
1650
+ }
1651
+
1652
+ exports.default = _toMark2.default.Renderer.factory(_toMark2.default.gfmRenderer, {
1653
+ 'THEAD': _createTheadMarkdown
1654
+ });
1655
+
1656
+ /***/ }),
1657
+ /* 54 */
1658
+ /***/ (function(module, exports) {
1659
+
1660
+ module.exports = __WEBPACK_EXTERNAL_MODULE_54__;
1661
+
1662
+ /***/ }),
1663
+ /* 55 */
1664
+ /***/ (function(module, exports, __webpack_require__) {
1665
+
1666
+ "use strict";
1667
+
1668
+
1669
+ Object.defineProperty(exports, "__esModule", {
1670
+ value: true
1671
+ });
1672
+
1673
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
1674
+
1675
+ var _jquery = __webpack_require__(0);
1676
+
1677
+ var _jquery2 = _interopRequireDefault(_jquery);
1678
+
1679
+ var _tuiCodeSnippet = __webpack_require__(2);
1680
+
1681
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
1682
+
1683
+ var _editorProxy = __webpack_require__(1);
1684
+
1685
+ var _editorProxy2 = _interopRequireDefault(_editorProxy);
1686
+
1687
+ var _tableDataHandler = __webpack_require__(3);
1688
+
1689
+ var _tableDataHandler2 = _interopRequireDefault(_tableDataHandler);
1690
+
1691
+ var _tableRenderer = __webpack_require__(6);
1692
+
1693
+ var _tableRenderer2 = _interopRequireDefault(_tableRenderer);
1694
+
1695
+ var _tableRangeHandler = __webpack_require__(7);
1696
+
1697
+ var _tableRangeHandler2 = _interopRequireDefault(_tableRangeHandler);
1698
+
1699
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1700
+
1701
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1702
+
1703
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
1704
+
1705
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**
1706
+ * @fileoverview Implements wysiwyg merged table manager
1707
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
1708
+ */
1709
+
1710
+
1711
+ var WwTableManager = _editorProxy2.default.WwTableManager,
1712
+ i18n = _editorProxy2.default.i18n;
1713
+
1714
+ var PASTE_TABLE_BOOKMARK = 'tui-paste-table-bookmark';
1715
+ var PASTE_TABLE_CELL_BOOKMARK = 'tui-paste-table-cell-bookmark';
1716
+
1717
+ /**
1718
+ * Class WwMergedTableManager
1719
+ * @extends {WwTableManager}
1720
+ */
1721
+
1722
+ var WwMergedTableManager = function (_WwTableManager) {
1723
+ _inherits(WwMergedTableManager, _WwTableManager);
1724
+
1725
+ function WwMergedTableManager() {
1726
+ _classCallCheck(this, WwMergedTableManager);
1727
+
1728
+ return _possibleConstructorReturn(this, (WwMergedTableManager.__proto__ || Object.getPrototypeOf(WwMergedTableManager)).apply(this, arguments));
1729
+ }
1730
+
1731
+ _createClass(WwMergedTableManager, [{
1732
+ key: '_updateCopyDataMergeWith',
1733
+
1734
+ /**
1735
+ * Update mergeWidth property like rowMergeWith, colMergeWith of table data for copy.
1736
+ * @param {Array.<Array.<object>>} copyTableData - table data for copy
1737
+ * @param {{rowIndex: number, colIndex: number}} startRange - start range
1738
+ * @private
1739
+ */
1740
+ value: function _updateCopyDataMergeWith(copyTableData, startRange) {
1741
+ copyTableData.forEach(function (rowData) {
1742
+ rowData.forEach(function (cellData) {
1743
+ if (_tuiCodeSnippet2.default.isExisty(cellData.rowMergeWith)) {
1744
+ cellData.rowMergeWith -= startRange.rowIndex;
1745
+ }
1746
+
1747
+ if (_tuiCodeSnippet2.default.isExisty(cellData.colMergeWith)) {
1748
+ cellData.colMergeWith -= startRange.colIndex;
1749
+ }
1750
+ });
1751
+ });
1752
+ }
1753
+
1754
+ /**
1755
+ * Create table data for copy.
1756
+ * @param {Array.<Array.<object>>} tableData - table data
1757
+ * @param {{rowIndex: number, colIndex: number}} startRange - start range
1758
+ * @param {{rowIndex: number, colIndex: number}} endRange - end range
1759
+ * @returns {Array.<Array.<object>>}
1760
+ * @private
1761
+ */
1762
+
1763
+ }, {
1764
+ key: '_createCopyTableData',
1765
+ value: function _createCopyTableData(tableData, startRange, endRange) {
1766
+ var copyTableData = tableData.slice(startRange.rowIndex, endRange.rowIndex + 1);
1767
+
1768
+ copyTableData = copyTableData.map(function (rowData) {
1769
+ return rowData.slice(startRange.colIndex, endRange.colIndex + 1);
1770
+ });
1771
+
1772
+ this._updateCopyDataMergeWith(copyTableData, startRange);
1773
+
1774
+ return copyTableData;
1775
+ }
1776
+
1777
+ /**
1778
+ * Update table html of clipboard data, if has selected cells.
1779
+ * @param {jQuery} $clipboardContainer - jQuery element
1780
+ * @override
1781
+ */
1782
+
1783
+ }, {
1784
+ key: 'updateTableHtmlOfClipboardIfNeed',
1785
+ value: function updateTableHtmlOfClipboardIfNeed($clipboardContainer) {
1786
+ var $selectedCells = this.wwe.componentManager.getManager('tableSelection').getSelectedCells();
1787
+
1788
+ if ($selectedCells.length) {
1789
+ var tableData = _tableDataHandler2.default.createTableData((0, _jquery2.default)($selectedCells[0]).closest('TABLE'));
1790
+
1791
+ var _tableRangeHandler$ge = _tableRangeHandler2.default.getTableSelectionRange(tableData, $selectedCells),
1792
+ startRange = _tableRangeHandler$ge.start,
1793
+ endRange = _tableRangeHandler$ge.end;
1794
+
1795
+ var copyTableData = this._createCopyTableData(tableData, startRange, endRange);
1796
+ var cellIndexData = _tableDataHandler2.default.createCellIndexData(copyTableData);
1797
+ var renderData = _tableDataHandler2.default.createRenderData(copyTableData, cellIndexData);
1798
+
1799
+ $clipboardContainer.html(_tableRenderer2.default.createTableHtml(renderData));
1800
+ }
1801
+ }
1802
+
1803
+ /**
1804
+ * Prepare to table cell stuffing
1805
+ * @param {Array.<Array.<object>>} tableData - table data
1806
+ * @returns {{maximumCellLength: *, needTableCellStuffingAid: boolean}}
1807
+ * @override
1808
+ */
1809
+
1810
+ }, {
1811
+ key: 'prepareToTableCellStuffing',
1812
+ value: function prepareToTableCellStuffing(tableData) {
1813
+ var maximumCellLength = tableData[0].length;
1814
+ var needTableCellStuffingAid = false;
1815
+
1816
+ tableData.slice(1).forEach(function (rowData) {
1817
+ var cellCount = rowData.length;
1818
+
1819
+ if (maximumCellLength !== cellCount) {
1820
+ needTableCellStuffingAid = true;
1821
+
1822
+ if (maximumCellLength < cellCount) {
1823
+ maximumCellLength = cellCount;
1824
+ }
1825
+ }
1826
+ });
1827
+
1828
+ return {
1829
+ maximumCellLength: maximumCellLength,
1830
+ needTableCellStuffingAid: needTableCellStuffingAid
1831
+ };
1832
+ }
1833
+
1834
+ /**
1835
+ * Append table cells.
1836
+ * @param {HTMLElement} node Table element
1837
+ * @override
1838
+ */
1839
+
1840
+ }, {
1841
+ key: 'tableCellAppendAidForTableElement',
1842
+ value: function tableCellAppendAidForTableElement(node) {
1843
+ var $table = (0, _jquery2.default)(node);
1844
+ var tableData = _tableDataHandler2.default.createTableData($table);
1845
+ var added = _tableDataHandler2.default.addTbodyOrTheadIfNeed(tableData);
1846
+ var tableAidInformation = this.prepareToTableCellStuffing(tableData);
1847
+ var needTableCellStuffingAid = tableAidInformation.needTableCellStuffingAid;
1848
+
1849
+
1850
+ if (needTableCellStuffingAid) {
1851
+ _tableDataHandler2.default.stuffCellsIntoIncompleteRow(tableData, tableAidInformation.maximumCellLength);
1852
+ }
1853
+
1854
+ if (added || needTableCellStuffingAid) {
1855
+ _tableRenderer2.default.replaceTable($table, tableData);
1856
+ }
1857
+ }
1858
+
1859
+ /**
1860
+ * Find start cell.
1861
+ * @param {jQuery} $selectedCells - jQuery elements like td, th
1862
+ * @returns {HTMLElement}
1863
+ * @private
1864
+ */
1865
+
1866
+ }, {
1867
+ key: '_findStartCell',
1868
+ value: function _findStartCell($selectedCells) {
1869
+ var startCell = void 0;
1870
+
1871
+ if ($selectedCells.length === 1) {
1872
+ startCell = $selectedCells.get(0);
1873
+ } else {
1874
+ startCell = this.wwe.getEditor().getSelection().startContainer;
1875
+ }
1876
+
1877
+ return startCell;
1878
+ }
1879
+
1880
+ /**
1881
+ * Find start cell index.
1882
+ * @param {Array.<Array.<object>>} tableData - table data
1883
+ * @param {jQuery} $startCell - start jQuery element like td, th
1884
+ * @returns {{rowIndex: number, colIndex: number}}
1885
+ * @private
1886
+ */
1887
+
1888
+ }, {
1889
+ key: '_findStartCellIndex',
1890
+ value: function _findStartCellIndex(tableData, $startCell) {
1891
+ var cellIndexData = _tableDataHandler2.default.createCellIndexData(tableData);
1892
+
1893
+ return _tableDataHandler2.default.findCellIndex(cellIndexData, $startCell);
1894
+ }
1895
+
1896
+ /**
1897
+ * Whether has row merged header in clipboardTableData.
1898
+ * @param {Array.<Array.<object>>} clipboardTableData - table data of clipboard
1899
+ * @param {Array.<Array.<object>>} tableData - table data
1900
+ * @param {{rowIndex: number, colIndex: number}} startCellIndex - start cell index
1901
+ * @returns {boolean}
1902
+ * @private
1903
+ */
1904
+
1905
+ }, {
1906
+ key: '_hasRowMergedHeader',
1907
+ value: function _hasRowMergedHeader(clipboardTableData, tableData, startCellIndex) {
1908
+ var isHeader = tableData[startCellIndex.rowIndex][startCellIndex.colIndex].nodeName === 'TH';
1909
+ var hasHeaderMerge = any(clipboardTableData[0], function (cellData) {
1910
+ return cellData.rowspan && cellData.rowspan > 1;
1911
+ });
1912
+
1913
+ return isHeader && hasHeaderMerge;
1914
+ }
1915
+
1916
+ /**
1917
+ * Whether exactly fit table selection by clipboardTableData.
1918
+ * @param {Array.<Array.<object>>} clipboardTableData - table data of clipboard
1919
+ * @param {number} targetRowCount - target row count
1920
+ * @param {number} targetColCount - target col count
1921
+ * @returns {boolean}
1922
+ * @private
1923
+ */
1924
+
1925
+ }, {
1926
+ key: '_isExactlyFit',
1927
+ value: function _isExactlyFit(clipboardTableData, targetRowCount, targetColCount) {
1928
+ return targetRowCount % clipboardTableData.length === 0 && targetColCount % clipboardTableData[0].length === 0;
1929
+ }
1930
+
1931
+ /**
1932
+ * Update clibpard table data.
1933
+ * @param {Array.<Array.<object>>} clipboardTableData - table data of clipboard
1934
+ * @param {number} targetRowCount - target row count
1935
+ * @param {number} targetColCount - target col count
1936
+ * @private
1937
+ */
1938
+
1939
+ }, {
1940
+ key: '_updateClipboardTableData',
1941
+ value: function _updateClipboardTableData(clipboardTableData, targetRowCount, targetColCount) {
1942
+ var clipboardRowCount = clipboardTableData.length;
1943
+ var clipboardColCount = clipboardTableData[0].length;
1944
+ var increaseRowCount = parseInt(targetRowCount / clipboardRowCount, 10);
1945
+ var increaseColCount = parseInt(targetColCount / clipboardColCount, 10);
1946
+
1947
+ if (increaseRowCount > 1) {
1948
+ var originalData = JSON.parse(JSON.stringify(clipboardTableData));
1949
+
1950
+ _tuiCodeSnippet2.default.range(0, increaseRowCount - 1).forEach(function () {
1951
+ var newRows = JSON.parse(JSON.stringify(originalData));
1952
+
1953
+ clipboardTableData.push.apply(clipboardTableData, newRows);
1954
+ });
1955
+ }
1956
+
1957
+ if (increaseColCount > 1) {
1958
+ var _originalData = JSON.parse(JSON.stringify(clipboardTableData));
1959
+
1960
+ _tuiCodeSnippet2.default.range(0, increaseColCount - 1).forEach(function () {
1961
+ var newData = JSON.parse(JSON.stringify(_originalData));
1962
+ clipboardTableData.forEach(function (rowData, rowIndex) {
1963
+ rowData.push.apply(rowData, newData[rowIndex]);
1964
+ });
1965
+ });
1966
+ }
1967
+ }
1968
+
1969
+ /**
1970
+ * Update table data by cliboard table data.
1971
+ * @param {Array.<Array.<object>>} clipboardTableData - table data of clipboard
1972
+ * @param {Array.<Array.<object>>} tableData - table data
1973
+ * @param {{rowIndex: number, colIndex: number}} startCellIndex - start cell index
1974
+ * @private
1975
+ */
1976
+
1977
+ }, {
1978
+ key: '_updateTableDataByClipboardData',
1979
+ value: function _updateTableDataByClipboardData(clipboardTableData, tableData, startCellIndex) {
1980
+ var startRowIndex = startCellIndex.rowIndex;
1981
+ var startColIndex = startCellIndex.colIndex;
1982
+
1983
+ clipboardTableData.forEach(function (rowData, rowIndex) {
1984
+ var updateRowIndex = startRowIndex + rowIndex;
1985
+
1986
+ rowData.forEach(function (cellData, colIndex) {
1987
+ var updateColIndex = startColIndex + colIndex;
1988
+ var prevCellData = tableData[updateRowIndex][updateColIndex];
1989
+
1990
+ cellData.nodeName = prevCellData.nodeName;
1991
+ tableData[updateRowIndex][updateColIndex] = cellData;
1992
+ });
1993
+ });
1994
+ }
1995
+
1996
+ /**
1997
+ * Whether possible to paste or not.
1998
+ * @param {Array.<Array.<object>>} tableData - table data
1999
+ * @param {{rowIndex: number, colIndex: number}} startCellIndex - start cell index
2000
+ * @param {{rowIndex: number, colIndex: number}} endCellIndex - end cell index
2001
+ * @returns {boolean}
2002
+ * @private
2003
+ */
2004
+
2005
+ }, {
2006
+ key: '_isPossibleToPaste',
2007
+ value: function _isPossibleToPaste(tableData, startCellIndex, endCellIndex) {
2008
+ var startRowIndex = startCellIndex.rowIndex;
2009
+ var startColIndex = startCellIndex.colIndex;
2010
+ var endRowIndex = endCellIndex.rowIndex;
2011
+ var endColIndex = endCellIndex.colIndex;
2012
+ var filterdTableData = tableData.slice(startRowIndex, endRowIndex + 1);
2013
+ var firstRow = filterdTableData[0].slice(startColIndex, endColIndex + 1);
2014
+ var isPossible = !any(firstRow, function (cellData) {
2015
+ return _tuiCodeSnippet2.default.isExisty(cellData.rowMergeWith);
2016
+ });
2017
+
2018
+ if (isPossible) {
2019
+ var firstCells = _tuiCodeSnippet2.default.pluck(filterdTableData, startColIndex);
2020
+
2021
+ isPossible = !any(firstCells, function (cellData) {
2022
+ return _tuiCodeSnippet2.default.isExisty(cellData.colMergeWith);
2023
+ });
2024
+ }
2025
+
2026
+ if (isPossible && tableData.length > endRowIndex + 1) {
2027
+ var nextRow = tableData[endRowIndex + 1].slice(startColIndex, endColIndex + 1);
2028
+
2029
+ isPossible = !any(nextRow, function (cellData) {
2030
+ return _tuiCodeSnippet2.default.isExisty(cellData.rowMergeWith);
2031
+ });
2032
+ }
2033
+
2034
+ if (isPossible && tableData[0].length > endColIndex + 1) {
2035
+ var nextCells = _tuiCodeSnippet2.default.pluck(filterdTableData, endColIndex + 1);
2036
+
2037
+ isPossible = !any(nextCells, function (cellData) {
2038
+ return _tuiCodeSnippet2.default.isExisty(cellData.colMergeWith);
2039
+ });
2040
+ }
2041
+
2042
+ return isPossible;
2043
+ }
2044
+
2045
+ /**
2046
+ * Splice clipboardTableData by target row count and col count.
2047
+ * @param {Array.<Array.<object>>} clipboardTableData - table data of clipboard
2048
+ * @param {number} targetRowCount - target row count
2049
+ * @param {number} targetColCount - target col count
2050
+ * @private
2051
+ */
2052
+
2053
+ }, {
2054
+ key: '_spliceClipboardData',
2055
+ value: function _spliceClipboardData(clipboardTableData, targetRowCount, targetColCount) {
2056
+ clipboardTableData.splice(targetRowCount);
2057
+ clipboardTableData.forEach(function (rowData) {
2058
+ rowData.splice(targetColCount);
2059
+ });
2060
+ }
2061
+
2062
+ /**
2063
+ * bookmark last td.
2064
+ * @param {number} endRowIndex - end row index
2065
+ * @param {number} endColIndex - end col index
2066
+ * @private
2067
+ */
2068
+
2069
+ }, {
2070
+ key: '_bookmarkLastTd',
2071
+ value: function _bookmarkLastTd(_ref) {
2072
+ var endRowIndex = _ref.rowIndex,
2073
+ endColIndex = _ref.colIndex;
2074
+
2075
+ var sq = this.wwe.getEditor();
2076
+ var $bookmarkedTable = sq.get$Body().find('.' + PASTE_TABLE_BOOKMARK);
2077
+ var tableData = _tableDataHandler2.default.createTableData($bookmarkedTable);
2078
+ var lastCellData = tableData[endRowIndex][endColIndex];
2079
+
2080
+ endRowIndex = _tuiCodeSnippet2.default.isExisty(lastCellData.rowMergeWith) ? lastCellData.rowMergeWith : endRowIndex;
2081
+ endColIndex = _tuiCodeSnippet2.default.isExisty(lastCellData.colMergeWith) ? lastCellData.colMergeWith : endColIndex;
2082
+
2083
+ var lastCellIndex = tableData[endRowIndex][endColIndex].elementIndex;
2084
+ var lastTd = $bookmarkedTable.find('tr').eq(lastCellIndex.rowIndex).children()[lastCellIndex.colIndex];
2085
+
2086
+ $bookmarkedTable.removeClass(PASTE_TABLE_BOOKMARK);
2087
+ (0, _jquery2.default)(lastTd).addClass(PASTE_TABLE_CELL_BOOKMARK);
2088
+ }
2089
+
2090
+ /**
2091
+ * Update clipboard data for paste to smaller selection area than clipboard data.
2092
+ * @param {Array.<Array.<object>>} clipboardTableData - table data of clipboard
2093
+ * @param {Array.<Array.<object>>} tableData - table data
2094
+ * @param {number} targetRowCount - target row count
2095
+ * @param {number} targetColCount - target col count
2096
+ * @param {{rowIndex: number, colIndex: number}} startRange - start table range
2097
+ * @returns {boolean}
2098
+ * @private
2099
+ */
2100
+
2101
+ }, {
2102
+ key: '_updateClipboardDataForPasteToSamllerSelectedArea',
2103
+ value: function _updateClipboardDataForPasteToSamllerSelectedArea(clipboardTableData, tableData, targetRowCount, targetColCount, startRange) {
2104
+ var updated = true;
2105
+ var startCellIndex = {
2106
+ rowIndex: 0,
2107
+ colIndex: 0
2108
+ };
2109
+
2110
+ var endCellIndex = {
2111
+ rowIndex: targetRowCount - 1,
2112
+ colIndex: targetColCount - 1
2113
+ };
2114
+
2115
+ if (this._isPossibleToPaste(clipboardTableData, startCellIndex, endCellIndex)) {
2116
+ this._spliceClipboardData(clipboardTableData, targetRowCount, targetColCount);
2117
+ this._updateTableDataByClipboardData(clipboardTableData, tableData, startRange);
2118
+ } else {
2119
+ updated = false;
2120
+ }
2121
+
2122
+ return updated;
2123
+ }
2124
+
2125
+ /**
2126
+ * Paste to selected area.
2127
+ * @param {jQuery} $table - target jQuery table element
2128
+ * @param {Array.<Array.<object>>} clipboardTableData - table data of clipboard
2129
+ * @param {Array.<Array.<object>>} tableData - table data
2130
+ * @param {jQuery} $selectedCells - selected jQuery elements like td, th
2131
+ * @private
2132
+ */
2133
+
2134
+ }, {
2135
+ key: '_pasteToSelectedArea',
2136
+ value: function _pasteToSelectedArea($table, clipboardTableData, tableData, $selectedCells) {
2137
+ var _tableRangeHandler$ge2 = _tableRangeHandler2.default.getTableSelectionRange(tableData, $selectedCells),
2138
+ startRange = _tableRangeHandler$ge2.start,
2139
+ endRange = _tableRangeHandler$ge2.end;
2140
+
2141
+ var targetRowCount = endRange.rowIndex - startRange.rowIndex + 1;
2142
+ var targetColCount = endRange.colIndex - startRange.colIndex + 1;
2143
+ var clipboardRowCount = clipboardTableData.length;
2144
+ var clipboardColCount = clipboardTableData[0].length;
2145
+ var isSelectionLargerThanData = targetRowCount >= clipboardRowCount && targetColCount >= clipboardColCount;
2146
+ var alertMessage = i18n.get('Cannot change part of merged cell');
2147
+ var updated = true;
2148
+ var endCellIndex = void 0;
2149
+
2150
+ if (this._hasRowMergedHeader(clipboardTableData, tableData, startRange)) {
2151
+ alertMessage = i18n.get('Cannot paste row merged cells into the table header');
2152
+ updated = false;
2153
+ } else if (this._isExactlyFit(clipboardTableData, targetRowCount, targetColCount)) {
2154
+ endCellIndex = endRange;
2155
+ this._updateClipboardTableData(clipboardTableData, targetRowCount, targetColCount);
2156
+ this._updateTableDataByClipboardData(clipboardTableData, tableData, startRange);
2157
+ } else if (isSelectionLargerThanData) {
2158
+ endCellIndex = {
2159
+ rowIndex: startRange.rowIndex + clipboardRowCount - 1,
2160
+ colIndex: startRange.colIndex + clipboardColCount - 1
2161
+ };
2162
+
2163
+ if (this._isPossibleToPaste(tableData, startRange, endCellIndex)) {
2164
+ this._updateTableDataByClipboardData(clipboardTableData, tableData, startRange);
2165
+ } else {
2166
+ updated = false;
2167
+ }
2168
+ } else {
2169
+ // selected area is smaller then paste data
2170
+ endCellIndex = {
2171
+ rowIndex: startRange.rowIndex + targetRowCount - 1,
2172
+ colIndex: startRange.colIndex + targetColCount - 1
2173
+ };
2174
+
2175
+ updated = this._updateClipboardDataForPasteToSamllerSelectedArea(clipboardTableData, tableData, targetRowCount, targetColCount, startRange);
2176
+ }
2177
+
2178
+ if (updated) {
2179
+ tableData.className += ' ' + PASTE_TABLE_BOOKMARK;
2180
+ _tableRenderer2.default.replaceTable($table, tableData);
2181
+ this._bookmarkLastTd(endCellIndex);
2182
+ } else {
2183
+ alert(alertMessage);
2184
+ this.wwe.focus();
2185
+ }
2186
+ }
2187
+
2188
+ /**
2189
+ * Find end cell index.
2190
+ * @param {Array.<Array.<object>>} clipboardTableData - table data of clipboard
2191
+ * @param {number} startRowIndex - start row index
2192
+ * @param {number} startColIndex - start col index
2193
+ * @returns {{rowIndex: number, colIndex: number}}
2194
+ * @private
2195
+ */
2196
+
2197
+ }, {
2198
+ key: '_findEndCellIndex',
2199
+ value: function _findEndCellIndex(clipboardTableData, _ref2) {
2200
+ var startRowIndex = _ref2.rowIndex,
2201
+ startColIndex = _ref2.colIndex;
2202
+
2203
+ return {
2204
+ rowIndex: startRowIndex + clipboardTableData.length - 1,
2205
+ colIndex: startColIndex + clipboardTableData[0].length - 1
2206
+ };
2207
+ }
2208
+
2209
+ /**
2210
+ * Expand row.
2211
+ * @param {Array.<Array.<object>>} tableData - table data
2212
+ * @param {number} expandCount - expand count
2213
+ * @private
2214
+ */
2215
+
2216
+ }, {
2217
+ key: '_expandRow',
2218
+ value: function _expandRow(tableData, expandCount) {
2219
+ var startRowIndex = tableData.length;
2220
+ var cellCount = tableData[0].length;
2221
+ var newRows = _tuiCodeSnippet2.default.range(startRowIndex, startRowIndex + expandCount).map(function (rowIndex) {
2222
+ return _tuiCodeSnippet2.default.range(0, cellCount).map(function (colIndex) {
2223
+ return _tableDataHandler2.default.createBasicCell(rowIndex, colIndex);
2224
+ });
2225
+ });
2226
+
2227
+ tableData.push.apply(tableData, newRows);
2228
+ }
2229
+
2230
+ /**
2231
+ * Expand column.
2232
+ * @param {Array.<Array.<object>>} tableData - table data
2233
+ * @param {number} expandCount - expand count
2234
+ * @private
2235
+ */
2236
+
2237
+ }, {
2238
+ key: '_expandCoumn',
2239
+ value: function _expandCoumn(tableData, expandCount) {
2240
+ var startCellIndex = tableData[0].length;
2241
+ var additionalCellRange = _tuiCodeSnippet2.default.range(startCellIndex, startCellIndex + expandCount);
2242
+
2243
+ tableData.forEach(function (rowData, rowIndex) {
2244
+ var nodeName = rowData[0].nodeName;
2245
+
2246
+ var newCells = additionalCellRange.map(function (colIndex) {
2247
+ return _tableDataHandler2.default.createBasicCell(rowIndex, colIndex, nodeName);
2248
+ });
2249
+
2250
+ rowData.push.apply(rowData, newCells);
2251
+ });
2252
+ }
2253
+
2254
+ /**
2255
+ * Expand table data, if need.
2256
+ * @param {Array.<Array.<object>>} tableData - table data
2257
+ * @param {{rowIndex: number, colIndex: number}} startCellIndex - start cell index
2258
+ * @param {{rowIndex: number, colIndex: number}} endCellIndex - end cell index
2259
+ * @private
2260
+ */
2261
+
2262
+ }, {
2263
+ key: '_expandTableDataIfNeed',
2264
+ value: function _expandTableDataIfNeed(tableData, startCellIndex, endCellIndex) {
2265
+ var expandRowCount = endCellIndex.rowIndex - tableData.length + 1;
2266
+ var expandCellCount = endCellIndex.colIndex - tableData[0].length + 1;
2267
+
2268
+ if (expandRowCount > 0) {
2269
+ this._expandRow(tableData, expandRowCount);
2270
+ }
2271
+
2272
+ if (expandCellCount > 0) {
2273
+ this._expandCoumn(tableData, expandCellCount);
2274
+ }
2275
+ }
2276
+
2277
+ /**
2278
+ * Paste all clipboard table data.
2279
+ * @param {jQuery} $table - jQuery table element
2280
+ * @param {Array.<Array.<object>>} clipboardTableData - table data of clipboard
2281
+ * @param {Array.<Array.<object>>} tableData - table data
2282
+ * @param {{rowIndex: number, colIndex: number}} startCellIndex - start cell index
2283
+ * @private
2284
+ */
2285
+
2286
+ }, {
2287
+ key: '_pasteAllClipboardTableData',
2288
+ value: function _pasteAllClipboardTableData($table, clipboardTableData, tableData, startCellIndex) {
2289
+ var endCellIndex = this._findEndCellIndex(clipboardTableData, startCellIndex);
2290
+
2291
+ if (this._hasRowMergedHeader(clipboardTableData, tableData, startCellIndex)) {
2292
+ alert(i18n.get('Cannot paste row merged cells into the table header'));
2293
+ this.wwe.focus();
2294
+
2295
+ return;
2296
+ }
2297
+
2298
+ this._expandTableDataIfNeed(tableData, startCellIndex, endCellIndex);
2299
+
2300
+ if (this._isPossibleToPaste(tableData, startCellIndex, endCellIndex)) {
2301
+ this._updateTableDataByClipboardData(clipboardTableData, tableData, startCellIndex);
2302
+ tableData.className += ' ' + PASTE_TABLE_BOOKMARK;
2303
+ _tableRenderer2.default.replaceTable($table, tableData);
2304
+ this._bookmarkLastTd(endCellIndex);
2305
+ } else {
2306
+ alert(i18n.get('Cannot change part of merged cell'));
2307
+ this.wwe.focus();
2308
+ }
2309
+ }
2310
+
2311
+ /**
2312
+ * Paste clibpard data.
2313
+ * @param {jQuery} $clipboardTable - jQuery table element of clipboard
2314
+ */
2315
+
2316
+ }, {
2317
+ key: 'pasteClipboardData',
2318
+ value: function pasteClipboardData($clipboardTable) {
2319
+ var clipboardTableData = _tableDataHandler2.default.createTableData($clipboardTable);
2320
+ var tableSelectionManager = this.wwe.componentManager.getManager('tableSelection');
2321
+ var $selectedCells = tableSelectionManager.getSelectedCells();
2322
+ var $startCell = (0, _jquery2.default)(this._findStartCell($selectedCells));
2323
+ var $table = $startCell.closest('table');
2324
+ var tableData = _tableDataHandler2.default.createTableData($table);
2325
+ var startCellIndex = this._findStartCellIndex(tableData, $startCell);
2326
+
2327
+ if ($selectedCells.length > 1) {
2328
+ // selection
2329
+ this._pasteToSelectedArea($table, clipboardTableData, tableData, $selectedCells);
2330
+ } else {
2331
+ // cursor
2332
+ this._pasteAllClipboardTableData($table, clipboardTableData, tableData, startCellIndex);
2333
+ }
2334
+ }
2335
+ }]);
2336
+
2337
+ return WwMergedTableManager;
2338
+ }(WwTableManager);
2339
+
2340
+ /**
2341
+ * Whether one of them is true or not.
2342
+ * @param {Array} arr - target array
2343
+ * @param {function} contition - condition function
2344
+ * @returns {boolean}
2345
+ * @ignore
2346
+ */
2347
+
2348
+
2349
+ function any(arr, contition) {
2350
+ var result = false;
2351
+
2352
+ _tuiCodeSnippet2.default.forEach(arr, function (item) {
2353
+ result = contition(item);
2354
+
2355
+ return !result;
2356
+ });
2357
+
2358
+ return result;
2359
+ }
2360
+
2361
+ exports.default = WwMergedTableManager;
2362
+
2363
+ /***/ }),
2364
+ /* 56 */
2365
+ /***/ (function(module, exports, __webpack_require__) {
2366
+
2367
+ "use strict";
2368
+
2369
+
2370
+ Object.defineProperty(exports, "__esModule", {
2371
+ value: true
2372
+ });
2373
+
2374
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2375
+
2376
+ var _jquery = __webpack_require__(0);
2377
+
2378
+ var _jquery2 = _interopRequireDefault(_jquery);
2379
+
2380
+ var _tuiCodeSnippet = __webpack_require__(2);
2381
+
2382
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
2383
+
2384
+ var _editorProxy = __webpack_require__(1);
2385
+
2386
+ var _editorProxy2 = _interopRequireDefault(_editorProxy);
2387
+
2388
+ var _tableDataHandler = __webpack_require__(3);
2389
+
2390
+ var _tableDataHandler2 = _interopRequireDefault(_tableDataHandler);
2391
+
2392
+ var _tableRangeHandler = __webpack_require__(7);
2393
+
2394
+ var _tableRangeHandler2 = _interopRequireDefault(_tableRangeHandler);
2395
+
2396
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2397
+
2398
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2399
+
2400
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
2401
+
2402
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**
2403
+ * @fileoverview Implements wysiwyg merged table selection manager
2404
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
2405
+ */
2406
+
2407
+
2408
+ var WwTableSelectionManager = _editorProxy2.default.WwTableSelectionManager;
2409
+
2410
+
2411
+ var TABLE_CELL_SELECTED_CLASS_NAME = 'te-cell-selected';
2412
+
2413
+ /**
2414
+ * Class WwMergedTableSelectionManager
2415
+ */
2416
+
2417
+ var WwMergedTableSelectionManager = function (_WwTableSelectionMana) {
2418
+ _inherits(WwMergedTableSelectionManager, _WwTableSelectionMana);
2419
+
2420
+ /**
2421
+ * Creates an instance of WwMergedTableSelectionManager.
2422
+ * @param {WysiwygEditor} wwe - WysiwygEditor instance
2423
+ * @memberof WwMergedTableSelectionManager
2424
+ */
2425
+ function WwMergedTableSelectionManager(wwe) {
2426
+ _classCallCheck(this, WwMergedTableSelectionManager);
2427
+
2428
+ /**
2429
+ * table cache data
2430
+ * @type {Array.<Array.<Object>>}
2431
+ * @private
2432
+ */
2433
+ var _this = _possibleConstructorReturn(this, (WwMergedTableSelectionManager.__proto__ || Object.getPrototypeOf(WwMergedTableSelectionManager)).call(this, wwe));
2434
+
2435
+ _this._tableData = null;
2436
+
2437
+ _this.mergedTableSelectionManager = true;
2438
+ return _this;
2439
+ }
2440
+
2441
+ /**
2442
+ * Add css class for selected cells.
2443
+ * @param {jQuery} $table - table jQuery element
2444
+ * @param {Array.<Array.<object>>} tableData - table data
2445
+ * @param {{
2446
+ * start: {rowIndex: number, colIndex: number},
2447
+ * end: {rowIndex: number, colIndex: number}
2448
+ * }} tableRange - table selected range
2449
+ * @private
2450
+ */
2451
+
2452
+
2453
+ _createClass(WwMergedTableSelectionManager, [{
2454
+ key: '_addClassToSelectedCells',
2455
+ value: function _addClassToSelectedCells($table, tableData, tableRange) {
2456
+ var startRange = tableRange.start;
2457
+ var endRange = tableRange.end;
2458
+ var cellIndexRange = _tuiCodeSnippet2.default.range(startRange.colIndex, endRange.colIndex + 1);
2459
+ var $trs = $table.find('tr');
2460
+
2461
+ _tuiCodeSnippet2.default.range(startRange.rowIndex, endRange.rowIndex + 1).forEach(function (rowIndex) {
2462
+ var rowData = tableData[rowIndex];
2463
+ var $cells = $trs.eq(rowIndex).find('td, th');
2464
+
2465
+ return cellIndexRange.forEach(function (colIndex) {
2466
+ var cellData = rowData[colIndex];
2467
+
2468
+ if (cellData.elementIndex) {
2469
+ $cells.eq(rowData[colIndex].elementIndex.colIndex).addClass(TABLE_CELL_SELECTED_CLASS_NAME);
2470
+ }
2471
+ });
2472
+ });
2473
+ }
2474
+
2475
+ /**
2476
+ * cache table data on drag start
2477
+ * @param {HTMLElement} selectionStart - start element
2478
+ */
2479
+
2480
+ }, {
2481
+ key: 'onDragStart',
2482
+ value: function onDragStart(selectionStart) {
2483
+ var $table = (0, _jquery2.default)(selectionStart).closest('[contenteditable=true] table');
2484
+ this._tableData = _tableDataHandler2.default.createTableData($table);
2485
+ }
2486
+
2487
+ /**
2488
+ * clear table data in cache on drag end
2489
+ */
2490
+
2491
+ }, {
2492
+ key: 'onDragEnd',
2493
+ value: function onDragEnd() {
2494
+ this._tableData = null;
2495
+ }
2496
+
2497
+ /**
2498
+ * Highlight selected table cells
2499
+ * @param {HTMLElement} selectionStart start element
2500
+ * @param {HTMLElement} selectionEnd end element
2501
+ * @override
2502
+ */
2503
+
2504
+ }, {
2505
+ key: 'highlightTableCellsBy',
2506
+ value: function highlightTableCellsBy(selectionStart, selectionEnd) {
2507
+ var $start = (0, _jquery2.default)(selectionStart);
2508
+ var $end = (0, _jquery2.default)(selectionEnd);
2509
+ var $table = $start.closest('[contenteditable=true] table');
2510
+ var tableRange = _tableRangeHandler2.default.findSelectionRange(this._tableData, $start, $end);
2511
+
2512
+ this.removeClassAttrbuteFromAllCellsIfNeed();
2513
+ this._addClassToSelectedCells($table, this._tableData, tableRange);
2514
+ }
2515
+
2516
+ /**
2517
+ * Style to selected cells.
2518
+ * @param {function} onStyle - function for styling
2519
+ */
2520
+
2521
+ }, {
2522
+ key: 'styleToSelectedCells',
2523
+ value: function styleToSelectedCells(onStyle) {
2524
+ var sq = this.wwe.getEditor();
2525
+ var range = sq.getSelection().cloneRange();
2526
+ var $table = (0, _jquery2.default)(range.startContainer).closest('[contenteditable=true] table');
2527
+
2528
+ $table.find('tr').get().forEach(function (tr) {
2529
+ var $cells = (0, _jquery2.default)(tr).find('.' + TABLE_CELL_SELECTED_CLASS_NAME);
2530
+ var firstSelectedCell = $cells.first().get(0);
2531
+ var lastSelectedCell = $cells.last().get(0);
2532
+
2533
+ if (!$cells.length) {
2534
+ return;
2535
+ }
2536
+
2537
+ range.setStart(firstSelectedCell, 0);
2538
+ range.setEnd(lastSelectedCell, lastSelectedCell.childNodes.length);
2539
+ sq.setSelection(range);
2540
+ onStyle(sq);
2541
+ });
2542
+ }
2543
+
2544
+ /**
2545
+ * Whether has selected both TH and TD.
2546
+ * @param {jQuery} $selectedCells - selected cells jQuery element
2547
+ * @returns {boolean}
2548
+ */
2549
+
2550
+ }, {
2551
+ key: 'hasSelectedBothThAndTd',
2552
+ value: function hasSelectedBothThAndTd($selectedCells) {
2553
+ $selectedCells = $selectedCells || this.getSelectedCells();
2554
+
2555
+ return $selectedCells.first()[0].nodeName !== $selectedCells.last()[0].nodeName;
2556
+ }
2557
+ }]);
2558
+
2559
+ return WwMergedTableSelectionManager;
2560
+ }(WwTableSelectionManager);
2561
+
2562
+ exports.default = WwMergedTableSelectionManager;
2563
+
2564
+ /***/ }),
2565
+ /* 57 */
2566
+ /***/ (function(module, exports, __webpack_require__) {
2567
+
2568
+ "use strict";
2569
+
2570
+
2571
+ Object.defineProperty(exports, "__esModule", {
2572
+ value: true
2573
+ });
2574
+ exports._createNewRow = _createNewRow;
2575
+ exports._addRow = _addRow;
2576
+
2577
+ var _jquery = __webpack_require__(0);
2578
+
2579
+ var _jquery2 = _interopRequireDefault(_jquery);
2580
+
2581
+ var _tuiCodeSnippet = __webpack_require__(2);
2582
+
2583
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
2584
+
2585
+ var _editorProxy = __webpack_require__(1);
2586
+
2587
+ var _editorProxy2 = _interopRequireDefault(_editorProxy);
2588
+
2589
+ var _tableDataHandler = __webpack_require__(3);
2590
+
2591
+ var _tableDataHandler2 = _interopRequireDefault(_tableDataHandler);
2592
+
2593
+ var _tableRangeHandler = __webpack_require__(7);
2594
+
2595
+ var _tableRangeHandler2 = _interopRequireDefault(_tableRangeHandler);
2596
+
2597
+ var _tableRenderer = __webpack_require__(6);
2598
+
2599
+ var _tableRenderer2 = _interopRequireDefault(_tableRenderer);
2600
+
2601
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2602
+
2603
+ /**
2604
+ * @fileoverview Implements mergedTableAddRow. Add Row to selected table
2605
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
2606
+ */
2607
+ var CommandManager = _editorProxy2.default.CommandManager;
2608
+
2609
+
2610
+ var AddRow = void 0;
2611
+ if (CommandManager) {
2612
+ AddRow = CommandManager.command('wysiwyg', /** @lends AddRow */{
2613
+ name: 'AddRow',
2614
+ /**
2615
+ * Command handler.
2616
+ * @param {WysiwygEditor} wwe - wysiwygEditor instance
2617
+ */
2618
+ exec: function exec(wwe) {
2619
+ var sq = wwe.getEditor();
2620
+ var range = sq.getSelection().cloneRange();
2621
+
2622
+ wwe.focus();
2623
+
2624
+ if (!sq.hasFormat('TABLE')) {
2625
+ return;
2626
+ }
2627
+
2628
+ var $startContainer = (0, _jquery2.default)(range.startContainer);
2629
+ var $table = $startContainer.closest('table');
2630
+ var tableData = _tableDataHandler2.default.createTableData($table);
2631
+ var $selectedCells = wwe.componentManager.getManager('tableSelection').getSelectedCells();
2632
+ var tableRange = _tableRangeHandler2.default.getTableSelectionRange(tableData, $selectedCells, $startContainer);
2633
+
2634
+ sq.saveUndoState(range);
2635
+ _addRow(tableData, tableRange);
2636
+
2637
+ var $newTable = _tableRenderer2.default.replaceTable($table, tableData);
2638
+ var focusTd = _findFocusTd($newTable, tableRange.end.rowIndex, tableRange.start.colIndex);
2639
+
2640
+ _tableRenderer2.default.focusToCell(sq, range, focusTd);
2641
+ }
2642
+ });
2643
+ }
2644
+
2645
+ /**
2646
+ * Create row merged cell data.
2647
+ * @param {number} rowMergeWith - row merge with index
2648
+ * @returns {{
2649
+ * nodeName: string,
2650
+ * rowMergeWith: number
2651
+ * }}
2652
+ * @private
2653
+ */
2654
+ function _createRowMergedCell(rowMergeWith) {
2655
+ return {
2656
+ nodeName: 'TD',
2657
+ rowMergeWith: rowMergeWith
2658
+ };
2659
+ }
2660
+
2661
+ /**
2662
+ * Create new row.
2663
+ * @param {Array.<Array.<object>>} tableData - table data
2664
+ * @param {number} rowIndex - row index of table data
2665
+ * @returns {object}
2666
+ * @private
2667
+ */
2668
+ function _createNewRow(tableData, rowIndex) {
2669
+ var prevCell = null;
2670
+
2671
+ return tableData[rowIndex].map(function (cellData, colIndex) {
2672
+ var newCell = void 0;
2673
+
2674
+ if (_tuiCodeSnippet2.default.isExisty(cellData.rowMergeWith)) {
2675
+ var rowMergeWith = cellData.rowMergeWith;
2676
+
2677
+ var merger = tableData[rowMergeWith][colIndex];
2678
+ var lastMergedRowIndex = rowMergeWith + merger.rowspan - 1;
2679
+
2680
+ if (_tuiCodeSnippet2.default.isExisty(merger.colMergeWith) && prevCell) {
2681
+ newCell = _tuiCodeSnippet2.default.extend({}, prevCell);
2682
+ } else if (lastMergedRowIndex > rowIndex) {
2683
+ merger.rowspan += 1;
2684
+ newCell = _tuiCodeSnippet2.default.extend({}, cellData);
2685
+ }
2686
+ } else if (cellData.rowspan > 1) {
2687
+ cellData.rowspan += 1;
2688
+ newCell = _createRowMergedCell(rowIndex);
2689
+ }
2690
+
2691
+ if (!newCell) {
2692
+ newCell = _tableDataHandler2.default.createBasicCell(rowIndex + 1, colIndex);
2693
+ }
2694
+
2695
+ prevCell = newCell;
2696
+
2697
+ return newCell;
2698
+ });
2699
+ }
2700
+
2701
+ /**
2702
+ * Add row.
2703
+ * @param {Array.<Array.<object>>} tableData - table data
2704
+ * @param {{
2705
+ * start: {rowIndex: number, colIndex: number},
2706
+ * end: {rowIndex: number, colIndex: number}
2707
+ * }} tableRange - table selection range
2708
+ * @param {number} rowIndex - row index of table data
2709
+ * @param {number} colIndex - column index of tabld data
2710
+ * @private
2711
+ */
2712
+ function _addRow(tableData, tableRange) {
2713
+ var startRowIndex = tableRange.start.rowIndex;
2714
+ var endRange = tableRange.end;
2715
+ var endRowIndex = _tableDataHandler2.default.findRowMergedLastIndex(tableData, endRange.rowIndex, endRange.colIndex);
2716
+ var newRows = _tuiCodeSnippet2.default.range(startRowIndex, endRowIndex + 1).map(function () {
2717
+ return _createNewRow(tableData, endRowIndex);
2718
+ });
2719
+
2720
+ tableData.splice.apply(tableData, [endRowIndex + 1, 0].concat(newRows));
2721
+ }
2722
+
2723
+ /**
2724
+ * Find focus td element.
2725
+ * @param {jQuery} $newTable - changed table jQuery element
2726
+ * @param {number} rowIndex - row index of table data
2727
+ * @param {number} colIndex - column index of tabld data
2728
+ * @returns {HTMLElement}
2729
+ * @private
2730
+ */
2731
+ function _findFocusTd($newTable, rowIndex, colIndex) {
2732
+ var tableData = _tableDataHandler2.default.createTableData($newTable);
2733
+ var newRowIndex = _tableDataHandler2.default.findRowMergedLastIndex(tableData, rowIndex, colIndex) + 1;
2734
+ var cellElementIndex = _tableDataHandler2.default.findElementIndex(tableData, newRowIndex, colIndex);
2735
+
2736
+ return $newTable.find('tr').eq(cellElementIndex.rowIndex).find('td')[cellElementIndex.colIndex];
2737
+ }
2738
+
2739
+ exports.default = AddRow;
2740
+
2741
+ /***/ }),
2742
+ /* 58 */
2743
+ /***/ (function(module, exports, __webpack_require__) {
2744
+
2745
+ "use strict";
2746
+
2747
+
2748
+ Object.defineProperty(exports, "__esModule", {
2749
+ value: true
2750
+ });
2751
+ exports._createNewColumns = _createNewColumns;
2752
+ exports._addColumns = _addColumns;
2753
+
2754
+ var _jquery = __webpack_require__(0);
2755
+
2756
+ var _jquery2 = _interopRequireDefault(_jquery);
2757
+
2758
+ var _tuiCodeSnippet = __webpack_require__(2);
2759
+
2760
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
2761
+
2762
+ var _editorProxy = __webpack_require__(1);
2763
+
2764
+ var _editorProxy2 = _interopRequireDefault(_editorProxy);
2765
+
2766
+ var _tableDataHandler = __webpack_require__(3);
2767
+
2768
+ var _tableDataHandler2 = _interopRequireDefault(_tableDataHandler);
2769
+
2770
+ var _tableRangeHandler = __webpack_require__(7);
2771
+
2772
+ var _tableRangeHandler2 = _interopRequireDefault(_tableRangeHandler);
2773
+
2774
+ var _tableRenderer = __webpack_require__(6);
2775
+
2776
+ var _tableRenderer2 = _interopRequireDefault(_tableRenderer);
2777
+
2778
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2779
+
2780
+ /**
2781
+ * @fileoverview Implements mergedTableAddCol. Add Row to selected table.
2782
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
2783
+ */
2784
+ var CommandManager = _editorProxy2.default.CommandManager;
2785
+
2786
+
2787
+ var AddCol = void 0;
2788
+ if (CommandManager) {
2789
+ AddCol = CommandManager.command('wysiwyg', /** @lends AddCol */{
2790
+ name: 'AddCol',
2791
+ /**
2792
+ * Command handler.
2793
+ * @param {WysiwygEditor} wwe - wysiwygEditor instance
2794
+ */
2795
+ exec: function exec(wwe) {
2796
+ var sq = wwe.getEditor();
2797
+ var range = sq.getSelection().cloneRange();
2798
+
2799
+ wwe.focus();
2800
+
2801
+ if (!sq.hasFormat('TABLE')) {
2802
+ return;
2803
+ }
2804
+
2805
+ var $startContainer = (0, _jquery2.default)(range.startContainer);
2806
+ var $table = $startContainer.closest('table');
2807
+ var tableData = _tableDataHandler2.default.createTableData($table);
2808
+ var $selectedCells = wwe.componentManager.getManager('tableSelection').getSelectedCells();
2809
+ var tableRange = _tableRangeHandler2.default.getTableSelectionRange(tableData, $selectedCells, $startContainer);
2810
+
2811
+ sq.saveUndoState(range);
2812
+ _addColumns(tableData, tableRange);
2813
+
2814
+ var $newTable = _tableRenderer2.default.replaceTable($table, tableData);
2815
+ var focusCell = _findFocusCell($newTable, tableRange.start.rowIndex, tableRange.end.colIndex);
2816
+
2817
+ _tableRenderer2.default.focusToCell(sq, range, focusCell);
2818
+ }
2819
+ });
2820
+ }
2821
+
2822
+ /**
2823
+ * Create column merged cell.
2824
+ * @param {number} colMergeWith - column merge start index
2825
+ * @param {string} nodeName - node name
2826
+ * @returns {{
2827
+ * nodeName: string,
2828
+ * colMerged: boolean,
2829
+ * colMergeWith: number
2830
+ * }}
2831
+ * @private
2832
+ */
2833
+ function _createColMergedCell(colMergeWith, nodeName) {
2834
+ return {
2835
+ nodeName: nodeName,
2836
+ colMergeWith: colMergeWith
2837
+ };
2838
+ }
2839
+
2840
+ /**
2841
+ * Create new cell data.
2842
+ * @param {Array.<object>} rowData - row data of table data
2843
+ * @param {number} rowIndex - row index of table data
2844
+ * @param {number} colIndex - column index of table data
2845
+ * @param {object | null} prevCell - previous cell data
2846
+ * @returns {object}
2847
+ * @private
2848
+ */
2849
+ function _createNewCell(rowData, rowIndex, colIndex, prevCell) {
2850
+ var cellData = rowData[colIndex];
2851
+ var newCell = void 0;
2852
+
2853
+ if (_tuiCodeSnippet2.default.isExisty(cellData.colMergeWith)) {
2854
+ var colMergeWith = cellData.colMergeWith;
2855
+
2856
+ var merger = rowData[colMergeWith];
2857
+ var lastMergedCellIndex = colMergeWith + merger.colspan - 1;
2858
+
2859
+ if (_tuiCodeSnippet2.default.isExisty(merger.rowMergeWith) && prevCell) {
2860
+ newCell = _tuiCodeSnippet2.default.extend({}, prevCell);
2861
+ } else if (lastMergedCellIndex > colIndex) {
2862
+ merger.colspan += 1;
2863
+ newCell = _tuiCodeSnippet2.default.extend({}, cellData);
2864
+ }
2865
+ } else if (cellData.colspan > 1) {
2866
+ cellData.colspan += 1;
2867
+ newCell = _createColMergedCell(colIndex, cellData.nodeName);
2868
+ }
2869
+
2870
+ if (!newCell) {
2871
+ newCell = _tableDataHandler2.default.createBasicCell(rowIndex, colIndex + 1, cellData.nodeName);
2872
+ }
2873
+
2874
+ return newCell;
2875
+ }
2876
+
2877
+ /**
2878
+ * Create new columns.
2879
+ * @param {Array.<Array.<object>>} tableData - table data
2880
+ * @param {number} startColIndex - start column index
2881
+ * @param {number} endColIndex - end column index
2882
+ * @returns {Array.<Array.<object>>}
2883
+ * @private
2884
+ */
2885
+ function _createNewColumns(tableData, startColIndex, endColIndex) {
2886
+ var colIndexes = _tuiCodeSnippet2.default.range(startColIndex, endColIndex + 1);
2887
+ var newColumns = [];
2888
+ var prevCells = null;
2889
+
2890
+ tableData.forEach(function (rowData, rowIndex) {
2891
+ var newCells = colIndexes.map(function (colIndex, index) {
2892
+ var prevCell = prevCells ? prevCells[index - 1] : null;
2893
+
2894
+ return _createNewCell(rowData, rowIndex, endColIndex, prevCell);
2895
+ });
2896
+
2897
+ prevCells = newCells;
2898
+ newColumns.push(newCells);
2899
+ });
2900
+
2901
+ return newColumns;
2902
+ }
2903
+
2904
+ /**
2905
+ * Add columns.
2906
+ * @param {Array.<Array.<object>>} tableData - table data
2907
+ * @param {{
2908
+ * start: {rowIndex: number, colIndex: number},
2909
+ * end: {rowIndex: number, colIndex: number}
2910
+ * }} tableRange - table selection range
2911
+ * @private
2912
+ */
2913
+ function _addColumns(tableData, tableRange) {
2914
+ var endRange = tableRange.end;
2915
+ var endColIndex = _tableDataHandler2.default.findColMergedLastIndex(tableData, endRange.rowIndex, endRange.colIndex);
2916
+ var newColumns = _createNewColumns(tableData, tableRange.start.colIndex, endColIndex);
2917
+ var newColIndex = endColIndex + 1;
2918
+
2919
+ tableData.forEach(function (rowData, rowIndex) {
2920
+ rowData.splice.apply(rowData, [newColIndex, 0].concat(newColumns[rowIndex]));
2921
+ });
2922
+ }
2923
+
2924
+ /**
2925
+ * Find focus cell element like td or th.
2926
+ * @param {jQuery} $newTable - changed table jQuery element
2927
+ * @param {number} rowIndex - row index of table data
2928
+ * @param {number} colIndex - column index of tabld data
2929
+ * @returns {HTMLElement}
2930
+ * @private
2931
+ */
2932
+ function _findFocusCell($newTable, rowIndex, colIndex) {
2933
+ var tableData = _tableDataHandler2.default.createTableData($newTable);
2934
+ var newColIndex = _tableDataHandler2.default.findColMergedLastIndex(tableData, rowIndex, colIndex) + 1;
2935
+ var cellElementIndex = _tableDataHandler2.default.findElementIndex(tableData, rowIndex, newColIndex);
2936
+
2937
+ return $newTable.find('tr').eq(cellElementIndex.rowIndex).find('td, th')[cellElementIndex.colIndex];
2938
+ }
2939
+
2940
+ exports.default = AddCol;
2941
+
2942
+ /***/ }),
2943
+ /* 59 */
2944
+ /***/ (function(module, exports, __webpack_require__) {
2945
+
2946
+ "use strict";
2947
+
2948
+
2949
+ Object.defineProperty(exports, "__esModule", {
2950
+ value: true
2951
+ });
2952
+ exports._removeRow = _removeRow;
2953
+
2954
+ var _jquery = __webpack_require__(0);
2955
+
2956
+ var _jquery2 = _interopRequireDefault(_jquery);
2957
+
2958
+ var _tuiCodeSnippet = __webpack_require__(2);
2959
+
2960
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
2961
+
2962
+ var _editorProxy = __webpack_require__(1);
2963
+
2964
+ var _editorProxy2 = _interopRequireDefault(_editorProxy);
2965
+
2966
+ var _tableDataHandler = __webpack_require__(3);
2967
+
2968
+ var _tableDataHandler2 = _interopRequireDefault(_tableDataHandler);
2969
+
2970
+ var _tableRangeHandler = __webpack_require__(7);
2971
+
2972
+ var _tableRangeHandler2 = _interopRequireDefault(_tableRangeHandler);
2973
+
2974
+ var _tableRenderer = __webpack_require__(6);
2975
+
2976
+ var _tableRenderer2 = _interopRequireDefault(_tableRenderer);
2977
+
2978
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2979
+
2980
+ /**
2981
+ * @fileoverview Implements mergedTableRemoveRow
2982
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
2983
+ */
2984
+ var CommandManager = _editorProxy2.default.CommandManager;
2985
+
2986
+
2987
+ var RemoveRow = void 0;
2988
+ if (CommandManager) {
2989
+ RemoveRow = CommandManager.command('wysiwyg', /** @lends RemoveRow */{
2990
+ name: 'RemoveRow',
2991
+ /**
2992
+ * Command handler.
2993
+ * @param {WysiwygEditor} wwe - wysiwygEditor instance
2994
+ */
2995
+ exec: function exec(wwe) {
2996
+ var sq = wwe.getEditor();
2997
+ var range = sq.getSelection().cloneRange();
2998
+
2999
+ wwe.focus();
3000
+
3001
+ if (!sq.hasFormat('TABLE')) {
3002
+ return;
3003
+ }
3004
+
3005
+ var $startContainer = (0, _jquery2.default)(range.startContainer);
3006
+ var $table = $startContainer.closest('table');
3007
+ var tableData = _tableDataHandler2.default.createTableData($table);
3008
+ var beforeRowLength = tableData.length;
3009
+ var $selectedCells = wwe.componentManager.getManager('tableSelection').getSelectedCells();
3010
+ var tableRange = _tableRangeHandler2.default.getTableSelectionRange(tableData, $selectedCells, $startContainer);
3011
+
3012
+ sq.saveUndoState(range);
3013
+ _removeRow(tableData, tableRange);
3014
+
3015
+ if (tableData.length < 2) {
3016
+ $table.remove();
3017
+ } else if (beforeRowLength !== tableData.length) {
3018
+ var $newTable = _tableRenderer2.default.replaceTable($table, tableData);
3019
+
3020
+ var startRowIndex = tableRange.start.rowIndex;
3021
+ var focusRowIndex = startRowIndex < tableData.length ? startRowIndex : startRowIndex - 1;
3022
+ var focusCell = _findFocusTd($newTable, focusRowIndex, tableRange.start.colIndex);
3023
+ _tableRenderer2.default.focusToCell(sq, range, focusCell);
3024
+ }
3025
+ }
3026
+ });
3027
+ }
3028
+
3029
+ /**
3030
+ * Update rowspan to row merger.
3031
+ * @param {Array.<Array.<object>>} tableData - table data
3032
+ * @param {number} startRowIndex - start row index
3033
+ * @param {number} endRowIndex - end row index
3034
+ * @private
3035
+ */
3036
+ function _updateRowspan(tableData, startRowIndex, endRowIndex) {
3037
+ _tuiCodeSnippet2.default.range(startRowIndex, endRowIndex + 1).forEach(function (rowIndex) {
3038
+ tableData[rowIndex].forEach(function (cell, cellIndex) {
3039
+ if (_tuiCodeSnippet2.default.isExisty(cell.rowMergeWith)) {
3040
+ var merger = tableData[cell.rowMergeWith][cellIndex];
3041
+
3042
+ if (merger.rowspan) {
3043
+ merger.rowspan -= 1;
3044
+ }
3045
+ } else if (cell.rowspan > 1) {
3046
+ var lastMergedRowIndex = rowIndex + cell.rowspan - 1;
3047
+
3048
+ cell.rowspan -= endRowIndex - rowIndex + 1;
3049
+
3050
+ if (lastMergedRowIndex > endRowIndex) {
3051
+ tableData[endRowIndex + 1][cellIndex] = _tuiCodeSnippet2.default.extend({}, cell);
3052
+ }
3053
+ }
3054
+ });
3055
+ });
3056
+ }
3057
+
3058
+ /**
3059
+ * Update row merge start index to merged cell.
3060
+ * @param {Array.<Array.<object>>} tableData - table data
3061
+ * @param {number} startRowIndex - start row index
3062
+ * @param {number} endRowIndex - end row index
3063
+ * @private
3064
+ */
3065
+ function _updateMergeStartIndex(tableData, startRowIndex, endRowIndex) {
3066
+ tableData.slice(endRowIndex + 1).forEach(function (row) {
3067
+ row.forEach(function (cell) {
3068
+ if (_tuiCodeSnippet2.default.isExisty(cell.rowMergeWith) && cell.rowMergeWith >= startRowIndex) {
3069
+ cell.rowMergeWith = endRowIndex + 1;
3070
+ }
3071
+ });
3072
+ });
3073
+ }
3074
+
3075
+ /**
3076
+ * Remove row.
3077
+ * @param {Array.<Array.<object>>} tableData - table data
3078
+ * @param {{
3079
+ * start: {rowIndex: number, colIndex: number},
3080
+ * end: {rowIndex: number, colIndex: number}
3081
+ * }} tableRange - table selection range
3082
+ * @private
3083
+ */
3084
+ function _removeRow(tableData, tableRange) {
3085
+ var startRowIndex = tableRange.start.rowIndex;
3086
+ var endRange = tableRange.end;
3087
+ var endRowIndex = _tableDataHandler2.default.findRowMergedLastIndex(tableData, endRange.rowIndex, endRange.colIndex);
3088
+ if (startRowIndex === 0 && endRowIndex === 0) {
3089
+ return;
3090
+ }
3091
+
3092
+ startRowIndex = Math.max(startRowIndex, 1);
3093
+ endRowIndex = Math.max(endRowIndex, 1);
3094
+ var removeCount = endRowIndex - startRowIndex + 1;
3095
+
3096
+ // if only table body or table header left, remove table
3097
+ if (tableData.length - removeCount < 2) {
3098
+ tableData.splice(0, tableData.length);
3099
+ } else {
3100
+ _updateRowspan(tableData, startRowIndex, endRowIndex);
3101
+ _updateMergeStartIndex(tableData, startRowIndex, endRowIndex);
3102
+
3103
+ tableData.splice(startRowIndex, removeCount);
3104
+ }
3105
+ }
3106
+
3107
+ /**
3108
+ * Find focus td element.
3109
+ * @param {jQuery} $newTable - changed table jQuery element
3110
+ * @param {number} rowIndex - row index of table data
3111
+ * @param {number} colIndex - column index of tabld data
3112
+ * @returns {HTMLElement}
3113
+ * @private
3114
+ */
3115
+ function _findFocusTd($newTable, rowIndex, colIndex) {
3116
+ var tableData = _tableDataHandler2.default.createTableData($newTable);
3117
+
3118
+ if (tableData.length - 1 < rowIndex) {
3119
+ rowIndex -= 1;
3120
+ }
3121
+
3122
+ var cellElementIndex = _tableDataHandler2.default.findElementIndex(tableData, rowIndex, colIndex);
3123
+
3124
+ return $newTable.find('tr').eq(cellElementIndex.rowIndex).find('th,td')[cellElementIndex.colIndex];
3125
+ }
3126
+
3127
+ exports.default = RemoveRow;
3128
+
3129
+ /***/ }),
3130
+ /* 60 */
3131
+ /***/ (function(module, exports, __webpack_require__) {
3132
+
3133
+ "use strict";
3134
+
3135
+
3136
+ Object.defineProperty(exports, "__esModule", {
3137
+ value: true
3138
+ });
3139
+ exports._removeColumns = _removeColumns;
3140
+
3141
+ var _jquery = __webpack_require__(0);
3142
+
3143
+ var _jquery2 = _interopRequireDefault(_jquery);
3144
+
3145
+ var _tuiCodeSnippet = __webpack_require__(2);
3146
+
3147
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
3148
+
3149
+ var _editorProxy = __webpack_require__(1);
3150
+
3151
+ var _editorProxy2 = _interopRequireDefault(_editorProxy);
3152
+
3153
+ var _tableDataHandler = __webpack_require__(3);
3154
+
3155
+ var _tableDataHandler2 = _interopRequireDefault(_tableDataHandler);
3156
+
3157
+ var _tableRangeHandler = __webpack_require__(7);
3158
+
3159
+ var _tableRangeHandler2 = _interopRequireDefault(_tableRangeHandler);
3160
+
3161
+ var _tableRenderer = __webpack_require__(6);
3162
+
3163
+ var _tableRenderer2 = _interopRequireDefault(_tableRenderer);
3164
+
3165
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3166
+
3167
+ /**
3168
+ * @fileoverview Implements mergedTableRemoveCol. Remove col to selected table
3169
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
3170
+ */
3171
+ var CommandManager = _editorProxy2.default.CommandManager;
3172
+
3173
+
3174
+ var RemoveCol = void 0;
3175
+ if (CommandManager) {
3176
+ RemoveCol = CommandManager.command('wysiwyg', /** @lends RemoveCol */{
3177
+ name: 'RemoveCol',
3178
+ /**
3179
+ * Command handler.
3180
+ * @param {WysiwygEditor} wwe - wysiwygEditor instance
3181
+ */
3182
+ exec: function exec(wwe) {
3183
+ var sq = wwe.getEditor();
3184
+ var range = sq.getSelection().cloneRange();
3185
+
3186
+ wwe.focus();
3187
+
3188
+ if (!sq.hasFormat('TABLE')) {
3189
+ return;
3190
+ }
3191
+
3192
+ var $startContainer = (0, _jquery2.default)(range.startContainer);
3193
+ var $table = $startContainer.closest('table');
3194
+ var tableData = _tableDataHandler2.default.createTableData($table);
3195
+ var $selectedCells = wwe.componentManager.getManager('tableSelection').getSelectedCells();
3196
+ var tableRange = _tableRangeHandler2.default.getTableSelectionRange(tableData, $selectedCells, $startContainer);
3197
+ var beforeCellLength = tableData[0].length;
3198
+
3199
+ sq.saveUndoState(range);
3200
+ _removeColumns(tableData, tableRange);
3201
+
3202
+ if (tableData[0].length === 0) {
3203
+ $table.remove();
3204
+ } else if (beforeCellLength !== tableData[0].length) {
3205
+ var $newTable = _tableRenderer2.default.replaceTable($table, tableData);
3206
+
3207
+ var startColIndex = tableRange.start.colIndex;
3208
+ var focusColIndex = startColIndex >= tableData[0].length ? startColIndex - 1 : startColIndex;
3209
+ var focusCell = _findFocusCell($newTable, tableRange.start.rowIndex, focusColIndex);
3210
+ _tableRenderer2.default.focusToCell(sq, range, focusCell);
3211
+ }
3212
+ }
3213
+ });
3214
+ }
3215
+
3216
+ /**
3217
+ * Update colspan to col merger.
3218
+ * @param {Array.<Array.<object>>} tableData - table data
3219
+ * @param {number} startColIndex - start col index
3220
+ * @param {number} endColIndex - end col index
3221
+ * @private
3222
+ */
3223
+ function _updateColspan(tableData, startColIndex, endColIndex) {
3224
+ tableData.forEach(function (rowData) {
3225
+ _tuiCodeSnippet2.default.range(startColIndex, endColIndex + 1).forEach(function (colIndex) {
3226
+ var cellData = rowData[colIndex];
3227
+
3228
+ if (_tuiCodeSnippet2.default.isExisty(cellData.colMergeWith)) {
3229
+ var merger = rowData[cellData.colMergeWith];
3230
+
3231
+ if (merger.colspan) {
3232
+ merger.colspan -= 1;
3233
+ }
3234
+ } else if (cellData.colspan > 1) {
3235
+ var lastMergedCellIndex = colIndex + cellData.colspan - 1;
3236
+
3237
+ cellData.colspan -= endColIndex - colIndex + 1;
3238
+
3239
+ if (lastMergedCellIndex > endColIndex) {
3240
+ rowData[endColIndex + 1] = _tuiCodeSnippet2.default.extend({}, cellData);
3241
+ }
3242
+ }
3243
+ });
3244
+ });
3245
+ }
3246
+
3247
+ /**
3248
+ * Update row merge start index to merged cell.
3249
+ * @param {Array.<Array.<object>>} tableData - table data
3250
+ * @param {number} startColIndex - start col index
3251
+ * @param {number} endColIndex - end col index
3252
+ * @private
3253
+ */
3254
+ function _updateMergeStartIndex(tableData, startColIndex, endColIndex) {
3255
+ tableData.forEach(function (rowData) {
3256
+ rowData.slice(endColIndex + 1).forEach(function (cellData) {
3257
+ if (_tuiCodeSnippet2.default.isExisty(cellData.colMergeWith) && cellData.colMergeWith >= startColIndex) {
3258
+ cellData.colMergeWith = endColIndex + 1;
3259
+ }
3260
+ });
3261
+ });
3262
+ }
3263
+
3264
+ /**
3265
+ * Remove columns.
3266
+ * @param {Array.<Array.<object>>} tableData - table data
3267
+ * @param {{
3268
+ * start: {rowIndex: number, colIndex: number},
3269
+ * end: {rowIndex: number, colIndex: number}
3270
+ * }} tableRange - table selection range
3271
+ * @private
3272
+ */
3273
+ function _removeColumns(tableData, tableRange) {
3274
+ var startColIndex = tableRange.start.colIndex;
3275
+ var endRange = tableRange.end;
3276
+ var endColIndex = _tableDataHandler2.default.findColMergedLastIndex(tableData, endRange.rowIndex, endRange.colIndex);
3277
+ var removeCount = endColIndex - startColIndex + 1;
3278
+
3279
+ _updateColspan(tableData, startColIndex, endColIndex);
3280
+ _updateMergeStartIndex(tableData, startColIndex, endColIndex);
3281
+
3282
+ tableData.forEach(function (row) {
3283
+ row.splice(startColIndex, removeCount);
3284
+ });
3285
+ }
3286
+
3287
+ /**
3288
+ * Find focus cell element like td or th.
3289
+ * @param {jQuery} $newTable - changed table jQuery element
3290
+ * @param {number} rowIndex - row index of table data
3291
+ * @param {number} colIndex - column index of tabld data
3292
+ * @returns {HTMLElement}
3293
+ * @private
3294
+ */
3295
+ function _findFocusCell($newTable, rowIndex, colIndex) {
3296
+ var tableData = _tableDataHandler2.default.createTableData($newTable);
3297
+
3298
+ if (tableData[0].length - 1 < colIndex) {
3299
+ colIndex -= 1;
3300
+ }
3301
+
3302
+ var cellElementIndex = _tableDataHandler2.default.findElementIndex(tableData, rowIndex, colIndex);
3303
+
3304
+ return $newTable.find('tr').eq(cellElementIndex.rowIndex).find('td, th')[cellElementIndex.colIndex];
3305
+ }
3306
+
3307
+ exports.default = RemoveCol;
3308
+
3309
+ /***/ }),
3310
+ /* 61 */
3311
+ /***/ (function(module, exports, __webpack_require__) {
3312
+
3313
+ "use strict";
3314
+
3315
+
3316
+ Object.defineProperty(exports, "__esModule", {
3317
+ value: true
3318
+ });
3319
+
3320
+ var _jquery = __webpack_require__(0);
3321
+
3322
+ var _jquery2 = _interopRequireDefault(_jquery);
3323
+
3324
+ var _tuiCodeSnippet = __webpack_require__(2);
3325
+
3326
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
3327
+
3328
+ var _editorProxy = __webpack_require__(1);
3329
+
3330
+ var _editorProxy2 = _interopRequireDefault(_editorProxy);
3331
+
3332
+ var _tableDataHandler = __webpack_require__(3);
3333
+
3334
+ var _tableDataHandler2 = _interopRequireDefault(_tableDataHandler);
3335
+
3336
+ var _tableRangeHandler = __webpack_require__(7);
3337
+
3338
+ var _tableRangeHandler2 = _interopRequireDefault(_tableRangeHandler);
3339
+
3340
+ var _tableRenderer = __webpack_require__(6);
3341
+
3342
+ var _tableRenderer2 = _interopRequireDefault(_tableRenderer);
3343
+
3344
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3345
+
3346
+ /**
3347
+ * @fileoverview Implements mergedTableAlignCol. Align selected column's text content to given direction
3348
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
3349
+ */
3350
+ var CommandManager = _editorProxy2.default.CommandManager;
3351
+
3352
+
3353
+ var AlignCol = void 0;
3354
+ if (CommandManager) {
3355
+ AlignCol = CommandManager.command('wysiwyg', /** @lends AlignCol */{
3356
+ name: 'AlignCol',
3357
+ /**
3358
+ * Command handler.
3359
+ * @param {WysiwygEditor} wwe - wysiwygEditor instance
3360
+ * @param {string} alignDirection - align direction for table header
3361
+ */
3362
+ exec: function exec(wwe, alignDirection) {
3363
+ var sq = wwe.getEditor();
3364
+ var range = sq.getSelection().cloneRange();
3365
+
3366
+ wwe.focus();
3367
+
3368
+ if (!sq.hasFormat('TABLE')) {
3369
+ return;
3370
+ }
3371
+
3372
+ var $startContainer = (0, _jquery2.default)(range.startContainer);
3373
+ var $table = $startContainer.closest('table');
3374
+ var tableData = _tableDataHandler2.default.createTableData($table);
3375
+ var $selectedCells = wwe.componentManager.getManager('tableSelection').getSelectedCells();
3376
+ var tableRange = _tableRangeHandler2.default.getTableSelectionRange(tableData, $selectedCells, $startContainer);
3377
+
3378
+ _align(tableData[0], tableRange.start.colIndex, tableRange.end.colIndex, alignDirection);
3379
+
3380
+ var $newTable = _tableRenderer2.default.replaceTable($table, tableData);
3381
+ var focusCell = _findFocusCell($newTable, $startContainer);
3382
+
3383
+ _tableRenderer2.default.focusToCell(sq, range, focusCell);
3384
+ }
3385
+ });
3386
+ }
3387
+
3388
+ /**
3389
+ * Align to table header.
3390
+ * @param {Array.<object>} headRowData - head row data
3391
+ * @param {number} startColIndex - start column index for styling align
3392
+ * @param {number} endColIndex - end column index for styling align
3393
+ * @param {string} alignDirection - align direction
3394
+ * @private
3395
+ */
3396
+ function _align(headRowData, startColIndex, endColIndex, alignDirection) {
3397
+ _tuiCodeSnippet2.default.range(startColIndex, endColIndex + 1).forEach(function (colIndex) {
3398
+ var headCellData = headRowData[colIndex];
3399
+
3400
+ if (_tuiCodeSnippet2.default.isExisty(headCellData.colMergeWith)) {
3401
+ headRowData[headCellData.colMergeWith].align = alignDirection;
3402
+ } else {
3403
+ headCellData.align = alignDirection;
3404
+ }
3405
+ });
3406
+ }
3407
+
3408
+ /**
3409
+ * Find focus cell element like td or th.
3410
+ * @param {jQuery} $newTable - changed table jQuery element
3411
+ * @param {jQuery} $startContainer - start container jQuery element of text range
3412
+ * @returns {HTMLElement}
3413
+ * @private
3414
+ */
3415
+ function _findFocusCell($newTable, $startContainer) {
3416
+ var elementRowIndex = _tableDataHandler2.default.findElementRowIndex($startContainer);
3417
+ var elementColIndex = _tableDataHandler2.default.findElementColIndex($startContainer);
3418
+
3419
+ return $newTable.find('tr').eq(elementRowIndex).find('td, th')[elementColIndex];
3420
+ }
3421
+
3422
+ exports.default = AlignCol;
3423
+
3424
+ /***/ }),
3425
+ /* 62 */
3426
+ /***/ (function(module, exports, __webpack_require__) {
3427
+
3428
+ "use strict";
3429
+
3430
+
3431
+ Object.defineProperty(exports, "__esModule", {
3432
+ value: true
3433
+ });
3434
+ exports._mergeCells = _mergeCells;
3435
+
3436
+ var _jquery = __webpack_require__(0);
3437
+
3438
+ var _jquery2 = _interopRequireDefault(_jquery);
3439
+
3440
+ var _tuiCodeSnippet = __webpack_require__(2);
3441
+
3442
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
3443
+
3444
+ var _editorProxy = __webpack_require__(1);
3445
+
3446
+ var _editorProxy2 = _interopRequireDefault(_editorProxy);
3447
+
3448
+ var _tableDataHandler = __webpack_require__(3);
3449
+
3450
+ var _tableDataHandler2 = _interopRequireDefault(_tableDataHandler);
3451
+
3452
+ var _tableRangeHandler = __webpack_require__(7);
3453
+
3454
+ var _tableRangeHandler2 = _interopRequireDefault(_tableRangeHandler);
3455
+
3456
+ var _tableRenderer = __webpack_require__(6);
3457
+
3458
+ var _tableRenderer2 = _interopRequireDefault(_tableRenderer);
3459
+
3460
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3461
+
3462
+ /**
3463
+ * @fileoverview Implements MergeCell
3464
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
3465
+ */
3466
+ var CommandManager = _editorProxy2.default.CommandManager;
3467
+
3468
+ var BASIC_CELL_CONTENT = _tuiCodeSnippet2.default.browser.msie ? '' : '<br>';
3469
+
3470
+ var MergeCell = void 0;
3471
+ if (CommandManager) {
3472
+ MergeCell = CommandManager.command('wysiwyg', /** @lends MergeCell */{
3473
+ name: 'MergeCells',
3474
+ /**
3475
+ * Command handler.
3476
+ * @param {WysiwygEditor} wwe - wysiwygEditor instance
3477
+ */
3478
+ exec: function exec(wwe) {
3479
+ var sq = wwe.getEditor();
3480
+
3481
+ wwe.focus();
3482
+
3483
+ if (!sq.hasFormat('TABLE')) {
3484
+ return;
3485
+ }
3486
+
3487
+ var selectionManager = wwe.componentManager.getManager('tableSelection');
3488
+ var $selectedCells = selectionManager.getSelectedCells();
3489
+
3490
+ if ($selectedCells.length < 2 || selectionManager.hasSelectedBothThAndTd($selectedCells)) {
3491
+ return;
3492
+ }
3493
+
3494
+ var range = sq.getSelection().cloneRange();
3495
+ var $startContainer = (0, _jquery2.default)(range.startContainer);
3496
+ var $table = $startContainer.closest('table');
3497
+ var tableData = _tableDataHandler2.default.createTableData($table);
3498
+ var tableRange = _tableRangeHandler2.default.getTableSelectionRange(tableData, $selectedCells, $startContainer);
3499
+
3500
+ _mergeCells(tableData, tableRange);
3501
+
3502
+ var $newTable = _tableRenderer2.default.replaceTable($table, tableData);
3503
+ var focusCell = _findFocusCell($newTable, tableRange.start.rowIndex, tableRange.start.colIndex);
3504
+
3505
+ _tableRenderer2.default.focusToCell(sq, range, focusCell);
3506
+ }
3507
+ });
3508
+ }
3509
+
3510
+ /**
3511
+ * Pick merger content from selected cells.
3512
+ * @param {Array.<Array.<object>>} targetRows - target rows
3513
+ * @param {number} startColIndex - start column index
3514
+ * @param {number} endColIndex - end column index
3515
+ * @returns {string}
3516
+ * @private
3517
+ */
3518
+ function _pickContent(targetRows, startColIndex, endColIndex) {
3519
+ var _ref;
3520
+
3521
+ var limitColIndex = endColIndex + 1;
3522
+ var cells = (_ref = []).concat.apply(_ref, targetRows.map(function (rowData) {
3523
+ return rowData.slice(startColIndex, limitColIndex);
3524
+ }));
3525
+ var foundCellData = cells.filter(function (_ref2) {
3526
+ var content = _ref2.content;
3527
+ return content && content !== BASIC_CELL_CONTENT;
3528
+ });
3529
+
3530
+ return foundCellData.length ? foundCellData[0].content : BASIC_CELL_CONTENT;
3531
+ }
3532
+
3533
+ /**
3534
+ * Initialize cell data of target rows.
3535
+ * @param {Array.<Array.<object>>} targetRows - target rows
3536
+ * @param {number} startColIndex - start column index
3537
+ * @param {number} endColIndex - end column index
3538
+ * @private
3539
+ */
3540
+ function _initCellData(targetRows, startColIndex, endColIndex) {
3541
+ var _ref3;
3542
+
3543
+ var limitColIndex = endColIndex + 1;
3544
+ var targetCells = targetRows.map(function (rowData) {
3545
+ return rowData.slice(startColIndex, limitColIndex);
3546
+ });
3547
+
3548
+ (_ref3 = []).concat.apply(_ref3, targetCells).slice(1).forEach(function (cellData) {
3549
+ var nodeName = cellData.nodeName;
3550
+
3551
+
3552
+ _tuiCodeSnippet2.default.forEach(cellData, function (value, name) {
3553
+ return delete cellData[name];
3554
+ });
3555
+ cellData.nodeName = nodeName;
3556
+ });
3557
+ }
3558
+
3559
+ /**
3560
+ * Update rowMergeWith property of target rows for row merge.
3561
+ * @param {Array.<Array.<object>>} targetRows - target rows
3562
+ * @param {number} startColIndex - start column index
3563
+ * @param {number} endColIndex - end column index
3564
+ * @param {number} rowMergeWith - index of row merger
3565
+ * @private
3566
+ */
3567
+ function _updateRowMergeWith(targetRows, startColIndex, endColIndex, rowMergeWith) {
3568
+ var limitColIndex = endColIndex + 1;
3569
+
3570
+ targetRows.forEach(function (rowData) {
3571
+ rowData.slice(startColIndex, limitColIndex).forEach(function (cellData) {
3572
+ cellData.rowMergeWith = rowMergeWith;
3573
+ });
3574
+ });
3575
+ }
3576
+
3577
+ /**
3578
+ * Update colMergeWith property of target rows for column merge.
3579
+ * @param {Array.<Array.<object>>} targetRows - target rows
3580
+ * @param {number} startColIndex - start column index
3581
+ * @param {number} endColIndex - end column index
3582
+ * @param {number} colMergeWith - index of column merger
3583
+ * @private
3584
+ */
3585
+ function _updateColMergeWith(targetRows, startColIndex, endColIndex, colMergeWith) {
3586
+ var limitColIndex = endColIndex + 1;
3587
+
3588
+ targetRows.forEach(function (rowData) {
3589
+ rowData.slice(startColIndex, limitColIndex).forEach(function (cellData) {
3590
+ cellData.colMergeWith = colMergeWith;
3591
+ });
3592
+ });
3593
+ }
3594
+
3595
+ /**
3596
+ * Merge selected cells.
3597
+ * @param {Array.<Array.<object>>} tableData - table data
3598
+ * @param {{rowIndex: number, colIndex: number}} startRange - start table selection range
3599
+ * @param {{rowIndex: number, colIndex: number}} endRange - end table selection range
3600
+ * @private
3601
+ */
3602
+ function _mergeCells(tableData, _ref4) {
3603
+ var startRange = _ref4.start,
3604
+ endRange = _ref4.end;
3605
+
3606
+ var startRowIndex = startRange.rowIndex;
3607
+ var startColIndex = startRange.colIndex;
3608
+ var endRowIndex = endRange.rowIndex;
3609
+ var endColIndex = endRange.colIndex;
3610
+ var merger = tableData[startRowIndex][startColIndex];
3611
+ var targetRows = tableData.slice(startRowIndex, endRowIndex + 1);
3612
+ var rowspan = endRowIndex - startRowIndex + 1;
3613
+ var colspan = endColIndex - startColIndex + 1;
3614
+
3615
+ merger.rowspan = rowspan;
3616
+ merger.colspan = colspan;
3617
+ merger.content = _pickContent(targetRows, startColIndex, endColIndex);
3618
+ _initCellData(targetRows, startColIndex, endColIndex);
3619
+
3620
+ if (rowspan > 1) {
3621
+ _updateRowMergeWith(targetRows.slice(1), startColIndex, endColIndex, startRowIndex);
3622
+ }
3623
+
3624
+ if (colspan > 1) {
3625
+ _updateColMergeWith(targetRows, startColIndex + 1, endColIndex, startColIndex);
3626
+ }
3627
+ }
3628
+
3629
+ /**
3630
+ * Find focus cell element like td or th.
3631
+ * @param {jQuery} $newTable - changed table jQuery element
3632
+ * @param {number} rowIndex - row index of table data
3633
+ * @param {number} colIndex - column index of tabld data
3634
+ * @returns {HTMLElement}
3635
+ * @private
3636
+ */
3637
+ function _findFocusCell($newTable, rowIndex, colIndex) {
3638
+ var tableData = _tableDataHandler2.default.createTableData($newTable);
3639
+ var cellElementIndex = _tableDataHandler2.default.findElementIndex(tableData, rowIndex, colIndex);
3640
+
3641
+ return $newTable.find('tr').eq(cellElementIndex.rowIndex).find('td, th')[cellElementIndex.colIndex];
3642
+ }
3643
+
3644
+ exports.default = MergeCell;
3645
+
3646
+ /***/ }),
3647
+ /* 63 */
3648
+ /***/ (function(module, exports, __webpack_require__) {
3649
+
3650
+ "use strict";
3651
+
3652
+
3653
+ Object.defineProperty(exports, "__esModule", {
3654
+ value: true
3655
+ });
3656
+ exports._hasMergedCell = _hasMergedCell;
3657
+ exports._unmergeCells = _unmergeCells;
3658
+
3659
+ var _jquery = __webpack_require__(0);
3660
+
3661
+ var _jquery2 = _interopRequireDefault(_jquery);
3662
+
3663
+ var _tuiCodeSnippet = __webpack_require__(2);
3664
+
3665
+ var _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);
3666
+
3667
+ var _editorProxy = __webpack_require__(1);
3668
+
3669
+ var _editorProxy2 = _interopRequireDefault(_editorProxy);
3670
+
3671
+ var _tableDataHandler = __webpack_require__(3);
3672
+
3673
+ var _tableDataHandler2 = _interopRequireDefault(_tableDataHandler);
3674
+
3675
+ var _tableRangeHandler = __webpack_require__(7);
3676
+
3677
+ var _tableRangeHandler2 = _interopRequireDefault(_tableRangeHandler);
3678
+
3679
+ var _tableRenderer = __webpack_require__(6);
3680
+
3681
+ var _tableRenderer2 = _interopRequireDefault(_tableRenderer);
3682
+
3683
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3684
+
3685
+ /**
3686
+ * @fileoverview Implements UnmergeCell
3687
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
3688
+ */
3689
+ var CommandManager = _editorProxy2.default.CommandManager;
3690
+
3691
+
3692
+ var UnmergeCell = void 0;
3693
+ if (CommandManager) {
3694
+ UnmergeCell = CommandManager.command('wysiwyg', /** @lends UnmergeCell */{
3695
+ name: 'UnmergeCells',
3696
+ /**
3697
+ * Command handler.
3698
+ * @param {WysiwygEditor} wwe - wysiwygEditor instance
3699
+ */
3700
+ exec: function exec(wwe) {
3701
+ var sq = wwe.getEditor();
3702
+ var range = sq.getSelection().cloneRange();
3703
+
3704
+ wwe.focus();
3705
+
3706
+ if (!sq.hasFormat('TABLE')) {
3707
+ return;
3708
+ }
3709
+
3710
+ var $startContainer = (0, _jquery2.default)(range.startContainer);
3711
+ var $table = $startContainer.closest('table');
3712
+ var tableData = _tableDataHandler2.default.createTableData($table);
3713
+ var $selectedCells = wwe.componentManager.getManager('tableSelection').getSelectedCells();
3714
+ var tableRange = _tableRangeHandler2.default.getTableSelectionRange(tableData, $selectedCells, $startContainer);
3715
+
3716
+ if (!_hasMergedCell(tableData, tableRange)) {
3717
+ return;
3718
+ }
3719
+
3720
+ _unmergeCells(tableData, tableRange);
3721
+
3722
+ var $newTable = _tableRenderer2.default.replaceTable($table, tableData);
3723
+ var focusCell = _findFocusCell($newTable, tableRange.start.rowIndex, tableRange.start.colIndex);
3724
+
3725
+ _tableRenderer2.default.focusToCell(sq, range, focusCell);
3726
+ }
3727
+ });
3728
+ }
3729
+
3730
+ /**
3731
+ * Whether has merged cell.
3732
+ * @param {Array.<Array.<object>>} tableData - table data
3733
+ * @param {{rowIndex: number, colIndex: number}} startRange - start table selection range
3734
+ * @param {{rowIndex: number, colIndex: number}} endRange - end table selection range
3735
+ * @returns {boolean}
3736
+ * @private
3737
+ */
3738
+ function _hasMergedCell(tableData, _ref) {
3739
+ var _ref2;
3740
+
3741
+ var startRange = _ref.start,
3742
+ endRange = _ref.end;
3743
+
3744
+ var startColIndex = startRange.colIndex;
3745
+ var limitColIndex = endRange.colIndex + 1;
3746
+ var targetRows = tableData.slice(startRange.rowIndex, endRange.rowIndex + 1);
3747
+ var targetCells = targetRows.map(function (rowData) {
3748
+ return rowData.slice(startColIndex, limitColIndex);
3749
+ });
3750
+
3751
+ return !!(_ref2 = []).concat.apply(_ref2, targetCells).filter(function (cellData) {
3752
+ return cellData.colspan > 1 || cellData.rowspan > 1;
3753
+ }).length;
3754
+ }
3755
+
3756
+ /**
3757
+ * Update merged cell data to basic cell data.
3758
+ * @param {Array.<Array.<object>>} tableData - table data
3759
+ * @param {number} startRowIndex - start row index
3760
+ * @param {number} startColIndex - start col index
3761
+ * @param {number} rowspan - rowspan property of merger cell
3762
+ * @param {number} colspan - colspan property of merger cell
3763
+ * @private
3764
+ */
3765
+ function _updateMergedCells(tableData, startRowIndex, startColIndex, rowspan, colspan) {
3766
+ var limitRowIndex = startRowIndex + rowspan;
3767
+ var limitColIndex = startColIndex + colspan;
3768
+ var colRange = _tuiCodeSnippet2.default.range(startColIndex, limitColIndex);
3769
+
3770
+ _tuiCodeSnippet2.default.range(startRowIndex, limitRowIndex).forEach(function (rowIndex) {
3771
+ var rowData = tableData[rowIndex];
3772
+ var startIndex = rowIndex === startRowIndex ? 1 : 0;
3773
+
3774
+ colRange.slice(startIndex).forEach(function (colIndex) {
3775
+ rowData[colIndex] = _tableDataHandler2.default.createBasicCell(rowIndex, colIndex, rowData[colIndex].nodeName);
3776
+ });
3777
+ });
3778
+ }
3779
+
3780
+ /**
3781
+ * Unmerge selected cells.
3782
+ * @param {Array.<Array.<object>>} tableData - table data
3783
+ * @param {{rowIndex: number, colIndex: number}} startRange - start table selection range
3784
+ * @param {{rowIndex: number, colIndex: number}} endRange - end table selection range
3785
+ * @private
3786
+ */
3787
+ function _unmergeCells(tableData, _ref3) {
3788
+ var startRange = _ref3.start,
3789
+ endRange = _ref3.end;
3790
+
3791
+ var colRange = _tuiCodeSnippet2.default.range(startRange.colIndex, endRange.colIndex + 1);
3792
+
3793
+ _tuiCodeSnippet2.default.range(startRange.rowIndex, endRange.rowIndex + 1).forEach(function (rowIndex) {
3794
+ colRange.forEach(function (colIndex) {
3795
+ var cellData = tableData[rowIndex][colIndex];
3796
+ var colspan = cellData.colspan,
3797
+ rowspan = cellData.rowspan;
3798
+
3799
+
3800
+ if (colspan > 1 || rowspan > 1) {
3801
+ cellData.colspan = 1;
3802
+ cellData.rowspan = 1;
3803
+ _updateMergedCells(tableData, rowIndex, colIndex, rowspan, colspan);
3804
+ }
3805
+ });
3806
+ });
3807
+ }
3808
+
3809
+ /**
3810
+ * Find focus cell element like td or th.
3811
+ * @param {jQuery} $newTable - changed table jQuery element
3812
+ * @param {number} rowIndex - row index of table data
3813
+ * @param {number} colIndex - column index of tabld data
3814
+ * @returns {HTMLElement}
3815
+ * @private
3816
+ */
3817
+ function _findFocusCell($newTable, rowIndex, colIndex) {
3818
+ var tableData = _tableDataHandler2.default.createTableData($newTable);
3819
+ var cellElementIndex = _tableDataHandler2.default.findElementIndex(tableData, rowIndex, colIndex);
3820
+
3821
+ return $newTable.find('tr').eq(cellElementIndex.rowIndex).find('td, th')[cellElementIndex.colIndex];
3822
+ }
3823
+
3824
+ exports.default = UnmergeCell;
3825
+
3826
+ /***/ }),
3827
+ /* 64 */
3828
+ /***/ (function(module, exports, __webpack_require__) {
3829
+
3830
+ "use strict";
3831
+
3832
+
3833
+ Object.defineProperty(exports, "__esModule", {
3834
+ value: true
3835
+ });
3836
+
3837
+ var _jquery = __webpack_require__(0);
3838
+
3839
+ var _jquery2 = _interopRequireDefault(_jquery);
3840
+
3841
+ var _editorProxy = __webpack_require__(1);
3842
+
3843
+ var _editorProxy2 = _interopRequireDefault(_editorProxy);
3844
+
3845
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3846
+
3847
+ /**
3848
+ * @fileoverview Implements table extension ui
3849
+ * @author NHN Ent. FE Development Lab <dl_javascript@nhnent.com>
3850
+ */
3851
+ var i18n = _editorProxy2.default.i18n;
3852
+
3853
+ /**
3854
+ * Change contextmenu content.
3855
+ * @param {object} popupTableUtils - PopupTableUtils instance for managing contextmenu of table
3856
+ * @private
3857
+ */
3858
+
3859
+ function _changeContent(popupTableUtils) {
3860
+ var POPUP_CONTENT = ['<button type="button" class="te-table-add-row">' + i18n.get('Add row') + '</button>', '<button type="button" class="te-table-add-col">' + i18n.get('Add col') + '</button>', '<button type="button" class="te-table-remove-row">' + i18n.get('Remove row') + '</button>', '<button type="button" class="te-table-remove-col">' + i18n.get('Remove col') + '</button>', '<hr/>', '<button type="button" class="te-table-merge">' + i18n.get('Merge cells') + '</button>', '<button type="button" class="te-table-unmerge">' + i18n.get('Unmerge cells') + '</button>', '<hr/>', '<button type="button" class="te-table-col-align-left">' + i18n.get('Align left') + '</button>', '<button type="button" class="te-table-col-align-center">' + i18n.get('Align center') + '</button>', '<button type="button" class="te-table-col-align-right">' + i18n.get('Align right') + '</button>', '<hr/>', '<button type="button" class="te-table-remove">' + i18n.get('Remove table') + '</button>'].join('');
3861
+ var $popupContent = (0, _jquery2.default)(POPUP_CONTENT);
3862
+
3863
+ popupTableUtils.setContent($popupContent);
3864
+ }
3865
+
3866
+ /**
3867
+ * Bind events for merge feature of contextmenu.
3868
+ * @param {object} popupTableUtils - PopupTableUtils instance for managing contextmenu of table
3869
+ * @param {object} eventManager - event manager instance of editor
3870
+ * @param {object} selectionManager - table selection manager instance
3871
+ * @private
3872
+ */
3873
+ function _bindEvents(popupTableUtils, eventManager, selectionManager) {
3874
+ var $popupContent = popupTableUtils.$content;
3875
+ var $mergeBtn = (0, _jquery2.default)($popupContent[5]);
3876
+ var $unmergeBtn = (0, _jquery2.default)($popupContent[6]);
3877
+ var $separator = (0, _jquery2.default)($popupContent[7]);
3878
+
3879
+ popupTableUtils.on('click .te-table-merge', function () {
3880
+ eventManager.emit('command', 'MergeCells');
3881
+ });
3882
+
3883
+ popupTableUtils.on('click .te-table-unmerge', function () {
3884
+ eventManager.emit('command', 'UnmergeCells');
3885
+ });
3886
+
3887
+ eventManager.listen('openPopupTableUtils', function () {
3888
+ var $selectedCells = selectionManager.getSelectedCells();
3889
+ var selectedCellCount = $selectedCells.length;
3890
+
3891
+ if (selectedCellCount) {
3892
+ if (selectedCellCount < 2 || selectionManager.hasSelectedBothThAndTd($selectedCells)) {
3893
+ $mergeBtn.hide();
3894
+ } else {
3895
+ $mergeBtn.show();
3896
+ }
3897
+
3898
+ if ($selectedCells.is('[rowspan], [colspan]')) {
3899
+ $unmergeBtn.show();
3900
+ } else {
3901
+ $unmergeBtn.hide();
3902
+ }
3903
+ $separator.show();
3904
+ } else {
3905
+ $mergeBtn.hide();
3906
+ $unmergeBtn.hide();
3907
+ $separator.hide();
3908
+ }
3909
+ });
3910
+ }
3911
+
3912
+ /**
3913
+ * Update contextmenu UI.
3914
+ * @param {object} popupTableUtils - PopupTableUtils instance for managing contextmenu of table
3915
+ * @param {object} eventManager - event manager instance of editor
3916
+ * @param {object} selectionManager - table selection manager instance
3917
+ * @ignore
3918
+ */
3919
+ function updateContextMenu(popupTableUtils, eventManager, selectionManager) {
3920
+ _changeContent(popupTableUtils);
3921
+ _bindEvents(popupTableUtils, eventManager, selectionManager);
3922
+ }
3923
+
3924
+ exports.default = {
3925
+ updateContextMenu: updateContextMenu
3926
+ };
3927
+
3928
+ /***/ })
3929
+ /******/ ]);
3930
+ });