tui_editor-rails 1.0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/.ruby-version +1 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +20 -0
- data/README.md +69 -0
- data/Rakefile +2 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/example/.gitignore +30 -0
- data/example/.ruby-version +1 -0
- data/example/Gemfile +64 -0
- data/example/Gemfile.lock +224 -0
- data/example/README.md +67 -0
- data/example/Rakefile +6 -0
- data/example/app/assets/config/manifest.js +3 -0
- data/example/app/assets/images/.keep +0 -0
- data/example/app/assets/images/screen_capture.png +0 -0
- data/example/app/assets/javascripts/application.js +23 -0
- data/example/app/assets/javascripts/cable.js +13 -0
- data/example/app/assets/javascripts/channels/.keep +0 -0
- data/example/app/assets/javascripts/home.coffee +3 -0
- data/example/app/assets/javascripts/posts.coffee +3 -0
- data/example/app/assets/stylesheets/application.scss +4 -0
- data/example/app/assets/stylesheets/home.scss +3 -0
- data/example/app/assets/stylesheets/posts.scss +3 -0
- data/example/app/assets/stylesheets/scaffolds.scss +84 -0
- data/example/app/channels/application_cable/channel.rb +4 -0
- data/example/app/channels/application_cable/connection.rb +4 -0
- data/example/app/controllers/application_controller.rb +2 -0
- data/example/app/controllers/concerns/.keep +0 -0
- data/example/app/controllers/home_controller.rb +4 -0
- data/example/app/controllers/posts_controller.rb +74 -0
- data/example/app/helpers/application_helper.rb +2 -0
- data/example/app/helpers/home_helper.rb +2 -0
- data/example/app/helpers/posts_helper.rb +2 -0
- data/example/app/jobs/application_job.rb +2 -0
- data/example/app/mailers/application_mailer.rb +4 -0
- data/example/app/models/application_record.rb +3 -0
- data/example/app/models/concerns/.keep +0 -0
- data/example/app/models/post.rb +2 -0
- data/example/app/views/home/index.html.erb +11 -0
- data/example/app/views/layouts/application.html.erb +14 -0
- data/example/app/views/layouts/mailer.html.erb +13 -0
- data/example/app/views/layouts/mailer.text.erb +1 -0
- data/example/app/views/posts/_form.html.erb +27 -0
- data/example/app/views/posts/_post.json.jbuilder +2 -0
- data/example/app/views/posts/edit.html.erb +6 -0
- data/example/app/views/posts/index.html.erb +29 -0
- data/example/app/views/posts/index.json.jbuilder +1 -0
- data/example/app/views/posts/new.html.erb +5 -0
- data/example/app/views/posts/show.html.erb +14 -0
- data/example/app/views/posts/show.json.jbuilder +1 -0
- data/example/bin/bundle +3 -0
- data/example/bin/rails +9 -0
- data/example/bin/rake +9 -0
- data/example/bin/setup +36 -0
- data/example/bin/spring +17 -0
- data/example/bin/update +31 -0
- data/example/bin/yarn +11 -0
- data/example/config.ru +5 -0
- data/example/config/application.rb +19 -0
- data/example/config/boot.rb +4 -0
- data/example/config/cable.yml +10 -0
- data/example/config/credentials.yml.enc +1 -0
- data/example/config/database.yml +25 -0
- data/example/config/environment.rb +5 -0
- data/example/config/environments/development.rb +61 -0
- data/example/config/environments/production.rb +94 -0
- data/example/config/environments/test.rb +46 -0
- data/example/config/initializers/application_controller_renderer.rb +8 -0
- data/example/config/initializers/assets.rb +14 -0
- data/example/config/initializers/backtrace_silencers.rb +7 -0
- data/example/config/initializers/content_security_policy.rb +22 -0
- data/example/config/initializers/cookies_serializer.rb +5 -0
- data/example/config/initializers/filter_parameter_logging.rb +4 -0
- data/example/config/initializers/inflections.rb +16 -0
- data/example/config/initializers/mime_types.rb +4 -0
- data/example/config/initializers/wrap_parameters.rb +14 -0
- data/example/config/locales/en.yml +33 -0
- data/example/config/puma.rb +34 -0
- data/example/config/routes.rb +6 -0
- data/example/config/spring.rb +6 -0
- data/example/config/storage.yml +35 -0
- data/example/db/migrate/20180208210404_create_posts.rb +10 -0
- data/example/db/schema.rb +22 -0
- data/example/db/seeds.rb +7 -0
- data/example/lib/assets/.keep +0 -0
- data/example/lib/tasks/.keep +0 -0
- data/example/log/.keep +0 -0
- data/example/package.json +5 -0
- data/example/public/404.html +67 -0
- data/example/public/422.html +67 -0
- data/example/public/500.html +66 -0
- data/example/public/apple-touch-icon-precomposed.png +0 -0
- data/example/public/apple-touch-icon.png +0 -0
- data/example/public/favicon.ico +0 -0
- data/example/public/robots.txt +1 -0
- data/example/test/application_system_test_case.rb +5 -0
- data/example/test/controllers/.keep +0 -0
- data/example/test/controllers/home_controller_test.rb +9 -0
- data/example/test/controllers/posts_controller_test.rb +48 -0
- data/example/test/fixtures/.keep +0 -0
- data/example/test/fixtures/files/.keep +0 -0
- data/example/test/fixtures/posts.yml +9 -0
- data/example/test/helpers/.keep +0 -0
- data/example/test/integration/.keep +0 -0
- data/example/test/mailers/.keep +0 -0
- data/example/test/models/.keep +0 -0
- data/example/test/models/post_test.rb +7 -0
- data/example/test/system/.keep +0 -0
- data/example/test/system/posts_test.rb +45 -0
- data/example/test/test_helper.rb +10 -0
- data/example/tmp/.keep +0 -0
- data/example/vendor/.keep +0 -0
- data/lib/tui_editor/rails.rb +8 -0
- data/lib/tui_editor/rails/version.rb +5 -0
- data/tui_editor-rails.gemspec +34 -0
- data/vendor/assets/components/codemirror/.bower.json +31 -0
- data/vendor/assets/components/codemirror/AUTHORS +714 -0
- data/vendor/assets/components/codemirror/CHANGELOG.md +1316 -0
- data/vendor/assets/components/codemirror/CONTRIBUTING.md +92 -0
- data/vendor/assets/components/codemirror/LICENSE +21 -0
- data/vendor/assets/components/codemirror/README.md +35 -0
- data/vendor/assets/components/codemirror/addon/comment/comment.js +209 -0
- data/vendor/assets/components/codemirror/addon/comment/continuecomment.js +78 -0
- data/vendor/assets/components/codemirror/addon/dialog/dialog.css +32 -0
- data/vendor/assets/components/codemirror/addon/dialog/dialog.js +157 -0
- data/vendor/assets/components/codemirror/addon/display/autorefresh.js +47 -0
- data/vendor/assets/components/codemirror/addon/display/fullscreen.css +6 -0
- data/vendor/assets/components/codemirror/addon/display/fullscreen.js +41 -0
- data/vendor/assets/components/codemirror/addon/display/panel.js +123 -0
- data/vendor/assets/components/codemirror/addon/display/placeholder.js +63 -0
- data/vendor/assets/components/codemirror/addon/display/rulers.js +51 -0
- data/vendor/assets/components/codemirror/addon/edit/closebrackets.js +194 -0
- data/vendor/assets/components/codemirror/addon/edit/closetag.js +175 -0
- data/vendor/assets/components/codemirror/addon/edit/continuelist.js +89 -0
- data/vendor/assets/components/codemirror/addon/edit/matchbrackets.js +145 -0
- data/vendor/assets/components/codemirror/addon/edit/matchtags.js +66 -0
- data/vendor/assets/components/codemirror/addon/edit/trailingspace.js +27 -0
- data/vendor/assets/components/codemirror/addon/fold/brace-fold.js +105 -0
- data/vendor/assets/components/codemirror/addon/fold/comment-fold.js +59 -0
- data/vendor/assets/components/codemirror/addon/fold/foldcode.js +152 -0
- data/vendor/assets/components/codemirror/addon/fold/foldgutter.css +20 -0
- data/vendor/assets/components/codemirror/addon/fold/foldgutter.js +146 -0
- data/vendor/assets/components/codemirror/addon/fold/indent-fold.js +48 -0
- data/vendor/assets/components/codemirror/addon/fold/markdown-fold.js +49 -0
- data/vendor/assets/components/codemirror/addon/fold/xml-fold.js +182 -0
- data/vendor/assets/components/codemirror/addon/hint/anyword-hint.js +41 -0
- data/vendor/assets/components/codemirror/addon/hint/css-hint.js +60 -0
- data/vendor/assets/components/codemirror/addon/hint/html-hint.js +348 -0
- data/vendor/assets/components/codemirror/addon/hint/javascript-hint.js +155 -0
- data/vendor/assets/components/codemirror/addon/hint/show-hint.css +36 -0
- data/vendor/assets/components/codemirror/addon/hint/show-hint.js +432 -0
- data/vendor/assets/components/codemirror/addon/hint/sql-hint.js +286 -0
- data/vendor/assets/components/codemirror/addon/hint/xml-hint.js +110 -0
- data/vendor/assets/components/codemirror/addon/lint/coffeescript-lint.js +47 -0
- data/vendor/assets/components/codemirror/addon/lint/css-lint.js +40 -0
- data/vendor/assets/components/codemirror/addon/lint/html-lint.js +53 -0
- data/vendor/assets/components/codemirror/addon/lint/javascript-lint.js +63 -0
- data/vendor/assets/components/codemirror/addon/lint/json-lint.js +37 -0
- data/vendor/assets/components/codemirror/addon/lint/lint.css +73 -0
- data/vendor/assets/components/codemirror/addon/lint/lint.js +252 -0
- data/vendor/assets/components/codemirror/addon/lint/yaml-lint.js +41 -0
- data/vendor/assets/components/codemirror/addon/merge/merge.css +113 -0
- data/vendor/assets/components/codemirror/addon/merge/merge.js +1001 -0
- data/vendor/assets/components/codemirror/addon/mode/loadmode.js +64 -0
- data/vendor/assets/components/codemirror/addon/mode/multiplex.js +123 -0
- data/vendor/assets/components/codemirror/addon/mode/multiplex_test.js +33 -0
- data/vendor/assets/components/codemirror/addon/mode/overlay.js +90 -0
- data/vendor/assets/components/codemirror/addon/mode/simple.js +216 -0
- data/vendor/assets/components/codemirror/addon/runmode/colorize.js +40 -0
- data/vendor/assets/components/codemirror/addon/runmode/runmode-standalone.js +158 -0
- data/vendor/assets/components/codemirror/addon/runmode/runmode.js +72 -0
- data/vendor/assets/components/codemirror/addon/runmode/runmode.node.js +197 -0
- data/vendor/assets/components/codemirror/addon/scroll/annotatescrollbar.js +122 -0
- data/vendor/assets/components/codemirror/addon/scroll/scrollpastend.js +48 -0
- data/vendor/assets/components/codemirror/addon/scroll/simplescrollbars.css +66 -0
- data/vendor/assets/components/codemirror/addon/scroll/simplescrollbars.js +152 -0
- data/vendor/assets/components/codemirror/addon/search/jump-to-line.js +49 -0
- data/vendor/assets/components/codemirror/addon/search/match-highlighter.js +165 -0
- data/vendor/assets/components/codemirror/addon/search/matchesonscrollbar.css +8 -0
- data/vendor/assets/components/codemirror/addon/search/matchesonscrollbar.js +97 -0
- data/vendor/assets/components/codemirror/addon/search/search.js +252 -0
- data/vendor/assets/components/codemirror/addon/search/searchcursor.js +289 -0
- data/vendor/assets/components/codemirror/addon/selection/active-line.js +72 -0
- data/vendor/assets/components/codemirror/addon/selection/mark-selection.js +119 -0
- data/vendor/assets/components/codemirror/addon/selection/selection-pointer.js +98 -0
- data/vendor/assets/components/codemirror/addon/tern/tern.css +87 -0
- data/vendor/assets/components/codemirror/addon/tern/tern.js +718 -0
- data/vendor/assets/components/codemirror/addon/tern/worker.js +44 -0
- data/vendor/assets/components/codemirror/addon/wrap/hardwrap.js +144 -0
- data/vendor/assets/components/codemirror/bower.json +17 -0
- data/vendor/assets/components/codemirror/component-tools/bower.json +17 -0
- data/vendor/assets/components/codemirror/component-tools/build.sh +31 -0
- data/vendor/assets/components/codemirror/component-tools/update.py +38 -0
- data/vendor/assets/components/codemirror/keymap/emacs.js +416 -0
- data/vendor/assets/components/codemirror/keymap/sublime.js +685 -0
- data/vendor/assets/components/codemirror/keymap/vim.js +5219 -0
- data/vendor/assets/components/codemirror/lib/codemirror.css +346 -0
- data/vendor/assets/components/codemirror/lib/codemirror.js +9669 -0
- data/vendor/assets/components/codemirror/mode/apl/apl.js +174 -0
- data/vendor/assets/components/codemirror/mode/asciiarmor/asciiarmor.js +74 -0
- data/vendor/assets/components/codemirror/mode/asn.1/asn.1.js +204 -0
- data/vendor/assets/components/codemirror/mode/asterisk/asterisk.js +196 -0
- data/vendor/assets/components/codemirror/mode/brainfuck/brainfuck.js +85 -0
- data/vendor/assets/components/codemirror/mode/clike/clike.js +817 -0
- data/vendor/assets/components/codemirror/mode/clojure/clojure.js +306 -0
- data/vendor/assets/components/codemirror/mode/cmake/cmake.js +97 -0
- data/vendor/assets/components/codemirror/mode/cobol/cobol.js +255 -0
- data/vendor/assets/components/codemirror/mode/coffeescript/coffeescript.js +359 -0
- data/vendor/assets/components/codemirror/mode/commonlisp/commonlisp.js +124 -0
- data/vendor/assets/components/codemirror/mode/crystal/crystal.js +433 -0
- data/vendor/assets/components/codemirror/mode/css/css.js +832 -0
- data/vendor/assets/components/codemirror/mode/cypher/cypher.js +150 -0
- data/vendor/assets/components/codemirror/mode/d/d.js +218 -0
- data/vendor/assets/components/codemirror/mode/dart/dart.js +157 -0
- data/vendor/assets/components/codemirror/mode/diff/diff.js +47 -0
- data/vendor/assets/components/codemirror/mode/django/django.js +356 -0
- data/vendor/assets/components/codemirror/mode/dockerfile/dockerfile.js +79 -0
- data/vendor/assets/components/codemirror/mode/dtd/dtd.js +142 -0
- data/vendor/assets/components/codemirror/mode/dylan/dylan.js +352 -0
- data/vendor/assets/components/codemirror/mode/ebnf/ebnf.js +195 -0
- data/vendor/assets/components/codemirror/mode/ecl/ecl.js +206 -0
- data/vendor/assets/components/codemirror/mode/eiffel/eiffel.js +160 -0
- data/vendor/assets/components/codemirror/mode/elm/elm.js +205 -0
- data/vendor/assets/components/codemirror/mode/erlang/erlang.js +619 -0
- data/vendor/assets/components/codemirror/mode/factor/factor.js +85 -0
- data/vendor/assets/components/codemirror/mode/fcl/fcl.js +173 -0
- data/vendor/assets/components/codemirror/mode/forth/forth.js +180 -0
- data/vendor/assets/components/codemirror/mode/fortran/fortran.js +188 -0
- data/vendor/assets/components/codemirror/mode/gas/gas.js +345 -0
- data/vendor/assets/components/codemirror/mode/gfm/gfm.js +129 -0
- data/vendor/assets/components/codemirror/mode/gherkin/gherkin.js +178 -0
- data/vendor/assets/components/codemirror/mode/go/go.js +187 -0
- data/vendor/assets/components/codemirror/mode/groovy/groovy.js +230 -0
- data/vendor/assets/components/codemirror/mode/haml/haml.js +161 -0
- data/vendor/assets/components/codemirror/mode/handlebars/handlebars.js +62 -0
- data/vendor/assets/components/codemirror/mode/haskell-literate/haskell-literate.js +43 -0
- data/vendor/assets/components/codemirror/mode/haskell/haskell.js +267 -0
- data/vendor/assets/components/codemirror/mode/haxe/haxe.js +515 -0
- data/vendor/assets/components/codemirror/mode/htmlembedded/htmlembedded.js +37 -0
- data/vendor/assets/components/codemirror/mode/htmlmixed/htmlmixed.js +152 -0
- data/vendor/assets/components/codemirror/mode/http/http.js +113 -0
- data/vendor/assets/components/codemirror/mode/idl/idl.js +290 -0
- data/vendor/assets/components/codemirror/mode/javascript/javascript.js +865 -0
- data/vendor/assets/components/codemirror/mode/jinja2/jinja2.js +142 -0
- data/vendor/assets/components/codemirror/mode/jsx/jsx.js +148 -0
- data/vendor/assets/components/codemirror/mode/julia/julia.js +418 -0
- data/vendor/assets/components/codemirror/mode/livescript/livescript.js +280 -0
- data/vendor/assets/components/codemirror/mode/lua/lua.js +159 -0
- data/vendor/assets/components/codemirror/mode/markdown/markdown.js +872 -0
- data/vendor/assets/components/codemirror/mode/mathematica/mathematica.js +176 -0
- data/vendor/assets/components/codemirror/mode/mbox/mbox.js +129 -0
- data/vendor/assets/components/codemirror/mode/meta.js +217 -0
- data/vendor/assets/components/codemirror/mode/mirc/mirc.js +193 -0
- data/vendor/assets/components/codemirror/mode/mllike/mllike.js +356 -0
- data/vendor/assets/components/codemirror/mode/modelica/modelica.js +245 -0
- data/vendor/assets/components/codemirror/mode/mscgen/mscgen.js +175 -0
- data/vendor/assets/components/codemirror/mode/mumps/mumps.js +148 -0
- data/vendor/assets/components/codemirror/mode/nginx/nginx.js +178 -0
- data/vendor/assets/components/codemirror/mode/nsis/nsis.js +95 -0
- data/vendor/assets/components/codemirror/mode/ntriples/ntriples.js +195 -0
- data/vendor/assets/components/codemirror/mode/octave/octave.js +139 -0
- data/vendor/assets/components/codemirror/mode/oz/oz.js +252 -0
- data/vendor/assets/components/codemirror/mode/pascal/pascal.js +109 -0
- data/vendor/assets/components/codemirror/mode/pegjs/pegjs.js +114 -0
- data/vendor/assets/components/codemirror/mode/perl/perl.js +837 -0
- data/vendor/assets/components/codemirror/mode/php/php.js +234 -0
- data/vendor/assets/components/codemirror/mode/pig/pig.js +178 -0
- data/vendor/assets/components/codemirror/mode/powershell/powershell.js +398 -0
- data/vendor/assets/components/codemirror/mode/properties/properties.js +78 -0
- data/vendor/assets/components/codemirror/mode/protobuf/protobuf.js +69 -0
- data/vendor/assets/components/codemirror/mode/pug/pug.js +591 -0
- data/vendor/assets/components/codemirror/mode/puppet/puppet.js +220 -0
- data/vendor/assets/components/codemirror/mode/python/python.js +334 -0
- data/vendor/assets/components/codemirror/mode/q/q.js +139 -0
- data/vendor/assets/components/codemirror/mode/r/r.js +183 -0
- data/vendor/assets/components/codemirror/mode/rpm/rpm.js +109 -0
- data/vendor/assets/components/codemirror/mode/rst/rst.js +557 -0
- data/vendor/assets/components/codemirror/mode/ruby/ruby.js +296 -0
- data/vendor/assets/components/codemirror/mode/rust/rust.js +72 -0
- data/vendor/assets/components/codemirror/mode/sas/sas.js +303 -0
- data/vendor/assets/components/codemirror/mode/sass/sass.js +454 -0
- data/vendor/assets/components/codemirror/mode/scheme/scheme.js +249 -0
- data/vendor/assets/components/codemirror/mode/shell/shell.js +151 -0
- data/vendor/assets/components/codemirror/mode/sieve/sieve.js +193 -0
- data/vendor/assets/components/codemirror/mode/slim/slim.js +575 -0
- data/vendor/assets/components/codemirror/mode/smalltalk/smalltalk.js +168 -0
- data/vendor/assets/components/codemirror/mode/smarty/smarty.js +225 -0
- data/vendor/assets/components/codemirror/mode/solr/solr.js +104 -0
- data/vendor/assets/components/codemirror/mode/soy/soy.js +354 -0
- data/vendor/assets/components/codemirror/mode/sparql/sparql.js +180 -0
- data/vendor/assets/components/codemirror/mode/spreadsheet/spreadsheet.js +112 -0
- data/vendor/assets/components/codemirror/mode/sql/sql.js +488 -0
- data/vendor/assets/components/codemirror/mode/stex/stex.js +251 -0
- data/vendor/assets/components/codemirror/mode/stylus/stylus.js +771 -0
- data/vendor/assets/components/codemirror/mode/swift/swift.js +219 -0
- data/vendor/assets/components/codemirror/mode/tcl/tcl.js +139 -0
- data/vendor/assets/components/codemirror/mode/textile/textile.js +469 -0
- data/vendor/assets/components/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
- data/vendor/assets/components/codemirror/mode/tiddlywiki/tiddlywiki.js +308 -0
- data/vendor/assets/components/codemirror/mode/tiki/tiki.css +26 -0
- data/vendor/assets/components/codemirror/mode/tiki/tiki.js +312 -0
- data/vendor/assets/components/codemirror/mode/toml/toml.js +88 -0
- data/vendor/assets/components/codemirror/mode/tornado/tornado.js +68 -0
- data/vendor/assets/components/codemirror/mode/troff/troff.js +84 -0
- data/vendor/assets/components/codemirror/mode/ttcn-cfg/ttcn-cfg.js +214 -0
- data/vendor/assets/components/codemirror/mode/ttcn/ttcn.js +283 -0
- data/vendor/assets/components/codemirror/mode/turtle/turtle.js +162 -0
- data/vendor/assets/components/codemirror/mode/twig/twig.js +141 -0
- data/vendor/assets/components/codemirror/mode/vb/vb.js +275 -0
- data/vendor/assets/components/codemirror/mode/vbscript/vbscript.js +350 -0
- data/vendor/assets/components/codemirror/mode/velocity/velocity.js +201 -0
- data/vendor/assets/components/codemirror/mode/verilog/verilog.js +675 -0
- data/vendor/assets/components/codemirror/mode/vhdl/vhdl.js +189 -0
- data/vendor/assets/components/codemirror/mode/vue/vue.js +77 -0
- data/vendor/assets/components/codemirror/mode/webidl/webidl.js +195 -0
- data/vendor/assets/components/codemirror/mode/xml/xml.js +401 -0
- data/vendor/assets/components/codemirror/mode/xquery/xquery.js +448 -0
- data/vendor/assets/components/codemirror/mode/yacas/yacas.js +204 -0
- data/vendor/assets/components/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +68 -0
- data/vendor/assets/components/codemirror/mode/yaml/yaml.js +118 -0
- data/vendor/assets/components/codemirror/mode/z80/z80.js +116 -0
- data/vendor/assets/components/codemirror/rollup.config.js +18 -0
- data/vendor/assets/components/codemirror/src/codemirror.js +3 -0
- data/vendor/assets/components/codemirror/src/display/Display.js +106 -0
- data/vendor/assets/components/codemirror/src/display/focus.js +47 -0
- data/vendor/assets/components/codemirror/src/display/gutters.js +34 -0
- data/vendor/assets/components/codemirror/src/display/highlight_worker.js +55 -0
- data/vendor/assets/components/codemirror/src/display/line_numbers.js +48 -0
- data/vendor/assets/components/codemirror/src/display/mode_state.js +22 -0
- data/vendor/assets/components/codemirror/src/display/operations.js +205 -0
- data/vendor/assets/components/codemirror/src/display/scroll_events.js +115 -0
- data/vendor/assets/components/codemirror/src/display/scrollbars.js +192 -0
- data/vendor/assets/components/codemirror/src/display/scrolling.js +184 -0
- data/vendor/assets/components/codemirror/src/display/selection.js +158 -0
- data/vendor/assets/components/codemirror/src/display/update_display.js +260 -0
- data/vendor/assets/components/codemirror/src/display/update_line.js +188 -0
- data/vendor/assets/components/codemirror/src/display/update_lines.js +64 -0
- data/vendor/assets/components/codemirror/src/display/view_tracking.js +153 -0
- data/vendor/assets/components/codemirror/src/edit/CodeMirror.js +214 -0
- data/vendor/assets/components/codemirror/src/edit/commands.js +178 -0
- data/vendor/assets/components/codemirror/src/edit/deleteNearSelection.js +30 -0
- data/vendor/assets/components/codemirror/src/edit/drop_events.js +119 -0
- data/vendor/assets/components/codemirror/src/edit/fromTextArea.js +61 -0
- data/vendor/assets/components/codemirror/src/edit/global_events.js +44 -0
- data/vendor/assets/components/codemirror/src/edit/key_events.js +159 -0
- data/vendor/assets/components/codemirror/src/edit/legacy.js +62 -0
- data/vendor/assets/components/codemirror/src/edit/main.js +69 -0
- data/vendor/assets/components/codemirror/src/edit/methods.js +539 -0
- data/vendor/assets/components/codemirror/src/edit/mouse_events.js +407 -0
- data/vendor/assets/components/codemirror/src/edit/options.js +191 -0
- data/vendor/assets/components/codemirror/src/edit/utils.js +7 -0
- data/vendor/assets/components/codemirror/src/input/ContentEditableInput.js +517 -0
- data/vendor/assets/components/codemirror/src/input/TextareaInput.js +350 -0
- data/vendor/assets/components/codemirror/src/input/indent.js +71 -0
- data/vendor/assets/components/codemirror/src/input/input.js +135 -0
- data/vendor/assets/components/codemirror/src/input/keymap.js +148 -0
- data/vendor/assets/components/codemirror/src/input/keynames.js +17 -0
- data/vendor/assets/components/codemirror/src/input/movement.js +110 -0
- data/vendor/assets/components/codemirror/src/line/highlight.js +284 -0
- data/vendor/assets/components/codemirror/src/line/line_data.js +337 -0
- data/vendor/assets/components/codemirror/src/line/pos.js +40 -0
- data/vendor/assets/components/codemirror/src/line/saw_special_spans.js +10 -0
- data/vendor/assets/components/codemirror/src/line/spans.js +372 -0
- data/vendor/assets/components/codemirror/src/line/utils_line.js +85 -0
- data/vendor/assets/components/codemirror/src/measurement/position_measurement.js +700 -0
- data/vendor/assets/components/codemirror/src/measurement/widgets.js +26 -0
- data/vendor/assets/components/codemirror/src/model/Doc.js +432 -0
- data/vendor/assets/components/codemirror/src/model/change_measurement.js +61 -0
- data/vendor/assets/components/codemirror/src/model/changes.js +330 -0
- data/vendor/assets/components/codemirror/src/model/chunk.js +167 -0
- data/vendor/assets/components/codemirror/src/model/document_data.js +111 -0
- data/vendor/assets/components/codemirror/src/model/history.js +228 -0
- data/vendor/assets/components/codemirror/src/model/line_widget.js +78 -0
- data/vendor/assets/components/codemirror/src/model/mark_text.js +292 -0
- data/vendor/assets/components/codemirror/src/model/selection.js +82 -0
- data/vendor/assets/components/codemirror/src/model/selection_updates.js +208 -0
- data/vendor/assets/components/codemirror/src/modes.js +96 -0
- data/vendor/assets/components/codemirror/src/util/StringStream.js +90 -0
- data/vendor/assets/components/codemirror/src/util/bidi.js +214 -0
- data/vendor/assets/components/codemirror/src/util/browser.js +33 -0
- data/vendor/assets/components/codemirror/src/util/dom.js +97 -0
- data/vendor/assets/components/codemirror/src/util/event.js +103 -0
- data/vendor/assets/components/codemirror/src/util/feature_detection.js +84 -0
- data/vendor/assets/components/codemirror/src/util/misc.js +150 -0
- data/vendor/assets/components/codemirror/src/util/operation_group.js +72 -0
- data/vendor/assets/components/codemirror/theme/3024-day.css +41 -0
- data/vendor/assets/components/codemirror/theme/3024-night.css +39 -0
- data/vendor/assets/components/codemirror/theme/abcdef.css +32 -0
- data/vendor/assets/components/codemirror/theme/ambiance-mobile.css +5 -0
- data/vendor/assets/components/codemirror/theme/ambiance.css +74 -0
- data/vendor/assets/components/codemirror/theme/base16-dark.css +38 -0
- data/vendor/assets/components/codemirror/theme/base16-light.css +38 -0
- data/vendor/assets/components/codemirror/theme/bespin.css +34 -0
- data/vendor/assets/components/codemirror/theme/blackboard.css +32 -0
- data/vendor/assets/components/codemirror/theme/cobalt.css +25 -0
- data/vendor/assets/components/codemirror/theme/colorforth.css +33 -0
- data/vendor/assets/components/codemirror/theme/dracula.css +40 -0
- data/vendor/assets/components/codemirror/theme/duotone-dark.css +35 -0
- data/vendor/assets/components/codemirror/theme/duotone-light.css +36 -0
- data/vendor/assets/components/codemirror/theme/eclipse.css +23 -0
- data/vendor/assets/components/codemirror/theme/elegant.css +13 -0
- data/vendor/assets/components/codemirror/theme/erlang-dark.css +34 -0
- data/vendor/assets/components/codemirror/theme/hopscotch.css +34 -0
- data/vendor/assets/components/codemirror/theme/icecoder.css +43 -0
- data/vendor/assets/components/codemirror/theme/isotope.css +34 -0
- data/vendor/assets/components/codemirror/theme/lesser-dark.css +47 -0
- data/vendor/assets/components/codemirror/theme/liquibyte.css +95 -0
- data/vendor/assets/components/codemirror/theme/material.css +53 -0
- data/vendor/assets/components/codemirror/theme/mbo.css +37 -0
- data/vendor/assets/components/codemirror/theme/mdn-like.css +46 -0
- data/vendor/assets/components/codemirror/theme/midnight.css +43 -0
- data/vendor/assets/components/codemirror/theme/monokai.css +36 -0
- data/vendor/assets/components/codemirror/theme/neat.css +12 -0
- data/vendor/assets/components/codemirror/theme/neo.css +43 -0
- data/vendor/assets/components/codemirror/theme/night.css +27 -0
- data/vendor/assets/components/codemirror/theme/oceanic-next.css +44 -0
- data/vendor/assets/components/codemirror/theme/panda-syntax.css +85 -0
- data/vendor/assets/components/codemirror/theme/paraiso-dark.css +38 -0
- data/vendor/assets/components/codemirror/theme/paraiso-light.css +38 -0
- data/vendor/assets/components/codemirror/theme/pastel-on-dark.css +52 -0
- data/vendor/assets/components/codemirror/theme/railscasts.css +34 -0
- data/vendor/assets/components/codemirror/theme/rubyblue.css +25 -0
- data/vendor/assets/components/codemirror/theme/seti.css +44 -0
- data/vendor/assets/components/codemirror/theme/shadowfox.css +52 -0
- data/vendor/assets/components/codemirror/theme/solarized.css +168 -0
- data/vendor/assets/components/codemirror/theme/the-matrix.css +30 -0
- data/vendor/assets/components/codemirror/theme/tomorrow-night-bright.css +35 -0
- data/vendor/assets/components/codemirror/theme/tomorrow-night-eighties.css +38 -0
- data/vendor/assets/components/codemirror/theme/ttcn.css +64 -0
- data/vendor/assets/components/codemirror/theme/twilight.css +32 -0
- data/vendor/assets/components/codemirror/theme/vibrant-ink.css +34 -0
- data/vendor/assets/components/codemirror/theme/xq-dark.css +53 -0
- data/vendor/assets/components/codemirror/theme/xq-light.css +43 -0
- data/vendor/assets/components/codemirror/theme/yeti.css +44 -0
- data/vendor/assets/components/codemirror/theme/zenburn.css +37 -0
- data/vendor/assets/components/eve/.bower.json +12 -0
- data/vendor/assets/components/eve/LICENSE +202 -0
- data/vendor/assets/components/eve/README.md +7 -0
- data/vendor/assets/components/eve/component.json +13 -0
- data/vendor/assets/components/eve/e.html +66 -0
- data/vendor/assets/components/eve/eve.js +371 -0
- data/vendor/assets/components/eve/package.json +18 -0
- data/vendor/assets/components/highlightjs/.bower.json +24 -0
- data/vendor/assets/components/highlightjs/LICENSE +24 -0
- data/vendor/assets/components/highlightjs/Makefile +21 -0
- data/vendor/assets/components/highlightjs/README.md +12 -0
- data/vendor/assets/components/highlightjs/bower.json +14 -0
- data/vendor/assets/components/highlightjs/component.json +12 -0
- data/vendor/assets/components/highlightjs/composer.json +26 -0
- data/vendor/assets/components/highlightjs/highlight.pack.js +16645 -0
- data/vendor/assets/components/highlightjs/highlight.pack.min.js +15 -0
- data/vendor/assets/components/highlightjs/package.json +8 -0
- data/vendor/assets/components/highlightjs/styles/agate.css +108 -0
- data/vendor/assets/components/highlightjs/styles/androidstudio.css +66 -0
- data/vendor/assets/components/highlightjs/styles/arduino-light.css +88 -0
- data/vendor/assets/components/highlightjs/styles/arta.css +73 -0
- data/vendor/assets/components/highlightjs/styles/ascetic.css +45 -0
- data/vendor/assets/components/highlightjs/styles/atelier-cave-dark.css +83 -0
- data/vendor/assets/components/highlightjs/styles/atelier-cave-light.css +85 -0
- data/vendor/assets/components/highlightjs/styles/atelier-cave.dark.css +113 -0
- data/vendor/assets/components/highlightjs/styles/atelier-cave.light.css +113 -0
- data/vendor/assets/components/highlightjs/styles/atelier-dune-dark.css +69 -0
- data/vendor/assets/components/highlightjs/styles/atelier-dune-light.css +69 -0
- data/vendor/assets/components/highlightjs/styles/atelier-dune.dark.css +94 -0
- data/vendor/assets/components/highlightjs/styles/atelier-dune.light.css +94 -0
- data/vendor/assets/components/highlightjs/styles/atelier-estuary-dark.css +84 -0
- data/vendor/assets/components/highlightjs/styles/atelier-estuary-light.css +84 -0
- data/vendor/assets/components/highlightjs/styles/atelier-estuary.dark.css +113 -0
- data/vendor/assets/components/highlightjs/styles/atelier-estuary.light.css +113 -0
- data/vendor/assets/components/highlightjs/styles/atelier-forest-dark.css +69 -0
- data/vendor/assets/components/highlightjs/styles/atelier-forest-light.css +69 -0
- data/vendor/assets/components/highlightjs/styles/atelier-forest.dark.css +94 -0
- data/vendor/assets/components/highlightjs/styles/atelier-forest.light.css +94 -0
- data/vendor/assets/components/highlightjs/styles/atelier-heath-dark.css +69 -0
- data/vendor/assets/components/highlightjs/styles/atelier-heath-light.css +69 -0
- data/vendor/assets/components/highlightjs/styles/atelier-heath.dark.css +94 -0
- data/vendor/assets/components/highlightjs/styles/atelier-heath.light.css +94 -0
- data/vendor/assets/components/highlightjs/styles/atelier-lakeside-dark.css +69 -0
- data/vendor/assets/components/highlightjs/styles/atelier-lakeside-light.css +69 -0
- data/vendor/assets/components/highlightjs/styles/atelier-lakeside.dark.css +94 -0
- data/vendor/assets/components/highlightjs/styles/atelier-lakeside.light.css +94 -0
- data/vendor/assets/components/highlightjs/styles/atelier-plateau-dark.css +84 -0
- data/vendor/assets/components/highlightjs/styles/atelier-plateau-light.css +84 -0
- data/vendor/assets/components/highlightjs/styles/atelier-plateau.dark.css +113 -0
- data/vendor/assets/components/highlightjs/styles/atelier-plateau.light.css +113 -0
- data/vendor/assets/components/highlightjs/styles/atelier-savanna-dark.css +84 -0
- data/vendor/assets/components/highlightjs/styles/atelier-savanna-light.css +84 -0
- data/vendor/assets/components/highlightjs/styles/atelier-savanna.dark.css +113 -0
- data/vendor/assets/components/highlightjs/styles/atelier-savanna.light.css +113 -0
- data/vendor/assets/components/highlightjs/styles/atelier-seaside-dark.css +69 -0
- data/vendor/assets/components/highlightjs/styles/atelier-seaside-light.css +69 -0
- data/vendor/assets/components/highlightjs/styles/atelier-seaside.dark.css +94 -0
- data/vendor/assets/components/highlightjs/styles/atelier-seaside.light.css +94 -0
- data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool-dark.css +69 -0
- data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool-light.css +69 -0
- data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool.dark.css +94 -0
- data/vendor/assets/components/highlightjs/styles/atelier-sulphurpool.light.css +94 -0
- data/vendor/assets/components/highlightjs/styles/atom-one-dark.css +96 -0
- data/vendor/assets/components/highlightjs/styles/atom-one-light.css +96 -0
- data/vendor/assets/components/highlightjs/styles/brown-paper.css +64 -0
- data/vendor/assets/components/highlightjs/styles/brown-papersq.png +0 -0
- data/vendor/assets/components/highlightjs/styles/brown_paper.css +103 -0
- data/vendor/assets/components/highlightjs/styles/brown_papersq.png +0 -0
- data/vendor/assets/components/highlightjs/styles/codepen-embed.css +60 -0
- data/vendor/assets/components/highlightjs/styles/color-brewer.css +71 -0
- data/vendor/assets/components/highlightjs/styles/darcula.css +77 -0
- data/vendor/assets/components/highlightjs/styles/dark.css +63 -0
- data/vendor/assets/components/highlightjs/styles/darkula.css +6 -0
- data/vendor/assets/components/highlightjs/styles/default.css +99 -0
- data/vendor/assets/components/highlightjs/styles/docco.css +97 -0
- data/vendor/assets/components/highlightjs/styles/dracula.css +76 -0
- data/vendor/assets/components/highlightjs/styles/far.css +71 -0
- data/vendor/assets/components/highlightjs/styles/foundation.css +88 -0
- data/vendor/assets/components/highlightjs/styles/github-gist.css +71 -0
- data/vendor/assets/components/highlightjs/styles/github.css +99 -0
- data/vendor/assets/components/highlightjs/styles/googlecode.css +89 -0
- data/vendor/assets/components/highlightjs/styles/grayscale.css +101 -0
- data/vendor/assets/components/highlightjs/styles/gruvbox-dark.css +108 -0
- data/vendor/assets/components/highlightjs/styles/gruvbox-light.css +108 -0
- data/vendor/assets/components/highlightjs/styles/hopscotch.css +83 -0
- data/vendor/assets/components/highlightjs/styles/hybrid.css +102 -0
- data/vendor/assets/components/highlightjs/styles/idea.css +97 -0
- data/vendor/assets/components/highlightjs/styles/ir-black.css +73 -0
- data/vendor/assets/components/highlightjs/styles/ir_black.css +106 -0
- data/vendor/assets/components/highlightjs/styles/kimbie.dark.css +74 -0
- data/vendor/assets/components/highlightjs/styles/kimbie.light.css +74 -0
- data/vendor/assets/components/highlightjs/styles/magula.css +70 -0
- data/vendor/assets/components/highlightjs/styles/mono-blue.css +59 -0
- data/vendor/assets/components/highlightjs/styles/monokai-sublime.css +83 -0
- data/vendor/assets/components/highlightjs/styles/monokai.css +70 -0
- data/vendor/assets/components/highlightjs/styles/monokai_sublime.css +154 -0
- data/vendor/assets/components/highlightjs/styles/obsidian.css +88 -0
- data/vendor/assets/components/highlightjs/styles/ocean.css +74 -0
- data/vendor/assets/components/highlightjs/styles/paraiso-dark.css +72 -0
- data/vendor/assets/components/highlightjs/styles/paraiso-light.css +72 -0
- data/vendor/assets/components/highlightjs/styles/paraiso.dark.css +96 -0
- data/vendor/assets/components/highlightjs/styles/paraiso.light.css +96 -0
- data/vendor/assets/components/highlightjs/styles/pojoaque.css +83 -0
- data/vendor/assets/components/highlightjs/styles/pojoaque.jpg +0 -0
- data/vendor/assets/components/highlightjs/styles/purebasic.css +96 -0
- data/vendor/assets/components/highlightjs/styles/qtcreator_dark.css +83 -0
- data/vendor/assets/components/highlightjs/styles/qtcreator_light.css +83 -0
- data/vendor/assets/components/highlightjs/styles/railscasts.css +106 -0
- data/vendor/assets/components/highlightjs/styles/rainbow.css +85 -0
- data/vendor/assets/components/highlightjs/styles/routeros.css +108 -0
- data/vendor/assets/components/highlightjs/styles/school-book.css +72 -0
- data/vendor/assets/components/highlightjs/styles/school-book.png +0 -0
- data/vendor/assets/components/highlightjs/styles/school_book.css +111 -0
- data/vendor/assets/components/highlightjs/styles/school_book.png +0 -0
- data/vendor/assets/components/highlightjs/styles/solarized-dark.css +84 -0
- data/vendor/assets/components/highlightjs/styles/solarized-light.css +84 -0
- data/vendor/assets/components/highlightjs/styles/solarized_dark.css +107 -0
- data/vendor/assets/components/highlightjs/styles/solarized_light.css +107 -0
- data/vendor/assets/components/highlightjs/styles/sunburst.css +102 -0
- data/vendor/assets/components/highlightjs/styles/tomorrow-night-blue.css +75 -0
- data/vendor/assets/components/highlightjs/styles/tomorrow-night-bright.css +74 -0
- data/vendor/assets/components/highlightjs/styles/tomorrow-night-eighties.css +74 -0
- data/vendor/assets/components/highlightjs/styles/tomorrow-night.css +75 -0
- data/vendor/assets/components/highlightjs/styles/tomorrow.css +72 -0
- data/vendor/assets/components/highlightjs/styles/vs.css +68 -0
- data/vendor/assets/components/highlightjs/styles/vs2015.css +115 -0
- data/vendor/assets/components/highlightjs/styles/xcode.css +93 -0
- data/vendor/assets/components/highlightjs/styles/xt256.css +92 -0
- data/vendor/assets/components/highlightjs/styles/zenburn.css +80 -0
- data/vendor/assets/components/jquery/.bower.json +25 -0
- data/vendor/assets/components/jquery/AUTHORS.txt +313 -0
- data/vendor/assets/components/jquery/LICENSE.txt +36 -0
- data/vendor/assets/components/jquery/README.md +67 -0
- data/vendor/assets/components/jquery/bower.json +14 -0
- data/vendor/assets/components/jquery/dist/core.js +399 -0
- data/vendor/assets/components/jquery/dist/jquery.js +10364 -0
- data/vendor/assets/components/jquery/dist/jquery.min.js +2 -0
- data/vendor/assets/components/jquery/dist/jquery.min.map +1 -0
- data/vendor/assets/components/jquery/dist/jquery.slim.js +8269 -0
- data/vendor/assets/components/jquery/dist/jquery.slim.min.js +2 -0
- data/vendor/assets/components/jquery/dist/jquery.slim.min.map +1 -0
- data/vendor/assets/components/jquery/external/sizzle/LICENSE.txt +36 -0
- data/vendor/assets/components/jquery/external/sizzle/dist/sizzle.js +2272 -0
- data/vendor/assets/components/jquery/external/sizzle/dist/sizzle.min.js +3 -0
- data/vendor/assets/components/jquery/external/sizzle/dist/sizzle.min.map +1 -0
- data/vendor/assets/components/jquery/src/.eslintrc.json +5 -0
- data/vendor/assets/components/jquery/src/ajax.js +856 -0
- data/vendor/assets/components/jquery/src/ajax/jsonp.js +103 -0
- data/vendor/assets/components/jquery/src/ajax/load.js +77 -0
- data/vendor/assets/components/jquery/src/ajax/parseXML.js +30 -0
- data/vendor/assets/components/jquery/src/ajax/script.js +77 -0
- data/vendor/assets/components/jquery/src/ajax/var/location.js +5 -0
- data/vendor/assets/components/jquery/src/ajax/var/nonce.js +5 -0
- data/vendor/assets/components/jquery/src/ajax/var/rquery.js +5 -0
- data/vendor/assets/components/jquery/src/ajax/xhr.js +170 -0
- data/vendor/assets/components/jquery/src/attributes.js +13 -0
- data/vendor/assets/components/jquery/src/attributes/attr.js +141 -0
- data/vendor/assets/components/jquery/src/attributes/classes.js +186 -0
- data/vendor/assets/components/jquery/src/attributes/prop.js +143 -0
- data/vendor/assets/components/jquery/src/attributes/support.js +33 -0
- data/vendor/assets/components/jquery/src/attributes/val.js +191 -0
- data/vendor/assets/components/jquery/src/callbacks.js +236 -0
- data/vendor/assets/components/jquery/src/core.js +399 -0
- data/vendor/assets/components/jquery/src/core/DOMEval.js +30 -0
- data/vendor/assets/components/jquery/src/core/access.js +72 -0
- data/vendor/assets/components/jquery/src/core/camelCase.js +23 -0
- data/vendor/assets/components/jquery/src/core/init.js +129 -0
- data/vendor/assets/components/jquery/src/core/nodeName.js +13 -0
- data/vendor/assets/components/jquery/src/core/parseHTML.js +65 -0
- data/vendor/assets/components/jquery/src/core/ready-no-deferred.js +97 -0
- data/vendor/assets/components/jquery/src/core/ready.js +86 -0
- data/vendor/assets/components/jquery/src/core/readyException.js +13 -0
- data/vendor/assets/components/jquery/src/core/stripAndCollapse.js +14 -0
- data/vendor/assets/components/jquery/src/core/support.js +20 -0
- data/vendor/assets/components/jquery/src/core/toType.js +20 -0
- data/vendor/assets/components/jquery/src/core/var/rsingleTag.js +6 -0
- data/vendor/assets/components/jquery/src/css.js +481 -0
- data/vendor/assets/components/jquery/src/css/addGetHookIf.js +26 -0
- data/vendor/assets/components/jquery/src/css/adjustCSS.js +73 -0
- data/vendor/assets/components/jquery/src/css/curCSS.js +65 -0
- data/vendor/assets/components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
- data/vendor/assets/components/jquery/src/css/showHide.js +105 -0
- data/vendor/assets/components/jquery/src/css/support.js +102 -0
- data/vendor/assets/components/jquery/src/css/var/cssExpand.js +5 -0
- data/vendor/assets/components/jquery/src/css/var/getStyles.js +17 -0
- data/vendor/assets/components/jquery/src/css/var/isHiddenWithinTree.js +34 -0
- data/vendor/assets/components/jquery/src/css/var/rboxStyle.js +7 -0
- data/vendor/assets/components/jquery/src/css/var/rnumnonpx.js +7 -0
- data/vendor/assets/components/jquery/src/css/var/swap.js +26 -0
- data/vendor/assets/components/jquery/src/data.js +180 -0
- data/vendor/assets/components/jquery/src/data/Data.js +162 -0
- data/vendor/assets/components/jquery/src/data/var/acceptData.js +19 -0
- data/vendor/assets/components/jquery/src/data/var/dataPriv.js +7 -0
- data/vendor/assets/components/jquery/src/data/var/dataUser.js +7 -0
- data/vendor/assets/components/jquery/src/deferred.js +399 -0
- data/vendor/assets/components/jquery/src/deferred/exceptionHook.js +21 -0
- data/vendor/assets/components/jquery/src/deprecated.js +98 -0
- data/vendor/assets/components/jquery/src/dimensions.js +57 -0
- data/vendor/assets/components/jquery/src/effects.js +702 -0
- data/vendor/assets/components/jquery/src/effects/Tween.js +123 -0
- data/vendor/assets/components/jquery/src/effects/animatedSelector.js +15 -0
- data/vendor/assets/components/jquery/src/event.js +748 -0
- data/vendor/assets/components/jquery/src/event/ajax.js +22 -0
- data/vendor/assets/components/jquery/src/event/alias.js +29 -0
- data/vendor/assets/components/jquery/src/event/focusin.js +55 -0
- data/vendor/assets/components/jquery/src/event/support.js +11 -0
- data/vendor/assets/components/jquery/src/event/trigger.js +199 -0
- data/vendor/assets/components/jquery/src/exports/amd.js +26 -0
- data/vendor/assets/components/jquery/src/exports/global.js +34 -0
- data/vendor/assets/components/jquery/src/jquery.js +40 -0
- data/vendor/assets/components/jquery/src/manipulation.js +486 -0
- data/vendor/assets/components/jquery/src/manipulation/_evalUrl.js +23 -0
- data/vendor/assets/components/jquery/src/manipulation/buildFragment.js +105 -0
- data/vendor/assets/components/jquery/src/manipulation/getAll.js +32 -0
- data/vendor/assets/components/jquery/src/manipulation/setGlobalEval.js +22 -0
- data/vendor/assets/components/jquery/src/manipulation/support.js +35 -0
- data/vendor/assets/components/jquery/src/manipulation/var/rcheckableType.js +5 -0
- data/vendor/assets/components/jquery/src/manipulation/var/rscriptType.js +5 -0
- data/vendor/assets/components/jquery/src/manipulation/var/rtagName.js +5 -0
- data/vendor/assets/components/jquery/src/manipulation/wrapMap.js +29 -0
- data/vendor/assets/components/jquery/src/offset.js +233 -0
- data/vendor/assets/components/jquery/src/queue.js +145 -0
- data/vendor/assets/components/jquery/src/queue/delay.js +24 -0
- data/vendor/assets/components/jquery/src/selector-native.js +237 -0
- data/vendor/assets/components/jquery/src/selector-sizzle.js +19 -0
- data/vendor/assets/components/jquery/src/selector.js +3 -0
- data/vendor/assets/components/jquery/src/serialize.js +132 -0
- data/vendor/assets/components/jquery/src/traversing.js +191 -0
- data/vendor/assets/components/jquery/src/traversing/findFilter.js +97 -0
- data/vendor/assets/components/jquery/src/traversing/var/dir.js +22 -0
- data/vendor/assets/components/jquery/src/traversing/var/rneedsContext.js +8 -0
- data/vendor/assets/components/jquery/src/traversing/var/siblings.js +17 -0
- data/vendor/assets/components/jquery/src/var/ObjectFunctionString.js +7 -0
- data/vendor/assets/components/jquery/src/var/arr.js +5 -0
- data/vendor/assets/components/jquery/src/var/class2type.js +6 -0
- data/vendor/assets/components/jquery/src/var/concat.js +7 -0
- data/vendor/assets/components/jquery/src/var/document.js +5 -0
- data/vendor/assets/components/jquery/src/var/documentElement.js +7 -0
- data/vendor/assets/components/jquery/src/var/fnToString.js +7 -0
- data/vendor/assets/components/jquery/src/var/getProto.js +5 -0
- data/vendor/assets/components/jquery/src/var/hasOwn.js +7 -0
- data/vendor/assets/components/jquery/src/var/indexOf.js +7 -0
- data/vendor/assets/components/jquery/src/var/isFunction.js +13 -0
- data/vendor/assets/components/jquery/src/var/isWindow.js +8 -0
- data/vendor/assets/components/jquery/src/var/pnum.js +5 -0
- data/vendor/assets/components/jquery/src/var/push.js +7 -0
- data/vendor/assets/components/jquery/src/var/rcssNum.js +9 -0
- data/vendor/assets/components/jquery/src/var/rnothtmlwhite.js +8 -0
- data/vendor/assets/components/jquery/src/var/slice.js +7 -0
- data/vendor/assets/components/jquery/src/var/support.js +6 -0
- data/vendor/assets/components/jquery/src/var/toString.js +7 -0
- data/vendor/assets/components/jquery/src/wrap.js +78 -0
- data/vendor/assets/components/markdown-it/.bower.json +38 -0
- data/vendor/assets/components/markdown-it/CHANGELOG.md +442 -0
- data/vendor/assets/components/markdown-it/CONTRIBUTING.md +15 -0
- data/vendor/assets/components/markdown-it/LICENSE +22 -0
- data/vendor/assets/components/markdown-it/Procfile +1 -0
- data/vendor/assets/components/markdown-it/README.md +294 -0
- data/vendor/assets/components/markdown-it/bin/markdown-it.js +113 -0
- data/vendor/assets/components/markdown-it/bower.json +28 -0
- data/vendor/assets/components/markdown-it/dist/markdown-it.js +7963 -0
- data/vendor/assets/components/markdown-it/dist/markdown-it.min.js +1 -0
- data/vendor/assets/components/markdown-it/package.json +64 -0
- data/vendor/assets/components/plantuml-encoder/.bower.json +29 -0
- data/vendor/assets/components/plantuml-encoder/LICENSE +19 -0
- data/vendor/assets/components/plantuml-encoder/README.md +38 -0
- data/vendor/assets/components/plantuml-encoder/bower.json +20 -0
- data/vendor/assets/components/plantuml-encoder/dist/plantuml-encoder.js +3994 -0
- data/vendor/assets/components/plantuml-encoder/dist/plantuml-encoder.min.js +1 -0
- data/vendor/assets/components/plantuml-encoder/package.json +33 -0
- data/vendor/assets/components/raphael/.bower.json +45 -0
- data/vendor/assets/components/raphael/bower.json +31 -0
- data/vendor/assets/components/raphael/dev/banner.txt +8 -0
- data/vendor/assets/components/raphael/dev/raphael.amd.js +14 -0
- data/vendor/assets/components/raphael/dev/raphael.core.js +5413 -0
- data/vendor/assets/components/raphael/dev/raphael.svg.js +1428 -0
- data/vendor/assets/components/raphael/dev/raphael.vml.js +1010 -0
- data/vendor/assets/components/raphael/dev/test/svg/dom.js +295 -0
- data/vendor/assets/components/raphael/dev/test/vml/dom.js +5 -0
- data/vendor/assets/components/raphael/license.txt +21 -0
- data/vendor/assets/components/raphael/raphael.js +8330 -0
- data/vendor/assets/components/raphael/raphael.min.js +3 -0
- data/vendor/assets/components/raphael/raphael.no-deps.js +7959 -0
- data/vendor/assets/components/raphael/raphael.no-deps.min.js +3 -0
- data/vendor/assets/components/raphael/webpack.config.js +62 -0
- data/vendor/assets/components/squire-rte/.bower.json +34 -0
- data/vendor/assets/components/squire-rte/Demo.html +143 -0
- data/vendor/assets/components/squire-rte/LICENSE +21 -0
- data/vendor/assets/components/squire-rte/Makefile +22 -0
- data/vendor/assets/components/squire-rte/README.md +473 -0
- data/vendor/assets/components/squire-rte/bower.json +24 -0
- data/vendor/assets/components/squire-rte/build/document.html +54 -0
- data/vendor/assets/components/squire-rte/build/squire-raw.js +4722 -0
- data/vendor/assets/components/squire-rte/build/squire.js +2 -0
- data/vendor/assets/components/squire-rte/package.json +31 -0
- data/vendor/assets/components/squire-rte/source/Clean.js +358 -0
- data/vendor/assets/components/squire-rte/source/Clipboard.js +331 -0
- data/vendor/assets/components/squire-rte/source/Constants.js +60 -0
- data/vendor/assets/components/squire-rte/source/Editor.js +2201 -0
- data/vendor/assets/components/squire-rte/source/KeyHandlers.js +502 -0
- data/vendor/assets/components/squire-rte/source/Node.js +553 -0
- data/vendor/assets/components/squire-rte/source/Range.js +540 -0
- data/vendor/assets/components/squire-rte/source/TreeWalker.js +118 -0
- data/vendor/assets/components/squire-rte/source/document.html +54 -0
- data/vendor/assets/components/squire-rte/source/exports.js +42 -0
- data/vendor/assets/components/squire-rte/source/intro.js +6 -0
- data/vendor/assets/components/squire-rte/source/outro.js +22 -0
- data/vendor/assets/components/to-mark/.bower.json +35 -0
- data/vendor/assets/components/to-mark/bower.json +22 -0
- data/vendor/assets/components/to-mark/demo/demo.html +24 -0
- data/vendor/assets/components/to-mark/demo/demo2.html +94 -0
- data/vendor/assets/components/to-mark/dist/to-mark.js +1283 -0
- data/vendor/assets/components/to-mark/dist/to-mark.min.js +1 -0
- data/vendor/assets/components/to-mark/gulpfile.js +112 -0
- data/vendor/assets/components/to-mark/karma.conf.js +260 -0
- data/vendor/assets/components/to-mark/package-lock.json +13061 -0
- data/vendor/assets/components/to-mark/package.json +53 -0
- data/vendor/assets/components/tui-chart/.bower.json +44 -0
- data/vendor/assets/components/tui-chart/CODE_OF_CONDUCT.md +73 -0
- data/vendor/assets/components/tui-chart/CONTRIBUTING.md +91 -0
- data/vendor/assets/components/tui-chart/LICENSE +21 -0
- data/vendor/assets/components/tui-chart/README.md +142 -0
- data/vendor/assets/components/tui-chart/bower.json +33 -0
- data/vendor/assets/components/tui-chart/dist/maps/china.js +10 -0
- data/vendor/assets/components/tui-chart/dist/maps/japan.js +10 -0
- data/vendor/assets/components/tui-chart/dist/maps/singapore.js +10 -0
- data/vendor/assets/components/tui-chart/dist/maps/south-korea.js +10 -0
- data/vendor/assets/components/tui-chart/dist/maps/taiwan.js +10 -0
- data/vendor/assets/components/tui-chart/dist/maps/thailand.js +10 -0
- data/vendor/assets/components/tui-chart/dist/maps/usa.js +10 -0
- data/vendor/assets/components/tui-chart/dist/maps/world.js +11 -0
- data/vendor/assets/components/tui-chart/dist/tui-chart.css +704 -0
- data/vendor/assets/components/tui-chart/dist/tui-chart.js +40567 -0
- data/vendor/assets/components/tui-chart/dist/tui-chart.min.css +10 -0
- data/vendor/assets/components/tui-chart/dist/tui-chart.min.js +20 -0
- data/vendor/assets/components/tui-chart/docs/COMMIT_MESSAGE_CONVENTION.md +49 -0
- data/vendor/assets/components/tui-chart/docs/ISSUE_TEMPLATE.md +24 -0
- data/vendor/assets/components/tui-chart/docs/PULL_REQUEST_TEMPLATE.md +42 -0
- data/vendor/assets/components/tui-chart/docs/README.md +11 -0
- data/vendor/assets/components/tui-chart/docs/wiki/README.md +27 -0
- data/vendor/assets/components/tui-chart/docs/wiki/_Sidebar.md +31 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-export-menu.md +66 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-type-radial.md +121 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-types-bar,column.md +312 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-types-bubble.md +63 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-types-column-line-combo.md +104 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-types-heatmap.md +39 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-types-line,area.md +333 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-types-line-area-combo.md +78 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-types-line-scatter-combo.md +101 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-types-map.md +153 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-types-pie-donut-combo.md +98 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-types-pie.md +186 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-types-scatter.md +58 -0
- data/vendor/assets/components/tui-chart/docs/wiki/chart-types-treemap.md +158 -0
- data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-china-map.md +38 -0
- data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-japan-map.md +51 -0
- data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-singapore-map.md +9 -0
- data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-south-korea-map.md +21 -0
- data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-taiwan-map.md +26 -0
- data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-thailand-map.md +82 -0
- data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-usa-map.md +55 -0
- data/vendor/assets/components/tui-chart/docs/wiki/code-table-of-world-map.md +180 -0
- data/vendor/assets/components/tui-chart/docs/wiki/features-axes.md +209 -0
- data/vendor/assets/components/tui-chart/docs/wiki/features-chart.md +157 -0
- data/vendor/assets/components/tui-chart/docs/wiki/features-circle-legend.md +20 -0
- data/vendor/assets/components/tui-chart/docs/wiki/features-legend.md +89 -0
- data/vendor/assets/components/tui-chart/docs/wiki/features-plot.md +141 -0
- data/vendor/assets/components/tui-chart/docs/wiki/features-series.md +240 -0
- data/vendor/assets/components/tui-chart/docs/wiki/features-tooltip.md +223 -0
- data/vendor/assets/components/tui-chart/docs/wiki/getting-started.md +74 -0
- data/vendor/assets/components/tui-chart/docs/wiki/import-chart-data-from-existing-table-element.md +150 -0
- data/vendor/assets/components/tui-chart/docs/wiki/table-of-supported-options.md +344 -0
- data/vendor/assets/components/tui-chart/docs/wiki/theme.md +338 -0
- data/vendor/assets/components/tui-chart/package-lock.json +8881 -0
- data/vendor/assets/components/tui-code-snippet/.bower.json +31 -0
- data/vendor/assets/components/tui-code-snippet/LICENSE +21 -0
- data/vendor/assets/components/tui-code-snippet/README.md +109 -0
- data/vendor/assets/components/tui-code-snippet/bower.json +20 -0
- data/vendor/assets/components/tui-code-snippet/demo/postBridge/README.md +26 -0
- data/vendor/assets/components/tui-code-snippet/demo/postBridge/public/popup.html +27 -0
- data/vendor/assets/components/tui-code-snippet/demo/postBridge/public/postBridge.html +31 -0
- data/vendor/assets/components/tui-code-snippet/demo/postBridge/server.js +28 -0
- data/vendor/assets/components/tui-code-snippet/dist/tui-code-snippet.js +4228 -0
- data/vendor/assets/components/tui-code-snippet/dist/tui-code-snippet.min.js +7 -0
- data/vendor/assets/components/tui-code-snippet/package-lock.json +6038 -0
- data/vendor/assets/components/tui-color-picker/.bower.json +37 -0
- data/vendor/assets/components/tui-color-picker/ISSUE_TEMPLATE.md +26 -0
- data/vendor/assets/components/tui-color-picker/LICENSE +34 -0
- data/vendor/assets/components/tui-color-picker/README.md +69 -0
- data/vendor/assets/components/tui-color-picker/bower.json +26 -0
- data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.css +148 -0
- data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.js +3146 -0
- data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.min.css +7 -0
- data/vendor/assets/components/tui-color-picker/dist/tui-color-picker.min.js +9 -0
- data/vendor/assets/components/tui-color-picker/package-lock.json +8440 -0
- data/vendor/assets/components/tui-editor/.bower.json +71 -0
- data/vendor/assets/components/tui-editor/CODE_OF_CONDUCT.md +73 -0
- data/vendor/assets/components/tui-editor/CONTRIBUTING.md +92 -0
- data/vendor/assets/components/tui-editor/LICENSE +21 -0
- data/vendor/assets/components/tui-editor/README.md +204 -0
- data/vendor/assets/components/tui-editor/bower.json +59 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-Editor-all.js +36850 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-Editor-all.min.js +13 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-Editor.js +24646 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-Editor.min.js +7 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer-all.js +14768 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer-all.min.js +13 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer.js +3686 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-Viewer.min.js +7 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-contents.css +239 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-contents.min.css +1 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-extChart.js +7040 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-extChart.min.js +13 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-extColorSyntax.js +472 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-extColorSyntax.min.js +7 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-extScrollSync.js +1241 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-extScrollSync.min.js +7 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-extTable.js +3930 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-extTable.min.js +7 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-extUML.js +212 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor-extUML.min.js +7 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor.css +1166 -0
- data/vendor/assets/components/tui-editor/dist/tui-editor.min.css +1 -0
- data/vendor/assets/components/tui-editor/docs/COMMIT_MESSAGE_CONVENTION.md +49 -0
- data/vendor/assets/components/tui-editor/docs/PULL_REQUEST_TEMPLATE.md +41 -0
- data/vendor/assets/components/tui-editor/docs/README.md +13 -0
- data/vendor/assets/components/tui-editor/docs/getting-started-with-bower.md +93 -0
- data/vendor/assets/components/tui-editor/docs/getting-started.md +76 -0
- data/vendor/assets/components/tui-editor/docs/using-extensions.md +91 -0
- data/vendor/assets/components/tui-editor/docs/writing-your-own-extension.md +167 -0
- data/vendor/assets/components/tui-editor/examples/example00-demo.html +85 -0
- data/vendor/assets/components/tui-editor/examples/example01-basic.html +37 -0
- data/vendor/assets/components/tui-editor/examples/example02-viewer-basic.html +68 -0
- data/vendor/assets/components/tui-editor/examples/example03-jquery.html +36 -0
- data/vendor/assets/components/tui-editor/examples/example04-viewer-jquery.html +67 -0
- data/vendor/assets/components/tui-editor/examples/example05-scrollsync.html +77 -0
- data/vendor/assets/components/tui-editor/examples/example06-colorsyntax.html +44 -0
- data/vendor/assets/components/tui-editor/examples/example07-table.html +48 -0
- data/vendor/assets/components/tui-editor/examples/example08-uml.html +69 -0
- data/vendor/assets/components/tui-editor/examples/example09-multiple-extensions.html +85 -0
- data/vendor/assets/components/tui-editor/examples/example10-viewer-multiple-extensions.html +86 -0
- data/vendor/assets/components/tui-editor/examples/example11-chart.html +60 -0
- data/vendor/assets/components/tui-editor/examples/example12-writing-extension.html +66 -0
- data/vendor/assets/components/tui-editor/examples/examples.json +41 -0
- data/vendor/assets/components/tui-editor/examples/explain.css +7 -0
- data/vendor/assets/components/tui-editor/package-lock.json +13289 -0
- data/vendor/assets/components/tui-editor/package.json +90 -0
- 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
|
+
;
|