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,37 @@
1
+ {
2
+ "name": "tui-color-picker",
3
+ "authors": [
4
+ "NHNent. FE Development Lab <dl_javascript@nhnent.com>"
5
+ ],
6
+ "main": [
7
+ "dist/tui-color-picker.js",
8
+ "dist/tui-color-picker.css"
9
+ ],
10
+ "license": "MIT",
11
+ "ignore": [
12
+ "**/.*",
13
+ "node_modules",
14
+ "bower_components",
15
+ "examples",
16
+ "src",
17
+ "test",
18
+ "jsdoc.conf.json",
19
+ "karma.conf.js",
20
+ "webpack.config.js",
21
+ "package.json"
22
+ ],
23
+ "dependencies": {
24
+ "tui-code-snippet": "^1.2.5"
25
+ },
26
+ "homepage": "https://github.com/nhnent/tui.color-picker",
27
+ "version": "2.0.1",
28
+ "_release": "2.0.1",
29
+ "_resolution": {
30
+ "type": "version",
31
+ "tag": "v2.0.1",
32
+ "commit": "0e98a86c4b67305e0c2c89b7963c186a9e16d5b7"
33
+ },
34
+ "_source": "https://github.com/nhnent/tui.color-picker.git",
35
+ "_target": "^2.0.1",
36
+ "_originalSource": "tui-color-picker"
37
+ }
@@ -0,0 +1,26 @@
1
+ <!--
2
+ Thank you for your contribution.
3
+
4
+ When it comes to write an issue, please, use the template below.
5
+ To use the template is mandatory for submit new issue and we won't reply the issue that without the template.
6
+
7
+ And you can write template's contents in Korean also.
8
+ -->
9
+
10
+ <!-- TEMPLATE -->
11
+
12
+ ## Version
13
+ <!-- Write the version of the grid you are currently using. -->
14
+
15
+ ## Development Environment
16
+ <!-- Write the browser type, OS and so on -->
17
+
18
+ ## Current Behavior
19
+ <!-- Write a description of the current operation. You can add example code, 'CodePen' or 'jsfiddle' links. -->
20
+
21
+ ```js
22
+ // Write example code
23
+ ```
24
+
25
+ ## Expected Behavior
26
+ <!-- Write a description of the future action. -->
@@ -0,0 +1,34 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2017 - present NHN Entertainment Corp.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
22
+
23
+
24
+
25
+
26
+ Base16 colorset for palette default option
27
+
28
+ Copyright (C) 2012 Chris Kempson
29
+
30
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
31
+
32
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
33
+
34
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,69 @@
1
+ # ColorPicker
2
+ Component that used to select and adjust color values
3
+
4
+ ## Documentation
5
+ * **API** : [https://nhnent.github.io/tui.color-picker/latest](https://nhnent.github.io/tui.color-picker/latest)
6
+ * **Tutorial** : [https://github.com/nhnent/tui.color-picker/wiki](https://github.com/nhnent/tui.color-picker/wiki)
7
+ * **Example** :
8
+ [https://nhnent.github.io/tui.color-picker/latest/tutorial-example01-basic.html](https://nhnent.github.io/tui.color-picker/latest/tutorial-example01-basic.html)
9
+
10
+ ## Dependency
11
+ * [tui-code-snippet](https://github.com/nhnent/tui.code-snippet) >=1.2.5
12
+
13
+ ## Tested Browsers
14
+ ### PC
15
+ * IE8~11
16
+ * Edge
17
+ * Chrome
18
+ * Firefox
19
+ * Safari
20
+
21
+ ## Usage
22
+ ### Use `npm`
23
+ Install the latest version using `npm` command:
24
+
25
+ ```
26
+ $ npm install tui-color-picker --save
27
+ ```
28
+
29
+ or want to install the each version:
30
+
31
+ ```
32
+ $ npm install tui-color-picker@<version> --save
33
+ ```
34
+
35
+ To access as module format in your code:
36
+
37
+ ```javascript
38
+ var colorPicker = require('tui-color-picker');
39
+ var instance = colorPicker.create({
40
+ container: document.getElementById('color-picker')
41
+ });
42
+ ```
43
+
44
+ ### Use `bower`
45
+ Install the latest version using `bower` command:
46
+
47
+ ```
48
+ $ bower install tui-color-picker
49
+ ```
50
+
51
+ or want to install the each version:
52
+
53
+ ```
54
+ $ bower install tui-color-picker#<tag>
55
+ ```
56
+
57
+ To access as namespace format in your code:
58
+
59
+ ```javascript
60
+ var instance = tui.colorPicker.create({
61
+ container: document.getElementById('color-picker')
62
+ });
63
+ ```
64
+ ### Download
65
+ * [Download bundle files from `dist` folder](https://github.com/nhnent/tui.color-pditor/tree/production/dist)
66
+ * [Download all sources for each version](https://github.com/nhnent/tui.color-picker/releases)
67
+
68
+ ## License
69
+ [MIT LICENSE](https://github.com/nhnent/tui.color-picker/raw/master/LICENSE)
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "tui-color-picker",
3
+ "authors": [
4
+ "NHNent. FE Development Lab <dl_javascript@nhnent.com>"
5
+ ],
6
+ "main": [
7
+ "dist/tui-color-picker.js",
8
+ "dist/tui-color-picker.css"
9
+ ],
10
+ "license": "MIT",
11
+ "ignore": [
12
+ "**/.*",
13
+ "node_modules",
14
+ "bower_components",
15
+ "examples",
16
+ "src",
17
+ "test",
18
+ "jsdoc.conf.json",
19
+ "karma.conf.js",
20
+ "webpack.config.js",
21
+ "package.json"
22
+ ],
23
+ "dependencies": {
24
+ "tui-code-snippet": "^1.2.5"
25
+ }
26
+ }
@@ -0,0 +1,148 @@
1
+ /*!
2
+ * Toast UI Colorpicker
3
+ * @version 2.0.1
4
+ * @author NHNEnt FE Development Team <dl_javascript@nhnent.com>
5
+ * @license MIT
6
+ */
7
+ .tui-colorpicker-clearfix {
8
+ zoom: 1;
9
+ }
10
+ .tui-colorpicker-clearfix:after {
11
+ content: '';
12
+ display: block;
13
+ clear: both;
14
+ }
15
+ .tui-colorpicker-vml {
16
+ behavior: url("#default#VML");
17
+ display: block;
18
+ }
19
+ .tui-colorpicker-container {
20
+ width: 152px;
21
+ }
22
+ .tui-colorpicker-palette-container {
23
+ width: 152px;
24
+ }
25
+ .tui-colorpicker-palette-container ul {
26
+ width: 152px;
27
+ margin: 0px;
28
+ padding: 0px;
29
+ }
30
+ .tui-colorpicker-palette-container li {
31
+ float: left;
32
+ margin: 0;
33
+ padding: 0 3px 3px 0;
34
+ list-style: none;
35
+ }
36
+ .tui-colorpicker-palette-button {
37
+ display: block;
38
+ border: none;
39
+ overflow: hidden;
40
+ outline: none;
41
+ margin: 0px;
42
+ padding: 0px;
43
+ width: 16px;
44
+ height: 16px;
45
+ border: 1px solid #ccc;
46
+ cursor: pointer;
47
+ }
48
+ .tui-colorpicker-palette-button.tui-colorpicker-selected {
49
+ border: 2px solid #000;
50
+ }
51
+ .tui-colorpicker-palette-hex {
52
+ font-family: monospace;
53
+ display: inline-block;
54
+ *display: inline;
55
+ zoom: 1;
56
+ width: 60px;
57
+ vertical-align: middle;
58
+ }
59
+ .tui-colorpicker-palette-preview {
60
+ display: inline-block;
61
+ *display: inline;
62
+ zoom: 1;
63
+ width: 12px;
64
+ height: 12px;
65
+ border: 1px solid #ccc;
66
+ border: 1px solid #ccc;
67
+ vertical-align: middle;
68
+ overflow: hidden;
69
+ }
70
+ .tui-colorpicker-palette-toggle-slider {
71
+ display: inline-block;
72
+ *display: inline;
73
+ zoom: 1;
74
+ vertical-align: middle;
75
+ float: right;
76
+ }
77
+ .tui-colorpicker-slider-container {
78
+ margin: 5px 0 0 0;
79
+ height: 122px;
80
+ zoom: 1;
81
+ }
82
+ .tui-colorpicker-slider-container:after {
83
+ content: '';
84
+ display: block;
85
+ clear: both;
86
+ }
87
+ .tui-colorpicker-slider-left {
88
+ float: left;
89
+ width: 120px;
90
+ height: 120px;
91
+ }
92
+ .tui-colorpicker-slider-right {
93
+ float: right;
94
+ width: 32px;
95
+ height: 120px;
96
+ }
97
+ .tui-colorpicker-svg {
98
+ display: block;
99
+ }
100
+ .tui-colorpicker-slider-handle {
101
+ position: absolute;
102
+ overflow: visible;
103
+ top: 0;
104
+ left: 0;
105
+ width: 1px;
106
+ height: 1px;
107
+ z-index: 2;
108
+ opacity: 0.9;
109
+ }
110
+ .tui-colorpicker-svg-slider {
111
+ width: 120px;
112
+ height: 120px;
113
+ border: 1px solid #ccc;
114
+ overflow: hidden;
115
+ }
116
+ .tui-colorpicker-vml-slider {
117
+ position: relative;
118
+ width: 120px;
119
+ height: 120px;
120
+ border: 1px solid #ccc;
121
+ overflow: hidden;
122
+ }
123
+ .tui-colorpicker-vml-slider-bg {
124
+ position: absolute;
125
+ margin: -1px 0 0 -1px;
126
+ top: 0;
127
+ left: 0;
128
+ width: 122px;
129
+ height: 122px;
130
+ }
131
+ .tui-colorpicker-svg-huebar {
132
+ float: right;
133
+ width: 18px;
134
+ height: 120px;
135
+ border: 1px solid #ccc;
136
+ overflow: visible;
137
+ }
138
+ .tui-colorpicker-vml-huebar {
139
+ width: 32px;
140
+ position: relative;
141
+ }
142
+ .tui-colorpicker-vml-huebar-bg {
143
+ position: absolute;
144
+ top: 0;
145
+ right: 0;
146
+ width: 18px;
147
+ height: 121px;
148
+ }
@@ -0,0 +1,3146 @@
1
+ /*!
2
+ * Toast UI Colorpicker
3
+ * @version 2.0.1
4
+ * @author NHNEnt FE Development Team <dl_javascript@nhnent.com>
5
+ * @license MIT
6
+ */
7
+ (function webpackUniversalModuleDefinition(root, factory) {
8
+ if(typeof exports === 'object' && typeof module === 'object')
9
+ module.exports = factory(require("tui-code-snippet"));
10
+ else if(typeof define === 'function' && define.amd)
11
+ define(["tui-code-snippet"], factory);
12
+ else if(typeof exports === 'object')
13
+ exports["colorPicker"] = factory(require("tui-code-snippet"));
14
+ else
15
+ root["tui"] = root["tui"] || {}, root["tui"]["colorPicker"] = factory((root["tui"] && root["tui"]["util"]));
16
+ })(this, function(__WEBPACK_EXTERNAL_MODULE_8__) {
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
+ /******/ exports: {},
31
+ /******/ id: moduleId,
32
+ /******/ loaded: false
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.loaded = 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
+ /******/ // __webpack_public_path__
53
+ /******/ __webpack_require__.p = "dist";
54
+
55
+ /******/ // Load entry module and return exports
56
+ /******/ return __webpack_require__(0);
57
+ /******/ })
58
+ /************************************************************************/
59
+ /******/ ([
60
+ /* 0 */
61
+ /***/ (function(module, exports, __webpack_require__) {
62
+
63
+ __webpack_require__(1);
64
+ module.exports = __webpack_require__(6);
65
+
66
+
67
+ /***/ }),
68
+ /* 1 */
69
+ /***/ (function(module, exports) {
70
+
71
+ // removed by extract-text-webpack-plugin
72
+
73
+ /***/ }),
74
+ /* 2 */,
75
+ /* 3 */,
76
+ /* 4 */,
77
+ /* 5 */,
78
+ /* 6 */
79
+ /***/ (function(module, exports, __webpack_require__) {
80
+
81
+ 'use strict';
82
+
83
+ var domutil = __webpack_require__(7);
84
+ var domevent = __webpack_require__(9);
85
+ var Collection = __webpack_require__(10);
86
+ var View = __webpack_require__(11);
87
+ var Drag = __webpack_require__(12);
88
+ var create = __webpack_require__(13);
89
+ var Palette = __webpack_require__(16);
90
+ var Slider = __webpack_require__(18);
91
+ var colorutil = __webpack_require__(14);
92
+ var svgvml = __webpack_require__(19);
93
+
94
+ var colorPicker = {
95
+ domutil: domutil,
96
+ domevent: domevent,
97
+ Collection: Collection,
98
+ View: View,
99
+ Drag: Drag,
100
+
101
+ create: create,
102
+ Palette: Palette,
103
+ Slider: Slider,
104
+ colorutil: colorutil,
105
+ svgvml: svgvml
106
+ };
107
+
108
+ module.exports = colorPicker;
109
+
110
+ /***/ }),
111
+ /* 7 */
112
+ /***/ (function(module, exports, __webpack_require__) {
113
+
114
+ /**
115
+ * @fileoverview Utility modules for manipulate DOM elements.
116
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
117
+ */
118
+
119
+ 'use strict';
120
+
121
+ var snippet = __webpack_require__(8);
122
+ var domevent = __webpack_require__(9);
123
+ var Collection = __webpack_require__(10);
124
+
125
+ var util = snippet,
126
+ posKey = '_pos',
127
+ supportSelectStart = 'onselectstart' in document,
128
+ prevSelectStyle = '',
129
+ domutil,
130
+ userSelectProperty;
131
+
132
+ var CSS_AUTO_REGEX = /^auto$|^$|%/;
133
+
134
+ function trim(str) {
135
+ return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
136
+ }
137
+
138
+ domutil = {
139
+ /**
140
+ * Create DOM element and return it.
141
+ * @param {string} tagName Tag name to append.
142
+ * @param {HTMLElement} [container] HTML element will be parent to created element.
143
+ * if not supplied, will use **document.body**
144
+ * @param {string} [className] Design class names to appling created element.
145
+ * @returns {HTMLElement} HTML element created.
146
+ */
147
+ appendHTMLElement: function (tagName, container, className) {
148
+ var el;
149
+
150
+ className = className || '';
151
+
152
+ el = document.createElement(tagName);
153
+ el.className = className;
154
+
155
+ if (container) {
156
+ container.appendChild(el);
157
+ } else {
158
+ document.body.appendChild(el);
159
+ }
160
+
161
+ return el;
162
+ },
163
+
164
+ /**
165
+ * Remove element from parent node.
166
+ * @param {HTMLElement} el - element to remove.
167
+ */
168
+ remove: function (el) {
169
+ if (el && el.parentNode) {
170
+ el.parentNode.removeChild(el);
171
+ }
172
+ },
173
+
174
+ /**
175
+ * Get element by id
176
+ * @param {string} id element id attribute
177
+ * @returns {HTMLElement} element
178
+ */
179
+ get: function (id) {
180
+ return document.getElementById(id);
181
+ },
182
+
183
+ /**
184
+ * Check supplied element is matched selector.
185
+ * @param {HTMLElement} el - element to check
186
+ * @param {string} selector - selector string to check
187
+ * @returns {boolean} match?
188
+ */
189
+ _matcher: function (el, selector) {
190
+ var cssClassSelector = /^\./,
191
+ idSelector = /^#/;
192
+
193
+ if (cssClassSelector.test(selector)) {
194
+ return domutil.hasClass(el, selector.replace('.', ''));
195
+ } else if (idSelector.test(selector)) {
196
+ return el.id === selector.replace('#', '');
197
+ }
198
+
199
+ return el.nodeName.toLowerCase() === selector.toLowerCase();
200
+ },
201
+
202
+ /**
203
+ * Find DOM element by specific selectors.
204
+ * below three selector only supported.
205
+ *
206
+ * 1. css selector
207
+ * 2. id selector
208
+ * 3. nodeName selector
209
+ * @param {string} selector selector
210
+ * @param {(HTMLElement|string)} [root] You can assign root element to find. if not supplied, document.body will use.
211
+ * @param {boolean|function} [multiple=false] - set true then return all elements that meet condition, if set function then use it filter function.
212
+ * @returns {HTMLElement} HTML element finded.
213
+ */
214
+ find: function (selector, root, multiple) {
215
+ var result = [],
216
+ found = false,
217
+ isFirst = util.isUndefined(multiple) || multiple === false,
218
+ isFilter = util.isFunction(multiple);
219
+
220
+ if (util.isString(root)) {
221
+ root = domutil.get(root);
222
+ }
223
+
224
+ root = root || window.document.body;
225
+
226
+ function recurse(el, selector) {
227
+ var childNodes = el.childNodes,
228
+ i = 0,
229
+ len = childNodes.length,
230
+ cursor;
231
+
232
+ for (; i < len; i += 1) {
233
+ cursor = childNodes[i];
234
+
235
+ if (cursor.nodeName === '#text') {
236
+ continue;
237
+ }
238
+
239
+ if (domutil._matcher(cursor, selector)) {
240
+ if (isFilter && multiple(cursor) || !isFilter) {
241
+ result.push(cursor);
242
+ }
243
+
244
+ if (isFirst) {
245
+ found = true;
246
+ break;
247
+ }
248
+ } else if (cursor.childNodes.length > 0) {
249
+ recurse(cursor, selector);
250
+ if (found) {
251
+ break;
252
+ }
253
+ }
254
+ }
255
+ }
256
+
257
+ recurse(root, selector);
258
+
259
+ return isFirst ? result[0] || null : result;
260
+ },
261
+
262
+ /**
263
+ * Find parent element recursively.
264
+ * @param {HTMLElement} el - base element to start find.
265
+ * @param {string} selector - selector string for find
266
+ * @returns {HTMLElement} - element finded or undefined.
267
+ */
268
+ closest: function (el, selector) {
269
+ var parent = el.parentNode;
270
+
271
+ if (domutil._matcher(el, selector)) {
272
+ return el;
273
+ }
274
+
275
+ while (parent && parent !== window.document.body) {
276
+ if (domutil._matcher(parent, selector)) {
277
+ return parent;
278
+ }
279
+
280
+ parent = parent.parentNode;
281
+ }
282
+ },
283
+
284
+ /**
285
+ * Return texts inside element.
286
+ * @param {HTMLElement} el target element
287
+ * @returns {string} text inside node
288
+ */
289
+ text: function (el) {
290
+ var ret = '',
291
+ i = 0,
292
+ nodeType = el.nodeType;
293
+
294
+ if (nodeType) {
295
+ if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
296
+ // nodes that available contain other nodes
297
+ if (typeof el.textContent === 'string') {
298
+ return el.textContent;
299
+ }
300
+
301
+ for (el = el.firstChild; el; el = el.nextSibling) {
302
+ ret += domutil.text(el);
303
+ }
304
+ } else if (nodeType === 3 || nodeType === 4) {
305
+ // TEXT, CDATA SECTION
306
+ return el.nodeValue;
307
+ }
308
+ } else {
309
+ for (; el[i]; i += 1) {
310
+ ret += domutil.text(el[i]);
311
+ }
312
+ }
313
+
314
+ return ret;
315
+ },
316
+
317
+ /**
318
+ * Set data attribute to target element
319
+ * @param {HTMLElement} el - element to set data attribute
320
+ * @param {string} key - key
321
+ * @param {string|number} data - data value
322
+ */
323
+ setData: function (el, key, data) {
324
+ if ('dataset' in el) {
325
+ el.dataset[key] = data;
326
+
327
+ return;
328
+ }
329
+
330
+ el.setAttribute('data-' + key, data);
331
+ },
332
+
333
+ /**
334
+ * Get data value from data-attribute
335
+ * @param {HTMLElement} el - target element
336
+ * @param {string} key - key
337
+ * @returns {string} value
338
+ */
339
+ getData: function (el, key) {
340
+ if ('dataset' in el) {
341
+ return el.dataset[key];
342
+ }
343
+
344
+ return el.getAttribute('data-' + key);
345
+ },
346
+
347
+ /**
348
+ * Check element has specific design class name.
349
+ * @param {HTMLElement} el target element
350
+ * @param {string} name css class
351
+ * @returns {boolean} return true when element has that css class name
352
+ */
353
+ hasClass: function (el, name) {
354
+ var className;
355
+
356
+ if (!util.isUndefined(el.classList)) {
357
+ return el.classList.contains(name);
358
+ }
359
+
360
+ className = domutil.getClass(el);
361
+
362
+ return className.length > 0 && new RegExp('(^|\\s)' + name + '(\\s|$)').test(className);
363
+ },
364
+
365
+ /**
366
+ * Add design class to HTML element.
367
+ * @param {HTMLElement} el target element
368
+ * @param {string} name css class name
369
+ */
370
+ addClass: function (el, name) {
371
+ var className;
372
+
373
+ if (!util.isUndefined(el.classList)) {
374
+ util.forEachArray(name.split(' '), function (value) {
375
+ el.classList.add(value);
376
+ });
377
+ } else if (!domutil.hasClass(el, name)) {
378
+ className = domutil.getClass(el);
379
+ domutil.setClass(el, (className ? className + ' ' : '') + name);
380
+ }
381
+ },
382
+
383
+ /**
384
+ *
385
+ * Overwrite design class to HTML element.
386
+ * @param {HTMLElement} el target element
387
+ * @param {string} name css class name
388
+ */
389
+ setClass: function (el, name) {
390
+ if (util.isUndefined(el.className.baseVal)) {
391
+ el.className = name;
392
+ } else {
393
+ el.className.baseVal = name;
394
+ }
395
+ },
396
+
397
+ /**
398
+ * Element에 cssClass속성을 제거하는 메서드
399
+ * Remove specific design class from HTML element.
400
+ * @param {HTMLElement} el target element
401
+ * @param {string} name class name to remove
402
+ */
403
+ removeClass: function (el, name) {
404
+ var removed = '';
405
+
406
+ if (!util.isUndefined(el.classList)) {
407
+ el.classList.remove(name);
408
+ } else {
409
+ removed = (' ' + domutil.getClass(el) + ' ').replace(' ' + name + ' ', ' ');
410
+ domutil.setClass(el, trim(removed));
411
+ }
412
+ },
413
+
414
+ /**
415
+ * Get HTML element's design classes.
416
+ * @param {HTMLElement} el target element
417
+ * @returns {string} element css class name
418
+ */
419
+ getClass: function (el) {
420
+ if (!el || !el.className) {
421
+ return '';
422
+ }
423
+
424
+ return util.isUndefined(el.className.baseVal) ? el.className : el.className.baseVal;
425
+ },
426
+
427
+ /**
428
+ * Get specific CSS style value from HTML element.
429
+ * @param {HTMLElement} el target element
430
+ * @param {string} style css attribute name
431
+ * @returns {(string|null)} css style value
432
+ */
433
+ getStyle: function (el, style) {
434
+ var value = el.style[style] || el.currentStyle && el.currentStyle[style],
435
+ css;
436
+
437
+ if ((!value || value === 'auto') && document.defaultView) {
438
+ css = document.defaultView.getComputedStyle(el, null);
439
+ value = css ? css[style] : null;
440
+ }
441
+
442
+ return value === 'auto' ? null : value;
443
+ },
444
+
445
+ /**
446
+ * get element's computed style values.
447
+ *
448
+ * in lower IE8. use polyfill function that return object. it has only one function 'getPropertyValue'
449
+ * @param {HTMLElement} el - element want to get style.
450
+ * @returns {object} virtual CSSStyleDeclaration object.
451
+ */
452
+ getComputedStyle: function (el) {
453
+ var defaultView = document.defaultView;
454
+
455
+ if (!defaultView || !defaultView.getComputedStyle) {
456
+ return {
457
+ getPropertyValue: function (prop) {
458
+ var re = /(\-([a-z]){1})/g;
459
+ if (prop === 'float') {
460
+ prop = 'styleFloat';
461
+ }
462
+
463
+ if (re.test(prop)) {
464
+ prop = prop.replace(re, function () {
465
+ return arguments[2].toUpperCase();
466
+ });
467
+ }
468
+
469
+ return el.currentStyle[prop] ? el.currentStyle[prop] : null;
470
+ }
471
+ };
472
+ }
473
+
474
+ return document.defaultView.getComputedStyle(el);
475
+ },
476
+
477
+ /**
478
+ * Set position CSS style.
479
+ * @param {HTMLElement} el target element
480
+ * @param {number} [x=0] left pixel value.
481
+ * @param {number} [y=0] top pixel value.
482
+ */
483
+ setPosition: function (el, x, y) {
484
+ x = util.isUndefined(x) ? 0 : x;
485
+ y = util.isUndefined(y) ? 0 : y;
486
+
487
+ el[posKey] = [x, y];
488
+
489
+ el.style.left = x + 'px';
490
+ el.style.top = y + 'px';
491
+ },
492
+
493
+ /**
494
+ * Get position from HTML element.
495
+ * @param {HTMLElement} el target element
496
+ * @param {boolean} [clear=false] clear cache before calculating position.
497
+ * @returns {number[]} point
498
+ */
499
+ getPosition: function (el, clear) {
500
+ var left, top, bound;
501
+
502
+ if (clear) {
503
+ el[posKey] = null;
504
+ }
505
+
506
+ if (el[posKey]) {
507
+ return el[posKey];
508
+ }
509
+
510
+ left = 0;
511
+ top = 0;
512
+
513
+ if ((CSS_AUTO_REGEX.test(el.style.left) || CSS_AUTO_REGEX.test(el.style.top)) && 'getBoundingClientRect' in el) {
514
+ // 엘리먼트의 left또는 top이 'auto'일 때 수단
515
+ bound = el.getBoundingClientRect();
516
+
517
+ left = bound.left;
518
+ top = bound.top;
519
+ } else {
520
+ left = parseFloat(el.style.left || 0);
521
+ top = parseFloat(el.style.top || 0);
522
+ }
523
+
524
+ return [left, top];
525
+ },
526
+
527
+ /**
528
+ * Return element's size
529
+ * @param {HTMLElement} el target element
530
+ * @returns {number[]} width, height
531
+ */
532
+ getSize: function (el) {
533
+ var bound,
534
+ width = domutil.getStyle(el, 'width'),
535
+ height = domutil.getStyle(el, 'height');
536
+
537
+ if ((CSS_AUTO_REGEX.test(width) || CSS_AUTO_REGEX.test(height)) && 'getBoundingClientRect' in el) {
538
+ bound = el.getBoundingClientRect();
539
+ width = bound.width;
540
+ height = bound.height;
541
+ } else {
542
+ width = parseFloat(width || 0);
543
+ height = parseFloat(height || 0);
544
+ }
545
+
546
+ return [width, height];
547
+ },
548
+
549
+ /**
550
+ * Check specific CSS style is available.
551
+ * @param {array} props property name to testing
552
+ * @returns {(string|boolean)} return true when property is available
553
+ * @example
554
+ * var props = ['transform', '-webkit-transform'];
555
+ * domutil.testProp(props); // 'transform'
556
+ */
557
+ testProp: function (props) {
558
+ var style = document.documentElement.style,
559
+ i = 0,
560
+ len = props.length;
561
+
562
+ for (; i < len; i += 1) {
563
+ if (props[i] in style) {
564
+ return props[i];
565
+ }
566
+ }
567
+
568
+ return false;
569
+ },
570
+
571
+ /**
572
+ * Get form data
573
+ * @param {HTMLFormElement} formElement - form element to extract data
574
+ * @returns {object} form data
575
+ */
576
+ getFormData: function (formElement) {
577
+ var groupedByName = new Collection(function () {
578
+ return this.length;
579
+ }),
580
+ noDisabledFilter = function (el) {
581
+ return !el.disabled;
582
+ },
583
+ output = {};
584
+
585
+ groupedByName.add.apply(groupedByName, domutil.find('input', formElement, noDisabledFilter).concat(domutil.find('select', formElement, noDisabledFilter)).concat(domutil.find('textarea', formElement, noDisabledFilter)));
586
+
587
+ groupedByName = groupedByName.groupBy(function (el) {
588
+ return el && el.getAttribute('name') || '_other';
589
+ });
590
+
591
+ util.forEach(groupedByName, function (elements, name) {
592
+ if (name === '_other') {
593
+ return;
594
+ }
595
+
596
+ elements.each(function (el) {
597
+ var nodeName = el.nodeName.toLowerCase(),
598
+ type = el.type,
599
+ result = [];
600
+
601
+ if (type === 'radio') {
602
+ result = [elements.find(function (el) {
603
+ return el.checked;
604
+ }).toArray().pop()];
605
+ } else if (type === 'checkbox') {
606
+ result = elements.find(function (el) {
607
+ return el.checked;
608
+ }).toArray();
609
+ } else if (nodeName === 'select') {
610
+ elements.find(function (el) {
611
+ return !!el.childNodes.length;
612
+ }).each(function (el) {
613
+ result = result.concat(domutil.find('option', el, function (opt) {
614
+ return opt.selected;
615
+ }));
616
+ });
617
+ } else {
618
+ result = elements.find(function (el) {
619
+ return el.value !== '';
620
+ }).toArray();
621
+ }
622
+
623
+ result = util.map(result, function (el) {
624
+ return el.value;
625
+ });
626
+
627
+ if (!result.length) {
628
+ result = '';
629
+ } else if (result.length === 1) {
630
+ result = result[0];
631
+ }
632
+
633
+ output[name] = result;
634
+ });
635
+ });
636
+
637
+ return output;
638
+ }
639
+ };
640
+
641
+ userSelectProperty = domutil.testProp(['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']);
642
+
643
+ /**
644
+ * Disable browser's text selection behaviors.
645
+ * @method
646
+ */
647
+ domutil.disableTextSelection = function () {
648
+ if (supportSelectStart) {
649
+ return function () {
650
+ domevent.on(window, 'selectstart', domevent.preventDefault);
651
+ };
652
+ }
653
+
654
+ return function () {
655
+ var style = document.documentElement.style;
656
+ prevSelectStyle = style[userSelectProperty];
657
+ style[userSelectProperty] = 'none';
658
+ };
659
+ }();
660
+
661
+ /**
662
+ * Enable browser's text selection behaviors.
663
+ * @method
664
+ */
665
+ domutil.enableTextSelection = function () {
666
+ if (supportSelectStart) {
667
+ return function () {
668
+ domevent.off(window, 'selectstart', domevent.preventDefault);
669
+ };
670
+ }
671
+
672
+ return function () {
673
+ document.documentElement.style[userSelectProperty] = prevSelectStyle;
674
+ };
675
+ }();
676
+
677
+ /**
678
+ * Disable browser's image drag behaviors.
679
+ */
680
+ domutil.disableImageDrag = function () {
681
+ domevent.on(window, 'dragstart', domevent.preventDefault);
682
+ };
683
+
684
+ /**
685
+ * Enable browser's image drag behaviors.
686
+ */
687
+ domutil.enableImageDrag = function () {
688
+ domevent.off(window, 'dragstart', domevent.preventDefault);
689
+ };
690
+
691
+ module.exports = domutil;
692
+
693
+ /***/ }),
694
+ /* 8 */
695
+ /***/ (function(module, exports) {
696
+
697
+ module.exports = __WEBPACK_EXTERNAL_MODULE_8__;
698
+
699
+ /***/ }),
700
+ /* 9 */
701
+ /***/ (function(module, exports, __webpack_require__) {
702
+
703
+ /**
704
+ * @fileoverview Utility module for handling DOM events.
705
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
706
+ */
707
+
708
+ 'use strict';
709
+
710
+ var snippet = __webpack_require__(8);
711
+
712
+ var util = snippet,
713
+ browser = util.browser,
714
+ eventKey = '_evt',
715
+ DRAG = {
716
+ START: ['touchstart', 'mousedown'],
717
+ END: {
718
+ mousedown: 'mouseup',
719
+ touchstart: 'touchend',
720
+ pointerdown: 'touchend',
721
+ MSPointerDown: 'touchend'
722
+ },
723
+ MOVE: {
724
+ mousedown: 'mousemove',
725
+ touchstart: 'touchmove',
726
+ pointerdown: 'touchmove',
727
+ MSPointerDown: 'touchmove'
728
+ }
729
+ };
730
+
731
+ var domevent = {
732
+ /**
733
+ * Bind dom events.
734
+ * @param {HTMLElement} obj HTMLElement to bind events.
735
+ * @param {(string|object)} types Space splitted events names or eventName:handler object.
736
+ * @param {*} fn handler function or context for handler method.
737
+ * @param {*} [context] context object for handler method.
738
+ */
739
+ on: function (obj, types, fn, context) {
740
+ if (util.isString(types)) {
741
+ util.forEach(types.split(' '), function (type) {
742
+ domevent._on(obj, type, fn, context);
743
+ });
744
+
745
+ return;
746
+ }
747
+
748
+ util.forEachOwnProperties(types, function (handler, type) {
749
+ domevent._on(obj, type, handler, fn);
750
+ });
751
+ },
752
+
753
+ /**
754
+ * DOM event binding.
755
+ * @param {HTMLElement} obj HTMLElement to bind events.
756
+ * @param {String} type The name of events.
757
+ * @param {*} fn handler function
758
+ * @param {*} [context] context object for handler method.
759
+ * @private
760
+ */
761
+ _on: function (obj, type, fn, context) {
762
+ var id, handler, originHandler;
763
+
764
+ id = type + util.stamp(fn) + (context ? '_' + util.stamp(context) : '');
765
+
766
+ if (obj[eventKey] && obj[eventKey][id]) {
767
+ return;
768
+ }
769
+
770
+ handler = function (e) {
771
+ fn.call(context || obj, e || window.event);
772
+ };
773
+
774
+ originHandler = handler;
775
+
776
+ if ('addEventListener' in obj) {
777
+ if (type === 'mouseenter' || type === 'mouseleave') {
778
+ handler = function (e) {
779
+ e = e || window.event;
780
+ if (!domevent._checkMouse(obj, e)) {
781
+ return;
782
+ }
783
+ originHandler(e);
784
+ };
785
+ obj.addEventListener(type === 'mouseenter' ? 'mouseover' : 'mouseout', handler, false);
786
+ } else {
787
+ if (type === 'mousewheel') {
788
+ obj.addEventListener('DOMMouseScroll', handler, false);
789
+ }
790
+
791
+ obj.addEventListener(type, handler, false);
792
+ }
793
+ } else if ('attachEvent' in obj) {
794
+ obj.attachEvent('on' + type, handler);
795
+ }
796
+
797
+ obj[eventKey] = obj[eventKey] || {};
798
+ obj[eventKey][id] = handler;
799
+ },
800
+
801
+ /**
802
+ * Unbind DOM Event handler.
803
+ * @param {HTMLElement} obj HTMLElement to unbind.
804
+ * @param {(string|object)} types Space splitted events names or eventName:handler object.
805
+ * @param {*} fn handler function or context for handler method.
806
+ * @param {*} [context] context object for handler method.
807
+ */
808
+ off: function (obj, types, fn, context) {
809
+ if (util.isString(types)) {
810
+ util.forEach(types.split(' '), function (type) {
811
+ domevent._off(obj, type, fn, context);
812
+ });
813
+
814
+ return;
815
+ }
816
+
817
+ util.forEachOwnProperties(types, function (handler, type) {
818
+ domevent._off(obj, type, handler, fn);
819
+ });
820
+ },
821
+
822
+ /**
823
+ * Unbind DOM event handler.
824
+ * @param {HTMLElement} obj HTMLElement to unbind.
825
+ * @param {String} type The name of event to unbind.
826
+ * @param {function()} fn Event handler that supplied when binding.
827
+ * @param {*} context context object that supplied when binding.
828
+ * @private
829
+ */
830
+ _off: function (obj, type, fn, context) {
831
+ var id = type + util.stamp(fn) + (context ? '_' + util.stamp(context) : ''),
832
+ handler = obj[eventKey] && obj[eventKey][id];
833
+
834
+ if (!handler) {
835
+ return;
836
+ }
837
+
838
+ if ('removeEventListener' in obj) {
839
+ if (type === 'mouseenter' || type === 'mouseleave') {
840
+ obj.removeEventListener(type === 'mouseenter' ? 'mouseover' : 'mouseout', handler, false);
841
+ } else {
842
+ if (type === 'mousewheel') {
843
+ obj.removeEventListener('DOMMouseScroll', handler, false);
844
+ }
845
+
846
+ obj.removeEventListener(type, handler, false);
847
+ }
848
+ } else if ('detachEvent' in obj) {
849
+ try {
850
+ obj.detachEvent('on' + type, handler);
851
+ } catch (e) {} //eslint-disable-line
852
+ }
853
+
854
+ delete obj[eventKey][id];
855
+
856
+ if (util.keys(obj[eventKey]).length) {
857
+ return;
858
+ }
859
+
860
+ // throw exception when deleting host object's property in below IE8
861
+ if (util.browser.msie && util.browser.version < 9) {
862
+ obj[eventKey] = null;
863
+
864
+ return;
865
+ }
866
+
867
+ delete obj[eventKey];
868
+ },
869
+
870
+ /**
871
+ * Bind DOM event. this event will unbind after invokes.
872
+ * @param {HTMLElement} obj HTMLElement to bind events.
873
+ * @param {(string|object)} types Space splitted events names or eventName:handler object.
874
+ * @param {*} fn handler function or context for handler method.
875
+ * @param {*} [context] context object for handler method.
876
+ */
877
+ once: function (obj, types, fn, context) {
878
+ var that = this;
879
+
880
+ if (util.isObject(types)) {
881
+ util.forEachOwnProperties(types, function (handler, type) {
882
+ domevent.once(obj, type, handler, fn);
883
+ });
884
+
885
+ return;
886
+ }
887
+
888
+ function onceHandler() {
889
+ fn.apply(context || obj, arguments);
890
+ that._off(obj, types, onceHandler, context);
891
+ }
892
+
893
+ domevent.on(obj, types, onceHandler, context);
894
+ },
895
+
896
+ /**
897
+ * Cancel event bubbling.
898
+ * @param {Event} e Event object.
899
+ */
900
+ stopPropagation: function (e) {
901
+ if (e.stopPropagation) {
902
+ e.stopPropagation();
903
+ } else {
904
+ e.cancelBubble = true;
905
+ }
906
+ },
907
+
908
+ /**
909
+ * Cancel browser default actions.
910
+ * @param {Event} e Event object.
911
+ */
912
+ preventDefault: function (e) {
913
+ if (e.preventDefault) {
914
+ e.preventDefault();
915
+ } else {
916
+ e.returnValue = false;
917
+ }
918
+ },
919
+
920
+ /**
921
+ * Syntatic sugar of stopPropagation and preventDefault
922
+ * @param {Event} e Event object.
923
+ */
924
+ stop: function (e) {
925
+ domevent.preventDefault(e);
926
+ domevent.stopPropagation(e);
927
+ },
928
+
929
+ /**
930
+ * Stop scroll events.
931
+ * @param {HTMLElement} el HTML element to prevent scroll.
932
+ */
933
+ disableScrollPropagation: function (el) {
934
+ domevent.on(el, 'mousewheel MozMousePixelScroll', domevent.stopPropagation);
935
+ },
936
+
937
+ /**
938
+ * Stop all events related with click.
939
+ * @param {HTMLElement} el HTML element to prevent all event related with click.
940
+ */
941
+ disableClickPropagation: function (el) {
942
+ domevent.on(el, DRAG.START.join(' ') + ' click dblclick', domevent.stopPropagation);
943
+ },
944
+
945
+ /**
946
+ * Get mouse position from mouse event.
947
+ *
948
+ * If supplied relatveElement parameter then return relative position based on element.
949
+ * @param {Event} mouseEvent Mouse event object
950
+ * @param {HTMLElement} relativeElement HTML element that calculate relative position.
951
+ * @returns {number[]} mouse position.
952
+ */
953
+ getMousePosition: function (mouseEvent, relativeElement) {
954
+ var rect;
955
+
956
+ if (!relativeElement) {
957
+ return [mouseEvent.clientX, mouseEvent.clientY];
958
+ }
959
+
960
+ rect = relativeElement.getBoundingClientRect();
961
+
962
+ return [mouseEvent.clientX - rect.left - relativeElement.clientLeft, mouseEvent.clientY - rect.top - relativeElement.clientTop];
963
+ },
964
+
965
+ /**
966
+ * Normalize mouse wheel event that different each browsers.
967
+ * @param {MouseEvent} e Mouse wheel event.
968
+ * @returns {Number} delta
969
+ */
970
+ getWheelDelta: function (e) {
971
+ var delta = 0;
972
+
973
+ if (e.wheelDelta) {
974
+ delta = e.wheelDelta / 120;
975
+ }
976
+
977
+ if (e.detail) {
978
+ delta = -e.detail / 3;
979
+ }
980
+
981
+ return delta;
982
+ },
983
+
984
+ /**
985
+ * prevent firing mouseleave event when mouse entered child elements.
986
+ * @param {HTMLElement} el HTML element
987
+ * @param {MouseEvent} e Mouse event
988
+ * @returns {Boolean} leave?
989
+ * @private
990
+ */
991
+ _checkMouse: function (el, e) {
992
+ var related = e.relatedTarget;
993
+
994
+ if (!related) {
995
+ return true;
996
+ }
997
+
998
+ try {
999
+ while (related && related !== el) {
1000
+ related = related.parentNode;
1001
+ }
1002
+ } catch (err) {
1003
+ return false;
1004
+ }
1005
+
1006
+ return related !== el;
1007
+ },
1008
+
1009
+ /**
1010
+ * Trigger specific events to html element.
1011
+ * @param {HTMLElement} obj HTMLElement
1012
+ * @param {string} type Event type name
1013
+ * @param {object} [eventData] Event data
1014
+ */
1015
+ trigger: function (obj, type, eventData) {
1016
+ var rMouseEvent = /(mouse|click)/;
1017
+ if (util.isUndefined(eventData) && rMouseEvent.exec(type)) {
1018
+ eventData = domevent.mouseEvent(type);
1019
+ }
1020
+
1021
+ if (obj.dispatchEvent) {
1022
+ obj.dispatchEvent(eventData);
1023
+ } else if (obj.fireEvent) {
1024
+ obj.fireEvent('on' + type, eventData);
1025
+ }
1026
+ },
1027
+
1028
+ /**
1029
+ * Create virtual mouse event.
1030
+ *
1031
+ * Tested at
1032
+ *
1033
+ * - IE7 ~ IE11
1034
+ * - Chrome
1035
+ * - Firefox
1036
+ * - Safari
1037
+ * @param {string} type Event type
1038
+ * @param {object} [eventObj] Event data
1039
+ * @returns {MouseEvent} Virtual mouse event.
1040
+ */
1041
+ mouseEvent: function (type, eventObj) {
1042
+ var evt, e;
1043
+
1044
+ e = util.extend({
1045
+ bubbles: true,
1046
+ cancelable: type !== 'mousemove',
1047
+ view: window,
1048
+ wheelDelta: 0,
1049
+ detail: 0,
1050
+ screenX: 0,
1051
+ screenY: 0,
1052
+ clientX: 0,
1053
+ clientY: 0,
1054
+ ctrlKey: false,
1055
+ altKey: false,
1056
+ shiftKey: false,
1057
+ metaKey: false,
1058
+ button: 0,
1059
+ relatedTarget: undefined // eslint-disable-line
1060
+ }, eventObj);
1061
+
1062
+ // prevent throw error when inserting wheelDelta property to mouse event on below IE8
1063
+ if (browser.msie && browser.version < 9) {
1064
+ delete e.wheelDelta;
1065
+ }
1066
+
1067
+ if (typeof document.createEvent === 'function') {
1068
+ evt = document.createEvent('MouseEvents');
1069
+ evt.initMouseEvent(type, e.bubbles, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, document.body.parentNode);
1070
+ } else if (document.createEventObject) {
1071
+ evt = document.createEventObject();
1072
+
1073
+ util.forEach(e, function (value, propName) {
1074
+ evt[propName] = value;
1075
+ }, this);
1076
+ evt.button = {
1077
+ 0: 1,
1078
+ 1: 4,
1079
+ 2: 2
1080
+ }[evt.button] || evt.button;
1081
+ }
1082
+
1083
+ return evt;
1084
+ },
1085
+
1086
+ /**
1087
+ * Normalize mouse event's button attributes.
1088
+ *
1089
+ * Can detect which button is clicked by this method.
1090
+ *
1091
+ * Meaning of return numbers
1092
+ *
1093
+ * - 0: primary mouse button
1094
+ * - 1: wheel button or center button
1095
+ * - 2: secondary mouse button
1096
+ * @param {MouseEvent} mouseEvent - The mouse event object want to know.
1097
+ * @returns {number} - The value of meaning which button is clicked?
1098
+ */
1099
+ getMouseButton: function (mouseEvent) {
1100
+ var button,
1101
+ primary = '0,1,3,5,7',
1102
+ secondary = '2,6',
1103
+ wheel = '4';
1104
+
1105
+ /* istanbul ignore else */
1106
+ if (document.implementation.hasFeature('MouseEvents', '2.0')) {
1107
+ return mouseEvent.button;
1108
+ }
1109
+
1110
+ button = mouseEvent.button + '';
1111
+ if (~primary.indexOf(button)) {
1112
+ return 0;
1113
+ } else if (~secondary.indexOf(button)) {
1114
+ return 2;
1115
+ } else if (~wheel.indexOf(button)) {
1116
+ return 1;
1117
+ }
1118
+ }
1119
+ };
1120
+
1121
+ module.exports = domevent;
1122
+
1123
+ /***/ }),
1124
+ /* 10 */
1125
+ /***/ (function(module, exports, __webpack_require__) {
1126
+
1127
+ /**
1128
+ * @fileoverview Common collections.
1129
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
1130
+ */
1131
+
1132
+ 'use strict';
1133
+
1134
+ var snippet = __webpack_require__(8);
1135
+
1136
+ var util = snippet,
1137
+ forEachProp = util.forEachOwnProperties,
1138
+ forEachArr = util.forEachArray,
1139
+ isFunc = util.isFunction,
1140
+ isObj = util.isObject;
1141
+
1142
+ var aps = Array.prototype.slice;
1143
+
1144
+ /**
1145
+ * Common collection.
1146
+ *
1147
+ * It need function for get model's unique id.
1148
+ *
1149
+ * if the function is not supplied then it use default function {@link Collection#getItemID}
1150
+ * @constructor
1151
+ * @param {function} [getItemIDFn] function for get model's id.
1152
+ * @ignore
1153
+ */
1154
+ function Collection(getItemIDFn) {
1155
+ /**
1156
+ * @type {object.<string, *>}
1157
+ */
1158
+ this.items = {};
1159
+
1160
+ /**
1161
+ * @type {number}
1162
+ */
1163
+ this.length = 0;
1164
+
1165
+ if (isFunc(getItemIDFn)) {
1166
+ /**
1167
+ * @type {function}
1168
+ */
1169
+ this.getItemID = getItemIDFn;
1170
+ }
1171
+ }
1172
+
1173
+ /**********
1174
+ * static props
1175
+ **********/
1176
+
1177
+ /**
1178
+ * Combind supplied function filters and condition.
1179
+ * @param {...function} filters - function filters
1180
+ * @returns {function} combined filter
1181
+ */
1182
+ Collection.and = function (filters) {
1183
+ var cnt;
1184
+
1185
+ filters = aps.call(arguments);
1186
+ cnt = filters.length;
1187
+
1188
+ return function (item) {
1189
+ var i = 0;
1190
+
1191
+ for (; i < cnt; i += 1) {
1192
+ if (!filters[i].call(null, item)) {
1193
+ return false;
1194
+ }
1195
+ }
1196
+
1197
+ return true;
1198
+ };
1199
+ };
1200
+
1201
+ /**
1202
+ * Combine multiple function filters with OR clause.
1203
+ * @param {...function} filters - function filters
1204
+ * @returns {function} combined filter
1205
+ */
1206
+ Collection.or = function (filters) {
1207
+ var cnt;
1208
+
1209
+ filters = aps.call(arguments);
1210
+ cnt = filters.length;
1211
+
1212
+ return function (item) {
1213
+ var i = 1,
1214
+ result = filters[0].call(null, item);
1215
+
1216
+ for (; i < cnt; i += 1) {
1217
+ result = result || filters[i].call(null, item);
1218
+ }
1219
+
1220
+ return result;
1221
+ };
1222
+ };
1223
+
1224
+ /**
1225
+ * Merge several collections.
1226
+ *
1227
+ * You can\'t merge collections different _getEventID functions. Take case of use.
1228
+ * @param {...Collection} collections collection arguments to merge
1229
+ * @returns {Collection} merged collection.
1230
+ */
1231
+ Collection.merge = function (collections) {
1232
+ // eslint-disable-line
1233
+ var cols = aps.call(arguments),
1234
+ newItems = {},
1235
+ merged = new Collection(cols[0].getItemID),
1236
+ extend = util.extend;
1237
+
1238
+ forEachArr(cols, function (col) {
1239
+ extend(newItems, col.items);
1240
+ });
1241
+
1242
+ merged.items = newItems;
1243
+ merged.length = util.keys(merged.items).length;
1244
+
1245
+ return merged;
1246
+ };
1247
+
1248
+ /**********
1249
+ * prototype props
1250
+ **********/
1251
+
1252
+ /**
1253
+ * get model's unique id.
1254
+ * @param {object} item model instance.
1255
+ * @returns {number} model unique id.
1256
+ */
1257
+ Collection.prototype.getItemID = function (item) {
1258
+ return item._id + '';
1259
+ };
1260
+
1261
+ /**
1262
+ * add models.
1263
+ * @param {...*} item models to add this collection.
1264
+ */
1265
+ Collection.prototype.add = function (item) {
1266
+ var id, ownItems;
1267
+
1268
+ if (arguments.length > 1) {
1269
+ forEachArr(aps.call(arguments), function (o) {
1270
+ this.add(o);
1271
+ }, this);
1272
+
1273
+ return;
1274
+ }
1275
+
1276
+ id = this.getItemID(item);
1277
+ ownItems = this.items;
1278
+
1279
+ if (!ownItems[id]) {
1280
+ this.length += 1;
1281
+ }
1282
+ ownItems[id] = item;
1283
+ };
1284
+
1285
+ /**
1286
+ * remove models.
1287
+ * @param {...(object|string|number)} id model instance or unique id to delete.
1288
+ * @returns {array} deleted model list.
1289
+ */
1290
+ Collection.prototype.remove = function (id) {
1291
+ var removed = [],
1292
+ ownItems,
1293
+ itemToRemove;
1294
+
1295
+ if (!this.length) {
1296
+ return removed;
1297
+ }
1298
+
1299
+ if (arguments.length > 1) {
1300
+ removed = util.map(aps.call(arguments), function (id) {
1301
+ return this.remove(id);
1302
+ }, this);
1303
+
1304
+ return removed;
1305
+ }
1306
+
1307
+ ownItems = this.items;
1308
+
1309
+ if (isObj(id)) {
1310
+ id = this.getItemID(id);
1311
+ }
1312
+
1313
+ if (!ownItems[id]) {
1314
+ return removed;
1315
+ }
1316
+
1317
+ this.length -= 1;
1318
+ itemToRemove = ownItems[id];
1319
+ delete ownItems[id];
1320
+
1321
+ return itemToRemove;
1322
+ };
1323
+
1324
+ /**
1325
+ * remove all models in collection.
1326
+ */
1327
+ Collection.prototype.clear = function () {
1328
+ this.items = {};
1329
+ this.length = 0;
1330
+ };
1331
+
1332
+ /**
1333
+ * check collection has specific model.
1334
+ * @param {(object|string|number|function)} id model instance or id or filter function to check
1335
+ * @returns {boolean} is has model?
1336
+ */
1337
+ Collection.prototype.has = function (id) {
1338
+ var isFilter, has;
1339
+
1340
+ if (!this.length) {
1341
+ return false;
1342
+ }
1343
+
1344
+ isFilter = isFunc(id);
1345
+ has = false;
1346
+
1347
+ if (isFilter) {
1348
+ this.each(function (item) {
1349
+ if (id(item) === true) {
1350
+ has = true;
1351
+
1352
+ return false;
1353
+ }
1354
+
1355
+ return true;
1356
+ });
1357
+ } else {
1358
+ id = isObj(id) ? this.getItemID(id) : id;
1359
+ has = util.isExisty(this.items[id]);
1360
+ }
1361
+
1362
+ return has;
1363
+ };
1364
+
1365
+ /**
1366
+ * invoke callback when model exist in collection.
1367
+ * @param {(string|number)} id model unique id.
1368
+ * @param {function} fn the callback.
1369
+ * @param {*} [context] callback context.
1370
+ */
1371
+ Collection.prototype.doWhenHas = function (id, fn, context) {
1372
+ var item = this.items[id];
1373
+
1374
+ if (!util.isExisty(item)) {
1375
+ return;
1376
+ }
1377
+
1378
+ fn.call(context || this, item);
1379
+ };
1380
+
1381
+ /**
1382
+ * Search model. and return new collection.
1383
+ * @param {function} filter filter function.
1384
+ * @returns {Collection} new collection with filtered models.
1385
+ * @example
1386
+ * collection.find(function(item) {
1387
+ * return item.edited === true;
1388
+ * });
1389
+ *
1390
+ * function filter1(item) {
1391
+ * return item.edited === false;
1392
+ * }
1393
+ *
1394
+ * function filter2(item) {
1395
+ * return item.disabled === false;
1396
+ * }
1397
+ *
1398
+ * collection.find(Collection.and(filter1, filter2));
1399
+ *
1400
+ * collection.find(Collection.or(filter1, filter2));
1401
+ */
1402
+ Collection.prototype.find = function (filter) {
1403
+ var result = new Collection();
1404
+
1405
+ if (this.hasOwnProperty('getItemID')) {
1406
+ result.getItemID = this.getItemID;
1407
+ }
1408
+
1409
+ this.each(function (item) {
1410
+ if (filter(item) === true) {
1411
+ result.add(item);
1412
+ }
1413
+ });
1414
+
1415
+ return result;
1416
+ };
1417
+
1418
+ /**
1419
+ * Group element by specific key values.
1420
+ *
1421
+ * if key parameter is function then invoke it and use returned value.
1422
+ * @param {(string|number|function|array)} key key property or getter function. if string[] supplied, create each collection before grouping.
1423
+ * @param {function} [groupFunc] - function that return each group's key
1424
+ * @returns {object.<string, Collection>} grouped object
1425
+ * @example
1426
+ *
1427
+ * // pass `string`, `number`, `boolean` type value then group by property value.
1428
+ * collection.groupBy('gender'); // group by 'gender' property value.
1429
+ * collection.groupBy(50); // group by '50' property value.
1430
+ *
1431
+ * // pass `function` then group by return value. each invocation `function` is called with `(item)`.
1432
+ * collection.groupBy(function(item) {
1433
+ * if (item.score > 60) {
1434
+ * return 'pass';
1435
+ * }
1436
+ * return 'fail';
1437
+ * });
1438
+ *
1439
+ * // pass `array` with first arguments then create each collection before grouping.
1440
+ * collection.groupBy(['go', 'ruby', 'javascript']);
1441
+ * // result: { 'go': empty Collection, 'ruby': empty Collection, 'javascript': empty Collection }
1442
+ *
1443
+ * // can pass `function` with `array` then group each elements.
1444
+ * collection.groupBy(['go', 'ruby', 'javascript'], function(item) {
1445
+ * if (item.isFast) {
1446
+ * return 'go';
1447
+ * }
1448
+ *
1449
+ * return item.name;
1450
+ * });
1451
+ */
1452
+ Collection.prototype.groupBy = function (key, groupFunc) {
1453
+ var result = {},
1454
+ collection,
1455
+ baseValue,
1456
+ keyIsFunc = isFunc(key),
1457
+ getItemIDFn = this.getItemID;
1458
+
1459
+ if (util.isArray(key)) {
1460
+ util.forEachArray(key, function (k) {
1461
+ result[k + ''] = new Collection(getItemIDFn);
1462
+ });
1463
+
1464
+ if (!groupFunc) {
1465
+ return result;
1466
+ }
1467
+
1468
+ key = groupFunc;
1469
+ keyIsFunc = true;
1470
+ }
1471
+
1472
+ this.each(function (item) {
1473
+ if (keyIsFunc) {
1474
+ baseValue = key(item);
1475
+ } else {
1476
+ baseValue = item[key];
1477
+
1478
+ if (isFunc(baseValue)) {
1479
+ baseValue = baseValue.apply(item);
1480
+ }
1481
+ }
1482
+
1483
+ collection = result[baseValue];
1484
+
1485
+ if (!collection) {
1486
+ collection = result[baseValue] = new Collection(getItemIDFn);
1487
+ }
1488
+
1489
+ collection.add(item);
1490
+ });
1491
+
1492
+ return result;
1493
+ };
1494
+
1495
+ /**
1496
+ * Return single item in collection.
1497
+ *
1498
+ * Returned item is inserted in this collection firstly.
1499
+ * @returns {object} item.
1500
+ */
1501
+ Collection.prototype.single = function () {
1502
+ var result;
1503
+
1504
+ this.each(function (item) {
1505
+ result = item;
1506
+
1507
+ return false;
1508
+ }, this);
1509
+
1510
+ return result;
1511
+ };
1512
+
1513
+ /**
1514
+ * sort a basis of supplied compare function.
1515
+ * @param {function} compareFunction compareFunction
1516
+ * @returns {array} sorted array.
1517
+ */
1518
+ Collection.prototype.sort = function (compareFunction) {
1519
+ var arr = [];
1520
+
1521
+ this.each(function (item) {
1522
+ arr.push(item);
1523
+ });
1524
+
1525
+ if (isFunc(compareFunction)) {
1526
+ arr = arr.sort(compareFunction);
1527
+ }
1528
+
1529
+ return arr;
1530
+ };
1531
+
1532
+ /**
1533
+ * iterate each model element.
1534
+ *
1535
+ * when iteratee return false then break the loop.
1536
+ * @param {function} iteratee iteratee(item, index, items)
1537
+ * @param {*} [context] context
1538
+ */
1539
+ Collection.prototype.each = function (iteratee, context) {
1540
+ forEachProp(this.items, iteratee, context || this);
1541
+ };
1542
+
1543
+ /**
1544
+ * return new array with collection items.
1545
+ * @returns {array} new array.
1546
+ */
1547
+ Collection.prototype.toArray = function () {
1548
+ if (!this.length) {
1549
+ return [];
1550
+ }
1551
+
1552
+ return util.map(this.items, function (item) {
1553
+ return item;
1554
+ });
1555
+ };
1556
+
1557
+ module.exports = Collection;
1558
+
1559
+ /***/ }),
1560
+ /* 11 */
1561
+ /***/ (function(module, exports, __webpack_require__) {
1562
+
1563
+ /**
1564
+ * @fileoverview The base class of views.
1565
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
1566
+ */
1567
+
1568
+ 'use strict';
1569
+
1570
+ var util = __webpack_require__(8);
1571
+ var domutil = __webpack_require__(7);
1572
+ var Collection = __webpack_require__(10);
1573
+
1574
+ /**
1575
+ * Base class of views.
1576
+ *
1577
+ * All views create own container element inside supplied container element.
1578
+ * @constructor
1579
+ * @param {options} options The object for describe view's specs.
1580
+ * @param {HTMLElement} container Default container element for view. you can use this element for this.container syntax.
1581
+ * @ignore
1582
+ */
1583
+ function View(options, container) {
1584
+ var id = util.stamp(this);
1585
+
1586
+ options = options || {};
1587
+
1588
+ if (util.isUndefined(container)) {
1589
+ container = domutil.appendHTMLElement('div');
1590
+ }
1591
+
1592
+ domutil.addClass(container, 'tui-view-' + id);
1593
+
1594
+ /**
1595
+ * unique id
1596
+ * @type {number}
1597
+ */
1598
+ this.id = id;
1599
+
1600
+ /**
1601
+ * base element of view.
1602
+ * @type {HTMLDIVElement}
1603
+ */
1604
+ this.container = container;
1605
+
1606
+ /**
1607
+ * child views.
1608
+ * @type {Collection}
1609
+ */
1610
+ this.childs = new Collection(function (view) {
1611
+ return util.stamp(view);
1612
+ });
1613
+
1614
+ /**
1615
+ * parent view instance.
1616
+ * @type {View}
1617
+ */
1618
+ this.parent = null;
1619
+ }
1620
+
1621
+ /**
1622
+ * Add child views.
1623
+ * @param {View} view The view instance to add.
1624
+ * @param {function} [fn] Function for invoke before add. parent view class is supplied first arguments.
1625
+ */
1626
+ View.prototype.addChild = function (view, fn) {
1627
+ if (fn) {
1628
+ fn.call(view, this);
1629
+ }
1630
+ // add parent view
1631
+ view.parent = this;
1632
+
1633
+ this.childs.add(view);
1634
+ };
1635
+
1636
+ /**
1637
+ * Remove added child view.
1638
+ * @param {(number|View)} id View id or instance itself to remove.
1639
+ * @param {function} [fn] Function for invoke before remove. parent view class is supplied first arguments.
1640
+ */
1641
+ View.prototype.removeChild = function (id, fn) {
1642
+ var view = util.isNumber(id) ? this.childs.items[id] : id;
1643
+
1644
+ id = util.stamp(view);
1645
+
1646
+ if (fn) {
1647
+ fn.call(view, this);
1648
+ }
1649
+
1650
+ this.childs.remove(id);
1651
+ };
1652
+
1653
+ /**
1654
+ * Render view recursively.
1655
+ */
1656
+ View.prototype.render = function () {
1657
+ this.childs.each(function (childView) {
1658
+ childView.render();
1659
+ });
1660
+ };
1661
+
1662
+ /**
1663
+ * Invoke function recursively.
1664
+ * @param {function} fn - function to invoke child view recursively
1665
+ * @param {boolean} [skipThis=false] - set true then skip invoke with this(root) view.
1666
+ */
1667
+ View.prototype.recursive = function (fn, skipThis) {
1668
+ if (!util.isFunction(fn)) {
1669
+ return;
1670
+ }
1671
+
1672
+ if (!skipThis) {
1673
+ fn(this);
1674
+ }
1675
+
1676
+ this.childs.each(function (childView) {
1677
+ childView.recursive(fn);
1678
+ });
1679
+ };
1680
+
1681
+ /**
1682
+ * Resize view recursively to parent.
1683
+ */
1684
+ View.prototype.resize = function () {
1685
+ var args = Array.prototype.slice.call(arguments),
1686
+ parent = this.parent;
1687
+
1688
+ while (parent) {
1689
+ if (util.isFunction(parent._onResize)) {
1690
+ parent._onResize.apply(parent, args);
1691
+ }
1692
+
1693
+ parent = parent.parent;
1694
+ }
1695
+ };
1696
+
1697
+ /**
1698
+ * Invoking method before destroying.
1699
+ */
1700
+ View.prototype._beforeDestroy = function () {};
1701
+
1702
+ /**
1703
+ * Clear properties
1704
+ */
1705
+ View.prototype._destroy = function () {
1706
+ this._beforeDestroy();
1707
+ this.childs.clear();
1708
+ this.container.innerHTML = '';
1709
+
1710
+ this.id = this.parent = this.childs = this.container = null;
1711
+ };
1712
+
1713
+ /**
1714
+ * Destroy child view recursively.
1715
+ * @param {boolean} isChildView - Whether it is the child view or not
1716
+ */
1717
+ View.prototype.destroy = function (isChildView) {
1718
+ this.childs.each(function (childView) {
1719
+ childView.destroy(true);
1720
+ childView._destroy();
1721
+ });
1722
+
1723
+ if (isChildView) {
1724
+ return;
1725
+ }
1726
+
1727
+ this._destroy();
1728
+ };
1729
+
1730
+ /**
1731
+ * Calculate view's container element bound.
1732
+ * @returns {object} The bound of container element.
1733
+ */
1734
+ View.prototype.getViewBound = function () {
1735
+ var container = this.container,
1736
+ position = domutil.getPosition(container),
1737
+ size = domutil.getSize(container);
1738
+
1739
+ return {
1740
+ x: position[0],
1741
+ y: position[1],
1742
+ width: size[0],
1743
+ height: size[1]
1744
+ };
1745
+ };
1746
+
1747
+ module.exports = View;
1748
+
1749
+ /***/ }),
1750
+ /* 12 */
1751
+ /***/ (function(module, exports, __webpack_require__) {
1752
+
1753
+ /* WEBPACK VAR INJECTION */(function(global) {/**
1754
+ * @fileoverview General drag handler
1755
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
1756
+ */
1757
+
1758
+ 'use strict';
1759
+
1760
+ var util = __webpack_require__(8);
1761
+ var domutil = __webpack_require__(7);
1762
+ var domevent = __webpack_require__(9);
1763
+
1764
+ /**
1765
+ * @constructor
1766
+ * @mixes CustomEvents
1767
+ * @param {object} options - options for drag handler
1768
+ * @param {number} [options.distance=10] - distance in pixels after mouse must move before dragging should start
1769
+ * @param {HTMLElement} container - container element to bind drag events
1770
+ * @ignore
1771
+ */
1772
+ function Drag(options, container) {
1773
+ domevent.on(container, 'mousedown', this._onMouseDown, this);
1774
+
1775
+ this.options = util.extend({
1776
+ distance: 10
1777
+ }, options);
1778
+
1779
+ /**
1780
+ * @type {HTMLElement}
1781
+ */
1782
+ this.container = container;
1783
+
1784
+ /**
1785
+ * @type {boolean}
1786
+ */
1787
+ this._isMoved = false;
1788
+
1789
+ /**
1790
+ * dragging distance in pixel between mousedown and firing dragStart events
1791
+ * @type {number}
1792
+ */
1793
+ this._distance = 0;
1794
+
1795
+ /**
1796
+ * @type {boolean}
1797
+ */
1798
+ this._dragStartFired = false;
1799
+
1800
+ /**
1801
+ * @type {object}
1802
+ */
1803
+ this._dragStartEventData = null;
1804
+ }
1805
+
1806
+ /**
1807
+ * Destroy method.
1808
+ */
1809
+ Drag.prototype.destroy = function () {
1810
+ domevent.off(this.container, 'mousedown', this._onMouseDown, this);
1811
+
1812
+ this.options = this.container = this._isMoved = this._distance = this._dragStartFired = this._dragStartEventData = null;
1813
+ };
1814
+
1815
+ /**
1816
+ * Toggle events for mouse dragging.
1817
+ * @param {boolean} toBind - bind events related with dragging when supplied "true"
1818
+ */
1819
+ Drag.prototype._toggleDragEvent = function (toBind) {
1820
+ var container = this.container,
1821
+ domMethod,
1822
+ method;
1823
+
1824
+ if (toBind) {
1825
+ domMethod = 'on';
1826
+ method = 'disable';
1827
+ } else {
1828
+ domMethod = 'off';
1829
+ method = 'enable';
1830
+ }
1831
+
1832
+ domutil[method + 'TextSelection'](container);
1833
+ domutil[method + 'ImageDrag'](container);
1834
+ domevent[domMethod](global.document, {
1835
+ mousemove: this._onMouseMove,
1836
+ mouseup: this._onMouseUp
1837
+ }, this);
1838
+ };
1839
+
1840
+ /**
1841
+ * Normalize mouse event object.
1842
+ * @param {MouseEvent} mouseEvent - mouse event object.
1843
+ * @returns {object} normalized mouse event data.
1844
+ */
1845
+ Drag.prototype._getEventData = function (mouseEvent) {
1846
+ return {
1847
+ target: mouseEvent.target || mouseEvent.srcElement,
1848
+ originEvent: mouseEvent
1849
+ };
1850
+ };
1851
+
1852
+ /**
1853
+ * MouseDown DOM event handler.
1854
+ * @param {MouseEvent} mouseDownEvent MouseDown event object.
1855
+ */
1856
+ Drag.prototype._onMouseDown = function (mouseDownEvent) {
1857
+ // only primary button can start drag.
1858
+ if (domevent.getMouseButton(mouseDownEvent) !== 0) {
1859
+ return;
1860
+ }
1861
+
1862
+ this._distance = 0;
1863
+ this._dragStartFired = false;
1864
+ this._dragStartEventData = this._getEventData(mouseDownEvent);
1865
+
1866
+ this._toggleDragEvent(true);
1867
+ };
1868
+
1869
+ /**
1870
+ * MouseMove DOM event handler.
1871
+ * @emits Drag#drag
1872
+ * @emits Drag#dragStart
1873
+ * @param {MouseEvent} mouseMoveEvent MouseMove event object.
1874
+ */
1875
+ Drag.prototype._onMouseMove = function (mouseMoveEvent) {
1876
+ var distance = this.options.distance;
1877
+ // prevent automatic scrolling.
1878
+ domevent.preventDefault(mouseMoveEvent);
1879
+
1880
+ this._isMoved = true;
1881
+
1882
+ if (this._distance < distance) {
1883
+ this._distance += 1;
1884
+
1885
+ return;
1886
+ }
1887
+
1888
+ if (!this._dragStartFired) {
1889
+ this._dragStartFired = true;
1890
+
1891
+ /**
1892
+ * Drag starts events. cancelable.
1893
+ * @event Drag#dragStart
1894
+ * @type {object}
1895
+ * @property {HTMLElement} target - target element in this event.
1896
+ * @property {MouseEvent} originEvent - original mouse event object.
1897
+ */
1898
+ if (!this.invoke('dragStart', this._dragStartEventData)) {
1899
+ this._toggleDragEvent(false);
1900
+
1901
+ return;
1902
+ }
1903
+ }
1904
+
1905
+ /**
1906
+ * Events while dragging.
1907
+ * @event Drag#drag
1908
+ * @type {object}
1909
+ * @property {HTMLElement} target - target element in this event.
1910
+ * @property {MouseEvent} originEvent - original mouse event object.
1911
+ */
1912
+ this.fire('drag', this._getEventData(mouseMoveEvent));
1913
+ };
1914
+
1915
+ /**
1916
+ * MouseUp DOM event handler.
1917
+ * @param {MouseEvent} mouseUpEvent MouseUp event object.
1918
+ * @emits Drag#dragEnd
1919
+ * @emits Drag#click
1920
+ */
1921
+ Drag.prototype._onMouseUp = function (mouseUpEvent) {
1922
+ this._toggleDragEvent(false);
1923
+
1924
+ // emit "click" event when not emitted drag event between mousedown and mouseup.
1925
+ if (this._isMoved) {
1926
+ this._isMoved = false;
1927
+
1928
+ /**
1929
+ * Drag end events.
1930
+ * @event Drag#dragEnd
1931
+ * @type {MouseEvent}
1932
+ * @property {HTMLElement} target - target element in this event.
1933
+ * @property {MouseEvent} originEvent - original mouse event object.
1934
+ */
1935
+ this.fire('dragEnd', this._getEventData(mouseUpEvent));
1936
+
1937
+ return;
1938
+ }
1939
+
1940
+ /**
1941
+ * Click events.
1942
+ * @event Drag#click
1943
+ * @type {MouseEvent}
1944
+ * @property {HTMLElement} target - target element in this event.
1945
+ * @property {MouseEvent} originEvent - original mouse event object.
1946
+ */
1947
+ this.fire('click', this._getEventData(mouseUpEvent));
1948
+ };
1949
+
1950
+ util.CustomEvents.mixin(Drag);
1951
+
1952
+ module.exports = Drag;
1953
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1954
+
1955
+ /***/ }),
1956
+ /* 13 */
1957
+ /***/ (function(module, exports, __webpack_require__) {
1958
+
1959
+ /**
1960
+ * @fileoverview ColorPicker factory module
1961
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
1962
+ */
1963
+
1964
+ 'use strict';
1965
+
1966
+ var util = __webpack_require__(8);
1967
+ var colorutil = __webpack_require__(14);
1968
+ var Layout = __webpack_require__(15);
1969
+ var Palette = __webpack_require__(16);
1970
+ var Slider = __webpack_require__(18);
1971
+
1972
+ /**
1973
+ * @constructor
1974
+ * @mixes CustomEvents
1975
+ * @param {object} options - options for colorpicker component
1976
+ * @param {HTMLDivElement} options.container - container element
1977
+ * @param {string} [options.color='#ffffff'] - default selected color
1978
+ * @param {string[]} [options.preset] - color preset for palette (use base16 palette if not supplied)
1979
+ * @param {string} [options.cssPrefix='tui-colorpicker-'] - css prefix text for each child elements
1980
+ * @param {string} [options.detailTxt='Detail'] - text for detail button.
1981
+ * @example
1982
+ * var colorPicker = tui.colorPicker; // or require('tui-color-picker')
1983
+ *
1984
+ * colorPicker.create({
1985
+ * container: document.getElementById('color-picker')
1986
+ * });
1987
+ */
1988
+ function ColorPicker(options) {
1989
+ var layout;
1990
+
1991
+ if (!(this instanceof ColorPicker)) {
1992
+ return new ColorPicker(options);
1993
+ }
1994
+ /**
1995
+ * Option object
1996
+ * @type {object}
1997
+ * @private
1998
+ */
1999
+ options = this.options = util.extend({
2000
+ container: null,
2001
+ color: '#f8f8f8',
2002
+ preset: ['#181818', '#282828', '#383838', '#585858', '#b8b8b8', '#d8d8d8', '#e8e8e8', '#f8f8f8', '#ab4642', '#dc9656', '#f7ca88', '#a1b56c', '#86c1b9', '#7cafc2', '#ba8baf', '#a16946'],
2003
+ cssPrefix: 'tui-colorpicker-',
2004
+ detailTxt: 'Detail'
2005
+ }, options);
2006
+
2007
+ if (!options.container) {
2008
+ throw new Error('ColorPicker(): need container option.');
2009
+ }
2010
+
2011
+ /**********
2012
+ * Create layout view
2013
+ **********/
2014
+
2015
+ /**
2016
+ * @type {Layout}
2017
+ * @private
2018
+ */
2019
+ layout = this.layout = new Layout(options, options.container);
2020
+
2021
+ /**********
2022
+ * Create palette view
2023
+ **********/
2024
+ this.palette = new Palette(options, layout.container);
2025
+ this.palette.on({
2026
+ '_selectColor': this._onSelectColorInPalette,
2027
+ '_toggleSlider': this._onToggleSlider
2028
+ }, this);
2029
+
2030
+ /**********
2031
+ * Create slider view
2032
+ **********/
2033
+ this.slider = new Slider(options, layout.container);
2034
+ this.slider.on('_selectColor', this._onSelectColorInSlider, this);
2035
+
2036
+ /**********
2037
+ * Add child views
2038
+ **********/
2039
+ layout.addChild(this.palette);
2040
+ layout.addChild(this.slider);
2041
+
2042
+ this.render(options.color);
2043
+ }
2044
+
2045
+ /**
2046
+ * Handler method for Palette#_selectColor event
2047
+ * @private
2048
+ * @fires ColorPicker#selectColor
2049
+ * @param {object} selectColorEventData - event data
2050
+ */
2051
+ ColorPicker.prototype._onSelectColorInPalette = function (selectColorEventData) {
2052
+ var color = selectColorEventData.color,
2053
+ opt = this.options;
2054
+
2055
+ if (!colorutil.isValidRGB(color)) {
2056
+ this.render();
2057
+
2058
+ return;
2059
+ }
2060
+
2061
+ /**
2062
+ * @event ColorPicker#selectColor
2063
+ * @type {object}
2064
+ * @property {string} color - selected color (hex string)
2065
+ * @property {string} origin - flags for represent the source of event fires.
2066
+ */
2067
+ this.fire('selectColor', {
2068
+ color: color,
2069
+ origin: 'palette'
2070
+ });
2071
+
2072
+ if (opt.color === color) {
2073
+ return;
2074
+ }
2075
+
2076
+ opt.color = color;
2077
+ this.render(color);
2078
+ };
2079
+
2080
+ /**
2081
+ * Handler method for Palette#_toggleSlider event
2082
+ * @private
2083
+ */
2084
+ ColorPicker.prototype._onToggleSlider = function () {
2085
+ this.slider.toggle(!this.slider.isVisible());
2086
+ };
2087
+
2088
+ /**
2089
+ * Handler method for Slider#_selectColor event
2090
+ * @private
2091
+ * @fires ColorPicker#selectColor
2092
+ * @param {object} selectColorEventData - event data
2093
+ */
2094
+ ColorPicker.prototype._onSelectColorInSlider = function (selectColorEventData) {
2095
+ var color = selectColorEventData.color,
2096
+ opt = this.options;
2097
+
2098
+ /**
2099
+ * @event ColorPicker#selectColor
2100
+ * @type {object}
2101
+ * @property {string} color - selected color (hex string)
2102
+ * @property {string} origin - flags for represent the source of event fires.
2103
+ * @ignore
2104
+ */
2105
+ this.fire('selectColor', {
2106
+ color: color,
2107
+ origin: 'slider'
2108
+ });
2109
+
2110
+ if (opt.color === color) {
2111
+ return;
2112
+ }
2113
+
2114
+ opt.color = color;
2115
+ this.palette.render(color);
2116
+ };
2117
+
2118
+ /**********
2119
+ * PUBLIC API
2120
+ **********/
2121
+
2122
+ /**
2123
+ * Set color to colorpicker instance.<br>
2124
+ * The string parameter must be hex color value
2125
+ * @param {string} hexStr - hex formatted color string
2126
+ * @example
2127
+ * colorPicker.setColor('#ffff00');
2128
+ */
2129
+ ColorPicker.prototype.setColor = function (hexStr) {
2130
+ if (!colorutil.isValidRGB(hexStr)) {
2131
+ throw new Error('ColorPicker#setColor(): need valid hex string color value');
2132
+ }
2133
+
2134
+ this.options.color = hexStr;
2135
+ this.render(hexStr);
2136
+ };
2137
+
2138
+ /**
2139
+ * Get hex color string of current selected color in colorpicker instance.
2140
+ * @returns {string} hex string formatted color
2141
+ * @example
2142
+ * colorPicker.setColor('#ffff00');
2143
+ * colorPicker.getColor(); // '#ffff00';
2144
+ */
2145
+ ColorPicker.prototype.getColor = function () {
2146
+ return this.options.color;
2147
+ };
2148
+
2149
+ /**
2150
+ * Toggle colorpicker element. set true then reveal colorpicker view.
2151
+ * @param {boolean} [isShow=false] - A flag to show
2152
+ * @example
2153
+ * colorPicker.toggle(false); // hide
2154
+ * colorPicker.toggle(); // hide
2155
+ * colorPicker.toggle(true); // show
2156
+ */
2157
+ ColorPicker.prototype.toggle = function (isShow) {
2158
+ this.layout.container.style.display = !!isShow ? 'block' : 'none';
2159
+ };
2160
+
2161
+ /**
2162
+ * Render colorpicker
2163
+ * @param {string} [color] - selected color
2164
+ * @ignore
2165
+ */
2166
+ ColorPicker.prototype.render = function (color) {
2167
+ this.layout.render(color || this.options.color);
2168
+ };
2169
+
2170
+ /**
2171
+ * Destroy colorpicker instance.
2172
+ * @example
2173
+ * colorPicker.destroy(); // DOM-element is removed
2174
+ */
2175
+ ColorPicker.prototype.destroy = function () {
2176
+ this.layout.destroy();
2177
+ this.options.container.innerHTML = '';
2178
+
2179
+ this.layout = this.slider = this.palette = this.options = null;
2180
+ };
2181
+
2182
+ util.CustomEvents.mixin(ColorPicker);
2183
+
2184
+ module.exports = ColorPicker;
2185
+
2186
+ /***/ }),
2187
+ /* 14 */
2188
+ /***/ (function(module, exports) {
2189
+
2190
+ /**
2191
+ * @fileoverview Utility methods to manipulate colors
2192
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
2193
+ */
2194
+
2195
+ 'use strict';
2196
+
2197
+ var hexRX = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i;
2198
+
2199
+ var colorutil = {
2200
+ /**
2201
+ * pad left zero characters.
2202
+ * @param {number} number number value to pad zero.
2203
+ * @param {number} length pad length to want.
2204
+ * @returns {string} padded string.
2205
+ */
2206
+ leadingZero: function (number, length) {
2207
+ var zero = '',
2208
+ i = 0;
2209
+
2210
+ if ((number + '').length > length) {
2211
+ return number + '';
2212
+ }
2213
+
2214
+ for (; i < length - 1; i += 1) {
2215
+ zero += '0';
2216
+ }
2217
+
2218
+ return (zero + number).slice(length * -1);
2219
+ },
2220
+
2221
+ /**
2222
+ * Check validate of hex string value is RGB
2223
+ * @param {string} str - rgb hex string
2224
+ * @returns {boolean} return true when supplied str is valid RGB hex string
2225
+ */
2226
+ isValidRGB: function (str) {
2227
+ return hexRX.test(str);
2228
+ },
2229
+
2230
+ // @license RGB <-> HSV conversion utilities based off of http://www.cs.rit.edu/~ncs/color/t_convert.html
2231
+
2232
+ /**
2233
+ * Convert color hex string to rgb number array
2234
+ * @param {string} hexStr - hex string
2235
+ * @returns {number[]} rgb numbers
2236
+ */
2237
+ hexToRGB: function (hexStr) {
2238
+ var r, g, b;
2239
+
2240
+ if (!colorutil.isValidRGB(hexStr)) {
2241
+ return false;
2242
+ }
2243
+
2244
+ hexStr = hexStr.substring(1);
2245
+
2246
+ r = parseInt(hexStr.substr(0, 2), 16);
2247
+ g = parseInt(hexStr.substr(2, 2), 16);
2248
+ b = parseInt(hexStr.substr(4, 2), 16);
2249
+
2250
+ return [r, g, b];
2251
+ },
2252
+
2253
+ /**
2254
+ * Convert rgb number to hex string
2255
+ * @param {number} r - red
2256
+ * @param {number} g - green
2257
+ * @param {number} b - blue
2258
+ * @returns {string|boolean} return false when supplied rgb number is not valid. otherwise, converted hex string
2259
+ */
2260
+ rgbToHEX: function (r, g, b) {
2261
+ var hexStr = '#' + colorutil.leadingZero(r.toString(16), 2) + colorutil.leadingZero(g.toString(16), 2) + colorutil.leadingZero(b.toString(16), 2);
2262
+
2263
+ if (colorutil.isValidRGB(hexStr)) {
2264
+ return hexStr;
2265
+ }
2266
+
2267
+ return false;
2268
+ },
2269
+
2270
+ /**
2271
+ * Convert rgb number to HSV value
2272
+ * @param {number} r - red
2273
+ * @param {number} g - green
2274
+ * @param {number} b - blue
2275
+ * @returns {number[]} hsv value
2276
+ */
2277
+ rgbToHSV: function (r, g, b) {
2278
+ var max, min, h, s, v, d;
2279
+
2280
+ r /= 255;
2281
+ g /= 255;
2282
+ b /= 255;
2283
+ max = Math.max(r, g, b);
2284
+ min = Math.min(r, g, b);
2285
+ v = max;
2286
+ d = max - min;
2287
+ s = max === 0 ? 0 : d / max;
2288
+
2289
+ if (max === min) {
2290
+ h = 0;
2291
+ } else {
2292
+ switch (max) {
2293
+ case r:
2294
+ h = (g - b) / d + (g < b ? 6 : 0);break;
2295
+ case g:
2296
+ h = (b - r) / d + 2;break;
2297
+ case b:
2298
+ h = (r - g) / d + 4;break;
2299
+ // no default
2300
+ }
2301
+ h /= 6;
2302
+ }
2303
+
2304
+ return [Math.round(h * 360), Math.round(s * 100), Math.round(v * 100)];
2305
+ },
2306
+
2307
+ /**
2308
+ * Convert HSV number to RGB
2309
+ * @param {number} h - hue
2310
+ * @param {number} s - saturation
2311
+ * @param {number} v - value
2312
+ * @returns {number[]} rgb value
2313
+ */
2314
+ hsvToRGB: function (h, s, v) {
2315
+ var r, g, b;
2316
+ var i;
2317
+ var f, p, q, t;
2318
+
2319
+ h = Math.max(0, Math.min(360, h));
2320
+ s = Math.max(0, Math.min(100, s));
2321
+ v = Math.max(0, Math.min(100, v));
2322
+
2323
+ s /= 100;
2324
+ v /= 100;
2325
+
2326
+ if (s === 0) {
2327
+ // Achromatic (grey)
2328
+ r = g = b = v;
2329
+
2330
+ return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
2331
+ }
2332
+
2333
+ h /= 60; // sector 0 to 5
2334
+ i = Math.floor(h);
2335
+ f = h - i; // factorial part of h
2336
+ p = v * (1 - s);
2337
+ q = v * (1 - s * f);
2338
+ t = v * (1 - s * (1 - f));
2339
+
2340
+ switch (i) {
2341
+ case 0:
2342
+ r = v;g = t;b = p;break;
2343
+ case 1:
2344
+ r = q;g = v;b = p;break;
2345
+ case 2:
2346
+ r = p;g = v;b = t;break;
2347
+ case 3:
2348
+ r = p;g = q;b = v;break;
2349
+ case 4:
2350
+ r = t;g = p;b = v;break;
2351
+ default:
2352
+ r = v;g = p;b = q;break;
2353
+ }
2354
+
2355
+ return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
2356
+ }
2357
+ };
2358
+
2359
+ module.exports = colorutil;
2360
+
2361
+ /***/ }),
2362
+ /* 15 */
2363
+ /***/ (function(module, exports, __webpack_require__) {
2364
+
2365
+ /**
2366
+ * @fileoverview ColorPicker layout module
2367
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
2368
+ */
2369
+
2370
+ 'use strict';
2371
+
2372
+ var util = __webpack_require__(8);
2373
+ var domutil = __webpack_require__(7);
2374
+ var View = __webpack_require__(11);
2375
+
2376
+ /**
2377
+ * @constructor
2378
+ * @extends {View}
2379
+ * @param {object} options - option object
2380
+ * @param {string} options.cssPrefix - css prefix for each child elements
2381
+ * @param {HTMLDivElement} container - container
2382
+ * @ignore
2383
+ */
2384
+ function Layout(options, container) {
2385
+ /**
2386
+ * option object
2387
+ * @type {object}
2388
+ */
2389
+ this.options = util.extend({
2390
+ cssPrefix: 'tui-colorpicker-'
2391
+ }, options);
2392
+
2393
+ container = domutil.appendHTMLElement('div', container, this.options.cssPrefix + 'container');
2394
+
2395
+ View.call(this, options, container);
2396
+
2397
+ this.render();
2398
+ }
2399
+
2400
+ util.inherit(Layout, View);
2401
+
2402
+ /**
2403
+ * @override
2404
+ * @param {string} [color] - selected color
2405
+ */
2406
+ Layout.prototype.render = function (color) {
2407
+ this.recursive(function (view) {
2408
+ view.render(color);
2409
+ }, true);
2410
+ };
2411
+
2412
+ module.exports = Layout;
2413
+
2414
+ /***/ }),
2415
+ /* 16 */
2416
+ /***/ (function(module, exports, __webpack_require__) {
2417
+
2418
+ /**
2419
+ * @fileoverview Color palette view
2420
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
2421
+ */
2422
+
2423
+ 'use strict';
2424
+
2425
+ var util = __webpack_require__(8);
2426
+ var domutil = __webpack_require__(7);
2427
+ var domevent = __webpack_require__(9);
2428
+ var View = __webpack_require__(11);
2429
+ var tmpl = __webpack_require__(17);
2430
+
2431
+ /**
2432
+ * @constructor
2433
+ * @extends {View}
2434
+ * @mixes CustomEvents
2435
+ * @param {object} options - options for color palette view
2436
+ * @param {string[]} options.preset - color list
2437
+ * @param {HTMLDivElement} container - container element
2438
+ * @ignore
2439
+ */
2440
+ function Palette(options, container) {
2441
+ /**
2442
+ * option object
2443
+ * @type {object}
2444
+ */
2445
+ this.options = util.extend({
2446
+ cssPrefix: 'tui-colorpicker-',
2447
+ preset: ['#181818', '#282828', '#383838', '#585858', '#B8B8B8', '#D8D8D8', '#E8E8E8', '#F8F8F8', '#AB4642', '#DC9656', '#F7CA88', '#A1B56C', '#86C1B9', '#7CAFC2', '#BA8BAF', '#A16946'],
2448
+ detailTxt: 'Detail'
2449
+ }, options);
2450
+
2451
+ container = domutil.appendHTMLElement('div', container, this.options.cssPrefix + 'palette-container');
2452
+
2453
+ View.call(this, options, container);
2454
+ }
2455
+
2456
+ util.inherit(Palette, View);
2457
+
2458
+ /**
2459
+ * Mouse click event handler
2460
+ * @fires Palette#_selectColor
2461
+ * @fires Palette#_toggleSlider
2462
+ * @param {MouseEvent} clickEvent - mouse event object
2463
+ */
2464
+ Palette.prototype._onClick = function (clickEvent) {
2465
+ var options = this.options,
2466
+ target = clickEvent.srcElement || clickEvent.target,
2467
+ eventData = {};
2468
+
2469
+ if (domutil.hasClass(target, options.cssPrefix + 'palette-button')) {
2470
+ eventData.color = target.value;
2471
+
2472
+ /**
2473
+ * @event Palette#_selectColor
2474
+ * @type {object}
2475
+ * @property {string} color - selected color value
2476
+ */
2477
+ this.fire('_selectColor', eventData);
2478
+
2479
+ return;
2480
+ }
2481
+
2482
+ if (domutil.hasClass(target, options.cssPrefix + 'palette-toggle-slider')) {
2483
+ /**
2484
+ * @event Palette#_toggleSlider
2485
+ */
2486
+ this.fire('_toggleSlider');
2487
+ }
2488
+ };
2489
+
2490
+ /**
2491
+ * Textbox change event handler
2492
+ * @fires Palette#_selectColor
2493
+ * @param {Event} changeEvent - change event object
2494
+ */
2495
+ Palette.prototype._onChange = function (changeEvent) {
2496
+ var options = this.options,
2497
+ target = changeEvent.srcElement || changeEvent.target,
2498
+ eventData = {};
2499
+
2500
+ if (domutil.hasClass(target, options.cssPrefix + 'palette-hex')) {
2501
+ eventData.color = target.value;
2502
+
2503
+ /**
2504
+ * @event Palette#_selectColor
2505
+ * @type {object}
2506
+ * @property {string} color - selected color value
2507
+ */
2508
+ this.fire('_selectColor', eventData);
2509
+ }
2510
+ };
2511
+
2512
+ /**
2513
+ * Invoke before destory
2514
+ * @override
2515
+ */
2516
+ Palette.prototype._beforeDestroy = function () {
2517
+ this._toggleEvent(false);
2518
+ };
2519
+
2520
+ /**
2521
+ * Toggle view DOM events
2522
+ * @param {boolean} [onOff=false] - true to bind event.
2523
+ */
2524
+ Palette.prototype._toggleEvent = function (onOff) {
2525
+ var options = this.options,
2526
+ container = this.container,
2527
+ method = domevent[!!onOff ? 'on' : 'off'],
2528
+ hexTextBox;
2529
+
2530
+ method(container, 'click', this._onClick, this);
2531
+
2532
+ hexTextBox = domutil.find('.' + options.cssPrefix + 'palette-hex', container);
2533
+
2534
+ if (hexTextBox) {
2535
+ method(hexTextBox, 'change', this._onChange, this);
2536
+ }
2537
+ };
2538
+
2539
+ /**
2540
+ * Render palette
2541
+ * @override
2542
+ */
2543
+ Palette.prototype.render = function (color) {
2544
+ var options = this.options,
2545
+ html = '';
2546
+
2547
+ this._toggleEvent(false);
2548
+
2549
+ html = tmpl.layout.replace('{{colorList}}', util.map(options.preset, function (_color) {
2550
+ var itemHtml = tmpl.item.replace(/{{color}}/g, _color);
2551
+ itemHtml = itemHtml.replace('{{selected}}', _color === color ? ' ' + options.cssPrefix + 'selected' : '');
2552
+
2553
+ return itemHtml;
2554
+ }).join(''));
2555
+
2556
+ html = html.replace(/{{cssPrefix}}/g, options.cssPrefix).replace('{{detailTxt}}', options.detailTxt).replace(/{{color}}/g, color);
2557
+
2558
+ this.container.innerHTML = html;
2559
+
2560
+ this._toggleEvent(true);
2561
+ };
2562
+
2563
+ util.CustomEvents.mixin(Palette);
2564
+
2565
+ module.exports = Palette;
2566
+
2567
+ /***/ }),
2568
+ /* 17 */
2569
+ /***/ (function(module, exports) {
2570
+
2571
+ /**
2572
+ * @fileoverview Palette view template
2573
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
2574
+ */
2575
+
2576
+ 'use strict';
2577
+
2578
+ var layout = ['<ul class="{{cssPrefix}}clearfix">{{colorList}}</ul>', '<div class="{{cssPrefix}}clearfix" style="overflow:hidden">', '<input type="button" class="{{cssPrefix}}palette-toggle-slider" value="{{detailTxt}}" />', '<input type="text" class="{{cssPrefix}}palette-hex" value="{{color}}" maxlength="7" />', '<span class="{{cssPrefix}}palette-preview" style="background-color:{{color}};color:{{color}}">{{color}}</span>', '</div>'].join('\n');
2579
+
2580
+ var item = '<li><input class="{{cssPrefix}}palette-button{{selected}}" type="button" style="background-color:{{color}};color:{{color}}" title="{{color}}" value="{{color}}" /></li>';
2581
+
2582
+ module.exports = {
2583
+ layout: layout,
2584
+ item: item
2585
+ };
2586
+
2587
+ /***/ }),
2588
+ /* 18 */
2589
+ /***/ (function(module, exports, __webpack_require__) {
2590
+
2591
+ /**
2592
+ * @fileoverview Slider view
2593
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
2594
+ */
2595
+
2596
+ 'use strict';
2597
+
2598
+ var util = __webpack_require__(8);
2599
+ var domutil = __webpack_require__(7);
2600
+ var domevent = __webpack_require__(9);
2601
+ var svgvml = __webpack_require__(19);
2602
+ var colorutil = __webpack_require__(14);
2603
+ var View = __webpack_require__(11);
2604
+ var Drag = __webpack_require__(12);
2605
+ var tmpl = __webpack_require__(20);
2606
+
2607
+ // Limitation position of point element inside of colorslider and hue bar
2608
+ // Minimum value can to be negative because that using color point of handle element is center point. not left, top point.
2609
+ var COLORSLIDER_POS_LIMIT_RANGE = [-7, 112];
2610
+ var HUEBAR_POS_LIMIT_RANGE = [-3, 115];
2611
+ var HUE_WHEEL_MAX = 359.99;
2612
+
2613
+ /**
2614
+ * @constructor
2615
+ * @extends {View}
2616
+ * @mixes CustomEvents
2617
+ * @param {object} options - options for view
2618
+ * @param {string} options.cssPrefix - design css prefix
2619
+ * @param {HTMLElement} container - container element
2620
+ * @ignore
2621
+ */
2622
+ function Slider(options, container) {
2623
+ container = domutil.appendHTMLElement('div', container, options.cssPrefix + 'slider-container');
2624
+ container.style.display = 'none';
2625
+
2626
+ View.call(this, options, container);
2627
+
2628
+ /**
2629
+ * @type {object}
2630
+ */
2631
+ this.options = util.extend({
2632
+ color: '#f8f8f8',
2633
+ cssPrefix: 'tui-colorpicker-'
2634
+ }, options);
2635
+
2636
+ /**
2637
+ * Cache immutable data in click, drag events.
2638
+ *
2639
+ * (i.e. is event related with colorslider? or huebar?)
2640
+ * @type {object}
2641
+ * @property {boolean} isColorSlider
2642
+ * @property {number[]} containerSize
2643
+ */
2644
+ this._dragDataCache = {};
2645
+
2646
+ /**
2647
+ * Color slider handle element
2648
+ * @type {SVG|VML}
2649
+ */
2650
+ this.sliderHandleElement = null;
2651
+
2652
+ /**
2653
+ * hue bar handle element
2654
+ * @type {SVG|VML}
2655
+ */
2656
+ this.huebarHandleElement = null;
2657
+
2658
+ /**
2659
+ * Element that render base color in colorslider part
2660
+ * @type {SVG|VML}
2661
+ */
2662
+ this.baseColorElement = null;
2663
+
2664
+ /**
2665
+ * @type {Drag}
2666
+ */
2667
+ this.drag = new Drag({
2668
+ distance: 0
2669
+ }, container);
2670
+
2671
+ // bind drag events
2672
+ this.drag.on({
2673
+ 'dragStart': this._onDragStart,
2674
+ 'drag': this._onDrag,
2675
+ 'dragEnd': this._onDragEnd,
2676
+ 'click': this._onClick
2677
+ }, this);
2678
+ }
2679
+
2680
+ util.inherit(Slider, View);
2681
+
2682
+ /**
2683
+ * @override
2684
+ */
2685
+ Slider.prototype._beforeDestroy = function () {
2686
+ this.drag.off();
2687
+
2688
+ this.drag = this.options = this._dragDataCache = this.sliderHandleElement = this.huebarHandleElement = this.baseColorElement = null;
2689
+ };
2690
+
2691
+ /**
2692
+ * Toggle slider view
2693
+ * @param {boolean} onOff - set true then reveal slider view
2694
+ */
2695
+ Slider.prototype.toggle = function (onOff) {
2696
+ this.container.style.display = !!onOff ? 'block' : 'none';
2697
+ };
2698
+
2699
+ /**
2700
+ * Get slider display status
2701
+ * @returns {boolean} return true when slider is visible
2702
+ */
2703
+ Slider.prototype.isVisible = function () {
2704
+ return this.container.style.display === 'block';
2705
+ };
2706
+
2707
+ /**
2708
+ * Render slider view
2709
+ * @override
2710
+ * @param {string} colorStr - hex string color from parent view (Layout)
2711
+ */
2712
+ Slider.prototype.render = function (colorStr) {
2713
+ var that = this,
2714
+ container = that.container,
2715
+ options = that.options,
2716
+ html = tmpl.layout,
2717
+ rgb,
2718
+ hsv;
2719
+
2720
+ html = html.replace(/{{slider}}/, tmpl.slider);
2721
+ html = html.replace(/{{huebar}}/, tmpl.huebar);
2722
+ html = html.replace(/{{cssPrefix}}/g, options.cssPrefix);
2723
+
2724
+ that.container.innerHTML = html;
2725
+
2726
+ that.sliderHandleElement = domutil.find('.' + options.cssPrefix + 'slider-handle', container);
2727
+ that.huebarHandleElement = domutil.find('.' + options.cssPrefix + 'huebar-handle', container);
2728
+ that.baseColorElement = domutil.find('.' + options.cssPrefix + 'slider-basecolor', container);
2729
+
2730
+ rgb = colorutil.hexToRGB(colorStr);
2731
+ hsv = colorutil.rgbToHSV.apply(null, rgb);
2732
+
2733
+ this.moveHue(hsv[0], true);
2734
+ this.moveSaturationAndValue(hsv[1], hsv[2], true);
2735
+ };
2736
+
2737
+ /**
2738
+ * Move colorslider by newLeft(X), newTop(Y) value
2739
+ * @private
2740
+ * @param {number} newLeft - left pixel value to move handle
2741
+ * @param {number} newTop - top pixel value to move handle
2742
+ * @param {boolean} [silent=false] - set true then not fire custom event
2743
+ */
2744
+ Slider.prototype._moveColorSliderHandle = function (newLeft, newTop, silent) {
2745
+ var handle = this.sliderHandleElement,
2746
+ handleColor;
2747
+
2748
+ // Check position limitation.
2749
+ newTop = Math.max(COLORSLIDER_POS_LIMIT_RANGE[0], newTop);
2750
+ newTop = Math.min(COLORSLIDER_POS_LIMIT_RANGE[1], newTop);
2751
+ newLeft = Math.max(COLORSLIDER_POS_LIMIT_RANGE[0], newLeft);
2752
+ newLeft = Math.min(COLORSLIDER_POS_LIMIT_RANGE[1], newLeft);
2753
+
2754
+ svgvml.setTranslateXY(handle, newLeft, newTop);
2755
+
2756
+ handleColor = newTop > 50 ? 'white' : 'black';
2757
+ svgvml.setStrokeColor(handle, handleColor);
2758
+
2759
+ if (!silent) {
2760
+ this.fire('_selectColor', {
2761
+ color: colorutil.rgbToHEX.apply(null, this.getRGB())
2762
+ });
2763
+ }
2764
+ };
2765
+
2766
+ /**
2767
+ * Move colorslider by supplied saturation and values.
2768
+ *
2769
+ * The movement of color slider handle follow HSV cylinder model. {@link https://en.wikipedia.org/wiki/HSL_and_HSV}
2770
+ * @param {number} saturation - the percent of saturation (0% ~ 100%)
2771
+ * @param {number} value - the percent of saturation (0% ~ 100%)
2772
+ * @param {boolean} [silent=false] - set true then not fire custom event
2773
+ */
2774
+ Slider.prototype.moveSaturationAndValue = function (saturation, value, silent) {
2775
+ var absMin, maxValue, newLeft, newTop;
2776
+
2777
+ saturation = saturation || 0;
2778
+ value = value || 0;
2779
+
2780
+ absMin = Math.abs(COLORSLIDER_POS_LIMIT_RANGE[0]);
2781
+ maxValue = COLORSLIDER_POS_LIMIT_RANGE[1];
2782
+
2783
+ // subtract absMin value because current color position is not left, top of handle element.
2784
+ // The saturation. from left 0 to right 100
2785
+ newLeft = saturation * maxValue / 100 - absMin;
2786
+ // The Value. from top 100 to bottom 0. that why newTop subtract by maxValue.
2787
+ newTop = maxValue - value * maxValue / 100 - absMin;
2788
+
2789
+ this._moveColorSliderHandle(newLeft, newTop, silent);
2790
+ };
2791
+
2792
+ /**
2793
+ * Move color slider handle to supplied position
2794
+ *
2795
+ * The number of X, Y must be related value from color slider container
2796
+ * @private
2797
+ * @param {number} x - the pixel value to move handle
2798
+ * @param {number} y - the pixel value to move handle
2799
+ */
2800
+ Slider.prototype._moveColorSliderByPosition = function (x, y) {
2801
+ var offset = COLORSLIDER_POS_LIMIT_RANGE[0];
2802
+ this._moveColorSliderHandle(x + offset, y + offset);
2803
+ };
2804
+
2805
+ /**
2806
+ * Get saturation and value value.
2807
+ * @returns {number[]} saturation and value
2808
+ */
2809
+ Slider.prototype.getSaturationAndValue = function () {
2810
+ var absMin = Math.abs(COLORSLIDER_POS_LIMIT_RANGE[0]),
2811
+ maxValue = absMin + COLORSLIDER_POS_LIMIT_RANGE[1],
2812
+ position = svgvml.getTranslateXY(this.sliderHandleElement),
2813
+ saturation,
2814
+ value;
2815
+
2816
+ saturation = (position[1] + absMin) / maxValue * 100;
2817
+ // The value of HSV color model is inverted. top 100 ~ bottom 0. so subtract by 100
2818
+ value = 100 - (position[0] + absMin) / maxValue * 100;
2819
+
2820
+ return [saturation, value];
2821
+ };
2822
+
2823
+ /**
2824
+ * Move hue handle supplied pixel value
2825
+ * @private
2826
+ * @param {number} newTop - pixel to move hue handle
2827
+ * @param {boolean} [silent=false] - set true then not fire custom event
2828
+ */
2829
+ Slider.prototype._moveHueHandle = function (newTop, silent) {
2830
+ var hueHandleElement = this.huebarHandleElement,
2831
+ baseColorElement = this.baseColorElement,
2832
+ newGradientColor,
2833
+ hexStr;
2834
+
2835
+ newTop = Math.max(HUEBAR_POS_LIMIT_RANGE[0], newTop);
2836
+ newTop = Math.min(HUEBAR_POS_LIMIT_RANGE[1], newTop);
2837
+
2838
+ svgvml.setTranslateY(hueHandleElement, newTop);
2839
+
2840
+ newGradientColor = colorutil.hsvToRGB(this.getHue(), 100, 100);
2841
+ hexStr = colorutil.rgbToHEX.apply(null, newGradientColor);
2842
+
2843
+ svgvml.setGradientColorStop(baseColorElement, hexStr);
2844
+
2845
+ if (!silent) {
2846
+ this.fire('_selectColor', {
2847
+ color: colorutil.rgbToHEX.apply(null, this.getRGB())
2848
+ });
2849
+ }
2850
+ };
2851
+
2852
+ /**
2853
+ * Move hue bar handle by supplied degree
2854
+ * @param {number} degree - (0 ~ 359.9 degree)
2855
+ * @param {boolean} [silent=false] - set true then not fire custom event
2856
+ */
2857
+ Slider.prototype.moveHue = function (degree, silent) {
2858
+ var newTop = 0,
2859
+ absMin,
2860
+ maxValue;
2861
+
2862
+ absMin = Math.abs(HUEBAR_POS_LIMIT_RANGE[0]);
2863
+ maxValue = absMin + HUEBAR_POS_LIMIT_RANGE[1];
2864
+
2865
+ degree = degree || 0;
2866
+ newTop = maxValue * degree / HUE_WHEEL_MAX - absMin;
2867
+
2868
+ this._moveHueHandle(newTop, silent);
2869
+ };
2870
+
2871
+ /**
2872
+ * Move hue bar handle by supplied percent
2873
+ * @private
2874
+ * @param {number} y - pixel value to move hue handle
2875
+ */
2876
+ Slider.prototype._moveHueByPosition = function (y) {
2877
+ var offset = HUEBAR_POS_LIMIT_RANGE[0];
2878
+
2879
+ this._moveHueHandle(y + offset);
2880
+ };
2881
+
2882
+ /**
2883
+ * Get huebar handle position by color degree
2884
+ * @returns {number} degree (0 ~ 359.9 degree)
2885
+ */
2886
+ Slider.prototype.getHue = function () {
2887
+ var handle = this.huebarHandleElement,
2888
+ position = svgvml.getTranslateXY(handle),
2889
+ absMin,
2890
+ maxValue;
2891
+
2892
+ absMin = Math.abs(HUEBAR_POS_LIMIT_RANGE[0]);
2893
+ maxValue = absMin + HUEBAR_POS_LIMIT_RANGE[1];
2894
+
2895
+ // maxValue : 359.99 = pos.y : x
2896
+ return (position[0] + absMin) * HUE_WHEEL_MAX / maxValue;
2897
+ };
2898
+
2899
+ /**
2900
+ * Get HSV value from slider
2901
+ * @returns {number[]} hsv values
2902
+ */
2903
+ Slider.prototype.getHSV = function () {
2904
+ var sv = this.getSaturationAndValue(),
2905
+ h = this.getHue();
2906
+
2907
+ return [h].concat(sv);
2908
+ };
2909
+
2910
+ /**
2911
+ * Get RGB value from slider
2912
+ * @returns {number[]} RGB value
2913
+ */
2914
+ Slider.prototype.getRGB = function () {
2915
+ return colorutil.hsvToRGB.apply(null, this.getHSV());
2916
+ };
2917
+
2918
+ /**********
2919
+ * Drag event handler
2920
+ **********/
2921
+
2922
+ /**
2923
+ * Cache immutable data when dragging or click view
2924
+ * @param {object} event - Click, DragStart event.
2925
+ * @returns {object} cached data.
2926
+ */
2927
+ Slider.prototype._prepareColorSliderForMouseEvent = function (event) {
2928
+ var options = this.options,
2929
+ sliderPart = domutil.closest(event.target, '.' + options.cssPrefix + 'slider-part'),
2930
+ cache;
2931
+
2932
+ cache = this._dragDataCache = {
2933
+ isColorSlider: domutil.hasClass(sliderPart, options.cssPrefix + 'slider-left'),
2934
+ parentElement: sliderPart
2935
+ };
2936
+
2937
+ return cache;
2938
+ };
2939
+
2940
+ /**
2941
+ * Click event handler
2942
+ * @param {object} clickEvent - Click event from Drag module
2943
+ */
2944
+ Slider.prototype._onClick = function (clickEvent) {
2945
+ var cache = this._prepareColorSliderForMouseEvent(clickEvent),
2946
+ mousePos = domevent.getMousePosition(clickEvent.originEvent, cache.parentElement);
2947
+
2948
+ if (cache.isColorSlider) {
2949
+ this._moveColorSliderByPosition(mousePos[0], mousePos[1]);
2950
+ } else {
2951
+ this._moveHueByPosition(mousePos[1]);
2952
+ }
2953
+
2954
+ this._dragDataCache = null;
2955
+ };
2956
+
2957
+ /**
2958
+ * DragStart event handler
2959
+ * @param {object} dragStartEvent - dragStart event data from Drag#dragStart
2960
+ */
2961
+ Slider.prototype._onDragStart = function (dragStartEvent) {
2962
+ this._prepareColorSliderForMouseEvent(dragStartEvent);
2963
+ };
2964
+
2965
+ /**
2966
+ * Drag event handler
2967
+ * @param {Drag#drag} dragEvent - drag event data
2968
+ */
2969
+ Slider.prototype._onDrag = function (dragEvent) {
2970
+ var cache = this._dragDataCache,
2971
+ mousePos = domevent.getMousePosition(dragEvent.originEvent, cache.parentElement);
2972
+
2973
+ if (cache.isColorSlider) {
2974
+ this._moveColorSliderByPosition(mousePos[0], mousePos[1]);
2975
+ } else {
2976
+ this._moveHueByPosition(mousePos[1]);
2977
+ }
2978
+ };
2979
+
2980
+ /**
2981
+ * Drag#dragEnd event handler
2982
+ */
2983
+ Slider.prototype._onDragEnd = function () {
2984
+ this._dragDataCache = null;
2985
+ };
2986
+
2987
+ util.CustomEvents.mixin(Slider);
2988
+
2989
+ module.exports = Slider;
2990
+
2991
+ /***/ }),
2992
+ /* 19 */
2993
+ /***/ (function(module, exports, __webpack_require__) {
2994
+
2995
+ /**
2996
+ * @fileoverview module for manipulate SVG or VML object
2997
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
2998
+ */
2999
+
3000
+ 'use strict';
3001
+
3002
+ var util = __webpack_require__(8);
3003
+ var PARSE_TRANSLATE_NUM_REGEX = /[\.\-0-9]+/g;
3004
+ var SVG_HUE_HANDLE_RIGHT_POS = -6;
3005
+
3006
+ /* istanbul ignore next */
3007
+ var svgvml = {
3008
+ /**
3009
+ * Return true when browser is below IE8.
3010
+ * @returns {boolean} is old browser?
3011
+ */
3012
+ isOldBrowser: function () {
3013
+ var _isOldBrowser = svgvml._isOldBrowser;
3014
+
3015
+ if (!util.isExisty(_isOldBrowser)) {
3016
+ svgvml._isOldBrowser = _isOldBrowser = util.browser.msie && util.browser.version < 9;
3017
+ }
3018
+
3019
+ return _isOldBrowser;
3020
+ },
3021
+
3022
+ /**
3023
+ * Get translate transform value
3024
+ * @param {SVG|VML} obj - svg or vml object that want to know translate x, y
3025
+ * @returns {number[]} translated coordinates [x, y]
3026
+ */
3027
+ getTranslateXY: function (obj) {
3028
+ var temp;
3029
+
3030
+ if (svgvml.isOldBrowser()) {
3031
+ temp = obj.style;
3032
+
3033
+ return [parseFloat(temp.top), parseFloat(temp.left)];
3034
+ }
3035
+
3036
+ temp = obj.getAttribute('transform');
3037
+
3038
+ if (!temp) {
3039
+ return [0, 0];
3040
+ }
3041
+
3042
+ temp = temp.match(PARSE_TRANSLATE_NUM_REGEX);
3043
+
3044
+ // need caution for difference of VML, SVG coordinates system.
3045
+ // translate command need X coords in first parameter. but VML is use CSS coordinate system(top, left)
3046
+ return [parseFloat(temp[1]), parseFloat(temp[0])];
3047
+ },
3048
+
3049
+ /**
3050
+ * Set translate transform value
3051
+ * @param {SVG|VML} obj - SVG or VML object to setting translate transform.
3052
+ * @param {number} x - translate X value
3053
+ * @param {number} y - translate Y value
3054
+ */
3055
+ setTranslateXY: function (obj, x, y) {
3056
+ if (svgvml.isOldBrowser()) {
3057
+ obj.style.left = x + 'px';
3058
+ obj.style.top = y + 'px';
3059
+ } else {
3060
+ obj.setAttribute('transform', 'translate(' + x + ',' + y + ')');
3061
+ }
3062
+ },
3063
+
3064
+ /**
3065
+ * Set translate only Y value
3066
+ * @param {SVG|VML} obj - SVG or VML object to setting translate transform.
3067
+ * @param {number} y - translate Y value
3068
+ */
3069
+ setTranslateY: function (obj, y) {
3070
+ if (svgvml.isOldBrowser()) {
3071
+ obj.style.top = y + 'px';
3072
+ } else {
3073
+ obj.setAttribute('transform', 'translate(' + SVG_HUE_HANDLE_RIGHT_POS + ',' + y + ')');
3074
+ }
3075
+ },
3076
+
3077
+ /**
3078
+ * Set stroke color to SVG or VML object
3079
+ * @param {SVG|VML} obj - SVG or VML object to setting stroke color
3080
+ * @param {string} colorStr - color string
3081
+ */
3082
+ setStrokeColor: function (obj, colorStr) {
3083
+ if (svgvml.isOldBrowser()) {
3084
+ obj.strokecolor = colorStr;
3085
+ } else {
3086
+ obj.setAttribute('stroke', colorStr);
3087
+ }
3088
+ },
3089
+
3090
+ /**
3091
+ * Set gradient stop color to SVG, VML object.
3092
+ * @param {SVG|VML} obj - SVG, VML object to applying gradient stop color
3093
+ * @param {string} colorStr - color string
3094
+ */
3095
+ setGradientColorStop: function (obj, colorStr) {
3096
+ if (svgvml.isOldBrowser()) {
3097
+ obj.color = colorStr;
3098
+ } else {
3099
+ obj.setAttribute('stop-color', colorStr);
3100
+ }
3101
+ }
3102
+
3103
+ };
3104
+
3105
+ module.exports = svgvml;
3106
+
3107
+ /***/ }),
3108
+ /* 20 */
3109
+ /***/ (function(module, exports, __webpack_require__) {
3110
+
3111
+ /* WEBPACK VAR INJECTION */(function(global) {/**
3112
+ * @fileoverview Slider template
3113
+ * @author NHN Ent. FE Development Team <dl_javascript@nhnent.com>
3114
+ */
3115
+
3116
+ 'use strict';
3117
+
3118
+ var util = __webpack_require__(8);
3119
+
3120
+ var layout = ['<div class="{{cssPrefix}}slider-left {{cssPrefix}}slider-part">{{slider}}</div>', '<div class="{{cssPrefix}}slider-right {{cssPrefix}}slider-part">{{huebar}}</div>'].join('\n');
3121
+
3122
+ var SVGSlider = ['<svg class="{{cssPrefix}}svg {{cssPrefix}}svg-slider">', '<defs>', '<linearGradient id="{{cssPrefix}}svg-fill-color" x1="0%" y1="0%" x2="100%" y2="0%">', '<stop offset="0%" stop-color="rgb(255,255,255)" />', '<stop class="{{cssPrefix}}slider-basecolor" offset="100%" stop-color="rgb(255,0,0)" />', '</linearGradient>', '<linearGradient id="{{cssPrefix}}svn-fill-black" x1="0%" y1="0%" x2="0%" y2="100%">', '<stop offset="0%" style="stop-color:rgb(0,0,0);stop-opacity:0" />', '<stop offset="100%" style="stop-color:rgb(0,0,0);stop-opacity:1" />', '</linearGradient>', '</defs>', '<rect width="100%" height="100%" fill="url(#{{cssPrefix}}svg-fill-color)"></rect>', '<rect width="100%" height="100%" fill="url(#{{cssPrefix}}svn-fill-black)"></rect>', '<path transform="translate(0,0)" class="{{cssPrefix}}slider-handle" d="M0 7.5 L15 7.5 M7.5 15 L7.5 0 M2 7 a5.5 5.5 0 1 1 0 1 Z" stroke="black" stroke-width="0.75" fill="none" />', '</svg>'].join('\n');
3123
+
3124
+ var VMLSlider = ['<div class="{{cssPrefix}}vml-slider">', '<v:rect strokecolor="none" class="{{cssPrefix}}vml {{cssPrefix}}vml-slider-bg">', '<v:fill class="{{cssPrefix}}vml {{cssPrefix}}slider-basecolor" type="gradient" method="none" color="#ff0000" color2="#fff" angle="90" />', '</v:rect>', '<v:rect strokecolor="#ccc" class="{{cssPrefix}}vml {{cssPrefix}}vml-slider-bg">', '<v:fill type="gradient" method="none" color="black" color2="white" o:opacity2="0%" class="{{cssPrefix}}vml" />', '</v:rect>', '<v:shape class="{{cssPrefix}}vml {{cssPrefix}}slider-handle" coordsize="1 1" style="width:1px;height:1px;"' + 'path="m 0,7 l 14,7 m 7,14 l 7,0 ar 12,12 2,2 z" filled="false" stroked="true" />', '</div>'].join('\n');
3125
+
3126
+ var SVGHuebar = ['<svg class="{{cssPrefix}}svg {{cssPrefix}}svg-huebar">', '<defs>', '<linearGradient id="g" x1="0%" y1="0%" x2="0%" y2="100%">', '<stop offset="0%" stop-color="rgb(255,0,0)" />', '<stop offset="16.666%" stop-color="rgb(255,255,0)" />', '<stop offset="33.333%" stop-color="rgb(0,255,0)" />', '<stop offset="50%" stop-color="rgb(0,255,255)" />', '<stop offset="66.666%" stop-color="rgb(0,0,255)" />', '<stop offset="83.333%" stop-color="rgb(255,0,255)" />', '<stop offset="100%" stop-color="rgb(255,0,0)" />', '</linearGradient>', '</defs>', '<rect width="18px" height="100%" fill="url(#g)"></rect>', '<path transform="translate(-6,-3)" class="{{cssPrefix}}huebar-handle" d="M0 0 L4 4 L0 8 L0 0 Z" fill="black" stroke="none" />', '</svg>'].join('\n');
3127
+
3128
+ var VMLHuebar = ['<div class="{{cssPrefix}}vml-huebar">', '<v:rect strokecolor="#ccc" class="{{cssPrefix}}vml {{cssPrefix}}vml-huebar-bg">', '<v:fill type="gradient" method="none" colors="' + '0% rgb(255,0,0), 16.666% rgb(255,255,0), 33.333% rgb(0,255,0), 50% rgb(0,255,255), 66.666% rgb(0,0,255), 83.333% rgb(255,0,255), 100% rgb(255,0,0)' + '" angle="180" class="{{cssPrefix}}vml" />', '</v:rect>', '<v:shape class="{{cssPrefix}}vml {{cssPrefix}}huebar-handle" coordsize="1 1" style="width:1px;height:1px;position:absolute;z-index:1;right:22px;top:-3px;"' + 'path="m 0,0 l 4,4 l 0,8 l 0,0 z" filled="true" fillcolor="black" stroked="false" />', '</div>'].join('\n');
3129
+
3130
+ var isOldBrowser = util.browser.msie && util.browser.version < 9;
3131
+
3132
+ if (isOldBrowser) {
3133
+ global.document.namespaces.add('v', 'urn:schemas-microsoft-com:vml');
3134
+ }
3135
+
3136
+ module.exports = {
3137
+ layout: layout,
3138
+ slider: isOldBrowser ? VMLSlider : SVGSlider,
3139
+ huebar: isOldBrowser ? VMLHuebar : SVGHuebar
3140
+ };
3141
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3142
+
3143
+ /***/ })
3144
+ /******/ ])
3145
+ });
3146
+ ;