Version Description
Download this release
Release Info
Developer | KingYes |
Plugin | Elementor Page Builder |
Version | 0.1.0 |
Comparing to | |
See all releases |
Version 0.1.0
- assets/admin/js/app.js +5055 -0
- assets/admin/js/app.js.map +135 -0
- assets/admin/js/app.min.js +4 -0
- assets/admin/js/lib/backbone.marionette.js +3962 -0
- assets/admin/js/lib/backbone.marionette.min.js +23 -0
- assets/admin/js/lib/backbone.marionette.min.js.map +1 -0
- assets/admin/js/lib/backbone.radio.js +350 -0
- assets/admin/js/lib/backbone.radio.js.map +1 -0
- assets/admin/js/lib/backbone.radio.min.js +3 -0
- assets/admin/js/lib/backbone.radio.min.js.map +2 -0
- assets/admin/js/lib/dialog.js +581 -0
- assets/admin/js/lib/dialog.min.js +3 -0
- assets/admin/js/lib/imagesloaded.js +487 -0
- assets/admin/js/lib/jquery-html5-dnd.js +318 -0
- assets/admin/js/lib/jquery-html5-dnd.min.js +1 -0
- assets/admin/js/lib/jquery-serialize-object.js +55 -0
- assets/admin/js/lib/jquery.easing.js +143 -0
- assets/admin/js/lib/jquery.numerator.js +122 -0
- assets/admin/js/lib/nprogress.js +476 -0
- assets/admin/js/lib/perfect-scrollbar.jquery.min.js +2 -0
- assets/admin/js/lib/tipsy.min.js +3 -0
- assets/admin/js/lib/waypoints-for-editor.js +7 -0
- assets/admin/js/lib/waypoints.js +520 -0
- assets/admin/js/lib/wp-color-picker-alpha.js +336 -0
- assets/css/admin-rtl.css +360 -0
- assets/css/admin-rtl.css.map +1 -0
- assets/css/admin-rtl.min.css +1 -0
- assets/css/admin.css +360 -0
- assets/css/admin.css.map +1 -0
- assets/css/admin.min.css +1 -0
- assets/css/editor-preview-rtl.css +597 -0
- assets/css/editor-preview-rtl.css.map +1 -0
- assets/css/editor-preview-rtl.min.css +1 -0
- assets/css/editor-preview.css +597 -0
- assets/css/editor-preview.css.map +1 -0
- assets/css/editor-preview.min.css +1 -0
- assets/css/editor-rtl.css +1717 -0
- assets/css/editor-rtl.css.map +1 -0
- assets/css/editor-rtl.min.css +1 -0
- assets/css/editor.css +588 -0
assets/admin/js/app.js
ADDED
@@ -0,0 +1,5055 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
2 |
+
/* global ElementorConfig */
|
3 |
+
var App;
|
4 |
+
|
5 |
+
App = Marionette.Application.extend( {
|
6 |
+
helpers: require( 'elementor-utils/helpers' ),
|
7 |
+
heartbeat: require( 'elementor-utils/heartbeat' ),
|
8 |
+
schemes: require( 'elementor-utils/schemes' ),
|
9 |
+
|
10 |
+
// Channels
|
11 |
+
editor: Backbone.Radio.channel( 'ELEMENTOR:editor' ),
|
12 |
+
data: Backbone.Radio.channel( 'ELEMENTOR:data' ),
|
13 |
+
filterState: Backbone.Radio.channel( 'ELEMENTOR:filterState' ),
|
14 |
+
elementLibrary: Backbone.Radio.channel( 'ELEMENTOR:elementLibrary' ),
|
15 |
+
panelElements: Backbone.Radio.channel( 'ELEMENTOR:panelElements' ),
|
16 |
+
dataEditMode: Backbone.Radio.channel( 'ELEMENTOR:editmode' ),
|
17 |
+
preview: Backbone.Radio.channel( 'ELEMENTOR:preview' ),
|
18 |
+
deviceMode: Backbone.Radio.channel( 'ELEMENTOR:deviceMode' ),
|
19 |
+
|
20 |
+
// Private Members
|
21 |
+
_controlsItemView: null,
|
22 |
+
|
23 |
+
getElementData: function( modelElement ) {
|
24 |
+
var elType = modelElement.get( 'elType' );
|
25 |
+
|
26 |
+
if ( 'widget' === elType ) {
|
27 |
+
var widgetType = modelElement.get( 'widgetType' );
|
28 |
+
|
29 |
+
if ( ! this.config.widgets[ widgetType ] ) {
|
30 |
+
return false;
|
31 |
+
}
|
32 |
+
|
33 |
+
return this.config.widgets[ widgetType ];
|
34 |
+
}
|
35 |
+
|
36 |
+
if ( ! this.config.elements[ elType ] ) {
|
37 |
+
return false;
|
38 |
+
}
|
39 |
+
|
40 |
+
return this.config.elements[ elType ];
|
41 |
+
},
|
42 |
+
|
43 |
+
getElementControls: function( modelElement ) {
|
44 |
+
var elementData = this.getElementData( modelElement );
|
45 |
+
|
46 |
+
if ( ! elementData ) {
|
47 |
+
return false;
|
48 |
+
}
|
49 |
+
|
50 |
+
var elType = modelElement.get( 'elType' ),
|
51 |
+
isInner = modelElement.get( 'isInner' );
|
52 |
+
|
53 |
+
if ( 'widget' === elType ) {
|
54 |
+
return elementData.controls;
|
55 |
+
}
|
56 |
+
|
57 |
+
return _.filter( elementData.controls, function( controlData ) {
|
58 |
+
return ! ( isInner && controlData.hide_in_inner || ! isInner && controlData.hide_in_top );
|
59 |
+
} );
|
60 |
+
},
|
61 |
+
|
62 |
+
getControlItemView: function( controlType ) {
|
63 |
+
if ( null === this._controlsItemView ) {
|
64 |
+
this._controlsItemView = {
|
65 |
+
color: require( 'elementor-views/controls/color' ),
|
66 |
+
dimensions: require( 'elementor-views/controls/dimensions' ),
|
67 |
+
media: require( 'elementor-views/controls/media' ),
|
68 |
+
slider: require( 'elementor-views/controls/slider' ),
|
69 |
+
wysiwyg: require( 'elementor-views/controls/wysiwyg' ),
|
70 |
+
choose: require( 'elementor-views/controls/choose' ),
|
71 |
+
url: require( 'elementor-views/controls/url' ),
|
72 |
+
font: require( 'elementor-views/controls/font' ),
|
73 |
+
section: require( 'elementor-views/controls/section' ),
|
74 |
+
repeater: require( 'elementor-views/controls/repeater' ),
|
75 |
+
wp_widget: require( 'elementor-views/controls/wp_widget' ),
|
76 |
+
icon: require( 'elementor-views/controls/icon' ),
|
77 |
+
gallery: require( 'elementor-views/controls/gallery' ),
|
78 |
+
select2: require( 'elementor-views/controls/select2' ),
|
79 |
+
structure: require( 'elementor-views/controls/structure' )
|
80 |
+
};
|
81 |
+
|
82 |
+
this.editor.trigger( 'editor:controls:initialize' );
|
83 |
+
}
|
84 |
+
|
85 |
+
return this._controlsItemView[ controlType ] || require( 'elementor-views/controls/base' );
|
86 |
+
},
|
87 |
+
|
88 |
+
getPanelView: function() {
|
89 |
+
return this.getRegion( 'panel' ).currentView;
|
90 |
+
},
|
91 |
+
|
92 |
+
initDialogsManager: function() {
|
93 |
+
this.dialogsManager = new DialogsManager.Instance();
|
94 |
+
},
|
95 |
+
|
96 |
+
onStart: function() {
|
97 |
+
NProgress.start();
|
98 |
+
NProgress.inc( 0.2 );
|
99 |
+
|
100 |
+
this.config = ElementorConfig;
|
101 |
+
|
102 |
+
var ElementModel = require( 'elementor-models/element' );
|
103 |
+
|
104 |
+
Backbone.Radio.DEBUG = false;
|
105 |
+
Backbone.Radio.tuneIn( 'ELEMENTOR' );
|
106 |
+
|
107 |
+
this.initDialogsManager();
|
108 |
+
|
109 |
+
this.heartbeat.init();
|
110 |
+
|
111 |
+
elementorBindUI.setEditorMode( true );
|
112 |
+
|
113 |
+
// Init Base elements collection from the server
|
114 |
+
this.elements = new ElementModel.Collection( this.config.data );
|
115 |
+
|
116 |
+
this.$previewResponsiveWrapper = Backbone.$( '#elementor-preview-responsive-wrapper' );
|
117 |
+
|
118 |
+
var previewIframeId = 'elementor-preview-iframe';
|
119 |
+
|
120 |
+
// Make sure the iFrame does not exist.
|
121 |
+
if ( ! Backbone.$( '#' + previewIframeId ).length ) {
|
122 |
+
var previewIFrame = document.createElement( 'iframe' );
|
123 |
+
|
124 |
+
previewIFrame.id = previewIframeId;
|
125 |
+
previewIFrame.src = this.config.preview_link + '&' + ( new Date().getTime() );
|
126 |
+
|
127 |
+
this.$previewResponsiveWrapper.append( previewIFrame );
|
128 |
+
}
|
129 |
+
|
130 |
+
this.$preview = Backbone.$( '#' + previewIframeId );
|
131 |
+
this.$preview.on( 'load', _.bind( function() {
|
132 |
+
this.$previewContents = this.$preview.contents();
|
133 |
+
|
134 |
+
elementorBindUI.setScopeWindow( this.$preview[0].contentWindow );
|
135 |
+
|
136 |
+
this.triggerMethod( 'preview:loaded' );
|
137 |
+
}, this ) );
|
138 |
+
|
139 |
+
this.listenTo( this.dataEditMode, 'switch', this.onEditModeSwitched );
|
140 |
+
|
141 |
+
this.setWorkSaver();
|
142 |
+
},
|
143 |
+
|
144 |
+
onPreviewLoaded: function() {
|
145 |
+
var SectionsCollectionView = require( 'elementor-views/sections' ),
|
146 |
+
PanelLayoutView = require( 'elementor-layouts/panel/panel' );
|
147 |
+
|
148 |
+
var iframeRegion = new Marionette.Region( {
|
149 |
+
// Make sure you get the DOM object out of the jQuery object
|
150 |
+
el: this.$previewContents.find( '#elementor' ).get( 0 )
|
151 |
+
} );
|
152 |
+
|
153 |
+
this.schemes.init().printSchemesStyle();
|
154 |
+
|
155 |
+
this.$previewContents.on( 'click', function( event ) {
|
156 |
+
var $target = Backbone.$( event.target ),
|
157 |
+
editMode = elementor.dataEditMode.request( 'get:active:mode' ),
|
158 |
+
isClickInsideElementor = !! $target.closest( '#elementor' ).length;
|
159 |
+
|
160 |
+
if ( isClickInsideElementor && 'preview' !== editMode ) {
|
161 |
+
return;
|
162 |
+
}
|
163 |
+
|
164 |
+
if ( $target.closest( 'a' ).length ) {
|
165 |
+
event.preventDefault();
|
166 |
+
}
|
167 |
+
|
168 |
+
if ( ! isClickInsideElementor ) {
|
169 |
+
elementor.getPanelView().setPage( 'elements' );
|
170 |
+
}
|
171 |
+
} );
|
172 |
+
|
173 |
+
this.addRegions( {
|
174 |
+
sections: iframeRegion,
|
175 |
+
panel: '#elementor-panel',
|
176 |
+
modal: '#elementor-modal-area'
|
177 |
+
} );
|
178 |
+
|
179 |
+
this.getRegion( 'sections' ).show( new SectionsCollectionView( {
|
180 |
+
collection: this.elements
|
181 |
+
} ) );
|
182 |
+
|
183 |
+
this.getRegion( 'panel' ).show( new PanelLayoutView() );
|
184 |
+
|
185 |
+
this.$previewContents
|
186 |
+
.children() // <html>
|
187 |
+
.addClass( 'elementor-html' )
|
188 |
+
.children( 'body' )
|
189 |
+
.addClass( 'elementor-editor-active' );
|
190 |
+
|
191 |
+
Backbone.$( '#elementor-loading' ).fadeOut( 600 );
|
192 |
+
|
193 |
+
NProgress.done();
|
194 |
+
},
|
195 |
+
|
196 |
+
onEditModeSwitched: function() {
|
197 |
+
var activeMode = elementor.dataEditMode.request( 'get:active:mode' );
|
198 |
+
|
199 |
+
if ( 'preview' === activeMode ) {
|
200 |
+
this.enterPreviewMode();
|
201 |
+
} else {
|
202 |
+
this.exitPreviewMode();
|
203 |
+
}
|
204 |
+
},
|
205 |
+
|
206 |
+
setFlagEditorChange: function( status ) {
|
207 |
+
elementor.editor.reply( 'editor:changed', status );
|
208 |
+
elementor.editor.trigger( 'editor:changed', status );
|
209 |
+
},
|
210 |
+
|
211 |
+
isEditorChanged: function() {
|
212 |
+
return ( true === elementor.editor.request( 'editor:changed' ) );
|
213 |
+
},
|
214 |
+
|
215 |
+
setWorkSaver: function() {
|
216 |
+
Backbone.$( window ).on( 'beforeunload', function() {
|
217 |
+
if ( elementor.isEditorChanged() ) {
|
218 |
+
return elementor.translate( 'before_unload_alert' );
|
219 |
+
}
|
220 |
+
} );
|
221 |
+
},
|
222 |
+
|
223 |
+
enterPreviewMode: function() {
|
224 |
+
this.$previewContents
|
225 |
+
.find( 'body' )
|
226 |
+
.add( 'body' )
|
227 |
+
.removeClass( 'elementor-editor-active' )
|
228 |
+
.addClass( 'elementor-editor-preview' );
|
229 |
+
},
|
230 |
+
|
231 |
+
exitPreviewMode: function() {
|
232 |
+
this.$previewContents
|
233 |
+
.find( 'body' )
|
234 |
+
.add( 'body' )
|
235 |
+
.removeClass( 'elementor-editor-preview' )
|
236 |
+
.addClass( 'elementor-editor-active' );
|
237 |
+
},
|
238 |
+
|
239 |
+
saveBuilder: function( options ) {
|
240 |
+
options = _.extend( {
|
241 |
+
revision: 'draft',
|
242 |
+
onSuccess: null
|
243 |
+
}, options );
|
244 |
+
|
245 |
+
NProgress.start();
|
246 |
+
|
247 |
+
return Backbone.$.ajax( {
|
248 |
+
type: 'POST',
|
249 |
+
url: this.config.ajaxurl,
|
250 |
+
data: {
|
251 |
+
action: 'elementor_save_builder',
|
252 |
+
post_id: this.config.post_id,
|
253 |
+
revision: options.revision,
|
254 |
+
data: JSON.stringify( elementor.elements.toJSON() )
|
255 |
+
}
|
256 |
+
} )
|
257 |
+
.done( function( data ) {
|
258 |
+
NProgress.done();
|
259 |
+
|
260 |
+
elementor.setFlagEditorChange( false );
|
261 |
+
|
262 |
+
if ( _.isFunction( options.onSuccess ) ) {
|
263 |
+
options.onSuccess.call( this, data );
|
264 |
+
}
|
265 |
+
} );
|
266 |
+
},
|
267 |
+
|
268 |
+
translate: function( stringKey, templateArgs ) {
|
269 |
+
var string = this.config.i18n[ stringKey ];
|
270 |
+
|
271 |
+
if ( undefined === string ) {
|
272 |
+
string = stringKey;
|
273 |
+
}
|
274 |
+
|
275 |
+
if ( templateArgs ) {
|
276 |
+
string = string.replace( /{(\d+)}/g, function( match, number ) {
|
277 |
+
return undefined !== templateArgs[ number ] ? templateArgs[ number ] : match;
|
278 |
+
} );
|
279 |
+
}
|
280 |
+
|
281 |
+
return string;
|
282 |
+
}
|
283 |
+
} );
|
284 |
+
|
285 |
+
module.exports = ( window.elementor = new App() ).start();
|
286 |
+
|
287 |
+
},{"elementor-layouts/panel/panel":27,"elementor-models/element":30,"elementor-utils/heartbeat":34,"elementor-utils/helpers":35,"elementor-utils/schemes":36,"elementor-views/controls/base":41,"elementor-views/controls/choose":42,"elementor-views/controls/color":43,"elementor-views/controls/dimensions":44,"elementor-views/controls/font":45,"elementor-views/controls/gallery":46,"elementor-views/controls/icon":47,"elementor-views/controls/media":48,"elementor-views/controls/repeater":50,"elementor-views/controls/section":51,"elementor-views/controls/select2":52,"elementor-views/controls/slider":53,"elementor-views/controls/structure":54,"elementor-views/controls/url":55,"elementor-views/controls/wp_widget":56,"elementor-views/controls/wysiwyg":57,"elementor-views/sections":60}],2:[function(require,module,exports){
|
288 |
+
var HandleAddDuplicateBehavior;
|
289 |
+
|
290 |
+
HandleAddDuplicateBehavior = Marionette.Behavior.extend( {
|
291 |
+
|
292 |
+
onChildviewClickNew: function( childView ) {
|
293 |
+
var currentIndex = childView.$el.index() + 1;
|
294 |
+
|
295 |
+
this.addChild( { at: currentIndex } );
|
296 |
+
},
|
297 |
+
|
298 |
+
onRequestNew: function() {
|
299 |
+
this.addChild();
|
300 |
+
},
|
301 |
+
|
302 |
+
addChild: function( options ) {
|
303 |
+
if ( this.view.isCollectionFilled() ) {
|
304 |
+
return;
|
305 |
+
}
|
306 |
+
|
307 |
+
options = options || {};
|
308 |
+
|
309 |
+
var newItem = {
|
310 |
+
id: elementor.helpers.getUniqueID(),
|
311 |
+
elType: this.view.getChildType()[0],
|
312 |
+
settings: {},
|
313 |
+
elements: []
|
314 |
+
};
|
315 |
+
|
316 |
+
this.view.addChildModel( newItem, options );
|
317 |
+
}
|
318 |
+
} );
|
319 |
+
|
320 |
+
module.exports = HandleAddDuplicateBehavior;
|
321 |
+
|
322 |
+
},{}],3:[function(require,module,exports){
|
323 |
+
var HandleElementsRelation;
|
324 |
+
|
325 |
+
HandleElementsRelation = Marionette.Behavior.extend( {
|
326 |
+
|
327 |
+
onRequestAdd: function( itemData, options ) {
|
328 |
+
this._addChildElement( itemData, options );
|
329 |
+
},
|
330 |
+
|
331 |
+
/**
|
332 |
+
*
|
333 |
+
* @param {Object} itemData
|
334 |
+
* @param {Object} options
|
335 |
+
* @private
|
336 |
+
*/
|
337 |
+
_addChildElement: function( itemData, options ) {
|
338 |
+
options = options || {};
|
339 |
+
|
340 |
+
var myChildType = this.view.getChildType();
|
341 |
+
|
342 |
+
if ( -1 === myChildType.indexOf( itemData.elType ) ) {
|
343 |
+
delete options.at;
|
344 |
+
|
345 |
+
this.view.children.last().triggerMethod( 'request:add', itemData, options );
|
346 |
+
|
347 |
+
return;
|
348 |
+
}
|
349 |
+
|
350 |
+
var newModel = this.view.addChildModel( itemData, options ),
|
351 |
+
newView = this.view.children.findByModel( newModel );
|
352 |
+
|
353 |
+
if ( 'section' === newView.getElementType() && newView.isInner() ) {
|
354 |
+
newView.addEmptyColumn();
|
355 |
+
}
|
356 |
+
|
357 |
+
newView.triggerMethod( 'open:editor' );
|
358 |
+
}
|
359 |
+
} );
|
360 |
+
|
361 |
+
module.exports = HandleElementsRelation;
|
362 |
+
|
363 |
+
},{}],4:[function(require,module,exports){
|
364 |
+
var HandleDuplicateBehavior;
|
365 |
+
|
366 |
+
HandleDuplicateBehavior = Marionette.Behavior.extend( {
|
367 |
+
|
368 |
+
onChildviewClickDuplicate: function( childView ) {
|
369 |
+
if ( this.view.isCollectionFilled() ) {
|
370 |
+
return;
|
371 |
+
}
|
372 |
+
|
373 |
+
var currentIndex = childView.$el.index() + 1,
|
374 |
+
newModel = childView.model.clone();
|
375 |
+
|
376 |
+
this.view.addChildModel( newModel, { at: currentIndex } );
|
377 |
+
}
|
378 |
+
} );
|
379 |
+
|
380 |
+
module.exports = HandleDuplicateBehavior;
|
381 |
+
|
382 |
+
},{}],5:[function(require,module,exports){
|
383 |
+
var HandleEditModeBehavior;
|
384 |
+
|
385 |
+
HandleEditModeBehavior = Marionette.Behavior.extend( {
|
386 |
+
initialize: function() {
|
387 |
+
this.listenTo( elementor.dataEditMode, 'switch', this.onEditModeSwitched );
|
388 |
+
},
|
389 |
+
|
390 |
+
onEditModeSwitched: function() {
|
391 |
+
var activeMode = elementor.dataEditMode.request( 'get:active:mode' );
|
392 |
+
|
393 |
+
this.view.$el.toggleClass( 'elementor-active-mode', 'preview' !== activeMode );
|
394 |
+
},
|
395 |
+
|
396 |
+
onRender: function() {
|
397 |
+
this.onEditModeSwitched();
|
398 |
+
}
|
399 |
+
} );
|
400 |
+
|
401 |
+
module.exports = HandleEditModeBehavior;
|
402 |
+
|
403 |
+
},{}],6:[function(require,module,exports){
|
404 |
+
var HandleEditorBehavior;
|
405 |
+
|
406 |
+
HandleEditorBehavior = Marionette.Behavior.extend( {
|
407 |
+
|
408 |
+
onClickEdit: function() {
|
409 |
+
var activeMode = elementor.dataEditMode.request( 'get:active:mode' );
|
410 |
+
|
411 |
+
if ( 'preview' === activeMode ) {
|
412 |
+
return;
|
413 |
+
}
|
414 |
+
|
415 |
+
this.onOpenEditor();
|
416 |
+
},
|
417 |
+
|
418 |
+
onOpenEditor: function() {
|
419 |
+
var currentPanelPageName = elementor.getPanelView().getCurrentPageName();
|
420 |
+
|
421 |
+
if ( 'editor' === currentPanelPageName ) {
|
422 |
+
var currentPanelPageView = elementor.getPanelView().getCurrentPageView(),
|
423 |
+
currentEditableModel = currentPanelPageView.model;
|
424 |
+
|
425 |
+
if ( currentEditableModel === this.view.model ) {
|
426 |
+
return;
|
427 |
+
}
|
428 |
+
}
|
429 |
+
|
430 |
+
var elementData = elementor.getElementData( this.view.model );
|
431 |
+
|
432 |
+
elementor.getPanelView().setPage( 'editor', elementor.translate( 'edit_element', [ elementData.title ] ), {
|
433 |
+
model: this.view.model,
|
434 |
+
editedElementView: this.view
|
435 |
+
} );
|
436 |
+
}
|
437 |
+
} );
|
438 |
+
|
439 |
+
module.exports = HandleEditorBehavior;
|
440 |
+
|
441 |
+
},{}],7:[function(require,module,exports){
|
442 |
+
var ResizableBehavior;
|
443 |
+
|
444 |
+
ResizableBehavior = Marionette.Behavior.extend( {
|
445 |
+
defaults: {
|
446 |
+
handles: elementor.config.is_rtl ? 'w' : 'e'
|
447 |
+
},
|
448 |
+
|
449 |
+
ui: {
|
450 |
+
columnTitle: '.column-title'
|
451 |
+
},
|
452 |
+
|
453 |
+
events: {
|
454 |
+
'resizestart': 'onResizeStart',
|
455 |
+
'resizestop': 'onResizeStop',
|
456 |
+
'resize': 'onResize'
|
457 |
+
},
|
458 |
+
|
459 |
+
initialize: function() {
|
460 |
+
Marionette.Behavior.prototype.initialize.apply( this, arguments );
|
461 |
+
|
462 |
+
this.listenTo( elementor.dataEditMode, 'switch', this.onEditModeSwitched );
|
463 |
+
},
|
464 |
+
|
465 |
+
active: function() {
|
466 |
+
var options = _.clone( this.options );
|
467 |
+
|
468 |
+
delete options.behaviorClass;
|
469 |
+
|
470 |
+
var $childViewContainer = this.getChildViewContainer(),
|
471 |
+
defaultResizableOptions = {},
|
472 |
+
resizableOptions = _.extend( defaultResizableOptions, options );
|
473 |
+
|
474 |
+
$childViewContainer.resizable( resizableOptions );
|
475 |
+
},
|
476 |
+
|
477 |
+
deactivate: function() {
|
478 |
+
if ( this.getChildViewContainer().resizable( 'instance' ) ) {
|
479 |
+
this.getChildViewContainer().resizable( 'destroy' );
|
480 |
+
}
|
481 |
+
},
|
482 |
+
|
483 |
+
onEditModeSwitched: function() {
|
484 |
+
var activeMode = elementor.dataEditMode.request( 'get:active:mode' );
|
485 |
+
|
486 |
+
if ( 'preview' !== activeMode ) {
|
487 |
+
this.active();
|
488 |
+
} else {
|
489 |
+
this.deactivate();
|
490 |
+
}
|
491 |
+
},
|
492 |
+
|
493 |
+
onRender: function() {
|
494 |
+
// Call this method from other thread (non-block UI)
|
495 |
+
_.defer( _.bind( this.onEditModeSwitched, this ) );
|
496 |
+
},
|
497 |
+
|
498 |
+
onDestroy: function() {
|
499 |
+
this.deactivate();
|
500 |
+
},
|
501 |
+
|
502 |
+
onResizeStart: function( event, ui ) {
|
503 |
+
//this.ui.columnTitle.fadeIn( 'fast' );
|
504 |
+
},
|
505 |
+
|
506 |
+
onResizeStop: function( event, ui ) {
|
507 |
+
//this.ui.columnTitle.fadeOut( 'fast' );
|
508 |
+
},
|
509 |
+
|
510 |
+
onResize: function( event, ui ) {
|
511 |
+
event.stopPropagation();
|
512 |
+
|
513 |
+
this.view.triggerMethod( 'request:resize', ui );
|
514 |
+
},
|
515 |
+
|
516 |
+
getChildViewContainer: function() {
|
517 |
+
//if ( 'function' === typeof this.view.getChildViewContainer ) {
|
518 |
+
// // CompositeView
|
519 |
+
// return this.view.getChildViewContainer( this.view );
|
520 |
+
//} else {
|
521 |
+
// // CollectionView
|
522 |
+
// return this.$el;
|
523 |
+
//}
|
524 |
+
return this.$el;
|
525 |
+
}
|
526 |
+
} );
|
527 |
+
|
528 |
+
module.exports = ResizableBehavior;
|
529 |
+
|
530 |
+
},{}],8:[function(require,module,exports){
|
531 |
+
var SortableBehavior;
|
532 |
+
|
533 |
+
SortableBehavior = Marionette.Behavior.extend( {
|
534 |
+
defaults: {
|
535 |
+
elChildType: 'widget'
|
536 |
+
},
|
537 |
+
|
538 |
+
events: {
|
539 |
+
'sortstart': 'onSortStart',
|
540 |
+
'sortreceive': 'onSortReceive',
|
541 |
+
'sortupdate': 'onSortUpdate',
|
542 |
+
'sortstop': 'onSortStop',
|
543 |
+
'sortover': 'onSortOver',
|
544 |
+
'sortout': 'onSortOut'
|
545 |
+
},
|
546 |
+
|
547 |
+
initialize: function() {
|
548 |
+
this.listenTo( elementor.dataEditMode, 'switch', this.onEditModeSwitched );
|
549 |
+
this.listenTo( elementor.deviceMode, 'change', this.onDeviceModeChange );
|
550 |
+
},
|
551 |
+
|
552 |
+
onEditModeSwitched: function() {
|
553 |
+
var activeMode = elementor.dataEditMode.request( 'get:active:mode' );
|
554 |
+
|
555 |
+
if ( 'preview' !== activeMode ) {
|
556 |
+
this.active();
|
557 |
+
} else {
|
558 |
+
this.deactivate();
|
559 |
+
}
|
560 |
+
},
|
561 |
+
|
562 |
+
onDeviceModeChange: function() {
|
563 |
+
var deviceMode = elementor.deviceMode.request( 'currentMode' );
|
564 |
+
|
565 |
+
if ( 'desktop' === deviceMode ) {
|
566 |
+
this.active();
|
567 |
+
} else {
|
568 |
+
this.deactivate();
|
569 |
+
}
|
570 |
+
},
|
571 |
+
|
572 |
+
onRender: function() {
|
573 |
+
_.defer( _.bind( this.onEditModeSwitched, this ) );
|
574 |
+
},
|
575 |
+
|
576 |
+
onDestroy: function() {
|
577 |
+
this.deactivate();
|
578 |
+
},
|
579 |
+
|
580 |
+
active: function() {
|
581 |
+
if ( this.getChildViewContainer().sortable( 'instance' ) ) {
|
582 |
+
return;
|
583 |
+
}
|
584 |
+
|
585 |
+
var $childViewContainer = this.getChildViewContainer(),
|
586 |
+
defaultSortableOptions = {
|
587 |
+
connectWith: $childViewContainer.selector,
|
588 |
+
cursor: 'move',
|
589 |
+
placeholder: 'elementor-sortable-placeholder',
|
590 |
+
cursorAt: {
|
591 |
+
top: 20,
|
592 |
+
left: 25
|
593 |
+
},
|
594 |
+
helper: _.bind( this._getSortableHelper, this )
|
595 |
+
},
|
596 |
+
sortableOptions = _.extend( defaultSortableOptions, this.view.getSortableOptions() );
|
597 |
+
|
598 |
+
$childViewContainer.sortable( sortableOptions );
|
599 |
+
},
|
600 |
+
|
601 |
+
_getSortableHelper: function( event, $item ) {
|
602 |
+
var model = this.view.collection.get( {
|
603 |
+
cid: $item.data( 'model-cid' )
|
604 |
+
} );
|
605 |
+
|
606 |
+
return '<div style="height: 50px; width: 250px;" class="elementor-sortable-helper elementor-sortable-helper-' + model.get( 'elType' ) + '"><i class="fa fa-' + model.getIcon() + '"></i><div class="elementor-title">' + model.getTitle() + '</div></div>';
|
607 |
+
},
|
608 |
+
|
609 |
+
deactivate: function() {
|
610 |
+
if ( this.getChildViewContainer().sortable( 'instance' ) ) {
|
611 |
+
this.getChildViewContainer().sortable( 'destroy' );
|
612 |
+
}
|
613 |
+
},
|
614 |
+
|
615 |
+
onSortStart: function( event, ui ) {
|
616 |
+
event.stopPropagation();
|
617 |
+
|
618 |
+
var model = this.view.collection.get( {
|
619 |
+
cid: ui.item.data( 'model-cid' )
|
620 |
+
} );
|
621 |
+
|
622 |
+
if ( 'column' === this.options.elChildType ) {
|
623 |
+
// the following code is just for touch
|
624 |
+
ui.placeholder.addClass( 'elementor-column' );
|
625 |
+
|
626 |
+
var uiData = ui.item.data( 'sortableItem' ),
|
627 |
+
uiItems = uiData.items,
|
628 |
+
itemHeight = 0;
|
629 |
+
|
630 |
+
uiItems.forEach( function( item ) {
|
631 |
+
if ( item.item[0] === ui.item[0] ) {
|
632 |
+
itemHeight = item.height;
|
633 |
+
return false;
|
634 |
+
}
|
635 |
+
} );
|
636 |
+
|
637 |
+
ui.placeholder.height( itemHeight );
|
638 |
+
|
639 |
+
// ui.placeholder.addClass( 'elementor-column elementor-col-' + model.getSetting( 'size' ) );
|
640 |
+
}
|
641 |
+
|
642 |
+
elementor.data.trigger( model.get( 'elType' ) + ':drag:start' );
|
643 |
+
|
644 |
+
elementor.data.reply( 'cache:' + model.cid, model );
|
645 |
+
},
|
646 |
+
|
647 |
+
onSortOver: function( event, ui ) {
|
648 |
+
event.stopPropagation();
|
649 |
+
|
650 |
+
var model = elementor.data.request( 'cache:' + ui.item.data( 'model-cid' ) );
|
651 |
+
|
652 |
+
Backbone.$( event.target )
|
653 |
+
.addClass( 'elementor-draggable-over' )
|
654 |
+
.attr( {
|
655 |
+
'data-dragged-element': model.get( 'elType' ),
|
656 |
+
'data-dragged-is-inner': model.get( 'isInner' )
|
657 |
+
} );
|
658 |
+
|
659 |
+
this.$el.addClass( 'elementor-dragging-on-child' );
|
660 |
+
},
|
661 |
+
|
662 |
+
onSortOut: function( event ) {
|
663 |
+
event.stopPropagation();
|
664 |
+
|
665 |
+
Backbone.$( event.target )
|
666 |
+
.removeClass( 'elementor-draggable-over' )
|
667 |
+
.removeAttr( 'data-dragged-element data-dragged-is-inner' );
|
668 |
+
|
669 |
+
this.$el.removeClass( 'elementor-dragging-on-child' );
|
670 |
+
},
|
671 |
+
|
672 |
+
onSortReceive: function( event, ui ) {
|
673 |
+
event.stopPropagation();
|
674 |
+
|
675 |
+
if ( this.view.isCollectionFilled() ) {
|
676 |
+
Backbone.$( ui.sender ).sortable( 'cancel' );
|
677 |
+
return;
|
678 |
+
}
|
679 |
+
|
680 |
+
var model = elementor.data.request( 'cache:' + ui.item.data( 'model-cid' ) ),
|
681 |
+
draggedElType = model.get( 'elType' ),
|
682 |
+
draggedIsInnerSection = 'section' === draggedElType && model.get( 'isInner' ),
|
683 |
+
targetIsInnerColumn = 'column' === this.view.getElementType() && this.view.isInner();
|
684 |
+
|
685 |
+
if ( draggedIsInnerSection && targetIsInnerColumn ) {
|
686 |
+
Backbone.$( ui.sender ).sortable( 'cancel' );
|
687 |
+
return;
|
688 |
+
}
|
689 |
+
|
690 |
+
var newIndex = ui.item.parent().children().index( ui.item ),
|
691 |
+
newModel = new this.view.collection.model( model.toJSON( { copyHtmlCache: true } ) );
|
692 |
+
|
693 |
+
this.view.addChildModel( newModel, { at: newIndex } );
|
694 |
+
|
695 |
+
elementor.data.trigger( draggedElType + ':drag:end' );
|
696 |
+
|
697 |
+
model.destroy();
|
698 |
+
},
|
699 |
+
|
700 |
+
onSortUpdate: function( event, ui ) {
|
701 |
+
event.stopPropagation();
|
702 |
+
|
703 |
+
var model = this.view.collection.get( ui.item.attr( 'data-model-cid' ) );
|
704 |
+
if ( model ) {
|
705 |
+
elementor.data.trigger( model.get( 'elType' ) + ':drag:end' );
|
706 |
+
}
|
707 |
+
},
|
708 |
+
|
709 |
+
onSortStop: function( event, ui ) {
|
710 |
+
event.stopPropagation();
|
711 |
+
|
712 |
+
var $childElement = ui.item,
|
713 |
+
collection = this.view.collection,
|
714 |
+
model = collection.get( $childElement.attr( 'data-model-cid' ) ),
|
715 |
+
newIndex = $childElement.parent().children().index( $childElement );
|
716 |
+
|
717 |
+
if ( this.getChildViewContainer()[0] === ui.item.parent()[0] ) {
|
718 |
+
if ( null === ui.sender && model ) {
|
719 |
+
var oldIndex = collection.indexOf( model );
|
720 |
+
|
721 |
+
if ( oldIndex !== newIndex ) {
|
722 |
+
collection.remove( model, { silent: true } );
|
723 |
+
collection.add( model, { silent: true, at: newIndex } );
|
724 |
+
|
725 |
+
elementor.setFlagEditorChange( true );
|
726 |
+
}
|
727 |
+
|
728 |
+
elementor.data.trigger( model.get( 'elType' ) + ':drag:end' );
|
729 |
+
}
|
730 |
+
}
|
731 |
+
},
|
732 |
+
|
733 |
+
onAddChild: function( view ) {
|
734 |
+
view.$el.attr( 'data-model-cid', view.model.cid );
|
735 |
+
},
|
736 |
+
|
737 |
+
getChildViewContainer: function() {
|
738 |
+
if ( 'function' === typeof this.view.getChildViewContainer ) {
|
739 |
+
// CompositeView
|
740 |
+
return this.view.getChildViewContainer( this.view );
|
741 |
+
} else {
|
742 |
+
// CollectionView
|
743 |
+
return this.$el;
|
744 |
+
}
|
745 |
+
}
|
746 |
+
} );
|
747 |
+
|
748 |
+
module.exports = SortableBehavior;
|
749 |
+
|
750 |
+
},{}],9:[function(require,module,exports){
|
751 |
+
var EditModeItemView;
|
752 |
+
|
753 |
+
EditModeItemView = Marionette.ItemView.extend( {
|
754 |
+
template: '#tmpl-elementor-mode-switcher-content',
|
755 |
+
|
756 |
+
id: 'elementor-mode-switcher-inner',
|
757 |
+
|
758 |
+
ui: {
|
759 |
+
previewButton: '#elementor-mode-switcher-preview-input',
|
760 |
+
previewLabel: '#elementor-mode-switcher-preview',
|
761 |
+
previewLabelA11y: '#elementor-mode-switcher-preview .elementor-screen-only'
|
762 |
+
},
|
763 |
+
|
764 |
+
events: {
|
765 |
+
'change @ui.previewButton': 'onEditModeChange'
|
766 |
+
},
|
767 |
+
|
768 |
+
getCurrentMode: function() {
|
769 |
+
return this.ui.previewButton.is( ':checked' ) ? 'preview' : 'edit';
|
770 |
+
},
|
771 |
+
|
772 |
+
setMode: function( mode ) {
|
773 |
+
this.ui.previewButton.prop( 'checked', 'preview' === mode );
|
774 |
+
},
|
775 |
+
|
776 |
+
onRender: function() {
|
777 |
+
this.onEditModeChange();
|
778 |
+
},
|
779 |
+
|
780 |
+
onEditModeChange: function() {
|
781 |
+
var oldEditMode = elementor.dataEditMode.request( 'get:active:mode' ),
|
782 |
+
currentMode = this.getCurrentMode();
|
783 |
+
|
784 |
+
elementor.dataEditMode.reply( 'get:active:mode', currentMode );
|
785 |
+
|
786 |
+
if ( currentMode !== oldEditMode ) {
|
787 |
+
elementor.dataEditMode.trigger( 'switch' );
|
788 |
+
|
789 |
+
var title = 'preview' === currentMode ? 'Back to Editor' : 'Preview';
|
790 |
+
|
791 |
+
this.ui.previewLabel.attr( 'title', title );
|
792 |
+
this.ui.previewLabelA11y.text( title );
|
793 |
+
}
|
794 |
+
}
|
795 |
+
} );
|
796 |
+
|
797 |
+
module.exports = EditModeItemView;
|
798 |
+
|
799 |
+
},{}],10:[function(require,module,exports){
|
800 |
+
var PanelFooterItemView;
|
801 |
+
|
802 |
+
PanelFooterItemView = Marionette.ItemView.extend( {
|
803 |
+
template: '#tmpl-elementor-panel-footer-content',
|
804 |
+
|
805 |
+
tagName: 'nav',
|
806 |
+
|
807 |
+
id: 'elementor-panel-footer-tools',
|
808 |
+
|
809 |
+
defaultDeviceMode: 'desktop',
|
810 |
+
|
811 |
+
currentDeviceMode: '',
|
812 |
+
|
813 |
+
possibleRotateModes: [ 'portrait', 'landscape' ],
|
814 |
+
|
815 |
+
ui: {
|
816 |
+
menuButtons: '.elementor-panel-footer-tool',
|
817 |
+
deviceModeButtons: '#elementor-panel-footer-responsive .elementor-panel-footer-sub-menu-item',
|
818 |
+
buttonSave: '#elementor-panel-footer-save',
|
819 |
+
buttonSaveButton: '#elementor-panel-footer-save .elementor-button',
|
820 |
+
buttonPublish: '#elementor-panel-footer-publish'
|
821 |
+
},
|
822 |
+
|
823 |
+
events: {
|
824 |
+
'click @ui.deviceModeButtons': 'onClickResponsiveButtons',
|
825 |
+
'click @ui.buttonSave': 'onClickButtonSave',
|
826 |
+
'click @ui.buttonPublish': 'onClickButtonPublish'
|
827 |
+
},
|
828 |
+
|
829 |
+
initialize: function() {
|
830 |
+
this._initDialog();
|
831 |
+
|
832 |
+
Backbone.$( document ).on( 'click', _.bind( this.onDocumentClick, this ) );
|
833 |
+
|
834 |
+
this.listenTo( elementor.editor, 'editor:changed', this.onEditorChanged );
|
835 |
+
},
|
836 |
+
|
837 |
+
_initDialog: function() {
|
838 |
+
var dialog;
|
839 |
+
|
840 |
+
this.getDialog = function() {
|
841 |
+
if ( ! dialog ) {
|
842 |
+
var $ = Backbone.$,
|
843 |
+
$dialogMessage = $( '<div>', {
|
844 |
+
'class': 'elementor-dialog-message'
|
845 |
+
} ),
|
846 |
+
$messageIcon = $( '<i>', {
|
847 |
+
'class': 'fa fa-check-circle'
|
848 |
+
} ),
|
849 |
+
$messageText = $( '<div>', {
|
850 |
+
'class': 'elementor-dialog-message-text'
|
851 |
+
} ).text( elementor.translate( 'saved' ) );
|
852 |
+
|
853 |
+
$dialogMessage.append( $messageIcon, $messageText );
|
854 |
+
|
855 |
+
dialog = elementor.dialogsManager.createWidget( 'popup', {
|
856 |
+
hide: {
|
857 |
+
delay: 1500
|
858 |
+
}
|
859 |
+
} );
|
860 |
+
|
861 |
+
dialog.setMessage( $dialogMessage );
|
862 |
+
}
|
863 |
+
|
864 |
+
return dialog;
|
865 |
+
};
|
866 |
+
},
|
867 |
+
|
868 |
+
_publishBuilder: function() {
|
869 |
+
var self = this;
|
870 |
+
|
871 |
+
var options = {
|
872 |
+
revision: 'publish',
|
873 |
+
onSuccess: function() {
|
874 |
+
self.getDialog().show();
|
875 |
+
|
876 |
+
self.ui.buttonSaveButton.removeClass( 'elementor-button-state' );
|
877 |
+
}
|
878 |
+
};
|
879 |
+
|
880 |
+
self.ui.buttonSaveButton.addClass( 'elementor-button-state' );
|
881 |
+
|
882 |
+
elementor.saveBuilder( options );
|
883 |
+
},
|
884 |
+
|
885 |
+
_saveBuilderDraft: function() {
|
886 |
+
elementor.saveBuilder();
|
887 |
+
},
|
888 |
+
|
889 |
+
onRender: function() {
|
890 |
+
this.changeDeviceMode( this.defaultDeviceMode );
|
891 |
+
},
|
892 |
+
|
893 |
+
changeDeviceMode: function( newDeviceMode ) {
|
894 |
+
if ( this.currentDeviceMode === newDeviceMode ) {
|
895 |
+
return;
|
896 |
+
}
|
897 |
+
|
898 |
+
this.getCurrentDeviceModeButton().removeClass( 'active' );
|
899 |
+
|
900 |
+
elementor.$previewResponsiveWrapper
|
901 |
+
.removeClass( 'elementor-device-' + this.currentDeviceMode )
|
902 |
+
.addClass( 'elementor-device-' + newDeviceMode );
|
903 |
+
|
904 |
+
this.currentDeviceMode = newDeviceMode;
|
905 |
+
|
906 |
+
this.getCurrentDeviceModeButton().addClass( 'active' );
|
907 |
+
|
908 |
+
elementor.deviceMode.reply( 'currentMode', this.currentDeviceMode );
|
909 |
+
elementor.deviceMode.trigger( 'change' );
|
910 |
+
},
|
911 |
+
|
912 |
+
getCurrentDeviceModeButton: function() {
|
913 |
+
return this.ui.deviceModeButtons.filter( '[data-device-mode="' + this.currentDeviceMode + '"]' );
|
914 |
+
},
|
915 |
+
|
916 |
+
onDocumentClick: function( event ) {
|
917 |
+
var $target = Backbone.$( event.target ),
|
918 |
+
isClickInsideOfTool = $target.closest( '.elementor-panel-footer-sub-menu-wrapper' ).length;
|
919 |
+
|
920 |
+
if ( isClickInsideOfTool ) {
|
921 |
+
return;
|
922 |
+
}
|
923 |
+
|
924 |
+
var $tool = $target.closest( '.elementor-panel-footer-tool' ),
|
925 |
+
isClosedTool = $tool.length && ! $tool.hasClass( 'elementor-open' );
|
926 |
+
|
927 |
+
this.ui.menuButtons.removeClass( 'elementor-open' );
|
928 |
+
|
929 |
+
if ( isClosedTool ) {
|
930 |
+
$tool.addClass( 'elementor-open' );
|
931 |
+
}
|
932 |
+
},
|
933 |
+
|
934 |
+
onEditorChanged: function() {
|
935 |
+
this.ui.buttonSave.toggleClass( 'elementor-save-active', elementor.isEditorChanged() );
|
936 |
+
},
|
937 |
+
|
938 |
+
onClickButtonSave: function() {
|
939 |
+
//this._saveBuilderDraft();
|
940 |
+
this._publishBuilder();
|
941 |
+
},
|
942 |
+
|
943 |
+
onClickButtonPublish: function( event ) {
|
944 |
+
// Prevent click on save button
|
945 |
+
event.stopPropagation();
|
946 |
+
|
947 |
+
this._publishBuilder();
|
948 |
+
},
|
949 |
+
|
950 |
+
onClickResponsiveButtons: function( event ) {
|
951 |
+
var $clickedButton = this.$( event.currentTarget ),
|
952 |
+
newDeviceMode = $clickedButton.data( 'device-mode' );
|
953 |
+
|
954 |
+
this.changeDeviceMode( newDeviceMode );
|
955 |
+
}
|
956 |
+
} );
|
957 |
+
|
958 |
+
module.exports = PanelFooterItemView;
|
959 |
+
|
960 |
+
},{}],11:[function(require,module,exports){
|
961 |
+
var PanelHeaderItemView;
|
962 |
+
|
963 |
+
PanelHeaderItemView = Marionette.ItemView.extend( {
|
964 |
+
template: '#tmpl-elementor-panel-header',
|
965 |
+
|
966 |
+
id: 'elementor-panel-header',
|
967 |
+
|
968 |
+
ui: {
|
969 |
+
menuButton: '#elementor-panel-header-menu-button',
|
970 |
+
title: '#elementor-panel-header-title',
|
971 |
+
addButton: '#elementor-panel-header-add-button'
|
972 |
+
},
|
973 |
+
|
974 |
+
events: {
|
975 |
+
'click @ui.addButton': 'onClickAdd',
|
976 |
+
'click @ui.menuButton': 'onClickMenu'
|
977 |
+
},
|
978 |
+
|
979 |
+
setTitle: function( title ) {
|
980 |
+
this.ui.title.html( title );
|
981 |
+
},
|
982 |
+
|
983 |
+
onClickAdd: function() {
|
984 |
+
elementor.getPanelView().setPage( 'elements' );
|
985 |
+
},
|
986 |
+
|
987 |
+
onClickMenu: function() {
|
988 |
+
var panel = elementor.getPanelView(),
|
989 |
+
currentPanelPageName = panel.getCurrentPageName(),
|
990 |
+
nextPage = 'menu' === currentPanelPageName ? 'elements' : 'menu';
|
991 |
+
|
992 |
+
panel.setPage( nextPage );
|
993 |
+
}
|
994 |
+
} );
|
995 |
+
|
996 |
+
module.exports = PanelHeaderItemView;
|
997 |
+
|
998 |
+
},{}],12:[function(require,module,exports){
|
999 |
+
var EditorCompositeView;
|
1000 |
+
|
1001 |
+
EditorCompositeView = Marionette.CompositeView.extend( {
|
1002 |
+
template: Marionette.TemplateCache.get( '#tmpl-editor-content' ),
|
1003 |
+
|
1004 |
+
id: 'elementor-panel-page-editor',
|
1005 |
+
|
1006 |
+
templateHelpers: function() {
|
1007 |
+
return {
|
1008 |
+
elementData: elementor.getElementData( this.model )
|
1009 |
+
};
|
1010 |
+
},
|
1011 |
+
|
1012 |
+
childViewContainer: 'div.elementor-controls',
|
1013 |
+
|
1014 |
+
modelEvents: {
|
1015 |
+
'destroy': 'onModelDestroy'
|
1016 |
+
},
|
1017 |
+
|
1018 |
+
ui: {
|
1019 |
+
'tabs': '.elementor-tabs-controls li'
|
1020 |
+
},
|
1021 |
+
|
1022 |
+
events: {
|
1023 |
+
'click @ui.tabs a': 'onClickTabControl'
|
1024 |
+
},
|
1025 |
+
|
1026 |
+
getChildView: function( item ) {
|
1027 |
+
var controlType = item.get( 'type' );
|
1028 |
+
return elementor.getControlItemView( controlType );
|
1029 |
+
},
|
1030 |
+
|
1031 |
+
childViewOptions: function() {
|
1032 |
+
return {
|
1033 |
+
elementSettingsModel: this.model.get( 'settings' ),
|
1034 |
+
elementEditSettings: this.model.get( 'editSettings' )
|
1035 |
+
};
|
1036 |
+
},
|
1037 |
+
|
1038 |
+
onDestroy: function() {
|
1039 |
+
this.getOption( 'editedElementView' ).$el.removeClass( 'elementor-element-editable' );
|
1040 |
+
this.model.trigger( 'editor:close' );
|
1041 |
+
|
1042 |
+
this.triggerMethod( 'editor:destroy' );
|
1043 |
+
},
|
1044 |
+
|
1045 |
+
onBeforeRender: function() {
|
1046 |
+
var controls = elementor.getElementControls( this.model );
|
1047 |
+
|
1048 |
+
if ( ! controls ) {
|
1049 |
+
throw new Error( 'No found editor controls' );
|
1050 |
+
}
|
1051 |
+
|
1052 |
+
// Create new instance of that collection
|
1053 |
+
this.collection = new Backbone.Collection( controls );
|
1054 |
+
},
|
1055 |
+
|
1056 |
+
onRender: function() {
|
1057 |
+
this.getOption( 'editedElementView' ).$el.addClass( 'elementor-element-editable' );
|
1058 |
+
|
1059 |
+
// Set the first tab as active
|
1060 |
+
this.ui.tabs.eq( 0 ).find( 'a' ).trigger( 'click' );
|
1061 |
+
|
1062 |
+
// Create tooltip on controls
|
1063 |
+
this.$( '.tooltip-target' ).tipsy( {
|
1064 |
+
gravity: function() {
|
1065 |
+
// `n` for down, `s` for up
|
1066 |
+
var gravity = Backbone.$( this ).data( 'tooltip-pos' );
|
1067 |
+
|
1068 |
+
if ( undefined !== gravity ) {
|
1069 |
+
return gravity;
|
1070 |
+
} else {
|
1071 |
+
return 'n';
|
1072 |
+
}
|
1073 |
+
},
|
1074 |
+
title: function() {
|
1075 |
+
return this.getAttribute( 'data-tooltip' );
|
1076 |
+
}
|
1077 |
+
} );
|
1078 |
+
},
|
1079 |
+
|
1080 |
+
onModelDestroy: function() {
|
1081 |
+
this.destroy();
|
1082 |
+
},
|
1083 |
+
|
1084 |
+
onClickTabControl: function( event ) {
|
1085 |
+
event.preventDefault();
|
1086 |
+
|
1087 |
+
var $thisTab = this.$( event.target );
|
1088 |
+
|
1089 |
+
this.ui.tabs.removeClass( 'active' );
|
1090 |
+
$thisTab.closest( 'li' ).addClass( 'active' );
|
1091 |
+
|
1092 |
+
this.model.get( 'settings' ).trigger( 'control:switch:tab', $thisTab.data( 'tab' ) );
|
1093 |
+
|
1094 |
+
this.openFirstSectionInCurrentTab( $thisTab.data( 'tab' ) );
|
1095 |
+
},
|
1096 |
+
|
1097 |
+
/**
|
1098 |
+
* It's a temp method.
|
1099 |
+
*
|
1100 |
+
* TODO: Rewrite this method later.
|
1101 |
+
*/
|
1102 |
+
openFirstSectionInCurrentTab: function( currentTab ) {
|
1103 |
+
var openedClass = 'elementor-open',
|
1104 |
+
|
1105 |
+
childrenUnderSection = this.children.filter( function( view ) {
|
1106 |
+
return ( ! _.isEmpty( view.model.get( 'section' ) ) );
|
1107 |
+
} ),
|
1108 |
+
|
1109 |
+
firstSectionControlView = this.children.filter( function( view ) {
|
1110 |
+
return ( 'section' === view.model.get( 'type' ) ) && ( currentTab === view.model.get( 'tab' ) );
|
1111 |
+
} );
|
1112 |
+
|
1113 |
+
// Check if found any section controls
|
1114 |
+
if ( _.isEmpty( firstSectionControlView ) ) {
|
1115 |
+
return;
|
1116 |
+
}
|
1117 |
+
|
1118 |
+
firstSectionControlView = firstSectionControlView[0];
|
1119 |
+
firstSectionControlView.ui.heading.addClass( openedClass );
|
1120 |
+
|
1121 |
+
_.each( childrenUnderSection, function( view ) {
|
1122 |
+
if ( view.model.get( 'section' ) !== firstSectionControlView.model.get( 'name' ) ) {
|
1123 |
+
view.$el.removeClass( openedClass );
|
1124 |
+
return;
|
1125 |
+
}
|
1126 |
+
|
1127 |
+
view.$el.addClass( openedClass );
|
1128 |
+
} );
|
1129 |
+
},
|
1130 |
+
|
1131 |
+
onChildviewControlSectionClicked: function( childView ) {
|
1132 |
+
var openedClass = 'elementor-open',
|
1133 |
+
sectionClicked = childView.model.get( 'name' ),
|
1134 |
+
isSectionOpen = childView.ui.heading.hasClass( openedClass ),
|
1135 |
+
|
1136 |
+
childrenUnderSection = this.children.filter( function( view ) {
|
1137 |
+
return ( ! _.isEmpty( view.model.get( 'section' ) ) );
|
1138 |
+
} );
|
1139 |
+
|
1140 |
+
this.$( '.elementor-control.elementor-control-type-section .elementor-panel-heading' ).removeClass( openedClass );
|
1141 |
+
|
1142 |
+
if ( isSectionOpen ) {
|
1143 |
+
// Close all open sections
|
1144 |
+
sectionClicked = '';
|
1145 |
+
} else {
|
1146 |
+
childView.ui.heading.addClass( openedClass );
|
1147 |
+
}
|
1148 |
+
|
1149 |
+
_.each( childrenUnderSection, function( view ) {
|
1150 |
+
if ( view.model.get( 'section' ) !== sectionClicked ) {
|
1151 |
+
view.$el.removeClass( openedClass );
|
1152 |
+
return;
|
1153 |
+
}
|
1154 |
+
|
1155 |
+
view.$el.addClass( openedClass );
|
1156 |
+
} );
|
1157 |
+
|
1158 |
+
elementor.data.trigger( 'scrollbar:update' );
|
1159 |
+
}
|
1160 |
+
} );
|
1161 |
+
|
1162 |
+
module.exports = EditorCompositeView;
|
1163 |
+
|
1164 |
+
},{}],13:[function(require,module,exports){
|
1165 |
+
var PanelElementsElementModel = require( '../models/element' ),
|
1166 |
+
PanelElementsElementsCollection;
|
1167 |
+
|
1168 |
+
PanelElementsElementsCollection = Backbone.Collection.extend( {
|
1169 |
+
model: PanelElementsElementModel/*,
|
1170 |
+
comparator: 'title'*/
|
1171 |
+
} );
|
1172 |
+
|
1173 |
+
module.exports = PanelElementsElementsCollection;
|
1174 |
+
|
1175 |
+
},{"../models/element":15}],14:[function(require,module,exports){
|
1176 |
+
var ElementsCollection = require( './collections/elements' ),
|
1177 |
+
PanelElementsElementsView = require( './views/elements' ),
|
1178 |
+
PanelElementsSearchView = require( './views/search' ),
|
1179 |
+
PanelElementsLayoutView;
|
1180 |
+
|
1181 |
+
PanelElementsLayoutView = Marionette.LayoutView.extend( {
|
1182 |
+
template: '#tmpl-elementor-panel-elements',
|
1183 |
+
|
1184 |
+
regions: {
|
1185 |
+
elements: '#elementor-panel-elements-wrapper',
|
1186 |
+
search: '#elementor-panel-elements-search-area'
|
1187 |
+
},
|
1188 |
+
|
1189 |
+
initialize: function() {
|
1190 |
+
this.listenTo( elementor.panelElements, 'element:selected', this.destroy );
|
1191 |
+
},
|
1192 |
+
|
1193 |
+
clearSearchInput: function() {
|
1194 |
+
this.getChildView( 'search' ).triggerMethod( 'clear:filter' );
|
1195 |
+
},
|
1196 |
+
|
1197 |
+
changeFilter: function( filterValue ) {
|
1198 |
+
elementor.panelElements
|
1199 |
+
.reply( 'filter:value', filterValue )
|
1200 |
+
.trigger( 'change' );
|
1201 |
+
},
|
1202 |
+
|
1203 |
+
clearFilters: function() {
|
1204 |
+
this.changeFilter( null );
|
1205 |
+
this.clearSearchInput();
|
1206 |
+
},
|
1207 |
+
|
1208 |
+
onChildviewDragStart: function( childView ) {
|
1209 |
+
elementor.panelElements.reply( 'element:selected', childView );
|
1210 |
+
},
|
1211 |
+
|
1212 |
+
onChildviewChildrenRender: function() {
|
1213 |
+
this.updateElementsScrollbar();
|
1214 |
+
},
|
1215 |
+
|
1216 |
+
onChildviewSearchChangeInput: function( child ) {
|
1217 |
+
var value = child.ui.input.val();
|
1218 |
+
|
1219 |
+
this.changeFilter( value, 'search' );
|
1220 |
+
},
|
1221 |
+
|
1222 |
+
onDestroy: function() {
|
1223 |
+
elementor.panelElements.reply( 'filter:value', null );
|
1224 |
+
},
|
1225 |
+
|
1226 |
+
onShow: function() {
|
1227 |
+
var elementsRegion = this.getRegion( 'elements' ),
|
1228 |
+
searchRegion = this.getRegion( 'search' );
|
1229 |
+
|
1230 |
+
var elements = new ElementsCollection();
|
1231 |
+
|
1232 |
+
// Add a section to the collection
|
1233 |
+
var sectionConfig = elementor.config.elements.section;
|
1234 |
+
|
1235 |
+
elements.add( {
|
1236 |
+
title: elementor.translate( 'inner_section' ),
|
1237 |
+
elType: 'section',
|
1238 |
+
keywords: sectionConfig.keywords,
|
1239 |
+
icon: sectionConfig.icon
|
1240 |
+
} );
|
1241 |
+
|
1242 |
+
// TODO: Change the array from server syntax, and no need each loop for initialize
|
1243 |
+
_.each( elementor.config.widgets, function( element, widgetType ) {
|
1244 |
+
elements.add( {
|
1245 |
+
title: element.title,
|
1246 |
+
elType: 'widget',
|
1247 |
+
categories: element.categories,
|
1248 |
+
keywords: element.keywords,
|
1249 |
+
icon: element.icon,
|
1250 |
+
widgetType: widgetType
|
1251 |
+
} );
|
1252 |
+
} );
|
1253 |
+
|
1254 |
+
elementsRegion.show( new PanelElementsElementsView( { collection: elements } ) );
|
1255 |
+
searchRegion.show( new PanelElementsSearchView() );
|
1256 |
+
},
|
1257 |
+
|
1258 |
+
updateElementsScrollbar: function() {
|
1259 |
+
elementor.data.trigger( 'scrollbar:update' );
|
1260 |
+
}
|
1261 |
+
} );
|
1262 |
+
|
1263 |
+
module.exports = PanelElementsLayoutView;
|
1264 |
+
|
1265 |
+
},{"./collections/elements":13,"./views/elements":17,"./views/search":18}],15:[function(require,module,exports){
|
1266 |
+
var PanelElementsElementModel;
|
1267 |
+
|
1268 |
+
PanelElementsElementModel = Backbone.Model.extend( {
|
1269 |
+
defaults: {
|
1270 |
+
title: '',
|
1271 |
+
categories: [],
|
1272 |
+
keywords: [],
|
1273 |
+
icon: '',
|
1274 |
+
elType: 'widget',
|
1275 |
+
widgetType: ''
|
1276 |
+
}
|
1277 |
+
} );
|
1278 |
+
|
1279 |
+
module.exports = PanelElementsElementModel;
|
1280 |
+
},{}],16:[function(require,module,exports){
|
1281 |
+
var PanelElementsElementView;
|
1282 |
+
|
1283 |
+
PanelElementsElementView = Marionette.ItemView.extend( {
|
1284 |
+
template: '#tmpl-elementor-element-library-element',
|
1285 |
+
|
1286 |
+
className: 'elementor-element-wrapper',
|
1287 |
+
|
1288 |
+
events: {
|
1289 |
+
click: 'onClick'
|
1290 |
+
},
|
1291 |
+
|
1292 |
+
triggers: {
|
1293 |
+
dragend: 'drag:end'
|
1294 |
+
},
|
1295 |
+
|
1296 |
+
onRender: function() {
|
1297 |
+
this.$el.html5Draggable( {
|
1298 |
+
|
1299 |
+
onDragStart: _.bind( function() {
|
1300 |
+
this.triggerMethod( 'drag:start' );
|
1301 |
+
}, this ),
|
1302 |
+
|
1303 |
+
groups: [ 'elementor-element' ]
|
1304 |
+
} );
|
1305 |
+
}
|
1306 |
+
} );
|
1307 |
+
|
1308 |
+
module.exports = PanelElementsElementView;
|
1309 |
+
|
1310 |
+
},{}],17:[function(require,module,exports){
|
1311 |
+
var PanelElementsElementView = require( './element' ),
|
1312 |
+
PanelElementsElementsView;
|
1313 |
+
|
1314 |
+
PanelElementsElementsView = Marionette.CollectionView.extend( {
|
1315 |
+
childView: PanelElementsElementView,
|
1316 |
+
|
1317 |
+
id: 'elementor-panel-elements',
|
1318 |
+
|
1319 |
+
initialize: function() {
|
1320 |
+
this.listenTo( elementor.panelElements, 'change', this.onFilterChanged );
|
1321 |
+
},
|
1322 |
+
|
1323 |
+
filter: function( childModel ) {
|
1324 |
+
var filterValue = elementor.panelElements.request( 'filter:value' );
|
1325 |
+
|
1326 |
+
if ( ! filterValue ) {
|
1327 |
+
return true;
|
1328 |
+
}
|
1329 |
+
|
1330 |
+
return _.any( [ 'title', 'keywords' ], function( type ) {
|
1331 |
+
return ( -1 !== childModel.get( type ).toLowerCase().indexOf( filterValue.toLowerCase() ) );
|
1332 |
+
} );
|
1333 |
+
},
|
1334 |
+
|
1335 |
+
onFilterChanged: function() {
|
1336 |
+
this._renderChildren();
|
1337 |
+
this.triggerMethod( 'children:render' );
|
1338 |
+
}
|
1339 |
+
} );
|
1340 |
+
|
1341 |
+
module.exports = PanelElementsElementsView;
|
1342 |
+
|
1343 |
+
},{"./element":16}],18:[function(require,module,exports){
|
1344 |
+
var PanelElementsSearchView;
|
1345 |
+
|
1346 |
+
PanelElementsSearchView = Marionette.ItemView.extend( {
|
1347 |
+
template: '#tmpl-elementor-panel-element-search',
|
1348 |
+
|
1349 |
+
id: 'elementor-panel-elements-search-wrapper',
|
1350 |
+
|
1351 |
+
ui: {
|
1352 |
+
input: 'input'
|
1353 |
+
},
|
1354 |
+
|
1355 |
+
triggers: {
|
1356 |
+
'keyup @ui.input': 'search:change:input'
|
1357 |
+
},
|
1358 |
+
|
1359 |
+
onClearFilter: function() {
|
1360 |
+
this.ui.input.val( '' );
|
1361 |
+
}
|
1362 |
+
} );
|
1363 |
+
|
1364 |
+
module.exports = PanelElementsSearchView;
|
1365 |
+
|
1366 |
+
},{}],19:[function(require,module,exports){
|
1367 |
+
var PanelMenuItemView = require( 'elementor-panel/pages/menu/views/item' ),
|
1368 |
+
PanelMenuPageView;
|
1369 |
+
|
1370 |
+
PanelMenuPageView = Marionette.CollectionView.extend( {
|
1371 |
+
id: 'elementor-panel-page-menu',
|
1372 |
+
|
1373 |
+
childView: PanelMenuItemView,
|
1374 |
+
|
1375 |
+
initialize: function() {
|
1376 |
+
this.collection = new Backbone.Collection( [
|
1377 |
+
{
|
1378 |
+
icon: 'paint-brush',
|
1379 |
+
title: elementor.translate( 'colors' ),
|
1380 |
+
type: 'page',
|
1381 |
+
pageName: 'colorsScheme'
|
1382 |
+
},
|
1383 |
+
{
|
1384 |
+
icon: 'font',
|
1385 |
+
title: elementor.translate( 'fonts' ),
|
1386 |
+
type: 'page',
|
1387 |
+
pageName: 'typographyScheme'
|
1388 |
+
},
|
1389 |
+
{
|
1390 |
+
icon: 'file-text',
|
1391 |
+
title: elementor.translate( 'page_settings' ) + ' <span>(' + elementor.translate( 'soon' ) + ')</span>'
|
1392 |
+
},
|
1393 |
+
{
|
1394 |
+
icon: 'cog',
|
1395 |
+
title: elementor.translate( 'elementor_settings' ),
|
1396 |
+
type: 'link',
|
1397 |
+
link: elementor.config.settings_page_link
|
1398 |
+
},
|
1399 |
+
{
|
1400 |
+
icon: 'history',
|
1401 |
+
title: elementor.translate( 'revisions_history' ) + ' <span>(' + elementor.translate( 'soon' ) + ')</span>'
|
1402 |
+
},
|
1403 |
+
{
|
1404 |
+
icon: 'info-circle',
|
1405 |
+
title: elementor.translate( 'about_elementor' ),
|
1406 |
+
type: 'link',
|
1407 |
+
link: elementor.config.elementor_site,
|
1408 |
+
newTab: true
|
1409 |
+
}
|
1410 |
+
] );
|
1411 |
+
},
|
1412 |
+
|
1413 |
+
onChildviewClick: function( childView ) {
|
1414 |
+
var menuItemType = childView.model.get( 'type' );
|
1415 |
+
|
1416 |
+
switch ( menuItemType ) {
|
1417 |
+
case 'page' :
|
1418 |
+
var pageName = childView.model.get( 'pageName' ),
|
1419 |
+
pageTitle = childView.model.get( 'title' );
|
1420 |
+
|
1421 |
+
elementor.getPanelView().setPage( pageName, pageTitle );
|
1422 |
+
break;
|
1423 |
+
|
1424 |
+
case 'link' :
|
1425 |
+
var link = childView.model.get( 'link' ),
|
1426 |
+
isNewTab = childView.model.get( 'newTab' );
|
1427 |
+
|
1428 |
+
if ( isNewTab ) {
|
1429 |
+
open( link, '_blank' );
|
1430 |
+
} else {
|
1431 |
+
location.href = childView.model.get( 'link' );
|
1432 |
+
}
|
1433 |
+
|
1434 |
+
break;
|
1435 |
+
}
|
1436 |
+
}
|
1437 |
+
} );
|
1438 |
+
|
1439 |
+
module.exports = PanelMenuPageView;
|
1440 |
+
|
1441 |
+
},{"elementor-panel/pages/menu/views/item":20}],20:[function(require,module,exports){
|
1442 |
+
var PanelMenuItemView;
|
1443 |
+
|
1444 |
+
PanelMenuItemView = Marionette.ItemView.extend( {
|
1445 |
+
template: '#tmpl-elementor-panel-menu-item',
|
1446 |
+
|
1447 |
+
className: 'elementor-panel-menu-item',
|
1448 |
+
|
1449 |
+
triggers: {
|
1450 |
+
click: 'click'
|
1451 |
+
}
|
1452 |
+
} );
|
1453 |
+
|
1454 |
+
module.exports = PanelMenuItemView;
|
1455 |
+
|
1456 |
+
},{}],21:[function(require,module,exports){
|
1457 |
+
var PanelSchemeBaseView;
|
1458 |
+
|
1459 |
+
PanelSchemeBaseView = Marionette.CompositeView.extend( {
|
1460 |
+
id: function() {
|
1461 |
+
return 'elementor-panel-scheme-' + this.getType();
|
1462 |
+
},
|
1463 |
+
|
1464 |
+
className: 'elementor-panel-scheme',
|
1465 |
+
|
1466 |
+
ui: function() {
|
1467 |
+
return {
|
1468 |
+
saveButton: '.elementor-panel-scheme-save .elementor-button',
|
1469 |
+
discardButton: '.elementor-panel-scheme-discard .elementor-button',
|
1470 |
+
resetButton: '.elementor-panel-scheme-reset .elementor-button'
|
1471 |
+
};
|
1472 |
+
},
|
1473 |
+
|
1474 |
+
events: function() {
|
1475 |
+
return {
|
1476 |
+
'click @ui.saveButton': 'saveScheme',
|
1477 |
+
'click @ui.discardButton': 'discardScheme',
|
1478 |
+
'click @ui.resetButton': 'setDefaultScheme'
|
1479 |
+
};
|
1480 |
+
},
|
1481 |
+
|
1482 |
+
childViewContainer: '.elementor-panel-scheme-items',
|
1483 |
+
|
1484 |
+
templateHelpers: function() {
|
1485 |
+
return {
|
1486 |
+
getTitle: _.bind( this.getTitle, this )
|
1487 |
+
};
|
1488 |
+
},
|
1489 |
+
|
1490 |
+
initialize: function() {
|
1491 |
+
this.model = new Backbone.Model();
|
1492 |
+
|
1493 |
+
this.resetScheme();
|
1494 |
+
},
|
1495 |
+
|
1496 |
+
getType: function() {},
|
1497 |
+
|
1498 |
+
getTitle: function() {
|
1499 |
+
return this.getScheme().title;
|
1500 |
+
},
|
1501 |
+
|
1502 |
+
getScheme: function() {
|
1503 |
+
return elementor.schemes.getScheme( this.getType() );
|
1504 |
+
},
|
1505 |
+
|
1506 |
+
changeChildrenUIValues: function( schemeItems ) {
|
1507 |
+
var self = this;
|
1508 |
+
|
1509 |
+
_.each( schemeItems, function( value, key ) {
|
1510 |
+
var model = self.collection.findWhere( { key: key } ),
|
1511 |
+
childView = self.children.findByModelCid( model.cid );
|
1512 |
+
|
1513 |
+
childView.changeUIValue( value );
|
1514 |
+
} );
|
1515 |
+
},
|
1516 |
+
|
1517 |
+
discardScheme: function() {
|
1518 |
+
elementor.schemes.resetSchemes( this.getType() );
|
1519 |
+
|
1520 |
+
this.ui.saveButton.prop( 'disabled', true );
|
1521 |
+
|
1522 |
+
this._renderChildren();
|
1523 |
+
},
|
1524 |
+
|
1525 |
+
setSchemeValue: function( key, value ) {
|
1526 |
+
elementor.schemes.setSchemeValue( this.getType(), key, value );
|
1527 |
+
},
|
1528 |
+
|
1529 |
+
saveScheme: function() {
|
1530 |
+
elementor.schemes.saveScheme( this.getType() );
|
1531 |
+
|
1532 |
+
this.ui.saveButton.prop( 'disabled', true );
|
1533 |
+
|
1534 |
+
this.resetScheme();
|
1535 |
+
|
1536 |
+
this._renderChildren();
|
1537 |
+
},
|
1538 |
+
|
1539 |
+
setDefaultScheme: function() {
|
1540 |
+
var defaultScheme = elementor.config.default_schemes[ this.getType() ].items;
|
1541 |
+
|
1542 |
+
this.changeChildrenUIValues( defaultScheme );
|
1543 |
+
},
|
1544 |
+
|
1545 |
+
resetItems: function() {
|
1546 |
+
this.model.set( 'items', this.getScheme().items );
|
1547 |
+
},
|
1548 |
+
|
1549 |
+
resetCollection: function() {
|
1550 |
+
var items = this.model.get( 'items' );
|
1551 |
+
|
1552 |
+
this.collection = new Backbone.Collection();
|
1553 |
+
|
1554 |
+
_.each( items, _.bind( function( item, key ) {
|
1555 |
+
item.type = this.getType();
|
1556 |
+
item.key = key;
|
1557 |
+
|
1558 |
+
this.collection.add( item );
|
1559 |
+
}, this ) );
|
1560 |
+
},
|
1561 |
+
|
1562 |
+
resetScheme: function() {
|
1563 |
+
this.resetItems();
|
1564 |
+
this.resetCollection();
|
1565 |
+
},
|
1566 |
+
|
1567 |
+
onChildviewValueChange: function( childView, newValue ) {
|
1568 |
+
this.ui.saveButton.removeProp( 'disabled' );
|
1569 |
+
|
1570 |
+
this.setSchemeValue( childView.model.get( 'key' ), newValue );
|
1571 |
+
}
|
1572 |
+
} );
|
1573 |
+
|
1574 |
+
module.exports = PanelSchemeBaseView;
|
1575 |
+
|
1576 |
+
},{}],22:[function(require,module,exports){
|
1577 |
+
var PanelSchemeBaseView = require( 'elementor-panel/pages/schemes/base' ),
|
1578 |
+
PanelSchemeColorsView;
|
1579 |
+
|
1580 |
+
PanelSchemeColorsView = PanelSchemeBaseView.extend( {
|
1581 |
+
template: '#tmpl-elementor-panel-schemes-colors',
|
1582 |
+
|
1583 |
+
ui: function() {
|
1584 |
+
var ui = PanelSchemeBaseView.prototype.ui.apply( this, arguments );
|
1585 |
+
|
1586 |
+
ui.systemSchemes = '.elementor-panel-scheme-color-system-scheme';
|
1587 |
+
|
1588 |
+
return ui;
|
1589 |
+
},
|
1590 |
+
|
1591 |
+
events: function() {
|
1592 |
+
var events = PanelSchemeBaseView.prototype.events.apply( this, arguments );
|
1593 |
+
|
1594 |
+
events[ 'click @ui.systemSchemes' ] = 'onSystemSchemeClick';
|
1595 |
+
|
1596 |
+
return events;
|
1597 |
+
},
|
1598 |
+
|
1599 |
+
getChildView: function() {
|
1600 |
+
return require( 'elementor-panel/pages/schemes/items/color' );
|
1601 |
+
},
|
1602 |
+
|
1603 |
+
getType: function() {
|
1604 |
+
return 'color';
|
1605 |
+
},
|
1606 |
+
|
1607 |
+
onSystemSchemeClick: function( event ) {
|
1608 |
+
var $schemeClicked = Backbone.$( event.currentTarget ),
|
1609 |
+
schemeName = $schemeClicked.data( 'schemeName' ),
|
1610 |
+
scheme = elementor.config.system_schemes.color[ schemeName ].items;
|
1611 |
+
|
1612 |
+
this.changeChildrenUIValues( scheme );
|
1613 |
+
}
|
1614 |
+
} );
|
1615 |
+
|
1616 |
+
module.exports = PanelSchemeColorsView;
|
1617 |
+
|
1618 |
+
},{"elementor-panel/pages/schemes/base":21,"elementor-panel/pages/schemes/items/color":24}],23:[function(require,module,exports){
|
1619 |
+
var PanelSchemeItemView;
|
1620 |
+
|
1621 |
+
PanelSchemeItemView = Marionette.ItemView.extend( {
|
1622 |
+
getTemplate: function() {
|
1623 |
+
return Marionette.TemplateCache.get( '#tmpl-elementor-panel-scheme-' + this.model.get( 'type' ) + '-item' );
|
1624 |
+
},
|
1625 |
+
|
1626 |
+
className: function() {
|
1627 |
+
return 'elementor-panel-scheme-item';
|
1628 |
+
}
|
1629 |
+
} );
|
1630 |
+
|
1631 |
+
module.exports = PanelSchemeItemView;
|
1632 |
+
|
1633 |
+
},{}],24:[function(require,module,exports){
|
1634 |
+
var PanelSchemeItemView = require( 'elementor-panel/pages/schemes/items/base' ),
|
1635 |
+
PanelSchemeColorView;
|
1636 |
+
|
1637 |
+
PanelSchemeColorView = PanelSchemeItemView.extend( {
|
1638 |
+
ui: {
|
1639 |
+
input: '.elementor-panel-scheme-color-value'
|
1640 |
+
},
|
1641 |
+
|
1642 |
+
changeUIValue: function( newValue ) {
|
1643 |
+
this.ui.input.wpColorPicker( 'color', newValue );
|
1644 |
+
},
|
1645 |
+
|
1646 |
+
onBeforeDestroy: function() {
|
1647 |
+
if ( this.ui.input.wpColorPicker( 'instance' ) ) {
|
1648 |
+
this.ui.input.wpColorPicker( 'close' );
|
1649 |
+
}
|
1650 |
+
},
|
1651 |
+
|
1652 |
+
onRender: function() {
|
1653 |
+
this.ui.input.wpColorPicker( {
|
1654 |
+
change: _.bind( function( event, ui ) {
|
1655 |
+
this.triggerMethod( 'value:change', ui.color.toString() );
|
1656 |
+
}, this )
|
1657 |
+
} );
|
1658 |
+
}
|
1659 |
+
} );
|
1660 |
+
|
1661 |
+
module.exports = PanelSchemeColorView;
|
1662 |
+
|
1663 |
+
},{"elementor-panel/pages/schemes/items/base":23}],25:[function(require,module,exports){
|
1664 |
+
var PanelSchemeItemView = require( 'elementor-panel/pages/schemes/items/base' ),
|
1665 |
+
PanelSchemeTypographyView;
|
1666 |
+
|
1667 |
+
PanelSchemeTypographyView = PanelSchemeItemView.extend( {
|
1668 |
+
className: function() {
|
1669 |
+
var classes = PanelSchemeItemView.prototype.className.apply( this, arguments );
|
1670 |
+
|
1671 |
+
return classes + ' elementor-panel-box';
|
1672 |
+
},
|
1673 |
+
|
1674 |
+
ui: {
|
1675 |
+
heading: '.elementor-panel-heading',
|
1676 |
+
allFields: '.elementor-panel-scheme-typography-item-field',
|
1677 |
+
inputFields: 'input.elementor-panel-scheme-typography-item-field',
|
1678 |
+
selectFields: 'select.elementor-panel-scheme-typography-item-field',
|
1679 |
+
selectFamilyFields: 'select.elementor-panel-scheme-typography-item-field[name="font_family"]'
|
1680 |
+
},
|
1681 |
+
|
1682 |
+
events: {
|
1683 |
+
'input @ui.inputFields': 'onFieldChange',
|
1684 |
+
'change @ui.selectFields': 'onFieldChange',
|
1685 |
+
'click @ui.heading': 'toggleVisibility'
|
1686 |
+
},
|
1687 |
+
|
1688 |
+
onRender: function() {
|
1689 |
+
var self = this;
|
1690 |
+
|
1691 |
+
this.ui.inputFields.add( this.ui.selectFields ).each( function() {
|
1692 |
+
var $this = Backbone.$( this ),
|
1693 |
+
name = $this.attr( 'name' ),
|
1694 |
+
value = self.model.get( 'value' )[ name ];
|
1695 |
+
|
1696 |
+
$this.val( value );
|
1697 |
+
} );
|
1698 |
+
|
1699 |
+
this.ui.selectFamilyFields.select2( {
|
1700 |
+
dir: elementor.config.is_rtl ? 'rtl' : 'ltr'
|
1701 |
+
} );
|
1702 |
+
},
|
1703 |
+
|
1704 |
+
toggleVisibility: function() {
|
1705 |
+
this.ui.heading.toggleClass( 'elementor-open' );
|
1706 |
+
},
|
1707 |
+
|
1708 |
+
changeUIValue: function( newValue ) {
|
1709 |
+
this.ui.allFields.each( function() {
|
1710 |
+
var $this = Backbone.$( this ),
|
1711 |
+
thisName = $this.attr( 'name' ),
|
1712 |
+
newFieldValue = newValue[ thisName ];
|
1713 |
+
|
1714 |
+
$this.val( newFieldValue ).trigger( 'change' );
|
1715 |
+
} );
|
1716 |
+
},
|
1717 |
+
|
1718 |
+
onFieldChange: function( event ) {
|
1719 |
+
var $select = this.$( event.currentTarget ),
|
1720 |
+
currentValue = elementor.helpers.cloneObject( this.model.get( 'value' ) ),
|
1721 |
+
fieldKey = $select.attr( 'name' );
|
1722 |
+
|
1723 |
+
currentValue[ fieldKey ] = $select.val();
|
1724 |
+
|
1725 |
+
if ( 'font_family' === fieldKey && ! _.isEmpty( currentValue[ fieldKey ] ) ) {
|
1726 |
+
elementor.helpers.enqueueFont( currentValue[ fieldKey ] );
|
1727 |
+
}
|
1728 |
+
|
1729 |
+
this.triggerMethod( 'value:change', currentValue );
|
1730 |
+
}
|
1731 |
+
} );
|
1732 |
+
|
1733 |
+
module.exports = PanelSchemeTypographyView;
|
1734 |
+
|
1735 |
+
},{"elementor-panel/pages/schemes/items/base":23}],26:[function(require,module,exports){
|
1736 |
+
var PanelSchemeBaseView = require( 'elementor-panel/pages/schemes/base' ),
|
1737 |
+
PanelSchemeTypographyView;
|
1738 |
+
|
1739 |
+
PanelSchemeTypographyView = PanelSchemeBaseView.extend( {
|
1740 |
+
template: '#tmpl-elementor-panel-schemes-typography',
|
1741 |
+
|
1742 |
+
getChildView: function() {
|
1743 |
+
return require( 'elementor-panel/pages/schemes/items/typography' );
|
1744 |
+
},
|
1745 |
+
|
1746 |
+
getType: function() {
|
1747 |
+
return 'typography';
|
1748 |
+
}
|
1749 |
+
} );
|
1750 |
+
|
1751 |
+
module.exports = PanelSchemeTypographyView;
|
1752 |
+
|
1753 |
+
},{"elementor-panel/pages/schemes/base":21,"elementor-panel/pages/schemes/items/typography":25}],27:[function(require,module,exports){
|
1754 |
+
var EditModeItemView = require( 'elementor-layouts/edit-mode' ),
|
1755 |
+
PanelLayoutView;
|
1756 |
+
|
1757 |
+
PanelLayoutView = Marionette.LayoutView.extend( {
|
1758 |
+
template: '#tmpl-elementor-panel',
|
1759 |
+
|
1760 |
+
className: 'elementor-panel-inner',
|
1761 |
+
|
1762 |
+
regions: {
|
1763 |
+
content: '#elementor-panel-content-wrapper',
|
1764 |
+
header: '#elementor-panel-header-wrapper',
|
1765 |
+
footer: '#elementor-panel-footer',
|
1766 |
+
modeSwitcher: '#elementor-mode-switcher'
|
1767 |
+
},
|
1768 |
+
|
1769 |
+
pages: {
|
1770 |
+
elements: {
|
1771 |
+
view: require( 'elementor-panel/pages/elements/elements' ),
|
1772 |
+
title: elementor.translate( 'elementor' )
|
1773 |
+
},
|
1774 |
+
editor: {
|
1775 |
+
view: require( 'elementor-panel/pages/editor' )
|
1776 |
+
},
|
1777 |
+
menu: {
|
1778 |
+
view: require( 'elementor-panel/pages/menu/menu' ),
|
1779 |
+
title: elementor.translate( 'elementor' )
|
1780 |
+
},
|
1781 |
+
colorsScheme: {
|
1782 |
+
view: require( 'elementor-panel/pages/schemes/colors' )
|
1783 |
+
},
|
1784 |
+
typographyScheme: {
|
1785 |
+
view: require( 'elementor-panel/pages/schemes/typography' )
|
1786 |
+
}
|
1787 |
+
},
|
1788 |
+
|
1789 |
+
childEvents: {
|
1790 |
+
'click:add': function() {
|
1791 |
+
this.setPage( 'elements' );
|
1792 |
+
},
|
1793 |
+
'editor:destroy': function() {
|
1794 |
+
this.setPage( 'elements' );
|
1795 |
+
}
|
1796 |
+
},
|
1797 |
+
|
1798 |
+
currentPageName: null,
|
1799 |
+
|
1800 |
+
_isScrollbarInitialized: false,
|
1801 |
+
|
1802 |
+
getHeaderView: function() {
|
1803 |
+
return this.getChildView( 'header' );
|
1804 |
+
},
|
1805 |
+
|
1806 |
+
getCurrentPageName: function() {
|
1807 |
+
return this.currentPageName;
|
1808 |
+
},
|
1809 |
+
|
1810 |
+
getCurrentPageView: function() {
|
1811 |
+
return this.getChildView( 'content' );
|
1812 |
+
},
|
1813 |
+
|
1814 |
+
setPage: function( page, title, viewOptions ) {
|
1815 |
+
var pageData = this.pages[ page ];
|
1816 |
+
|
1817 |
+
if ( ! pageData ) {
|
1818 |
+
throw new ReferenceError( 'Elementor panel doesn\'t have page named \'' + page + '\'' );
|
1819 |
+
}
|
1820 |
+
|
1821 |
+
this.showChildView( 'content', new pageData.view( viewOptions ) );
|
1822 |
+
|
1823 |
+
this.getHeaderView().setTitle( title || pageData.title );
|
1824 |
+
|
1825 |
+
this.currentPageName = page;
|
1826 |
+
},
|
1827 |
+
|
1828 |
+
onBeforeShow: function() {
|
1829 |
+
elementor.filterState.reply( 'get', { type: 'parent', term: '' } );
|
1830 |
+
|
1831 |
+
var PanelFooterItemView = require( 'elementor-layouts/panel/footer' ),
|
1832 |
+
PanelHeaderItemView = require( 'elementor-layouts/panel/header' );
|
1833 |
+
|
1834 |
+
// Edit Mode
|
1835 |
+
this.showChildView( 'modeSwitcher', new EditModeItemView() );
|
1836 |
+
|
1837 |
+
// Header
|
1838 |
+
this.showChildView( 'header', new PanelHeaderItemView() );
|
1839 |
+
|
1840 |
+
// Footer
|
1841 |
+
this.showChildView( 'footer', new PanelFooterItemView() );
|
1842 |
+
|
1843 |
+
// Added Editor events
|
1844 |
+
this.updateScrollbar = _.throttle( this.updateScrollbar, 100 );
|
1845 |
+
|
1846 |
+
this.getRegion( 'content' )
|
1847 |
+
.on( 'before:show', _.bind( this.onEditorBeforeShow, this ) )
|
1848 |
+
.on( 'empty', _.bind( this.onEditorEmpty, this ) )
|
1849 |
+
.on( 'show', _.bind( this.updateScrollbar, this ) );
|
1850 |
+
|
1851 |
+
// Set default page to elements
|
1852 |
+
this.setPage( 'elements' );
|
1853 |
+
|
1854 |
+
this.listenTo( elementor.data, 'scrollbar:update', this.updateScrollbar );
|
1855 |
+
},
|
1856 |
+
|
1857 |
+
onEditorBeforeShow: function( view, region, options ) {
|
1858 |
+
_.defer( this.updateScrollbar );
|
1859 |
+
},
|
1860 |
+
|
1861 |
+
onEditorEmpty: function( oldView ) {
|
1862 |
+
this.updateScrollbar();
|
1863 |
+
},
|
1864 |
+
|
1865 |
+
updateScrollbar: function() {
|
1866 |
+
var $panel = Backbone.$( '#elementor-panel-content-wrapper' );
|
1867 |
+
if ( ! this._isScrollbarInitialized ) {
|
1868 |
+
$panel.perfectScrollbar();
|
1869 |
+
this._isScrollbarInitialized = true;
|
1870 |
+
|
1871 |
+
return;
|
1872 |
+
}
|
1873 |
+
|
1874 |
+
$panel.perfectScrollbar( 'update' );
|
1875 |
+
}
|
1876 |
+
} );
|
1877 |
+
|
1878 |
+
module.exports = PanelLayoutView;
|
1879 |
+
|
1880 |
+
},{"elementor-layouts/edit-mode":9,"elementor-layouts/panel/footer":10,"elementor-layouts/panel/header":11,"elementor-panel/pages/editor":12,"elementor-panel/pages/elements/elements":14,"elementor-panel/pages/menu/menu":19,"elementor-panel/pages/schemes/colors":22,"elementor-panel/pages/schemes/typography":26}],28:[function(require,module,exports){
|
1881 |
+
var BaseSettingsModel;
|
1882 |
+
|
1883 |
+
BaseSettingsModel = Backbone.Model.extend( {
|
1884 |
+
|
1885 |
+
initialize: function( data ) {
|
1886 |
+
this.controls = elementor.getElementControls( this );
|
1887 |
+
if ( ! this.controls ) {
|
1888 |
+
return;
|
1889 |
+
}
|
1890 |
+
|
1891 |
+
var attrs = data || {},
|
1892 |
+
defaults = {};
|
1893 |
+
|
1894 |
+
_.each( this.controls, function( field ) {
|
1895 |
+
var control = elementor.config.controls[ field.type ];
|
1896 |
+
|
1897 |
+
if ( _.isObject( control.default_value ) ) {
|
1898 |
+
defaults[ field.name ] = _.extend( {}, control.default_value, field['default'] || {} );
|
1899 |
+
} else {
|
1900 |
+
defaults[ field.name ] = field['default'] || control.default_value;
|
1901 |
+
}
|
1902 |
+
} );
|
1903 |
+
|
1904 |
+
this.defaults = defaults;
|
1905 |
+
|
1906 |
+
// TODO: Change method to recursive
|
1907 |
+
attrs = _.defaults( {}, attrs, defaults );
|
1908 |
+
|
1909 |
+
_.each( this.controls, function( field ) {
|
1910 |
+
if ( 'repeater' === field.type ) {
|
1911 |
+
attrs[ field.name ] = new Backbone.Collection( attrs[ field.name ], {
|
1912 |
+
model: BaseSettingsModel
|
1913 |
+
} );
|
1914 |
+
}
|
1915 |
+
} );
|
1916 |
+
|
1917 |
+
this.set( attrs );
|
1918 |
+
},
|
1919 |
+
|
1920 |
+
getFontControls: function() {
|
1921 |
+
return _.filter( this.controls, _.bind( function( control ) {
|
1922 |
+
return 'font' === control.type;
|
1923 |
+
}, this ) );
|
1924 |
+
},
|
1925 |
+
|
1926 |
+
getStyleControls: function() {
|
1927 |
+
return _.filter( this.controls, _.bind( function( control ) {
|
1928 |
+
return this.isStyleControl( control.name );
|
1929 |
+
}, this ) );
|
1930 |
+
},
|
1931 |
+
|
1932 |
+
isStyleControl: function( attribute ) {
|
1933 |
+
var currentControl = _.find( this.controls, function( control ) {
|
1934 |
+
return attribute === control.name;
|
1935 |
+
} );
|
1936 |
+
|
1937 |
+
if ( _.isUndefined( currentControl ) ) {
|
1938 |
+
return false;
|
1939 |
+
}
|
1940 |
+
|
1941 |
+
return ! _.isEmpty( currentControl.selectors );
|
1942 |
+
},
|
1943 |
+
|
1944 |
+
getClassControls: function() {
|
1945 |
+
return _.filter( this.controls, _.bind( function( control ) {
|
1946 |
+
return this.isClassControl( control.name );
|
1947 |
+
}, this ) );
|
1948 |
+
},
|
1949 |
+
|
1950 |
+
isClassControl: function( attribute ) {
|
1951 |
+
var currentControl = _.find( this.controls, function( control ) {
|
1952 |
+
return attribute === control.name;
|
1953 |
+
} );
|
1954 |
+
|
1955 |
+
return currentControl && ! _.isUndefined( currentControl.prefix_class );
|
1956 |
+
},
|
1957 |
+
|
1958 |
+
getControl: function( id ) {
|
1959 |
+
return _.find( this.controls, function( control ) {
|
1960 |
+
return id === control.name;
|
1961 |
+
} );
|
1962 |
+
},
|
1963 |
+
|
1964 |
+
clone: function() {
|
1965 |
+
return new BaseSettingsModel( elementor.helpers.cloneObject( this.attributes ) );
|
1966 |
+
},
|
1967 |
+
|
1968 |
+
toJSON: function() {
|
1969 |
+
var data = Backbone.Model.prototype.toJSON.call( this );
|
1970 |
+
|
1971 |
+
delete data.widgetType;
|
1972 |
+
delete data.elType;
|
1973 |
+
|
1974 |
+
_.each( data, function( attribute, key ) {
|
1975 |
+
if ( attribute && attribute.toJSON ) {
|
1976 |
+
data[ key ] = attribute.toJSON();
|
1977 |
+
}
|
1978 |
+
} );
|
1979 |
+
|
1980 |
+
return data;
|
1981 |
+
}
|
1982 |
+
} );
|
1983 |
+
|
1984 |
+
module.exports = BaseSettingsModel;
|
1985 |
+
|
1986 |
+
},{}],29:[function(require,module,exports){
|
1987 |
+
var BaseSettingsModel = require( 'elementor-models/base-settings' ),
|
1988 |
+
ColumnSettingsModel;
|
1989 |
+
|
1990 |
+
ColumnSettingsModel = BaseSettingsModel.extend( {
|
1991 |
+
defaults: {
|
1992 |
+
_inline_size: '',
|
1993 |
+
_column_size: 100
|
1994 |
+
}
|
1995 |
+
} );
|
1996 |
+
|
1997 |
+
module.exports = ColumnSettingsModel;
|
1998 |
+
|
1999 |
+
},{"elementor-models/base-settings":28}],30:[function(require,module,exports){
|
2000 |
+
var BaseSettingsModel = require( 'elementor-models/base-settings' ),
|
2001 |
+
WidgetSettingsModel = require( 'elementor-models/widget-settings' ),
|
2002 |
+
ColumnSettingsModel = require( 'elementor-models/column-settings' ),
|
2003 |
+
RowSettingsModel = require( 'elementor-models/row-settings' ),
|
2004 |
+
SectionSettingsModel = require( 'elementor-models/section-settings' ),
|
2005 |
+
|
2006 |
+
ElementModel,
|
2007 |
+
ElementCollection;
|
2008 |
+
|
2009 |
+
ElementModel = Backbone.Model.extend( {
|
2010 |
+
defaults: {
|
2011 |
+
id: '',
|
2012 |
+
elType: '',
|
2013 |
+
isInner: false,
|
2014 |
+
settings: {},
|
2015 |
+
defaultEditSettings: {}
|
2016 |
+
},
|
2017 |
+
|
2018 |
+
remoteRender: false,
|
2019 |
+
_htmlCache: null,
|
2020 |
+
_jqueryXhr: null,
|
2021 |
+
|
2022 |
+
initialize: function( options ) {
|
2023 |
+
var elements = this.get( 'elements' ),
|
2024 |
+
elType = this.get( 'elType' ),
|
2025 |
+
settings;
|
2026 |
+
|
2027 |
+
var settingModels = {
|
2028 |
+
widget: WidgetSettingsModel,
|
2029 |
+
column: ColumnSettingsModel,
|
2030 |
+
row: RowSettingsModel,
|
2031 |
+
section: SectionSettingsModel
|
2032 |
+
};
|
2033 |
+
|
2034 |
+
var SettingsModel = settingModels[ elType ] || BaseSettingsModel;
|
2035 |
+
|
2036 |
+
settings = this.get( 'settings' );
|
2037 |
+
if ( 'widget' === elType ) {
|
2038 |
+
settings.widgetType = this.get( 'widgetType' );
|
2039 |
+
}
|
2040 |
+
settings.elType = elType;
|
2041 |
+
|
2042 |
+
settings = new SettingsModel( settings );
|
2043 |
+
this.set( 'settings', settings );
|
2044 |
+
|
2045 |
+
this.initEditSettings();
|
2046 |
+
|
2047 |
+
if ( undefined !== elements ) {
|
2048 |
+
this.set( 'elements', new ElementCollection( elements ) );
|
2049 |
+
}
|
2050 |
+
|
2051 |
+
if ( 'widget' === this.get( 'elType' ) ) {
|
2052 |
+
this.remoteRender = true;
|
2053 |
+
this.setHtmlCache( options.htmlCache || '' );
|
2054 |
+
}
|
2055 |
+
|
2056 |
+
// No need this variable anymore
|
2057 |
+
delete options.htmlCache;
|
2058 |
+
|
2059 |
+
// Make call to remote server as throttle function
|
2060 |
+
this.renderRemoteServer = _.throttle( this.renderRemoteServer, 1000 );
|
2061 |
+
|
2062 |
+
this.on( 'destroy', this.onDestroy );
|
2063 |
+
this.on( 'editor:close', this.onCloseEditor );
|
2064 |
+
},
|
2065 |
+
|
2066 |
+
initEditSettings: function() {
|
2067 |
+
this.set( 'editSettings', new Backbone.Model( this.get( 'defaultEditSettings' ) ) );
|
2068 |
+
},
|
2069 |
+
|
2070 |
+
onDestroy: function() {
|
2071 |
+
// Clean the memory for all use instances
|
2072 |
+
var settings = this.get( 'settings' ),
|
2073 |
+
elements = this.get( 'elements' );
|
2074 |
+
|
2075 |
+
if ( undefined !== elements ) {
|
2076 |
+
_.each( _.clone( elements.models ), function( model ) {
|
2077 |
+
model.destroy();
|
2078 |
+
} );
|
2079 |
+
}
|
2080 |
+
settings.destroy();
|
2081 |
+
},
|
2082 |
+
|
2083 |
+
onCloseEditor: function() {
|
2084 |
+
this.initEditSettings();
|
2085 |
+
this.renderRemoteServer();
|
2086 |
+
},
|
2087 |
+
|
2088 |
+
setSetting: function( key, value, triggerChange ) {
|
2089 |
+
triggerChange = triggerChange || false;
|
2090 |
+
|
2091 |
+
var settings = this.get( 'settings' );
|
2092 |
+
|
2093 |
+
settings.set( key, value );
|
2094 |
+
|
2095 |
+
this.set( 'settings', settings );
|
2096 |
+
|
2097 |
+
if ( triggerChange ) {
|
2098 |
+
this.trigger( 'change', this );
|
2099 |
+
this.trigger( 'change:settings', this );
|
2100 |
+
this.trigger( 'change:settings:' + key, this );
|
2101 |
+
}
|
2102 |
+
},
|
2103 |
+
|
2104 |
+
getSetting: function( key ) {
|
2105 |
+
var settings = this.get( 'settings' );
|
2106 |
+
|
2107 |
+
if ( undefined === settings.get( key ) ) {
|
2108 |
+
return '';
|
2109 |
+
}
|
2110 |
+
|
2111 |
+
return settings.get( key );
|
2112 |
+
},
|
2113 |
+
|
2114 |
+
setHtmlCache: function( htmlCache ) {
|
2115 |
+
this._htmlCache = htmlCache;
|
2116 |
+
},
|
2117 |
+
|
2118 |
+
getHtmlCache: function() {
|
2119 |
+
return this._htmlCache;
|
2120 |
+
},
|
2121 |
+
|
2122 |
+
getTitle: function() {
|
2123 |
+
var elementData = elementor.getElementData( this );
|
2124 |
+
|
2125 |
+
return ( elementData ) ? elementData.title : 'Unknown';
|
2126 |
+
},
|
2127 |
+
|
2128 |
+
getIcon: function() {
|
2129 |
+
var elementData = elementor.getElementData( this );
|
2130 |
+
|
2131 |
+
return ( elementData ) ? elementData.icon : 'unknown';
|
2132 |
+
},
|
2133 |
+
|
2134 |
+
renderRemoteServer: function() {
|
2135 |
+
if ( ! this.remoteRender ) {
|
2136 |
+
return;
|
2137 |
+
}
|
2138 |
+
|
2139 |
+
this.trigger( 'before:remote:render' );
|
2140 |
+
|
2141 |
+
if ( this._jqueryXhr && 4 !== this._jqueryXhr ) {
|
2142 |
+
this._jqueryXhr.abort();
|
2143 |
+
}
|
2144 |
+
|
2145 |
+
var data = this.toJSON();
|
2146 |
+
|
2147 |
+
this._jqueryXhr = Backbone.$.ajax( {
|
2148 |
+
type: 'POST',
|
2149 |
+
url: elementor.config.ajaxurl,
|
2150 |
+
data: {
|
2151 |
+
action: 'elementor_render_widget',
|
2152 |
+
post_id: elementor.config.post_id,
|
2153 |
+
data: JSON.stringify( data )
|
2154 |
+
},
|
2155 |
+
dataType: 'json'
|
2156 |
+
} )
|
2157 |
+
|
2158 |
+
.done( _.bind( this.onRemoteGetHtml, this ) );
|
2159 |
+
},
|
2160 |
+
|
2161 |
+
onRemoteGetHtml: function( data ) {
|
2162 |
+
this.setHtmlCache( data.data.render );
|
2163 |
+
this.trigger( 'remote:render' );
|
2164 |
+
},
|
2165 |
+
|
2166 |
+
clone: function() {
|
2167 |
+
var newModel = Backbone.Model.prototype.clone.apply( this, arguments );
|
2168 |
+
newModel.set( 'id', elementor.helpers.getUniqueID() );
|
2169 |
+
|
2170 |
+
newModel.setHtmlCache( this.getHtmlCache() );
|
2171 |
+
|
2172 |
+
var elements = this.get( 'elements' ),
|
2173 |
+
settings = this.get( 'settings' );
|
2174 |
+
|
2175 |
+
if ( ! _.isEmpty( elements ) ) {
|
2176 |
+
newModel.set( 'elements', elements.clone() );
|
2177 |
+
}
|
2178 |
+
|
2179 |
+
newModel.set( 'settings', settings.clone() );
|
2180 |
+
|
2181 |
+
return newModel;
|
2182 |
+
},
|
2183 |
+
|
2184 |
+
toJSON: function( options ) {
|
2185 |
+
options = _.extend( { copyHtmlCache: false }, options );
|
2186 |
+
|
2187 |
+
// Call parent's toJSON method
|
2188 |
+
var data = Backbone.Model.prototype.toJSON.call( this );
|
2189 |
+
|
2190 |
+
_.each( data, function( attribute, key ) {
|
2191 |
+
if ( attribute && attribute.toJSON ) {
|
2192 |
+
data[ key ] = attribute.toJSON( options );
|
2193 |
+
}
|
2194 |
+
} );
|
2195 |
+
|
2196 |
+
if ( options.copyHtmlCache ) {
|
2197 |
+
data.htmlCache = this.getHtmlCache();
|
2198 |
+
} else {
|
2199 |
+
delete data.htmlCache;
|
2200 |
+
}
|
2201 |
+
|
2202 |
+
return data;
|
2203 |
+
}
|
2204 |
+
|
2205 |
+
} );
|
2206 |
+
|
2207 |
+
ElementCollection = Backbone.Collection.extend( {
|
2208 |
+
add: function( models, options, isCorrectSet ) {
|
2209 |
+
if ( ( ! options || ! options.silent ) && ! isCorrectSet ) {
|
2210 |
+
throw 'Call Error: Adding model to element collection is allowed only by the dedicated addChildModel() method.';
|
2211 |
+
}
|
2212 |
+
|
2213 |
+
return Backbone.Collection.prototype.add.call( this, models, options );
|
2214 |
+
},
|
2215 |
+
|
2216 |
+
model: function( attrs, options ) {
|
2217 |
+
if ( attrs.elType ) {
|
2218 |
+
return new ElementModel( attrs, options );
|
2219 |
+
}
|
2220 |
+
return new Backbone.Model( attrs, options );
|
2221 |
+
},
|
2222 |
+
|
2223 |
+
clone: function() {
|
2224 |
+
var tempCollection = Backbone.Collection.prototype.clone.apply( this, arguments ),
|
2225 |
+
newCollection = new ElementCollection();
|
2226 |
+
|
2227 |
+
tempCollection.forEach( function( model ) {
|
2228 |
+
newCollection.add( model.clone(), null, true );
|
2229 |
+
} );
|
2230 |
+
|
2231 |
+
return newCollection;
|
2232 |
+
}
|
2233 |
+
} );
|
2234 |
+
|
2235 |
+
ElementCollection.prototype.sync = function() {
|
2236 |
+
return null;
|
2237 |
+
};
|
2238 |
+
ElementCollection.prototype.fetch = function() {
|
2239 |
+
return null;
|
2240 |
+
};
|
2241 |
+
ElementCollection.prototype.save = function() {
|
2242 |
+
return null;
|
2243 |
+
};
|
2244 |
+
|
2245 |
+
ElementModel.prototype.sync = function() {
|
2246 |
+
return null;
|
2247 |
+
};
|
2248 |
+
ElementModel.prototype.fetch = function() {
|
2249 |
+
return null;
|
2250 |
+
};
|
2251 |
+
ElementModel.prototype.save = function() {
|
2252 |
+
return null;
|
2253 |
+
};
|
2254 |
+
|
2255 |
+
module.exports = {
|
2256 |
+
Model: ElementModel,
|
2257 |
+
Collection: ElementCollection
|
2258 |
+
};
|
2259 |
+
|
2260 |
+
},{"elementor-models/base-settings":28,"elementor-models/column-settings":29,"elementor-models/row-settings":31,"elementor-models/section-settings":32,"elementor-models/widget-settings":33}],31:[function(require,module,exports){
|
2261 |
+
var BaseSettingsModel = require( 'elementor-models/base-settings' ),
|
2262 |
+
RowSettingsModel;
|
2263 |
+
|
2264 |
+
RowSettingsModel = BaseSettingsModel.extend( {
|
2265 |
+
defaults: {}
|
2266 |
+
} );
|
2267 |
+
|
2268 |
+
module.exports = RowSettingsModel;
|
2269 |
+
},{"elementor-models/base-settings":28}],32:[function(require,module,exports){
|
2270 |
+
var BaseSettingsModel = require( 'elementor-models/base-settings' ),
|
2271 |
+
SectionSettingsModel;
|
2272 |
+
|
2273 |
+
SectionSettingsModel = BaseSettingsModel.extend( {
|
2274 |
+
defaults: {}
|
2275 |
+
} );
|
2276 |
+
|
2277 |
+
module.exports = SectionSettingsModel;
|
2278 |
+
},{"elementor-models/base-settings":28}],33:[function(require,module,exports){
|
2279 |
+
var BaseSettingsModel = require( 'elementor-models/base-settings' ),
|
2280 |
+
WidgetSettingsModel;
|
2281 |
+
|
2282 |
+
WidgetSettingsModel = BaseSettingsModel.extend( {
|
2283 |
+
|
2284 |
+
} );
|
2285 |
+
|
2286 |
+
module.exports = WidgetSettingsModel;
|
2287 |
+
},{"elementor-models/base-settings":28}],34:[function(require,module,exports){
|
2288 |
+
var heartbeat;
|
2289 |
+
|
2290 |
+
heartbeat = {
|
2291 |
+
|
2292 |
+
init: function() {
|
2293 |
+
var modal;
|
2294 |
+
|
2295 |
+
this.getModal = function() {
|
2296 |
+
if ( ! modal ) {
|
2297 |
+
modal = this.initModal();
|
2298 |
+
}
|
2299 |
+
|
2300 |
+
return modal;
|
2301 |
+
};
|
2302 |
+
|
2303 |
+
Backbone.$( document ).on( {
|
2304 |
+
'heartbeat-send': function( event, data ) {
|
2305 |
+
data.elementor_post_lock = {
|
2306 |
+
post_ID: elementor.config.post_id
|
2307 |
+
};
|
2308 |
+
},
|
2309 |
+
'heartbeat-tick': function( event, response ) {
|
2310 |
+
if ( response.locked_user ) {
|
2311 |
+
heartbeat.showLockMessage( response.locked_user );
|
2312 |
+
} else {
|
2313 |
+
heartbeat.getModal().hide();
|
2314 |
+
}
|
2315 |
+
}
|
2316 |
+
} );
|
2317 |
+
|
2318 |
+
if ( elementor.config.locked_user ) {
|
2319 |
+
heartbeat.showLockMessage( elementor.config.locked_user );
|
2320 |
+
}
|
2321 |
+
},
|
2322 |
+
|
2323 |
+
initModal: function() {
|
2324 |
+
var modal = elementor.dialogsManager.createWidget( 'options', {
|
2325 |
+
headerMessage: elementor.translate( 'take_over' )
|
2326 |
+
} );
|
2327 |
+
|
2328 |
+
modal.addButton( {
|
2329 |
+
name: 'go_back',
|
2330 |
+
text: elementor.translate( 'go_back' ),
|
2331 |
+
callback: function() {
|
2332 |
+
parent.history.go( -1 );
|
2333 |
+
}
|
2334 |
+
} );
|
2335 |
+
|
2336 |
+
modal.addButton( {
|
2337 |
+
name: 'take_over',
|
2338 |
+
text: elementor.translate( 'take_over' ),
|
2339 |
+
callback: function() {
|
2340 |
+
wp.heartbeat.enqueue( 'elementor_force_post_lock', true );
|
2341 |
+
wp.heartbeat.connectNow();
|
2342 |
+
}
|
2343 |
+
} );
|
2344 |
+
|
2345 |
+
return modal;
|
2346 |
+
},
|
2347 |
+
|
2348 |
+
showLockMessage: function( lockedUser ) {
|
2349 |
+
var modal = heartbeat.getModal();
|
2350 |
+
|
2351 |
+
modal
|
2352 |
+
.setMessage( elementor.translate( 'dialog_user_taken_over', [ lockedUser ] ) )
|
2353 |
+
.show();
|
2354 |
+
}
|
2355 |
+
};
|
2356 |
+
|
2357 |
+
module.exports = heartbeat;
|
2358 |
+
|
2359 |
+
},{}],35:[function(require,module,exports){
|
2360 |
+
var helpers;
|
2361 |
+
|
2362 |
+
helpers = {
|
2363 |
+
_enqueuedFonts: [],
|
2364 |
+
|
2365 |
+
elementsHierarchy: {
|
2366 |
+
section: {
|
2367 |
+
column: {
|
2368 |
+
widget: null,
|
2369 |
+
section: null
|
2370 |
+
}
|
2371 |
+
}
|
2372 |
+
},
|
2373 |
+
|
2374 |
+
enqueueFont: function( font ) {
|
2375 |
+
if ( -1 !== this._enqueuedFonts.indexOf( font ) ) {
|
2376 |
+
return;
|
2377 |
+
}
|
2378 |
+
|
2379 |
+
var fontType = elementor.config.controls.font.fonts[ font ],
|
2380 |
+
fontUrl;
|
2381 |
+
|
2382 |
+
switch ( fontType ) {
|
2383 |
+
case 'googlefonts' :
|
2384 |
+
fontUrl = 'https://fonts.googleapis.com/css?family=' + font + ':100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic';
|
2385 |
+
break;
|
2386 |
+
|
2387 |
+
case 'earlyaccess' :
|
2388 |
+
var fontLowerString = font.replace( /\s+/g, '' ).toLowerCase();
|
2389 |
+
fontUrl = 'https://fonts.googleapis.com/earlyaccess/' + fontLowerString + '.css';
|
2390 |
+
break;
|
2391 |
+
}
|
2392 |
+
|
2393 |
+
if ( ! _.isEmpty( fontUrl ) ) {
|
2394 |
+
elementor.$previewContents.find( 'link:last' ).after( '<link href="' + fontUrl + '" rel="stylesheet" type="text/css">' );
|
2395 |
+
}
|
2396 |
+
this._enqueuedFonts.push( font );
|
2397 |
+
},
|
2398 |
+
|
2399 |
+
getElementChildType: function( elementType, container ) {
|
2400 |
+
if ( ! container ) {
|
2401 |
+
container = this.elementsHierarchy;
|
2402 |
+
}
|
2403 |
+
|
2404 |
+
if ( undefined !== container[ elementType ] ) {
|
2405 |
+
|
2406 |
+
if ( Backbone.$.isPlainObject( container[ elementType ] ) ) {
|
2407 |
+
return Object.keys( container[ elementType ] );
|
2408 |
+
}
|
2409 |
+
|
2410 |
+
return null;
|
2411 |
+
}
|
2412 |
+
|
2413 |
+
for ( var type in container ) {
|
2414 |
+
|
2415 |
+
if ( ! container.hasOwnProperty( type ) ) {
|
2416 |
+
continue;
|
2417 |
+
}
|
2418 |
+
|
2419 |
+
if ( ! Backbone.$.isPlainObject( container[ type ] ) ) {
|
2420 |
+
continue;
|
2421 |
+
}
|
2422 |
+
|
2423 |
+
var result = this.getElementChildType( elementType, container[ type ] );
|
2424 |
+
|
2425 |
+
if ( result ) {
|
2426 |
+
return result;
|
2427 |
+
}
|
2428 |
+
}
|
2429 |
+
|
2430 |
+
return null;
|
2431 |
+
},
|
2432 |
+
|
2433 |
+
getUniqueID: function() {
|
2434 |
+
var id;
|
2435 |
+
|
2436 |
+
// TODO: Check conflict models
|
2437 |
+
//while ( true ) {
|
2438 |
+
id = Math.random().toString( 36 ).substr( 2, 7 );
|
2439 |
+
//if ( 1 > $( 'li.item-id-' + id ).length ) {
|
2440 |
+
return id;
|
2441 |
+
//}
|
2442 |
+
//}
|
2443 |
+
},
|
2444 |
+
|
2445 |
+
stringReplaceAll: function( string, replaces ) {
|
2446 |
+
var re = new RegExp( Object.keys( replaces ).join( '|' ), 'gi' );
|
2447 |
+
|
2448 |
+
return string.replace( re, function( matched ) {
|
2449 |
+
return replaces[ matched ];
|
2450 |
+
} );
|
2451 |
+
},
|
2452 |
+
|
2453 |
+
isControlVisible: function( controlModel, elementSettingsModel ) {
|
2454 |
+
var condition;
|
2455 |
+
|
2456 |
+
// TODO: Better way to get this?
|
2457 |
+
if ( _.isFunction( controlModel.get ) ) {
|
2458 |
+
condition = controlModel.get( 'condition' );
|
2459 |
+
} else {
|
2460 |
+
condition = controlModel.condition;
|
2461 |
+
}
|
2462 |
+
|
2463 |
+
if ( _.isEmpty( condition ) ) {
|
2464 |
+
return true;
|
2465 |
+
}
|
2466 |
+
|
2467 |
+
var hasFields = _.filter( condition, function( conditionValue, conditionName ) {
|
2468 |
+
var conditionNameParts = conditionName.match( /([a-z_0-9]+)(?:\[([a-z_]+)])?(!?)$/i ),
|
2469 |
+
conditionRealName = conditionNameParts[1],
|
2470 |
+
conditionSubKey = conditionNameParts[2],
|
2471 |
+
isNegativeCondition = !! conditionNameParts[3],
|
2472 |
+
controlValue = elementSettingsModel.get( conditionRealName );
|
2473 |
+
|
2474 |
+
if ( conditionSubKey ) {
|
2475 |
+
controlValue = controlValue[ conditionSubKey ];
|
2476 |
+
}
|
2477 |
+
|
2478 |
+
var isContains = ( _.isArray( conditionValue ) ) ? _.contains( conditionValue, controlValue ) : conditionValue === controlValue;
|
2479 |
+
|
2480 |
+
return isNegativeCondition ? isContains : ! isContains;
|
2481 |
+
} );
|
2482 |
+
|
2483 |
+
return _.isEmpty( hasFields );
|
2484 |
+
},
|
2485 |
+
|
2486 |
+
cloneObject: function( object ) {
|
2487 |
+
return JSON.parse( JSON.stringify( object ) );
|
2488 |
+
},
|
2489 |
+
|
2490 |
+
getYoutubeIDFromURL: function( url ) {
|
2491 |
+
var videoIDParts = url.match( /^.*(youtu.be\/|v\/|e\/|u\/\w+\/|embed\/|v=)([^#\&\?]*).*/ );
|
2492 |
+
|
2493 |
+
return videoIDParts && videoIDParts[2];
|
2494 |
+
}
|
2495 |
+
};
|
2496 |
+
|
2497 |
+
module.exports = helpers;
|
2498 |
+
|
2499 |
+
},{}],36:[function(require,module,exports){
|
2500 |
+
var Schemes;
|
2501 |
+
|
2502 |
+
Schemes = function() {
|
2503 |
+
var self = this,
|
2504 |
+
styleRules = {},
|
2505 |
+
schemes = {},
|
2506 |
+
settings = {
|
2507 |
+
selectorWrapperPrefix: '.elementor-widget-'
|
2508 |
+
},
|
2509 |
+
elements = {};
|
2510 |
+
|
2511 |
+
var buildUI = function() {
|
2512 |
+
elements.$previewHead.append( elements.$style );
|
2513 |
+
};
|
2514 |
+
|
2515 |
+
var initElements = function() {
|
2516 |
+
elements.$style = Backbone.$( '<style>', {
|
2517 |
+
id: 'elementor-style-scheme'
|
2518 |
+
});
|
2519 |
+
|
2520 |
+
elements.$previewHead = elementor.$previewContents.find( 'head' );
|
2521 |
+
};
|
2522 |
+
|
2523 |
+
var addStyleRule = function( selector, property ) {
|
2524 |
+
if ( ! styleRules[ selector ] ) {
|
2525 |
+
styleRules[ selector ] = [];
|
2526 |
+
}
|
2527 |
+
|
2528 |
+
styleRules[ selector ].push( property );
|
2529 |
+
};
|
2530 |
+
|
2531 |
+
var fetchControlStyles = function( control, widgetType ) {
|
2532 |
+
_.each( control.selectors, function( cssProperty, selector ) {
|
2533 |
+
var currentSchemeValue = self.getSchemeValue( control.scheme.type, control.scheme.value, control.scheme.key ),
|
2534 |
+
outputSelector,
|
2535 |
+
outputCssProperty;
|
2536 |
+
|
2537 |
+
if ( _.isEmpty( currentSchemeValue ) ) {
|
2538 |
+
return;
|
2539 |
+
}
|
2540 |
+
|
2541 |
+
outputSelector = selector.replace( /\{\{WRAPPER\}\}/g, settings.selectorWrapperPrefix + widgetType );
|
2542 |
+
outputCssProperty = elementor.getControlItemView().replaceStyleValues( cssProperty, currentSchemeValue.value );
|
2543 |
+
|
2544 |
+
addStyleRule( outputSelector, outputCssProperty );
|
2545 |
+
} );
|
2546 |
+
};
|
2547 |
+
|
2548 |
+
var fetchWidgetControlsStyles = function( widget, widgetType ) {
|
2549 |
+
var widgetSchemeControls = self.getWidgetSchemeControls( widget );
|
2550 |
+
|
2551 |
+
_.each( widgetSchemeControls, function( control ) {
|
2552 |
+
fetchControlStyles( control, widgetType );
|
2553 |
+
} );
|
2554 |
+
};
|
2555 |
+
|
2556 |
+
var fetchAllWidgetsSchemesStyle = function() {
|
2557 |
+
_.each( elementor.config.widgets, function( widget, widgetType ) {
|
2558 |
+
fetchWidgetControlsStyles( widget, widgetType );
|
2559 |
+
} );
|
2560 |
+
};
|
2561 |
+
|
2562 |
+
var parseSchemeStyle = function() {
|
2563 |
+
var stringOutput = '';
|
2564 |
+
|
2565 |
+
_.each( styleRules, function( properties, selector ) {
|
2566 |
+
stringOutput += selector + '{' + properties.join( '' ) + '}';
|
2567 |
+
} );
|
2568 |
+
|
2569 |
+
return stringOutput;
|
2570 |
+
};
|
2571 |
+
|
2572 |
+
var resetStyleRules = function() {
|
2573 |
+
styleRules = {};
|
2574 |
+
};
|
2575 |
+
|
2576 |
+
this.init = function() {
|
2577 |
+
initElements();
|
2578 |
+
buildUI();
|
2579 |
+
|
2580 |
+
self.resetSchemes();
|
2581 |
+
|
2582 |
+
return self;
|
2583 |
+
};
|
2584 |
+
|
2585 |
+
this.getWidgetSchemeControls = function( widget ) {
|
2586 |
+
return _.filter( widget.controls, function( control ) {
|
2587 |
+
return _.isObject( control.scheme );
|
2588 |
+
} );
|
2589 |
+
};
|
2590 |
+
|
2591 |
+
this.getSchemes = function() {
|
2592 |
+
return schemes;
|
2593 |
+
};
|
2594 |
+
|
2595 |
+
this.getScheme = function( schemeName ) {
|
2596 |
+
return schemes[ schemeName ];
|
2597 |
+
};
|
2598 |
+
|
2599 |
+
this.getSchemeValue = function( schemeName, value, key ) {
|
2600 |
+
var scheme = self.getScheme( schemeName ),
|
2601 |
+
schemeValue = scheme.items[ value ];
|
2602 |
+
|
2603 |
+
if ( key && _.isObject( schemeValue ) ) {
|
2604 |
+
var clonedSchemeValue = elementor.helpers.cloneObject( schemeValue );
|
2605 |
+
|
2606 |
+
clonedSchemeValue.value = schemeValue.value[ key ];
|
2607 |
+
|
2608 |
+
return clonedSchemeValue;
|
2609 |
+
}
|
2610 |
+
|
2611 |
+
return schemeValue;
|
2612 |
+
};
|
2613 |
+
|
2614 |
+
this.printSchemesStyle = function() {
|
2615 |
+
resetStyleRules();
|
2616 |
+
fetchAllWidgetsSchemesStyle();
|
2617 |
+
|
2618 |
+
elements.$style.text( parseSchemeStyle() );
|
2619 |
+
};
|
2620 |
+
|
2621 |
+
this.resetSchemes = function( schemeName ) {
|
2622 |
+
if ( schemeName ) {
|
2623 |
+
schemes[ schemeName ] = elementor.helpers.cloneObject( elementor.config.schemes[ schemeName ] );
|
2624 |
+
} else {
|
2625 |
+
schemes = elementor.helpers.cloneObject( elementor.config.schemes );
|
2626 |
+
}
|
2627 |
+
|
2628 |
+
this.onSchemeChange();
|
2629 |
+
};
|
2630 |
+
|
2631 |
+
this.saveScheme = function( schemeName ) {
|
2632 |
+
elementor.config.schemes[ schemeName ].items = elementor.helpers.cloneObject( schemes[ schemeName ].items );
|
2633 |
+
|
2634 |
+
NProgress.start();
|
2635 |
+
Backbone.$.ajax( {
|
2636 |
+
type: 'POST',
|
2637 |
+
url: elementor.config.ajaxurl,
|
2638 |
+
data: {
|
2639 |
+
action: 'elementor_apply_scheme',
|
2640 |
+
scheme_name: schemeName,
|
2641 |
+
data: JSON.stringify( schemes[ schemeName ].items )
|
2642 |
+
}
|
2643 |
+
} )
|
2644 |
+
|
2645 |
+
.done( function( data ) {
|
2646 |
+
NProgress.done();
|
2647 |
+
} );
|
2648 |
+
};
|
2649 |
+
|
2650 |
+
this.setSchemeValue = function( schemeName, itemKey, value ) {
|
2651 |
+
schemes[ schemeName ].items[ itemKey ].value = value;
|
2652 |
+
|
2653 |
+
this.onSchemeChange();
|
2654 |
+
};
|
2655 |
+
|
2656 |
+
this.onSchemeChange = function() {
|
2657 |
+
this.printSchemesStyle();
|
2658 |
+
};
|
2659 |
+
};
|
2660 |
+
|
2661 |
+
module.exports = new Schemes();
|
2662 |
+
|
2663 |
+
},{}],37:[function(require,module,exports){
|
2664 |
+
var BaseElementView;
|
2665 |
+
|
2666 |
+
BaseElementView = Marionette.CompositeView.extend( {
|
2667 |
+
tagName: 'div',
|
2668 |
+
|
2669 |
+
id: function() {
|
2670 |
+
return this.getElementUniqueClass();
|
2671 |
+
},
|
2672 |
+
|
2673 |
+
attributes: function() {
|
2674 |
+
var type = this.model.get( 'elType' );
|
2675 |
+
|
2676 |
+
if ( 'widget' === type ) {
|
2677 |
+
type = this.model.get( 'widgetType' );
|
2678 |
+
}
|
2679 |
+
return {
|
2680 |
+
'data-element_type': type
|
2681 |
+
};
|
2682 |
+
},
|
2683 |
+
|
2684 |
+
modelEvents: {
|
2685 |
+
//"change": "render"
|
2686 |
+
//'destroy': 'onModelDestroy'
|
2687 |
+
},
|
2688 |
+
|
2689 |
+
baseEvents: {},
|
2690 |
+
|
2691 |
+
elementEvents: {},
|
2692 |
+
|
2693 |
+
getElementType: function() {
|
2694 |
+
return this.model.get( 'elType' );
|
2695 |
+
},
|
2696 |
+
|
2697 |
+
getChildType: function() {
|
2698 |
+
return elementor.helpers.getElementChildType( this.getElementType() );
|
2699 |
+
},
|
2700 |
+
|
2701 |
+
events: function() {
|
2702 |
+
return _.extend( {}, this.baseEvents, this.elementEvents );
|
2703 |
+
},
|
2704 |
+
|
2705 |
+
initialize: function() {
|
2706 |
+
// grab the child collection from the parent model
|
2707 |
+
// so that we can render the collection as children
|
2708 |
+
// of this parent element
|
2709 |
+
this.collection = this.model.get( 'elements' );
|
2710 |
+
|
2711 |
+
if ( this.collection ) {
|
2712 |
+
this.listenTo( this.collection, 'add remove reset', this.onCollectionChanged, this );
|
2713 |
+
}
|
2714 |
+
|
2715 |
+
this.listenTo( this.model.get( 'settings' ), 'change', this.onSettingsChanged, this );
|
2716 |
+
this.listenTo( this.model.get( 'editSettings' ), 'change', this.onSettingsChanged, this );
|
2717 |
+
|
2718 |
+
this.on( 'render', this.enqueueFonts );
|
2719 |
+
this.on( 'render', this.renderStyles );
|
2720 |
+
this.on( 'render', this.renderCustomClasses );
|
2721 |
+
this.on( 'render', this.runReadyTrigger );
|
2722 |
+
|
2723 |
+
this.initRemoveDialog();
|
2724 |
+
},
|
2725 |
+
|
2726 |
+
addChildModel: function( model, options ) {
|
2727 |
+
return this.collection.add( model, options, true );
|
2728 |
+
},
|
2729 |
+
|
2730 |
+
isCollectionFilled: function() {
|
2731 |
+
return false;
|
2732 |
+
},
|
2733 |
+
|
2734 |
+
isInner: function() {
|
2735 |
+
return !! this.model.get( 'isInner' );
|
2736 |
+
},
|
2737 |
+
|
2738 |
+
initRemoveDialog: function() {
|
2739 |
+
var removeDialog;
|
2740 |
+
|
2741 |
+
this.getRemoveDialog = function() {
|
2742 |
+
if ( ! removeDialog ) {
|
2743 |
+
removeDialog = elementor.dialogsManager.createWidget( 'confirm', {
|
2744 |
+
message: elementor.translate( 'dialog_confirm_delete' ),
|
2745 |
+
headerMessage: elementor.translate( 'delete_element' ),
|
2746 |
+
strings: {
|
2747 |
+
confirm: elementor.translate( 'delete' ),
|
2748 |
+
cancel: elementor.translate( 'cancel' )
|
2749 |
+
},
|
2750 |
+
defaultOption: 'confirm',
|
2751 |
+
onConfirm: _.bind( function() {
|
2752 |
+
this.model.destroy();
|
2753 |
+
}, this )
|
2754 |
+
} );
|
2755 |
+
}
|
2756 |
+
|
2757 |
+
return removeDialog;
|
2758 |
+
};
|
2759 |
+
},
|
2760 |
+
|
2761 |
+
enqueueFonts: function() {
|
2762 |
+
_.each( this.model.get( 'settings' ).getFontControls(), _.bind( function( control ) {
|
2763 |
+
var fontFamilyName = this.model.getSetting( control.name );
|
2764 |
+
if ( _.isEmpty( fontFamilyName ) ) {
|
2765 |
+
return;
|
2766 |
+
}
|
2767 |
+
|
2768 |
+
var isVisible = elementor.helpers.isControlVisible( control, this.model.get( 'settings' ) );
|
2769 |
+
if ( ! isVisible ) {
|
2770 |
+
return;
|
2771 |
+
}
|
2772 |
+
|
2773 |
+
elementor.helpers.enqueueFont( fontFamilyName );
|
2774 |
+
}, this ) );
|
2775 |
+
},
|
2776 |
+
|
2777 |
+
renderStyles: function() {
|
2778 |
+
var styleHtml = '',
|
2779 |
+
$stylesheet = elementor.$previewContents.find( '#elementor-style-' + this.model.cid ),
|
2780 |
+
styleControls = this.model.get( 'settings' ).getStyleControls();
|
2781 |
+
|
2782 |
+
_.each( styleControls, _.bind( function( control ) {
|
2783 |
+
var controlValue = this.model.getSetting( control.name );
|
2784 |
+
|
2785 |
+
if ( ! _.isNumber( controlValue ) && _.isEmpty( controlValue ) ) {
|
2786 |
+
return;
|
2787 |
+
}
|
2788 |
+
|
2789 |
+
var isVisibility = elementor.helpers.isControlVisible( control, this.model.get( 'settings' ) );
|
2790 |
+
if ( ! isVisibility ) {
|
2791 |
+
return;
|
2792 |
+
}
|
2793 |
+
|
2794 |
+
_.each( control.selectors, _.bind( function( cssProperty, selector ) {
|
2795 |
+
var outputSelector = selector.replace( /\{\{WRAPPER\}\}/g, '#' + this.getElementUniqueClass() ),
|
2796 |
+
outputCssProperty = elementor.getControlItemView( control.type ).replaceStyleValues( cssProperty, controlValue );
|
2797 |
+
|
2798 |
+
if ( _.isEmpty( outputCssProperty ) ) {
|
2799 |
+
return;
|
2800 |
+
}
|
2801 |
+
|
2802 |
+
styleHtml += outputSelector + '{' + outputCssProperty + '}';
|
2803 |
+
}, this ) );
|
2804 |
+
}, this ) );
|
2805 |
+
|
2806 |
+
if ( 'column' === this.model.get( 'elType' ) ) {
|
2807 |
+
var inlineSize = this.model.getSetting( '_inline_size' );
|
2808 |
+
if ( ! _.isEmpty( inlineSize ) ) {
|
2809 |
+
styleHtml += '@media (min-width: 768px) {#' + this.getElementUniqueClass() + '{width:' + inlineSize + '%;}';
|
2810 |
+
}
|
2811 |
+
}
|
2812 |
+
|
2813 |
+
if ( 0 === $stylesheet.length ) {
|
2814 |
+
elementor.$previewContents.find( 'head' ).append( '<style type="text/css" id="elementor-style-' + this.model.cid + '"></style>' );
|
2815 |
+
$stylesheet = elementor.$previewContents.find( '#elementor-style-' + this.model.cid );
|
2816 |
+
}
|
2817 |
+
|
2818 |
+
$stylesheet.html( styleHtml );
|
2819 |
+
},
|
2820 |
+
|
2821 |
+
renderCustomClasses: function() {
|
2822 |
+
this.$el.addClass( 'elementor-element' );
|
2823 |
+
|
2824 |
+
var settings = this.model.get( 'settings' );
|
2825 |
+
|
2826 |
+
_.each( settings.attributes, _.bind( function( value, attribute ) {
|
2827 |
+
if ( settings.isClassControl( attribute ) ) {
|
2828 |
+
var currentControl = settings.getControl( attribute );
|
2829 |
+
|
2830 |
+
this.$el.removeClass( currentControl.prefix_class + settings.previous( attribute ) );
|
2831 |
+
|
2832 |
+
var isVisible = elementor.helpers.isControlVisible( currentControl, this.model.get( 'settings' ) );
|
2833 |
+
|
2834 |
+
if ( isVisible && ! _.isEmpty( settings.get( attribute ) ) ) {
|
2835 |
+
this.$el.addClass( currentControl.prefix_class + settings.get( attribute ) );
|
2836 |
+
this.$el.addClass( _.result( this, 'className' ) );
|
2837 |
+
}
|
2838 |
+
}
|
2839 |
+
}, this ) );
|
2840 |
+
},
|
2841 |
+
|
2842 |
+
runReadyTrigger: function() {
|
2843 |
+
elementorBindUI.runReadyTrigger( this.$el );
|
2844 |
+
},
|
2845 |
+
|
2846 |
+
getElementUniqueClass: function() {
|
2847 |
+
return 'elementor-element-' + this.model.get( 'id' );
|
2848 |
+
},
|
2849 |
+
|
2850 |
+
onCollectionChanged: function() {
|
2851 |
+
elementor.setFlagEditorChange( true );
|
2852 |
+
},
|
2853 |
+
|
2854 |
+
onSettingsChanged: function( settings ) {
|
2855 |
+
elementor.setFlagEditorChange( true );
|
2856 |
+
|
2857 |
+
this.renderStyles();
|
2858 |
+
this.renderCustomClasses();
|
2859 |
+
},
|
2860 |
+
|
2861 |
+
onClickRemove: function( event ) {
|
2862 |
+
event.preventDefault();
|
2863 |
+
event.stopPropagation();
|
2864 |
+
|
2865 |
+
this.getRemoveDialog().show();
|
2866 |
+
}
|
2867 |
+
} );
|
2868 |
+
|
2869 |
+
module.exports = BaseElementView;
|
2870 |
+
|
2871 |
+
},{}],38:[function(require,module,exports){
|
2872 |
+
var BaseElementView = require( 'elementor-views/base-element' ),
|
2873 |
+
ElementEmptyView = require( 'elementor-views/element-empty' ),
|
2874 |
+
WidgetView = require( 'elementor-views/widget' ),
|
2875 |
+
ColumnView;
|
2876 |
+
|
2877 |
+
ColumnView = BaseElementView.extend( {
|
2878 |
+
template: Marionette.TemplateCache.get( '#tmpl-elementor-element-column-content' ),
|
2879 |
+
|
2880 |
+
elementEvents: {
|
2881 |
+
'click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-remove': 'onClickRemove',
|
2882 |
+
'click @ui.listTriggers': 'onClickTrigger'
|
2883 |
+
},
|
2884 |
+
|
2885 |
+
getChildView: function( model ) {
|
2886 |
+
if ( 'section' === model.get( 'elType' ) ) {
|
2887 |
+
return require( 'elementor-views/section' ); // We need to require the section dynamically
|
2888 |
+
}
|
2889 |
+
|
2890 |
+
return WidgetView;
|
2891 |
+
},
|
2892 |
+
|
2893 |
+
emptyView: ElementEmptyView,
|
2894 |
+
|
2895 |
+
className: function() {
|
2896 |
+
var classes = 'elementor-column',
|
2897 |
+
type = this.isInner() ? 'inner' : 'top';
|
2898 |
+
|
2899 |
+
classes += ' elementor-' + type + '-column';
|
2900 |
+
|
2901 |
+
return classes;
|
2902 |
+
},
|
2903 |
+
|
2904 |
+
childViewContainer: '> .elementor-column-wrap > .elementor-widget-wrap',
|
2905 |
+
|
2906 |
+
triggers: {
|
2907 |
+
'click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-add': 'click:new',
|
2908 |
+
'click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-edit': 'click:edit',
|
2909 |
+
'click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-trigger': 'click:edit',
|
2910 |
+
'click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-duplicate': 'click:duplicate'
|
2911 |
+
},
|
2912 |
+
|
2913 |
+
ui: {
|
2914 |
+
columnTitle: '.column-title',
|
2915 |
+
columnInner: '> .elementor-column-wrap',
|
2916 |
+
listTriggers: '> .elementor-element-overlay .elementor-editor-element-trigger'
|
2917 |
+
},
|
2918 |
+
|
2919 |
+
behaviors: {
|
2920 |
+
Sortable: {
|
2921 |
+
behaviorClass: require( 'elementor-behaviors/sortable' ),
|
2922 |
+
elChildType: 'widget'
|
2923 |
+
},
|
2924 |
+
Resizable: {
|
2925 |
+
behaviorClass: require( 'elementor-behaviors/resizable' )
|
2926 |
+
},
|
2927 |
+
HandleDuplicate: {
|
2928 |
+
behaviorClass: require( 'elementor-behaviors/handle-duplicate' )
|
2929 |
+
},
|
2930 |
+
HandleEditor: {
|
2931 |
+
behaviorClass: require( 'elementor-behaviors/handle-editor' )
|
2932 |
+
},
|
2933 |
+
HandleEditMode: {
|
2934 |
+
behaviorClass: require( 'elementor-behaviors/handle-edit-mode' )
|
2935 |
+
},
|
2936 |
+
HandleAddMode: {
|
2937 |
+
behaviorClass: require( 'elementor-behaviors/duplicate' )
|
2938 |
+
},
|
2939 |
+
HandleElementsRelation: {
|
2940 |
+
behaviorClass: require( 'elementor-behaviors/elements-relation' )
|
2941 |
+
}
|
2942 |
+
},
|
2943 |
+
|
2944 |
+
initialize: function() {
|
2945 |
+
BaseElementView.prototype.initialize.apply( this, arguments );
|
2946 |
+
|
2947 |
+
this.listenTo( elementor.data, 'widget:drag:start', this.onWidgetDragStart );
|
2948 |
+
this.listenTo( elementor.data, 'widget:drag:end', this.onWidgetDragEnd );
|
2949 |
+
},
|
2950 |
+
|
2951 |
+
isDroppingAllowed: function( side, event ) {
|
2952 |
+
var elementView = elementor.panelElements.request( 'element:selected' ),
|
2953 |
+
elType = elementView.model.get( 'elType' );
|
2954 |
+
|
2955 |
+
if ( 'section' === elType ) {
|
2956 |
+
return ! this.isInner();
|
2957 |
+
}
|
2958 |
+
|
2959 |
+
return 'widget' === elType;
|
2960 |
+
},
|
2961 |
+
|
2962 |
+
changeSizeUI: function() {
|
2963 |
+
var columnSize = this.model.getSetting( '_column_size' ),
|
2964 |
+
inlineSize = this.model.getSetting( '_inline_size' ),
|
2965 |
+
columnSizeTitle = parseFloat( inlineSize || columnSize ).toFixed( 1 ) + '%';
|
2966 |
+
|
2967 |
+
this.$el.attr( 'data-col', columnSize );
|
2968 |
+
//this.$el.css( 'width', inlineSize ? inlineSize + '%' : '' );
|
2969 |
+
|
2970 |
+
this.ui.columnTitle.html( columnSizeTitle );
|
2971 |
+
},
|
2972 |
+
|
2973 |
+
getSortableOptions: function() {
|
2974 |
+
return {
|
2975 |
+
connectWith: '.elementor-widget-wrap',
|
2976 |
+
items: '> .elementor-element'
|
2977 |
+
};
|
2978 |
+
},
|
2979 |
+
|
2980 |
+
// Events
|
2981 |
+
onCollectionChanged: function() {
|
2982 |
+
BaseElementView.prototype.onCollectionChanged.apply( this, arguments );
|
2983 |
+
|
2984 |
+
this.changeChildContainerClasses();
|
2985 |
+
},
|
2986 |
+
|
2987 |
+
changeChildContainerClasses: function() {
|
2988 |
+
var emptyClass = 'elementor-element-empty',
|
2989 |
+
populatedClass = 'elementor-element-populated';
|
2990 |
+
|
2991 |
+
if ( this.collection.isEmpty() ) {
|
2992 |
+
this.ui.columnInner.removeClass( populatedClass ).addClass( emptyClass );
|
2993 |
+
} else {
|
2994 |
+
this.ui.columnInner.removeClass( emptyClass ).addClass( populatedClass );
|
2995 |
+
}
|
2996 |
+
},
|
2997 |
+
|
2998 |
+
onRender: function() {
|
2999 |
+
var self = this;
|
3000 |
+
|
3001 |
+
self.changeChildContainerClasses();
|
3002 |
+
self.changeSizeUI();
|
3003 |
+
|
3004 |
+
self.$el.html5Droppable( {
|
3005 |
+
items: ' > .elementor-column-wrap > .elementor-widget-wrap > .elementor-element, >.elementor-column-wrap > .elementor-widget-wrap > .elementor-empty-view > .elementor-first-add',
|
3006 |
+
axis: [ 'vertical' ],
|
3007 |
+
groups: [ 'elementor-element' ],
|
3008 |
+
isDroppingAllowed: _.bind( self.isDroppingAllowed, self ),
|
3009 |
+
onDragging: function( side, event ) {
|
3010 |
+
event.stopPropagation();
|
3011 |
+
|
3012 |
+
self.$el.addClass( 'elementor-dragging-on-child' );
|
3013 |
+
|
3014 |
+
if ( this.dataset.side !== side ) {
|
3015 |
+
Backbone.$( this ).attr( 'data-side', side );
|
3016 |
+
}
|
3017 |
+
},
|
3018 |
+
onDragLeave: function() {
|
3019 |
+
self.$el.removeClass( 'elementor-dragging-on-child' );
|
3020 |
+
|
3021 |
+
Backbone.$( this ).removeAttr( 'data-side' );
|
3022 |
+
},
|
3023 |
+
onDropping: function( side, event ) {
|
3024 |
+
event.stopPropagation();
|
3025 |
+
|
3026 |
+
var elementView = elementor.panelElements.request( 'element:selected' ),
|
3027 |
+
newIndex = Backbone.$( this ).index();
|
3028 |
+
|
3029 |
+
if ( 'bottom' === side ) {
|
3030 |
+
newIndex++;
|
3031 |
+
}
|
3032 |
+
|
3033 |
+
var itemData = {
|
3034 |
+
id: elementor.helpers.getUniqueID(),
|
3035 |
+
elType: elementView.model.get( 'elType' )
|
3036 |
+
};
|
3037 |
+
|
3038 |
+
if ( 'widget' === itemData.elType ) {
|
3039 |
+
itemData.widgetType = elementView.model.get( 'widgetType' );
|
3040 |
+
} else if ( 'section' === itemData.elType ) {
|
3041 |
+
itemData.elements = [];
|
3042 |
+
itemData.isInner = true;
|
3043 |
+
} else {
|
3044 |
+
return;
|
3045 |
+
}
|
3046 |
+
|
3047 |
+
self.triggerMethod( 'request:add', itemData, { at: newIndex } );
|
3048 |
+
}
|
3049 |
+
} );
|
3050 |
+
},
|
3051 |
+
|
3052 |
+
onClickTrigger: function( event ) {
|
3053 |
+
event.preventDefault();
|
3054 |
+
|
3055 |
+
var $trigger = this.$( event.currentTarget ),
|
3056 |
+
isTriggerActive = $trigger.hasClass( 'elementor-active' );
|
3057 |
+
|
3058 |
+
this.ui.listTriggers.removeClass( 'elementor-active' );
|
3059 |
+
|
3060 |
+
if ( ! isTriggerActive ) {
|
3061 |
+
$trigger.addClass( 'elementor-active' );
|
3062 |
+
}
|
3063 |
+
},
|
3064 |
+
|
3065 |
+
onWidgetDragStart: function() {
|
3066 |
+
this.$el.addClass( 'elementor-dragging' );
|
3067 |
+
},
|
3068 |
+
|
3069 |
+
onWidgetDragEnd: function() {
|
3070 |
+
this.$el.removeClass( 'elementor-dragging' );
|
3071 |
+
}
|
3072 |
+
} );
|
3073 |
+
|
3074 |
+
module.exports = ColumnView;
|
3075 |
+
|
3076 |
+
},{"elementor-behaviors/duplicate":2,"elementor-behaviors/elements-relation":3,"elementor-behaviors/handle-duplicate":4,"elementor-behaviors/handle-edit-mode":5,"elementor-behaviors/handle-editor":6,"elementor-behaviors/resizable":7,"elementor-behaviors/sortable":8,"elementor-views/base-element":37,"elementor-views/element-empty":58,"elementor-views/section":59,"elementor-views/widget":61}],39:[function(require,module,exports){
|
3077 |
+
var ControlBaseItemView = require( 'elementor-views/controls/base' ),
|
3078 |
+
ControlBaseMultipleItemView;
|
3079 |
+
|
3080 |
+
ControlBaseMultipleItemView = ControlBaseItemView.extend( {
|
3081 |
+
|
3082 |
+
applySavedValue: function() {
|
3083 |
+
var values = this.getControlValue(),
|
3084 |
+
$inputs = this.$( '[data-setting]' ),
|
3085 |
+
self = this;
|
3086 |
+
|
3087 |
+
_.each( values, function( value, key ) {
|
3088 |
+
var $input = $inputs.filter( function() {
|
3089 |
+
return key === this.dataset.setting;
|
3090 |
+
} );
|
3091 |
+
|
3092 |
+
self.setInputValue( $input, value );
|
3093 |
+
} );
|
3094 |
+
},
|
3095 |
+
|
3096 |
+
getControlValue: function( key ) {
|
3097 |
+
var values = this.elementSettingsModel.get( this.model.get( 'name' ) );
|
3098 |
+
|
3099 |
+
if ( ! Backbone.$.isPlainObject( values ) ) {
|
3100 |
+
return {};
|
3101 |
+
}
|
3102 |
+
|
3103 |
+
if ( key ) {
|
3104 |
+
return values[ key ] || '';
|
3105 |
+
}
|
3106 |
+
|
3107 |
+
return elementor.helpers.cloneObject( values );
|
3108 |
+
},
|
3109 |
+
|
3110 |
+
setValue: function( key, value ) {
|
3111 |
+
var values = this.getControlValue();
|
3112 |
+
|
3113 |
+
if ( 'object' === typeof key ) {
|
3114 |
+
_.each( key, function( internalValue, internalKey ) {
|
3115 |
+
values[ internalKey ] = internalValue;
|
3116 |
+
} );
|
3117 |
+
} else {
|
3118 |
+
values[ key ] = value;
|
3119 |
+
}
|
3120 |
+
|
3121 |
+
this.setSettingsModel( values );
|
3122 |
+
},
|
3123 |
+
|
3124 |
+
updateElementModel: function( event ) {
|
3125 |
+
var inputValue = this.getInputValue( event.currentTarget ),
|
3126 |
+
key = event.currentTarget.dataset.setting;
|
3127 |
+
|
3128 |
+
this.setValue( key, inputValue );
|
3129 |
+
}
|
3130 |
+
}, {
|
3131 |
+
// Static methods
|
3132 |
+
replaceStyleValues: function( cssProperty, controlValue ) {
|
3133 |
+
if ( ! _.isObject( controlValue ) ) {
|
3134 |
+
return ''; // invalid
|
3135 |
+
}
|
3136 |
+
|
3137 |
+
// Trying to retrieve whole the related properties
|
3138 |
+
// according to the string matches.
|
3139 |
+
// When one of the properties is empty, aborting
|
3140 |
+
// the action and returning an empty string.
|
3141 |
+
try {
|
3142 |
+
return cssProperty.replace( /\{\{([A-Z]+)}}/g, function( fullMatch, pureMatch ) {
|
3143 |
+
var value = controlValue[ pureMatch.toLowerCase() ];
|
3144 |
+
|
3145 |
+
if ( '' === value ) {
|
3146 |
+
throw '';
|
3147 |
+
}
|
3148 |
+
|
3149 |
+
return value;
|
3150 |
+
} );
|
3151 |
+
} catch ( exception ) {
|
3152 |
+
return '';
|
3153 |
+
}
|
3154 |
+
}
|
3155 |
+
} );
|
3156 |
+
|
3157 |
+
module.exports = ControlBaseMultipleItemView;
|
3158 |
+
|
3159 |
+
},{"elementor-views/controls/base":41}],40:[function(require,module,exports){
|
3160 |
+
var ControlBaseMultipleItemView = require( 'elementor-views/controls/base-multiple' ),
|
3161 |
+
ControlBaseUnitsItemView;
|
3162 |
+
|
3163 |
+
ControlBaseUnitsItemView = ControlBaseMultipleItemView.extend( {
|
3164 |
+
|
3165 |
+
getCurrentRange: function() {
|
3166 |
+
return this.getUnitRange( this.getControlValue( 'unit' ) );
|
3167 |
+
},
|
3168 |
+
|
3169 |
+
getUnitRange: function( unit ) {
|
3170 |
+
var ranges = this.model.get( 'range' );
|
3171 |
+
|
3172 |
+
if ( ! ranges || ! ranges[ unit ] ) {
|
3173 |
+
return false;
|
3174 |
+
}
|
3175 |
+
|
3176 |
+
return ranges[ unit ];
|
3177 |
+
}
|
3178 |
+
} );
|
3179 |
+
|
3180 |
+
module.exports = ControlBaseUnitsItemView;
|
3181 |
+
|
3182 |
+
},{"elementor-views/controls/base-multiple":39}],41:[function(require,module,exports){
|
3183 |
+
var ControlBaseItemView;
|
3184 |
+
|
3185 |
+
ControlBaseItemView = Marionette.CompositeView.extend( {
|
3186 |
+
ui: function() {
|
3187 |
+
return {
|
3188 |
+
input: 'input[data-setting][type!="checkbox"][type!="radio"]',
|
3189 |
+
checkbox: 'input[data-setting][type="checkbox"]',
|
3190 |
+
radio: 'input[data-setting][type="radio"]',
|
3191 |
+
select: 'select[data-setting]',
|
3192 |
+
textarea: 'textarea[data-setting]'
|
3193 |
+
};
|
3194 |
+
},
|
3195 |
+
|
3196 |
+
className: function() {
|
3197 |
+
// TODO: Any better classes for that?
|
3198 |
+
var classes = 'elementor-control elementor-control-' + this.model.get( 'name' ) + ' elementor-control-type-' + this.model.get( 'type' ),
|
3199 |
+
modelClasses = this.model.get( 'classes' );
|
3200 |
+
|
3201 |
+
if ( ! _.isEmpty( modelClasses ) ) {
|
3202 |
+
classes += ' ' + modelClasses;
|
3203 |
+
}
|
3204 |
+
|
3205 |
+
if ( ! _.isEmpty( this.model.get( 'section' ) ) ) {
|
3206 |
+
classes += ' elementor-control-under-section';
|
3207 |
+
}
|
3208 |
+
|
3209 |
+
return classes;
|
3210 |
+
},
|
3211 |
+
|
3212 |
+
getTemplate: function() {
|
3213 |
+
return Marionette.TemplateCache.get( '#tmpl-elementor-control-' + this.model.get( 'type' ) + '-content' );
|
3214 |
+
},
|
3215 |
+
|
3216 |
+
templateHelpers: function() {
|
3217 |
+
var controlData = {
|
3218 |
+
controlValue: this.getControlValue(),
|
3219 |
+
_cid: this.model.cid
|
3220 |
+
};
|
3221 |
+
|
3222 |
+
return {
|
3223 |
+
data: _.extend( {}, this.model.toJSON(), controlData )
|
3224 |
+
};
|
3225 |
+
},
|
3226 |
+
|
3227 |
+
baseEvents: {
|
3228 |
+
'input @ui.input': 'onBaseInputChange',
|
3229 |
+
'change @ui.checkbox': 'onBaseInputChange',
|
3230 |
+
'change @ui.radio': 'onBaseInputChange',
|
3231 |
+
'input @ui.textarea': 'onBaseInputChange',
|
3232 |
+
'change @ui.select': 'onBaseInputChange'
|
3233 |
+
},
|
3234 |
+
|
3235 |
+
childEvents: {},
|
3236 |
+
|
3237 |
+
events: function() {
|
3238 |
+
return _.extend( {}, this.baseEvents, this.childEvents );
|
3239 |
+
},
|
3240 |
+
|
3241 |
+
initialize: function( options ) {
|
3242 |
+
this.elementSettingsModel = options.elementSettingsModel;
|
3243 |
+
|
3244 |
+
var controlType = this.model.get( 'type' ),
|
3245 |
+
controlSettings = _.extend( {}, elementor.config.controls[ controlType ], this.model.attributes );
|
3246 |
+
|
3247 |
+
this.model.set( controlSettings );
|
3248 |
+
|
3249 |
+
this.listenTo( this.elementSettingsModel, 'change', this.toggleControlVisibility );
|
3250 |
+
this.listenTo( this.elementSettingsModel, 'control:switch:tab', this.onControlSwitchTab );
|
3251 |
+
},
|
3252 |
+
|
3253 |
+
getControlValue: function() {
|
3254 |
+
return this.elementSettingsModel.get( this.model.get( 'name' ) );
|
3255 |
+
},
|
3256 |
+
|
3257 |
+
isValidValue: function( value ) {
|
3258 |
+
return true;
|
3259 |
+
},
|
3260 |
+
|
3261 |
+
setValue: function( value ) {
|
3262 |
+
this.setSettingsModel( value );
|
3263 |
+
},
|
3264 |
+
|
3265 |
+
setSettingsModel: function( value ) {
|
3266 |
+
if ( true !== this.isValidValue( value ) ) {
|
3267 |
+
this.triggerMethod( 'settings:error' );
|
3268 |
+
return;
|
3269 |
+
}
|
3270 |
+
|
3271 |
+
this.elementSettingsModel.set( this.model.get( 'name' ), value );
|
3272 |
+
|
3273 |
+
this.triggerMethod( 'settings:change' );
|
3274 |
+
},
|
3275 |
+
|
3276 |
+
applySavedValue: function() {
|
3277 |
+
this.setInputValue( '[data-setting="' + this.model.get( 'name' ) + '"]', this.getControlValue() );
|
3278 |
+
},
|
3279 |
+
|
3280 |
+
getEditSettings: function( setting ) {
|
3281 |
+
var settings = this.getOption( 'elementEditSettings' ).toJSON();
|
3282 |
+
|
3283 |
+
if ( setting ) {
|
3284 |
+
return settings[ setting ];
|
3285 |
+
}
|
3286 |
+
|
3287 |
+
return settings;
|
3288 |
+
},
|
3289 |
+
|
3290 |
+
setEditSetting: function( settingKey, settingValue ) {
|
3291 |
+
var settings = this.getOption( 'elementEditSettings' );
|
3292 |
+
|
3293 |
+
settings.set( settingKey, settingValue );
|
3294 |
+
},
|
3295 |
+
|
3296 |
+
getInputValue: function( input ) {
|
3297 |
+
var $input = this.$( input ),
|
3298 |
+
inputValue = $input.val(),
|
3299 |
+
inputType = $input.attr( 'type' );
|
3300 |
+
|
3301 |
+
if ( 'checkbox' === inputType ) {
|
3302 |
+
return $input.prop( 'checked' );
|
3303 |
+
} else if ( 'radio' === inputType ) {
|
3304 |
+
return $input.prop( 'checked' ) ? inputValue : '';
|
3305 |
+
}
|
3306 |
+
|
3307 |
+
return inputValue;
|
3308 |
+
},
|
3309 |
+
|
3310 |
+
setInputValue: function( input, value ) {
|
3311 |
+
var $input = this.$( input ),
|
3312 |
+
inputType = $input.attr( 'type' );
|
3313 |
+
|
3314 |
+
if ( 'checkbox' === inputType ) {
|
3315 |
+
$input.prop( 'checked', !! value );
|
3316 |
+
} else if ( 'radio' === inputType ) {
|
3317 |
+
$input.filter( '[value="' + value + '"]' ).prop( 'checked', true );
|
3318 |
+
} else {
|
3319 |
+
$input.val( value );
|
3320 |
+
}
|
3321 |
+
},
|
3322 |
+
|
3323 |
+
onSettingsError: function() {
|
3324 |
+
this.$el.addClass( 'elementor-error' );
|
3325 |
+
},
|
3326 |
+
|
3327 |
+
onSettingsChange: function() {
|
3328 |
+
this.$el.removeClass( 'elementor-error' );
|
3329 |
+
},
|
3330 |
+
|
3331 |
+
onRender: function() {
|
3332 |
+
this.applySavedValue();
|
3333 |
+
|
3334 |
+
var layoutType = this.model.get( 'label_block' ) ? 'block' : 'inline',
|
3335 |
+
showLabel = this.model.get( 'show_label' ),
|
3336 |
+
elClasses = 'elementor-label-' + layoutType;
|
3337 |
+
|
3338 |
+
elClasses += ' elementor-control-separator-' + this.model.get( 'separator' );
|
3339 |
+
|
3340 |
+
if ( ! showLabel ) {
|
3341 |
+
elClasses += ' elementor-control-hidden-label';
|
3342 |
+
}
|
3343 |
+
|
3344 |
+
this.$el.addClass( elClasses );
|
3345 |
+
|
3346 |
+
this.triggerMethod( 'ready' );
|
3347 |
+
this.toggleControlVisibility();
|
3348 |
+
},
|
3349 |
+
|
3350 |
+
onBaseInputChange: function( event ) {
|
3351 |
+
this.updateElementModel( event );
|
3352 |
+
|
3353 |
+
this.triggerMethod( 'input:change', event );
|
3354 |
+
},
|
3355 |
+
|
3356 |
+
toggleControlVisibility: function() {
|
3357 |
+
var isVisible = elementor.helpers.isControlVisible( this.model, this.elementSettingsModel );
|
3358 |
+
|
3359 |
+
this.$el.toggleClass( 'elementor-hidden-control', ! isVisible );
|
3360 |
+
|
3361 |
+
elementor.data.trigger( 'scrollbar:update' );
|
3362 |
+
},
|
3363 |
+
|
3364 |
+
onControlSwitchTab: function( activeTab ) {
|
3365 |
+
this.$el.toggleClass( 'elementor-active-tab', ( activeTab === this.model.get( 'tab' ) ) );
|
3366 |
+
|
3367 |
+
elementor.data.trigger( 'scrollbar:update' );
|
3368 |
+
},
|
3369 |
+
|
3370 |
+
onReady: function() {},
|
3371 |
+
|
3372 |
+
updateElementModel: function( event ) {
|
3373 |
+
this.setValue( this.getInputValue( event.currentTarget ) );
|
3374 |
+
}
|
3375 |
+
}, {
|
3376 |
+
// Static methods
|
3377 |
+
replaceStyleValues: function( cssProperty, controlValue ) {
|
3378 |
+
var replaceArray = { '\{\{VALUE\}\}': controlValue };
|
3379 |
+
|
3380 |
+
return elementor.helpers.stringReplaceAll( cssProperty, replaceArray );
|
3381 |
+
}
|
3382 |
+
} );
|
3383 |
+
|
3384 |
+
module.exports = ControlBaseItemView;
|
3385 |
+
|
3386 |
+
},{}],42:[function(require,module,exports){
|
3387 |
+
var ControlBaseItemView = require( 'elementor-views/controls/base' ),
|
3388 |
+
ControlChooseItemView;
|
3389 |
+
|
3390 |
+
ControlChooseItemView = ControlBaseItemView.extend( {
|
3391 |
+
ui: function() {
|
3392 |
+
var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
|
3393 |
+
|
3394 |
+
ui.inputs = '[type=radio]';
|
3395 |
+
|
3396 |
+
return ui;
|
3397 |
+
},
|
3398 |
+
|
3399 |
+
childEvents: {
|
3400 |
+
'mousedown label': 'onMouseDownLabel',
|
3401 |
+
'click @ui.inputs': 'onClickInput',
|
3402 |
+
'change @ui.inputs': 'updateElementModel'
|
3403 |
+
},
|
3404 |
+
|
3405 |
+
onMouseDownLabel: function( event ) {
|
3406 |
+
var $clickedLabel = this.$( event.currentTarget ),
|
3407 |
+
$selectedInput = this.$( '#' + $clickedLabel.attr( 'for' ) );
|
3408 |
+
|
3409 |
+
$selectedInput.data( 'checked', $selectedInput.prop( 'checked' ) );
|
3410 |
+
},
|
3411 |
+
|
3412 |
+
onClickInput: function( event ) {
|
3413 |
+
if ( ! this.model.get( 'toggle' ) ) {
|
3414 |
+
return;
|
3415 |
+
}
|
3416 |
+
|
3417 |
+
var $selectedInput = this.$( event.currentTarget );
|
3418 |
+
|
3419 |
+
if ( $selectedInput.data( 'checked' ) ) {
|
3420 |
+
$selectedInput.prop( 'checked', false ).trigger( 'change' );
|
3421 |
+
}
|
3422 |
+
},
|
3423 |
+
|
3424 |
+
onRender: function() {
|
3425 |
+
ControlBaseItemView.prototype.onRender.apply( this, arguments );
|
3426 |
+
|
3427 |
+
var currentValue = this.getControlValue();
|
3428 |
+
|
3429 |
+
if ( currentValue ) {
|
3430 |
+
this.ui.inputs.filter( '[value=' + currentValue + ']' ).prop( 'checked', true );
|
3431 |
+
} else if ( ! this.model.get( 'toggle' ) ) {
|
3432 |
+
this.ui.inputs.first().prop( 'checked', true ).trigger( 'change' );
|
3433 |
+
}
|
3434 |
+
}
|
3435 |
+
} );
|
3436 |
+
|
3437 |
+
module.exports = ControlChooseItemView;
|
3438 |
+
|
3439 |
+
},{"elementor-views/controls/base":41}],43:[function(require,module,exports){
|
3440 |
+
var ControlBaseItemView = require( 'elementor-views/controls/base' ),
|
3441 |
+
ControlColorItemView;
|
3442 |
+
|
3443 |
+
ControlColorItemView = ControlBaseItemView.extend( {
|
3444 |
+
ui: function() {
|
3445 |
+
var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
|
3446 |
+
|
3447 |
+
ui.picker = '.color-picker-hex';
|
3448 |
+
|
3449 |
+
return ui;
|
3450 |
+
},
|
3451 |
+
|
3452 |
+
onReady: function() {
|
3453 |
+
this.ui.picker.wpColorPicker( {
|
3454 |
+
change: _.bind( function() {
|
3455 |
+
this.setValue( this.ui.picker.wpColorPicker( 'color' ) );
|
3456 |
+
}, this ),
|
3457 |
+
|
3458 |
+
clear: _.bind( function() {
|
3459 |
+
this.setValue( '' );
|
3460 |
+
}, this ),
|
3461 |
+
|
3462 |
+
width: 251
|
3463 |
+
} );
|
3464 |
+
},
|
3465 |
+
|
3466 |
+
onBeforeDestroy: function() {
|
3467 |
+
if ( this.ui.picker.wpColorPicker( 'instance' ) ) {
|
3468 |
+
this.ui.picker.wpColorPicker( 'close' );
|
3469 |
+
}
|
3470 |
+
this.$el.remove();
|
3471 |
+
}
|
3472 |
+
} );
|
3473 |
+
|
3474 |
+
module.exports = ControlColorItemView;
|
3475 |
+
|
3476 |
+
},{"elementor-views/controls/base":41}],44:[function(require,module,exports){
|
3477 |
+
var ControlBaseUnitsItemView = require( 'elementor-views/controls/base-units' ),
|
3478 |
+
ControlDimensionsItemView;
|
3479 |
+
|
3480 |
+
ControlDimensionsItemView = ControlBaseUnitsItemView.extend( {
|
3481 |
+
ui: function() {
|
3482 |
+
var ui = ControlBaseUnitsItemView.prototype.ui.apply( this, arguments );
|
3483 |
+
|
3484 |
+
ui.controls = '.elementor-control-dimension > input:enabled';
|
3485 |
+
ui.link = 'button.elementor-link-dimensions';
|
3486 |
+
|
3487 |
+
return ui;
|
3488 |
+
},
|
3489 |
+
|
3490 |
+
childEvents: {
|
3491 |
+
'click @ui.link': 'onLinkDimensionsClicked'
|
3492 |
+
},
|
3493 |
+
|
3494 |
+
defaultDimensionValue: 0,
|
3495 |
+
|
3496 |
+
initialize: function() {
|
3497 |
+
ControlBaseUnitsItemView.prototype.initialize.apply( this, arguments );
|
3498 |
+
|
3499 |
+
// TODO: Need to be in helpers, and not in variable
|
3500 |
+
this.model.set( 'allowed_dimensions', this.filterDimensions( this.model.get( 'allowed_dimensions' ) ) );
|
3501 |
+
},
|
3502 |
+
|
3503 |
+
getPossibleDimensions: function() {
|
3504 |
+
return [
|
3505 |
+
'top',
|
3506 |
+
'right',
|
3507 |
+
'bottom',
|
3508 |
+
'left'
|
3509 |
+
];
|
3510 |
+
},
|
3511 |
+
|
3512 |
+
filterDimensions: function( filter ) {
|
3513 |
+
filter = filter || 'all';
|
3514 |
+
|
3515 |
+
var dimensions = this.getPossibleDimensions();
|
3516 |
+
|
3517 |
+
if ( 'all' === filter ) {
|
3518 |
+
return dimensions;
|
3519 |
+
}
|
3520 |
+
|
3521 |
+
if ( ! _.isArray( filter ) ) {
|
3522 |
+
if ( 'horizontal' === filter ) {
|
3523 |
+
filter = [ 'right', 'left' ];
|
3524 |
+
} else if ( 'vertical' === filter ) {
|
3525 |
+
filter = [ 'top', 'bottom' ];
|
3526 |
+
}
|
3527 |
+
}
|
3528 |
+
|
3529 |
+
return filter;
|
3530 |
+
},
|
3531 |
+
|
3532 |
+
onReady: function() {
|
3533 |
+
var currentValue = this.getControlValue();
|
3534 |
+
|
3535 |
+
if ( ! this.isLinkedDimensions() ) {
|
3536 |
+
this.ui.link.addClass( 'unlinked' );
|
3537 |
+
|
3538 |
+
this.ui.controls.each( _.bind( function( index, element ) {
|
3539 |
+
if ( _.isEmpty( currentValue[ element.name ] ) ) {
|
3540 |
+
currentValue[ element.name ] = this.defaultDimensionValue;
|
3541 |
+
}
|
3542 |
+
|
3543 |
+
this.$( element ).val( currentValue[ element.name ] );
|
3544 |
+
}, this ) );
|
3545 |
+
}
|
3546 |
+
|
3547 |
+
this.fillEmptyDimensions();
|
3548 |
+
},
|
3549 |
+
|
3550 |
+
updateDimensionsValue: function() {
|
3551 |
+
var currentValue = {},
|
3552 |
+
dimensions = this.getPossibleDimensions(),
|
3553 |
+
$controls = this.ui.controls;
|
3554 |
+
|
3555 |
+
dimensions.forEach( _.bind( function( dimension ) {
|
3556 |
+
var $element = $controls.filter( '[data-setting="' + dimension + '"]' );
|
3557 |
+
|
3558 |
+
currentValue[ dimension ] = $element.length ? $element.val() : this.defaultDimensionValue;
|
3559 |
+
}, this ) );
|
3560 |
+
|
3561 |
+
this.setValue( currentValue );
|
3562 |
+
},
|
3563 |
+
|
3564 |
+
fillEmptyDimensions: function() {
|
3565 |
+
var dimensions = this.getPossibleDimensions(),
|
3566 |
+
allowedDimensions = this.model.get( 'allowed_dimensions' ),
|
3567 |
+
$controls = this.ui.controls;
|
3568 |
+
|
3569 |
+
if ( this.isLinkedDimensions() ) {
|
3570 |
+
return;
|
3571 |
+
}
|
3572 |
+
|
3573 |
+
dimensions.forEach( _.bind( function( dimension ) {
|
3574 |
+
var $element = $controls.filter( '[data-setting="' + dimension + '"]' ),
|
3575 |
+
isAllowedDimension = -1 !== _.indexOf( allowedDimensions, dimension );
|
3576 |
+
|
3577 |
+
if ( isAllowedDimension && $element.length && _.isEmpty( $element.val() ) ) {
|
3578 |
+
$element.val( this.defaultDimensionValue );
|
3579 |
+
}
|
3580 |
+
|
3581 |
+
}, this ) );
|
3582 |
+
},
|
3583 |
+
|
3584 |
+
updateDimensions: function() {
|
3585 |
+
this.fillEmptyDimensions();
|
3586 |
+
this.updateDimensionsValue();
|
3587 |
+
},
|
3588 |
+
|
3589 |
+
resetDimensions: function() {
|
3590 |
+
this.ui.controls.val( '' );
|
3591 |
+
|
3592 |
+
this.updateDimensionsValue();
|
3593 |
+
},
|
3594 |
+
|
3595 |
+
onInputChange: function( event ) {
|
3596 |
+
var inputSetting = event.target.dataset.setting;
|
3597 |
+
|
3598 |
+
if ( 'unit' === inputSetting ) {
|
3599 |
+
this.resetDimensions();
|
3600 |
+
}
|
3601 |
+
|
3602 |
+
if ( ! _.contains( this.getPossibleDimensions(), inputSetting ) ) {
|
3603 |
+
return;
|
3604 |
+
}
|
3605 |
+
|
3606 |
+
if ( this.isLinkedDimensions() ) {
|
3607 |
+
var $thisControl = this.$( event.target );
|
3608 |
+
|
3609 |
+
this.ui.controls.val( $thisControl.val() );
|
3610 |
+
}
|
3611 |
+
|
3612 |
+
this.updateDimensions();
|
3613 |
+
},
|
3614 |
+
|
3615 |
+
onLinkDimensionsClicked: function( event ) {
|
3616 |
+
event.preventDefault();
|
3617 |
+
event.stopPropagation();
|
3618 |
+
|
3619 |
+
this.ui.link.toggleClass( 'unlinked' );
|
3620 |
+
|
3621 |
+
this.setValue( 'isLinked', ! this.ui.link.hasClass( 'unlinked' ) );
|
3622 |
+
|
3623 |
+
if ( this.isLinkedDimensions() ) {
|
3624 |
+
// Set all controls value from the first control.
|
3625 |
+
this.ui.controls.val( this.ui.controls.eq( 0 ).val() );
|
3626 |
+
}
|
3627 |
+
|
3628 |
+
this.updateDimensions();
|
3629 |
+
},
|
3630 |
+
|
3631 |
+
isLinkedDimensions: function() {
|
3632 |
+
return this.getControlValue( 'isLinked' );
|
3633 |
+
}
|
3634 |
+
} );
|
3635 |
+
|
3636 |
+
module.exports = ControlDimensionsItemView;
|
3637 |
+
|
3638 |
+
},{"elementor-views/controls/base-units":40}],45:[function(require,module,exports){
|
3639 |
+
var ControlBaseItemView = require( 'elementor-views/controls/base' ),
|
3640 |
+
ControlFontItemView;
|
3641 |
+
|
3642 |
+
ControlFontItemView = ControlBaseItemView.extend( {
|
3643 |
+
ui: function() {
|
3644 |
+
var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
|
3645 |
+
|
3646 |
+
ui.fontSelect = '.elementor-control-font-family';
|
3647 |
+
|
3648 |
+
return ui;
|
3649 |
+
},
|
3650 |
+
onReady: function() {
|
3651 |
+
this.ui.fontSelect.select2( {
|
3652 |
+
dir: elementor.config.is_rtl ? 'rtl' : 'ltr'
|
3653 |
+
} );
|
3654 |
+
},
|
3655 |
+
|
3656 |
+
onBeforeDestroy: function() {
|
3657 |
+
if ( this.ui.fontSelect.data( 'select2' ) ) {
|
3658 |
+
this.ui.fontSelect.select2( 'destroy' );
|
3659 |
+
}
|
3660 |
+
this.$el.remove();
|
3661 |
+
},
|
3662 |
+
|
3663 |
+
templateHelpers: function() {
|
3664 |
+
var helpers = ControlBaseItemView.prototype.templateHelpers.apply( this, arguments );
|
3665 |
+
|
3666 |
+
helpers.getFontsByGroups = _.bind( function( groups ) {
|
3667 |
+
return _.pick( this.model.get( 'fonts' ), function( fontType, fontName ) {
|
3668 |
+
return _.isArray( groups ) ? _.contains( groups, fontType ) : fontType === groups;
|
3669 |
+
} );
|
3670 |
+
}, this );
|
3671 |
+
|
3672 |
+
return helpers;
|
3673 |
+
}
|
3674 |
+
} );
|
3675 |
+
|
3676 |
+
module.exports = ControlFontItemView;
|
3677 |
+
|
3678 |
+
},{"elementor-views/controls/base":41}],46:[function(require,module,exports){
|
3679 |
+
var ControlBaseItemView = require( 'elementor-views/controls/base' ),
|
3680 |
+
ControlMediaItemView;
|
3681 |
+
|
3682 |
+
ControlMediaItemView = ControlBaseItemView.extend( {
|
3683 |
+
ui: function() {
|
3684 |
+
var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
|
3685 |
+
|
3686 |
+
ui.controlMedia = '.elementor-control-media';
|
3687 |
+
ui.frameOpeners = '.elementor-control-media-upload-button, .elementor-control-media-image';
|
3688 |
+
ui.deleteButton = '.elementor-control-media-delete';
|
3689 |
+
|
3690 |
+
return ui;
|
3691 |
+
},
|
3692 |
+
|
3693 |
+
childEvents: {
|
3694 |
+
'click @ui.frameOpeners': 'openFrame',
|
3695 |
+
'click @ui.deleteButton': 'deleteImage'
|
3696 |
+
},
|
3697 |
+
|
3698 |
+
onReady: function() {
|
3699 |
+
if ( _.isEmpty( this.getControlValue() ) ) {
|
3700 |
+
this.ui.controlMedia.addClass( 'media-empty' );
|
3701 |
+
}
|
3702 |
+
},
|
3703 |
+
|
3704 |
+
openFrame: function() {
|
3705 |
+
this.initFrame();
|
3706 |
+
|
3707 |
+
this.frame.open();
|
3708 |
+
},
|
3709 |
+
|
3710 |
+
deleteImage: function() {
|
3711 |
+
this.setValue( '' );
|
3712 |
+
this.render();
|
3713 |
+
},
|
3714 |
+
|
3715 |
+
/**
|
3716 |
+
* Create a media modal select frame, and store it so the instance can be reused when needed.
|
3717 |
+
*/
|
3718 |
+
initFrame: function() {
|
3719 |
+
var options,
|
3720 |
+
ids = this.getControlValue();
|
3721 |
+
|
3722 |
+
options = {
|
3723 |
+
frame: 'post',
|
3724 |
+
multiple: true,
|
3725 |
+
button: {
|
3726 |
+
text: 'Insert Media'
|
3727 |
+
},
|
3728 |
+
state: 'gallery'
|
3729 |
+
};
|
3730 |
+
|
3731 |
+
if ( '' !== ids ) {
|
3732 |
+
options.selection = this.fetchSelection( ids );
|
3733 |
+
options.state = 'gallery-edit';
|
3734 |
+
}
|
3735 |
+
|
3736 |
+
this.frame = wp.media( options );
|
3737 |
+
|
3738 |
+
// When a file is selected, run a callback.
|
3739 |
+
this.frame.on( 'update', _.bind( this.select, this ) );
|
3740 |
+
this.frame.on( 'menu:render:default', _.bind( this.menuRender, this ) );
|
3741 |
+
this.frame.on( 'content:render:browse', _.bind( this.gallerySettings, this ) );
|
3742 |
+
},
|
3743 |
+
|
3744 |
+
menuRender: function( view ) {
|
3745 |
+
view.unset( 'insert' );
|
3746 |
+
view.unset( 'featured-image' );
|
3747 |
+
},
|
3748 |
+
|
3749 |
+
gallerySettings: function( browser ) {
|
3750 |
+
browser.sidebar.on( 'ready', function() {
|
3751 |
+
browser.sidebar.unset( 'gallery' );
|
3752 |
+
} );
|
3753 |
+
},
|
3754 |
+
|
3755 |
+
fetchSelection: function( ids ) {
|
3756 |
+
var idArray = ids.split( ',' ),
|
3757 |
+
args = {
|
3758 |
+
orderby: 'post__in',
|
3759 |
+
order: 'ASC',
|
3760 |
+
type: 'image',
|
3761 |
+
perPage: -1,
|
3762 |
+
post__in: idArray
|
3763 |
+
},
|
3764 |
+
attachments = wp.media.query( args ),
|
3765 |
+
selection = new wp.media.model.Selection( attachments.models, {
|
3766 |
+
props: attachments.props.toJSON(),
|
3767 |
+
multiple: true
|
3768 |
+
} );
|
3769 |
+
|
3770 |
+
return selection;
|
3771 |
+
},
|
3772 |
+
|
3773 |
+
/**
|
3774 |
+
* Callback handler for when an attachment is selected in the media modal.
|
3775 |
+
* Gets the selected image information, and sets it within the control.
|
3776 |
+
*/
|
3777 |
+
select: function( selection ) {
|
3778 |
+
var ids = selection.pluck( 'id' );
|
3779 |
+
|
3780 |
+
this.setValue( ids.toString() );
|
3781 |
+
this.render();
|
3782 |
+
},
|
3783 |
+
|
3784 |
+
onBeforeDestroy: function() {
|
3785 |
+
if ( this.frame ) {
|
3786 |
+
this.frame.off( 'update' );
|
3787 |
+
this.frame.off( 'menu:render:default' );
|
3788 |
+
this.frame.off( 'content:render:browse' );
|
3789 |
+
}
|
3790 |
+
|
3791 |
+
this.$el.remove();
|
3792 |
+
}
|
3793 |
+
} );
|
3794 |
+
|
3795 |
+
module.exports = ControlMediaItemView;
|
3796 |
+
|
3797 |
+
},{"elementor-views/controls/base":41}],47:[function(require,module,exports){
|
3798 |
+
var ControlBaseItemView = require( 'elementor-views/controls/base' ),
|
3799 |
+
ControlIconItemView;
|
3800 |
+
|
3801 |
+
ControlIconItemView = ControlBaseItemView.extend( {
|
3802 |
+
ui: function() {
|
3803 |
+
var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
|
3804 |
+
|
3805 |
+
ui.iconSelect = '.elementor-control-icon';
|
3806 |
+
|
3807 |
+
return ui;
|
3808 |
+
},
|
3809 |
+
|
3810 |
+
onReady: function() {
|
3811 |
+
this.ui.iconSelect.select2( {
|
3812 |
+
allowClear: true,
|
3813 |
+
templateResult: _.bind( this.iconsList, this ),
|
3814 |
+
templateSelection: _.bind( this.iconsList, this )
|
3815 |
+
} );
|
3816 |
+
},
|
3817 |
+
|
3818 |
+
iconsList: function( icon ) {
|
3819 |
+
if ( ! icon.id ) {
|
3820 |
+
return icon.text;
|
3821 |
+
}
|
3822 |
+
return Backbone.$(
|
3823 |
+
'<span><i class="' + icon.id + '"></i> ' + icon.text + '</span>'
|
3824 |
+
);
|
3825 |
+
},
|
3826 |
+
|
3827 |
+
onBeforeDestroy: function() {
|
3828 |
+
if ( this.ui.iconSelect.data( 'select2' ) ) {
|
3829 |
+
this.ui.iconSelect.select2( 'destroy' );
|
3830 |
+
}
|
3831 |
+
this.$el.remove();
|
3832 |
+
}
|
3833 |
+
} );
|
3834 |
+
|
3835 |
+
module.exports = ControlIconItemView;
|
3836 |
+
|
3837 |
+
},{"elementor-views/controls/base":41}],48:[function(require,module,exports){
|
3838 |
+
var ControlMultipleBaseItemView = require( 'elementor-views/controls/base-multiple' ),
|
3839 |
+
ControlMediaItemView;
|
3840 |
+
|
3841 |
+
ControlMediaItemView = ControlMultipleBaseItemView.extend( {
|
3842 |
+
ui: function() {
|
3843 |
+
var ui = ControlMultipleBaseItemView.prototype.ui.apply( this, arguments );
|
3844 |
+
|
3845 |
+
ui.controlMedia = '.elementor-control-media';
|
3846 |
+
ui.frameOpeners = '.elementor-control-media-upload-button, .elementor-control-media-image';
|
3847 |
+
ui.deleteButton = '.elementor-control-media-delete';
|
3848 |
+
|
3849 |
+
return ui;
|
3850 |
+
},
|
3851 |
+
|
3852 |
+
childEvents: {
|
3853 |
+
'click @ui.frameOpeners': 'openFrame',
|
3854 |
+
'click @ui.deleteButton': 'deleteImage'
|
3855 |
+
},
|
3856 |
+
|
3857 |
+
onReady: function() {
|
3858 |
+
if ( _.isEmpty( this.getControlValue() ) ) {
|
3859 |
+
this.ui.controlMedia.addClass( 'media-empty' );
|
3860 |
+
}
|
3861 |
+
},
|
3862 |
+
|
3863 |
+
openFrame: function() {
|
3864 |
+
if ( ! this.frame ) {
|
3865 |
+
this.initFrame();
|
3866 |
+
}
|
3867 |
+
|
3868 |
+
this.frame.open();
|
3869 |
+
},
|
3870 |
+
|
3871 |
+
deleteImage: function() {
|
3872 |
+
this.setValue( {
|
3873 |
+
url: '',
|
3874 |
+
id: ''
|
3875 |
+
} );
|
3876 |
+
|
3877 |
+
this.render();
|
3878 |
+
},
|
3879 |
+
|
3880 |
+
/**
|
3881 |
+
* Create a media modal select frame, and store it so the instance can be reused when needed.
|
3882 |
+
*/
|
3883 |
+
initFrame: function() {
|
3884 |
+
this.frame = wp.media( {
|
3885 |
+
button: {
|
3886 |
+
text: 'Insert Media' // TODO: gettext
|
3887 |
+
},
|
3888 |
+
states: [
|
3889 |
+
new wp.media.controller.Library( {
|
3890 |
+
title: 'Insert Media', // TODO: gettext
|
3891 |
+
library: wp.media.query( { type: 'image' } ),
|
3892 |
+
multiple: false,
|
3893 |
+
date: false
|
3894 |
+
} )
|
3895 |
+
]
|
3896 |
+
} );
|
3897 |
+
|
3898 |
+
// When a file is selected, run a callback.
|
3899 |
+
this.frame.on( 'insert select', _.bind( this.select, this ) );
|
3900 |
+
},
|
3901 |
+
|
3902 |
+
/**
|
3903 |
+
* Callback handler for when an attachment is selected in the media modal.
|
3904 |
+
* Gets the selected image information, and sets it within the control.
|
3905 |
+
*/
|
3906 |
+
select: function() {
|
3907 |
+
// Get the attachment from the modal frame.
|
3908 |
+
var attachment = this.frame.state().get( 'selection' ).first().toJSON();
|
3909 |
+
|
3910 |
+
if ( attachment.url ) {
|
3911 |
+
this.setValue( {
|
3912 |
+
url: attachment.url,
|
3913 |
+
id: attachment.id
|
3914 |
+
} );
|
3915 |
+
|
3916 |
+
this.render();
|
3917 |
+
}
|
3918 |
+
},
|
3919 |
+
|
3920 |
+
onBeforeDestroy: function() {
|
3921 |
+
this.$el.remove();
|
3922 |
+
}
|
3923 |
+
} );
|
3924 |
+
|
3925 |
+
module.exports = ControlMediaItemView;
|
3926 |
+
|
3927 |
+
},{"elementor-views/controls/base-multiple":39}],49:[function(require,module,exports){
|
3928 |
+
var RepeaterRowView;
|
3929 |
+
|
3930 |
+
RepeaterRowView = Marionette.CompositeView.extend( {
|
3931 |
+
template: Marionette.TemplateCache.get( '#tmpl-elementor-repeater-row' ),
|
3932 |
+
|
3933 |
+
className: 'repeater-fields',
|
3934 |
+
|
3935 |
+
ui: {
|
3936 |
+
duplicateButton: '.elementor-repeater-tool-duplicate',
|
3937 |
+
editButton: '.elementor-repeater-tool-edit',
|
3938 |
+
removeButton: '.elementor-repeater-tool-remove',
|
3939 |
+
itemNumber: '.elementor-repeater-row-item-number'
|
3940 |
+
},
|
3941 |
+
|
3942 |
+
triggers: {
|
3943 |
+
'click @ui.removeButton': 'click:remove',
|
3944 |
+
'click @ui.duplicateButton': 'click:duplicate',
|
3945 |
+
'click @ui.itemNumber': 'click:edit'
|
3946 |
+
},
|
3947 |
+
|
3948 |
+
templateHelpers: function() {
|
3949 |
+
return {
|
3950 |
+
itemIndex: this.getOption( 'itemIndex' )
|
3951 |
+
};
|
3952 |
+
},
|
3953 |
+
|
3954 |
+
childViewContainer: '.elementor-repeater-row-controls',
|
3955 |
+
|
3956 |
+
getChildView: function( item ) {
|
3957 |
+
var controlType = item.get( 'type' );
|
3958 |
+
return elementor.getControlItemView( controlType );
|
3959 |
+
},
|
3960 |
+
|
3961 |
+
childViewOptions: function() {
|
3962 |
+
return {
|
3963 |
+
elementSettingsModel: this.model
|
3964 |
+
};
|
3965 |
+
},
|
3966 |
+
|
3967 |
+
updateIndex: function( newIndex ) {
|
3968 |
+
this.itemIndex = newIndex;
|
3969 |
+
this.render();
|
3970 |
+
},
|
3971 |
+
|
3972 |
+
initialize: function( options ) {
|
3973 |
+
this.elementSettingsModel = options.elementSettingsModel;
|
3974 |
+
|
3975 |
+
this.itemIndex = 0;
|
3976 |
+
|
3977 |
+
// Collection for Controls list
|
3978 |
+
this.collection = new Backbone.Collection( options.controlFields );
|
3979 |
+
}
|
3980 |
+
} );
|
3981 |
+
|
3982 |
+
module.exports = RepeaterRowView;
|
3983 |
+
|
3984 |
+
},{}],50:[function(require,module,exports){
|
3985 |
+
var ControlBaseItemView = require( 'elementor-views/controls/base' ),
|
3986 |
+
RepeaterRowView = require( 'elementor-views/controls/repeater-row' ),
|
3987 |
+
ControlRepeaterItemView;
|
3988 |
+
|
3989 |
+
ControlRepeaterItemView = ControlBaseItemView.extend( {
|
3990 |
+
ui: {
|
3991 |
+
btnAddRow: '.elementor-repeater-add',
|
3992 |
+
fieldContainer: '.elementor-repeater-fields'
|
3993 |
+
},
|
3994 |
+
|
3995 |
+
events: {
|
3996 |
+
'click @ui.btnAddRow': 'onButtonAddRowClick',
|
3997 |
+
'sortstart @ui.fieldContainer': 'onSortStart',
|
3998 |
+
'sortupdate @ui.fieldContainer': 'onSortUpdate'
|
3999 |
+
},
|
4000 |
+
|
4001 |
+
childView: RepeaterRowView,
|
4002 |
+
|
4003 |
+
childViewContainer: '.elementor-repeater-fields',
|
4004 |
+
|
4005 |
+
templateHelpers: function() {
|
4006 |
+
return {
|
4007 |
+
data: _.extend( {}, this.model.toJSON(), { controlValue: [] } )
|
4008 |
+
};
|
4009 |
+
},
|
4010 |
+
|
4011 |
+
childViewOptions: function( childView ) {
|
4012 |
+
return {
|
4013 |
+
controlFields: this.model.get( 'fields' )
|
4014 |
+
};
|
4015 |
+
},
|
4016 |
+
|
4017 |
+
initialize: function( options ) {
|
4018 |
+
ControlBaseItemView.prototype.initialize.apply( this, arguments );
|
4019 |
+
|
4020 |
+
this.collection = this.elementSettingsModel.get( this.model.get( 'name' ) );
|
4021 |
+
|
4022 |
+
this.listenTo( this.collection, 'change add remove reset', this.onCollectionChanged, this );
|
4023 |
+
},
|
4024 |
+
|
4025 |
+
editRow: function( rowView ) {
|
4026 |
+
if ( this.currentEditableChild ) {
|
4027 |
+
this.currentEditableChild.getChildViewContainer( this.currentEditableChild ).removeClass( 'editable' );
|
4028 |
+
}
|
4029 |
+
|
4030 |
+
if ( this.currentEditableChild === rowView ) {
|
4031 |
+
delete this.currentEditableChild;
|
4032 |
+
return;
|
4033 |
+
}
|
4034 |
+
|
4035 |
+
rowView.getChildViewContainer( rowView ).addClass( 'editable' );
|
4036 |
+
|
4037 |
+
this.currentEditableChild = rowView;
|
4038 |
+
|
4039 |
+
this.updateActiveRow();
|
4040 |
+
},
|
4041 |
+
|
4042 |
+
toggleMinRowsClass: function() {
|
4043 |
+
if ( ! this.model.get( 'prevent_empty' ) ) {
|
4044 |
+
return;
|
4045 |
+
}
|
4046 |
+
|
4047 |
+
this.$el.toggleClass( 'elementor-repeater-has-minimum-rows', 1 >= this.collection.length );
|
4048 |
+
},
|
4049 |
+
|
4050 |
+
updateActiveRow: function() {
|
4051 |
+
var activeItemIndex = 0;
|
4052 |
+
|
4053 |
+
if ( this.currentEditableChild ) {
|
4054 |
+
activeItemIndex = this.currentEditableChild.itemIndex;
|
4055 |
+
}
|
4056 |
+
|
4057 |
+
this.setEditSetting( 'activeItemIndex', activeItemIndex );
|
4058 |
+
},
|
4059 |
+
|
4060 |
+
updateChildIndexes: function() {
|
4061 |
+
this.children.each( _.bind( function( view ) {
|
4062 |
+
view.updateIndex( this.collection.indexOf( view.model ) + 1 );
|
4063 |
+
}, this ) );
|
4064 |
+
},
|
4065 |
+
|
4066 |
+
onRender: function() {
|
4067 |
+
this.ui.fieldContainer.sortable( { axis: 'y' } );
|
4068 |
+
|
4069 |
+
this.toggleMinRowsClass();
|
4070 |
+
},
|
4071 |
+
|
4072 |
+
onSortStart: function( event, ui ) {
|
4073 |
+
ui.item.data( 'oldIndex', ui.item.index() );
|
4074 |
+
},
|
4075 |
+
|
4076 |
+
onSortUpdate: function( event, ui ) {
|
4077 |
+
var oldIndex = ui.item.data( 'oldIndex' ),
|
4078 |
+
model = this.collection.at( oldIndex ),
|
4079 |
+
newIndex = ui.item.index();
|
4080 |
+
|
4081 |
+
this.collection.remove( model );
|
4082 |
+
this.collection.add( model, { at: newIndex } );
|
4083 |
+
},
|
4084 |
+
|
4085 |
+
onAddChild: function() {
|
4086 |
+
this.updateChildIndexes();
|
4087 |
+
this.updateActiveRow();
|
4088 |
+
},
|
4089 |
+
|
4090 |
+
onRemoveChild: function( childView ) {
|
4091 |
+
if ( childView === this.currentEditableChild ) {
|
4092 |
+
delete this.currentEditableChild;
|
4093 |
+
}
|
4094 |
+
|
4095 |
+
this.updateChildIndexes();
|
4096 |
+
this.updateActiveRow();
|
4097 |
+
},
|
4098 |
+
|
4099 |
+
onCollectionChanged: function() {
|
4100 |
+
this.elementSettingsModel.trigger( 'change' );
|
4101 |
+
|
4102 |
+
this.toggleMinRowsClass();
|
4103 |
+
},
|
4104 |
+
|
4105 |
+
onButtonAddRowClick: function() {
|
4106 |
+
var defaults = {};
|
4107 |
+
_.each( this.model.get( 'fields' ), function( field ) {
|
4108 |
+
defaults[ field.name ] = field['default'];
|
4109 |
+
} );
|
4110 |
+
|
4111 |
+
var newModel = this.collection.add( defaults ),
|
4112 |
+
newChildView = this.children.findByModel( newModel );
|
4113 |
+
|
4114 |
+
this.editRow( newChildView );
|
4115 |
+
},
|
4116 |
+
|
4117 |
+
onChildviewClickRemove: function( childView ) {
|
4118 |
+
childView.model.destroy();
|
4119 |
+
},
|
4120 |
+
|
4121 |
+
onChildviewClickDuplicate: function( childView ) {
|
4122 |
+
this.collection.add( childView.model.clone(), { at: childView.itemIndex } );
|
4123 |
+
},
|
4124 |
+
|
4125 |
+
onChildviewClickEdit: function( childView ) {
|
4126 |
+
this.editRow( childView );
|
4127 |
+
}
|
4128 |
+
} );
|
4129 |
+
|
4130 |
+
module.exports = ControlRepeaterItemView;
|
4131 |
+
|
4132 |
+
},{"elementor-views/controls/base":41,"elementor-views/controls/repeater-row":49}],51:[function(require,module,exports){
|
4133 |
+
var ControlBaseItemView = require( 'elementor-views/controls/base' ),
|
4134 |
+
ControlSectionItemView;
|
4135 |
+
|
4136 |
+
ControlSectionItemView = ControlBaseItemView.extend( {
|
4137 |
+
ui: function() {
|
4138 |
+
var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
|
4139 |
+
|
4140 |
+
ui.heading = '.elementor-panel-heading';
|
4141 |
+
|
4142 |
+
return ui;
|
4143 |
+
},
|
4144 |
+
|
4145 |
+
triggers: {
|
4146 |
+
'click': 'control:section:clicked'
|
4147 |
+
}
|
4148 |
+
} );
|
4149 |
+
|
4150 |
+
module.exports = ControlSectionItemView;
|
4151 |
+
|
4152 |
+
},{"elementor-views/controls/base":41}],52:[function(require,module,exports){
|
4153 |
+
var ControlBaseItemView = require( 'elementor-views/controls/base' ),
|
4154 |
+
ControlSelect2ItemView;
|
4155 |
+
|
4156 |
+
ControlSelect2ItemView = ControlBaseItemView.extend( {
|
4157 |
+
ui: function() {
|
4158 |
+
var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
|
4159 |
+
|
4160 |
+
ui.select = '.elementor-select2';
|
4161 |
+
|
4162 |
+
return ui;
|
4163 |
+
},
|
4164 |
+
|
4165 |
+
onReady: function() {
|
4166 |
+
var options = {
|
4167 |
+
allowClear: true
|
4168 |
+
};
|
4169 |
+
|
4170 |
+
this.ui.select.select2( options );
|
4171 |
+
},
|
4172 |
+
|
4173 |
+
onBeforeDestroy: function() {
|
4174 |
+
if ( this.ui.select.data( 'select2' ) ) {
|
4175 |
+
this.ui.select.select2( 'destroy' );
|
4176 |
+
}
|
4177 |
+
this.$el.remove();
|
4178 |
+
}
|
4179 |
+
} );
|
4180 |
+
|
4181 |
+
module.exports = ControlSelect2ItemView;
|
4182 |
+
|
4183 |
+
},{"elementor-views/controls/base":41}],53:[function(require,module,exports){
|
4184 |
+
var ControlBaseUnitsItemView = require( 'elementor-views/controls/base-units' ),
|
4185 |
+
ControlSliderItemView;
|
4186 |
+
|
4187 |
+
ControlSliderItemView = ControlBaseUnitsItemView.extend( {
|
4188 |
+
ui: function() {
|
4189 |
+
var ui = ControlBaseUnitsItemView.prototype.ui.apply( this, arguments );
|
4190 |
+
|
4191 |
+
ui.slider = '.elementor-control-slider';
|
4192 |
+
|
4193 |
+
return ui;
|
4194 |
+
},
|
4195 |
+
|
4196 |
+
childEvents: {
|
4197 |
+
'slide @ui.slider': 'onSlideChange'
|
4198 |
+
},
|
4199 |
+
|
4200 |
+
initSlider: function() {
|
4201 |
+
var size = this.getControlValue( 'size' ),
|
4202 |
+
unitRange = this.getCurrentRange();
|
4203 |
+
|
4204 |
+
this.ui.input.attr( unitRange ).val( size );
|
4205 |
+
|
4206 |
+
this.ui.slider.slider( _.extend( {}, unitRange, { value: size } ) );
|
4207 |
+
},
|
4208 |
+
|
4209 |
+
resetSize: function() {
|
4210 |
+
this.setValue( 'size', '' );
|
4211 |
+
|
4212 |
+
this.initSlider();
|
4213 |
+
},
|
4214 |
+
|
4215 |
+
onReady: function() {
|
4216 |
+
this.initSlider();
|
4217 |
+
},
|
4218 |
+
|
4219 |
+
onSlideChange: function( event, ui ) {
|
4220 |
+
this.setValue( 'size', ui.value );
|
4221 |
+
|
4222 |
+
this.ui.input.val( ui.value );
|
4223 |
+
},
|
4224 |
+
|
4225 |
+
onInputChange: function( event ) {
|
4226 |
+
var dataChanged = event.currentTarget.dataset.setting;
|
4227 |
+
|
4228 |
+
if ( 'size' === dataChanged ) {
|
4229 |
+
this.ui.slider.slider( 'value', this.getControlValue( 'size' ) );
|
4230 |
+
} else if ( 'unit' === dataChanged ) {
|
4231 |
+
this.resetSize();
|
4232 |
+
}
|
4233 |
+
},
|
4234 |
+
|
4235 |
+
onBeforeDestroy: function() {
|
4236 |
+
this.ui.slider.slider( 'destroy' );
|
4237 |
+
this.$el.remove();
|
4238 |
+
}
|
4239 |
+
} );
|
4240 |
+
|
4241 |
+
module.exports = ControlSliderItemView;
|
4242 |
+
|
4243 |
+
},{"elementor-views/controls/base-units":40}],54:[function(require,module,exports){
|
4244 |
+
var ControlBaseItemView = require( 'elementor-views/controls/base' ),
|
4245 |
+
SectionView = require( 'elementor-views/section' ),
|
4246 |
+
ControlStructureItemView;
|
4247 |
+
|
4248 |
+
ControlStructureItemView = ControlBaseItemView.extend( {
|
4249 |
+
|
4250 |
+
templateHelpers: function() {
|
4251 |
+
var helpers = ControlBaseItemView.prototype.templateHelpers.apply( this, arguments );
|
4252 |
+
|
4253 |
+
helpers.getPresetByStructure = function( structure ) {
|
4254 |
+
return SectionView.getPresetByStructure( structure );
|
4255 |
+
};
|
4256 |
+
|
4257 |
+
helpers.getMorePresets = _.bind( this.getMorePresets, this );
|
4258 |
+
|
4259 |
+
return helpers;
|
4260 |
+
},
|
4261 |
+
|
4262 |
+
getMorePresets: function() {
|
4263 |
+
var parsedStructure = SectionView.getParsedStructure( this.getControlValue() );
|
4264 |
+
|
4265 |
+
return SectionView.getPresets( parsedStructure.columnsCount );
|
4266 |
+
},
|
4267 |
+
|
4268 |
+
onInputChange: function() {
|
4269 |
+
this.render();
|
4270 |
+
}
|
4271 |
+
} );
|
4272 |
+
|
4273 |
+
module.exports = ControlStructureItemView;
|
4274 |
+
|
4275 |
+
},{"elementor-views/controls/base":41,"elementor-views/section":59}],55:[function(require,module,exports){
|
4276 |
+
var ControlMultipleBaseItemView = require( 'elementor-views/controls/base-multiple' ),
|
4277 |
+
ControlUrlItemView;
|
4278 |
+
|
4279 |
+
ControlUrlItemView = ControlMultipleBaseItemView.extend( {
|
4280 |
+
ui: function() {
|
4281 |
+
var ui = ControlMultipleBaseItemView.prototype.ui.apply( this, arguments );
|
4282 |
+
|
4283 |
+
ui.btnExternal = 'button.elementor-control-url-target';
|
4284 |
+
|
4285 |
+
return ui;
|
4286 |
+
},
|
4287 |
+
|
4288 |
+
// Override the base events
|
4289 |
+
childEvents: {
|
4290 |
+
'click @ui.btnExternal': 'onExternalClicked'
|
4291 |
+
},
|
4292 |
+
|
4293 |
+
onReady: function() {
|
4294 |
+
var values = this.getControlValue();
|
4295 |
+
|
4296 |
+
if ( values.is_external ) {
|
4297 |
+
this.ui.btnExternal.addClass( 'active' );
|
4298 |
+
}
|
4299 |
+
|
4300 |
+
if ( values.url ) {
|
4301 |
+
this.ui.input.val( values.url );
|
4302 |
+
}
|
4303 |
+
},
|
4304 |
+
|
4305 |
+
onExternalClicked: function( event ) {
|
4306 |
+
event.preventDefault();
|
4307 |
+
|
4308 |
+
this.ui.btnExternal.toggleClass( 'active' );
|
4309 |
+
this.setValue( 'is_external', this.isExternal() );
|
4310 |
+
},
|
4311 |
+
|
4312 |
+
isExternal: function() {
|
4313 |
+
return this.ui.btnExternal.hasClass( 'active' );
|
4314 |
+
}
|
4315 |
+
} );
|
4316 |
+
|
4317 |
+
module.exports = ControlUrlItemView;
|
4318 |
+
|
4319 |
+
},{"elementor-views/controls/base-multiple":39}],56:[function(require,module,exports){
|
4320 |
+
var ControlBaseItemView = require( 'elementor-views/controls/base' ),
|
4321 |
+
ControlWPWidgetItemView;
|
4322 |
+
|
4323 |
+
ControlWPWidgetItemView = ControlBaseItemView.extend( {
|
4324 |
+
ui: function() {
|
4325 |
+
var ui = ControlBaseItemView.prototype.ui.apply( this, arguments );
|
4326 |
+
|
4327 |
+
ui.form = 'form';
|
4328 |
+
ui.loading = '.wp-widget-form-loading';
|
4329 |
+
|
4330 |
+
return ui;
|
4331 |
+
},
|
4332 |
+
|
4333 |
+
events: {
|
4334 |
+
'keyup @ui.form :input': 'onFormChanged',
|
4335 |
+
'change @ui.form :input': 'onFormChanged'
|
4336 |
+
},
|
4337 |
+
|
4338 |
+
onFormChanged: function() {
|
4339 |
+
var idBase = 'widget-' + this.model.get( 'id_base' ),
|
4340 |
+
settings = this.ui.form.elementorSerializeObject()[ idBase ].REPLACE_TO_ID;
|
4341 |
+
|
4342 |
+
this.setValue( settings );
|
4343 |
+
},
|
4344 |
+
|
4345 |
+
onReady: function() {
|
4346 |
+
Backbone.$.ajax( {
|
4347 |
+
type: 'POST',
|
4348 |
+
url: elementor.config.ajaxurl,
|
4349 |
+
data: {
|
4350 |
+
action: 'elementor_editor_get_wp_widget_form',
|
4351 |
+
widget_type: this.model.get( 'widget' ),
|
4352 |
+
data: JSON.stringify( this.elementSettingsModel.toJSON() )
|
4353 |
+
}
|
4354 |
+
} )
|
4355 |
+
.done( _.bind( function( data ) {
|
4356 |
+
this.ui.form.html( data );
|
4357 |
+
}, this ) );
|
4358 |
+
}
|
4359 |
+
} );
|
4360 |
+
|
4361 |
+
module.exports = ControlWPWidgetItemView;
|
4362 |
+
|
4363 |
+
},{"elementor-views/controls/base":41}],57:[function(require,module,exports){
|
4364 |
+
var ControlBaseItemView = require( 'elementor-views/controls/base' ),
|
4365 |
+
ControlWysiwygItemView;
|
4366 |
+
|
4367 |
+
ControlWysiwygItemView = ControlBaseItemView.extend( {
|
4368 |
+
childEvents: {
|
4369 |
+
'keyup textarea.elementor-wp-editor': 'updateElementModel'
|
4370 |
+
},
|
4371 |
+
|
4372 |
+
buttons: {
|
4373 |
+
keepInBasic: [
|
4374 |
+
'bold',
|
4375 |
+
'italic',
|
4376 |
+
'link',
|
4377 |
+
'unlink',
|
4378 |
+
'wp_adv',
|
4379 |
+
'fullscreen'
|
4380 |
+
],
|
4381 |
+
moveToBasic: {
|
4382 |
+
underline: 'italic'
|
4383 |
+
}
|
4384 |
+
},
|
4385 |
+
|
4386 |
+
initialize: function() {
|
4387 |
+
ControlBaseItemView.prototype.initialize.apply( this, arguments );
|
4388 |
+
|
4389 |
+
var self = this;
|
4390 |
+
|
4391 |
+
this.editorID = 'elementorwpeditor' + this.cid;
|
4392 |
+
|
4393 |
+
var editorConfig = {
|
4394 |
+
id: this.editorID,
|
4395 |
+
selector: '#' + this.editorID,
|
4396 |
+
setup: function( editor ) {
|
4397 |
+
editor.on( 'keyup change', function() {
|
4398 |
+
editor.save();
|
4399 |
+
|
4400 |
+
self.setValue( editor.getContent() );
|
4401 |
+
} );
|
4402 |
+
}
|
4403 |
+
};
|
4404 |
+
|
4405 |
+
tinyMCEPreInit.mceInit[ this.editorID ] = _.extend( _.clone( tinyMCEPreInit.mceInit.elementorwpeditor ), editorConfig );
|
4406 |
+
|
4407 |
+
this.rearrangeButtons();
|
4408 |
+
|
4409 |
+
// This class allows us to reduce "flicker" by hiding the editor
|
4410 |
+
// until we are done loading and modifying it.
|
4411 |
+
this.$el.addClass( 'elementor-loading-editor' );
|
4412 |
+
|
4413 |
+
// Wait a cycle before initializing the editors.
|
4414 |
+
_.defer( function() {
|
4415 |
+
// Initialize QuickTags, and set as the default mode.
|
4416 |
+
quicktags( {
|
4417 |
+
buttons: 'strong,em,del,link,img,close',
|
4418 |
+
id: self.editorID
|
4419 |
+
} );
|
4420 |
+
|
4421 |
+
switchEditors.go( self.editorID, 'tmce' );
|
4422 |
+
|
4423 |
+
// Remove default instance after initializes. This allows reinitializion an unlimited amount of times.
|
4424 |
+
_.defer( function() {
|
4425 |
+
delete QTags.instances[ 0 ];
|
4426 |
+
} );
|
4427 |
+
|
4428 |
+
} );
|
4429 |
+
},
|
4430 |
+
|
4431 |
+
attachElContent: function() {
|
4432 |
+
var editorTemplate = elementor.config.wp_editor.replace( /elementorwpeditor/g, this.editorID ).replace( '%%EDITORCONTENT%%', this.getControlValue() );
|
4433 |
+
|
4434 |
+
this.$el.html( editorTemplate );
|
4435 |
+
|
4436 |
+
return this;
|
4437 |
+
},
|
4438 |
+
|
4439 |
+
rearrangeButtons: function() {
|
4440 |
+
var editorProps = tinyMCEPreInit.mceInit[ this.editorID ],
|
4441 |
+
editorBasicToolbarButtons = editorProps.toolbar1.split( ',' ),
|
4442 |
+
editorAdvancedToolbarButtons = editorProps.toolbar2.split( ',' ),
|
4443 |
+
buttonsToKeepInBasic = Array.prototype.slice.call( this.buttons.keepInBasic ),
|
4444 |
+
buttonsToMoveToAdvanced = _.difference( editorBasicToolbarButtons, buttonsToKeepInBasic ),
|
4445 |
+
buttonsToKeepInAdvanced = _.difference( editorAdvancedToolbarButtons, Object.keys( this.buttons.moveToBasic ) );
|
4446 |
+
|
4447 |
+
_.each( this.buttons.moveToBasic, function( afterButton, button ) {
|
4448 |
+
var afterButtonIndex = buttonsToKeepInBasic.indexOf( afterButton );
|
4449 |
+
|
4450 |
+
if ( -1 !== afterButtonIndex ) {
|
4451 |
+
buttonsToKeepInBasic.splice( afterButtonIndex + 1, 0, button );
|
4452 |
+
}
|
4453 |
+
} );
|
4454 |
+
|
4455 |
+
editorProps.toolbar1 = buttonsToKeepInBasic.join( ',' );
|
4456 |
+
editorProps.toolbar2 = buttonsToMoveToAdvanced + ',' + buttonsToKeepInAdvanced;
|
4457 |
+
},
|
4458 |
+
|
4459 |
+
onBeforeDestroy: function() {
|
4460 |
+
// Remove TinyMCE and QuickTags instances
|
4461 |
+
tinymce.EditorManager.execCommand( 'mceRemoveEditor', true, this.editorID );
|
4462 |
+
delete QTags.instances[ this.editorID ];
|
4463 |
+
|
4464 |
+
// Cleanup PreInit data
|
4465 |
+
delete tinyMCEPreInit.mceInit[ this.editorID ];
|
4466 |
+
delete tinyMCEPreInit.qtInit[ this.editorID ];
|
4467 |
+
}
|
4468 |
+
} );
|
4469 |
+
|
4470 |
+
module.exports = ControlWysiwygItemView;
|
4471 |
+
|
4472 |
+
},{"elementor-views/controls/base":41}],58:[function(require,module,exports){
|
4473 |
+
var ElementEmptyView;
|
4474 |
+
|
4475 |
+
ElementEmptyView = Marionette.ItemView.extend( {
|
4476 |
+
template: '#tmpl-elementor-empty-preview',
|
4477 |
+
|
4478 |
+
className: 'elementor-empty-view',
|
4479 |
+
|
4480 |
+
events: {
|
4481 |
+
'click': 'onClickAdd'
|
4482 |
+
},
|
4483 |
+
|
4484 |
+
onClickAdd: function() {
|
4485 |
+
elementor.getPanelView().setPage( 'elements' );
|
4486 |
+
}
|
4487 |
+
} );
|
4488 |
+
|
4489 |
+
module.exports = ElementEmptyView;
|
4490 |
+
|
4491 |
+
},{}],59:[function(require,module,exports){
|
4492 |
+
var BaseElementView = require( 'elementor-views/base-element' ),
|
4493 |
+
ColumnView = require( 'elementor-views/column' ),
|
4494 |
+
SectionView;
|
4495 |
+
|
4496 |
+
SectionView = BaseElementView.extend( {
|
4497 |
+
template: Marionette.TemplateCache.get( '#tmpl-elementor-element-section-content' ),
|
4498 |
+
|
4499 |
+
childView: ColumnView,
|
4500 |
+
|
4501 |
+
className: function() {
|
4502 |
+
var classes = 'elementor-section',
|
4503 |
+
type = this.isInner() ? 'inner' : 'top';
|
4504 |
+
|
4505 |
+
classes += ' elementor-' + type + '-section';
|
4506 |
+
|
4507 |
+
return classes;
|
4508 |
+
},
|
4509 |
+
|
4510 |
+
tagName: 'section',
|
4511 |
+
|
4512 |
+
childViewContainer: '> .elementor-container > .elementor-row',
|
4513 |
+
|
4514 |
+
triggers: {
|
4515 |
+
'click .elementor-editor-section-settings-list .elementor-editor-element-edit': 'click:edit',
|
4516 |
+
'click .elementor-editor-section-settings-list .elementor-editor-element-trigger': 'click:edit',
|
4517 |
+
'click .elementor-editor-section-settings-list .elementor-editor-element-duplicate': 'click:duplicate'
|
4518 |
+
},
|
4519 |
+
|
4520 |
+
elementEvents: {
|
4521 |
+
'click .elementor-editor-section-settings-list .elementor-editor-element-remove': 'onClickRemove'
|
4522 |
+
},
|
4523 |
+
|
4524 |
+
behaviors: {
|
4525 |
+
Sortable: {
|
4526 |
+
behaviorClass: require( 'elementor-behaviors/sortable' ),
|
4527 |
+
elChildType: 'column'
|
4528 |
+
},
|
4529 |
+
HandleDuplicate: {
|
4530 |
+
behaviorClass: require( 'elementor-behaviors/handle-duplicate' )
|
4531 |
+
},
|
4532 |
+
HandleEditor: {
|
4533 |
+
behaviorClass: require( 'elementor-behaviors/handle-editor' )
|
4534 |
+
},
|
4535 |
+
HandleEditMode: {
|
4536 |
+
behaviorClass: require( 'elementor-behaviors/handle-edit-mode' )
|
4537 |
+
},
|
4538 |
+
HandleAddMode: {
|
4539 |
+
behaviorClass: require( 'elementor-behaviors/duplicate' )
|
4540 |
+
},
|
4541 |
+
HandleElementsRelation: {
|
4542 |
+
behaviorClass: require( 'elementor-behaviors/elements-relation' )
|
4543 |
+
}
|
4544 |
+
},
|
4545 |
+
|
4546 |
+
initialize: function() {
|
4547 |
+
BaseElementView.prototype.initialize.apply( this, arguments );
|
4548 |
+
|
4549 |
+
this.listenTo( this.collection, 'add remove reset', this._checkIsFull );
|
4550 |
+
this.listenTo( this.collection, 'remove', this.onCollectionRemove );
|
4551 |
+
this.listenTo( this.model, 'change:settings:structure', this.onStructureChanged );
|
4552 |
+
},
|
4553 |
+
|
4554 |
+
addEmptyColumn: function() {
|
4555 |
+
this.addChildModel( {
|
4556 |
+
id: elementor.helpers.getUniqueID(),
|
4557 |
+
elType: 'column',
|
4558 |
+
settings: {},
|
4559 |
+
elements: []
|
4560 |
+
} );
|
4561 |
+
},
|
4562 |
+
|
4563 |
+
addChildModel: function( model, options ) {
|
4564 |
+
var isModelInstance = model instanceof Backbone.Model,
|
4565 |
+
isInner = this.isInner();
|
4566 |
+
|
4567 |
+
if ( isModelInstance ) {
|
4568 |
+
model.set( 'isInner', isInner );
|
4569 |
+
} else {
|
4570 |
+
model.isInner = isInner;
|
4571 |
+
}
|
4572 |
+
|
4573 |
+
return BaseElementView.prototype.addChildModel.apply( this, arguments );
|
4574 |
+
},
|
4575 |
+
|
4576 |
+
getSortableOptions: function() {
|
4577 |
+
var sectionConnectClass = this.isInner() ? '.elementor-inner-section' : '.elementor-top-section';
|
4578 |
+
|
4579 |
+
return {
|
4580 |
+
connectWith: sectionConnectClass + ' > .elementor-container > .elementor-row',
|
4581 |
+
handle: '> .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-trigger',
|
4582 |
+
items: '> .elementor-column'
|
4583 |
+
};
|
4584 |
+
},
|
4585 |
+
|
4586 |
+
getColumnPercentSize: function( element, size ) {
|
4587 |
+
return size / element.parent().width() * 100;
|
4588 |
+
},
|
4589 |
+
|
4590 |
+
getDefaultStructure: function() {
|
4591 |
+
return this.collection.length + '0';
|
4592 |
+
},
|
4593 |
+
|
4594 |
+
getStructure: function() {
|
4595 |
+
return this.model.getSetting( 'structure' );
|
4596 |
+
},
|
4597 |
+
|
4598 |
+
setStructure: function( structure ) {
|
4599 |
+
var parsedStructure = SectionView.getParsedStructure( structure );
|
4600 |
+
if ( +parsedStructure.columnsCount !== this.collection.length ) {
|
4601 |
+
throw new TypeError( 'The provided structure doesn\'t match the columns count.' );
|
4602 |
+
}
|
4603 |
+
|
4604 |
+
this.model.setSetting( 'structure', structure, true );
|
4605 |
+
},
|
4606 |
+
|
4607 |
+
redefineLayout: function() {
|
4608 |
+
var preset = SectionView.getPresetByStructure( this.getStructure() );
|
4609 |
+
|
4610 |
+
this.collection.each( function( model, index ) {
|
4611 |
+
model.setSetting( '_column_size', preset.preset[ index ] );
|
4612 |
+
model.setSetting( '_inline_size', null );
|
4613 |
+
} );
|
4614 |
+
|
4615 |
+
this.children.invoke( 'changeSizeUI' );
|
4616 |
+
},
|
4617 |
+
|
4618 |
+
resetLayout: function() {
|
4619 |
+
this.setStructure( this.getDefaultStructure() );
|
4620 |
+
},
|
4621 |
+
|
4622 |
+
isCollectionFilled: function() {
|
4623 |
+
var MAX_SIZE = 10,
|
4624 |
+
columnsCount = this.collection.length;
|
4625 |
+
|
4626 |
+
return ( MAX_SIZE <= columnsCount );
|
4627 |
+
},
|
4628 |
+
|
4629 |
+
_checkIsFull: function() {
|
4630 |
+
this.$el.toggleClass( 'elementor-section-filled', this.isCollectionFilled() );
|
4631 |
+
},
|
4632 |
+
|
4633 |
+
_checkIsEmpty: function() {
|
4634 |
+
if ( ! this.collection.length ) {
|
4635 |
+
this.addEmptyColumn();
|
4636 |
+
}
|
4637 |
+
},
|
4638 |
+
|
4639 |
+
onBeforeRender: function() {
|
4640 |
+
this._checkIsEmpty();
|
4641 |
+
},
|
4642 |
+
|
4643 |
+
onRender: function() {
|
4644 |
+
this._checkIsFull();
|
4645 |
+
|
4646 |
+
this.redefineLayout();
|
4647 |
+
},
|
4648 |
+
|
4649 |
+
onAddChild: function() {
|
4650 |
+
if ( ! this.isBuffering ) {
|
4651 |
+
// Reset the layout just when we have really add/remove element.
|
4652 |
+
this.resetLayout();
|
4653 |
+
}
|
4654 |
+
},
|
4655 |
+
|
4656 |
+
onCollectionRemove: function() {
|
4657 |
+
// If it's the last column, please create new one.
|
4658 |
+
this._checkIsEmpty();
|
4659 |
+
|
4660 |
+
this.resetLayout();
|
4661 |
+
},
|
4662 |
+
|
4663 |
+
onChildviewRequestResize: function( childView, ui ) {
|
4664 |
+
// Get current column details
|
4665 |
+
var currentSize = childView.model.getSetting( '_inline_size' );
|
4666 |
+
|
4667 |
+
if ( ! currentSize ) {
|
4668 |
+
currentSize = this.getColumnPercentSize( ui.element, ui.originalSize.width );
|
4669 |
+
}
|
4670 |
+
|
4671 |
+
var newSize = this.getColumnPercentSize( ui.element, ui.size.width ),
|
4672 |
+
difference = newSize - currentSize;
|
4673 |
+
|
4674 |
+
ui.element.css( {
|
4675 |
+
//width: currentSize + '%',
|
4676 |
+
width: '',
|
4677 |
+
left: 'initial' // Fix for RTL resizing
|
4678 |
+
} );
|
4679 |
+
|
4680 |
+
// Get next column details
|
4681 |
+
var modelIndex = this.collection.indexOf( childView.model ),
|
4682 |
+
nextModel = this.collection.at( modelIndex + 1 ),
|
4683 |
+
nextChildView = this.children.findByModelCid( nextModel.cid );
|
4684 |
+
|
4685 |
+
if ( ! nextChildView ) {
|
4686 |
+
return;
|
4687 |
+
}
|
4688 |
+
|
4689 |
+
var $nextElement = nextChildView.$el,
|
4690 |
+
nextElementCurrentSize = this.getColumnPercentSize( $nextElement, $nextElement.width() ),
|
4691 |
+
nextElementNewSize = nextElementCurrentSize - difference;
|
4692 |
+
|
4693 |
+
if ( newSize < 10 || newSize > 100 || ! difference || nextElementNewSize < 10 || nextElementNewSize > 100 ) {
|
4694 |
+
return;
|
4695 |
+
}
|
4696 |
+
|
4697 |
+
// Set the current column size
|
4698 |
+
childView.model.setSetting( '_inline_size', newSize.toFixed( 3 ) );
|
4699 |
+
childView.changeSizeUI();
|
4700 |
+
|
4701 |
+
// Set the next column size
|
4702 |
+
nextChildView.model.setSetting( '_inline_size', nextElementNewSize.toFixed( 3 ) );
|
4703 |
+
nextChildView.changeSizeUI();
|
4704 |
+
},
|
4705 |
+
|
4706 |
+
onSettingsChanged: function() {
|
4707 |
+
BaseElementView.prototype.onSettingsChanged.apply( this, arguments );
|
4708 |
+
|
4709 |
+
this.render();
|
4710 |
+
},
|
4711 |
+
|
4712 |
+
onStructureChanged: function() {
|
4713 |
+
this.redefineLayout();
|
4714 |
+
}
|
4715 |
+
}, {
|
4716 |
+
// Static methods
|
4717 |
+
getPresets: function( columnsCount, presetIndex ) {
|
4718 |
+
var presets = elementor.helpers.cloneObject( elementor.config.elements.section.presets );
|
4719 |
+
|
4720 |
+
if ( columnsCount ) {
|
4721 |
+
presets = presets[ columnsCount ];
|
4722 |
+
}
|
4723 |
+
|
4724 |
+
if ( presetIndex ) {
|
4725 |
+
presets = presets[ presetIndex ];
|
4726 |
+
}
|
4727 |
+
|
4728 |
+
return presets;
|
4729 |
+
},
|
4730 |
+
|
4731 |
+
getPresetByStructure: function( structure ) {
|
4732 |
+
var parsedStructure = SectionView.getParsedStructure( structure );
|
4733 |
+
|
4734 |
+
return SectionView.getPresets( parsedStructure.columnsCount, parsedStructure.presetIndex );
|
4735 |
+
},
|
4736 |
+
|
4737 |
+
getParsedStructure: function( structure ) {
|
4738 |
+
return {
|
4739 |
+
columnsCount: structure.slice( 0, -1 ),
|
4740 |
+
presetIndex: structure.substr( -1 )
|
4741 |
+
};
|
4742 |
+
}
|
4743 |
+
} );
|
4744 |
+
|
4745 |
+
module.exports = SectionView;
|
4746 |
+
|
4747 |
+
},{"elementor-behaviors/duplicate":2,"elementor-behaviors/elements-relation":3,"elementor-behaviors/handle-duplicate":4,"elementor-behaviors/handle-edit-mode":5,"elementor-behaviors/handle-editor":6,"elementor-behaviors/sortable":8,"elementor-views/base-element":37,"elementor-views/column":38}],60:[function(require,module,exports){
|
4748 |
+
var SectionView = require( 'elementor-views/section' ),
|
4749 |
+
SectionsCollectionView;
|
4750 |
+
|
4751 |
+
SectionsCollectionView = Marionette.CompositeView.extend( {
|
4752 |
+
template: Marionette.TemplateCache.get( '#tmpl-elementor-preview' ),
|
4753 |
+
|
4754 |
+
id: 'elementor-inner',
|
4755 |
+
|
4756 |
+
childViewContainer: '#elementor-section-wrap',
|
4757 |
+
|
4758 |
+
childView: SectionView,
|
4759 |
+
|
4760 |
+
ui: {
|
4761 |
+
addSectionArea: '#elementor-add-section',
|
4762 |
+
addNewSection: '#elementor-add-new-section',
|
4763 |
+
closePresetsIcon: '#elementor-select-preset-close',
|
4764 |
+
addIcon: '#elementor-add-section-button',
|
4765 |
+
selectPreset: '#elementor-select-preset',
|
4766 |
+
presets: '.elementor-preset'
|
4767 |
+
},
|
4768 |
+
|
4769 |
+
events: {
|
4770 |
+
'click @ui.addIcon': 'showSelectPresets',
|
4771 |
+
'click @ui.closePresetsIcon': 'closeSelectPresets',
|
4772 |
+
'click @ui.presets': 'onPresetSelected'
|
4773 |
+
},
|
4774 |
+
|
4775 |
+
behaviors: {
|
4776 |
+
Sortable: {
|
4777 |
+
behaviorClass: require( 'elementor-behaviors/sortable' ),
|
4778 |
+
elChildType: 'section'
|
4779 |
+
},
|
4780 |
+
HandleDuplicate: {
|
4781 |
+
behaviorClass: require( 'elementor-behaviors/handle-duplicate' )
|
4782 |
+
},
|
4783 |
+
HandleAdd: {
|
4784 |
+
behaviorClass: require( 'elementor-behaviors/duplicate' )
|
4785 |
+
},
|
4786 |
+
HandleElementsRelation: {
|
4787 |
+
behaviorClass: require( 'elementor-behaviors/elements-relation' )
|
4788 |
+
}
|
4789 |
+
},
|
4790 |
+
|
4791 |
+
getSortableOptions: function() {
|
4792 |
+
return {
|
4793 |
+
handle: '> .elementor-container > .elementor-row > .elementor-column > .elementor-element-overlay .elementor-editor-section-settings-list .elementor-editor-element-trigger',
|
4794 |
+
items: '> .elementor-section'
|
4795 |
+
};
|
4796 |
+
},
|
4797 |
+
|
4798 |
+
getChildType: function() {
|
4799 |
+
return [ 'section' ];
|
4800 |
+
},
|
4801 |
+
|
4802 |
+
isCollectionFilled: function() {
|
4803 |
+
return false;
|
4804 |
+
},
|
4805 |
+
|
4806 |
+
initialize: function() {
|
4807 |
+
if ( 1 > this.collection.length ) {
|
4808 |
+
this.addChildModel( {
|
4809 |
+
id: elementor.helpers.getUniqueID(),
|
4810 |
+
elType: 'section',
|
4811 |
+
settings: {},
|
4812 |
+
elements: []
|
4813 |
+
} );
|
4814 |
+
}
|
4815 |
+
},
|
4816 |
+
|
4817 |
+
addChildModel: function( model, options ) {
|
4818 |
+
return this.collection.add( model, options, true );
|
4819 |
+
},
|
4820 |
+
|
4821 |
+
addSection: function( properties ) {
|
4822 |
+
var newSection = {
|
4823 |
+
id: elementor.helpers.getUniqueID(),
|
4824 |
+
elType: 'section',
|
4825 |
+
settings: {},
|
4826 |
+
elements: []
|
4827 |
+
};
|
4828 |
+
|
4829 |
+
if ( properties ) {
|
4830 |
+
_.extend( newSection, properties );
|
4831 |
+
}
|
4832 |
+
|
4833 |
+
var newModel = this.addChildModel( newSection );
|
4834 |
+
|
4835 |
+
return this.children.findByModelCid( newModel.cid );
|
4836 |
+
},
|
4837 |
+
|
4838 |
+
showSelectPresets: function() {
|
4839 |
+
this.ui.addNewSection.hide();
|
4840 |
+
this.ui.selectPreset.show();
|
4841 |
+
},
|
4842 |
+
|
4843 |
+
closeSelectPresets: function() {
|
4844 |
+
this.ui.addNewSection.show();
|
4845 |
+
this.ui.selectPreset.hide();
|
4846 |
+
},
|
4847 |
+
|
4848 |
+
onRender: function() {
|
4849 |
+
var self = this;
|
4850 |
+
|
4851 |
+
self.ui.addSectionArea.html5Droppable( {
|
4852 |
+
axis: [ 'vertical' ],
|
4853 |
+
groups: [ 'elementor-element' ],
|
4854 |
+
onDragging: function( side ) {
|
4855 |
+
if ( self.ui.addSectionArea.data( 'side' ) !== side ) {
|
4856 |
+
self.ui.addSectionArea.attr( 'data-side', side );
|
4857 |
+
}
|
4858 |
+
},
|
4859 |
+
onDragLeave: function() {
|
4860 |
+
self.ui.addSectionArea.removeAttr( 'data-side' );
|
4861 |
+
},
|
4862 |
+
onDropping: function() {
|
4863 |
+
var elementView = elementor.panelElements.request( 'element:selected' ),
|
4864 |
+
newSection = self.addSection();
|
4865 |
+
|
4866 |
+
var widgetData = {
|
4867 |
+
id: elementor.helpers.getUniqueID(),
|
4868 |
+
elType: 'widget',
|
4869 |
+
widgetType: elementView.model.get( 'widgetType' )
|
4870 |
+
};
|
4871 |
+
|
4872 |
+
newSection.triggerMethod( 'request:add', widgetData );
|
4873 |
+
}
|
4874 |
+
} );
|
4875 |
+
},
|
4876 |
+
|
4877 |
+
onPresetSelected: function( event ) {
|
4878 |
+
this.closeSelectPresets();
|
4879 |
+
|
4880 |
+
var selectedStructure = event.currentTarget.dataset.structure,
|
4881 |
+
parsedStructure = SectionView.getParsedStructure( selectedStructure ),
|
4882 |
+
elements = [],
|
4883 |
+
loopIndex;
|
4884 |
+
|
4885 |
+
for ( loopIndex = 0; loopIndex < parsedStructure.columnsCount; loopIndex++ ) {
|
4886 |
+
elements.push( {
|
4887 |
+
id: elementor.helpers.getUniqueID(),
|
4888 |
+
elType: 'column',
|
4889 |
+
settings: {},
|
4890 |
+
elements: []
|
4891 |
+
} );
|
4892 |
+
}
|
4893 |
+
|
4894 |
+
var newSection = this.addSection( { elements: elements } );
|
4895 |
+
|
4896 |
+
newSection.setStructure( selectedStructure );
|
4897 |
+
}
|
4898 |
+
} );
|
4899 |
+
|
4900 |
+
module.exports = SectionsCollectionView;
|
4901 |
+
|
4902 |
+
},{"elementor-behaviors/duplicate":2,"elementor-behaviors/elements-relation":3,"elementor-behaviors/handle-duplicate":4,"elementor-behaviors/sortable":8,"elementor-views/section":59}],61:[function(require,module,exports){
|
4903 |
+
var BaseElementView = require( 'elementor-views/base-element' );
|
4904 |
+
|
4905 |
+
var WidgetView = BaseElementView.extend( {
|
4906 |
+
_templateType: null,
|
4907 |
+
|
4908 |
+
getTemplate: function() {
|
4909 |
+
if ( 'remote' !== this.getTemplateType() ) {
|
4910 |
+
return Marionette.TemplateCache.get( '#tmpl-elementor-widget-' + this.model.get( 'widgetType' ) + '-content' );
|
4911 |
+
} else {
|
4912 |
+
return _.template( '' );
|
4913 |
+
}
|
4914 |
+
},
|
4915 |
+
|
4916 |
+
className: function() {
|
4917 |
+
return 'elementor-widget elementor-widget-' + this.model.get( 'widgetType' );
|
4918 |
+
},
|
4919 |
+
|
4920 |
+
modelEvents: {
|
4921 |
+
'before:remote:render': 'onModelBeforeRemoteRender',
|
4922 |
+
'remote:render': 'onModelRemoteRender'
|
4923 |
+
},
|
4924 |
+
|
4925 |
+
triggers: {
|
4926 |
+
'click > .elementor-element-overlay': {
|
4927 |
+
event: 'click:edit',
|
4928 |
+
stopPropagation: false
|
4929 |
+
},
|
4930 |
+
'click > .elementor-element-overlay .elementor-editor-add-element': 'click:add',
|
4931 |
+
'click > .elementor-element-overlay .elementor-editor-element-duplicate': 'click:duplicate'
|
4932 |
+
},
|
4933 |
+
|
4934 |
+
ui: {
|
4935 |
+
settings: '> .elementor-element-overlay .elementor-editor-widget-settings'
|
4936 |
+
},
|
4937 |
+
|
4938 |
+
elementEvents: {
|
4939 |
+
'click': 'showSettings',
|
4940 |
+
'mouseleave @ui.settings': 'hideSettings',
|
4941 |
+
'click > .elementor-element-overlay .elementor-editor-element-remove': 'onClickRemove'
|
4942 |
+
},
|
4943 |
+
|
4944 |
+
behaviors: {
|
4945 |
+
HandleEditor: {
|
4946 |
+
behaviorClass: require( 'elementor-behaviors/handle-editor' )
|
4947 |
+
},
|
4948 |
+
HandleEditMode: {
|
4949 |
+
behaviorClass: require( 'elementor-behaviors/handle-edit-mode' )
|
4950 |
+
}
|
4951 |
+
},
|
4952 |
+
|
4953 |
+
initialize: function() {
|
4954 |
+
BaseElementView.prototype.initialize.apply( this, arguments );
|
4955 |
+
|
4956 |
+
if ( ! this.model.getHtmlCache() ) {
|
4957 |
+
this.model.renderRemoteServer();
|
4958 |
+
}
|
4959 |
+
},
|
4960 |
+
|
4961 |
+
getTemplateType: function() {
|
4962 |
+
if ( null === this.getOption( '_templateType' ) ) {
|
4963 |
+
var $template = Backbone.$( '#tmpl-elementor-widget-' + this.model.get( 'widgetType' ) + '-content' );
|
4964 |
+
|
4965 |
+
if ( 0 === $template.length ) {
|
4966 |
+
this._templateType = 'remote';
|
4967 |
+
} else {
|
4968 |
+
this._templateType = 'js';
|
4969 |
+
}
|
4970 |
+
}
|
4971 |
+
|
4972 |
+
return this.getOption( '_templateType' );
|
4973 |
+
},
|
4974 |
+
|
4975 |
+
onModelBeforeRemoteRender: function() {
|
4976 |
+
this.$el.addClass( 'elementor-loading' );
|
4977 |
+
},
|
4978 |
+
|
4979 |
+
onBeforeDestroy: function() {
|
4980 |
+
// Remove old style from the DOM.
|
4981 |
+
elementor.$previewContents.find( '#elementor-style-' + this.model.cid ).remove();
|
4982 |
+
},
|
4983 |
+
|
4984 |
+
onModelRemoteRender: function() {
|
4985 |
+
if ( this.isDestroyed ) {
|
4986 |
+
return;
|
4987 |
+
}
|
4988 |
+
|
4989 |
+
this.$el.removeClass( 'elementor-loading' );
|
4990 |
+
this.render();
|
4991 |
+
},
|
4992 |
+
|
4993 |
+
onSettingsChanged: function( settings ) {
|
4994 |
+
BaseElementView.prototype.onSettingsChanged.apply( this, arguments );
|
4995 |
+
|
4996 |
+
switch ( this.getTemplateType() ) {
|
4997 |
+
case 'js' :
|
4998 |
+
this.model.setHtmlCache();
|
4999 |
+
this.render();
|
5000 |
+
break;
|
5001 |
+
|
5002 |
+
default :
|
5003 |
+
this.model.renderRemoteServer();
|
5004 |
+
}
|
5005 |
+
},
|
5006 |
+
|
5007 |
+
attachElContent: function( html ) {
|
5008 |
+
var htmlCache = this.model.getHtmlCache();
|
5009 |
+
|
5010 |
+
if ( htmlCache ) {
|
5011 |
+
html = htmlCache;
|
5012 |
+
}
|
5013 |
+
|
5014 |
+
this.$el.html( html );
|
5015 |
+
|
5016 |
+
return this;
|
5017 |
+
},
|
5018 |
+
|
5019 |
+
onRender: function() {
|
5020 |
+
this.$el
|
5021 |
+
.removeClass( 'elementor-widget-empty' )
|
5022 |
+
.find( '> .elementor-element-overlay .elementor-widget-empty-icon' ).remove();
|
5023 |
+
|
5024 |
+
this.$el.imagesLoaded().always( _.bind( function() {
|
5025 |
+
// Is element empty?
|
5026 |
+
if ( 1 > this.$el.height() ) {
|
5027 |
+
this.$el.addClass( 'elementor-widget-empty' );
|
5028 |
+
|
5029 |
+
// TODO: REMOVE THIS !!
|
5030 |
+
// TEMP CODING !!
|
5031 |
+
this.$( '> .elementor-element-overlay' ).append( '<i class="elementor-widget-empty-icon fa fa-' + this.model.getIcon() + '"></i>' );
|
5032 |
+
}
|
5033 |
+
}, this ) );
|
5034 |
+
},
|
5035 |
+
|
5036 |
+
showSettings: function( event ) {
|
5037 |
+
var positionSettings = {
|
5038 |
+
my: elementor.config.is_rtl ? 'right+15 center' : 'left-15 center',
|
5039 |
+
of: event,
|
5040 |
+
collision: 'fit',
|
5041 |
+
within: this.$el
|
5042 |
+
};
|
5043 |
+
|
5044 |
+
this.ui.settings.addClass( 'elementor-open' ).position( positionSettings );
|
5045 |
+
},
|
5046 |
+
|
5047 |
+
hideSettings: function() {
|
5048 |
+
this.ui.settings.removeClass( 'elementor-open' );
|
5049 |
+
}
|
5050 |
+
} );
|
5051 |
+
|
5052 |
+
module.exports = WidgetView;
|
5053 |
+
|
5054 |
+
},{"elementor-behaviors/handle-edit-mode":5,"elementor-behaviors/handle-editor":6,"elementor-views/base-element":37}]},{},[1])
|
5055 |
+
//# sourceMappingURL=app.js.map
|
assets/admin/js/app.js.map
ADDED
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"version": 3,
|
3 |
+
"sources": [
|
4 |
+
"node_modules/browserify/node_modules/browser-pack/_prelude.js",
|
5 |
+
"assets/admin/js/dev/app.js",
|
6 |
+
"assets/admin/js/dev/behaviors/duplicate.js",
|
7 |
+
"assets/admin/js/dev/behaviors/elements-relation.js",
|
8 |
+
"assets/admin/js/dev/behaviors/handle-duplicate.js",
|
9 |
+
"assets/admin/js/dev/behaviors/handle-edit-mode.js",
|
10 |
+
"assets/admin/js/dev/behaviors/handle-editor.js",
|
11 |
+
"assets/admin/js/dev/behaviors/resizable.js",
|
12 |
+
"assets/admin/js/dev/behaviors/sortable.js",
|
13 |
+
"assets/admin/js/dev/layouts/edit-mode.js",
|
14 |
+
"assets/admin/js/dev/layouts/panel/footer.js",
|
15 |
+
"assets/admin/js/dev/layouts/panel/header.js",
|
16 |
+
"assets/admin/js/dev/layouts/panel/pages/editor.js",
|
17 |
+
"assets/admin/js/dev/layouts/panel/pages/elements/collections/elements.js",
|
18 |
+
"assets/admin/js/dev/layouts/panel/pages/elements/elements.js",
|
19 |
+
"assets/admin/js/dev/layouts/panel/pages/elements/models/element.js",
|
20 |
+
"assets/admin/js/dev/layouts/panel/pages/elements/views/element.js",
|
21 |
+
"assets/admin/js/dev/layouts/panel/pages/elements/views/elements.js",
|
22 |
+
"assets/admin/js/dev/layouts/panel/pages/elements/views/search.js",
|
23 |
+
"assets/admin/js/dev/layouts/panel/pages/menu/menu.js",
|
24 |
+
"assets/admin/js/dev/layouts/panel/pages/menu/views/item.js",
|
25 |
+
"assets/admin/js/dev/layouts/panel/pages/schemes/base.js",
|
26 |
+
"assets/admin/js/dev/layouts/panel/pages/schemes/colors.js",
|
27 |
+
"assets/admin/js/dev/layouts/panel/pages/schemes/items/base.js",
|
28 |
+
"assets/admin/js/dev/layouts/panel/pages/schemes/items/color.js",
|
29 |
+
"assets/admin/js/dev/layouts/panel/pages/schemes/items/typography.js",
|
30 |
+
"assets/admin/js/dev/layouts/panel/pages/schemes/typography.js",
|
31 |
+
"assets/admin/js/dev/layouts/panel/panel.js",
|
32 |
+
"assets/admin/js/dev/models/base-settings.js",
|
33 |
+
"assets/admin/js/dev/models/column-settings.js",
|
34 |
+
"assets/admin/js/dev/models/element.js",
|
35 |
+
"assets/admin/js/dev/models/row-settings.js",
|
36 |
+
"assets/admin/js/dev/models/section-settings.js",
|
37 |
+
"assets/admin/js/dev/models/widget-settings.js",
|
38 |
+
"assets/admin/js/dev/utils/heartbeat.js",
|
39 |
+
"assets/admin/js/dev/utils/helpers.js",
|
40 |
+
"assets/admin/js/dev/utils/schemes.js",
|
41 |
+
"assets/admin/js/dev/views/base-element.js",
|
42 |
+
"assets/admin/js/dev/views/column.js",
|
43 |
+
"assets/admin/js/dev/views/controls/base-multiple.js",
|
44 |
+
"assets/admin/js/dev/views/controls/base-units.js",
|
45 |
+
"assets/admin/js/dev/views/controls/base.js",
|
46 |
+
"assets/admin/js/dev/views/controls/choose.js",
|
47 |
+
"assets/admin/js/dev/views/controls/color.js",
|
48 |
+
"assets/admin/js/dev/views/controls/dimensions.js",
|
49 |
+
"assets/admin/js/dev/views/controls/font.js",
|
50 |
+
"assets/admin/js/dev/views/controls/gallery.js",
|
51 |
+
"assets/admin/js/dev/views/controls/icon.js",
|
52 |
+
"assets/admin/js/dev/views/controls/media.js",
|
53 |
+
"assets/admin/js/dev/views/controls/repeater-row.js",
|
54 |
+
"assets/admin/js/dev/views/controls/repeater.js",
|
55 |
+
"assets/admin/js/dev/views/controls/section.js",
|
56 |
+
"assets/admin/js/dev/views/controls/select2.js",
|
57 |
+
"assets/admin/js/dev/views/controls/slider.js",
|
58 |
+
"assets/admin/js/dev/views/controls/structure.js",
|
59 |
+
"assets/admin/js/dev/views/controls/url.js",
|
60 |
+
"assets/admin/js/dev/views/controls/wp_widget.js",
|
61 |
+
"assets/admin/js/dev/views/controls/wysiwyg.js",
|
62 |
+
"assets/admin/js/dev/views/element-empty.js",
|
63 |
+
"assets/admin/js/dev/views/section.js",
|
64 |
+
"assets/admin/js/dev/views/sections.js",
|
65 |
+
"assets/admin/js/dev/views/widget.js"
|
66 |
+
],
|
67 |
+
"names": [],
|
68 |
+
"mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",
|
69 |
+
"file": "generated.js",
|
70 |
+
"sourceRoot": "",
|
71 |
+
"sourcesContent": [
|
72 |
+
"(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})",
|
73 |
+
"/* global ElementorConfig */\nvar App;\n\nApp = Marionette.Application.extend( {\n\thelpers: require( 'elementor-utils/helpers' ),\n\theartbeat: require( 'elementor-utils/heartbeat' ),\n\tschemes: require( 'elementor-utils/schemes' ),\n\n\t// Channels\n\teditor: Backbone.Radio.channel( 'ELEMENTOR:editor' ),\n\tdata: Backbone.Radio.channel( 'ELEMENTOR:data' ),\n\tfilterState: Backbone.Radio.channel( 'ELEMENTOR:filterState' ),\n\telementLibrary: Backbone.Radio.channel( 'ELEMENTOR:elementLibrary' ),\n\tpanelElements: Backbone.Radio.channel( 'ELEMENTOR:panelElements' ),\n\tdataEditMode: Backbone.Radio.channel( 'ELEMENTOR:editmode' ),\n\tpreview: Backbone.Radio.channel( 'ELEMENTOR:preview' ),\n\tdeviceMode: Backbone.Radio.channel( 'ELEMENTOR:deviceMode' ),\n\n\t// Private Members\n\t_controlsItemView: null,\n\n\tgetElementData: function( modelElement ) {\n\t\tvar elType = modelElement.get( 'elType' );\n\n\t\tif ( 'widget' === elType ) {\n\t\t\tvar widgetType = modelElement.get( 'widgetType' );\n\n\t\t\tif ( ! this.config.widgets[ widgetType ] ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.config.widgets[ widgetType ];\n\t\t}\n\n\t\tif ( ! this.config.elements[ elType ] ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this.config.elements[ elType ];\n\t},\n\n\tgetElementControls: function( modelElement ) {\n\t\tvar elementData = this.getElementData( modelElement );\n\n\t\tif ( ! elementData ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar elType = modelElement.get( 'elType' ),\n\t\t\tisInner = modelElement.get( 'isInner' );\n\n\t\tif ( 'widget' === elType ) {\n\t\t\treturn elementData.controls;\n\t\t}\n\n\t\treturn _.filter( elementData.controls, function( controlData ) {\n\t\t\treturn ! ( isInner && controlData.hide_in_inner || ! isInner && controlData.hide_in_top );\n\t\t} );\n\t},\n\n\tgetControlItemView: function( controlType ) {\n\t\tif ( null === this._controlsItemView ) {\n\t\t\tthis._controlsItemView = {\n\t\t\t\tcolor: require( 'elementor-views/controls/color' ),\n\t\t\t\tdimensions: require( 'elementor-views/controls/dimensions' ),\n\t\t\t\tmedia: require( 'elementor-views/controls/media' ),\n\t\t\t\tslider: require( 'elementor-views/controls/slider' ),\n\t\t\t\twysiwyg: require( 'elementor-views/controls/wysiwyg' ),\n\t\t\t\tchoose: require( 'elementor-views/controls/choose' ),\n\t\t\t\turl: require( 'elementor-views/controls/url' ),\n\t\t\t\tfont: require( 'elementor-views/controls/font' ),\n\t\t\t\tsection: require( 'elementor-views/controls/section' ),\n\t\t\t\trepeater: require( 'elementor-views/controls/repeater' ),\n\t\t\t\twp_widget: require( 'elementor-views/controls/wp_widget' ),\n\t\t\t\ticon: require( 'elementor-views/controls/icon' ),\n\t\t\t\tgallery: require( 'elementor-views/controls/gallery' ),\n\t\t\t\tselect2: require( 'elementor-views/controls/select2' ),\n\t\t\t\tstructure: require( 'elementor-views/controls/structure' )\n\t\t\t};\n\n\t\t\tthis.editor.trigger( 'editor:controls:initialize' );\n\t\t}\n\n\t\treturn this._controlsItemView[ controlType ] || require( 'elementor-views/controls/base' );\n\t},\n\n\tgetPanelView: function() {\n\t\treturn this.getRegion( 'panel' ).currentView;\n\t},\n\n\tinitDialogsManager: function() {\n\t\tthis.dialogsManager = new DialogsManager.Instance();\n\t},\n\n\tonStart: function() {\n\t\tNProgress.start();\n\t\tNProgress.inc( 0.2 );\n\n\t\tthis.config = ElementorConfig;\n\n\t\tvar ElementModel = require( 'elementor-models/element' );\n\n\t\tBackbone.Radio.DEBUG = false;\n\t\tBackbone.Radio.tuneIn( 'ELEMENTOR' );\n\n\t\tthis.initDialogsManager();\n\n\t\tthis.heartbeat.init();\n\n\t\telementorBindUI.setEditorMode( true );\n\n\t\t// Init Base elements collection from the server\n\t\tthis.elements = new ElementModel.Collection( this.config.data );\n\n\t\tthis.$previewResponsiveWrapper = Backbone.$( '#elementor-preview-responsive-wrapper' );\n\n\t\tvar previewIframeId = 'elementor-preview-iframe';\n\n\t\t// Make sure the iFrame does not exist.\n\t\tif ( ! Backbone.$( '#' + previewIframeId ).length ) {\n\t\t\tvar previewIFrame = document.createElement( 'iframe' );\n\n\t\t\tpreviewIFrame.id = previewIframeId;\n\t\t\tpreviewIFrame.src = this.config.preview_link + '&' + ( new Date().getTime() );\n\n\t\t\tthis.$previewResponsiveWrapper.append( previewIFrame );\n\t\t}\n\n\t\tthis.$preview = Backbone.$( '#' + previewIframeId );\n\t\tthis.$preview.on( 'load', _.bind( function() {\n\t\t\tthis.$previewContents = this.$preview.contents();\n\n\t\t\telementorBindUI.setScopeWindow( this.$preview[0].contentWindow );\n\n\t\t\tthis.triggerMethod( 'preview:loaded' );\n\t\t}, this ) );\n\n\t\tthis.listenTo( this.dataEditMode, 'switch', this.onEditModeSwitched );\n\n\t\tthis.setWorkSaver();\n\t},\n\n\tonPreviewLoaded: function() {\n\t\tvar SectionsCollectionView = require( 'elementor-views/sections' ),\n\t\t\tPanelLayoutView = require( 'elementor-layouts/panel/panel' );\n\n\t\tvar iframeRegion = new Marionette.Region( {\n\t\t\t// Make sure you get the DOM object out of the jQuery object\n\t\t\tel: this.$previewContents.find( '#elementor' ).get( 0 )\n\t\t} );\n\n\t\tthis.schemes.init().printSchemesStyle();\n\n\t\tthis.$previewContents.on( 'click', function( event ) {\n\t\t\tvar $target = Backbone.$( event.target ),\n\t\t\t\teditMode = elementor.dataEditMode.request( 'get:active:mode' ),\n\t\t\t\tisClickInsideElementor = !! $target.closest( '#elementor' ).length;\n\n\t\t\tif ( isClickInsideElementor && 'preview' !== editMode ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( $target.closest( 'a' ).length ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\n\t\t\tif ( ! isClickInsideElementor ) {\n\t\t\t\telementor.getPanelView().setPage( 'elements' );\n\t\t\t}\n\t\t} );\n\n\t\tthis.addRegions( {\n\t\t\tsections: iframeRegion,\n\t\t\tpanel: '#elementor-panel',\n\t\t\tmodal: '#elementor-modal-area'\n\t\t} );\n\n\t\tthis.getRegion( 'sections' ).show( new SectionsCollectionView( {\n\t\t\tcollection: this.elements\n\t\t} ) );\n\n\t\tthis.getRegion( 'panel' ).show( new PanelLayoutView() );\n\n\t\tthis.$previewContents\n\t\t .children() // <html>\n\t\t .addClass( 'elementor-html' )\n\t\t .children( 'body' )\n\t\t .addClass( 'elementor-editor-active' );\n\n\t\tBackbone.$( '#elementor-loading' ).fadeOut( 600 );\n\n\t\tNProgress.done();\n\t},\n\n\tonEditModeSwitched: function() {\n\t\tvar activeMode = elementor.dataEditMode.request( 'get:active:mode' );\n\n\t\tif ( 'preview' === activeMode ) {\n\t\t\tthis.enterPreviewMode();\n\t\t} else {\n\t\t\tthis.exitPreviewMode();\n\t\t}\n\t},\n\n\tsetFlagEditorChange: function( status ) {\n\t\telementor.editor.reply( 'editor:changed', status );\n\t\telementor.editor.trigger( 'editor:changed', status );\n\t},\n\n\tisEditorChanged: function() {\n\t\treturn ( true === elementor.editor.request( 'editor:changed' ) );\n\t},\n\n\tsetWorkSaver: function() {\n\t\tBackbone.$( window ).on( 'beforeunload', function() {\n\t\t\tif ( elementor.isEditorChanged() ) {\n\t\t\t\treturn elementor.translate( 'before_unload_alert' );\n\t\t\t}\n\t\t} );\n\t},\n\n\tenterPreviewMode: function() {\n\t\tthis.$previewContents\n\t\t .find( 'body' )\n\t\t .add( 'body' )\n\t\t .removeClass( 'elementor-editor-active' )\n\t\t .addClass( 'elementor-editor-preview' );\n\t},\n\n\texitPreviewMode: function() {\n\t\tthis.$previewContents\n\t\t .find( 'body' )\n\t\t .add( 'body' )\n\t\t .removeClass( 'elementor-editor-preview' )\n\t\t .addClass( 'elementor-editor-active' );\n\t},\n\n\tsaveBuilder: function( options ) {\n\t\toptions = _.extend( {\n\t\t\trevision: 'draft',\n\t\t\tonSuccess: null\n\t\t}, options );\n\n\t\tNProgress.start();\n\n\t\treturn Backbone.$.ajax( {\n\t type: 'POST',\n\t url: this.config.ajaxurl,\n\t data: {\n\t\t action: 'elementor_save_builder',\n\t\t post_id: this.config.post_id,\n\t\t revision: options.revision,\n\t\t data: JSON.stringify( elementor.elements.toJSON() )\n\t }\n } )\n .done( function( data ) {\n\t NProgress.done();\n\n\t elementor.setFlagEditorChange( false );\n\n\t if ( _.isFunction( options.onSuccess ) ) {\n\t\t options.onSuccess.call( this, data );\n\t }\n } );\n\t},\n\n\ttranslate: function( stringKey, templateArgs ) {\n\t\tvar string = this.config.i18n[ stringKey ];\n\n\t\tif ( undefined === string ) {\n\t\t\tstring = stringKey;\n\t\t}\n\n\t\tif ( templateArgs ) {\n\t\t\tstring = string.replace( /{(\\d+)}/g, function( match, number ) {\n\t\t\t\treturn undefined !== templateArgs[ number ] ? templateArgs[ number ] : match;\n\t\t\t} );\n\t\t}\n\n\t\treturn string;\n\t}\n} );\n\nmodule.exports = ( window.elementor = new App() ).start();\n",
|
74 |
+
"var HandleAddDuplicateBehavior;\n\nHandleAddDuplicateBehavior = Marionette.Behavior.extend( {\n\n\tonChildviewClickNew: function( childView ) {\n\t\tvar currentIndex = childView.$el.index() + 1;\n\n\t\tthis.addChild( { at: currentIndex } );\n\t},\n\n\tonRequestNew: function() {\n\t\tthis.addChild();\n\t},\n\n\taddChild: function( options ) {\n\t\tif ( this.view.isCollectionFilled() ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions = options || {};\n\n\t\tvar newItem = {\n\t\t\tid: elementor.helpers.getUniqueID(),\n\t\t\telType: this.view.getChildType()[0],\n\t\t\tsettings: {},\n\t\t\telements: []\n\t\t};\n\n\t\tthis.view.addChildModel( newItem, options );\n\t}\n} );\n\nmodule.exports = HandleAddDuplicateBehavior;\n",
|
75 |
+
"var HandleElementsRelation;\n\nHandleElementsRelation = Marionette.Behavior.extend( {\n\n\tonRequestAdd: function( itemData, options ) {\n\t\tthis._addChildElement( itemData, options );\n\t},\n\n\t/**\n\t *\n\t * @param {Object} itemData\n\t * @param {Object} options\n\t * @private\n\t */\n\t_addChildElement: function( itemData, options ) {\n\t\toptions = options || {};\n\n\t\tvar myChildType = this.view.getChildType();\n\n\t\tif ( -1 === myChildType.indexOf( itemData.elType ) ) {\n\t\t\tdelete options.at;\n\n\t\t\tthis.view.children.last().triggerMethod( 'request:add', itemData, options );\n\n\t\t\treturn;\n\t\t}\n\n\t\tvar newModel = this.view.addChildModel( itemData, options ),\n\t\t\tnewView = this.view.children.findByModel( newModel );\n\n\t\tif ( 'section' === newView.getElementType() && newView.isInner() ) {\n\t\t\tnewView.addEmptyColumn();\n\t\t}\n\n\t\tnewView.triggerMethod( 'open:editor' );\n\t}\n} );\n\nmodule.exports = HandleElementsRelation;\n",
|
76 |
+
"var HandleDuplicateBehavior;\n\nHandleDuplicateBehavior = Marionette.Behavior.extend( {\n\n\tonChildviewClickDuplicate: function( childView ) {\n\t\tif ( this.view.isCollectionFilled() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar currentIndex = childView.$el.index() + 1,\n\t\t\tnewModel = childView.model.clone();\n\n\t\tthis.view.addChildModel( newModel, { at: currentIndex } );\n\t}\n} );\n\nmodule.exports = HandleDuplicateBehavior;\n",
|
77 |
+
"var HandleEditModeBehavior;\n\nHandleEditModeBehavior = Marionette.Behavior.extend( {\n\tinitialize: function() {\n\t\tthis.listenTo( elementor.dataEditMode, 'switch', this.onEditModeSwitched );\n\t},\n\n\tonEditModeSwitched: function() {\n\t\tvar activeMode = elementor.dataEditMode.request( 'get:active:mode' );\n\n\t\tthis.view.$el.toggleClass( 'elementor-active-mode', 'preview' !== activeMode );\n\t},\n\n\tonRender: function() {\n\t\tthis.onEditModeSwitched();\n\t}\n} );\n\nmodule.exports = HandleEditModeBehavior;\n",
|
78 |
+
"var HandleEditorBehavior;\n\nHandleEditorBehavior = Marionette.Behavior.extend( {\n\n\tonClickEdit: function() {\n\t\tvar activeMode = elementor.dataEditMode.request( 'get:active:mode' );\n\n\t\tif ( 'preview' === activeMode ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.onOpenEditor();\n\t},\n\n\tonOpenEditor: function() {\n\t\tvar currentPanelPageName = elementor.getPanelView().getCurrentPageName();\n\n\t\tif ( 'editor' === currentPanelPageName ) {\n\t\t\tvar currentPanelPageView = elementor.getPanelView().getCurrentPageView(),\n\t\t\t\tcurrentEditableModel = currentPanelPageView.model;\n\n\t\t\tif ( currentEditableModel === this.view.model ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar elementData = elementor.getElementData( this.view.model );\n\n\t\telementor.getPanelView().setPage( 'editor', elementor.translate( 'edit_element', [ elementData.title ] ), {\n\t\t\tmodel: this.view.model,\n\t\t\teditedElementView: this.view\n\t\t} );\n\t}\n} );\n\nmodule.exports = HandleEditorBehavior;\n",
|
79 |
+
"var ResizableBehavior;\n\nResizableBehavior = Marionette.Behavior.extend( {\n\tdefaults: {\n\t\thandles: elementor.config.is_rtl ? 'w' : 'e'\n\t},\n\n\tui: {\n\t\tcolumnTitle: '.column-title'\n\t},\n\n\tevents: {\n\t\t'resizestart': 'onResizeStart',\n\t\t'resizestop': 'onResizeStop',\n\t\t'resize': 'onResize'\n\t},\n\n\tinitialize: function() {\n\t\tMarionette.Behavior.prototype.initialize.apply( this, arguments );\n\n\t\tthis.listenTo( elementor.dataEditMode, 'switch', this.onEditModeSwitched );\n\t},\n\n\tactive: function() {\n\t\tvar options = _.clone( this.options );\n\n\t\tdelete options.behaviorClass;\n\n\t\tvar $childViewContainer = this.getChildViewContainer(),\n\t\t\tdefaultResizableOptions = {},\n\t\t\tresizableOptions = _.extend( defaultResizableOptions, options );\n\n\t\t$childViewContainer.resizable( resizableOptions );\n\t},\n\n\tdeactivate: function() {\n\t\tif ( this.getChildViewContainer().resizable( 'instance' ) ) {\n\t\t\tthis.getChildViewContainer().resizable( 'destroy' );\n\t\t}\n\t},\n\n\tonEditModeSwitched: function() {\n\t\tvar activeMode = elementor.dataEditMode.request( 'get:active:mode' );\n\n\t\tif ( 'preview' !== activeMode ) {\n\t\t\tthis.active();\n\t\t} else {\n\t\t\tthis.deactivate();\n\t\t}\n\t},\n\n\tonRender: function() {\n\t\t// Call this method from other thread (non-block UI)\n\t\t_.defer( _.bind( this.onEditModeSwitched, this ) );\n\t},\n\n\tonDestroy: function() {\n\t\tthis.deactivate();\n\t},\n\n\tonResizeStart: function( event, ui ) {\n\t\t//this.ui.columnTitle.fadeIn( 'fast' );\n\t},\n\n\tonResizeStop: function( event, ui ) {\n\t\t//this.ui.columnTitle.fadeOut( 'fast' );\n\t},\n\n\tonResize: function( event, ui ) {\n\t\tevent.stopPropagation();\n\n\t\tthis.view.triggerMethod( 'request:resize', ui );\n\t},\n\n\tgetChildViewContainer: function() {\n\t\t//if ( 'function' === typeof this.view.getChildViewContainer ) {\n\t\t//\t// CompositeView\n\t\t//\treturn this.view.getChildViewContainer( this.view );\n\t\t//} else {\n\t\t//\t// CollectionView\n\t\t//\treturn this.$el;\n\t\t//}\n\t\treturn this.$el;\n\t}\n} );\n\nmodule.exports = ResizableBehavior;\n",
|
80 |
+
"var SortableBehavior;\n\nSortableBehavior = Marionette.Behavior.extend( {\n\tdefaults: {\n\t\telChildType: 'widget'\n\t},\n\n\tevents: {\n\t\t'sortstart': 'onSortStart',\n\t\t'sortreceive': 'onSortReceive',\n\t\t'sortupdate': 'onSortUpdate',\n\t\t'sortstop': 'onSortStop',\n\t\t'sortover': 'onSortOver',\n\t\t'sortout': 'onSortOut'\n\t},\n\n\tinitialize: function() {\n\t\tthis.listenTo( elementor.dataEditMode, 'switch', this.onEditModeSwitched );\n\t\tthis.listenTo( elementor.deviceMode, 'change', this.onDeviceModeChange );\n\t},\n\n\tonEditModeSwitched: function() {\n\t\tvar activeMode = elementor.dataEditMode.request( 'get:active:mode' );\n\n\t\tif ( 'preview' !== activeMode ) {\n\t\t\tthis.active();\n\t\t} else {\n\t\t\tthis.deactivate();\n\t\t}\n\t},\n\n\tonDeviceModeChange: function() {\n\t\tvar deviceMode = elementor.deviceMode.request( 'currentMode' );\n\n\t\tif ( 'desktop' === deviceMode ) {\n\t\t\tthis.active();\n\t\t} else {\n\t\t\tthis.deactivate();\n\t\t}\n\t},\n\n\tonRender: function() {\n\t\t_.defer( _.bind( this.onEditModeSwitched, this ) );\n\t},\n\n\tonDestroy: function() {\n\t\tthis.deactivate();\n\t},\n\n\tactive: function() {\n\t\tif ( this.getChildViewContainer().sortable( 'instance' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $childViewContainer = this.getChildViewContainer(),\n\t\t\tdefaultSortableOptions = {\n\t\t\t\tconnectWith: $childViewContainer.selector,\n\t\t\t\tcursor: 'move',\n\t\t\t\tplaceholder: 'elementor-sortable-placeholder',\n\t\t\t\tcursorAt: {\n\t\t\t\t\ttop: 20,\n\t\t\t\t\tleft: 25\n\t\t\t\t},\n\t\t\t\thelper: _.bind( this._getSortableHelper, this )\n\t\t\t},\n\t\t\tsortableOptions = _.extend( defaultSortableOptions, this.view.getSortableOptions() );\n\n\t\t$childViewContainer.sortable( sortableOptions );\n\t},\n\n\t_getSortableHelper: function( event, $item ) {\n\t\tvar model = this.view.collection.get( {\n\t\t\tcid: $item.data( 'model-cid' )\n\t\t} );\n\n\t\treturn '<div style=\"height: 50px; width: 250px;\" class=\"elementor-sortable-helper elementor-sortable-helper-' + model.get( 'elType' ) + '\"><i class=\"fa fa-' + model.getIcon() + '\"></i><div class=\"elementor-title\">' + model.getTitle() + '</div></div>';\n\t},\n\n\tdeactivate: function() {\n\t\tif ( this.getChildViewContainer().sortable( 'instance' ) ) {\n\t\t\tthis.getChildViewContainer().sortable( 'destroy' );\n\t\t}\n\t},\n\n\tonSortStart: function( event, ui ) {\n\t\tevent.stopPropagation();\n\n\t\tvar model = this.view.collection.get( {\n\t\t\tcid: ui.item.data( 'model-cid' )\n\t\t} );\n\n\t\tif ( 'column' === this.options.elChildType ) {\n\t\t\t// the following code is just for touch\n\t\t\tui.placeholder.addClass( 'elementor-column' );\n\n\t\t\tvar uiData = ui.item.data( 'sortableItem' ),\n\t\t\t\tuiItems = uiData.items,\n\t\t\t\titemHeight = 0;\n\n\t\t\tuiItems.forEach( function( item ) {\n\t\t\t\tif ( item.item[0] === ui.item[0] ) {\n\t\t\t\t\titemHeight = item.height;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tui.placeholder.height( itemHeight );\n\n\t\t\t// ui.placeholder.addClass( 'elementor-column elementor-col-' + model.getSetting( 'size' ) );\n\t\t}\n\n\t\telementor.data.trigger( model.get( 'elType' ) + ':drag:start' );\n\n\t\telementor.data.reply( 'cache:' + model.cid, model );\n\t},\n\n\tonSortOver: function( event, ui ) {\n\t\tevent.stopPropagation();\n\n\t\tvar model = elementor.data.request( 'cache:' + ui.item.data( 'model-cid' ) );\n\n\t\tBackbone.$( event.target )\n\t\t\t.addClass( 'elementor-draggable-over' )\n\t\t\t.attr( {\n\t\t\t\t'data-dragged-element': model.get( 'elType' ),\n\t\t\t\t'data-dragged-is-inner': model.get( 'isInner' )\n\t\t\t} );\n\n\t\tthis.$el.addClass( 'elementor-dragging-on-child' );\n\t},\n\n\tonSortOut: function( event ) {\n\t\tevent.stopPropagation();\n\n\t\tBackbone.$( event.target )\n\t\t\t.removeClass( 'elementor-draggable-over' )\n\t\t\t.removeAttr( 'data-dragged-element data-dragged-is-inner' );\n\n\t\tthis.$el.removeClass( 'elementor-dragging-on-child' );\n\t},\n\n\tonSortReceive: function( event, ui ) {\n\t\tevent.stopPropagation();\n\n\t\tif ( this.view.isCollectionFilled() ) {\n\t\t\tBackbone.$( ui.sender ).sortable( 'cancel' );\n\t\t\treturn;\n\t\t}\n\n\t\tvar model = elementor.data.request( 'cache:' + ui.item.data( 'model-cid' ) ),\n\t\t\tdraggedElType = model.get( 'elType' ),\n\t\t\tdraggedIsInnerSection = 'section' === draggedElType && model.get( 'isInner' ),\n\t\t\ttargetIsInnerColumn = 'column' === this.view.getElementType() && this.view.isInner();\n\n\t\tif ( draggedIsInnerSection && targetIsInnerColumn ) {\n\t\t\tBackbone.$( ui.sender ).sortable( 'cancel' );\n\t\t\treturn;\n\t\t}\n\n\t\tvar newIndex = ui.item.parent().children().index( ui.item ),\n\t\t\tnewModel = new this.view.collection.model( model.toJSON( { copyHtmlCache: true } ) );\n\n\t\tthis.view.addChildModel( newModel, { at: newIndex } );\n\n\t\telementor.data.trigger( draggedElType + ':drag:end' );\n\n\t\tmodel.destroy();\n\t},\n\n\tonSortUpdate: function( event, ui ) {\n\t\tevent.stopPropagation();\n\n\t\tvar model = this.view.collection.get( ui.item.attr( 'data-model-cid' ) );\n\t\tif ( model ) {\n\t\t\telementor.data.trigger( model.get( 'elType' ) + ':drag:end' );\n\t\t}\n\t},\n\n\tonSortStop: function( event, ui ) {\n\t\tevent.stopPropagation();\n\n\t\tvar $childElement = ui.item,\n\t\t\tcollection = this.view.collection,\n\t\t\tmodel = collection.get( $childElement.attr( 'data-model-cid' ) ),\n\t\t\tnewIndex = $childElement.parent().children().index( $childElement );\n\n\t\tif ( this.getChildViewContainer()[0] === ui.item.parent()[0] ) {\n\t\t\tif ( null === ui.sender && model ) {\n\t\t\t\tvar oldIndex = collection.indexOf( model );\n\n\t\t\t\tif ( oldIndex !== newIndex ) {\n\t\t\t\t\tcollection.remove( model, { silent: true } );\n\t\t\t\t\tcollection.add( model, { silent: true, at: newIndex } );\n\n\t\t\t\t\telementor.setFlagEditorChange( true );\n\t\t\t\t}\n\n\t\t\t\telementor.data.trigger( model.get( 'elType' ) + ':drag:end' );\n\t\t\t}\n\t\t}\n\t},\n\n\tonAddChild: function( view ) {\n\t\tview.$el.attr( 'data-model-cid', view.model.cid );\n\t},\n\n\tgetChildViewContainer: function() {\n\t\tif ( 'function' === typeof this.view.getChildViewContainer ) {\n\t\t\t// CompositeView\n\t\t\treturn this.view.getChildViewContainer( this.view );\n\t\t} else {\n\t\t\t// CollectionView\n\t\t\treturn this.$el;\n\t\t}\n\t}\n} );\n\nmodule.exports = SortableBehavior;\n",
|
81 |
+
"var EditModeItemView;\n\nEditModeItemView = Marionette.ItemView.extend( {\n\ttemplate: '#tmpl-elementor-mode-switcher-content',\n\n\tid: 'elementor-mode-switcher-inner',\n\n\tui: {\n\t\tpreviewButton: '#elementor-mode-switcher-preview-input',\n\t\tpreviewLabel: '#elementor-mode-switcher-preview',\n\t\tpreviewLabelA11y: '#elementor-mode-switcher-preview .elementor-screen-only'\n\t},\n\n\tevents: {\n\t\t'change @ui.previewButton': 'onEditModeChange'\n\t},\n\n\tgetCurrentMode: function() {\n\t\treturn this.ui.previewButton.is( ':checked' ) ? 'preview' : 'edit';\n\t},\n\n\tsetMode: function( mode ) {\n\t\tthis.ui.previewButton.prop( 'checked', 'preview' === mode );\n\t},\n\n\tonRender: function() {\n\t\tthis.onEditModeChange();\n\t},\n\n\tonEditModeChange: function() {\n\t\tvar oldEditMode = elementor.dataEditMode.request( 'get:active:mode' ),\n\t\t\tcurrentMode = this.getCurrentMode();\n\n\t\telementor.dataEditMode.reply( 'get:active:mode', currentMode );\n\n\t\tif ( currentMode !== oldEditMode ) {\n\t\t\telementor.dataEditMode.trigger( 'switch' );\n\n\t\t\tvar title = 'preview' === currentMode ? 'Back to Editor' : 'Preview';\n\n\t\t\tthis.ui.previewLabel.attr( 'title', title );\n\t\t\tthis.ui.previewLabelA11y.text( title );\n\t\t}\n\t}\n} );\n\nmodule.exports = EditModeItemView;\n",
|
82 |
+
"var PanelFooterItemView;\n\nPanelFooterItemView = Marionette.ItemView.extend( {\n\ttemplate: '#tmpl-elementor-panel-footer-content',\n\n\ttagName: 'nav',\n\n\tid: 'elementor-panel-footer-tools',\n\n\tdefaultDeviceMode: 'desktop',\n\n\tcurrentDeviceMode: '',\n\n\tpossibleRotateModes: [ 'portrait', 'landscape' ],\n\n\tui: {\n\t\tmenuButtons: '.elementor-panel-footer-tool',\n\t\tdeviceModeButtons: '#elementor-panel-footer-responsive .elementor-panel-footer-sub-menu-item',\n\t\tbuttonSave: '#elementor-panel-footer-save',\n\t\tbuttonSaveButton: '#elementor-panel-footer-save .elementor-button',\n\t\tbuttonPublish: '#elementor-panel-footer-publish'\n\t},\n\n\tevents: {\n\t\t'click @ui.deviceModeButtons': 'onClickResponsiveButtons',\n\t\t'click @ui.buttonSave': 'onClickButtonSave',\n\t\t'click @ui.buttonPublish': 'onClickButtonPublish'\n\t},\n\n\tinitialize: function() {\n\t\tthis._initDialog();\n\n\t\tBackbone.$( document ).on( 'click', _.bind( this.onDocumentClick, this ) );\n\n\t\tthis.listenTo( elementor.editor, 'editor:changed', this.onEditorChanged );\n\t},\n\n\t_initDialog: function() {\n\t\tvar dialog;\n\n\t\tthis.getDialog = function() {\n\t\t\tif ( ! dialog ) {\n\t\t\t\tvar $ = Backbone.$,\n\t\t\t\t\t$dialogMessage = $( '<div>', {\n\t\t\t\t\t\t'class': 'elementor-dialog-message'\n\t\t\t\t\t} ),\n\t\t\t\t\t$messageIcon = $( '<i>', {\n\t\t\t\t\t\t'class': 'fa fa-check-circle'\n\t\t\t\t\t} ),\n\t\t\t\t\t$messageText = $( '<div>', {\n\t\t\t\t\t\t'class': 'elementor-dialog-message-text'\n\t\t\t\t\t} ).text( elementor.translate( 'saved' ) );\n\n\t\t\t\t$dialogMessage.append( $messageIcon, $messageText );\n\n\t\t\t\tdialog = elementor.dialogsManager.createWidget( 'popup', {\n\t\t\t\t\thide: {\n\t\t\t\t\t\tdelay: 1500\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tdialog.setMessage( $dialogMessage );\n\t\t\t}\n\n\t\t\treturn dialog;\n\t\t};\n\t},\n\n\t_publishBuilder: function() {\n\t\tvar self = this;\n\n\t\tvar options = {\n\t\t\trevision: 'publish',\n\t\t\tonSuccess: function() {\n\t\t\t\tself.getDialog().show();\n\n\t\t\t\tself.ui.buttonSaveButton.removeClass( 'elementor-button-state' );\n\t\t\t}\n\t\t};\n\n\t\tself.ui.buttonSaveButton.addClass( 'elementor-button-state' );\n\n\t\telementor.saveBuilder( options );\n\t},\n\n\t_saveBuilderDraft: function() {\n\t\telementor.saveBuilder();\n\t},\n\n\tonRender: function() {\n\t\tthis.changeDeviceMode( this.defaultDeviceMode );\n\t},\n\n\tchangeDeviceMode: function( newDeviceMode ) {\n\t\tif ( this.currentDeviceMode === newDeviceMode ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.getCurrentDeviceModeButton().removeClass( 'active' );\n\n\t\telementor.$previewResponsiveWrapper\n\t\t .removeClass( 'elementor-device-' + this.currentDeviceMode )\n\t\t .addClass( 'elementor-device-' + newDeviceMode );\n\n\t\tthis.currentDeviceMode = newDeviceMode;\n\n\t\tthis.getCurrentDeviceModeButton().addClass( 'active' );\n\n\t\telementor.deviceMode.reply( 'currentMode', this.currentDeviceMode );\n\t\telementor.deviceMode.trigger( 'change' );\n\t},\n\n\tgetCurrentDeviceModeButton: function() {\n\t\treturn this.ui.deviceModeButtons.filter( '[data-device-mode=\"' + this.currentDeviceMode + '\"]' );\n\t},\n\n\tonDocumentClick: function( event ) {\n\t\tvar $target = Backbone.$( event.target ),\n\t\t\tisClickInsideOfTool = $target.closest( '.elementor-panel-footer-sub-menu-wrapper' ).length;\n\n\t\tif ( isClickInsideOfTool ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $tool = $target.closest( '.elementor-panel-footer-tool' ),\n\t\t\tisClosedTool = $tool.length && ! $tool.hasClass( 'elementor-open' );\n\n\t\tthis.ui.menuButtons.removeClass( 'elementor-open' );\n\n\t\tif ( isClosedTool ) {\n\t\t\t$tool.addClass( 'elementor-open' );\n\t\t}\n\t},\n\n\tonEditorChanged: function() {\n\t\tthis.ui.buttonSave.toggleClass( 'elementor-save-active', elementor.isEditorChanged() );\n\t},\n\n\tonClickButtonSave: function() {\n\t\t//this._saveBuilderDraft();\n\t\tthis._publishBuilder();\n\t},\n\n\tonClickButtonPublish: function( event ) {\n\t\t// Prevent click on save button\n\t\tevent.stopPropagation();\n\n\t\tthis._publishBuilder();\n\t},\n\n\tonClickResponsiveButtons: function( event ) {\n\t\tvar $clickedButton = this.$( event.currentTarget ),\n\t\t\tnewDeviceMode = $clickedButton.data( 'device-mode' );\n\n\t\tthis.changeDeviceMode( newDeviceMode );\n\t}\n} );\n\nmodule.exports = PanelFooterItemView;\n",
|
83 |
+
"var PanelHeaderItemView;\n\nPanelHeaderItemView = Marionette.ItemView.extend( {\n\ttemplate: '#tmpl-elementor-panel-header',\n\n\tid: 'elementor-panel-header',\n\n\tui: {\n\t\tmenuButton: '#elementor-panel-header-menu-button',\n\t\ttitle: '#elementor-panel-header-title',\n\t\taddButton: '#elementor-panel-header-add-button'\n\t},\n\n\tevents: {\n\t\t'click @ui.addButton': 'onClickAdd',\n\t\t'click @ui.menuButton': 'onClickMenu'\n\t},\n\n\tsetTitle: function( title ) {\n\t\tthis.ui.title.html( title );\n\t},\n\n\tonClickAdd: function() {\n\t\telementor.getPanelView().setPage( 'elements' );\n\t},\n\n\tonClickMenu: function() {\n\t\tvar panel = elementor.getPanelView(),\n\t\t\tcurrentPanelPageName = panel.getCurrentPageName(),\n\t\t\tnextPage = 'menu' === currentPanelPageName ? 'elements' : 'menu';\n\n\t\tpanel.setPage( nextPage );\n\t}\n} );\n\nmodule.exports = PanelHeaderItemView;\n",
|
84 |
+
"var EditorCompositeView;\n\nEditorCompositeView = Marionette.CompositeView.extend( {\n\ttemplate: Marionette.TemplateCache.get( '#tmpl-editor-content' ),\n\n\tid: 'elementor-panel-page-editor',\n\n\ttemplateHelpers: function() {\n\t\treturn {\n\t\t\telementData: elementor.getElementData( this.model )\n\t\t};\n\t},\n\n\tchildViewContainer: 'div.elementor-controls',\n\n\tmodelEvents: {\n\t\t'destroy': 'onModelDestroy'\n\t},\n\n\tui: {\n\t\t'tabs': '.elementor-tabs-controls li'\n\t},\n\n\tevents: {\n\t\t'click @ui.tabs a': 'onClickTabControl'\n\t},\n\n\tgetChildView: function( item ) {\n\t\tvar controlType = item.get( 'type' );\n\t\treturn elementor.getControlItemView( controlType );\n\t},\n\n\tchildViewOptions: function() {\n\t\treturn {\n\t\t\telementSettingsModel: this.model.get( 'settings' ),\n\t\t\telementEditSettings: this.model.get( 'editSettings' )\n\t\t};\n\t},\n\n\tonDestroy: function() {\n\t\tthis.getOption( 'editedElementView' ).$el.removeClass( 'elementor-element-editable' );\n\t\tthis.model.trigger( 'editor:close' );\n\n\t\tthis.triggerMethod( 'editor:destroy' );\n\t},\n\n\tonBeforeRender: function() {\n\t\tvar controls = elementor.getElementControls( this.model );\n\n\t\tif ( ! controls ) {\n\t\t\tthrow new Error( 'No found editor controls' );\n\t\t}\n\n\t\t// Create new instance of that collection\n\t\tthis.collection = new Backbone.Collection( controls );\n\t},\n\n\tonRender: function() {\n\t\tthis.getOption( 'editedElementView' ).$el.addClass( 'elementor-element-editable' );\n\n\t\t// Set the first tab as active\n\t\tthis.ui.tabs.eq( 0 ).find( 'a' ).trigger( 'click' );\n\n\t\t// Create tooltip on controls\n\t\tthis.$( '.tooltip-target' ).tipsy( {\n\t\t\tgravity: function() {\n\t\t\t\t// `n` for down, `s` for up\n\t\t\t\tvar gravity = Backbone.$( this ).data( 'tooltip-pos' );\n\n\t\t\t\tif ( undefined !== gravity ) {\n\t\t\t\t\treturn gravity;\n\t\t\t\t} else {\n\t\t\t\t\treturn 'n';\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle: function() {\n\t\t\t\treturn this.getAttribute( 'data-tooltip' );\n\t\t\t}\n\t\t} );\n\t},\n\n\tonModelDestroy: function() {\n\t\tthis.destroy();\n\t},\n\n\tonClickTabControl: function( event ) {\n\t\tevent.preventDefault();\n\n\t\tvar $thisTab = this.$( event.target );\n\n\t\tthis.ui.tabs.removeClass( 'active' );\n\t\t$thisTab.closest( 'li' ).addClass( 'active' );\n\n\t\tthis.model.get( 'settings' ).trigger( 'control:switch:tab', $thisTab.data( 'tab' ) );\n\n\t\tthis.openFirstSectionInCurrentTab( $thisTab.data( 'tab' ) );\n\t},\n\n\t/**\n\t * It's a temp method.\n\t *\n\t * TODO: Rewrite this method later.\n\t */\n\topenFirstSectionInCurrentTab: function( currentTab ) {\n\t\tvar openedClass = 'elementor-open',\n\n\t\t\tchildrenUnderSection = this.children.filter( function( view ) {\n\t\t\t\treturn ( ! _.isEmpty( view.model.get( 'section' ) ) );\n\t\t\t} ),\n\n\t\t\tfirstSectionControlView = this.children.filter( function( view ) {\n\t\t\t\treturn ( 'section' === view.model.get( 'type' ) ) && ( currentTab === view.model.get( 'tab' ) );\n\t\t\t} );\n\n\t\t// Check if found any section controls\n\t\tif ( _.isEmpty( firstSectionControlView ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfirstSectionControlView = firstSectionControlView[0];\n\t\tfirstSectionControlView.ui.heading.addClass( openedClass );\n\n\t\t_.each( childrenUnderSection, function( view ) {\n\t\t\tif ( view.model.get( 'section' ) !== firstSectionControlView.model.get( 'name' ) ) {\n\t\t\t\tview.$el.removeClass( openedClass );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tview.$el.addClass( openedClass );\n\t\t} );\n\t},\n\n\tonChildviewControlSectionClicked: function( childView ) {\n\t\tvar openedClass = 'elementor-open',\n\t\t\tsectionClicked = childView.model.get( 'name' ),\n\t\t\tisSectionOpen = childView.ui.heading.hasClass( openedClass ),\n\n\t\t\tchildrenUnderSection = this.children.filter( function( view ) {\n\t\t\t\treturn ( ! _.isEmpty( view.model.get( 'section' ) ) );\n\t\t\t} );\n\n\t\tthis.$( '.elementor-control.elementor-control-type-section .elementor-panel-heading' ).removeClass( openedClass );\n\n\t\tif ( isSectionOpen ) {\n\t\t\t// Close all open sections\n\t\t\tsectionClicked = '';\n\t\t} else {\n\t\t\tchildView.ui.heading.addClass( openedClass );\n\t\t}\n\n\t\t_.each( childrenUnderSection, function( view ) {\n\t\t\tif ( view.model.get( 'section' ) !== sectionClicked ) {\n\t\t\t\tview.$el.removeClass( openedClass );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tview.$el.addClass( openedClass );\n\t\t} );\n\n\t\telementor.data.trigger( 'scrollbar:update' );\n\t}\n} );\n\nmodule.exports = EditorCompositeView;\n",
|
85 |
+
"var PanelElementsElementModel = require( '../models/element' ),\n\tPanelElementsElementsCollection;\n\nPanelElementsElementsCollection = Backbone.Collection.extend( {\n\tmodel: PanelElementsElementModel/*,\n\tcomparator: 'title'*/\n} );\n\nmodule.exports = PanelElementsElementsCollection;\n",
|
86 |
+
"var ElementsCollection = require( './collections/elements' ),\n\tPanelElementsElementsView = require( './views/elements' ),\n\tPanelElementsSearchView = require( './views/search' ),\n\tPanelElementsLayoutView;\n\nPanelElementsLayoutView = Marionette.LayoutView.extend( {\n\ttemplate: '#tmpl-elementor-panel-elements',\n\n\tregions: {\n\t\telements: '#elementor-panel-elements-wrapper',\n\t\tsearch: '#elementor-panel-elements-search-area'\n\t},\n\n\tinitialize: function() {\n\t\tthis.listenTo( elementor.panelElements, 'element:selected', this.destroy );\n\t},\n\n\tclearSearchInput: function() {\n\t\tthis.getChildView( 'search' ).triggerMethod( 'clear:filter' );\n\t},\n\n\tchangeFilter: function( filterValue ) {\n\t\telementor.panelElements\n\t\t\t.reply( 'filter:value', filterValue )\n\t\t\t.trigger( 'change' );\n\t},\n\n\tclearFilters: function() {\n\t\tthis.changeFilter( null );\n\t\tthis.clearSearchInput();\n\t},\n\n\tonChildviewDragStart: function( childView ) {\n\t\telementor.panelElements.reply( 'element:selected', childView );\n\t},\n\n\tonChildviewChildrenRender: function() {\n\t\tthis.updateElementsScrollbar();\n\t},\n\n\tonChildviewSearchChangeInput: function( child ) {\n\t\tvar value = child.ui.input.val();\n\n\t\tthis.changeFilter( value, 'search' );\n\t},\n\n\tonDestroy: function() {\n\t\telementor.panelElements.reply( 'filter:value', null );\n\t},\n\n\tonShow: function() {\n\t\tvar elementsRegion = this.getRegion( 'elements' ),\n\t\t\tsearchRegion = this.getRegion( 'search' );\n\n\t\tvar elements = new ElementsCollection();\n\n\t\t// Add a section to the collection\n\t\tvar sectionConfig = elementor.config.elements.section;\n\n\t\telements.add( {\n\t\t\ttitle: elementor.translate( 'inner_section' ),\n\t\t\telType: 'section',\n\t\t\tkeywords: sectionConfig.keywords,\n\t\t\ticon: sectionConfig.icon\n\t\t} );\n\n\t\t// TODO: Change the array from server syntax, and no need each loop for initialize\n\t\t_.each( elementor.config.widgets, function( element, widgetType ) {\n\t\t\telements.add( {\n\t\t\t\ttitle: element.title,\n\t\t\t\telType: 'widget',\n\t\t\t\tcategories: element.categories,\n\t\t\t\tkeywords: element.keywords,\n\t\t\t\ticon: element.icon,\n\t\t\t\twidgetType: widgetType\n\t\t\t} );\n\t\t} );\n\n\t\telementsRegion.show( new PanelElementsElementsView( { collection: elements } ) );\n\t\tsearchRegion.show( new PanelElementsSearchView() );\n\t},\n\n\tupdateElementsScrollbar: function() {\n\t\telementor.data.trigger( 'scrollbar:update' );\n\t}\n} );\n\nmodule.exports = PanelElementsLayoutView;\n",
|
87 |
+
"var PanelElementsElementModel;\n\nPanelElementsElementModel = Backbone.Model.extend( {\n\tdefaults: {\n\t\ttitle: '',\n\t\tcategories: [],\n\t\tkeywords: [],\n\t\ticon: '',\n\t\telType: 'widget',\n\t\twidgetType: ''\n\t}\n} );\n\nmodule.exports = PanelElementsElementModel;",
|
88 |
+
"var PanelElementsElementView;\n\nPanelElementsElementView = Marionette.ItemView.extend( {\n\ttemplate: '#tmpl-elementor-element-library-element',\n\n\tclassName: 'elementor-element-wrapper',\n\n\tevents: {\n\t\tclick: 'onClick'\n\t},\n\n\ttriggers: {\n\t\tdragend: 'drag:end'\n\t},\n\n\tonRender: function() {\n\t\tthis.$el.html5Draggable( {\n\n\t\t\tonDragStart: _.bind( function() {\n\t\t\t\tthis.triggerMethod( 'drag:start' );\n\t\t\t}, this ),\n\n\t\t\tgroups: [ 'elementor-element' ]\n\t\t} );\n\t}\n} );\n\nmodule.exports = PanelElementsElementView;\n",
|
89 |
+
"var PanelElementsElementView = require( './element' ),\n\tPanelElementsElementsView;\n\nPanelElementsElementsView = Marionette.CollectionView.extend( {\n\tchildView: PanelElementsElementView,\n\n\tid: 'elementor-panel-elements',\n\n\tinitialize: function() {\n\t\tthis.listenTo( elementor.panelElements, 'change', this.onFilterChanged );\n\t},\n\n\tfilter: function( childModel ) {\n\t\tvar filterValue = elementor.panelElements.request( 'filter:value' );\n\n\t\tif ( ! filterValue ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn _.any( [ 'title', 'keywords' ], function( type ) {\n\t\t\treturn ( -1 !== childModel.get( type ).toLowerCase().indexOf( filterValue.toLowerCase() ) );\n\t\t} );\n\t},\n\n\tonFilterChanged: function() {\n\t\tthis._renderChildren();\n\t\tthis.triggerMethod( 'children:render' );\n\t}\n} );\n\nmodule.exports = PanelElementsElementsView;\n",
|
90 |
+
"var PanelElementsSearchView;\n\nPanelElementsSearchView = Marionette.ItemView.extend( {\n\ttemplate: '#tmpl-elementor-panel-element-search',\n\n\tid: 'elementor-panel-elements-search-wrapper',\n\n\tui: {\n\t\tinput: 'input'\n\t},\n\n\ttriggers: {\n\t\t'keyup @ui.input': 'search:change:input'\n\t},\n\n\tonClearFilter: function() {\n\t\tthis.ui.input.val( '' );\n\t}\n} );\n\nmodule.exports = PanelElementsSearchView;\n",
|
91 |
+
"var PanelMenuItemView = require( 'elementor-panel/pages/menu/views/item' ),\n\tPanelMenuPageView;\n\nPanelMenuPageView = Marionette.CollectionView.extend( {\n\tid: 'elementor-panel-page-menu',\n\n\tchildView: PanelMenuItemView,\n\n\tinitialize: function() {\n\t\tthis.collection = new Backbone.Collection( [\n {\n icon: 'paint-brush',\n title: elementor.translate( 'colors' ),\n\t\t\t\ttype: 'page',\n pageName: 'colorsScheme'\n },\n {\n icon: 'font',\n title: elementor.translate( 'fonts' ),\n\t\t\t\ttype: 'page',\n pageName: 'typographyScheme'\n },\n {\n\t\t\t\ticon: 'file-text',\n\t\t\t\ttitle: elementor.translate( 'page_settings' ) + ' <span>(' + elementor.translate( 'soon' ) + ')</span>'\n\t\t\t},\n\t\t\t{\n\t\t\t\ticon: 'cog',\n\t\t\t\ttitle: elementor.translate( 'elementor_settings' ),\n\t\t\t\ttype: 'link',\n\t\t\t\tlink: elementor.config.settings_page_link\n\t\t\t},\n\t\t\t{\n\t\t\t\ticon: 'history',\n\t\t\t\ttitle: elementor.translate( 'revisions_history' ) + ' <span>(' + elementor.translate( 'soon' ) + ')</span>'\n\t\t\t},\n\t\t\t{\n\t\t\t\ticon: 'info-circle',\n\t\t\t\ttitle: elementor.translate( 'about_elementor' ),\n\t\t\t\ttype: 'link',\n\t\t\t\tlink: elementor.config.elementor_site,\n\t\t\t\tnewTab: true\n\t\t\t}\n\t\t] );\n\t},\n\n\tonChildviewClick: function( childView ) {\n\t\tvar menuItemType = childView.model.get( 'type' );\n\n\t\tswitch ( menuItemType ) {\n\t\t\tcase 'page' :\n\t\t\t\tvar pageName = childView.model.get( 'pageName' ),\n\t\t\t\t\tpageTitle = childView.model.get( 'title' );\n\n\t\t\t\telementor.getPanelView().setPage( pageName, pageTitle );\n\t\t\t\tbreak;\n\n\t\t\tcase 'link' :\n\t\t\t\tvar link = childView.model.get( 'link' ),\n\t\t\t\t\tisNewTab = childView.model.get( 'newTab' );\n\n\t\t\t\tif ( isNewTab ) {\n\t\t\t\t\topen( link, '_blank' );\n\t\t\t\t} else {\n\t\t\t\t\tlocation.href = childView.model.get( 'link' );\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n} );\n\nmodule.exports = PanelMenuPageView;\n",
|
92 |
+
"var PanelMenuItemView;\n\nPanelMenuItemView = Marionette.ItemView.extend( {\n\ttemplate: '#tmpl-elementor-panel-menu-item',\n\n\tclassName: 'elementor-panel-menu-item',\n\n\ttriggers: {\n\t\tclick: 'click'\n\t}\n} );\n\nmodule.exports = PanelMenuItemView;\n",
|
93 |
+
"var PanelSchemeBaseView;\n\nPanelSchemeBaseView = Marionette.CompositeView.extend( {\n\tid: function() {\n\t\treturn 'elementor-panel-scheme-' + this.getType();\n\t},\n\n\tclassName: 'elementor-panel-scheme',\n\n\tui: function() {\n\t\treturn {\n\t\t\tsaveButton: '.elementor-panel-scheme-save .elementor-button',\n\t\t\tdiscardButton: '.elementor-panel-scheme-discard .elementor-button',\n\t\t\tresetButton: '.elementor-panel-scheme-reset .elementor-button'\n\t\t};\n\t},\n\n\tevents: function() {\n\t\treturn {\n\t\t\t'click @ui.saveButton': 'saveScheme',\n\t\t\t'click @ui.discardButton': 'discardScheme',\n\t\t\t'click @ui.resetButton': 'setDefaultScheme'\n\t\t};\n\t},\n\n\tchildViewContainer: '.elementor-panel-scheme-items',\n\n\ttemplateHelpers: function() {\n\t\treturn {\n\t\t\tgetTitle: _.bind( this.getTitle, this )\n\t\t};\n\t},\n\n\tinitialize: function() {\n\t\tthis.model = new Backbone.Model();\n\n\t\tthis.resetScheme();\n\t},\n\n\tgetType: function() {},\n\n\tgetTitle: function() {\n\t\treturn this.getScheme().title;\n\t},\n\n\tgetScheme: function() {\n\t\treturn elementor.schemes.getScheme( this.getType() );\n\t},\n\n\tchangeChildrenUIValues: function( schemeItems ) {\n\t\tvar self = this;\n\n\t\t_.each( schemeItems, function( value, key ) {\n\t\t\tvar model = self.collection.findWhere( { key: key } ),\n\t\t\t\tchildView = self.children.findByModelCid( model.cid );\n\n\t\t\tchildView.changeUIValue( value );\n\t\t} );\n\t},\n\n\tdiscardScheme: function() {\n\t\telementor.schemes.resetSchemes( this.getType() );\n\n\t\tthis.ui.saveButton.prop( 'disabled', true );\n\n\t\tthis._renderChildren();\n\t},\n\n\tsetSchemeValue: function( key, value ) {\n\t\telementor.schemes.setSchemeValue( this.getType(), key, value );\n\t},\n\n\tsaveScheme: function() {\n\t\telementor.schemes.saveScheme( this.getType() );\n\n\t\tthis.ui.saveButton.prop( 'disabled', true );\n\n\t\tthis.resetScheme();\n\n\t\tthis._renderChildren();\n\t},\n\n\tsetDefaultScheme: function() {\n\t\tvar defaultScheme = elementor.config.default_schemes[ this.getType() ].items;\n\n\t\tthis.changeChildrenUIValues( defaultScheme );\n\t},\n\n\tresetItems: function() {\n\t\tthis.model.set( 'items', this.getScheme().items );\n\t},\n\n\tresetCollection: function() {\n\t\tvar items = this.model.get( 'items' );\n\n\t\tthis.collection = new Backbone.Collection();\n\n\t\t_.each( items, _.bind( function( item, key ) {\n\t\t\titem.type = this.getType();\n\t\t\titem.key = key;\n\n\t\t\tthis.collection.add( item );\n\t\t}, this ) );\n\t},\n\n\tresetScheme: function() {\n\t\tthis.resetItems();\n\t\tthis.resetCollection();\n\t},\n\n\tonChildviewValueChange: function( childView, newValue ) {\n\t\tthis.ui.saveButton.removeProp( 'disabled' );\n\n\t\tthis.setSchemeValue( childView.model.get( 'key' ), newValue );\n\t}\n} );\n\nmodule.exports = PanelSchemeBaseView;\n",
|
94 |
+
"var PanelSchemeBaseView = require( 'elementor-panel/pages/schemes/base' ),\n\tPanelSchemeColorsView;\n\nPanelSchemeColorsView = PanelSchemeBaseView.extend( {\n\ttemplate: '#tmpl-elementor-panel-schemes-colors',\n\n\tui: function() {\n\t\tvar ui = PanelSchemeBaseView.prototype.ui.apply( this, arguments );\n\n\t\tui.systemSchemes = '.elementor-panel-scheme-color-system-scheme';\n\n\t\treturn ui;\n\t},\n\n\tevents: function() {\n\t\tvar events = PanelSchemeBaseView.prototype.events.apply( this, arguments );\n\n\t\tevents[ 'click @ui.systemSchemes' ] = 'onSystemSchemeClick';\n\n\t\treturn events;\n\t},\n\n\tgetChildView: function() {\n\t\treturn require( 'elementor-panel/pages/schemes/items/color' );\n\t},\n\n\tgetType: function() {\n\t\treturn 'color';\n\t},\n\n\tonSystemSchemeClick: function( event ) {\n\t\tvar $schemeClicked = Backbone.$( event.currentTarget ),\n\t\t\tschemeName = $schemeClicked.data( 'schemeName' ),\n\t\t\tscheme = elementor.config.system_schemes.color[ schemeName ].items;\n\n\t\tthis.changeChildrenUIValues( scheme );\n\t}\n} );\n\nmodule.exports = PanelSchemeColorsView;\n",
|
95 |
+
"var PanelSchemeItemView;\n\nPanelSchemeItemView = Marionette.ItemView.extend( {\n\tgetTemplate: function() {\n\t\treturn Marionette.TemplateCache.get( '#tmpl-elementor-panel-scheme-' + this.model.get( 'type' ) + '-item' );\n\t},\n\n\tclassName: function() {\n\t\treturn 'elementor-panel-scheme-item';\n\t}\n} );\n\nmodule.exports = PanelSchemeItemView;\n",
|
96 |
+
"var PanelSchemeItemView = require( 'elementor-panel/pages/schemes/items/base' ),\n\tPanelSchemeColorView;\n\nPanelSchemeColorView = PanelSchemeItemView.extend( {\n\tui: {\n\t\tinput: '.elementor-panel-scheme-color-value'\n\t},\n\n\tchangeUIValue: function( newValue ) {\n\t\tthis.ui.input.wpColorPicker( 'color', newValue );\n\t},\n\n\tonBeforeDestroy: function() {\n\t\tif ( this.ui.input.wpColorPicker( 'instance' ) ) {\n\t\t\tthis.ui.input.wpColorPicker( 'close' );\n\t\t}\n\t},\n\n\tonRender: function() {\n\t\tthis.ui.input.wpColorPicker( {\n\t\t\tchange: _.bind( function( event, ui ) {\n\t\t\t\tthis.triggerMethod( 'value:change', ui.color.toString() );\n\t\t\t}, this )\n\t\t} );\n\t}\n} );\n\nmodule.exports = PanelSchemeColorView;\n",
|
97 |
+
"var PanelSchemeItemView = require( 'elementor-panel/pages/schemes/items/base' ),\n\tPanelSchemeTypographyView;\n\nPanelSchemeTypographyView = PanelSchemeItemView.extend( {\n\tclassName: function() {\n\t\tvar classes = PanelSchemeItemView.prototype.className.apply( this, arguments );\n\n\t\treturn classes + ' elementor-panel-box';\n\t},\n\n\tui: {\n\t\theading: '.elementor-panel-heading',\n\t\tallFields: '.elementor-panel-scheme-typography-item-field',\n\t\tinputFields: 'input.elementor-panel-scheme-typography-item-field',\n\t\tselectFields: 'select.elementor-panel-scheme-typography-item-field',\n\t\tselectFamilyFields: 'select.elementor-panel-scheme-typography-item-field[name=\"font_family\"]'\n\t},\n\n\tevents: {\n\t\t'input @ui.inputFields': 'onFieldChange',\n\t\t'change @ui.selectFields': 'onFieldChange',\n\t\t'click @ui.heading': 'toggleVisibility'\n\t},\n\n\tonRender: function() {\n\t\tvar self = this;\n\n\t\tthis.ui.inputFields.add( this.ui.selectFields ).each( function() {\n\t\t\tvar $this = Backbone.$( this ),\n\t\t\t\tname = $this.attr( 'name' ),\n\t\t\t\tvalue = self.model.get( 'value' )[ name ];\n\n\t\t\t$this.val( value );\n\t\t} );\n\n\t\tthis.ui.selectFamilyFields.select2( {\n\t\t\tdir: elementor.config.is_rtl ? 'rtl' : 'ltr'\n\t\t} );\n\t},\n\n\ttoggleVisibility: function() {\n\t\tthis.ui.heading.toggleClass( 'elementor-open' );\n\t},\n\n\tchangeUIValue: function( newValue ) {\n\t\tthis.ui.allFields.each( function() {\n\t\t\tvar $this = Backbone.$( this ),\n\t\t\t\tthisName = $this.attr( 'name' ),\n\t\t\t\tnewFieldValue = newValue[ thisName ];\n\n\t\t\t$this.val( newFieldValue ).trigger( 'change' );\n\t\t} );\n\t},\n\n\tonFieldChange: function( event ) {\n\t\tvar $select = this.$( event.currentTarget ),\n\t\t\tcurrentValue = elementor.helpers.cloneObject( this.model.get( 'value' ) ),\n\t\t\tfieldKey = $select.attr( 'name' );\n\n\t\tcurrentValue[ fieldKey ] = $select.val();\n\n\t\tif ( 'font_family' === fieldKey && ! _.isEmpty( currentValue[ fieldKey ] ) ) {\n\t\t\telementor.helpers.enqueueFont( currentValue[ fieldKey ] );\n\t\t}\n\n\t\tthis.triggerMethod( 'value:change', currentValue );\n\t}\n} );\n\nmodule.exports = PanelSchemeTypographyView;\n",
|
98 |
+
"var PanelSchemeBaseView = require( 'elementor-panel/pages/schemes/base' ),\n\tPanelSchemeTypographyView;\n\nPanelSchemeTypographyView = PanelSchemeBaseView.extend( {\n\ttemplate: '#tmpl-elementor-panel-schemes-typography',\n\n\tgetChildView: function() {\n\t\treturn require( 'elementor-panel/pages/schemes/items/typography' );\n\t},\n\n\tgetType: function() {\n\t\treturn 'typography';\n\t}\n} );\n\nmodule.exports = PanelSchemeTypographyView;\n",
|
99 |
+
"var EditModeItemView = require( 'elementor-layouts/edit-mode' ),\n\tPanelLayoutView;\n\nPanelLayoutView = Marionette.LayoutView.extend( {\n\ttemplate: '#tmpl-elementor-panel',\n\n\tclassName: 'elementor-panel-inner',\n\n\tregions: {\n\t\tcontent: '#elementor-panel-content-wrapper',\n\t\theader: '#elementor-panel-header-wrapper',\n\t\tfooter: '#elementor-panel-footer',\n\t\tmodeSwitcher: '#elementor-mode-switcher'\n\t},\n\n\tpages: {\n\t\telements: {\n\t\t\tview: require( 'elementor-panel/pages/elements/elements' ),\n\t\t\ttitle: elementor.translate( 'elementor' )\n\t\t},\n\t\teditor: {\n\t\t\tview: require( 'elementor-panel/pages/editor' )\n\t\t},\n\t\tmenu: {\n\t\t\tview: require( 'elementor-panel/pages/menu/menu' ),\n\t\t\ttitle: elementor.translate( 'elementor' )\n\t\t},\n\t\tcolorsScheme: {\n\t\t\tview: require( 'elementor-panel/pages/schemes/colors' )\n\t\t},\n\t\ttypographyScheme: {\n\t\t\tview: require( 'elementor-panel/pages/schemes/typography' )\n\t\t}\n\t},\n\n\tchildEvents: {\n\t\t'click:add': function() {\n\t\t\tthis.setPage( 'elements' );\n\t\t},\n\t\t'editor:destroy': function() {\n\t\t\tthis.setPage( 'elements' );\n\t\t}\n\t},\n\n\tcurrentPageName: null,\n\n\t_isScrollbarInitialized: false,\n\n\tgetHeaderView: function() {\n\t\treturn this.getChildView( 'header' );\n\t},\n\n\tgetCurrentPageName: function() {\n\t\treturn this.currentPageName;\n\t},\n\n\tgetCurrentPageView: function() {\n\t\treturn this.getChildView( 'content' );\n\t},\n\n\tsetPage: function( page, title, viewOptions ) {\n\t\tvar pageData = this.pages[ page ];\n\n\t\tif ( ! pageData ) {\n\t\t\tthrow new ReferenceError( 'Elementor panel doesn\\'t have page named \\'' + page + '\\'' );\n\t\t}\n\n\t\tthis.showChildView( 'content', new pageData.view( viewOptions ) );\n\n\t\tthis.getHeaderView().setTitle( title || pageData.title );\n\n\t\tthis.currentPageName = page;\n\t},\n\n\tonBeforeShow: function() {\n\t\telementor.filterState.reply( 'get', { type: 'parent', term: '' } );\n\n\t\tvar PanelFooterItemView = require( 'elementor-layouts/panel/footer' ),\n\t\t\tPanelHeaderItemView = require( 'elementor-layouts/panel/header' );\n\n\t\t// Edit Mode\n\t\tthis.showChildView( 'modeSwitcher', new EditModeItemView() );\n\n\t\t// Header\n\t\tthis.showChildView( 'header', new PanelHeaderItemView() );\n\n\t\t// Footer\n\t\tthis.showChildView( 'footer', new PanelFooterItemView() );\n\n\t\t// Added Editor events\n\t\tthis.updateScrollbar = _.throttle( this.updateScrollbar, 100 );\n\n\t\tthis.getRegion( 'content' )\n\t\t\t.on( 'before:show', _.bind( this.onEditorBeforeShow, this ) )\n\t\t\t.on( 'empty', _.bind( this.onEditorEmpty, this ) )\n\t\t\t.on( 'show', _.bind( this.updateScrollbar, this ) );\n\n\t\t// Set default page to elements\n\t\tthis.setPage( 'elements' );\n\n\t\tthis.listenTo( elementor.data, 'scrollbar:update', this.updateScrollbar );\n\t},\n\n\tonEditorBeforeShow: function( view, region, options ) {\n\t\t_.defer( this.updateScrollbar );\n\t},\n\n\tonEditorEmpty: function( oldView ) {\n\t\tthis.updateScrollbar();\n\t},\n\n\tupdateScrollbar: function() {\n\t\tvar $panel = Backbone.$( '#elementor-panel-content-wrapper' );\n\t\tif ( ! this._isScrollbarInitialized ) {\n\t\t\t$panel.perfectScrollbar();\n\t\t\tthis._isScrollbarInitialized = true;\n\n\t\t\treturn;\n\t\t}\n\n\t\t$panel.perfectScrollbar( 'update' );\n\t}\n} );\n\nmodule.exports = PanelLayoutView;\n",
|
100 |
+
"var BaseSettingsModel;\n\nBaseSettingsModel = Backbone.Model.extend( {\n\n\tinitialize: function( data ) {\n\t\tthis.controls = elementor.getElementControls( this );\n\t\tif ( ! this.controls ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar attrs = data || {},\n\t\t\tdefaults = {};\n\n\t\t_.each( this.controls, function( field ) {\n\t\t\tvar control = elementor.config.controls[ field.type ];\n\n\t\t\tif ( _.isObject( control.default_value ) ) {\n\t\t\t\tdefaults[ field.name ] = _.extend( {}, control.default_value, field['default'] || {} );\n\t\t\t} else {\n\t\t\t\tdefaults[ field.name ] = field['default'] || control.default_value;\n\t\t\t}\n\t\t} );\n\n\t\tthis.defaults = defaults;\n\n\t\t// TODO: Change method to recursive\n\t\tattrs = _.defaults( {}, attrs, defaults );\n\n\t\t_.each( this.controls, function( field ) {\n\t\t\tif ( 'repeater' === field.type ) {\n\t\t\t\tattrs[ field.name ] = new Backbone.Collection( attrs[ field.name ], {\n\t\t\t\t\tmodel: BaseSettingsModel\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tthis.set( attrs );\n\t},\n\n\tgetFontControls: function() {\n\t\treturn _.filter( this.controls, _.bind( function( control ) {\n\t\t\treturn 'font' === control.type;\n\t\t}, this ) );\n\t},\n\n\tgetStyleControls: function() {\n\t\treturn _.filter( this.controls, _.bind( function( control ) {\n\t\t\treturn this.isStyleControl( control.name );\n\t\t}, this ) );\n\t},\n\n\tisStyleControl: function( attribute ) {\n\t\tvar currentControl = _.find( this.controls, function( control ) {\n\t\t\treturn attribute === control.name;\n\t\t} );\n\n\t\tif ( _.isUndefined( currentControl ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn ! _.isEmpty( currentControl.selectors );\n\t},\n\n getClassControls: function() {\n return _.filter( this.controls, _.bind( function( control ) {\n return this.isClassControl( control.name );\n }, this ) );\n },\n\n\tisClassControl: function( attribute ) {\n\t\tvar currentControl = _.find( this.controls, function( control ) {\n\t\t\treturn attribute === control.name;\n\t\t} );\n\n\t\treturn currentControl && ! _.isUndefined( currentControl.prefix_class );\n\t},\n\n\tgetControl: function( id ) {\n\t\treturn _.find( this.controls, function( control ) {\n\t\t\treturn id === control.name;\n\t\t} );\n\t},\n\n\tclone: function() {\n\t\treturn new BaseSettingsModel( elementor.helpers.cloneObject( this.attributes ) );\n\t},\n\n\ttoJSON: function() {\n\t\tvar data = Backbone.Model.prototype.toJSON.call( this );\n\n\t\tdelete data.widgetType;\n\t\tdelete data.elType;\n\n\t\t_.each( data, function( attribute, key ) {\n\t\t\tif ( attribute && attribute.toJSON ) {\n\t\t\t\tdata[ key ] = attribute.toJSON();\n\t\t\t}\n\t\t} );\n\n\t\treturn data;\n\t}\n} );\n\nmodule.exports = BaseSettingsModel;\n",
|
101 |
+
"var BaseSettingsModel = require( 'elementor-models/base-settings' ),\n\tColumnSettingsModel;\n\nColumnSettingsModel = BaseSettingsModel.extend( {\n\tdefaults: {\n\t\t_inline_size: '',\n\t\t_column_size: 100\n\t}\n} );\n\nmodule.exports = ColumnSettingsModel;\n",
|
102 |
+
"var BaseSettingsModel = require( 'elementor-models/base-settings' ),\n\tWidgetSettingsModel = require( 'elementor-models/widget-settings' ),\n\tColumnSettingsModel = require( 'elementor-models/column-settings' ),\n\tRowSettingsModel = require( 'elementor-models/row-settings' ),\n\tSectionSettingsModel = require( 'elementor-models/section-settings' ),\n\n\tElementModel,\n\tElementCollection;\n\nElementModel = Backbone.Model.extend( {\n\tdefaults: {\n\t\tid: '',\n\t\telType: '',\n\t\tisInner: false,\n\t\tsettings: {},\n\t\tdefaultEditSettings: {}\n\t},\n\n\tremoteRender: false,\n\t_htmlCache: null,\n\t_jqueryXhr: null,\n\n\tinitialize: function( options ) {\n\t\tvar elements = this.get( 'elements' ),\n\t\t\telType = this.get( 'elType' ),\n\t\t\tsettings;\n\n\t\tvar settingModels = {\n\t\t\twidget: WidgetSettingsModel,\n\t\t\tcolumn: ColumnSettingsModel,\n\t\t\trow: RowSettingsModel,\n\t\t\tsection: SectionSettingsModel\n\t\t};\n\n\t\tvar SettingsModel = settingModels[ elType ] || BaseSettingsModel;\n\n\t\tsettings = this.get( 'settings' );\n\t\tif ( 'widget' === elType ) {\n\t\t\tsettings.widgetType = this.get( 'widgetType' );\n\t\t}\n\t\tsettings.elType = elType;\n\n\t\tsettings = new SettingsModel( settings );\n\t\tthis.set( 'settings', settings );\n\n\t\tthis.initEditSettings();\n\n\t\tif ( undefined !== elements ) {\n\t\t\tthis.set( 'elements', new ElementCollection( elements ) );\n\t\t}\n\n\t\tif ( 'widget' === this.get( 'elType' ) ) {\n\t\t\tthis.remoteRender = true;\n\t\t\tthis.setHtmlCache( options.htmlCache || '' );\n\t\t}\n\n\t\t// No need this variable anymore\n\t\tdelete options.htmlCache;\n\n\t\t// Make call to remote server as throttle function\n\t\tthis.renderRemoteServer = _.throttle( this.renderRemoteServer, 1000 );\n\n\t\tthis.on( 'destroy', this.onDestroy );\n\t\tthis.on( 'editor:close', this.onCloseEditor );\n\t},\n\n\tinitEditSettings: function() {\n\t\tthis.set( 'editSettings', new Backbone.Model( this.get( 'defaultEditSettings' ) ) );\n\t},\n\n\tonDestroy: function() {\n\t\t// Clean the memory for all use instances\n\t\tvar settings = this.get( 'settings' ),\n\t\t\telements = this.get( 'elements' );\n\n\t\tif ( undefined !== elements ) {\n\t\t\t_.each( _.clone( elements.models ), function( model ) {\n\t\t\t\tmodel.destroy();\n\t\t\t} );\n\t\t}\n\t\tsettings.destroy();\n\t},\n\n\tonCloseEditor: function() {\n\t\tthis.initEditSettings();\n\t\tthis.renderRemoteServer();\n\t},\n\n\tsetSetting: function( key, value, triggerChange ) {\n\t\ttriggerChange = triggerChange || false;\n\n\t\tvar settings = this.get( 'settings' );\n\n\t\tsettings.set( key, value );\n\n\t\tthis.set( 'settings', settings );\n\n\t\tif ( triggerChange ) {\n\t\t\tthis.trigger( 'change', this );\n\t\t\tthis.trigger( 'change:settings', this );\n\t\t\tthis.trigger( 'change:settings:' + key, this );\n\t\t}\n\t},\n\n\tgetSetting: function( key ) {\n\t\tvar settings = this.get( 'settings' );\n\n\t\tif ( undefined === settings.get( key ) ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn settings.get( key );\n\t},\n\n\tsetHtmlCache: function( htmlCache ) {\n\t\tthis._htmlCache = htmlCache;\n\t},\n\n\tgetHtmlCache: function() {\n\t\treturn this._htmlCache;\n\t},\n\n\tgetTitle: function() {\n\t\tvar elementData = elementor.getElementData( this );\n\n\t\treturn ( elementData ) ? elementData.title : 'Unknown';\n\t},\n\n\tgetIcon: function() {\n\t\tvar elementData = elementor.getElementData( this );\n\n\t\treturn ( elementData ) ? elementData.icon : 'unknown';\n\t},\n\n\trenderRemoteServer: function() {\n\t\tif ( ! this.remoteRender ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.trigger( 'before:remote:render' );\n\n\t\tif ( this._jqueryXhr && 4 !== this._jqueryXhr ) {\n\t\t\tthis._jqueryXhr.abort();\n\t\t}\n\n\t\tvar data = this.toJSON();\n\n\t\tthis._jqueryXhr = Backbone.$.ajax( {\n\t\t\ttype: 'POST',\n\t\t\turl: elementor.config.ajaxurl,\n\t\t\tdata: {\n\t\t\t\taction: 'elementor_render_widget',\n\t\t\t\tpost_id: elementor.config.post_id,\n\t\t\t\tdata: JSON.stringify( data )\n\t\t\t},\n\t\t\tdataType: 'json'\n\t\t} )\n\n\t\t\t.done( _.bind( this.onRemoteGetHtml, this ) );\n\t},\n\n\tonRemoteGetHtml: function( data ) {\n\t\tthis.setHtmlCache( data.data.render );\n\t\tthis.trigger( 'remote:render' );\n\t},\n\n\tclone: function() {\n\t\tvar newModel = Backbone.Model.prototype.clone.apply( this, arguments );\n\t\tnewModel.set( 'id', elementor.helpers.getUniqueID() );\n\n\t\tnewModel.setHtmlCache( this.getHtmlCache() );\n\n\t\tvar elements = this.get( 'elements' ),\n\t\t\tsettings = this.get( 'settings' );\n\n\t\tif ( ! _.isEmpty( elements ) ) {\n\t\t\tnewModel.set( 'elements', elements.clone() );\n\t\t}\n\n\t\tnewModel.set( 'settings', settings.clone() );\n\n\t\treturn newModel;\n\t},\n\n\ttoJSON: function( options ) {\n\t\toptions = _.extend( { copyHtmlCache: false }, options );\n\n\t\t// Call parent's toJSON method\n\t\tvar data = Backbone.Model.prototype.toJSON.call( this );\n\n\t\t_.each( data, function( attribute, key ) {\n\t\t\tif ( attribute && attribute.toJSON ) {\n\t\t\t\tdata[ key ] = attribute.toJSON( options );\n\t\t\t}\n\t\t} );\n\n\t\tif ( options.copyHtmlCache ) {\n\t\t\tdata.htmlCache = this.getHtmlCache();\n\t\t} else {\n\t\t\tdelete data.htmlCache;\n\t\t}\n\n\t\treturn data;\n\t}\n\n} );\n\nElementCollection = Backbone.Collection.extend( {\n\tadd: function( models, options, isCorrectSet ) {\n\t\tif ( ( ! options || ! options.silent ) && ! isCorrectSet ) {\n\t\t\tthrow 'Call Error: Adding model to element collection is allowed only by the dedicated addChildModel() method.';\n\t\t}\n\n\t\treturn Backbone.Collection.prototype.add.call( this, models, options );\n\t},\n\n\tmodel: function( attrs, options ) {\n\t\tif ( attrs.elType ) {\n\t\t\treturn new ElementModel( attrs, options );\n\t\t}\n\t\treturn new Backbone.Model( attrs, options );\n\t},\n\n\tclone: function() {\n\t\tvar tempCollection = Backbone.Collection.prototype.clone.apply( this, arguments ),\n\t\t\tnewCollection = new ElementCollection();\n\n\t\ttempCollection.forEach( function( model ) {\n\t\t\tnewCollection.add( model.clone(), null, true );\n\t\t} );\n\n\t\treturn newCollection;\n\t}\n} );\n\nElementCollection.prototype.sync = function() {\n\treturn null;\n};\nElementCollection.prototype.fetch = function() {\n\treturn null;\n};\nElementCollection.prototype.save = function() {\n\treturn null;\n};\n\nElementModel.prototype.sync = function() {\n\treturn null;\n};\nElementModel.prototype.fetch = function() {\n\treturn null;\n};\nElementModel.prototype.save = function() {\n\treturn null;\n};\n\nmodule.exports = {\n\tModel: ElementModel,\n\tCollection: ElementCollection\n};\n",
|
103 |
+
"var BaseSettingsModel = require( 'elementor-models/base-settings' ),\n\tRowSettingsModel;\n\nRowSettingsModel = BaseSettingsModel.extend( {\n\tdefaults: {}\n} );\n\nmodule.exports = RowSettingsModel;",
|
104 |
+
"var BaseSettingsModel = require( 'elementor-models/base-settings' ),\n\tSectionSettingsModel;\n\nSectionSettingsModel = BaseSettingsModel.extend( {\n\tdefaults: {}\n} );\n\nmodule.exports = SectionSettingsModel;",
|
105 |
+
"var BaseSettingsModel = require( 'elementor-models/base-settings' ),\n\tWidgetSettingsModel;\n\nWidgetSettingsModel = BaseSettingsModel.extend( {\n\t\n} );\n\nmodule.exports = WidgetSettingsModel;",
|
106 |
+
"var heartbeat;\n\nheartbeat = {\n\n\tinit: function() {\n\t\tvar modal;\n\n\t\tthis.getModal = function() {\n\t\t\tif ( ! modal ) {\n\t\t\t\tmodal = this.initModal();\n\t\t\t}\n\n\t\t\treturn modal;\n\t\t};\n\n\t\tBackbone.$( document ).on( {\n\t\t\t'heartbeat-send': function( event, data ) {\n\t\t\t\tdata.elementor_post_lock = {\n\t\t\t\t\tpost_ID: elementor.config.post_id\n\t\t\t\t};\n\t\t\t},\n\t\t\t'heartbeat-tick': function( event, response ) {\n\t\t\t\tif ( response.locked_user ) {\n\t\t\t\t\theartbeat.showLockMessage( response.locked_user );\n\t\t\t\t} else {\n\t\t\t\t\theartbeat.getModal().hide();\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( elementor.config.locked_user ) {\n\t\t\theartbeat.showLockMessage( elementor.config.locked_user );\n\t\t}\n\t},\n\n\tinitModal: function() {\n\t\tvar modal = elementor.dialogsManager.createWidget( 'options', {\n\t\t\theaderMessage: elementor.translate( 'take_over' )\n\t\t} );\n\n\t\tmodal.addButton( {\n\t\t\tname: 'go_back',\n\t\t\ttext: elementor.translate( 'go_back' ),\n\t\t\tcallback: function() {\n\t\t\t\tparent.history.go( -1 );\n\t\t\t}\n\t\t} );\n\n\t\tmodal.addButton( {\n\t\t\tname: 'take_over',\n\t\t\ttext: elementor.translate( 'take_over' ),\n\t\t\tcallback: function() {\n\t\t\t\twp.heartbeat.enqueue( 'elementor_force_post_lock', true );\n\t\t\t\twp.heartbeat.connectNow();\n\t\t\t}\n\t\t} );\n\n\t\treturn modal;\n\t},\n\n\tshowLockMessage: function( lockedUser ) {\n\t\tvar modal = heartbeat.getModal();\n\n\t\tmodal\n\t\t\t.setMessage( elementor.translate( 'dialog_user_taken_over', [ lockedUser ] ) )\n\t\t .show();\n\t}\n};\n\nmodule.exports = heartbeat;\n",
|
107 |
+
"var helpers;\n\nhelpers = {\n\t_enqueuedFonts: [],\n\n\telementsHierarchy: {\n\t\tsection: {\n\t\t\tcolumn: {\n\t\t\t\twidget: null,\n\t\t\t\tsection: null\n\t\t\t}\n\t\t}\n\t},\n\n\tenqueueFont: function( font ) {\n\t\tif ( -1 !== this._enqueuedFonts.indexOf( font ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar fontType = elementor.config.controls.font.fonts[ font ],\n\t\t\tfontUrl;\n\n\t\tswitch ( fontType ) {\n\t\t\tcase 'googlefonts' :\n\t\t\t\tfontUrl = 'https://fonts.googleapis.com/css?family=' + font + ':100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic';\n\t\t\t\tbreak;\n\n\t\t\tcase 'earlyaccess' :\n\t\t\t\tvar fontLowerString = font.replace( /\\s+/g, '' ).toLowerCase();\n\t\t\t\tfontUrl = 'https://fonts.googleapis.com/earlyaccess/' + fontLowerString + '.css';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( ! _.isEmpty( fontUrl ) ) {\n\t\t\telementor.$previewContents.find( 'link:last' ).after( '<link href=\"' + fontUrl + '\" rel=\"stylesheet\" type=\"text/css\">' );\n\t\t}\n\t\tthis._enqueuedFonts.push( font );\n\t},\n\n\tgetElementChildType: function( elementType, container ) {\n\t\tif ( ! container ) {\n\t\t\tcontainer = this.elementsHierarchy;\n\t\t}\n\n\t\tif ( undefined !== container[ elementType ] ) {\n\n\t\t\tif ( Backbone.$.isPlainObject( container[ elementType ] ) ) {\n\t\t\t\treturn Object.keys( container[ elementType ] );\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tfor ( var type in container ) {\n\n\t\t\tif ( ! container.hasOwnProperty( type ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( ! Backbone.$.isPlainObject( container[ type ] ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar result = this.getElementChildType( elementType, container[ type ] );\n\n\t\t\tif ( result ) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tgetUniqueID: function() {\n\t\tvar id;\n\n\t\t// TODO: Check conflict models\n\t\t//while ( true ) {\n\t\t\tid = Math.random().toString( 36 ).substr( 2, 7 );\n\t\t\t//if ( 1 > $( 'li.item-id-' + id ).length ) {\n\t\t\t\treturn id;\n\t\t\t//}\n\t\t//}\n\t},\n\n\tstringReplaceAll: function( string, replaces ) {\n\t\tvar re = new RegExp( Object.keys( replaces ).join( '|' ), 'gi' );\n\n\t\treturn string.replace( re, function( matched ) {\n\t\t\treturn replaces[ matched ];\n\t\t} );\n\t},\n\n\tisControlVisible: function( controlModel, elementSettingsModel ) {\n\t\tvar condition;\n\n\t\t// TODO: Better way to get this?\n\t\tif ( _.isFunction( controlModel.get ) ) {\n\t\t\tcondition = controlModel.get( 'condition' );\n\t\t} else {\n\t\t\tcondition = controlModel.condition;\n\t\t}\n\n\t\tif ( _.isEmpty( condition ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar hasFields = _.filter( condition, function( conditionValue, conditionName ) {\n\t\t\tvar conditionNameParts = conditionName.match( /([a-z_0-9]+)(?:\\[([a-z_]+)])?(!?)$/i ),\n\t\t\t\tconditionRealName = conditionNameParts[1],\n\t\t\t\tconditionSubKey = conditionNameParts[2],\n\t\t\t\tisNegativeCondition = !! conditionNameParts[3],\n\t\t\t\tcontrolValue = elementSettingsModel.get( conditionRealName );\n\n\t\t\tif ( conditionSubKey ) {\n\t\t\t\tcontrolValue = controlValue[ conditionSubKey ];\n\t\t\t}\n\n\t\t\tvar isContains = ( _.isArray( conditionValue ) ) ? _.contains( conditionValue, controlValue ) : conditionValue === controlValue;\n\n\t\t\treturn isNegativeCondition ? isContains : ! isContains;\n\t\t} );\n\n\t\treturn _.isEmpty( hasFields );\n\t},\n\n\tcloneObject: function( object ) {\n\t\treturn JSON.parse( JSON.stringify( object ) );\n\t},\n\n\tgetYoutubeIDFromURL: function( url ) {\n\t\tvar videoIDParts = url.match( /^.*(youtu.be\\/|v\\/|e\\/|u\\/\\w+\\/|embed\\/|v=)([^#\\&\\?]*).*/ );\n\n\t\treturn videoIDParts && videoIDParts[2];\n\t}\n};\n\nmodule.exports = helpers;\n",
|
108 |
+
"var Schemes;\n\nSchemes = function() {\n\tvar self = this,\n\t\tstyleRules = {},\n\t\tschemes = {},\n\t\tsettings = {\n\t\t\tselectorWrapperPrefix: '.elementor-widget-'\n\t\t},\n\t\telements = {};\n\n\tvar buildUI = function() {\n\t\telements.$previewHead.append( elements.$style );\n\t};\n\n\tvar initElements = function() {\n\t\telements.$style = Backbone.$( '<style>', {\n\t\t\tid: 'elementor-style-scheme'\n\t\t});\n\n\t\telements.$previewHead = elementor.$previewContents.find( 'head' );\n\t};\n\n\tvar addStyleRule = function( selector, property ) {\n\t\tif ( ! styleRules[ selector ] ) {\n\t\t\tstyleRules[ selector ] = [];\n\t\t}\n\n\t\tstyleRules[ selector ].push( property );\n\t};\n\n\tvar fetchControlStyles = function( control, widgetType ) {\n\t\t_.each( control.selectors, function( cssProperty, selector ) {\n\t\t\tvar currentSchemeValue = self.getSchemeValue( control.scheme.type, control.scheme.value, control.scheme.key ),\n\t\t\t\toutputSelector,\n\t\t\t\toutputCssProperty;\n\n\t\t\tif ( _.isEmpty( currentSchemeValue ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toutputSelector = selector.replace( /\\{\\{WRAPPER\\}\\}/g, settings.selectorWrapperPrefix + widgetType );\n\t\t\toutputCssProperty = elementor.getControlItemView().replaceStyleValues( cssProperty, currentSchemeValue.value );\n\n\t\t\taddStyleRule( outputSelector, outputCssProperty );\n\t\t} );\n\t};\n\n\tvar fetchWidgetControlsStyles = function( widget, widgetType ) {\n\t\tvar widgetSchemeControls = self.getWidgetSchemeControls( widget );\n\n\t\t_.each( widgetSchemeControls, function( control ) {\n\t\t\tfetchControlStyles( control, widgetType );\n\t\t} );\n\t};\n\n\tvar fetchAllWidgetsSchemesStyle = function() {\n\t\t_.each( elementor.config.widgets, function( widget, widgetType ) {\n\t\t\tfetchWidgetControlsStyles( widget, widgetType );\n\t\t} );\n\t};\n\n\tvar parseSchemeStyle = function() {\n\t\tvar stringOutput = '';\n\n\t\t_.each( styleRules, function( properties, selector ) {\n\t\t\tstringOutput += selector + '{' + properties.join( '' ) + '}';\n\t\t} );\n\n\t\treturn stringOutput;\n\t};\n\n\tvar resetStyleRules = function() {\n\t\tstyleRules = {};\n\t};\n\n\tthis.init = function() {\n\t\tinitElements();\n\t\tbuildUI();\n\n\t\tself.resetSchemes();\n\n\t\treturn self;\n\t};\n\n\tthis.getWidgetSchemeControls = function( widget ) {\n\t\treturn _.filter( widget.controls, function( control ) {\n\t\t\treturn _.isObject( control.scheme );\n\t\t} );\n\t};\n\n\tthis.getSchemes = function() {\n\t\treturn schemes;\n\t};\n\n\tthis.getScheme = function( schemeName ) {\n\t\treturn schemes[ schemeName ];\n\t};\n\n\tthis.getSchemeValue = function( schemeName, value, key ) {\n\t\tvar scheme = self.getScheme( schemeName ),\n\t\t\tschemeValue = scheme.items[ value ];\n\n\t\tif ( key && _.isObject( schemeValue ) ) {\n\t\t\tvar clonedSchemeValue = elementor.helpers.cloneObject( schemeValue );\n\n\t\t\tclonedSchemeValue.value = schemeValue.value[ key ];\n\n\t\t\treturn clonedSchemeValue;\n\t\t}\n\n\t\treturn schemeValue;\n\t};\n\n\tthis.printSchemesStyle = function() {\n\t\tresetStyleRules();\n\t\tfetchAllWidgetsSchemesStyle();\n\n\t\telements.$style.text( parseSchemeStyle() );\n\t};\n\n\tthis.resetSchemes = function( schemeName ) {\n\t\tif ( schemeName ) {\n\t\t\tschemes[ schemeName ] = elementor.helpers.cloneObject( elementor.config.schemes[ schemeName ] );\n\t\t} else {\n\t\t\tschemes = elementor.helpers.cloneObject( elementor.config.schemes );\n\t\t}\n\n\t\tthis.onSchemeChange();\n\t};\n\n\tthis.saveScheme = function( schemeName ) {\n\t\telementor.config.schemes[ schemeName ].items = elementor.helpers.cloneObject( schemes[ schemeName ].items );\n\n\t\tNProgress.start();\n\t\tBackbone.$.ajax( {\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: elementor.config.ajaxurl,\n\t\t\t\tdata: {\n\t\t\t\t\taction: 'elementor_apply_scheme',\n\t\t\t\t\tscheme_name: schemeName,\n\t\t\t\t\tdata: JSON.stringify( schemes[ schemeName ].items )\n\t\t\t\t}\n\t\t\t} )\n\n\t\t\t.done( function( data ) {\n\t\t\t\tNProgress.done();\n\t\t\t} );\n\t};\n\n\tthis.setSchemeValue = function( schemeName, itemKey, value ) {\n\t\tschemes[ schemeName ].items[ itemKey ].value = value;\n\n\t\tthis.onSchemeChange();\n\t};\n\n\tthis.onSchemeChange = function() {\n\t\tthis.printSchemesStyle();\n\t};\n};\n\nmodule.exports = new Schemes();\n",
|
109 |
+
"var BaseElementView;\n\nBaseElementView = Marionette.CompositeView.extend( {\n\ttagName: 'div',\n\n\tid: function() {\n\t\treturn this.getElementUniqueClass();\n\t},\n\n\tattributes: function() {\n\t\tvar type = this.model.get( 'elType' );\n\n\t\tif ( 'widget' === type ) {\n\t\t\ttype = this.model.get( 'widgetType' );\n\t\t}\n\t\treturn {\n\t\t\t'data-element_type': type\n\t\t};\n\t},\n\n\tmodelEvents: {\n\t\t//\"change\": \"render\"\n\t\t//'destroy': 'onModelDestroy'\n\t},\n\n\tbaseEvents: {},\n\n\telementEvents: {},\n\n\tgetElementType: function() {\n\t\treturn this.model.get( 'elType' );\n\t},\n\n\tgetChildType: function() {\n\t\treturn elementor.helpers.getElementChildType( this.getElementType() );\n\t},\n\n\tevents: function() {\n\t\treturn _.extend( {}, this.baseEvents, this.elementEvents );\n\t},\n\n\tinitialize: function() {\n\t\t// grab the child collection from the parent model\n\t\t// so that we can render the collection as children\n\t\t// of this parent element\n\t\tthis.collection = this.model.get( 'elements' );\n\n\t\tif ( this.collection ) {\n\t\t\tthis.listenTo( this.collection, 'add remove reset', this.onCollectionChanged, this );\n\t\t}\n\n\t\tthis.listenTo( this.model.get( 'settings' ), 'change', this.onSettingsChanged, this );\n\t\tthis.listenTo( this.model.get( 'editSettings' ), 'change', this.onSettingsChanged, this );\n\n\t\tthis.on( 'render', this.enqueueFonts );\n\t\tthis.on( 'render', this.renderStyles );\n\t\tthis.on( 'render', this.renderCustomClasses );\n\t\tthis.on( 'render', this.runReadyTrigger );\n\n\t\tthis.initRemoveDialog();\n\t},\n\n\taddChildModel: function( model, options ) {\n\t\treturn this.collection.add( model, options, true );\n\t},\n\n\tisCollectionFilled: function() {\n\t\treturn false;\n\t},\n\n\tisInner: function() {\n\t\treturn !! this.model.get( 'isInner' );\n\t},\n\n\tinitRemoveDialog: function() {\n\t\tvar removeDialog;\n\n\t\tthis.getRemoveDialog = function() {\n\t\t\tif ( ! removeDialog ) {\n\t\t\t\tremoveDialog = elementor.dialogsManager.createWidget( 'confirm', {\n\t\t\t\t\tmessage: elementor.translate( 'dialog_confirm_delete' ),\n\t\t\t\t\theaderMessage: elementor.translate( 'delete_element' ),\n\t\t\t\t\tstrings: {\n\t\t\t\t\t\tconfirm: elementor.translate( 'delete' ),\n\t\t\t\t\t\tcancel: elementor.translate( 'cancel' )\n\t\t\t\t\t},\n\t\t\t\t\tdefaultOption: 'confirm',\n\t\t\t\t\tonConfirm: _.bind( function() {\n\t\t\t\t\t\tthis.model.destroy();\n\t\t\t\t\t}, this )\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn removeDialog;\n\t\t};\n\t},\n\n\tenqueueFonts: function() {\n\t\t_.each( this.model.get( 'settings' ).getFontControls(), _.bind( function( control ) {\n\t\t\tvar fontFamilyName = this.model.getSetting( control.name );\n\t\t\tif ( _.isEmpty( fontFamilyName ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar isVisible = elementor.helpers.isControlVisible( control, this.model.get( 'settings' ) );\n\t\t\tif ( ! isVisible ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telementor.helpers.enqueueFont( fontFamilyName );\n\t\t}, this ) );\n\t},\n\n\trenderStyles: function() {\n\t\tvar styleHtml = '',\n\t\t\t$stylesheet = elementor.$previewContents.find( '#elementor-style-' + this.model.cid ),\n\t\t\tstyleControls = this.model.get( 'settings' ).getStyleControls();\n\n\t\t_.each( styleControls, _.bind( function( control ) {\n\t\t\tvar controlValue = this.model.getSetting( control.name );\n\n\t\t\tif ( ! _.isNumber( controlValue ) && _.isEmpty( controlValue ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar isVisibility = elementor.helpers.isControlVisible( control, this.model.get( 'settings' ) );\n\t\t\tif ( ! isVisibility ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.each( control.selectors, _.bind( function( cssProperty, selector ) {\n\t\t\t\tvar outputSelector = selector.replace( /\\{\\{WRAPPER\\}\\}/g, '#' + this.getElementUniqueClass() ),\n\t\t\t\t\toutputCssProperty = elementor.getControlItemView( control.type ).replaceStyleValues( cssProperty, controlValue );\n\n\t\t\t\tif ( _.isEmpty( outputCssProperty ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstyleHtml += outputSelector + '{' + outputCssProperty + '}';\n\t\t\t}, this ) );\n\t\t}, this ) );\n\n\t\tif ( 'column' === this.model.get( 'elType' ) ) {\n\t\t\tvar inlineSize = this.model.getSetting( '_inline_size' );\n\t\t\tif ( ! _.isEmpty( inlineSize ) ) {\n\t\t\t\tstyleHtml += '@media (min-width: 768px) {#' + this.getElementUniqueClass() + '{width:' + inlineSize + '%;}';\n\t\t\t}\n\t\t}\n\n\t\tif ( 0 === $stylesheet.length ) {\n\t\t\telementor.$previewContents.find( 'head' ).append( '<style type=\"text/css\" id=\"elementor-style-' + this.model.cid + '\"></style>' );\n\t\t\t$stylesheet = elementor.$previewContents.find( '#elementor-style-' + this.model.cid );\n\t\t}\n\n\t\t$stylesheet.html( styleHtml );\n\t},\n\n\trenderCustomClasses: function() {\n\t\tthis.$el.addClass( 'elementor-element' );\n\n\t\tvar settings = this.model.get( 'settings' );\n\n\t\t_.each( settings.attributes, _.bind( function( value, attribute ) {\n\t\t\tif ( settings.isClassControl( attribute ) ) {\n\t\t\t\tvar currentControl = settings.getControl( attribute );\n\n\t\t\t\tthis.$el.removeClass( currentControl.prefix_class + settings.previous( attribute ) );\n\n\t\t\t\tvar isVisible = elementor.helpers.isControlVisible( currentControl, this.model.get( 'settings' ) );\n\n\t\t\t\tif ( isVisible && ! _.isEmpty( settings.get( attribute ) ) ) {\n\t\t\t\t\tthis.$el.addClass( currentControl.prefix_class + settings.get( attribute ) );\n\t\t\t\t\tthis.$el.addClass( _.result( this, 'className' ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}, this ) );\n\t},\n\n\trunReadyTrigger: function() {\n\t\telementorBindUI.runReadyTrigger( this.$el );\n\t},\n\n\tgetElementUniqueClass: function() {\n\t\treturn 'elementor-element-' + this.model.get( 'id' );\n\t},\n\n\tonCollectionChanged: function() {\n\t\telementor.setFlagEditorChange( true );\n\t},\n\n\tonSettingsChanged: function( settings ) {\n\t\telementor.setFlagEditorChange( true );\n\n this.renderStyles();\n\t\tthis.renderCustomClasses();\n\t},\n\n\tonClickRemove: function( event ) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tthis.getRemoveDialog().show();\n\t}\n} );\n\nmodule.exports = BaseElementView;\n",
|
110 |
+
"var BaseElementView = require( 'elementor-views/base-element' ),\n\tElementEmptyView = require( 'elementor-views/element-empty' ),\n\tWidgetView = require( 'elementor-views/widget' ),\n\tColumnView;\n\nColumnView = BaseElementView.extend( {\n\ttemplate: Marionette.TemplateCache.get( '#tmpl-elementor-element-column-content' ),\n\n\telementEvents: {\n\t\t'click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-remove': 'onClickRemove',\n\t\t'click @ui.listTriggers': 'onClickTrigger'\n\t},\n\n\tgetChildView: function( model ) {\n\t\tif ( 'section' === model.get( 'elType' ) ) {\n\t\t\treturn require( 'elementor-views/section' ); // We need to require the section dynamically\n\t\t}\n\n\t\treturn WidgetView;\n\t},\n\n\temptyView: ElementEmptyView,\n\n\tclassName: function() {\n\t\tvar classes = 'elementor-column',\n\t\t\ttype = this.isInner() ? 'inner' : 'top';\n\n\t\tclasses += ' elementor-' + type + '-column';\n\n\t\treturn classes;\n\t},\n\n\tchildViewContainer: '> .elementor-column-wrap > .elementor-widget-wrap',\n\n\ttriggers: {\n\t\t'click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-add': 'click:new',\n\t\t'click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-edit': 'click:edit',\n\t\t'click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-trigger': 'click:edit',\n\t\t'click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-duplicate': 'click:duplicate'\n\t},\n\n\tui: {\n\t\tcolumnTitle: '.column-title',\n\t\tcolumnInner: '> .elementor-column-wrap',\n\t\tlistTriggers: '> .elementor-element-overlay .elementor-editor-element-trigger'\n\t},\n\n\tbehaviors: {\n\t\tSortable: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/sortable' ),\n\t\t\telChildType: 'widget'\n\t\t},\n\t\tResizable: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/resizable' )\n\t\t},\n\t\tHandleDuplicate: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/handle-duplicate' )\n\t\t},\n\t\tHandleEditor: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/handle-editor' )\n\t\t},\n\t\tHandleEditMode: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/handle-edit-mode' )\n\t\t},\n\t\tHandleAddMode: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/duplicate' )\n\t\t},\n\t\tHandleElementsRelation: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/elements-relation' )\n\t\t}\n\t},\n\n\tinitialize: function() {\n\t\tBaseElementView.prototype.initialize.apply( this, arguments );\n\n\t\tthis.listenTo( elementor.data, 'widget:drag:start', this.onWidgetDragStart );\n\t\tthis.listenTo( elementor.data, 'widget:drag:end', this.onWidgetDragEnd );\n\t},\n\n\tisDroppingAllowed: function( side, event ) {\n\t\tvar elementView = elementor.panelElements.request( 'element:selected' ),\n\t\t\telType = elementView.model.get( 'elType' );\n\n\t\tif ( 'section' === elType ) {\n\t\t\treturn ! this.isInner();\n\t\t}\n\n\t\treturn 'widget' === elType;\n\t},\n\n\tchangeSizeUI: function() {\n\t\tvar columnSize = this.model.getSetting( '_column_size' ),\n\t\t\tinlineSize = this.model.getSetting( '_inline_size' ),\n\t\t\tcolumnSizeTitle = parseFloat( inlineSize || columnSize ).toFixed( 1 ) + '%';\n\n\t\tthis.$el.attr( 'data-col', columnSize );\n\t\t//this.$el.css( 'width', inlineSize ? inlineSize + '%' : '' );\n\n\t\tthis.ui.columnTitle.html( columnSizeTitle );\n\t},\n\n\tgetSortableOptions: function() {\n\t\treturn {\n\t\t\tconnectWith: '.elementor-widget-wrap',\n\t\t\titems: '> .elementor-element'\n\t\t};\n\t},\n\n\t// Events\n\tonCollectionChanged: function() {\n\t\tBaseElementView.prototype.onCollectionChanged.apply( this, arguments );\n\n\t\tthis.changeChildContainerClasses();\n\t},\n\n\tchangeChildContainerClasses: function() {\n\t\tvar emptyClass = 'elementor-element-empty',\n\t\t\tpopulatedClass = 'elementor-element-populated';\n\n\t\tif ( this.collection.isEmpty() ) {\n\t\t\tthis.ui.columnInner.removeClass( populatedClass ).addClass( emptyClass );\n\t\t} else {\n\t\t\tthis.ui.columnInner.removeClass( emptyClass ).addClass( populatedClass );\n\t\t}\n\t},\n\n\tonRender: function() {\n\t\tvar self = this;\n\n\t\tself.changeChildContainerClasses();\n\t\tself.changeSizeUI();\n\n\t\tself.$el.html5Droppable( {\n\t\t\titems: ' > .elementor-column-wrap > .elementor-widget-wrap > .elementor-element, >.elementor-column-wrap > .elementor-widget-wrap > .elementor-empty-view > .elementor-first-add',\n\t\t\taxis: [ 'vertical' ],\n\t\t\tgroups: [ 'elementor-element' ],\n\t\t\tisDroppingAllowed: _.bind( self.isDroppingAllowed, self ),\n\t\t\tonDragging: function( side, event ) {\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tself.$el.addClass( 'elementor-dragging-on-child' );\n\n\t\t\t\tif ( this.dataset.side !== side ) {\n\t\t\t\t\tBackbone.$( this ).attr( 'data-side', side );\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDragLeave: function() {\n\t\t\t\tself.$el.removeClass( 'elementor-dragging-on-child' );\n\n\t\t\t\tBackbone.$( this ).removeAttr( 'data-side' );\n\t\t\t},\n\t\t\tonDropping: function( side, event ) {\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tvar elementView = elementor.panelElements.request( 'element:selected' ),\n\t\t\t\t\tnewIndex = Backbone.$( this ).index();\n\n\t\t\t\tif ( 'bottom' === side ) {\n\t\t\t\t\tnewIndex++;\n\t\t\t\t}\n\n\t\t\t\tvar itemData = {\n\t\t\t\t\tid: elementor.helpers.getUniqueID(),\n\t\t\t\t\telType: elementView.model.get( 'elType' )\n\t\t\t\t};\n\n\t\t\t\tif ( 'widget' === itemData.elType ) {\n\t\t\t\t\titemData.widgetType = elementView.model.get( 'widgetType' );\n\t\t\t\t} else if ( 'section' === itemData.elType ) {\n\t\t\t\t\titemData.elements = [];\n\t\t\t\t\titemData.isInner = true;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tself.triggerMethod( 'request:add', itemData, { at: newIndex } );\n\t\t\t}\n\t\t} );\n\t},\n\n\tonClickTrigger: function( event ) {\n\t\tevent.preventDefault();\n\n\t\tvar $trigger = this.$( event.currentTarget ),\n\t\t\tisTriggerActive = $trigger.hasClass( 'elementor-active' );\n\n\t\tthis.ui.listTriggers.removeClass( 'elementor-active' );\n\n\t\tif ( ! isTriggerActive ) {\n\t\t\t$trigger.addClass( 'elementor-active' );\n\t\t}\n\t},\n\n\tonWidgetDragStart: function() {\n\t\tthis.$el.addClass( 'elementor-dragging' );\n\t},\n\n\tonWidgetDragEnd: function() {\n\t\tthis.$el.removeClass( 'elementor-dragging' );\n\t}\n} );\n\nmodule.exports = ColumnView;\n",
|
111 |
+
"var ControlBaseItemView = require( 'elementor-views/controls/base' ),\n\tControlBaseMultipleItemView;\n\nControlBaseMultipleItemView = ControlBaseItemView.extend( {\n\n\tapplySavedValue: function() {\n\t\tvar values = this.getControlValue(),\n\t\t\t$inputs = this.$( '[data-setting]' ),\n\t\t\tself = this;\n\n\t\t_.each( values, function( value, key ) {\n\t\t\tvar $input = $inputs.filter( function() {\n\t\t\t\treturn key === this.dataset.setting;\n\t\t\t} );\n\n\t\t\tself.setInputValue( $input, value );\n\t\t} );\n\t},\n\n\tgetControlValue: function( key ) {\n\t\tvar values = this.elementSettingsModel.get( this.model.get( 'name' ) );\n\n\t\tif ( ! Backbone.$.isPlainObject( values ) ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tif ( key ) {\n\t\t\treturn values[ key ] || '';\n\t\t}\n\n\t\treturn elementor.helpers.cloneObject( values );\n\t},\n\n\tsetValue: function( key, value ) {\n\t\tvar values = this.getControlValue();\n\n\t\tif ( 'object' === typeof key ) {\n\t\t\t_.each( key, function( internalValue, internalKey ) {\n\t\t\t\tvalues[ internalKey ] = internalValue;\n\t\t\t} );\n\t\t} else {\n\t\t\tvalues[ key ] = value;\n\t\t}\n\n\t\tthis.setSettingsModel( values );\n\t},\n\n\tupdateElementModel: function( event ) {\n\t\tvar inputValue = this.getInputValue( event.currentTarget ),\n\t\t\tkey = event.currentTarget.dataset.setting;\n\n\t\tthis.setValue( key, inputValue );\n\t}\n}, {\n\t// Static methods\n\treplaceStyleValues: function( cssProperty, controlValue ) {\n\t\tif ( ! _.isObject( controlValue ) ) {\n\t\t\treturn ''; // invalid\n\t\t}\n\n\t\t// Trying to retrieve whole the related properties\n\t\t// according to the string matches.\n\t\t// When one of the properties is empty, aborting\n\t\t// the action and returning an empty string.\n\t\ttry {\n\t\t\treturn cssProperty.replace( /\\{\\{([A-Z]+)}}/g, function( fullMatch, pureMatch ) {\n\t\t\t\tvar value = controlValue[ pureMatch.toLowerCase() ];\n\n\t\t\t\tif ( '' === value ) {\n\t\t\t\t\tthrow '';\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t} );\n\t\t} catch ( exception ) {\n\t\t\treturn '';\n\t\t}\n\t}\n} );\n\nmodule.exports = ControlBaseMultipleItemView;\n",
|
112 |
+
"var ControlBaseMultipleItemView = require( 'elementor-views/controls/base-multiple' ),\n\tControlBaseUnitsItemView;\n\nControlBaseUnitsItemView = ControlBaseMultipleItemView.extend( {\n\n\tgetCurrentRange: function() {\n\t\treturn this.getUnitRange( this.getControlValue( 'unit' ) );\n\t},\n\n\tgetUnitRange: function( unit ) {\n\t\tvar ranges = this.model.get( 'range' );\n\n\t\tif ( ! ranges || ! ranges[ unit ] ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn ranges[ unit ];\n\t}\n} );\n\nmodule.exports = ControlBaseUnitsItemView;\n",
|
113 |
+
"var ControlBaseItemView;\n\nControlBaseItemView = Marionette.CompositeView.extend( {\n\tui: function() {\n\t\treturn {\n\t\t\tinput: 'input[data-setting][type!=\"checkbox\"][type!=\"radio\"]',\n\t\t\tcheckbox: 'input[data-setting][type=\"checkbox\"]',\n\t\t\tradio: 'input[data-setting][type=\"radio\"]',\n\t\t\tselect: 'select[data-setting]',\n\t\t\ttextarea: 'textarea[data-setting]'\n\t\t};\n\t},\n\n\tclassName: function() {\n\t\t// TODO: Any better classes for that?\n\t\tvar classes = 'elementor-control elementor-control-' + this.model.get( 'name' ) + ' elementor-control-type-' + this.model.get( 'type' ),\n\t\t\tmodelClasses = this.model.get( 'classes' );\n\n\t\tif ( ! _.isEmpty( modelClasses ) ) {\n\t\t\tclasses += ' ' + modelClasses;\n\t\t}\n\n\t\tif ( ! _.isEmpty( this.model.get( 'section' ) ) ) {\n\t\t\tclasses += ' elementor-control-under-section';\n\t\t}\n\n\t\treturn classes;\n\t},\n\n\tgetTemplate: function() {\n\t\treturn Marionette.TemplateCache.get( '#tmpl-elementor-control-' + this.model.get( 'type' ) + '-content' );\n\t},\n\n\ttemplateHelpers: function() {\n\t\tvar controlData = {\n\t\t\tcontrolValue: this.getControlValue(),\n\t\t\t_cid: this.model.cid\n\t\t};\n\n\t\treturn {\n\t\t\tdata: _.extend( {}, this.model.toJSON(), controlData )\n\t\t};\n\t},\n\n\tbaseEvents: {\n\t\t'input @ui.input': 'onBaseInputChange',\n\t\t'change @ui.checkbox': 'onBaseInputChange',\n\t\t'change @ui.radio': 'onBaseInputChange',\n\t\t'input @ui.textarea': 'onBaseInputChange',\n\t\t'change @ui.select': 'onBaseInputChange'\n\t},\n\n\tchildEvents: {},\n\n\tevents: function() {\n\t\treturn _.extend( {}, this.baseEvents, this.childEvents );\n\t},\n\n\tinitialize: function( options ) {\n\t\tthis.elementSettingsModel = options.elementSettingsModel;\n\n\t\tvar controlType = this.model.get( 'type' ),\n\t\t\tcontrolSettings = _.extend( {}, elementor.config.controls[ controlType ], this.model.attributes );\n\n\t\tthis.model.set( controlSettings );\n\n\t\tthis.listenTo( this.elementSettingsModel, 'change', this.toggleControlVisibility );\n\t\tthis.listenTo( this.elementSettingsModel, 'control:switch:tab', this.onControlSwitchTab );\n\t},\n\n\tgetControlValue: function() {\n\t\treturn this.elementSettingsModel.get( this.model.get( 'name' ) );\n\t},\n\n\tisValidValue: function( value ) {\n\t\treturn true;\n\t},\n\n\tsetValue: function( value ) {\n\t\tthis.setSettingsModel( value );\n\t},\n\n\tsetSettingsModel: function( value ) {\n\t\tif ( true !== this.isValidValue( value ) ) {\n\t\t\tthis.triggerMethod( 'settings:error' );\n\t\t\treturn;\n\t\t}\n\n\t\tthis.elementSettingsModel.set( this.model.get( 'name' ), value );\n\n\t\tthis.triggerMethod( 'settings:change' );\n\t},\n\n\tapplySavedValue: function() {\n\t\tthis.setInputValue( '[data-setting=\"' + this.model.get( 'name' ) + '\"]', this.getControlValue() );\n\t},\n\n\tgetEditSettings: function( setting ) {\n\t\tvar settings = this.getOption( 'elementEditSettings' ).toJSON();\n\n\t\tif ( setting ) {\n\t\t\treturn settings[ setting ];\n\t\t}\n\n\t\treturn settings;\n\t},\n\n\tsetEditSetting: function( settingKey, settingValue ) {\n\t\tvar settings = this.getOption( 'elementEditSettings' );\n\n\t\tsettings.set( settingKey, settingValue );\n\t},\n\n\tgetInputValue: function( input ) {\n\t\tvar $input = this.$( input ),\n\t\t\tinputValue = $input.val(),\n\t\t\tinputType = $input.attr( 'type' );\n\n\t\tif ( 'checkbox' === inputType ) {\n\t\t\treturn $input.prop( 'checked' );\n\t\t} else if ( 'radio' === inputType ) {\n\t\t\treturn $input.prop( 'checked' ) ? inputValue : '';\n\t\t}\n\n\t\treturn inputValue;\n\t},\n\n\tsetInputValue: function( input, value ) {\n\t\tvar $input = this.$( input ),\n\t\t\tinputType = $input.attr( 'type' );\n\n\t\tif ( 'checkbox' === inputType ) {\n\t\t\t$input.prop( 'checked', !! value );\n\t\t} else if ( 'radio' === inputType ) {\n\t\t\t$input.filter( '[value=\"' + value + '\"]' ).prop( 'checked', true );\n\t\t} else {\n\t\t\t$input.val( value );\n\t\t}\n\t},\n\n\tonSettingsError: function() {\n\t\tthis.$el.addClass( 'elementor-error' );\n\t},\n\n\tonSettingsChange: function() {\n\t\tthis.$el.removeClass( 'elementor-error' );\n\t},\n\n\tonRender: function() {\n\t\tthis.applySavedValue();\n\n\t\tvar layoutType = this.model.get( 'label_block' ) ? 'block' : 'inline',\n\t\t\tshowLabel = this.model.get( 'show_label' ),\n\t\t\telClasses = 'elementor-label-' + layoutType;\n\n\t\telClasses += ' elementor-control-separator-' + this.model.get( 'separator' );\n\n\t\tif ( ! showLabel ) {\n\t\t\telClasses += ' elementor-control-hidden-label';\n\t\t}\n\n\t\tthis.$el.addClass( elClasses );\n\n\t\tthis.triggerMethod( 'ready' );\n\t\tthis.toggleControlVisibility();\n\t},\n\n\tonBaseInputChange: function( event ) {\n\t\tthis.updateElementModel( event );\n\n\t\tthis.triggerMethod( 'input:change', event );\n\t},\n\n\ttoggleControlVisibility: function() {\n\t\tvar isVisible = elementor.helpers.isControlVisible( this.model, this.elementSettingsModel );\n\n\t\tthis.$el.toggleClass( 'elementor-hidden-control', ! isVisible );\n\n\t\telementor.data.trigger( 'scrollbar:update' );\n\t},\n\n\tonControlSwitchTab: function( activeTab ) {\n\t\tthis.$el.toggleClass( 'elementor-active-tab', ( activeTab === this.model.get( 'tab' ) ) );\n\n\t\telementor.data.trigger( 'scrollbar:update' );\n\t},\n\n\tonReady: function() {},\n\n\tupdateElementModel: function( event ) {\n\t\tthis.setValue( this.getInputValue( event.currentTarget ) );\n\t}\n}, {\n\t// Static methods\n\treplaceStyleValues: function( cssProperty, controlValue ) {\n\t\tvar replaceArray = { '\\{\\{VALUE\\}\\}': controlValue };\n\n\t\treturn elementor.helpers.stringReplaceAll( cssProperty, replaceArray );\n\t}\n} );\n\nmodule.exports = ControlBaseItemView;\n",
|
114 |
+
"var ControlBaseItemView = require( 'elementor-views/controls/base' ),\n\tControlChooseItemView;\n\nControlChooseItemView = ControlBaseItemView.extend( {\n\tui: function() {\n\t\tvar ui = ControlBaseItemView.prototype.ui.apply( this, arguments );\n\n\t\tui.inputs = '[type=radio]';\n\n\t\treturn ui;\n\t},\n\n\tchildEvents: {\n\t\t'mousedown label': 'onMouseDownLabel',\n\t\t'click @ui.inputs': 'onClickInput',\n\t\t'change @ui.inputs': 'updateElementModel'\n\t},\n\n\tonMouseDownLabel: function( event ) {\n\t\tvar $clickedLabel = this.$( event.currentTarget ),\n\t\t\t$selectedInput = this.$( '#' + $clickedLabel.attr( 'for' ) );\n\n\t\t$selectedInput.data( 'checked', $selectedInput.prop( 'checked' ) );\n\t},\n\n\tonClickInput: function( event ) {\n\t\tif ( ! this.model.get( 'toggle' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $selectedInput = this.$( event.currentTarget );\n\n\t\tif ( $selectedInput.data( 'checked' ) ) {\n\t\t\t$selectedInput.prop( 'checked', false ).trigger( 'change' );\n\t\t}\n\t},\n\n\tonRender: function() {\n\t\tControlBaseItemView.prototype.onRender.apply( this, arguments );\n\n\t\tvar currentValue = this.getControlValue();\n\n\t\tif ( currentValue ) {\n\t\t\tthis.ui.inputs.filter( '[value=' + currentValue + ']' ).prop( 'checked', true );\n\t\t} else if ( ! this.model.get( 'toggle' ) ) {\n\t\t\tthis.ui.inputs.first().prop( 'checked', true ).trigger( 'change' );\n\t\t}\n\t}\n} );\n\nmodule.exports = ControlChooseItemView;\n",
|
115 |
+
"var ControlBaseItemView = require( 'elementor-views/controls/base' ),\n\tControlColorItemView;\n\nControlColorItemView = ControlBaseItemView.extend( {\n\tui: function() {\n\t\tvar ui = ControlBaseItemView.prototype.ui.apply( this, arguments );\n\n\t\tui.picker = '.color-picker-hex';\n\n\t\treturn ui;\n\t},\n\n\tonReady: function() {\n\t\tthis.ui.picker.wpColorPicker( {\n\t\t\tchange: _.bind( function() {\n\t\t\t\tthis.setValue( this.ui.picker.wpColorPicker( 'color' ) );\n\t\t\t}, this ),\n\n\t\t\tclear: _.bind( function() {\n\t\t\t\tthis.setValue( '' );\n\t\t\t}, this ),\n\n\t\t\twidth: 251\n\t\t} );\n\t},\n\n\tonBeforeDestroy: function() {\n\t\tif ( this.ui.picker.wpColorPicker( 'instance' ) ) {\n\t\t\tthis.ui.picker.wpColorPicker( 'close' );\n\t\t}\n\t\tthis.$el.remove();\n\t}\n} );\n\nmodule.exports = ControlColorItemView;\n",
|
116 |
+
"var ControlBaseUnitsItemView = require( 'elementor-views/controls/base-units' ),\n\tControlDimensionsItemView;\n\nControlDimensionsItemView = ControlBaseUnitsItemView.extend( {\n\tui: function() {\n\t\tvar ui = ControlBaseUnitsItemView.prototype.ui.apply( this, arguments );\n\n\t\tui.controls = '.elementor-control-dimension > input:enabled';\n\t\tui.link = 'button.elementor-link-dimensions';\n\n\t\treturn ui;\n\t},\n\n\tchildEvents: {\n\t\t'click @ui.link': 'onLinkDimensionsClicked'\n\t},\n\n\tdefaultDimensionValue: 0,\n\n\tinitialize: function() {\n\t\tControlBaseUnitsItemView.prototype.initialize.apply( this, arguments );\n\n\t\t// TODO: Need to be in helpers, and not in variable\n\t\tthis.model.set( 'allowed_dimensions', this.filterDimensions( this.model.get( 'allowed_dimensions' ) ) );\n\t},\n\n\tgetPossibleDimensions: function() {\n\t\treturn [\n\t\t\t'top',\n\t\t\t'right',\n\t\t\t'bottom',\n\t\t\t'left'\n\t\t];\n\t},\n\n\tfilterDimensions: function( filter ) {\n\t\tfilter = filter || 'all';\n\n\t\tvar dimensions = this.getPossibleDimensions();\n\n\t\tif ( 'all' === filter ) {\n\t\t\treturn dimensions;\n\t\t}\n\n\t\tif ( ! _.isArray( filter ) ) {\n\t\t\tif ( 'horizontal' === filter ) {\n\t\t\t\tfilter = [ 'right', 'left' ];\n\t\t\t} else if ( 'vertical' === filter ) {\n\t\t\t\tfilter = [ 'top', 'bottom' ];\n\t\t\t}\n\t\t}\n\n\t\treturn filter;\n\t},\n\n\tonReady: function() {\n\t\tvar currentValue = this.getControlValue();\n\n\t\tif ( ! this.isLinkedDimensions() ) {\n\t\t\tthis.ui.link.addClass( 'unlinked' );\n\n\t\t\tthis.ui.controls.each( _.bind( function( index, element ) {\n\t\t\t\tif ( _.isEmpty( currentValue[ element.name ] ) ) {\n\t\t\t\t\tcurrentValue[ element.name ] = this.defaultDimensionValue;\n\t\t\t\t}\n\n\t\t\t\tthis.$( element ).val( currentValue[ element.name ] );\n\t\t\t}, this ) );\n\t\t}\n\n\t\tthis.fillEmptyDimensions();\n\t},\n\n\tupdateDimensionsValue: function() {\n\t\tvar currentValue = {},\n\t\t\tdimensions = this.getPossibleDimensions(),\n\t\t\t$controls = this.ui.controls;\n\n\t\tdimensions.forEach( _.bind( function( dimension ) {\n\t\t\tvar $element = $controls.filter( '[data-setting=\"' + dimension + '\"]' );\n\n\t\t\tcurrentValue[ dimension ] = $element.length ? $element.val() : this.defaultDimensionValue;\n\t\t}, this ) );\n\n\t\tthis.setValue( currentValue );\n\t},\n\n\tfillEmptyDimensions: function() {\n\t\tvar dimensions = this.getPossibleDimensions(),\n\t\t\tallowedDimensions = this.model.get( 'allowed_dimensions' ),\n\t\t\t$controls = this.ui.controls;\n\n\t\tif ( this.isLinkedDimensions() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdimensions.forEach( _.bind( function( dimension ) {\n\t\t\tvar $element = $controls.filter( '[data-setting=\"' + dimension + '\"]' ),\n\t\t\t\tisAllowedDimension = -1 !== _.indexOf( allowedDimensions, dimension );\n\n\t\t\tif ( isAllowedDimension && $element.length && _.isEmpty( $element.val() ) ) {\n\t\t\t\t$element.val( this.defaultDimensionValue );\n\t\t\t}\n\n\t\t}, this ) );\n\t},\n\n\tupdateDimensions: function() {\n\t\tthis.fillEmptyDimensions();\n\t\tthis.updateDimensionsValue();\n\t},\n\n\tresetDimensions: function() {\n\t\tthis.ui.controls.val( '' );\n\n\t\tthis.updateDimensionsValue();\n\t},\n\n\tonInputChange: function( event ) {\n\t\tvar inputSetting = event.target.dataset.setting;\n\n\t\tif ( 'unit' === inputSetting ) {\n\t\t\tthis.resetDimensions();\n\t\t}\n\n\t\tif ( ! _.contains( this.getPossibleDimensions(), inputSetting ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.isLinkedDimensions() ) {\n\t\t\tvar $thisControl = this.$( event.target );\n\n\t\t\tthis.ui.controls.val( $thisControl.val() );\n\t\t}\n\n\t\tthis.updateDimensions();\n\t},\n\n\tonLinkDimensionsClicked: function( event ) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tthis.ui.link.toggleClass( 'unlinked' );\n\n\t\tthis.setValue( 'isLinked', ! this.ui.link.hasClass( 'unlinked' ) );\n\n\t\tif ( this.isLinkedDimensions() ) {\n\t\t\t// Set all controls value from the first control.\n\t\t\tthis.ui.controls.val( this.ui.controls.eq( 0 ).val() );\n\t\t}\n\n\t\tthis.updateDimensions();\n\t},\n\n\tisLinkedDimensions: function() {\n\t\treturn this.getControlValue( 'isLinked' );\n\t}\n} );\n\nmodule.exports = ControlDimensionsItemView;\n",
|
117 |
+
"var ControlBaseItemView = require( 'elementor-views/controls/base' ),\n\tControlFontItemView;\n\nControlFontItemView = ControlBaseItemView.extend( {\n\tui: function() {\n\t\tvar ui = ControlBaseItemView.prototype.ui.apply( this, arguments );\n\n\t\tui.fontSelect = '.elementor-control-font-family';\n\n\t\treturn ui;\n\t},\n\tonReady: function() {\n\t\tthis.ui.fontSelect.select2( {\n\t\t\tdir: elementor.config.is_rtl ? 'rtl' : 'ltr'\n\t\t} );\n\t},\n\n\tonBeforeDestroy: function() {\n\t\tif ( this.ui.fontSelect.data( 'select2' ) ) {\n\t\t\tthis.ui.fontSelect.select2( 'destroy' );\n\t\t}\n\t\tthis.$el.remove();\n\t},\n\n\ttemplateHelpers: function() {\n\t\tvar helpers = ControlBaseItemView.prototype.templateHelpers.apply( this, arguments );\n\n\t\thelpers.getFontsByGroups = _.bind( function( groups ) {\n\t\t\treturn _.pick( this.model.get( 'fonts' ), function( fontType, fontName ) {\n\t\t\t\treturn _.isArray( groups ) ? _.contains( groups, fontType ) : fontType === groups;\n\t\t\t} );\n\t\t}, this );\n\n\t\treturn helpers;\n\t}\n} );\n\nmodule.exports = ControlFontItemView;\n",
|
118 |
+
"var ControlBaseItemView = require( 'elementor-views/controls/base' ),\n\tControlMediaItemView;\n\nControlMediaItemView = ControlBaseItemView.extend( {\n\tui: function() {\n\t\tvar ui = ControlBaseItemView.prototype.ui.apply( this, arguments );\n\n\t\tui.controlMedia = '.elementor-control-media';\n\t\tui.frameOpeners = '.elementor-control-media-upload-button, .elementor-control-media-image';\n\t\tui.deleteButton = '.elementor-control-media-delete';\n\n\t\treturn ui;\n\t},\n\n\tchildEvents: {\n\t\t'click @ui.frameOpeners': 'openFrame',\n\t\t'click @ui.deleteButton': 'deleteImage'\n\t},\n\n\tonReady: function() {\n\t\tif ( _.isEmpty( this.getControlValue() ) ) {\n\t\t\tthis.ui.controlMedia.addClass( 'media-empty' );\n\t\t}\n\t},\n\n\topenFrame: function() {\n\t\tthis.initFrame();\n\n\t\tthis.frame.open();\n\t},\n\n\tdeleteImage: function() {\n\t\tthis.setValue( '' );\n\t\tthis.render();\n\t},\n\n\t/**\n\t * Create a media modal select frame, and store it so the instance can be reused when needed.\n\t */\n\tinitFrame: function() {\n\t\tvar options,\n\t\t\tids = this.getControlValue();\n\n\t\toptions = {\n\t\t\tframe: 'post',\n\t\t\tmultiple: true,\n\t\t\tbutton: {\n\t\t\t\ttext: 'Insert Media'\n\t\t\t},\n\t\t\tstate: 'gallery'\n\t\t};\n\n\t\tif ( '' !== ids ) {\n\t\t\toptions.selection = this.fetchSelection( ids );\n\t\t\toptions.state = 'gallery-edit';\n\t\t}\n\n\t\tthis.frame = wp.media( options );\n\n\t\t// When a file is selected, run a callback.\n\t\tthis.frame.on( 'update', _.bind( this.select, this ) );\n\t\tthis.frame.on( 'menu:render:default', _.bind( this.menuRender, this ) );\n\t\tthis.frame.on( 'content:render:browse', _.bind( this.gallerySettings, this ) );\n\t},\n\n\tmenuRender: function( view ) {\n\t\tview.unset( 'insert' );\n\t\tview.unset( 'featured-image' );\n\t},\n\n\tgallerySettings: function( browser ) {\n\t\tbrowser.sidebar.on( 'ready', function() {\n\t\t\tbrowser.sidebar.unset( 'gallery' );\n\t\t} );\n\t},\n\n\tfetchSelection: function( ids ) {\n\t\tvar idArray = ids.split( ',' ),\n\t\t\targs = {\n\t\t\t\torderby: 'post__in',\n\t\t\t\torder: 'ASC',\n\t\t\t\ttype: 'image',\n\t\t\t\tperPage: -1,\n\t\t\t\tpost__in: idArray\n\t\t\t},\n\t\t\tattachments = wp.media.query( args ),\n\t\t\tselection = new wp.media.model.Selection( attachments.models, {\n\t\t\t\tprops: attachments.props.toJSON(),\n\t\t\t\tmultiple: true\n\t\t\t} );\n\n\t\treturn selection;\n\t},\n\n\t/**\n\t * Callback handler for when an attachment is selected in the media modal.\n\t * Gets the selected image information, and sets it within the control.\n\t */\n\tselect: function( selection ) {\n\t\tvar ids = selection.pluck( 'id' );\n\n\t\tthis.setValue( ids.toString() );\n\t\tthis.render();\n\t},\n\n\tonBeforeDestroy: function() {\n\t\tif ( this.frame ) {\n\t\t\tthis.frame.off( 'update' );\n\t\t\tthis.frame.off( 'menu:render:default' );\n\t\t\tthis.frame.off( 'content:render:browse' );\n\t\t}\n\n\t\tthis.$el.remove();\n\t}\n} );\n\nmodule.exports = ControlMediaItemView;\n",
|
119 |
+
"var ControlBaseItemView = require( 'elementor-views/controls/base' ),\n\tControlIconItemView;\n\nControlIconItemView = ControlBaseItemView.extend( {\n\tui: function() {\n\t\tvar ui = ControlBaseItemView.prototype.ui.apply( this, arguments );\n\n\t\tui.iconSelect = '.elementor-control-icon';\n\n\t\treturn ui;\n\t},\n\n\tonReady: function() {\n\t\tthis.ui.iconSelect.select2( {\n\t\t\tallowClear: true,\n\t\t\ttemplateResult: _.bind( this.iconsList, this ),\n\t\t\ttemplateSelection: _.bind( this.iconsList, this )\n\t\t} );\n\t},\n\n\ticonsList: function( icon ) {\n\t\tif ( ! icon.id ) {\n\t\t\treturn icon.text;\n\t\t}\n\t\treturn Backbone.$(\n\t\t\t'<span><i class=\"' + icon.id + '\"></i> ' + icon.text + '</span>'\n\t\t);\n\t},\n\n\tonBeforeDestroy: function() {\n\t\tif ( this.ui.iconSelect.data( 'select2' ) ) {\n\t\t\tthis.ui.iconSelect.select2( 'destroy' );\n\t\t}\n\t\tthis.$el.remove();\n\t}\n} );\n\nmodule.exports = ControlIconItemView;\n",
|
120 |
+
"var ControlMultipleBaseItemView = require( 'elementor-views/controls/base-multiple' ),\n\tControlMediaItemView;\n\nControlMediaItemView = ControlMultipleBaseItemView.extend( {\n\tui: function() {\n\t\tvar ui = ControlMultipleBaseItemView.prototype.ui.apply( this, arguments );\n\n\t\tui.controlMedia = '.elementor-control-media';\n\t\tui.frameOpeners = '.elementor-control-media-upload-button, .elementor-control-media-image';\n\t\tui.deleteButton = '.elementor-control-media-delete';\n\n\t\treturn ui;\n\t},\n\n\tchildEvents: {\n\t\t'click @ui.frameOpeners': 'openFrame',\n\t\t'click @ui.deleteButton': 'deleteImage'\n\t},\n\n\tonReady: function() {\n\t\tif ( _.isEmpty( this.getControlValue() ) ) {\n\t\t\tthis.ui.controlMedia.addClass( 'media-empty' );\n\t\t}\n\t},\n\n\topenFrame: function() {\n\t\tif ( ! this.frame ) {\n\t\t\tthis.initFrame();\n\t\t}\n\n\t\tthis.frame.open();\n\t},\n\n\tdeleteImage: function() {\n\t\tthis.setValue( {\n\t\t\turl: '',\n\t\t\tid: ''\n\t\t} );\n\n\t\tthis.render();\n\t},\n\n\t/**\n\t * Create a media modal select frame, and store it so the instance can be reused when needed.\n\t */\n\tinitFrame: function() {\n\t\tthis.frame = wp.media( {\n\t\t\tbutton: {\n\t\t\t\ttext: 'Insert Media' // TODO: gettext\n\t\t\t},\n\t\t\tstates: [\n\t\t\t\tnew wp.media.controller.Library( {\n\t\t\t\t\ttitle: 'Insert Media', // TODO: gettext\n\t\t\t\t\tlibrary: wp.media.query( { type: 'image' } ),\n\t\t\t\t\tmultiple: false,\n\t\t\t\t\tdate: false\n\t\t\t\t} )\n\t\t\t]\n\t\t} );\n\n\t\t// When a file is selected, run a callback.\n\t\tthis.frame.on( 'insert select', _.bind( this.select, this ) );\n\t},\n\n\t/**\n\t * Callback handler for when an attachment is selected in the media modal.\n\t * Gets the selected image information, and sets it within the control.\n\t */\n\tselect: function() {\n\t\t// Get the attachment from the modal frame.\n\t\tvar attachment = this.frame.state().get( 'selection' ).first().toJSON();\n\n\t\tif ( attachment.url ) {\n\t\t\tthis.setValue( {\n\t\t\t\turl: attachment.url,\n\t\t\t\tid: attachment.id\n\t\t\t} );\n\n\t\t\tthis.render();\n\t\t}\n\t},\n\n\tonBeforeDestroy: function() {\n\t\tthis.$el.remove();\n\t}\n} );\n\nmodule.exports = ControlMediaItemView;\n",
|
121 |
+
"var RepeaterRowView;\n\nRepeaterRowView = Marionette.CompositeView.extend( {\n\ttemplate: Marionette.TemplateCache.get( '#tmpl-elementor-repeater-row' ),\n\n\tclassName: 'repeater-fields',\n\n\tui: {\n\t\tduplicateButton: '.elementor-repeater-tool-duplicate',\n\t\teditButton: '.elementor-repeater-tool-edit',\n\t\tremoveButton: '.elementor-repeater-tool-remove',\n\t\titemNumber: '.elementor-repeater-row-item-number'\n\t},\n\n\ttriggers: {\n\t\t'click @ui.removeButton': 'click:remove',\n\t\t'click @ui.duplicateButton': 'click:duplicate',\n\t\t'click @ui.itemNumber': 'click:edit'\n\t},\n\n\ttemplateHelpers: function() {\n\t\treturn {\n\t\t\titemIndex: this.getOption( 'itemIndex' )\n\t\t};\n\t},\n\n\tchildViewContainer: '.elementor-repeater-row-controls',\n\n\tgetChildView: function( item ) {\n\t\tvar controlType = item.get( 'type' );\n\t\treturn elementor.getControlItemView( controlType );\n\t},\n\n\tchildViewOptions: function() {\n\t\treturn {\n\t\t\telementSettingsModel: this.model\n\t\t};\n\t},\n\n\tupdateIndex: function( newIndex ) {\n\t\tthis.itemIndex = newIndex;\n\t\tthis.render();\n\t},\n\n\tinitialize: function( options ) {\n\t\tthis.elementSettingsModel = options.elementSettingsModel;\n\n\t\tthis.itemIndex = 0;\n\n\t\t// Collection for Controls list\n\t\tthis.collection = new Backbone.Collection( options.controlFields );\n\t}\n} );\n\nmodule.exports = RepeaterRowView;\n",
|
122 |
+
"var ControlBaseItemView = require( 'elementor-views/controls/base' ),\n\tRepeaterRowView = require( 'elementor-views/controls/repeater-row' ),\n\tControlRepeaterItemView;\n\nControlRepeaterItemView = ControlBaseItemView.extend( {\n\tui: {\n\t\tbtnAddRow: '.elementor-repeater-add',\n\t\tfieldContainer: '.elementor-repeater-fields'\n\t},\n\n\tevents: {\n\t\t'click @ui.btnAddRow': 'onButtonAddRowClick',\n\t\t'sortstart @ui.fieldContainer': 'onSortStart',\n\t\t'sortupdate @ui.fieldContainer': 'onSortUpdate'\n\t},\n\n\tchildView: RepeaterRowView,\n\n\tchildViewContainer: '.elementor-repeater-fields',\n\n\ttemplateHelpers: function() {\n\t\treturn {\n\t\t\tdata: _.extend( {}, this.model.toJSON(), { controlValue: [] } )\n\t\t};\n\t},\n\n\tchildViewOptions: function( childView ) {\n\t\treturn {\n\t\t\tcontrolFields: this.model.get( 'fields' )\n\t\t};\n\t},\n\n\tinitialize: function( options ) {\n\t\tControlBaseItemView.prototype.initialize.apply( this, arguments );\n\n\t\tthis.collection = this.elementSettingsModel.get( this.model.get( 'name' ) );\n\n\t\tthis.listenTo( this.collection, 'change add remove reset', this.onCollectionChanged, this );\n\t},\n\n\teditRow: function( rowView ) {\n\t\tif ( this.currentEditableChild ) {\n\t\t\tthis.currentEditableChild.getChildViewContainer( this.currentEditableChild ).removeClass( 'editable' );\n\t\t}\n\n\t\tif ( this.currentEditableChild === rowView ) {\n\t\t\tdelete this.currentEditableChild;\n\t\t\treturn;\n\t\t}\n\n\t\trowView.getChildViewContainer( rowView ).addClass( 'editable' );\n\n\t\tthis.currentEditableChild = rowView;\n\n\t\tthis.updateActiveRow();\n\t},\n\n\ttoggleMinRowsClass: function() {\n\t\tif ( ! this.model.get( 'prevent_empty' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$el.toggleClass( 'elementor-repeater-has-minimum-rows', 1 >= this.collection.length );\n\t},\n\n\tupdateActiveRow: function() {\n\t\tvar activeItemIndex = 0;\n\n\t\tif ( this.currentEditableChild ) {\n\t\t\tactiveItemIndex = this.currentEditableChild.itemIndex;\n\t\t}\n\n\t\tthis.setEditSetting( 'activeItemIndex', activeItemIndex );\n\t},\n\n\tupdateChildIndexes: function() {\n\t\tthis.children.each( _.bind( function( view ) {\n\t\t\tview.updateIndex( this.collection.indexOf( view.model ) + 1 );\n\t\t}, this ) );\n\t},\n\n\tonRender: function() {\n\t\tthis.ui.fieldContainer.sortable( { axis: 'y' } );\n\n\t\tthis.toggleMinRowsClass();\n\t},\n\n\tonSortStart: function( event, ui ) {\n\t\tui.item.data( 'oldIndex', ui.item.index() );\n\t},\n\n\tonSortUpdate: function( event, ui ) {\n\t\tvar oldIndex = ui.item.data( 'oldIndex' ),\n\t\t\tmodel = this.collection.at( oldIndex ),\n\t\t\tnewIndex = ui.item.index();\n\n\t\tthis.collection.remove( model );\n\t\tthis.collection.add( model, { at: newIndex } );\n\t},\n\n\tonAddChild: function() {\n\t\tthis.updateChildIndexes();\n\t\tthis.updateActiveRow();\n\t},\n\n\tonRemoveChild: function( childView ) {\n\t\tif ( childView === this.currentEditableChild ) {\n\t\t\tdelete this.currentEditableChild;\n\t\t}\n\n\t\tthis.updateChildIndexes();\n\t\tthis.updateActiveRow();\n\t},\n\n\tonCollectionChanged: function() {\n\t\tthis.elementSettingsModel.trigger( 'change' );\n\n\t\tthis.toggleMinRowsClass();\n\t},\n\n\tonButtonAddRowClick: function() {\n\t\tvar defaults = {};\n\t\t_.each( this.model.get( 'fields' ), function( field ) {\n\t\t\tdefaults[ field.name ] = field['default'];\n\t\t} );\n\n\t\tvar newModel = this.collection.add( defaults ),\n\t\t\tnewChildView = this.children.findByModel( newModel );\n\n\t\tthis.editRow( newChildView );\n\t},\n\n\tonChildviewClickRemove: function( childView ) {\n\t\tchildView.model.destroy();\n\t},\n\n\tonChildviewClickDuplicate: function( childView ) {\n\t\tthis.collection.add( childView.model.clone(), { at: childView.itemIndex } );\n\t},\n\n\tonChildviewClickEdit: function( childView ) {\n\t\tthis.editRow( childView );\n\t}\n} );\n\nmodule.exports = ControlRepeaterItemView;\n",
|
123 |
+
"var ControlBaseItemView = require( 'elementor-views/controls/base' ),\n\tControlSectionItemView;\n\nControlSectionItemView = ControlBaseItemView.extend( {\n\tui: function() {\n\t\tvar ui = ControlBaseItemView.prototype.ui.apply( this, arguments );\n\n\t\tui.heading = '.elementor-panel-heading';\n\n\t\treturn ui;\n\t},\n\n\ttriggers: {\n\t\t'click': 'control:section:clicked'\n\t}\n} );\n\nmodule.exports = ControlSectionItemView;\n",
|
124 |
+
"var ControlBaseItemView = require( 'elementor-views/controls/base' ),\n\tControlSelect2ItemView;\n\nControlSelect2ItemView = ControlBaseItemView.extend( {\n\tui: function() {\n\t\tvar ui = ControlBaseItemView.prototype.ui.apply( this, arguments );\n\n\t\tui.select = '.elementor-select2';\n\n\t\treturn ui;\n\t},\n\n\tonReady: function() {\n\t\tvar options = {\n\t\t\tallowClear: true\n\t\t};\n\n\t\tthis.ui.select.select2( options );\n\t},\n\n\tonBeforeDestroy: function() {\n\t\tif ( this.ui.select.data( 'select2' ) ) {\n\t\t\tthis.ui.select.select2( 'destroy' );\n\t\t}\n\t\tthis.$el.remove();\n\t}\n} );\n\nmodule.exports = ControlSelect2ItemView;\n",
|
125 |
+
"var ControlBaseUnitsItemView = require( 'elementor-views/controls/base-units' ),\n\tControlSliderItemView;\n\nControlSliderItemView = ControlBaseUnitsItemView.extend( {\n\tui: function() {\n\t\tvar ui = ControlBaseUnitsItemView.prototype.ui.apply( this, arguments );\n\n\t\tui.slider = '.elementor-control-slider';\n\n\t\treturn ui;\n\t},\n\n\tchildEvents: {\n\t\t'slide @ui.slider': 'onSlideChange'\n\t},\n\n\tinitSlider: function() {\n\t\tvar size = this.getControlValue( 'size' ),\n\t\t\tunitRange = this.getCurrentRange();\n\n\t\tthis.ui.input.attr( unitRange ).val( size );\n\n\t\tthis.ui.slider.slider( _.extend( {}, unitRange, { value: size } ) );\n\t},\n\n\tresetSize: function() {\n\t\tthis.setValue( 'size', '' );\n\n\t\tthis.initSlider();\n\t},\n\n\tonReady: function() {\n\t\tthis.initSlider();\n\t},\n\n\tonSlideChange: function( event, ui ) {\n\t\tthis.setValue( 'size', ui.value );\n\n\t\tthis.ui.input.val( ui.value );\n\t},\n\n\tonInputChange: function( event ) {\n\t\tvar dataChanged = event.currentTarget.dataset.setting;\n\n\t\tif ( 'size' === dataChanged ) {\n\t\t\tthis.ui.slider.slider( 'value', this.getControlValue( 'size' ) );\n\t\t} else if ( 'unit' === dataChanged ) {\n\t\t\tthis.resetSize();\n\t\t}\n\t},\n\n\tonBeforeDestroy: function() {\n\t\tthis.ui.slider.slider( 'destroy' );\n\t\tthis.$el.remove();\n\t}\n} );\n\nmodule.exports = ControlSliderItemView;\n",
|
126 |
+
"var ControlBaseItemView = require( 'elementor-views/controls/base' ),\n\tSectionView = require( 'elementor-views/section' ),\n\tControlStructureItemView;\n\nControlStructureItemView = ControlBaseItemView.extend( {\n\n\ttemplateHelpers: function() {\n\t\tvar helpers = ControlBaseItemView.prototype.templateHelpers.apply( this, arguments );\n\n\t\thelpers.getPresetByStructure = function( structure ) {\n\t\t\treturn SectionView.getPresetByStructure( structure );\n\t\t};\n\n\t\thelpers.getMorePresets = _.bind( this.getMorePresets, this );\n\n\t\treturn helpers;\n\t},\n\n\tgetMorePresets: function() {\n\t\tvar parsedStructure = SectionView.getParsedStructure( this.getControlValue() );\n\n\t\treturn SectionView.getPresets( parsedStructure.columnsCount );\n\t},\n\n\tonInputChange: function() {\n\t\tthis.render();\n\t}\n} );\n\nmodule.exports = ControlStructureItemView;\n",
|
127 |
+
"var ControlMultipleBaseItemView = require( 'elementor-views/controls/base-multiple' ),\n\tControlUrlItemView;\n\nControlUrlItemView = ControlMultipleBaseItemView.extend( {\n\tui: function() {\n\t\tvar ui = ControlMultipleBaseItemView.prototype.ui.apply( this, arguments );\n\n\t\tui.btnExternal = 'button.elementor-control-url-target';\n\n\t\treturn ui;\n\t},\n\n\t// Override the base events\n\tchildEvents: {\n\t\t'click @ui.btnExternal': 'onExternalClicked'\n\t},\n\n\tonReady: function() {\n\t\tvar values = this.getControlValue();\n\n\t\tif ( values.is_external ) {\n\t\t\tthis.ui.btnExternal.addClass( 'active' );\n\t\t}\n\n\t\tif ( values.url ) {\n\t\t\tthis.ui.input.val( values.url );\n\t\t}\n\t},\n\n\tonExternalClicked: function( event ) {\n\t\tevent.preventDefault();\n\n\t\tthis.ui.btnExternal.toggleClass( 'active' );\n\t\tthis.setValue( 'is_external', this.isExternal() );\n\t},\n\n\tisExternal: function() {\n\t\treturn this.ui.btnExternal.hasClass( 'active' );\n\t}\n} );\n\nmodule.exports = ControlUrlItemView;\n",
|
128 |
+
"var ControlBaseItemView = require( 'elementor-views/controls/base' ),\n\tControlWPWidgetItemView;\n\nControlWPWidgetItemView = ControlBaseItemView.extend( {\n\tui: function() {\n\t\tvar ui = ControlBaseItemView.prototype.ui.apply( this, arguments );\n\n\t\tui.form = 'form';\n\t\tui.loading = '.wp-widget-form-loading';\n\n\t\treturn ui;\n\t},\n\n\tevents: {\n\t\t'keyup @ui.form :input': 'onFormChanged',\n\t\t'change @ui.form :input': 'onFormChanged'\n\t},\n\n\tonFormChanged: function() {\n\t\tvar idBase = 'widget-' + this.model.get( 'id_base' ),\n\t\t\tsettings = this.ui.form.elementorSerializeObject()[ idBase ].REPLACE_TO_ID;\n\n\t\tthis.setValue( settings );\n\t},\n\n\tonReady: function() {\n\t\tBackbone.$.ajax( {\n\t\t\ttype: 'POST',\n\t\t\turl: elementor.config.ajaxurl,\n\t\t\tdata: {\n\t\t\t\taction: 'elementor_editor_get_wp_widget_form',\n\t\t\t\twidget_type: this.model.get( 'widget' ),\n\t\t\t\tdata: JSON.stringify( this.elementSettingsModel.toJSON() )\n\t\t\t}\n\t\t} )\n\t\t\t.done( _.bind( function( data ) {\n\t\t\t\tthis.ui.form.html( data );\n\t\t\t}, this ) );\n\t}\n} );\n\nmodule.exports = ControlWPWidgetItemView;\n",
|
129 |
+
"var ControlBaseItemView = require( 'elementor-views/controls/base' ),\n\tControlWysiwygItemView;\n\nControlWysiwygItemView = ControlBaseItemView.extend( {\n\tchildEvents: {\n\t\t'keyup textarea.elementor-wp-editor': 'updateElementModel'\n\t},\n\n\tbuttons: {\n\t\tkeepInBasic: [\n\t\t\t'bold',\n\t\t\t'italic',\n\t\t\t'link',\n\t\t\t'unlink',\n\t\t\t'wp_adv',\n\t\t\t'fullscreen'\n\t\t],\n\t\tmoveToBasic: {\n\t\t\tunderline: 'italic'\n\t\t}\n\t},\n\n\tinitialize: function() {\n\t\tControlBaseItemView.prototype.initialize.apply( this, arguments );\n\n\t\tvar self = this;\n\n\t\tthis.editorID = 'elementorwpeditor' + this.cid;\n\n\t\tvar editorConfig = {\n\t\t\tid: this.editorID,\n\t\t\tselector: '#' + this.editorID,\n\t\t\tsetup: function( editor ) {\n\t\t\t\teditor.on( 'keyup change', function() {\n\t\t\t\t\teditor.save();\n\n\t\t\t\t\tself.setValue( editor.getContent() );\n\t\t\t\t} );\n\t\t\t}\n\t\t};\n\n\t\ttinyMCEPreInit.mceInit[ this.editorID ] = _.extend( _.clone( tinyMCEPreInit.mceInit.elementorwpeditor ), editorConfig );\n\n\t\tthis.rearrangeButtons();\n\n\t\t// This class allows us to reduce \"flicker\" by hiding the editor\n\t\t// until we are done loading and modifying it.\n\t\tthis.$el.addClass( 'elementor-loading-editor' );\n\n\t\t// Wait a cycle before initializing the editors.\n\t\t_.defer( function() {\n\t\t\t// Initialize QuickTags, and set as the default mode.\n\t\t\tquicktags( {\n\t\t\t\tbuttons: 'strong,em,del,link,img,close',\n\t\t\t\tid: self.editorID\n\t\t\t} );\n\n\t\t\tswitchEditors.go( self.editorID, 'tmce' );\n\n\t\t\t// Remove default instance after initializes. This allows reinitializion an unlimited amount of times.\n\t\t\t_.defer( function() {\n\t\t\t\tdelete QTags.instances[ 0 ];\n\t\t\t} );\n\n\t\t} );\n\t},\n\n\tattachElContent: function() {\n\t\tvar editorTemplate = elementor.config.wp_editor.replace( /elementorwpeditor/g, this.editorID ).replace( '%%EDITORCONTENT%%', this.getControlValue() );\n\n\t\tthis.$el.html( editorTemplate );\n\n\t\treturn this;\n\t},\n\n\trearrangeButtons: function() {\n\t\tvar editorProps = tinyMCEPreInit.mceInit[ this.editorID ],\n\t\t\teditorBasicToolbarButtons = editorProps.toolbar1.split( ',' ),\n\t\t\teditorAdvancedToolbarButtons = editorProps.toolbar2.split( ',' ),\n\t\t\tbuttonsToKeepInBasic = Array.prototype.slice.call( this.buttons.keepInBasic ),\n\t\t\tbuttonsToMoveToAdvanced = _.difference( editorBasicToolbarButtons, buttonsToKeepInBasic ),\n\t\t\tbuttonsToKeepInAdvanced = _.difference( editorAdvancedToolbarButtons, Object.keys( this.buttons.moveToBasic ) );\n\n\t\t_.each( this.buttons.moveToBasic, function( afterButton, button ) {\n\t\t\tvar afterButtonIndex = buttonsToKeepInBasic.indexOf( afterButton );\n\n\t\t\tif ( -1 !== afterButtonIndex ) {\n\t\t\t\tbuttonsToKeepInBasic.splice( afterButtonIndex + 1, 0, button );\n\t\t\t}\n\t\t} );\n\n\t\teditorProps.toolbar1 = buttonsToKeepInBasic.join( ',' );\n\t\teditorProps.toolbar2 = buttonsToMoveToAdvanced + ',' + buttonsToKeepInAdvanced;\n\t},\n\n\tonBeforeDestroy: function() {\n\t\t// Remove TinyMCE and QuickTags instances\n\t\ttinymce.EditorManager.execCommand( 'mceRemoveEditor', true, this.editorID );\n\t\tdelete QTags.instances[ this.editorID ];\n\n\t\t// Cleanup PreInit data\n\t\tdelete tinyMCEPreInit.mceInit[ this.editorID ];\n\t\tdelete tinyMCEPreInit.qtInit[ this.editorID ];\n\t}\n} );\n\nmodule.exports = ControlWysiwygItemView;\n",
|
130 |
+
"var ElementEmptyView;\n\nElementEmptyView = Marionette.ItemView.extend( {\n\ttemplate: '#tmpl-elementor-empty-preview',\n\n\tclassName: 'elementor-empty-view',\n\n\tevents: {\n\t\t'click': 'onClickAdd'\n\t},\n\n\tonClickAdd: function() {\n\t\telementor.getPanelView().setPage( 'elements' );\n\t}\n} );\n\nmodule.exports = ElementEmptyView;\n",
|
131 |
+
"var BaseElementView = require( 'elementor-views/base-element' ),\n\tColumnView = require( 'elementor-views/column' ),\n\tSectionView;\n\nSectionView = BaseElementView.extend( {\n\ttemplate: Marionette.TemplateCache.get( '#tmpl-elementor-element-section-content' ),\n\n\tchildView: ColumnView,\n\n\tclassName: function() {\n\t\tvar classes = 'elementor-section',\n\t\t\ttype = this.isInner() ? 'inner' : 'top';\n\n\t\tclasses += ' elementor-' + type + '-section';\n\n\t\treturn classes;\n\t},\n\n\ttagName: 'section',\n\n\tchildViewContainer: '> .elementor-container > .elementor-row',\n\n\ttriggers: {\n\t\t'click .elementor-editor-section-settings-list .elementor-editor-element-edit': 'click:edit',\n\t\t'click .elementor-editor-section-settings-list .elementor-editor-element-trigger': 'click:edit',\n\t\t'click .elementor-editor-section-settings-list .elementor-editor-element-duplicate': 'click:duplicate'\n\t},\n\n\telementEvents: {\n\t\t'click .elementor-editor-section-settings-list .elementor-editor-element-remove': 'onClickRemove'\n\t},\n\n\tbehaviors: {\n\t\tSortable: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/sortable' ),\n\t\t\telChildType: 'column'\n\t\t},\n\t\tHandleDuplicate: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/handle-duplicate' )\n\t\t},\n\t\tHandleEditor: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/handle-editor' )\n\t\t},\n\t\tHandleEditMode: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/handle-edit-mode' )\n\t\t},\n\t\tHandleAddMode: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/duplicate' )\n\t\t},\n\t\tHandleElementsRelation: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/elements-relation' )\n\t\t}\n\t},\n\n\tinitialize: function() {\n\t\tBaseElementView.prototype.initialize.apply( this, arguments );\n\n\t\tthis.listenTo( this.collection, 'add remove reset', this._checkIsFull );\n\t\tthis.listenTo( this.collection, 'remove', this.onCollectionRemove );\n\t\tthis.listenTo( this.model, 'change:settings:structure', this.onStructureChanged );\n\t},\n\n\taddEmptyColumn: function() {\n\t\tthis.addChildModel( {\n\t\t\tid: elementor.helpers.getUniqueID(),\n\t\t\telType: 'column',\n\t\t\tsettings: {},\n\t\t\telements: []\n\t\t} );\n\t},\n\n\taddChildModel: function( model, options ) {\n\t\tvar isModelInstance = model instanceof Backbone.Model,\n\t\t\tisInner = this.isInner();\n\n\t\tif ( isModelInstance ) {\n\t\t\tmodel.set( 'isInner', isInner );\n\t\t} else {\n\t\t\tmodel.isInner = isInner;\n\t\t}\n\n\t\treturn BaseElementView.prototype.addChildModel.apply( this, arguments );\n\t},\n\n\tgetSortableOptions: function() {\n\t\tvar sectionConnectClass = this.isInner() ? '.elementor-inner-section' : '.elementor-top-section';\n\n\t\treturn {\n\t\t\tconnectWith: sectionConnectClass + ' > .elementor-container > .elementor-row',\n\t\t\thandle: '> .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-trigger',\n\t\t\titems: '> .elementor-column'\n\t\t};\n\t},\n\n\tgetColumnPercentSize: function( element, size ) {\n\t\treturn size / element.parent().width() * 100;\n\t},\n\n\tgetDefaultStructure: function() {\n\t\treturn this.collection.length + '0';\n\t},\n\n\tgetStructure: function() {\n\t\treturn this.model.getSetting( 'structure' );\n\t},\n\n\tsetStructure: function( structure ) {\n\t\tvar parsedStructure = SectionView.getParsedStructure( structure );\n\t\tif ( +parsedStructure.columnsCount !== this.collection.length ) {\n\t\t\tthrow new TypeError( 'The provided structure doesn\\'t match the columns count.' );\n\t\t}\n\n\t\tthis.model.setSetting( 'structure', structure, true );\n\t},\n\n\tredefineLayout: function() {\n\t\tvar preset = SectionView.getPresetByStructure( this.getStructure() );\n\n\t\tthis.collection.each( function( model, index ) {\n\t\t\tmodel.setSetting( '_column_size', preset.preset[ index ] );\n\t\t\tmodel.setSetting( '_inline_size', null );\n\t\t} );\n\n\t\tthis.children.invoke( 'changeSizeUI' );\n\t},\n\n\tresetLayout: function() {\n\t\tthis.setStructure( this.getDefaultStructure() );\n\t},\n\n\tisCollectionFilled: function() {\n\t\tvar MAX_SIZE = 10,\n\t\t\tcolumnsCount = this.collection.length;\n\n\t\treturn ( MAX_SIZE <= columnsCount );\n\t},\n\n\t_checkIsFull: function() {\n\t\tthis.$el.toggleClass( 'elementor-section-filled', this.isCollectionFilled() );\n\t},\n\n\t_checkIsEmpty: function() {\n\t\tif ( ! this.collection.length ) {\n\t\t\tthis.addEmptyColumn();\n\t\t}\n\t},\n\n\tonBeforeRender: function() {\n\t\tthis._checkIsEmpty();\n\t},\n\n\tonRender: function() {\n\t\tthis._checkIsFull();\n\n\t\tthis.redefineLayout();\n\t},\n\n\tonAddChild: function() {\n\t\tif ( ! this.isBuffering ) {\n\t\t\t// Reset the layout just when we have really add/remove element.\n\t\t\tthis.resetLayout();\n\t\t}\n\t},\n\n\tonCollectionRemove: function() {\n\t\t// If it's the last column, please create new one.\n\t\tthis._checkIsEmpty();\n\n\t\tthis.resetLayout();\n\t},\n\n\tonChildviewRequestResize: function( childView, ui ) {\n\t\t// Get current column details\n\t\tvar currentSize = childView.model.getSetting( '_inline_size' );\n\n\t\tif ( ! currentSize ) {\n\t\t\tcurrentSize = this.getColumnPercentSize( ui.element, ui.originalSize.width );\n\t\t}\n\n\t\tvar\tnewSize = this.getColumnPercentSize( ui.element, ui.size.width ),\n\t\t\tdifference = newSize - currentSize;\n\n\t\tui.element.css( {\n\t\t\t//width: currentSize + '%',\n\t\t\twidth: '',\n\t\t\tleft: 'initial' // Fix for RTL resizing\n\t\t} );\n\n\t\t// Get next column details\n\t\tvar modelIndex = this.collection.indexOf( childView.model ),\n\t\t\tnextModel = this.collection.at( modelIndex + 1 ),\n\t\t\tnextChildView = this.children.findByModelCid( nextModel.cid );\n\n\t\tif ( ! nextChildView ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $nextElement = nextChildView.$el,\n\t\t\tnextElementCurrentSize = this.getColumnPercentSize( $nextElement, $nextElement.width() ),\n\t\t\tnextElementNewSize = nextElementCurrentSize - difference;\n\n\t\tif ( newSize < 10 || newSize > 100 || ! difference || nextElementNewSize < 10 || nextElementNewSize > 100 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Set the current column size\n\t\tchildView.model.setSetting( '_inline_size', newSize.toFixed( 3 ) );\n\t\tchildView.changeSizeUI();\n\n\t\t// Set the next column size\n\t\tnextChildView.model.setSetting( '_inline_size', nextElementNewSize.toFixed( 3 ) );\n\t\tnextChildView.changeSizeUI();\n\t},\n\n\tonSettingsChanged: function() {\n\t\tBaseElementView.prototype.onSettingsChanged.apply( this, arguments );\n\n\t\tthis.render();\n\t},\n\n\tonStructureChanged: function() {\n\t\tthis.redefineLayout();\n\t}\n}, {\n\t// Static methods\n\tgetPresets: function( columnsCount, presetIndex ) {\n\t\tvar presets = elementor.helpers.cloneObject( elementor.config.elements.section.presets );\n\n\t\tif ( columnsCount ) {\n\t\t\tpresets = presets[ columnsCount ];\n\t\t}\n\n\t\tif ( presetIndex ) {\n\t\t\tpresets = presets[ presetIndex ];\n\t\t}\n\n\t\treturn presets;\n\t},\n\n\tgetPresetByStructure: function( structure ) {\n\t\tvar parsedStructure = SectionView.getParsedStructure( structure );\n\n\t\treturn SectionView.getPresets( parsedStructure.columnsCount, parsedStructure.presetIndex );\n\t},\n\n\tgetParsedStructure: function( structure ) {\n\t\treturn {\n\t\t\tcolumnsCount: structure.slice( 0, -1 ),\n\t\t\tpresetIndex: structure.substr( -1 )\n\t\t};\n\t}\n} );\n\nmodule.exports = SectionView;\n",
|
132 |
+
"var SectionView = require( 'elementor-views/section' ),\n\tSectionsCollectionView;\n\nSectionsCollectionView = Marionette.CompositeView.extend( {\n\ttemplate: Marionette.TemplateCache.get( '#tmpl-elementor-preview' ),\n\n\tid: 'elementor-inner',\n\n\tchildViewContainer: '#elementor-section-wrap',\n\n\tchildView: SectionView,\n\n\tui: {\n\t\taddSectionArea: '#elementor-add-section',\n\t\taddNewSection: '#elementor-add-new-section',\n\t\tclosePresetsIcon: '#elementor-select-preset-close',\n\t\taddIcon: '#elementor-add-section-button',\n\t\tselectPreset: '#elementor-select-preset',\n\t\tpresets: '.elementor-preset'\n\t},\n\n\tevents: {\n\t\t'click @ui.addIcon': 'showSelectPresets',\n\t\t'click @ui.closePresetsIcon': 'closeSelectPresets',\n\t\t'click @ui.presets': 'onPresetSelected'\n\t},\n\n\tbehaviors: {\n\t\tSortable: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/sortable' ),\n\t\t\telChildType: 'section'\n\t\t},\n\t\tHandleDuplicate: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/handle-duplicate' )\n\t\t},\n\t\tHandleAdd: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/duplicate' )\n\t\t},\n\t\tHandleElementsRelation: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/elements-relation' )\n\t\t}\n\t},\n\n\tgetSortableOptions: function() {\n\t\treturn {\n\t\t\thandle: '> .elementor-container > .elementor-row > .elementor-column > .elementor-element-overlay .elementor-editor-section-settings-list .elementor-editor-element-trigger',\n\t\t\titems: '> .elementor-section'\n\t\t};\n\t},\n\n\tgetChildType: function() {\n\t\treturn [ 'section' ];\n\t},\n\n\tisCollectionFilled: function() {\n\t\treturn false;\n\t},\n\n\tinitialize: function() {\n\t\tif ( 1 > this.collection.length ) {\n\t\t\tthis.addChildModel( {\n\t\t\t\tid: elementor.helpers.getUniqueID(),\n\t\t\t\telType: 'section',\n\t\t\t\tsettings: {},\n\t\t\t\telements: []\n\t\t\t} );\n\t\t}\n\t},\n\n\taddChildModel: function( model, options ) {\n\t\treturn this.collection.add( model, options, true );\n\t},\n\n\taddSection: function( properties ) {\n\t\tvar newSection = {\n\t\t\tid: elementor.helpers.getUniqueID(),\n\t\t\telType: 'section',\n\t\t\tsettings: {},\n\t\t\telements: []\n\t\t};\n\n\t\tif ( properties ) {\n\t\t\t_.extend( newSection, properties );\n\t\t}\n\n\t\tvar newModel = this.addChildModel( newSection );\n\n\t\treturn this.children.findByModelCid( newModel.cid );\n\t},\n\n\tshowSelectPresets: function() {\n\t\tthis.ui.addNewSection.hide();\n\t\tthis.ui.selectPreset.show();\n\t},\n\n\tcloseSelectPresets: function() {\n\t\tthis.ui.addNewSection.show();\n\t\tthis.ui.selectPreset.hide();\n\t},\n\n\tonRender: function() {\n\t\tvar self = this;\n\n\t\tself.ui.addSectionArea.html5Droppable( {\n\t\t\taxis: [ 'vertical' ],\n\t\t\tgroups: [ 'elementor-element' ],\n\t\t\tonDragging: function( side ) {\n\t\t\t\tif ( self.ui.addSectionArea.data( 'side' ) !== side ) {\n\t\t\t\t\tself.ui.addSectionArea.attr( 'data-side', side );\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDragLeave: function() {\n\t\t\t\tself.ui.addSectionArea.removeAttr( 'data-side' );\n\t\t\t},\n\t\t\tonDropping: function() {\n\t\t\t\tvar elementView = elementor.panelElements.request( 'element:selected' ),\n\t\t\t\t\tnewSection = self.addSection();\n\n\t\t\t\tvar widgetData = {\n\t\t\t\t\tid: elementor.helpers.getUniqueID(),\n\t\t\t\t\telType: 'widget',\n\t\t\t\t\twidgetType: elementView.model.get( 'widgetType' )\n\t\t\t\t};\n\n\t\t\t\tnewSection.triggerMethod( 'request:add', widgetData );\n\t\t\t}\n\t\t} );\n\t},\n\n\tonPresetSelected: function( event ) {\n\t\tthis.closeSelectPresets();\n\n\t\tvar selectedStructure = event.currentTarget.dataset.structure,\n\t\t\tparsedStructure = SectionView.getParsedStructure( selectedStructure ),\n\t\t\telements = [],\n\t\t\tloopIndex;\n\n\t\tfor ( loopIndex = 0; loopIndex < parsedStructure.columnsCount; loopIndex++ ) {\n\t\t\telements.push( {\n\t\t\t\tid: elementor.helpers.getUniqueID(),\n\t\t\t\telType: 'column',\n\t\t\t\tsettings: {},\n\t\t\t\telements: []\n\t\t\t} );\n\t\t}\n\n\t\tvar newSection = this.addSection( { elements: elements } );\n\n\t\tnewSection.setStructure( selectedStructure );\n\t}\n} );\n\nmodule.exports = SectionsCollectionView;\n",
|
133 |
+
"var BaseElementView = require( 'elementor-views/base-element' );\n\nvar WidgetView = BaseElementView.extend( {\n\t_templateType: null,\n\n\tgetTemplate: function() {\n\t\tif ( 'remote' !== this.getTemplateType() ) {\n\t\t\treturn Marionette.TemplateCache.get( '#tmpl-elementor-widget-' + this.model.get( 'widgetType' ) + '-content' );\n\t\t} else {\n\t\t\treturn _.template( '' );\n\t\t}\n\t},\n\n\tclassName: function() {\n\t\treturn 'elementor-widget elementor-widget-' + this.model.get( 'widgetType' );\n\t},\n\n\tmodelEvents: {\n\t\t'before:remote:render': 'onModelBeforeRemoteRender',\n\t\t'remote:render': 'onModelRemoteRender'\n\t},\n\n\ttriggers: {\n\t\t'click > .elementor-element-overlay': {\n\t\t\tevent: 'click:edit',\n\t\t\tstopPropagation: false\n\t\t},\n\t\t'click > .elementor-element-overlay .elementor-editor-add-element': 'click:add',\n\t\t'click > .elementor-element-overlay .elementor-editor-element-duplicate': 'click:duplicate'\n\t},\n\n\tui: {\n\t\tsettings: '> .elementor-element-overlay .elementor-editor-widget-settings'\n\t},\n\n\telementEvents: {\n\t\t'click': 'showSettings',\n\t\t'mouseleave @ui.settings': 'hideSettings',\n\t\t'click > .elementor-element-overlay .elementor-editor-element-remove': 'onClickRemove'\n\t},\n\n\tbehaviors: {\n\t\tHandleEditor: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/handle-editor' )\n\t\t},\n\t\tHandleEditMode: {\n\t\t\tbehaviorClass: require( 'elementor-behaviors/handle-edit-mode' )\n\t\t}\n\t},\n\n\tinitialize: function() {\n\t\tBaseElementView.prototype.initialize.apply( this, arguments );\n\n\t\tif ( ! this.model.getHtmlCache() ) {\n\t\t\tthis.model.renderRemoteServer();\n\t\t}\n\t},\n\n\tgetTemplateType: function() {\n\t\tif ( null === this.getOption( '_templateType' ) ) {\n\t\t\tvar $template = Backbone.$( '#tmpl-elementor-widget-' + this.model.get( 'widgetType' ) + '-content' );\n\n\t\t\tif ( 0 === $template.length ) {\n\t\t\t\tthis._templateType = 'remote';\n\t\t\t} else {\n\t\t\t\tthis._templateType = 'js';\n\t\t\t}\n\t\t}\n\n\t\treturn this.getOption( '_templateType' );\n\t},\n\n\tonModelBeforeRemoteRender: function() {\n\t\tthis.$el.addClass( 'elementor-loading' );\n\t},\n\n\tonBeforeDestroy: function() {\n\t\t// Remove old style from the DOM.\n\t\telementor.$previewContents.find( '#elementor-style-' + this.model.cid ).remove();\n\t},\n\n\tonModelRemoteRender: function() {\n\t\tif ( this.isDestroyed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$el.removeClass( 'elementor-loading' );\n\t\tthis.render();\n\t},\n\n\tonSettingsChanged: function( settings ) {\n\t\tBaseElementView.prototype.onSettingsChanged.apply( this, arguments );\n\n\t\tswitch ( this.getTemplateType() ) {\n\t\t\tcase 'js' :\n\t\t\t\tthis.model.setHtmlCache();\n\t\t\t\tthis.render();\n\t\t\t\tbreak;\n\n\t\t\tdefault :\n\t\t\t\tthis.model.renderRemoteServer();\n\t\t}\n\t},\n\n\tattachElContent: function( html ) {\n\t\tvar htmlCache = this.model.getHtmlCache();\n\n\t\tif ( htmlCache ) {\n\t\t\thtml = htmlCache;\n\t\t}\n\n\t\tthis.$el.html( html );\n\n\t\treturn this;\n\t},\n\n\tonRender: function() {\n\t\tthis.$el\n\t\t\t.removeClass( 'elementor-widget-empty' )\n\t\t\t.find( '> .elementor-element-overlay .elementor-widget-empty-icon' ).remove();\n\n\t\tthis.$el.imagesLoaded().always( _.bind( function() {\n\t\t\t// Is element empty?\n\t\t\tif ( 1 > this.$el.height() ) {\n\t\t\t\tthis.$el.addClass( 'elementor-widget-empty' );\n\n\t\t\t\t// TODO: REMOVE THIS !!\n\t\t\t\t// TEMP CODING !!\n\t\t\t\tthis.$( '> .elementor-element-overlay' ).append( '<i class=\"elementor-widget-empty-icon fa fa-' + this.model.getIcon() + '\"></i>' );\n\t\t\t}\n\t\t}, this ) );\n\t},\n\n\tshowSettings: function( event ) {\n\t\tvar positionSettings = {\n\t\t\tmy: elementor.config.is_rtl ? 'right+15 center' : 'left-15 center',\n\t\t\tof: event,\n\t\t\tcollision: 'fit',\n\t\t\twithin: this.$el\n\t\t};\n\n\t\tthis.ui.settings.addClass( 'elementor-open' ).position( positionSettings );\n\t},\n\n\thideSettings: function() {\n\t\tthis.ui.settings.removeClass( 'elementor-open' );\n\t}\n} );\n\nmodule.exports = WidgetView;\n"
|
134 |
+
]
|
135 |
+
}
|
assets/admin/js/app.min.js
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
/*! elementor - v0.1.0 - 30-05-2016 */
|
2 |
+
!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){var d;d=Marionette.Application.extend({helpers:a("elementor-utils/helpers"),heartbeat:a("elementor-utils/heartbeat"),schemes:a("elementor-utils/schemes"),editor:Backbone.Radio.channel("ELEMENTOR:editor"),data:Backbone.Radio.channel("ELEMENTOR:data"),filterState:Backbone.Radio.channel("ELEMENTOR:filterState"),elementLibrary:Backbone.Radio.channel("ELEMENTOR:elementLibrary"),panelElements:Backbone.Radio.channel("ELEMENTOR:panelElements"),dataEditMode:Backbone.Radio.channel("ELEMENTOR:editmode"),preview:Backbone.Radio.channel("ELEMENTOR:preview"),deviceMode:Backbone.Radio.channel("ELEMENTOR:deviceMode"),_controlsItemView:null,getElementData:function(a){var b=a.get("elType");if("widget"===b){var c=a.get("widgetType");return this.config.widgets[c]?this.config.widgets[c]:!1}return this.config.elements[b]?this.config.elements[b]:!1},getElementControls:function(a){var b=this.getElementData(a);if(!b)return!1;var c=a.get("elType"),d=a.get("isInner");return"widget"===c?b.controls:_.filter(b.controls,function(a){return!(d&&a.hide_in_inner||!d&&a.hide_in_top)})},getControlItemView:function(b){return null===this._controlsItemView&&(this._controlsItemView={color:a("elementor-views/controls/color"),dimensions:a("elementor-views/controls/dimensions"),media:a("elementor-views/controls/media"),slider:a("elementor-views/controls/slider"),wysiwyg:a("elementor-views/controls/wysiwyg"),choose:a("elementor-views/controls/choose"),url:a("elementor-views/controls/url"),font:a("elementor-views/controls/font"),section:a("elementor-views/controls/section"),repeater:a("elementor-views/controls/repeater"),wp_widget:a("elementor-views/controls/wp_widget"),icon:a("elementor-views/controls/icon"),gallery:a("elementor-views/controls/gallery"),select2:a("elementor-views/controls/select2"),structure:a("elementor-views/controls/structure")},this.editor.trigger("editor:controls:initialize")),this._controlsItemView[b]||a("elementor-views/controls/base")},getPanelView:function(){return this.getRegion("panel").currentView},initDialogsManager:function(){this.dialogsManager=new DialogsManager.Instance},onStart:function(){NProgress.start(),NProgress.inc(.2),this.config=ElementorConfig;var b=a("elementor-models/element");Backbone.Radio.DEBUG=!1,Backbone.Radio.tuneIn("ELEMENTOR"),this.initDialogsManager(),this.heartbeat.init(),elementorBindUI.setEditorMode(!0),this.elements=new b.Collection(this.config.data),this.$previewResponsiveWrapper=Backbone.$("#elementor-preview-responsive-wrapper");var c="elementor-preview-iframe";if(!Backbone.$("#"+c).length){var d=document.createElement("iframe");d.id=c,d.src=this.config.preview_link+"&"+(new Date).getTime(),this.$previewResponsiveWrapper.append(d)}this.$preview=Backbone.$("#"+c),this.$preview.on("load",_.bind(function(){this.$previewContents=this.$preview.contents(),elementorBindUI.setScopeWindow(this.$preview[0].contentWindow),this.triggerMethod("preview:loaded")},this)),this.listenTo(this.dataEditMode,"switch",this.onEditModeSwitched),this.setWorkSaver()},onPreviewLoaded:function(){var b=a("elementor-views/sections"),c=a("elementor-layouts/panel/panel"),d=new Marionette.Region({el:this.$previewContents.find("#elementor").get(0)});this.schemes.init().printSchemesStyle(),this.$previewContents.on("click",function(a){var b=Backbone.$(a.target),c=elementor.dataEditMode.request("get:active:mode"),d=!!b.closest("#elementor").length;d&&"preview"!==c||(b.closest("a").length&&a.preventDefault(),d||elementor.getPanelView().setPage("elements"))}),this.addRegions({sections:d,panel:"#elementor-panel",modal:"#elementor-modal-area"}),this.getRegion("sections").show(new b({collection:this.elements})),this.getRegion("panel").show(new c),this.$previewContents.children().addClass("elementor-html").children("body").addClass("elementor-editor-active"),Backbone.$("#elementor-loading").fadeOut(600),NProgress.done()},onEditModeSwitched:function(){var a=elementor.dataEditMode.request("get:active:mode");"preview"===a?this.enterPreviewMode():this.exitPreviewMode()},setFlagEditorChange:function(a){elementor.editor.reply("editor:changed",a),elementor.editor.trigger("editor:changed",a)},isEditorChanged:function(){return!0===elementor.editor.request("editor:changed")},setWorkSaver:function(){Backbone.$(window).on("beforeunload",function(){return elementor.isEditorChanged()?elementor.translate("before_unload_alert"):void 0})},enterPreviewMode:function(){this.$previewContents.find("body").add("body").removeClass("elementor-editor-active").addClass("elementor-editor-preview")},exitPreviewMode:function(){this.$previewContents.find("body").add("body").removeClass("elementor-editor-preview").addClass("elementor-editor-active")},saveBuilder:function(a){return a=_.extend({revision:"draft",onSuccess:null},a),NProgress.start(),Backbone.$.ajax({type:"POST",url:this.config.ajaxurl,data:{action:"elementor_save_builder",post_id:this.config.post_id,revision:a.revision,data:JSON.stringify(elementor.elements.toJSON())}}).done(function(b){NProgress.done(),elementor.setFlagEditorChange(!1),_.isFunction(a.onSuccess)&&a.onSuccess.call(this,b)})},translate:function(a,b){var c=this.config.i18n[a];return void 0===c&&(c=a),b&&(c=c.replace(/{(\d+)}/g,function(a,c){return void 0!==b[c]?b[c]:a})),c}}),b.exports=(window.elementor=new d).start()},{"elementor-layouts/panel/panel":27,"elementor-models/element":30,"elementor-utils/heartbeat":34,"elementor-utils/helpers":35,"elementor-utils/schemes":36,"elementor-views/controls/base":41,"elementor-views/controls/choose":42,"elementor-views/controls/color":43,"elementor-views/controls/dimensions":44,"elementor-views/controls/font":45,"elementor-views/controls/gallery":46,"elementor-views/controls/icon":47,"elementor-views/controls/media":48,"elementor-views/controls/repeater":50,"elementor-views/controls/section":51,"elementor-views/controls/select2":52,"elementor-views/controls/slider":53,"elementor-views/controls/structure":54,"elementor-views/controls/url":55,"elementor-views/controls/wp_widget":56,"elementor-views/controls/wysiwyg":57,"elementor-views/sections":60}],2:[function(a,b,c){var d;d=Marionette.Behavior.extend({onChildviewClickNew:function(a){var b=a.$el.index()+1;this.addChild({at:b})},onRequestNew:function(){this.addChild()},addChild:function(a){if(!this.view.isCollectionFilled()){a=a||{};var b={id:elementor.helpers.getUniqueID(),elType:this.view.getChildType()[0],settings:{},elements:[]};this.view.addChildModel(b,a)}}}),b.exports=d},{}],3:[function(a,b,c){var d;d=Marionette.Behavior.extend({onRequestAdd:function(a,b){this._addChildElement(a,b)},_addChildElement:function(a,b){b=b||{};var c=this.view.getChildType();if(-1===c.indexOf(a.elType))return delete b.at,void this.view.children.last().triggerMethod("request:add",a,b);var d=this.view.addChildModel(a,b),e=this.view.children.findByModel(d);"section"===e.getElementType()&&e.isInner()&&e.addEmptyColumn(),e.triggerMethod("open:editor")}}),b.exports=d},{}],4:[function(a,b,c){var d;d=Marionette.Behavior.extend({onChildviewClickDuplicate:function(a){if(!this.view.isCollectionFilled()){var b=a.$el.index()+1,c=a.model.clone();this.view.addChildModel(c,{at:b})}}}),b.exports=d},{}],5:[function(a,b,c){var d;d=Marionette.Behavior.extend({initialize:function(){this.listenTo(elementor.dataEditMode,"switch",this.onEditModeSwitched)},onEditModeSwitched:function(){var a=elementor.dataEditMode.request("get:active:mode");this.view.$el.toggleClass("elementor-active-mode","preview"!==a)},onRender:function(){this.onEditModeSwitched()}}),b.exports=d},{}],6:[function(a,b,c){var d;d=Marionette.Behavior.extend({onClickEdit:function(){var a=elementor.dataEditMode.request("get:active:mode");"preview"!==a&&this.onOpenEditor()},onOpenEditor:function(){var a=elementor.getPanelView().getCurrentPageName();if("editor"===a){var b=elementor.getPanelView().getCurrentPageView(),c=b.model;if(c===this.view.model)return}var d=elementor.getElementData(this.view.model);elementor.getPanelView().setPage("editor",elementor.translate("edit_element",[d.title]),{model:this.view.model,editedElementView:this.view})}}),b.exports=d},{}],7:[function(a,b,c){var d;d=Marionette.Behavior.extend({defaults:{handles:elementor.config.is_rtl?"w":"e"},ui:{columnTitle:".column-title"},events:{resizestart:"onResizeStart",resizestop:"onResizeStop",resize:"onResize"},initialize:function(){Marionette.Behavior.prototype.initialize.apply(this,arguments),this.listenTo(elementor.dataEditMode,"switch",this.onEditModeSwitched)},active:function(){var a=_.clone(this.options);delete a.behaviorClass;var b=this.getChildViewContainer(),c={},d=_.extend(c,a);b.resizable(d)},deactivate:function(){this.getChildViewContainer().resizable("instance")&&this.getChildViewContainer().resizable("destroy")},onEditModeSwitched:function(){var a=elementor.dataEditMode.request("get:active:mode");"preview"!==a?this.active():this.deactivate()},onRender:function(){_.defer(_.bind(this.onEditModeSwitched,this))},onDestroy:function(){this.deactivate()},onResizeStart:function(a,b){},onResizeStop:function(a,b){},onResize:function(a,b){a.stopPropagation(),this.view.triggerMethod("request:resize",b)},getChildViewContainer:function(){return this.$el}}),b.exports=d},{}],8:[function(a,b,c){var d;d=Marionette.Behavior.extend({defaults:{elChildType:"widget"},events:{sortstart:"onSortStart",sortreceive:"onSortReceive",sortupdate:"onSortUpdate",sortstop:"onSortStop",sortover:"onSortOver",sortout:"onSortOut"},initialize:function(){this.listenTo(elementor.dataEditMode,"switch",this.onEditModeSwitched),this.listenTo(elementor.deviceMode,"change",this.onDeviceModeChange)},onEditModeSwitched:function(){var a=elementor.dataEditMode.request("get:active:mode");"preview"!==a?this.active():this.deactivate()},onDeviceModeChange:function(){var a=elementor.deviceMode.request("currentMode");"desktop"===a?this.active():this.deactivate()},onRender:function(){_.defer(_.bind(this.onEditModeSwitched,this))},onDestroy:function(){this.deactivate()},active:function(){if(!this.getChildViewContainer().sortable("instance")){var a=this.getChildViewContainer(),b={connectWith:a.selector,cursor:"move",placeholder:"elementor-sortable-placeholder",cursorAt:{top:20,left:25},helper:_.bind(this._getSortableHelper,this)},c=_.extend(b,this.view.getSortableOptions());a.sortable(c)}},_getSortableHelper:function(a,b){var c=this.view.collection.get({cid:b.data("model-cid")});return'<div style="height: 50px; width: 250px;" class="elementor-sortable-helper elementor-sortable-helper-'+c.get("elType")+'"><i class="fa fa-'+c.getIcon()+'"></i><div class="elementor-title">'+c.getTitle()+"</div></div>"},deactivate:function(){this.getChildViewContainer().sortable("instance")&&this.getChildViewContainer().sortable("destroy")},onSortStart:function(a,b){a.stopPropagation();var c=this.view.collection.get({cid:b.item.data("model-cid")});if("column"===this.options.elChildType){b.placeholder.addClass("elementor-column");var d=b.item.data("sortableItem"),e=d.items,f=0;e.forEach(function(a){return a.item[0]===b.item[0]?(f=a.height,!1):void 0}),b.placeholder.height(f)}elementor.data.trigger(c.get("elType")+":drag:start"),elementor.data.reply("cache:"+c.cid,c)},onSortOver:function(a,b){a.stopPropagation();var c=elementor.data.request("cache:"+b.item.data("model-cid"));Backbone.$(a.target).addClass("elementor-draggable-over").attr({"data-dragged-element":c.get("elType"),"data-dragged-is-inner":c.get("isInner")}),this.$el.addClass("elementor-dragging-on-child")},onSortOut:function(a){a.stopPropagation(),Backbone.$(a.target).removeClass("elementor-draggable-over").removeAttr("data-dragged-element data-dragged-is-inner"),this.$el.removeClass("elementor-dragging-on-child")},onSortReceive:function(a,b){if(a.stopPropagation(),this.view.isCollectionFilled())return void Backbone.$(b.sender).sortable("cancel");var c=elementor.data.request("cache:"+b.item.data("model-cid")),d=c.get("elType"),e="section"===d&&c.get("isInner"),f="column"===this.view.getElementType()&&this.view.isInner();if(e&&f)return void Backbone.$(b.sender).sortable("cancel");var g=b.item.parent().children().index(b.item),h=new this.view.collection.model(c.toJSON({copyHtmlCache:!0}));this.view.addChildModel(h,{at:g}),elementor.data.trigger(d+":drag:end"),c.destroy()},onSortUpdate:function(a,b){a.stopPropagation();var c=this.view.collection.get(b.item.attr("data-model-cid"));c&&elementor.data.trigger(c.get("elType")+":drag:end")},onSortStop:function(a,b){a.stopPropagation();var c=b.item,d=this.view.collection,e=d.get(c.attr("data-model-cid")),f=c.parent().children().index(c);if(this.getChildViewContainer()[0]===b.item.parent()[0]&&null===b.sender&&e){var g=d.indexOf(e);g!==f&&(d.remove(e,{silent:!0}),d.add(e,{silent:!0,at:f}),elementor.setFlagEditorChange(!0)),elementor.data.trigger(e.get("elType")+":drag:end")}},onAddChild:function(a){a.$el.attr("data-model-cid",a.model.cid)},getChildViewContainer:function(){return"function"==typeof this.view.getChildViewContainer?this.view.getChildViewContainer(this.view):this.$el}}),b.exports=d},{}],9:[function(a,b,c){var d;d=Marionette.ItemView.extend({template:"#tmpl-elementor-mode-switcher-content",id:"elementor-mode-switcher-inner",ui:{previewButton:"#elementor-mode-switcher-preview-input",previewLabel:"#elementor-mode-switcher-preview",previewLabelA11y:"#elementor-mode-switcher-preview .elementor-screen-only"},events:{"change @ui.previewButton":"onEditModeChange"},getCurrentMode:function(){return this.ui.previewButton.is(":checked")?"preview":"edit"},setMode:function(a){this.ui.previewButton.prop("checked","preview"===a)},onRender:function(){this.onEditModeChange()},onEditModeChange:function(){var a=elementor.dataEditMode.request("get:active:mode"),b=this.getCurrentMode();if(elementor.dataEditMode.reply("get:active:mode",b),b!==a){elementor.dataEditMode.trigger("switch");var c="preview"===b?"Back to Editor":"Preview";this.ui.previewLabel.attr("title",c),this.ui.previewLabelA11y.text(c)}}}),b.exports=d},{}],10:[function(a,b,c){var d;d=Marionette.ItemView.extend({template:"#tmpl-elementor-panel-footer-content",tagName:"nav",id:"elementor-panel-footer-tools",defaultDeviceMode:"desktop",currentDeviceMode:"",possibleRotateModes:["portrait","landscape"],ui:{menuButtons:".elementor-panel-footer-tool",deviceModeButtons:"#elementor-panel-footer-responsive .elementor-panel-footer-sub-menu-item",buttonSave:"#elementor-panel-footer-save",buttonSaveButton:"#elementor-panel-footer-save .elementor-button",buttonPublish:"#elementor-panel-footer-publish"},events:{"click @ui.deviceModeButtons":"onClickResponsiveButtons","click @ui.buttonSave":"onClickButtonSave","click @ui.buttonPublish":"onClickButtonPublish"},initialize:function(){this._initDialog(),Backbone.$(document).on("click",_.bind(this.onDocumentClick,this)),this.listenTo(elementor.editor,"editor:changed",this.onEditorChanged)},_initDialog:function(){var a;this.getDialog=function(){if(!a){var b=Backbone.$,c=b("<div>",{"class":"elementor-dialog-message"}),d=b("<i>",{"class":"fa fa-check-circle"}),e=b("<div>",{"class":"elementor-dialog-message-text"}).text(elementor.translate("saved"));c.append(d,e),a=elementor.dialogsManager.createWidget("popup",{hide:{delay:1500}}),a.setMessage(c)}return a}},_publishBuilder:function(){var a=this,b={revision:"publish",onSuccess:function(){a.getDialog().show(),a.ui.buttonSaveButton.removeClass("elementor-button-state")}};a.ui.buttonSaveButton.addClass("elementor-button-state"),elementor.saveBuilder(b)},_saveBuilderDraft:function(){elementor.saveBuilder()},onRender:function(){this.changeDeviceMode(this.defaultDeviceMode)},changeDeviceMode:function(a){this.currentDeviceMode!==a&&(this.getCurrentDeviceModeButton().removeClass("active"),elementor.$previewResponsiveWrapper.removeClass("elementor-device-"+this.currentDeviceMode).addClass("elementor-device-"+a),this.currentDeviceMode=a,this.getCurrentDeviceModeButton().addClass("active"),elementor.deviceMode.reply("currentMode",this.currentDeviceMode),elementor.deviceMode.trigger("change"))},getCurrentDeviceModeButton:function(){return this.ui.deviceModeButtons.filter('[data-device-mode="'+this.currentDeviceMode+'"]')},onDocumentClick:function(a){var b=Backbone.$(a.target),c=b.closest(".elementor-panel-footer-sub-menu-wrapper").length;if(!c){var d=b.closest(".elementor-panel-footer-tool"),e=d.length&&!d.hasClass("elementor-open");this.ui.menuButtons.removeClass("elementor-open"),e&&d.addClass("elementor-open")}},onEditorChanged:function(){this.ui.buttonSave.toggleClass("elementor-save-active",elementor.isEditorChanged())},onClickButtonSave:function(){this._publishBuilder()},onClickButtonPublish:function(a){a.stopPropagation(),this._publishBuilder()},onClickResponsiveButtons:function(a){var b=this.$(a.currentTarget),c=b.data("device-mode");this.changeDeviceMode(c)}}),b.exports=d},{}],11:[function(a,b,c){var d;d=Marionette.ItemView.extend({template:"#tmpl-elementor-panel-header",id:"elementor-panel-header",ui:{menuButton:"#elementor-panel-header-menu-button",title:"#elementor-panel-header-title",addButton:"#elementor-panel-header-add-button"},events:{"click @ui.addButton":"onClickAdd","click @ui.menuButton":"onClickMenu"},setTitle:function(a){this.ui.title.html(a)},onClickAdd:function(){elementor.getPanelView().setPage("elements")},onClickMenu:function(){var a=elementor.getPanelView(),b=a.getCurrentPageName(),c="menu"===b?"elements":"menu";a.setPage(c)}}),b.exports=d},{}],12:[function(a,b,c){var d;d=Marionette.CompositeView.extend({template:Marionette.TemplateCache.get("#tmpl-editor-content"),id:"elementor-panel-page-editor",templateHelpers:function(){return{elementData:elementor.getElementData(this.model)}},childViewContainer:"div.elementor-controls",modelEvents:{destroy:"onModelDestroy"},ui:{tabs:".elementor-tabs-controls li"},events:{"click @ui.tabs a":"onClickTabControl"},getChildView:function(a){var b=a.get("type");return elementor.getControlItemView(b)},childViewOptions:function(){return{elementSettingsModel:this.model.get("settings"),elementEditSettings:this.model.get("editSettings")}},onDestroy:function(){this.getOption("editedElementView").$el.removeClass("elementor-element-editable"),this.model.trigger("editor:close"),this.triggerMethod("editor:destroy")},onBeforeRender:function(){var a=elementor.getElementControls(this.model);if(!a)throw new Error("No found editor controls");this.collection=new Backbone.Collection(a)},onRender:function(){this.getOption("editedElementView").$el.addClass("elementor-element-editable"),this.ui.tabs.eq(0).find("a").trigger("click"),this.$(".tooltip-target").tipsy({gravity:function(){var a=Backbone.$(this).data("tooltip-pos");return void 0!==a?a:"n"},title:function(){return this.getAttribute("data-tooltip")}})},onModelDestroy:function(){this.destroy()},onClickTabControl:function(a){a.preventDefault();var b=this.$(a.target);this.ui.tabs.removeClass("active"),b.closest("li").addClass("active"),this.model.get("settings").trigger("control:switch:tab",b.data("tab")),this.openFirstSectionInCurrentTab(b.data("tab"))},openFirstSectionInCurrentTab:function(a){var b="elementor-open",c=this.children.filter(function(a){return!_.isEmpty(a.model.get("section"))}),d=this.children.filter(function(b){return"section"===b.model.get("type")&&a===b.model.get("tab")});_.isEmpty(d)||(d=d[0],d.ui.heading.addClass(b),_.each(c,function(a){return a.model.get("section")!==d.model.get("name")?void a.$el.removeClass(b):void a.$el.addClass(b)}))},onChildviewControlSectionClicked:function(a){var b="elementor-open",c=a.model.get("name"),d=a.ui.heading.hasClass(b),e=this.children.filter(function(a){return!_.isEmpty(a.model.get("section"))});this.$(".elementor-control.elementor-control-type-section .elementor-panel-heading").removeClass(b),d?c="":a.ui.heading.addClass(b),_.each(e,function(a){return a.model.get("section")!==c?void a.$el.removeClass(b):void a.$el.addClass(b)}),elementor.data.trigger("scrollbar:update")}}),b.exports=d},{}],13:[function(a,b,c){var d,e=a("../models/element");d=Backbone.Collection.extend({model:e}),b.exports=d},{"../models/element":15}],14:[function(a,b,c){var d,e=a("./collections/elements"),f=a("./views/elements"),g=a("./views/search");d=Marionette.LayoutView.extend({template:"#tmpl-elementor-panel-elements",regions:{elements:"#elementor-panel-elements-wrapper",search:"#elementor-panel-elements-search-area"},initialize:function(){this.listenTo(elementor.panelElements,"element:selected",this.destroy)},clearSearchInput:function(){this.getChildView("search").triggerMethod("clear:filter")},changeFilter:function(a){elementor.panelElements.reply("filter:value",a).trigger("change")},clearFilters:function(){this.changeFilter(null),this.clearSearchInput()},onChildviewDragStart:function(a){elementor.panelElements.reply("element:selected",a)},onChildviewChildrenRender:function(){this.updateElementsScrollbar()},onChildviewSearchChangeInput:function(a){var b=a.ui.input.val();this.changeFilter(b,"search")},onDestroy:function(){elementor.panelElements.reply("filter:value",null)},onShow:function(){var a=this.getRegion("elements"),b=this.getRegion("search"),c=new e,d=elementor.config.elements.section;c.add({title:elementor.translate("inner_section"),elType:"section",keywords:d.keywords,icon:d.icon}),_.each(elementor.config.widgets,function(a,b){c.add({title:a.title,elType:"widget",categories:a.categories,keywords:a.keywords,icon:a.icon,widgetType:b})}),a.show(new f({collection:c})),b.show(new g)},updateElementsScrollbar:function(){elementor.data.trigger("scrollbar:update")}}),b.exports=d},{"./collections/elements":13,"./views/elements":17,"./views/search":18}],15:[function(a,b,c){var d;d=Backbone.Model.extend({defaults:{title:"",categories:[],keywords:[],icon:"",elType:"widget",widgetType:""}}),b.exports=d},{}],16:[function(a,b,c){var d;d=Marionette.ItemView.extend({template:"#tmpl-elementor-element-library-element",className:"elementor-element-wrapper",events:{click:"onClick"},triggers:{dragend:"drag:end"},onRender:function(){this.$el.html5Draggable({onDragStart:_.bind(function(){this.triggerMethod("drag:start")},this),groups:["elementor-element"]})}}),b.exports=d},{}],17:[function(a,b,c){var d,e=a("./element");d=Marionette.CollectionView.extend({childView:e,id:"elementor-panel-elements",initialize:function(){this.listenTo(elementor.panelElements,"change",this.onFilterChanged)},filter:function(a){var b=elementor.panelElements.request("filter:value");return b?_.any(["title","keywords"],function(c){return-1!==a.get(c).toLowerCase().indexOf(b.toLowerCase())}):!0},onFilterChanged:function(){this._renderChildren(),this.triggerMethod("children:render")}}),b.exports=d},{"./element":16}],18:[function(a,b,c){var d;d=Marionette.ItemView.extend({template:"#tmpl-elementor-panel-element-search",id:"elementor-panel-elements-search-wrapper",ui:{input:"input"},triggers:{"keyup @ui.input":"search:change:input"},onClearFilter:function(){this.ui.input.val("")}}),b.exports=d},{}],19:[function(a,b,c){var d,e=a("elementor-panel/pages/menu/views/item");d=Marionette.CollectionView.extend({id:"elementor-panel-page-menu",childView:e,initialize:function(){this.collection=new Backbone.Collection([{icon:"paint-brush",title:elementor.translate("colors"),type:"page",pageName:"colorsScheme"},{icon:"font",title:elementor.translate("fonts"),type:"page",pageName:"typographyScheme"},{icon:"file-text",title:elementor.translate("page_settings")+" <span>("+elementor.translate("soon")+")</span>"},{icon:"cog",title:elementor.translate("elementor_settings"),type:"link",link:elementor.config.settings_page_link},{icon:"history",title:elementor.translate("revisions_history")+" <span>("+elementor.translate("soon")+")</span>"},{icon:"info-circle",title:elementor.translate("about_elementor"),type:"link",link:elementor.config.elementor_site,newTab:!0}])},onChildviewClick:function(a){var b=a.model.get("type");switch(b){case"page":var c=a.model.get("pageName"),d=a.model.get("title");elementor.getPanelView().setPage(c,d);break;case"link":var e=a.model.get("link"),f=a.model.get("newTab");f?open(e,"_blank"):location.href=a.model.get("link")}}}),b.exports=d},{"elementor-panel/pages/menu/views/item":20}],20:[function(a,b,c){var d;d=Marionette.ItemView.extend({template:"#tmpl-elementor-panel-menu-item",className:"elementor-panel-menu-item",triggers:{click:"click"}}),b.exports=d},{}],21:[function(a,b,c){var d;d=Marionette.CompositeView.extend({id:function(){return"elementor-panel-scheme-"+this.getType()},className:"elementor-panel-scheme",ui:function(){return{saveButton:".elementor-panel-scheme-save .elementor-button",discardButton:".elementor-panel-scheme-discard .elementor-button",resetButton:".elementor-panel-scheme-reset .elementor-button"}},events:function(){return{"click @ui.saveButton":"saveScheme","click @ui.discardButton":"discardScheme","click @ui.resetButton":"setDefaultScheme"}},childViewContainer:".elementor-panel-scheme-items",templateHelpers:function(){return{getTitle:_.bind(this.getTitle,this)}},initialize:function(){this.model=new Backbone.Model,this.resetScheme()},getType:function(){},getTitle:function(){return this.getScheme().title},getScheme:function(){return elementor.schemes.getScheme(this.getType())},changeChildrenUIValues:function(a){var b=this;_.each(a,function(a,c){var d=b.collection.findWhere({key:c}),e=b.children.findByModelCid(d.cid);e.changeUIValue(a)})},discardScheme:function(){elementor.schemes.resetSchemes(this.getType()),this.ui.saveButton.prop("disabled",!0),this._renderChildren()},setSchemeValue:function(a,b){elementor.schemes.setSchemeValue(this.getType(),a,b)},saveScheme:function(){elementor.schemes.saveScheme(this.getType()),this.ui.saveButton.prop("disabled",!0),this.resetScheme(),this._renderChildren()},setDefaultScheme:function(){var a=elementor.config.default_schemes[this.getType()].items;this.changeChildrenUIValues(a)},resetItems:function(){this.model.set("items",this.getScheme().items)},resetCollection:function(){var a=this.model.get("items");this.collection=new Backbone.Collection,_.each(a,_.bind(function(a,b){a.type=this.getType(),a.key=b,this.collection.add(a)},this))},resetScheme:function(){this.resetItems(),this.resetCollection()},onChildviewValueChange:function(a,b){this.ui.saveButton.removeProp("disabled"),this.setSchemeValue(a.model.get("key"),b)}}),b.exports=d},{}],22:[function(a,b,c){var d,e=a("elementor-panel/pages/schemes/base");d=e.extend({template:"#tmpl-elementor-panel-schemes-colors",ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.systemSchemes=".elementor-panel-scheme-color-system-scheme",a},events:function(){var a=e.prototype.events.apply(this,arguments);return a["click @ui.systemSchemes"]="onSystemSchemeClick",a},getChildView:function(){return a("elementor-panel/pages/schemes/items/color")},getType:function(){return"color"},onSystemSchemeClick:function(a){var b=Backbone.$(a.currentTarget),c=b.data("schemeName"),d=elementor.config.system_schemes.color[c].items;this.changeChildrenUIValues(d)}}),b.exports=d},{"elementor-panel/pages/schemes/base":21,"elementor-panel/pages/schemes/items/color":24}],23:[function(a,b,c){var d;d=Marionette.ItemView.extend({getTemplate:function(){return Marionette.TemplateCache.get("#tmpl-elementor-panel-scheme-"+this.model.get("type")+"-item")},className:function(){return"elementor-panel-scheme-item"}}),b.exports=d},{}],24:[function(a,b,c){var d,e=a("elementor-panel/pages/schemes/items/base");d=e.extend({ui:{input:".elementor-panel-scheme-color-value"},changeUIValue:function(a){this.ui.input.wpColorPicker("color",a)},onBeforeDestroy:function(){this.ui.input.wpColorPicker("instance")&&this.ui.input.wpColorPicker("close")},onRender:function(){this.ui.input.wpColorPicker({change:_.bind(function(a,b){this.triggerMethod("value:change",b.color.toString())},this)})}}),b.exports=d},{"elementor-panel/pages/schemes/items/base":23}],25:[function(a,b,c){var d,e=a("elementor-panel/pages/schemes/items/base");d=e.extend({className:function(){var a=e.prototype.className.apply(this,arguments);return a+" elementor-panel-box"},ui:{heading:".elementor-panel-heading",allFields:".elementor-panel-scheme-typography-item-field",inputFields:"input.elementor-panel-scheme-typography-item-field",selectFields:"select.elementor-panel-scheme-typography-item-field",selectFamilyFields:'select.elementor-panel-scheme-typography-item-field[name="font_family"]'},events:{"input @ui.inputFields":"onFieldChange","change @ui.selectFields":"onFieldChange","click @ui.heading":"toggleVisibility"},onRender:function(){var a=this;this.ui.inputFields.add(this.ui.selectFields).each(function(){var b=Backbone.$(this),c=b.attr("name"),d=a.model.get("value")[c];b.val(d)}),this.ui.selectFamilyFields.select2({dir:elementor.config.is_rtl?"rtl":"ltr"})},toggleVisibility:function(){this.ui.heading.toggleClass("elementor-open")},changeUIValue:function(a){this.ui.allFields.each(function(){var b=Backbone.$(this),c=b.attr("name"),d=a[c];b.val(d).trigger("change")})},onFieldChange:function(a){var b=this.$(a.currentTarget),c=elementor.helpers.cloneObject(this.model.get("value")),d=b.attr("name");c[d]=b.val(),"font_family"!==d||_.isEmpty(c[d])||elementor.helpers.enqueueFont(c[d]),this.triggerMethod("value:change",c)}}),b.exports=d},{"elementor-panel/pages/schemes/items/base":23}],26:[function(a,b,c){var d,e=a("elementor-panel/pages/schemes/base");d=e.extend({template:"#tmpl-elementor-panel-schemes-typography",getChildView:function(){return a("elementor-panel/pages/schemes/items/typography")},getType:function(){return"typography"}}),b.exports=d},{"elementor-panel/pages/schemes/base":21,"elementor-panel/pages/schemes/items/typography":25}],27:[function(a,b,c){var d,e=a("elementor-layouts/edit-mode");d=Marionette.LayoutView.extend({template:"#tmpl-elementor-panel",className:"elementor-panel-inner",regions:{content:"#elementor-panel-content-wrapper",header:"#elementor-panel-header-wrapper",footer:"#elementor-panel-footer",modeSwitcher:"#elementor-mode-switcher"},pages:{elements:{view:a("elementor-panel/pages/elements/elements"),title:elementor.translate("elementor")},editor:{view:a("elementor-panel/pages/editor")},menu:{view:a("elementor-panel/pages/menu/menu"),title:elementor.translate("elementor")},colorsScheme:{view:a("elementor-panel/pages/schemes/colors")},typographyScheme:{view:a("elementor-panel/pages/schemes/typography")}},childEvents:{"click:add":function(){this.setPage("elements")},"editor:destroy":function(){this.setPage("elements")}},currentPageName:null,_isScrollbarInitialized:!1,getHeaderView:function(){return this.getChildView("header")},getCurrentPageName:function(){return this.currentPageName},getCurrentPageView:function(){return this.getChildView("content")},setPage:function(a,b,c){var d=this.pages[a];if(!d)throw new ReferenceError("Elementor panel doesn't have page named '"+a+"'");this.showChildView("content",new d.view(c)),this.getHeaderView().setTitle(b||d.title),this.currentPageName=a},onBeforeShow:function(){elementor.filterState.reply("get",{type:"parent",term:""});var b=a("elementor-layouts/panel/footer"),c=a("elementor-layouts/panel/header");this.showChildView("modeSwitcher",new e),this.showChildView("header",new c),this.showChildView("footer",new b),this.updateScrollbar=_.throttle(this.updateScrollbar,100),this.getRegion("content").on("before:show",_.bind(this.onEditorBeforeShow,this)).on("empty",_.bind(this.onEditorEmpty,this)).on("show",_.bind(this.updateScrollbar,this)),this.setPage("elements"),this.listenTo(elementor.data,"scrollbar:update",this.updateScrollbar)},onEditorBeforeShow:function(a,b,c){_.defer(this.updateScrollbar);
|
3 |
+
},onEditorEmpty:function(a){this.updateScrollbar()},updateScrollbar:function(){var a=Backbone.$("#elementor-panel-content-wrapper");return this._isScrollbarInitialized?void a.perfectScrollbar("update"):(a.perfectScrollbar(),void(this._isScrollbarInitialized=!0))}}),b.exports=d},{"elementor-layouts/edit-mode":9,"elementor-layouts/panel/footer":10,"elementor-layouts/panel/header":11,"elementor-panel/pages/editor":12,"elementor-panel/pages/elements/elements":14,"elementor-panel/pages/menu/menu":19,"elementor-panel/pages/schemes/colors":22,"elementor-panel/pages/schemes/typography":26}],28:[function(a,b,c){var d;d=Backbone.Model.extend({initialize:function(a){if(this.controls=elementor.getElementControls(this),this.controls){var b=a||{},c={};_.each(this.controls,function(a){var b=elementor.config.controls[a.type];_.isObject(b.default_value)?c[a.name]=_.extend({},b.default_value,a["default"]||{}):c[a.name]=a["default"]||b.default_value}),this.defaults=c,b=_.defaults({},b,c),_.each(this.controls,function(a){"repeater"===a.type&&(b[a.name]=new Backbone.Collection(b[a.name],{model:d}))}),this.set(b)}},getFontControls:function(){return _.filter(this.controls,_.bind(function(a){return"font"===a.type},this))},getStyleControls:function(){return _.filter(this.controls,_.bind(function(a){return this.isStyleControl(a.name)},this))},isStyleControl:function(a){var b=_.find(this.controls,function(b){return a===b.name});return _.isUndefined(b)?!1:!_.isEmpty(b.selectors)},getClassControls:function(){return _.filter(this.controls,_.bind(function(a){return this.isClassControl(a.name)},this))},isClassControl:function(a){var b=_.find(this.controls,function(b){return a===b.name});return b&&!_.isUndefined(b.prefix_class)},getControl:function(a){return _.find(this.controls,function(b){return a===b.name})},clone:function(){return new d(elementor.helpers.cloneObject(this.attributes))},toJSON:function(){var a=Backbone.Model.prototype.toJSON.call(this);return delete a.widgetType,delete a.elType,_.each(a,function(b,c){b&&b.toJSON&&(a[c]=b.toJSON())}),a}}),b.exports=d},{}],29:[function(a,b,c){var d,e=a("elementor-models/base-settings");d=e.extend({defaults:{_inline_size:"",_column_size:100}}),b.exports=d},{"elementor-models/base-settings":28}],30:[function(a,b,c){var d,e,f=a("elementor-models/base-settings"),g=a("elementor-models/widget-settings"),h=a("elementor-models/column-settings"),i=a("elementor-models/row-settings"),j=a("elementor-models/section-settings");d=Backbone.Model.extend({defaults:{id:"",elType:"",isInner:!1,settings:{},defaultEditSettings:{}},remoteRender:!1,_htmlCache:null,_jqueryXhr:null,initialize:function(a){var b,c=this.get("elements"),d=this.get("elType"),k={widget:g,column:h,row:i,section:j},l=k[d]||f;b=this.get("settings"),"widget"===d&&(b.widgetType=this.get("widgetType")),b.elType=d,b=new l(b),this.set("settings",b),this.initEditSettings(),void 0!==c&&this.set("elements",new e(c)),"widget"===this.get("elType")&&(this.remoteRender=!0,this.setHtmlCache(a.htmlCache||"")),delete a.htmlCache,this.renderRemoteServer=_.throttle(this.renderRemoteServer,1e3),this.on("destroy",this.onDestroy),this.on("editor:close",this.onCloseEditor)},initEditSettings:function(){this.set("editSettings",new Backbone.Model(this.get("defaultEditSettings")))},onDestroy:function(){var a=this.get("settings"),b=this.get("elements");void 0!==b&&_.each(_.clone(b.models),function(a){a.destroy()}),a.destroy()},onCloseEditor:function(){this.initEditSettings(),this.renderRemoteServer()},setSetting:function(a,b,c){c=c||!1;var d=this.get("settings");d.set(a,b),this.set("settings",d),c&&(this.trigger("change",this),this.trigger("change:settings",this),this.trigger("change:settings:"+a,this))},getSetting:function(a){var b=this.get("settings");return void 0===b.get(a)?"":b.get(a)},setHtmlCache:function(a){this._htmlCache=a},getHtmlCache:function(){return this._htmlCache},getTitle:function(){var a=elementor.getElementData(this);return a?a.title:"Unknown"},getIcon:function(){var a=elementor.getElementData(this);return a?a.icon:"unknown"},renderRemoteServer:function(){if(this.remoteRender){this.trigger("before:remote:render"),this._jqueryXhr&&4!==this._jqueryXhr&&this._jqueryXhr.abort();var a=this.toJSON();this._jqueryXhr=Backbone.$.ajax({type:"POST",url:elementor.config.ajaxurl,data:{action:"elementor_render_widget",post_id:elementor.config.post_id,data:JSON.stringify(a)},dataType:"json"}).done(_.bind(this.onRemoteGetHtml,this))}},onRemoteGetHtml:function(a){this.setHtmlCache(a.data.render),this.trigger("remote:render")},clone:function(){var a=Backbone.Model.prototype.clone.apply(this,arguments);a.set("id",elementor.helpers.getUniqueID()),a.setHtmlCache(this.getHtmlCache());var b=this.get("elements"),c=this.get("settings");return _.isEmpty(b)||a.set("elements",b.clone()),a.set("settings",c.clone()),a},toJSON:function(a){a=_.extend({copyHtmlCache:!1},a);var b=Backbone.Model.prototype.toJSON.call(this);return _.each(b,function(c,d){c&&c.toJSON&&(b[d]=c.toJSON(a))}),a.copyHtmlCache?b.htmlCache=this.getHtmlCache():delete b.htmlCache,b}}),e=Backbone.Collection.extend({add:function(a,b,c){if(!(b&&b.silent||c))throw"Call Error: Adding model to element collection is allowed only by the dedicated addChildModel() method.";return Backbone.Collection.prototype.add.call(this,a,b)},model:function(a,b){return a.elType?new d(a,b):new Backbone.Model(a,b)},clone:function(){var a=Backbone.Collection.prototype.clone.apply(this,arguments),b=new e;return a.forEach(function(a){b.add(a.clone(),null,!0)}),b}}),e.prototype.sync=function(){return null},e.prototype.fetch=function(){return null},e.prototype.save=function(){return null},d.prototype.sync=function(){return null},d.prototype.fetch=function(){return null},d.prototype.save=function(){return null},b.exports={Model:d,Collection:e}},{"elementor-models/base-settings":28,"elementor-models/column-settings":29,"elementor-models/row-settings":31,"elementor-models/section-settings":32,"elementor-models/widget-settings":33}],31:[function(a,b,c){var d,e=a("elementor-models/base-settings");d=e.extend({defaults:{}}),b.exports=d},{"elementor-models/base-settings":28}],32:[function(a,b,c){var d,e=a("elementor-models/base-settings");d=e.extend({defaults:{}}),b.exports=d},{"elementor-models/base-settings":28}],33:[function(a,b,c){var d,e=a("elementor-models/base-settings");d=e.extend({}),b.exports=d},{"elementor-models/base-settings":28}],34:[function(a,b,c){var d;d={init:function(){var a;this.getModal=function(){return a||(a=this.initModal()),a},Backbone.$(document).on({"heartbeat-send":function(a,b){b.elementor_post_lock={post_ID:elementor.config.post_id}},"heartbeat-tick":function(a,b){b.locked_user?d.showLockMessage(b.locked_user):d.getModal().hide()}}),elementor.config.locked_user&&d.showLockMessage(elementor.config.locked_user)},initModal:function(){var a=elementor.dialogsManager.createWidget("options",{headerMessage:elementor.translate("take_over")});return a.addButton({name:"go_back",text:elementor.translate("go_back"),callback:function(){parent.history.go(-1)}}),a.addButton({name:"take_over",text:elementor.translate("take_over"),callback:function(){wp.heartbeat.enqueue("elementor_force_post_lock",!0),wp.heartbeat.connectNow()}}),a},showLockMessage:function(a){var b=d.getModal();b.setMessage(elementor.translate("dialog_user_taken_over",[a])).show()}},b.exports=d},{}],35:[function(a,b,c){var d;d={_enqueuedFonts:[],elementsHierarchy:{section:{column:{widget:null,section:null}}},enqueueFont:function(a){if(-1===this._enqueuedFonts.indexOf(a)){var b,c=elementor.config.controls.font.fonts[a];switch(c){case"googlefonts":b="https://fonts.googleapis.com/css?family="+a+":100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic";break;case"earlyaccess":var d=a.replace(/\s+/g,"").toLowerCase();b="https://fonts.googleapis.com/earlyaccess/"+d+".css"}_.isEmpty(b)||elementor.$previewContents.find("link:last").after('<link href="'+b+'" rel="stylesheet" type="text/css">'),this._enqueuedFonts.push(a)}},getElementChildType:function(a,b){if(b||(b=this.elementsHierarchy),void 0!==b[a])return Backbone.$.isPlainObject(b[a])?Object.keys(b[a]):null;for(var c in b)if(b.hasOwnProperty(c)&&Backbone.$.isPlainObject(b[c])){var d=this.getElementChildType(a,b[c]);if(d)return d}return null},getUniqueID:function(){var a;return a=Math.random().toString(36).substr(2,7)},stringReplaceAll:function(a,b){var c=new RegExp(Object.keys(b).join("|"),"gi");return a.replace(c,function(a){return b[a]})},isControlVisible:function(a,b){var c;if(c=_.isFunction(a.get)?a.get("condition"):a.condition,_.isEmpty(c))return!0;var d=_.filter(c,function(a,c){var d=c.match(/([a-z_0-9]+)(?:\[([a-z_]+)])?(!?)$/i),e=d[1],f=d[2],g=!!d[3],h=b.get(e);f&&(h=h[f]);var i=_.isArray(a)?_.contains(a,h):a===h;return g?i:!i});return _.isEmpty(d)},cloneObject:function(a){return JSON.parse(JSON.stringify(a))},getYoutubeIDFromURL:function(a){var b=a.match(/^.*(youtu.be\/|v\/|e\/|u\/\w+\/|embed\/|v=)([^#\&\?]*).*/);return b&&b[2]}},b.exports=d},{}],36:[function(a,b,c){var d;d=function(){var a=this,b={},c={},d={selectorWrapperPrefix:".elementor-widget-"},e={},f=function(){e.$previewHead.append(e.$style)},g=function(){e.$style=Backbone.$("<style>",{id:"elementor-style-scheme"}),e.$previewHead=elementor.$previewContents.find("head")},h=function(a,c){b[a]||(b[a]=[]),b[a].push(c)},i=function(b,c){_.each(b.selectors,function(e,f){var g,i,j=a.getSchemeValue(b.scheme.type,b.scheme.value,b.scheme.key);_.isEmpty(j)||(g=f.replace(/\{\{WRAPPER\}\}/g,d.selectorWrapperPrefix+c),i=elementor.getControlItemView().replaceStyleValues(e,j.value),h(g,i))})},j=function(b,c){var d=a.getWidgetSchemeControls(b);_.each(d,function(a){i(a,c)})},k=function(){_.each(elementor.config.widgets,function(a,b){j(a,b)})},l=function(){var a="";return _.each(b,function(b,c){a+=c+"{"+b.join("")+"}"}),a},m=function(){b={}};this.init=function(){return g(),f(),a.resetSchemes(),a},this.getWidgetSchemeControls=function(a){return _.filter(a.controls,function(a){return _.isObject(a.scheme)})},this.getSchemes=function(){return c},this.getScheme=function(a){return c[a]},this.getSchemeValue=function(b,c,d){var e=a.getScheme(b),f=e.items[c];if(d&&_.isObject(f)){var g=elementor.helpers.cloneObject(f);return g.value=f.value[d],g}return f},this.printSchemesStyle=function(){m(),k(),e.$style.text(l())},this.resetSchemes=function(a){a?c[a]=elementor.helpers.cloneObject(elementor.config.schemes[a]):c=elementor.helpers.cloneObject(elementor.config.schemes),this.onSchemeChange()},this.saveScheme=function(a){elementor.config.schemes[a].items=elementor.helpers.cloneObject(c[a].items),NProgress.start(),Backbone.$.ajax({type:"POST",url:elementor.config.ajaxurl,data:{action:"elementor_apply_scheme",scheme_name:a,data:JSON.stringify(c[a].items)}}).done(function(a){NProgress.done()})},this.setSchemeValue=function(a,b,d){c[a].items[b].value=d,this.onSchemeChange()},this.onSchemeChange=function(){this.printSchemesStyle()}},b.exports=new d},{}],37:[function(a,b,c){var d;d=Marionette.CompositeView.extend({tagName:"div",id:function(){return this.getElementUniqueClass()},attributes:function(){var a=this.model.get("elType");return"widget"===a&&(a=this.model.get("widgetType")),{"data-element_type":a}},modelEvents:{},baseEvents:{},elementEvents:{},getElementType:function(){return this.model.get("elType")},getChildType:function(){return elementor.helpers.getElementChildType(this.getElementType())},events:function(){return _.extend({},this.baseEvents,this.elementEvents)},initialize:function(){this.collection=this.model.get("elements"),this.collection&&this.listenTo(this.collection,"add remove reset",this.onCollectionChanged,this),this.listenTo(this.model.get("settings"),"change",this.onSettingsChanged,this),this.listenTo(this.model.get("editSettings"),"change",this.onSettingsChanged,this),this.on("render",this.enqueueFonts),this.on("render",this.renderStyles),this.on("render",this.renderCustomClasses),this.on("render",this.runReadyTrigger),this.initRemoveDialog()},addChildModel:function(a,b){return this.collection.add(a,b,!0)},isCollectionFilled:function(){return!1},isInner:function(){return!!this.model.get("isInner")},initRemoveDialog:function(){var a;this.getRemoveDialog=function(){return a||(a=elementor.dialogsManager.createWidget("confirm",{message:elementor.translate("dialog_confirm_delete"),headerMessage:elementor.translate("delete_element"),strings:{confirm:elementor.translate("delete"),cancel:elementor.translate("cancel")},defaultOption:"confirm",onConfirm:_.bind(function(){this.model.destroy()},this)})),a}},enqueueFonts:function(){_.each(this.model.get("settings").getFontControls(),_.bind(function(a){var b=this.model.getSetting(a.name);if(!_.isEmpty(b)){var c=elementor.helpers.isControlVisible(a,this.model.get("settings"));c&&elementor.helpers.enqueueFont(b)}},this))},renderStyles:function(){var a="",b=elementor.$previewContents.find("#elementor-style-"+this.model.cid),c=this.model.get("settings").getStyleControls();if(_.each(c,_.bind(function(b){var c=this.model.getSetting(b.name);if(_.isNumber(c)||!_.isEmpty(c)){var d=elementor.helpers.isControlVisible(b,this.model.get("settings"));d&&_.each(b.selectors,_.bind(function(d,e){var f=e.replace(/\{\{WRAPPER\}\}/g,"#"+this.getElementUniqueClass()),g=elementor.getControlItemView(b.type).replaceStyleValues(d,c);_.isEmpty(g)||(a+=f+"{"+g+"}")},this))}},this)),"column"===this.model.get("elType")){var d=this.model.getSetting("_inline_size");_.isEmpty(d)||(a+="@media (min-width: 768px) {#"+this.getElementUniqueClass()+"{width:"+d+"%;}")}0===b.length&&(elementor.$previewContents.find("head").append('<style type="text/css" id="elementor-style-'+this.model.cid+'"></style>'),b=elementor.$previewContents.find("#elementor-style-"+this.model.cid)),b.html(a)},renderCustomClasses:function(){this.$el.addClass("elementor-element");var a=this.model.get("settings");_.each(a.attributes,_.bind(function(b,c){if(a.isClassControl(c)){var d=a.getControl(c);this.$el.removeClass(d.prefix_class+a.previous(c));var e=elementor.helpers.isControlVisible(d,this.model.get("settings"));e&&!_.isEmpty(a.get(c))&&(this.$el.addClass(d.prefix_class+a.get(c)),this.$el.addClass(_.result(this,"className")))}},this))},runReadyTrigger:function(){elementorBindUI.runReadyTrigger(this.$el)},getElementUniqueClass:function(){return"elementor-element-"+this.model.get("id")},onCollectionChanged:function(){elementor.setFlagEditorChange(!0)},onSettingsChanged:function(a){elementor.setFlagEditorChange(!0),this.renderStyles(),this.renderCustomClasses()},onClickRemove:function(a){a.preventDefault(),a.stopPropagation(),this.getRemoveDialog().show()}}),b.exports=d},{}],38:[function(a,b,c){var d,e=a("elementor-views/base-element"),f=a("elementor-views/element-empty"),g=a("elementor-views/widget");d=e.extend({template:Marionette.TemplateCache.get("#tmpl-elementor-element-column-content"),elementEvents:{"click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-remove":"onClickRemove","click @ui.listTriggers":"onClickTrigger"},getChildView:function(b){return"section"===b.get("elType")?a("elementor-views/section"):g},emptyView:f,className:function(){var a="elementor-column",b=this.isInner()?"inner":"top";return a+=" elementor-"+b+"-column"},childViewContainer:"> .elementor-column-wrap > .elementor-widget-wrap",triggers:{"click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-add":"click:new","click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-edit":"click:edit","click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-trigger":"click:edit","click > .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-duplicate":"click:duplicate"},ui:{columnTitle:".column-title",columnInner:"> .elementor-column-wrap",listTriggers:"> .elementor-element-overlay .elementor-editor-element-trigger"},behaviors:{Sortable:{behaviorClass:a("elementor-behaviors/sortable"),elChildType:"widget"},Resizable:{behaviorClass:a("elementor-behaviors/resizable")},HandleDuplicate:{behaviorClass:a("elementor-behaviors/handle-duplicate")},HandleEditor:{behaviorClass:a("elementor-behaviors/handle-editor")},HandleEditMode:{behaviorClass:a("elementor-behaviors/handle-edit-mode")},HandleAddMode:{behaviorClass:a("elementor-behaviors/duplicate")},HandleElementsRelation:{behaviorClass:a("elementor-behaviors/elements-relation")}},initialize:function(){e.prototype.initialize.apply(this,arguments),this.listenTo(elementor.data,"widget:drag:start",this.onWidgetDragStart),this.listenTo(elementor.data,"widget:drag:end",this.onWidgetDragEnd)},isDroppingAllowed:function(a,b){var c=elementor.panelElements.request("element:selected"),d=c.model.get("elType");return"section"===d?!this.isInner():"widget"===d},changeSizeUI:function(){var a=this.model.getSetting("_column_size"),b=this.model.getSetting("_inline_size"),c=parseFloat(b||a).toFixed(1)+"%";this.$el.attr("data-col",a),this.ui.columnTitle.html(c)},getSortableOptions:function(){return{connectWith:".elementor-widget-wrap",items:"> .elementor-element"}},onCollectionChanged:function(){e.prototype.onCollectionChanged.apply(this,arguments),this.changeChildContainerClasses()},changeChildContainerClasses:function(){var a="elementor-element-empty",b="elementor-element-populated";this.collection.isEmpty()?this.ui.columnInner.removeClass(b).addClass(a):this.ui.columnInner.removeClass(a).addClass(b)},onRender:function(){var a=this;a.changeChildContainerClasses(),a.changeSizeUI(),a.$el.html5Droppable({items:" > .elementor-column-wrap > .elementor-widget-wrap > .elementor-element, >.elementor-column-wrap > .elementor-widget-wrap > .elementor-empty-view > .elementor-first-add",axis:["vertical"],groups:["elementor-element"],isDroppingAllowed:_.bind(a.isDroppingAllowed,a),onDragging:function(b,c){c.stopPropagation(),a.$el.addClass("elementor-dragging-on-child"),this.dataset.side!==b&&Backbone.$(this).attr("data-side",b)},onDragLeave:function(){a.$el.removeClass("elementor-dragging-on-child"),Backbone.$(this).removeAttr("data-side")},onDropping:function(b,c){c.stopPropagation();var d=elementor.panelElements.request("element:selected"),e=Backbone.$(this).index();"bottom"===b&&e++;var f={id:elementor.helpers.getUniqueID(),elType:d.model.get("elType")};if("widget"===f.elType)f.widgetType=d.model.get("widgetType");else{if("section"!==f.elType)return;f.elements=[],f.isInner=!0}a.triggerMethod("request:add",f,{at:e})}})},onClickTrigger:function(a){a.preventDefault();var b=this.$(a.currentTarget),c=b.hasClass("elementor-active");this.ui.listTriggers.removeClass("elementor-active"),c||b.addClass("elementor-active")},onWidgetDragStart:function(){this.$el.addClass("elementor-dragging")},onWidgetDragEnd:function(){this.$el.removeClass("elementor-dragging")}}),b.exports=d},{"elementor-behaviors/duplicate":2,"elementor-behaviors/elements-relation":3,"elementor-behaviors/handle-duplicate":4,"elementor-behaviors/handle-edit-mode":5,"elementor-behaviors/handle-editor":6,"elementor-behaviors/resizable":7,"elementor-behaviors/sortable":8,"elementor-views/base-element":37,"elementor-views/element-empty":58,"elementor-views/section":59,"elementor-views/widget":61}],39:[function(a,b,c){var d,e=a("elementor-views/controls/base");d=e.extend({applySavedValue:function(){var a=this.getControlValue(),b=this.$("[data-setting]"),c=this;_.each(a,function(a,d){var e=b.filter(function(){return d===this.dataset.setting});c.setInputValue(e,a)})},getControlValue:function(a){var b=this.elementSettingsModel.get(this.model.get("name"));return Backbone.$.isPlainObject(b)?a?b[a]||"":elementor.helpers.cloneObject(b):{}},setValue:function(a,b){var c=this.getControlValue();"object"==typeof a?_.each(a,function(a,b){c[b]=a}):c[a]=b,this.setSettingsModel(c)},updateElementModel:function(a){var b=this.getInputValue(a.currentTarget),c=a.currentTarget.dataset.setting;this.setValue(c,b)}},{replaceStyleValues:function(a,b){if(!_.isObject(b))return"";try{return a.replace(/\{\{([A-Z]+)}}/g,function(a,c){var d=b[c.toLowerCase()];if(""===d)throw"";return d})}catch(c){return""}}}),b.exports=d},{"elementor-views/controls/base":41}],40:[function(a,b,c){var d,e=a("elementor-views/controls/base-multiple");d=e.extend({getCurrentRange:function(){return this.getUnitRange(this.getControlValue("unit"))},getUnitRange:function(a){var b=this.model.get("range");return b&&b[a]?b[a]:!1}}),b.exports=d},{"elementor-views/controls/base-multiple":39}],41:[function(a,b,c){var d;d=Marionette.CompositeView.extend({ui:function(){return{input:'input[data-setting][type!="checkbox"][type!="radio"]',checkbox:'input[data-setting][type="checkbox"]',radio:'input[data-setting][type="radio"]',select:"select[data-setting]",textarea:"textarea[data-setting]"}},className:function(){var a="elementor-control elementor-control-"+this.model.get("name")+" elementor-control-type-"+this.model.get("type"),b=this.model.get("classes");return _.isEmpty(b)||(a+=" "+b),_.isEmpty(this.model.get("section"))||(a+=" elementor-control-under-section"),a},getTemplate:function(){return Marionette.TemplateCache.get("#tmpl-elementor-control-"+this.model.get("type")+"-content")},templateHelpers:function(){var a={controlValue:this.getControlValue(),_cid:this.model.cid};return{data:_.extend({},this.model.toJSON(),a)}},baseEvents:{"input @ui.input":"onBaseInputChange","change @ui.checkbox":"onBaseInputChange","change @ui.radio":"onBaseInputChange","input @ui.textarea":"onBaseInputChange","change @ui.select":"onBaseInputChange"},childEvents:{},events:function(){return _.extend({},this.baseEvents,this.childEvents)},initialize:function(a){this.elementSettingsModel=a.elementSettingsModel;var b=this.model.get("type"),c=_.extend({},elementor.config.controls[b],this.model.attributes);this.model.set(c),this.listenTo(this.elementSettingsModel,"change",this.toggleControlVisibility),this.listenTo(this.elementSettingsModel,"control:switch:tab",this.onControlSwitchTab)},getControlValue:function(){return this.elementSettingsModel.get(this.model.get("name"))},isValidValue:function(a){return!0},setValue:function(a){this.setSettingsModel(a)},setSettingsModel:function(a){return!0!==this.isValidValue(a)?void this.triggerMethod("settings:error"):(this.elementSettingsModel.set(this.model.get("name"),a),void this.triggerMethod("settings:change"))},applySavedValue:function(){this.setInputValue('[data-setting="'+this.model.get("name")+'"]',this.getControlValue())},getEditSettings:function(a){var b=this.getOption("elementEditSettings").toJSON();return a?b[a]:b},setEditSetting:function(a,b){var c=this.getOption("elementEditSettings");c.set(a,b)},getInputValue:function(a){var b=this.$(a),c=b.val(),d=b.attr("type");return"checkbox"===d?b.prop("checked"):"radio"===d?b.prop("checked")?c:"":c},setInputValue:function(a,b){var c=this.$(a),d=c.attr("type");"checkbox"===d?c.prop("checked",!!b):"radio"===d?c.filter('[value="'+b+'"]').prop("checked",!0):c.val(b)},onSettingsError:function(){this.$el.addClass("elementor-error")},onSettingsChange:function(){this.$el.removeClass("elementor-error")},onRender:function(){this.applySavedValue();var a=this.model.get("label_block")?"block":"inline",b=this.model.get("show_label"),c="elementor-label-"+a;c+=" elementor-control-separator-"+this.model.get("separator"),b||(c+=" elementor-control-hidden-label"),this.$el.addClass(c),this.triggerMethod("ready"),this.toggleControlVisibility()},onBaseInputChange:function(a){this.updateElementModel(a),this.triggerMethod("input:change",a)},toggleControlVisibility:function(){var a=elementor.helpers.isControlVisible(this.model,this.elementSettingsModel);this.$el.toggleClass("elementor-hidden-control",!a),elementor.data.trigger("scrollbar:update")},onControlSwitchTab:function(a){this.$el.toggleClass("elementor-active-tab",a===this.model.get("tab")),elementor.data.trigger("scrollbar:update")},onReady:function(){},updateElementModel:function(a){this.setValue(this.getInputValue(a.currentTarget))}},{replaceStyleValues:function(a,b){var c={"{{VALUE}}":b};return elementor.helpers.stringReplaceAll(a,c)}}),b.exports=d},{}],42:[function(a,b,c){var d,e=a("elementor-views/controls/base");d=e.extend({ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.inputs="[type=radio]",a},childEvents:{"mousedown label":"onMouseDownLabel","click @ui.inputs":"onClickInput","change @ui.inputs":"updateElementModel"},onMouseDownLabel:function(a){var b=this.$(a.currentTarget),c=this.$("#"+b.attr("for"));c.data("checked",c.prop("checked"))},onClickInput:function(a){if(this.model.get("toggle")){var b=this.$(a.currentTarget);b.data("checked")&&b.prop("checked",!1).trigger("change")}},onRender:function(){e.prototype.onRender.apply(this,arguments);var a=this.getControlValue();a?this.ui.inputs.filter("[value="+a+"]").prop("checked",!0):this.model.get("toggle")||this.ui.inputs.first().prop("checked",!0).trigger("change")}}),b.exports=d},{"elementor-views/controls/base":41}],43:[function(a,b,c){var d,e=a("elementor-views/controls/base");d=e.extend({ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.picker=".color-picker-hex",a},onReady:function(){this.ui.picker.wpColorPicker({change:_.bind(function(){this.setValue(this.ui.picker.wpColorPicker("color"))},this),clear:_.bind(function(){this.setValue("")},this),width:251})},onBeforeDestroy:function(){this.ui.picker.wpColorPicker("instance")&&this.ui.picker.wpColorPicker("close"),this.$el.remove()}}),b.exports=d},{"elementor-views/controls/base":41}],44:[function(a,b,c){var d,e=a("elementor-views/controls/base-units");d=e.extend({ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.controls=".elementor-control-dimension > input:enabled",a.link="button.elementor-link-dimensions",a},childEvents:{"click @ui.link":"onLinkDimensionsClicked"},defaultDimensionValue:0,initialize:function(){e.prototype.initialize.apply(this,arguments),this.model.set("allowed_dimensions",this.filterDimensions(this.model.get("allowed_dimensions")))},getPossibleDimensions:function(){return["top","right","bottom","left"]},filterDimensions:function(a){a=a||"all";var b=this.getPossibleDimensions();return"all"===a?b:(_.isArray(a)||("horizontal"===a?a=["right","left"]:"vertical"===a&&(a=["top","bottom"])),a)},onReady:function(){var a=this.getControlValue();this.isLinkedDimensions()||(this.ui.link.addClass("unlinked"),this.ui.controls.each(_.bind(function(b,c){_.isEmpty(a[c.name])&&(a[c.name]=this.defaultDimensionValue),this.$(c).val(a[c.name])},this))),this.fillEmptyDimensions()},updateDimensionsValue:function(){var a={},b=this.getPossibleDimensions(),c=this.ui.controls;b.forEach(_.bind(function(b){var d=c.filter('[data-setting="'+b+'"]');a[b]=d.length?d.val():this.defaultDimensionValue},this)),this.setValue(a)},fillEmptyDimensions:function(){var a=this.getPossibleDimensions(),b=this.model.get("allowed_dimensions"),c=this.ui.controls;this.isLinkedDimensions()||a.forEach(_.bind(function(a){var d=c.filter('[data-setting="'+a+'"]'),e=-1!==_.indexOf(b,a);e&&d.length&&_.isEmpty(d.val())&&d.val(this.defaultDimensionValue)},this))},updateDimensions:function(){this.fillEmptyDimensions(),this.updateDimensionsValue()},resetDimensions:function(){this.ui.controls.val(""),this.updateDimensionsValue()},onInputChange:function(a){var b=a.target.dataset.setting;if("unit"===b&&this.resetDimensions(),_.contains(this.getPossibleDimensions(),b)){if(this.isLinkedDimensions()){var c=this.$(a.target);this.ui.controls.val(c.val())}this.updateDimensions()}},onLinkDimensionsClicked:function(a){a.preventDefault(),a.stopPropagation(),this.ui.link.toggleClass("unlinked"),this.setValue("isLinked",!this.ui.link.hasClass("unlinked")),this.isLinkedDimensions()&&this.ui.controls.val(this.ui.controls.eq(0).val()),this.updateDimensions()},isLinkedDimensions:function(){return this.getControlValue("isLinked")}}),b.exports=d},{"elementor-views/controls/base-units":40}],45:[function(a,b,c){var d,e=a("elementor-views/controls/base");d=e.extend({ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.fontSelect=".elementor-control-font-family",a},onReady:function(){this.ui.fontSelect.select2({dir:elementor.config.is_rtl?"rtl":"ltr"})},onBeforeDestroy:function(){this.ui.fontSelect.data("select2")&&this.ui.fontSelect.select2("destroy"),this.$el.remove()},templateHelpers:function(){var a=e.prototype.templateHelpers.apply(this,arguments);return a.getFontsByGroups=_.bind(function(a){return _.pick(this.model.get("fonts"),function(b,c){return _.isArray(a)?_.contains(a,b):b===a})},this),a}}),b.exports=d},{"elementor-views/controls/base":41}],46:[function(a,b,c){var d,e=a("elementor-views/controls/base");d=e.extend({ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.controlMedia=".elementor-control-media",a.frameOpeners=".elementor-control-media-upload-button, .elementor-control-media-image",a.deleteButton=".elementor-control-media-delete",a},childEvents:{"click @ui.frameOpeners":"openFrame","click @ui.deleteButton":"deleteImage"},onReady:function(){_.isEmpty(this.getControlValue())&&this.ui.controlMedia.addClass("media-empty")},openFrame:function(){this.initFrame(),this.frame.open()},deleteImage:function(){this.setValue(""),this.render()},initFrame:function(){var a,b=this.getControlValue();a={frame:"post",multiple:!0,button:{text:"Insert Media"},state:"gallery"},""!==b&&(a.selection=this.fetchSelection(b),a.state="gallery-edit"),this.frame=wp.media(a),this.frame.on("update",_.bind(this.select,this)),this.frame.on("menu:render:default",_.bind(this.menuRender,this)),this.frame.on("content:render:browse",_.bind(this.gallerySettings,this))},menuRender:function(a){a.unset("insert"),a.unset("featured-image")},gallerySettings:function(a){a.sidebar.on("ready",function(){a.sidebar.unset("gallery")})},fetchSelection:function(a){var b=a.split(","),c={orderby:"post__in",order:"ASC",type:"image",perPage:-1,post__in:b},d=wp.media.query(c),e=new wp.media.model.Selection(d.models,{props:d.props.toJSON(),multiple:!0});return e},select:function(a){var b=a.pluck("id");this.setValue(b.toString()),this.render()},onBeforeDestroy:function(){this.frame&&(this.frame.off("update"),this.frame.off("menu:render:default"),this.frame.off("content:render:browse")),this.$el.remove()}}),b.exports=d},{"elementor-views/controls/base":41}],47:[function(a,b,c){var d,e=a("elementor-views/controls/base");d=e.extend({ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.iconSelect=".elementor-control-icon",a},onReady:function(){this.ui.iconSelect.select2({allowClear:!0,templateResult:_.bind(this.iconsList,this),templateSelection:_.bind(this.iconsList,this)})},iconsList:function(a){return a.id?Backbone.$('<span><i class="'+a.id+'"></i> '+a.text+"</span>"):a.text},onBeforeDestroy:function(){this.ui.iconSelect.data("select2")&&this.ui.iconSelect.select2("destroy"),this.$el.remove()}}),b.exports=d},{"elementor-views/controls/base":41}],48:[function(a,b,c){var d,e=a("elementor-views/controls/base-multiple");d=e.extend({ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.controlMedia=".elementor-control-media",a.frameOpeners=".elementor-control-media-upload-button, .elementor-control-media-image",a.deleteButton=".elementor-control-media-delete",a},childEvents:{"click @ui.frameOpeners":"openFrame","click @ui.deleteButton":"deleteImage"},onReady:function(){_.isEmpty(this.getControlValue())&&this.ui.controlMedia.addClass("media-empty")},openFrame:function(){this.frame||this.initFrame(),this.frame.open()},deleteImage:function(){this.setValue({url:"",id:""}),this.render()},initFrame:function(){this.frame=wp.media({button:{text:"Insert Media"},states:[new wp.media.controller.Library({title:"Insert Media",library:wp.media.query({type:"image"}),multiple:!1,date:!1})]}),this.frame.on("insert select",_.bind(this.select,this))},
|
4 |
+
select:function(){var a=this.frame.state().get("selection").first().toJSON();a.url&&(this.setValue({url:a.url,id:a.id}),this.render())},onBeforeDestroy:function(){this.$el.remove()}}),b.exports=d},{"elementor-views/controls/base-multiple":39}],49:[function(a,b,c){var d;d=Marionette.CompositeView.extend({template:Marionette.TemplateCache.get("#tmpl-elementor-repeater-row"),className:"repeater-fields",ui:{duplicateButton:".elementor-repeater-tool-duplicate",editButton:".elementor-repeater-tool-edit",removeButton:".elementor-repeater-tool-remove",itemNumber:".elementor-repeater-row-item-number"},triggers:{"click @ui.removeButton":"click:remove","click @ui.duplicateButton":"click:duplicate","click @ui.itemNumber":"click:edit"},templateHelpers:function(){return{itemIndex:this.getOption("itemIndex")}},childViewContainer:".elementor-repeater-row-controls",getChildView:function(a){var b=a.get("type");return elementor.getControlItemView(b)},childViewOptions:function(){return{elementSettingsModel:this.model}},updateIndex:function(a){this.itemIndex=a,this.render()},initialize:function(a){this.elementSettingsModel=a.elementSettingsModel,this.itemIndex=0,this.collection=new Backbone.Collection(a.controlFields)}}),b.exports=d},{}],50:[function(a,b,c){var d,e=a("elementor-views/controls/base"),f=a("elementor-views/controls/repeater-row");d=e.extend({ui:{btnAddRow:".elementor-repeater-add",fieldContainer:".elementor-repeater-fields"},events:{"click @ui.btnAddRow":"onButtonAddRowClick","sortstart @ui.fieldContainer":"onSortStart","sortupdate @ui.fieldContainer":"onSortUpdate"},childView:f,childViewContainer:".elementor-repeater-fields",templateHelpers:function(){return{data:_.extend({},this.model.toJSON(),{controlValue:[]})}},childViewOptions:function(a){return{controlFields:this.model.get("fields")}},initialize:function(a){e.prototype.initialize.apply(this,arguments),this.collection=this.elementSettingsModel.get(this.model.get("name")),this.listenTo(this.collection,"change add remove reset",this.onCollectionChanged,this)},editRow:function(a){return this.currentEditableChild&&this.currentEditableChild.getChildViewContainer(this.currentEditableChild).removeClass("editable"),this.currentEditableChild===a?void delete this.currentEditableChild:(a.getChildViewContainer(a).addClass("editable"),this.currentEditableChild=a,void this.updateActiveRow())},toggleMinRowsClass:function(){this.model.get("prevent_empty")&&this.$el.toggleClass("elementor-repeater-has-minimum-rows",1>=this.collection.length)},updateActiveRow:function(){var a=0;this.currentEditableChild&&(a=this.currentEditableChild.itemIndex),this.setEditSetting("activeItemIndex",a)},updateChildIndexes:function(){this.children.each(_.bind(function(a){a.updateIndex(this.collection.indexOf(a.model)+1)},this))},onRender:function(){this.ui.fieldContainer.sortable({axis:"y"}),this.toggleMinRowsClass()},onSortStart:function(a,b){b.item.data("oldIndex",b.item.index())},onSortUpdate:function(a,b){var c=b.item.data("oldIndex"),d=this.collection.at(c),e=b.item.index();this.collection.remove(d),this.collection.add(d,{at:e})},onAddChild:function(){this.updateChildIndexes(),this.updateActiveRow()},onRemoveChild:function(a){a===this.currentEditableChild&&delete this.currentEditableChild,this.updateChildIndexes(),this.updateActiveRow()},onCollectionChanged:function(){this.elementSettingsModel.trigger("change"),this.toggleMinRowsClass()},onButtonAddRowClick:function(){var a={};_.each(this.model.get("fields"),function(b){a[b.name]=b["default"]});var b=this.collection.add(a),c=this.children.findByModel(b);this.editRow(c)},onChildviewClickRemove:function(a){a.model.destroy()},onChildviewClickDuplicate:function(a){this.collection.add(a.model.clone(),{at:a.itemIndex})},onChildviewClickEdit:function(a){this.editRow(a)}}),b.exports=d},{"elementor-views/controls/base":41,"elementor-views/controls/repeater-row":49}],51:[function(a,b,c){var d,e=a("elementor-views/controls/base");d=e.extend({ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.heading=".elementor-panel-heading",a},triggers:{click:"control:section:clicked"}}),b.exports=d},{"elementor-views/controls/base":41}],52:[function(a,b,c){var d,e=a("elementor-views/controls/base");d=e.extend({ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.select=".elementor-select2",a},onReady:function(){var a={allowClear:!0};this.ui.select.select2(a)},onBeforeDestroy:function(){this.ui.select.data("select2")&&this.ui.select.select2("destroy"),this.$el.remove()}}),b.exports=d},{"elementor-views/controls/base":41}],53:[function(a,b,c){var d,e=a("elementor-views/controls/base-units");d=e.extend({ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.slider=".elementor-control-slider",a},childEvents:{"slide @ui.slider":"onSlideChange"},initSlider:function(){var a=this.getControlValue("size"),b=this.getCurrentRange();this.ui.input.attr(b).val(a),this.ui.slider.slider(_.extend({},b,{value:a}))},resetSize:function(){this.setValue("size",""),this.initSlider()},onReady:function(){this.initSlider()},onSlideChange:function(a,b){this.setValue("size",b.value),this.ui.input.val(b.value)},onInputChange:function(a){var b=a.currentTarget.dataset.setting;"size"===b?this.ui.slider.slider("value",this.getControlValue("size")):"unit"===b&&this.resetSize()},onBeforeDestroy:function(){this.ui.slider.slider("destroy"),this.$el.remove()}}),b.exports=d},{"elementor-views/controls/base-units":40}],54:[function(a,b,c){var d,e=a("elementor-views/controls/base"),f=a("elementor-views/section");d=e.extend({templateHelpers:function(){var a=e.prototype.templateHelpers.apply(this,arguments);return a.getPresetByStructure=function(a){return f.getPresetByStructure(a)},a.getMorePresets=_.bind(this.getMorePresets,this),a},getMorePresets:function(){var a=f.getParsedStructure(this.getControlValue());return f.getPresets(a.columnsCount)},onInputChange:function(){this.render()}}),b.exports=d},{"elementor-views/controls/base":41,"elementor-views/section":59}],55:[function(a,b,c){var d,e=a("elementor-views/controls/base-multiple");d=e.extend({ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.btnExternal="button.elementor-control-url-target",a},childEvents:{"click @ui.btnExternal":"onExternalClicked"},onReady:function(){var a=this.getControlValue();a.is_external&&this.ui.btnExternal.addClass("active"),a.url&&this.ui.input.val(a.url)},onExternalClicked:function(a){a.preventDefault(),this.ui.btnExternal.toggleClass("active"),this.setValue("is_external",this.isExternal())},isExternal:function(){return this.ui.btnExternal.hasClass("active")}}),b.exports=d},{"elementor-views/controls/base-multiple":39}],56:[function(a,b,c){var d,e=a("elementor-views/controls/base");d=e.extend({ui:function(){var a=e.prototype.ui.apply(this,arguments);return a.form="form",a.loading=".wp-widget-form-loading",a},events:{"keyup @ui.form :input":"onFormChanged","change @ui.form :input":"onFormChanged"},onFormChanged:function(){var a="widget-"+this.model.get("id_base"),b=this.ui.form.elementorSerializeObject()[a].REPLACE_TO_ID;this.setValue(b)},onReady:function(){Backbone.$.ajax({type:"POST",url:elementor.config.ajaxurl,data:{action:"elementor_editor_get_wp_widget_form",widget_type:this.model.get("widget"),data:JSON.stringify(this.elementSettingsModel.toJSON())}}).done(_.bind(function(a){this.ui.form.html(a)},this))}}),b.exports=d},{"elementor-views/controls/base":41}],57:[function(a,b,c){var d,e=a("elementor-views/controls/base");d=e.extend({childEvents:{"keyup textarea.elementor-wp-editor":"updateElementModel"},buttons:{keepInBasic:["bold","italic","link","unlink","wp_adv","fullscreen"],moveToBasic:{underline:"italic"}},initialize:function(){e.prototype.initialize.apply(this,arguments);var a=this;this.editorID="elementorwpeditor"+this.cid;var b={id:this.editorID,selector:"#"+this.editorID,setup:function(b){b.on("keyup change",function(){b.save(),a.setValue(b.getContent())})}};tinyMCEPreInit.mceInit[this.editorID]=_.extend(_.clone(tinyMCEPreInit.mceInit.elementorwpeditor),b),this.rearrangeButtons(),this.$el.addClass("elementor-loading-editor"),_.defer(function(){quicktags({buttons:"strong,em,del,link,img,close",id:a.editorID}),switchEditors.go(a.editorID,"tmce"),_.defer(function(){delete QTags.instances[0]})})},attachElContent:function(){var a=elementor.config.wp_editor.replace(/elementorwpeditor/g,this.editorID).replace("%%EDITORCONTENT%%",this.getControlValue());return this.$el.html(a),this},rearrangeButtons:function(){var a=tinyMCEPreInit.mceInit[this.editorID],b=a.toolbar1.split(","),c=a.toolbar2.split(","),d=Array.prototype.slice.call(this.buttons.keepInBasic),e=_.difference(b,d),f=_.difference(c,Object.keys(this.buttons.moveToBasic));_.each(this.buttons.moveToBasic,function(a,b){var c=d.indexOf(a);-1!==c&&d.splice(c+1,0,b)}),a.toolbar1=d.join(","),a.toolbar2=e+","+f},onBeforeDestroy:function(){tinymce.EditorManager.execCommand("mceRemoveEditor",!0,this.editorID),delete QTags.instances[this.editorID],delete tinyMCEPreInit.mceInit[this.editorID],delete tinyMCEPreInit.qtInit[this.editorID]}}),b.exports=d},{"elementor-views/controls/base":41}],58:[function(a,b,c){var d;d=Marionette.ItemView.extend({template:"#tmpl-elementor-empty-preview",className:"elementor-empty-view",events:{click:"onClickAdd"},onClickAdd:function(){elementor.getPanelView().setPage("elements")}}),b.exports=d},{}],59:[function(a,b,c){var d,e=a("elementor-views/base-element"),f=a("elementor-views/column");d=e.extend({template:Marionette.TemplateCache.get("#tmpl-elementor-element-section-content"),childView:f,className:function(){var a="elementor-section",b=this.isInner()?"inner":"top";return a+=" elementor-"+b+"-section"},tagName:"section",childViewContainer:"> .elementor-container > .elementor-row",triggers:{"click .elementor-editor-section-settings-list .elementor-editor-element-edit":"click:edit","click .elementor-editor-section-settings-list .elementor-editor-element-trigger":"click:edit","click .elementor-editor-section-settings-list .elementor-editor-element-duplicate":"click:duplicate"},elementEvents:{"click .elementor-editor-section-settings-list .elementor-editor-element-remove":"onClickRemove"},behaviors:{Sortable:{behaviorClass:a("elementor-behaviors/sortable"),elChildType:"column"},HandleDuplicate:{behaviorClass:a("elementor-behaviors/handle-duplicate")},HandleEditor:{behaviorClass:a("elementor-behaviors/handle-editor")},HandleEditMode:{behaviorClass:a("elementor-behaviors/handle-edit-mode")},HandleAddMode:{behaviorClass:a("elementor-behaviors/duplicate")},HandleElementsRelation:{behaviorClass:a("elementor-behaviors/elements-relation")}},initialize:function(){e.prototype.initialize.apply(this,arguments),this.listenTo(this.collection,"add remove reset",this._checkIsFull),this.listenTo(this.collection,"remove",this.onCollectionRemove),this.listenTo(this.model,"change:settings:structure",this.onStructureChanged)},addEmptyColumn:function(){this.addChildModel({id:elementor.helpers.getUniqueID(),elType:"column",settings:{},elements:[]})},addChildModel:function(a,b){var c=a instanceof Backbone.Model,d=this.isInner();return c?a.set("isInner",d):a.isInner=d,e.prototype.addChildModel.apply(this,arguments)},getSortableOptions:function(){var a=this.isInner()?".elementor-inner-section":".elementor-top-section";return{connectWith:a+" > .elementor-container > .elementor-row",handle:"> .elementor-element-overlay .elementor-editor-column-settings-list .elementor-editor-element-trigger",items:"> .elementor-column"}},getColumnPercentSize:function(a,b){return b/a.parent().width()*100},getDefaultStructure:function(){return this.collection.length+"0"},getStructure:function(){return this.model.getSetting("structure")},setStructure:function(a){var b=d.getParsedStructure(a);if(+b.columnsCount!==this.collection.length)throw new TypeError("The provided structure doesn't match the columns count.");this.model.setSetting("structure",a,!0)},redefineLayout:function(){var a=d.getPresetByStructure(this.getStructure());this.collection.each(function(b,c){b.setSetting("_column_size",a.preset[c]),b.setSetting("_inline_size",null)}),this.children.invoke("changeSizeUI")},resetLayout:function(){this.setStructure(this.getDefaultStructure())},isCollectionFilled:function(){var a=10,b=this.collection.length;return b>=a},_checkIsFull:function(){this.$el.toggleClass("elementor-section-filled",this.isCollectionFilled())},_checkIsEmpty:function(){this.collection.length||this.addEmptyColumn()},onBeforeRender:function(){this._checkIsEmpty()},onRender:function(){this._checkIsFull(),this.redefineLayout()},onAddChild:function(){this.isBuffering||this.resetLayout()},onCollectionRemove:function(){this._checkIsEmpty(),this.resetLayout()},onChildviewRequestResize:function(a,b){var c=a.model.getSetting("_inline_size");c||(c=this.getColumnPercentSize(b.element,b.originalSize.width));var d=this.getColumnPercentSize(b.element,b.size.width),e=d-c;b.element.css({width:"",left:"initial"});var f=this.collection.indexOf(a.model),g=this.collection.at(f+1),h=this.children.findByModelCid(g.cid);if(h){var i=h.$el,j=this.getColumnPercentSize(i,i.width()),k=j-e;10>d||d>100||!e||10>k||k>100||(a.model.setSetting("_inline_size",d.toFixed(3)),a.changeSizeUI(),h.model.setSetting("_inline_size",k.toFixed(3)),h.changeSizeUI())}},onSettingsChanged:function(){e.prototype.onSettingsChanged.apply(this,arguments),this.render()},onStructureChanged:function(){this.redefineLayout()}},{getPresets:function(a,b){var c=elementor.helpers.cloneObject(elementor.config.elements.section.presets);return a&&(c=c[a]),b&&(c=c[b]),c},getPresetByStructure:function(a){var b=d.getParsedStructure(a);return d.getPresets(b.columnsCount,b.presetIndex)},getParsedStructure:function(a){return{columnsCount:a.slice(0,-1),presetIndex:a.substr(-1)}}}),b.exports=d},{"elementor-behaviors/duplicate":2,"elementor-behaviors/elements-relation":3,"elementor-behaviors/handle-duplicate":4,"elementor-behaviors/handle-edit-mode":5,"elementor-behaviors/handle-editor":6,"elementor-behaviors/sortable":8,"elementor-views/base-element":37,"elementor-views/column":38}],60:[function(a,b,c){var d,e=a("elementor-views/section");d=Marionette.CompositeView.extend({template:Marionette.TemplateCache.get("#tmpl-elementor-preview"),id:"elementor-inner",childViewContainer:"#elementor-section-wrap",childView:e,ui:{addSectionArea:"#elementor-add-section",addNewSection:"#elementor-add-new-section",closePresetsIcon:"#elementor-select-preset-close",addIcon:"#elementor-add-section-button",selectPreset:"#elementor-select-preset",presets:".elementor-preset"},events:{"click @ui.addIcon":"showSelectPresets","click @ui.closePresetsIcon":"closeSelectPresets","click @ui.presets":"onPresetSelected"},behaviors:{Sortable:{behaviorClass:a("elementor-behaviors/sortable"),elChildType:"section"},HandleDuplicate:{behaviorClass:a("elementor-behaviors/handle-duplicate")},HandleAdd:{behaviorClass:a("elementor-behaviors/duplicate")},HandleElementsRelation:{behaviorClass:a("elementor-behaviors/elements-relation")}},getSortableOptions:function(){return{handle:"> .elementor-container > .elementor-row > .elementor-column > .elementor-element-overlay .elementor-editor-section-settings-list .elementor-editor-element-trigger",items:"> .elementor-section"}},getChildType:function(){return["section"]},isCollectionFilled:function(){return!1},initialize:function(){1>this.collection.length&&this.addChildModel({id:elementor.helpers.getUniqueID(),elType:"section",settings:{},elements:[]})},addChildModel:function(a,b){return this.collection.add(a,b,!0)},addSection:function(a){var b={id:elementor.helpers.getUniqueID(),elType:"section",settings:{},elements:[]};a&&_.extend(b,a);var c=this.addChildModel(b);return this.children.findByModelCid(c.cid)},showSelectPresets:function(){this.ui.addNewSection.hide(),this.ui.selectPreset.show()},closeSelectPresets:function(){this.ui.addNewSection.show(),this.ui.selectPreset.hide()},onRender:function(){var a=this;a.ui.addSectionArea.html5Droppable({axis:["vertical"],groups:["elementor-element"],onDragging:function(b){a.ui.addSectionArea.data("side")!==b&&a.ui.addSectionArea.attr("data-side",b)},onDragLeave:function(){a.ui.addSectionArea.removeAttr("data-side")},onDropping:function(){var b=elementor.panelElements.request("element:selected"),c=a.addSection(),d={id:elementor.helpers.getUniqueID(),elType:"widget",widgetType:b.model.get("widgetType")};c.triggerMethod("request:add",d)}})},onPresetSelected:function(a){this.closeSelectPresets();var b,c=a.currentTarget.dataset.structure,d=e.getParsedStructure(c),f=[];for(b=0;b<d.columnsCount;b++)f.push({id:elementor.helpers.getUniqueID(),elType:"column",settings:{},elements:[]});var g=this.addSection({elements:f});g.setStructure(c)}}),b.exports=d},{"elementor-behaviors/duplicate":2,"elementor-behaviors/elements-relation":3,"elementor-behaviors/handle-duplicate":4,"elementor-behaviors/sortable":8,"elementor-views/section":59}],61:[function(a,b,c){var d=a("elementor-views/base-element"),e=d.extend({_templateType:null,getTemplate:function(){return"remote"!==this.getTemplateType()?Marionette.TemplateCache.get("#tmpl-elementor-widget-"+this.model.get("widgetType")+"-content"):_.template("")},className:function(){return"elementor-widget elementor-widget-"+this.model.get("widgetType")},modelEvents:{"before:remote:render":"onModelBeforeRemoteRender","remote:render":"onModelRemoteRender"},triggers:{"click > .elementor-element-overlay":{event:"click:edit",stopPropagation:!1},"click > .elementor-element-overlay .elementor-editor-add-element":"click:add","click > .elementor-element-overlay .elementor-editor-element-duplicate":"click:duplicate"},ui:{settings:"> .elementor-element-overlay .elementor-editor-widget-settings"},elementEvents:{click:"showSettings","mouseleave @ui.settings":"hideSettings","click > .elementor-element-overlay .elementor-editor-element-remove":"onClickRemove"},behaviors:{HandleEditor:{behaviorClass:a("elementor-behaviors/handle-editor")},HandleEditMode:{behaviorClass:a("elementor-behaviors/handle-edit-mode")}},initialize:function(){d.prototype.initialize.apply(this,arguments),this.model.getHtmlCache()||this.model.renderRemoteServer()},getTemplateType:function(){if(null===this.getOption("_templateType")){var a=Backbone.$("#tmpl-elementor-widget-"+this.model.get("widgetType")+"-content");0===a.length?this._templateType="remote":this._templateType="js"}return this.getOption("_templateType")},onModelBeforeRemoteRender:function(){this.$el.addClass("elementor-loading")},onBeforeDestroy:function(){elementor.$previewContents.find("#elementor-style-"+this.model.cid).remove()},onModelRemoteRender:function(){this.isDestroyed||(this.$el.removeClass("elementor-loading"),this.render())},onSettingsChanged:function(a){switch(d.prototype.onSettingsChanged.apply(this,arguments),this.getTemplateType()){case"js":this.model.setHtmlCache(),this.render();break;default:this.model.renderRemoteServer()}},attachElContent:function(a){var b=this.model.getHtmlCache();return b&&(a=b),this.$el.html(a),this},onRender:function(){this.$el.removeClass("elementor-widget-empty").find("> .elementor-element-overlay .elementor-widget-empty-icon").remove(),this.$el.imagesLoaded().always(_.bind(function(){1>this.$el.height()&&(this.$el.addClass("elementor-widget-empty"),this.$("> .elementor-element-overlay").append('<i class="elementor-widget-empty-icon fa fa-'+this.model.getIcon()+'"></i>'))},this))},showSettings:function(a){var b={my:elementor.config.is_rtl?"right+15 center":"left-15 center",of:a,collision:"fit",within:this.$el};this.ui.settings.addClass("elementor-open").position(b)},hideSettings:function(){this.ui.settings.removeClass("elementor-open")}});b.exports=e},{"elementor-behaviors/handle-edit-mode":5,"elementor-behaviors/handle-editor":6,"elementor-views/base-element":37}]},{},[1]);
|
assets/admin/js/lib/backbone.marionette.js
ADDED
@@ -0,0 +1,3962 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// MarionetteJS (Backbone.Marionette)
|
2 |
+
// ----------------------------------
|
3 |
+
// v2.4.5
|
4 |
+
//
|
5 |
+
// Copyright (c)2016 Derick Bailey, Muted Solutions, LLC.
|
6 |
+
// Distributed under MIT license
|
7 |
+
//
|
8 |
+
// http://marionettejs.com
|
9 |
+
|
10 |
+
|
11 |
+
/*!
|
12 |
+
* Includes BabySitter
|
13 |
+
* https://github.com/marionettejs/backbone.babysitter/
|
14 |
+
*
|
15 |
+
* Includes Wreqr
|
16 |
+
* https://github.com/marionettejs/backbone.wreqr/
|
17 |
+
*/
|
18 |
+
|
19 |
+
|
20 |
+
(function(root, factory) {
|
21 |
+
|
22 |
+
/* istanbul ignore next */
|
23 |
+
if (typeof define === 'function' && define.amd) {
|
24 |
+
define(['backbone', 'underscore'], function(Backbone, _) {
|
25 |
+
return (root.Marionette = root.Mn = factory(root, Backbone, _));
|
26 |
+
});
|
27 |
+
} else if (typeof exports !== 'undefined') {
|
28 |
+
var Backbone = require('backbone');
|
29 |
+
var _ = require('underscore');
|
30 |
+
module.exports = factory(root, Backbone, _);
|
31 |
+
} else {
|
32 |
+
root.Marionette = root.Mn = factory(root, root.Backbone, root._);
|
33 |
+
}
|
34 |
+
|
35 |
+
}(this, function(root, Backbone, _) {
|
36 |
+
'use strict';
|
37 |
+
|
38 |
+
/* istanbul ignore next */
|
39 |
+
// Backbone.BabySitter
|
40 |
+
// -------------------
|
41 |
+
// v0.1.11
|
42 |
+
//
|
43 |
+
// Copyright (c)2016 Derick Bailey, Muted Solutions, LLC.
|
44 |
+
// Distributed under MIT license
|
45 |
+
//
|
46 |
+
// http://github.com/marionettejs/backbone.babysitter
|
47 |
+
(function(Backbone, _) {
|
48 |
+
"use strict";
|
49 |
+
var previousChildViewContainer = Backbone.ChildViewContainer;
|
50 |
+
// BabySitter.ChildViewContainer
|
51 |
+
// -----------------------------
|
52 |
+
//
|
53 |
+
// Provide a container to store, retrieve and
|
54 |
+
// shut down child views.
|
55 |
+
Backbone.ChildViewContainer = function(Backbone, _) {
|
56 |
+
// Container Constructor
|
57 |
+
// ---------------------
|
58 |
+
var Container = function(views) {
|
59 |
+
this._views = {};
|
60 |
+
this._indexByModel = {};
|
61 |
+
this._indexByCustom = {};
|
62 |
+
this._updateLength();
|
63 |
+
_.each(views, this.add, this);
|
64 |
+
};
|
65 |
+
// Container Methods
|
66 |
+
// -----------------
|
67 |
+
_.extend(Container.prototype, {
|
68 |
+
// Add a view to this container. Stores the view
|
69 |
+
// by `cid` and makes it searchable by the model
|
70 |
+
// cid (and model itself). Optionally specify
|
71 |
+
// a custom key to store an retrieve the view.
|
72 |
+
add: function(view, customIndex) {
|
73 |
+
var viewCid = view.cid;
|
74 |
+
// store the view
|
75 |
+
this._views[viewCid] = view;
|
76 |
+
// index it by model
|
77 |
+
if (view.model) {
|
78 |
+
this._indexByModel[view.model.cid] = viewCid;
|
79 |
+
}
|
80 |
+
// index by custom
|
81 |
+
if (customIndex) {
|
82 |
+
this._indexByCustom[customIndex] = viewCid;
|
83 |
+
}
|
84 |
+
this._updateLength();
|
85 |
+
return this;
|
86 |
+
},
|
87 |
+
// Find a view by the model that was attached to
|
88 |
+
// it. Uses the model's `cid` to find it.
|
89 |
+
findByModel: function(model) {
|
90 |
+
return this.findByModelCid(model.cid);
|
91 |
+
},
|
92 |
+
// Find a view by the `cid` of the model that was attached to
|
93 |
+
// it. Uses the model's `cid` to find the view `cid` and
|
94 |
+
// retrieve the view using it.
|
95 |
+
findByModelCid: function(modelCid) {
|
96 |
+
var viewCid = this._indexByModel[modelCid];
|
97 |
+
return this.findByCid(viewCid);
|
98 |
+
},
|
99 |
+
// Find a view by a custom indexer.
|
100 |
+
findByCustom: function(index) {
|
101 |
+
var viewCid = this._indexByCustom[index];
|
102 |
+
return this.findByCid(viewCid);
|
103 |
+
},
|
104 |
+
// Find by index. This is not guaranteed to be a
|
105 |
+
// stable index.
|
106 |
+
findByIndex: function(index) {
|
107 |
+
return _.values(this._views)[index];
|
108 |
+
},
|
109 |
+
// retrieve a view by its `cid` directly
|
110 |
+
findByCid: function(cid) {
|
111 |
+
return this._views[cid];
|
112 |
+
},
|
113 |
+
// Remove a view
|
114 |
+
remove: function(view) {
|
115 |
+
var viewCid = view.cid;
|
116 |
+
// delete model index
|
117 |
+
if (view.model) {
|
118 |
+
delete this._indexByModel[view.model.cid];
|
119 |
+
}
|
120 |
+
// delete custom index
|
121 |
+
_.any(this._indexByCustom, function(cid, key) {
|
122 |
+
if (cid === viewCid) {
|
123 |
+
delete this._indexByCustom[key];
|
124 |
+
return true;
|
125 |
+
}
|
126 |
+
}, this);
|
127 |
+
// remove the view from the container
|
128 |
+
delete this._views[viewCid];
|
129 |
+
// update the length
|
130 |
+
this._updateLength();
|
131 |
+
return this;
|
132 |
+
},
|
133 |
+
// Call a method on every view in the container,
|
134 |
+
// passing parameters to the call method one at a
|
135 |
+
// time, like `function.call`.
|
136 |
+
call: function(method) {
|
137 |
+
this.apply(method, _.tail(arguments));
|
138 |
+
},
|
139 |
+
// Apply a method on every view in the container,
|
140 |
+
// passing parameters to the call method one at a
|
141 |
+
// time, like `function.apply`.
|
142 |
+
apply: function(method, args) {
|
143 |
+
_.each(this._views, function(view) {
|
144 |
+
if (_.isFunction(view[method])) {
|
145 |
+
view[method].apply(view, args || []);
|
146 |
+
}
|
147 |
+
});
|
148 |
+
},
|
149 |
+
// Update the `.length` attribute on this container
|
150 |
+
_updateLength: function() {
|
151 |
+
this.length = _.size(this._views);
|
152 |
+
}
|
153 |
+
});
|
154 |
+
// Borrowing this code from Backbone.Collection:
|
155 |
+
// http://backbonejs.org/docs/backbone.html#section-106
|
156 |
+
//
|
157 |
+
// Mix in methods from Underscore, for iteration, and other
|
158 |
+
// collection related features.
|
159 |
+
var methods = [ "forEach", "each", "map", "find", "detect", "filter", "select", "reject", "every", "all", "some", "any", "include", "contains", "invoke", "toArray", "first", "initial", "rest", "last", "without", "isEmpty", "pluck", "reduce" ];
|
160 |
+
_.each(methods, function(method) {
|
161 |
+
Container.prototype[method] = function() {
|
162 |
+
var views = _.values(this._views);
|
163 |
+
var args = [ views ].concat(_.toArray(arguments));
|
164 |
+
return _[method].apply(_, args);
|
165 |
+
};
|
166 |
+
});
|
167 |
+
// return the public API
|
168 |
+
return Container;
|
169 |
+
}(Backbone, _);
|
170 |
+
Backbone.ChildViewContainer.VERSION = "0.1.11";
|
171 |
+
Backbone.ChildViewContainer.noConflict = function() {
|
172 |
+
Backbone.ChildViewContainer = previousChildViewContainer;
|
173 |
+
return this;
|
174 |
+
};
|
175 |
+
return Backbone.ChildViewContainer;
|
176 |
+
})(Backbone, _);
|
177 |
+
|
178 |
+
/* istanbul ignore next */
|
179 |
+
// Backbone.Wreqr (Backbone.Marionette)
|
180 |
+
// ----------------------------------
|
181 |
+
// v1.3.6
|
182 |
+
//
|
183 |
+
// Copyright (c)2016 Derick Bailey, Muted Solutions, LLC.
|
184 |
+
// Distributed under MIT license
|
185 |
+
//
|
186 |
+
// http://github.com/marionettejs/backbone.wreqr
|
187 |
+
(function(Backbone, _) {
|
188 |
+
"use strict";
|
189 |
+
var previousWreqr = Backbone.Wreqr;
|
190 |
+
var Wreqr = Backbone.Wreqr = {};
|
191 |
+
Backbone.Wreqr.VERSION = "1.3.6";
|
192 |
+
Backbone.Wreqr.noConflict = function() {
|
193 |
+
Backbone.Wreqr = previousWreqr;
|
194 |
+
return this;
|
195 |
+
};
|
196 |
+
// Handlers
|
197 |
+
// --------
|
198 |
+
// A registry of functions to call, given a name
|
199 |
+
Wreqr.Handlers = function(Backbone, _) {
|
200 |
+
"use strict";
|
201 |
+
// Constructor
|
202 |
+
// -----------
|
203 |
+
var Handlers = function(options) {
|
204 |
+
this.options = options;
|
205 |
+
this._wreqrHandlers = {};
|
206 |
+
if (_.isFunction(this.initialize)) {
|
207 |
+
this.initialize(options);
|
208 |
+
}
|
209 |
+
};
|
210 |
+
Handlers.extend = Backbone.Model.extend;
|
211 |
+
// Instance Members
|
212 |
+
// ----------------
|
213 |
+
_.extend(Handlers.prototype, Backbone.Events, {
|
214 |
+
// Add multiple handlers using an object literal configuration
|
215 |
+
setHandlers: function(handlers) {
|
216 |
+
_.each(handlers, function(handler, name) {
|
217 |
+
var context = null;
|
218 |
+
if (_.isObject(handler) && !_.isFunction(handler)) {
|
219 |
+
context = handler.context;
|
220 |
+
handler = handler.callback;
|
221 |
+
}
|
222 |
+
this.setHandler(name, handler, context);
|
223 |
+
}, this);
|
224 |
+
},
|
225 |
+
// Add a handler for the given name, with an
|
226 |
+
// optional context to run the handler within
|
227 |
+
setHandler: function(name, handler, context) {
|
228 |
+
var config = {
|
229 |
+
callback: handler,
|
230 |
+
context: context
|
231 |
+
};
|
232 |
+
this._wreqrHandlers[name] = config;
|
233 |
+
this.trigger("handler:add", name, handler, context);
|
234 |
+
},
|
235 |
+
// Determine whether or not a handler is registered
|
236 |
+
hasHandler: function(name) {
|
237 |
+
return !!this._wreqrHandlers[name];
|
238 |
+
},
|
239 |
+
// Get the currently registered handler for
|
240 |
+
// the specified name. Throws an exception if
|
241 |
+
// no handler is found.
|
242 |
+
getHandler: function(name) {
|
243 |
+
var config = this._wreqrHandlers[name];
|
244 |
+
if (!config) {
|
245 |
+
return;
|
246 |
+
}
|
247 |
+
return function() {
|
248 |
+
return config.callback.apply(config.context, arguments);
|
249 |
+
};
|
250 |
+
},
|
251 |
+
// Remove a handler for the specified name
|
252 |
+
removeHandler: function(name) {
|
253 |
+
delete this._wreqrHandlers[name];
|
254 |
+
},
|
255 |
+
// Remove all handlers from this registry
|
256 |
+
removeAllHandlers: function() {
|
257 |
+
this._wreqrHandlers = {};
|
258 |
+
}
|
259 |
+
});
|
260 |
+
return Handlers;
|
261 |
+
}(Backbone, _);
|
262 |
+
// Wreqr.CommandStorage
|
263 |
+
// --------------------
|
264 |
+
//
|
265 |
+
// Store and retrieve commands for execution.
|
266 |
+
Wreqr.CommandStorage = function() {
|
267 |
+
"use strict";
|
268 |
+
// Constructor function
|
269 |
+
var CommandStorage = function(options) {
|
270 |
+
this.options = options;
|
271 |
+
this._commands = {};
|
272 |
+
if (_.isFunction(this.initialize)) {
|
273 |
+
this.initialize(options);
|
274 |
+
}
|
275 |
+
};
|
276 |
+
// Instance methods
|
277 |
+
_.extend(CommandStorage.prototype, Backbone.Events, {
|
278 |
+
// Get an object literal by command name, that contains
|
279 |
+
// the `commandName` and the `instances` of all commands
|
280 |
+
// represented as an array of arguments to process
|
281 |
+
getCommands: function(commandName) {
|
282 |
+
var commands = this._commands[commandName];
|
283 |
+
// we don't have it, so add it
|
284 |
+
if (!commands) {
|
285 |
+
// build the configuration
|
286 |
+
commands = {
|
287 |
+
command: commandName,
|
288 |
+
instances: []
|
289 |
+
};
|
290 |
+
// store it
|
291 |
+
this._commands[commandName] = commands;
|
292 |
+
}
|
293 |
+
return commands;
|
294 |
+
},
|
295 |
+
// Add a command by name, to the storage and store the
|
296 |
+
// args for the command
|
297 |
+
addCommand: function(commandName, args) {
|
298 |
+
var command = this.getCommands(commandName);
|
299 |
+
command.instances.push(args);
|
300 |
+
},
|
301 |
+
// Clear all commands for the given `commandName`
|
302 |
+
clearCommands: function(commandName) {
|
303 |
+
var command = this.getCommands(commandName);
|
304 |
+
command.instances = [];
|
305 |
+
}
|
306 |
+
});
|
307 |
+
return CommandStorage;
|
308 |
+
}();
|
309 |
+
// Wreqr.Commands
|
310 |
+
// --------------
|
311 |
+
//
|
312 |
+
// A simple command pattern implementation. Register a command
|
313 |
+
// handler and execute it.
|
314 |
+
Wreqr.Commands = function(Wreqr, _) {
|
315 |
+
"use strict";
|
316 |
+
return Wreqr.Handlers.extend({
|
317 |
+
// default storage type
|
318 |
+
storageType: Wreqr.CommandStorage,
|
319 |
+
constructor: function(options) {
|
320 |
+
this.options = options || {};
|
321 |
+
this._initializeStorage(this.options);
|
322 |
+
this.on("handler:add", this._executeCommands, this);
|
323 |
+
Wreqr.Handlers.prototype.constructor.apply(this, arguments);
|
324 |
+
},
|
325 |
+
// Execute a named command with the supplied args
|
326 |
+
execute: function(name) {
|
327 |
+
name = arguments[0];
|
328 |
+
var args = _.rest(arguments);
|
329 |
+
if (this.hasHandler(name)) {
|
330 |
+
this.getHandler(name).apply(this, args);
|
331 |
+
} else {
|
332 |
+
this.storage.addCommand(name, args);
|
333 |
+
}
|
334 |
+
},
|
335 |
+
// Internal method to handle bulk execution of stored commands
|
336 |
+
_executeCommands: function(name, handler, context) {
|
337 |
+
var command = this.storage.getCommands(name);
|
338 |
+
// loop through and execute all the stored command instances
|
339 |
+
_.each(command.instances, function(args) {
|
340 |
+
handler.apply(context, args);
|
341 |
+
});
|
342 |
+
this.storage.clearCommands(name);
|
343 |
+
},
|
344 |
+
// Internal method to initialize storage either from the type's
|
345 |
+
// `storageType` or the instance `options.storageType`.
|
346 |
+
_initializeStorage: function(options) {
|
347 |
+
var storage;
|
348 |
+
var StorageType = options.storageType || this.storageType;
|
349 |
+
if (_.isFunction(StorageType)) {
|
350 |
+
storage = new StorageType();
|
351 |
+
} else {
|
352 |
+
storage = StorageType;
|
353 |
+
}
|
354 |
+
this.storage = storage;
|
355 |
+
}
|
356 |
+
});
|
357 |
+
}(Wreqr, _);
|
358 |
+
// Wreqr.RequestResponse
|
359 |
+
// ---------------------
|
360 |
+
//
|
361 |
+
// A simple request/response implementation. Register a
|
362 |
+
// request handler, and return a response from it
|
363 |
+
Wreqr.RequestResponse = function(Wreqr, _) {
|
364 |
+
"use strict";
|
365 |
+
return Wreqr.Handlers.extend({
|
366 |
+
request: function(name) {
|
367 |
+
if (this.hasHandler(name)) {
|
368 |
+
return this.getHandler(name).apply(this, _.rest(arguments));
|
369 |
+
}
|
370 |
+
}
|
371 |
+
});
|
372 |
+
}(Wreqr, _);
|
373 |
+
// Event Aggregator
|
374 |
+
// ----------------
|
375 |
+
// A pub-sub object that can be used to decouple various parts
|
376 |
+
// of an application through event-driven architecture.
|
377 |
+
Wreqr.EventAggregator = function(Backbone, _) {
|
378 |
+
"use strict";
|
379 |
+
var EA = function() {};
|
380 |
+
// Copy the `extend` function used by Backbone's classes
|
381 |
+
EA.extend = Backbone.Model.extend;
|
382 |
+
// Copy the basic Backbone.Events on to the event aggregator
|
383 |
+
_.extend(EA.prototype, Backbone.Events);
|
384 |
+
return EA;
|
385 |
+
}(Backbone, _);
|
386 |
+
// Wreqr.Channel
|
387 |
+
// --------------
|
388 |
+
//
|
389 |
+
// An object that wraps the three messaging systems:
|
390 |
+
// EventAggregator, RequestResponse, Commands
|
391 |
+
Wreqr.Channel = function(Wreqr) {
|
392 |
+
"use strict";
|
393 |
+
var Channel = function(channelName) {
|
394 |
+
this.vent = new Backbone.Wreqr.EventAggregator();
|
395 |
+
this.reqres = new Backbone.Wreqr.RequestResponse();
|
396 |
+
this.commands = new Backbone.Wreqr.Commands();
|
397 |
+
this.channelName = channelName;
|
398 |
+
};
|
399 |
+
_.extend(Channel.prototype, {
|
400 |
+
// Remove all handlers from the messaging systems of this channel
|
401 |
+
reset: function() {
|
402 |
+
this.vent.off();
|
403 |
+
this.vent.stopListening();
|
404 |
+
this.reqres.removeAllHandlers();
|
405 |
+
this.commands.removeAllHandlers();
|
406 |
+
return this;
|
407 |
+
},
|
408 |
+
// Connect a hash of events; one for each messaging system
|
409 |
+
connectEvents: function(hash, context) {
|
410 |
+
this._connect("vent", hash, context);
|
411 |
+
return this;
|
412 |
+
},
|
413 |
+
connectCommands: function(hash, context) {
|
414 |
+
this._connect("commands", hash, context);
|
415 |
+
return this;
|
416 |
+
},
|
417 |
+
connectRequests: function(hash, context) {
|
418 |
+
this._connect("reqres", hash, context);
|
419 |
+
return this;
|
420 |
+
},
|
421 |
+
// Attach the handlers to a given message system `type`
|
422 |
+
_connect: function(type, hash, context) {
|
423 |
+
if (!hash) {
|
424 |
+
return;
|
425 |
+
}
|
426 |
+
context = context || this;
|
427 |
+
var method = type === "vent" ? "on" : "setHandler";
|
428 |
+
_.each(hash, function(fn, eventName) {
|
429 |
+
this[type][method](eventName, _.bind(fn, context));
|
430 |
+
}, this);
|
431 |
+
}
|
432 |
+
});
|
433 |
+
return Channel;
|
434 |
+
}(Wreqr);
|
435 |
+
// Wreqr.Radio
|
436 |
+
// --------------
|
437 |
+
//
|
438 |
+
// An object that lets you communicate with many channels.
|
439 |
+
Wreqr.radio = function(Wreqr, _) {
|
440 |
+
"use strict";
|
441 |
+
var Radio = function() {
|
442 |
+
this._channels = {};
|
443 |
+
this.vent = {};
|
444 |
+
this.commands = {};
|
445 |
+
this.reqres = {};
|
446 |
+
this._proxyMethods();
|
447 |
+
};
|
448 |
+
_.extend(Radio.prototype, {
|
449 |
+
channel: function(channelName) {
|
450 |
+
if (!channelName) {
|
451 |
+
throw new Error("Channel must receive a name");
|
452 |
+
}
|
453 |
+
return this._getChannel(channelName);
|
454 |
+
},
|
455 |
+
_getChannel: function(channelName) {
|
456 |
+
var channel = this._channels[channelName];
|
457 |
+
if (!channel) {
|
458 |
+
channel = new Wreqr.Channel(channelName);
|
459 |
+
this._channels[channelName] = channel;
|
460 |
+
}
|
461 |
+
return channel;
|
462 |
+
},
|
463 |
+
_proxyMethods: function() {
|
464 |
+
_.each([ "vent", "commands", "reqres" ], function(system) {
|
465 |
+
_.each(messageSystems[system], function(method) {
|
466 |
+
this[system][method] = proxyMethod(this, system, method);
|
467 |
+
}, this);
|
468 |
+
}, this);
|
469 |
+
}
|
470 |
+
});
|
471 |
+
var messageSystems = {
|
472 |
+
vent: [ "on", "off", "trigger", "once", "stopListening", "listenTo", "listenToOnce" ],
|
473 |
+
commands: [ "execute", "setHandler", "setHandlers", "removeHandler", "removeAllHandlers" ],
|
474 |
+
reqres: [ "request", "setHandler", "setHandlers", "removeHandler", "removeAllHandlers" ]
|
475 |
+
};
|
476 |
+
var proxyMethod = function(radio, system, method) {
|
477 |
+
return function(channelName) {
|
478 |
+
var messageSystem = radio._getChannel(channelName)[system];
|
479 |
+
return messageSystem[method].apply(messageSystem, _.rest(arguments));
|
480 |
+
};
|
481 |
+
};
|
482 |
+
return new Radio();
|
483 |
+
}(Wreqr, _);
|
484 |
+
return Backbone.Wreqr;
|
485 |
+
})(Backbone, _);
|
486 |
+
|
487 |
+
var previousMarionette = root.Marionette;
|
488 |
+
var previousMn = root.Mn;
|
489 |
+
|
490 |
+
var Marionette = Backbone.Marionette = {};
|
491 |
+
|
492 |
+
Marionette.VERSION = '2.4.5';
|
493 |
+
|
494 |
+
Marionette.noConflict = function() {
|
495 |
+
root.Marionette = previousMarionette;
|
496 |
+
root.Mn = previousMn;
|
497 |
+
return this;
|
498 |
+
};
|
499 |
+
|
500 |
+
Backbone.Marionette = Marionette;
|
501 |
+
|
502 |
+
// Get the Deferred creator for later use
|
503 |
+
Marionette.Deferred = Backbone.$.Deferred;
|
504 |
+
|
505 |
+
/* jshint unused: false *//* global console */
|
506 |
+
|
507 |
+
// Helpers
|
508 |
+
// -------
|
509 |
+
|
510 |
+
// Marionette.extend
|
511 |
+
// -----------------
|
512 |
+
|
513 |
+
// Borrow the Backbone `extend` method so we can use it as needed
|
514 |
+
Marionette.extend = Backbone.Model.extend;
|
515 |
+
|
516 |
+
// Marionette.isNodeAttached
|
517 |
+
// -------------------------
|
518 |
+
|
519 |
+
// Determine if `el` is a child of the document
|
520 |
+
Marionette.isNodeAttached = function(el) {
|
521 |
+
return Backbone.$.contains(document.documentElement, el);
|
522 |
+
};
|
523 |
+
|
524 |
+
// Merge `keys` from `options` onto `this`
|
525 |
+
Marionette.mergeOptions = function(options, keys) {
|
526 |
+
if (!options) { return; }
|
527 |
+
_.extend(this, _.pick(options, keys));
|
528 |
+
};
|
529 |
+
|
530 |
+
// Marionette.getOption
|
531 |
+
// --------------------
|
532 |
+
|
533 |
+
// Retrieve an object, function or other value from a target
|
534 |
+
// object or its `options`, with `options` taking precedence.
|
535 |
+
Marionette.getOption = function(target, optionName) {
|
536 |
+
if (!target || !optionName) { return; }
|
537 |
+
if (target.options && (target.options[optionName] !== undefined)) {
|
538 |
+
return target.options[optionName];
|
539 |
+
} else {
|
540 |
+
return target[optionName];
|
541 |
+
}
|
542 |
+
};
|
543 |
+
|
544 |
+
// Proxy `Marionette.getOption`
|
545 |
+
Marionette.proxyGetOption = function(optionName) {
|
546 |
+
return Marionette.getOption(this, optionName);
|
547 |
+
};
|
548 |
+
|
549 |
+
// Similar to `_.result`, this is a simple helper
|
550 |
+
// If a function is provided we call it with context
|
551 |
+
// otherwise just return the value. If the value is
|
552 |
+
// undefined return a default value
|
553 |
+
Marionette._getValue = function(value, context, params) {
|
554 |
+
if (_.isFunction(value)) {
|
555 |
+
value = params ? value.apply(context, params) : value.call(context);
|
556 |
+
}
|
557 |
+
return value;
|
558 |
+
};
|
559 |
+
|
560 |
+
// Marionette.normalizeMethods
|
561 |
+
// ----------------------
|
562 |
+
|
563 |
+
// Pass in a mapping of events => functions or function names
|
564 |
+
// and return a mapping of events => functions
|
565 |
+
Marionette.normalizeMethods = function(hash) {
|
566 |
+
return _.reduce(hash, function(normalizedHash, method, name) {
|
567 |
+
if (!_.isFunction(method)) {
|
568 |
+
method = this[method];
|
569 |
+
}
|
570 |
+
if (method) {
|
571 |
+
normalizedHash[name] = method;
|
572 |
+
}
|
573 |
+
return normalizedHash;
|
574 |
+
}, {}, this);
|
575 |
+
};
|
576 |
+
|
577 |
+
// utility method for parsing @ui. syntax strings
|
578 |
+
// into associated selector
|
579 |
+
Marionette.normalizeUIString = function(uiString, ui) {
|
580 |
+
return uiString.replace(/@ui\.[a-zA-Z-_$0-9]*/g, function(r) {
|
581 |
+
return ui[r.slice(4)];
|
582 |
+
});
|
583 |
+
};
|
584 |
+
|
585 |
+
// allows for the use of the @ui. syntax within
|
586 |
+
// a given key for triggers and events
|
587 |
+
// swaps the @ui with the associated selector.
|
588 |
+
// Returns a new, non-mutated, parsed events hash.
|
589 |
+
Marionette.normalizeUIKeys = function(hash, ui) {
|
590 |
+
return _.reduce(hash, function(memo, val, key) {
|
591 |
+
var normalizedKey = Marionette.normalizeUIString(key, ui);
|
592 |
+
memo[normalizedKey] = val;
|
593 |
+
return memo;
|
594 |
+
}, {});
|
595 |
+
};
|
596 |
+
|
597 |
+
// allows for the use of the @ui. syntax within
|
598 |
+
// a given value for regions
|
599 |
+
// swaps the @ui with the associated selector
|
600 |
+
Marionette.normalizeUIValues = function(hash, ui, properties) {
|
601 |
+
_.each(hash, function(val, key) {
|
602 |
+
if (_.isString(val)) {
|
603 |
+
hash[key] = Marionette.normalizeUIString(val, ui);
|
604 |
+
} else if (_.isObject(val) && _.isArray(properties)) {
|
605 |
+
_.extend(val, Marionette.normalizeUIValues(_.pick(val, properties), ui));
|
606 |
+
/* Value is an object, and we got an array of embedded property names to normalize. */
|
607 |
+
_.each(properties, function(property) {
|
608 |
+
var propertyVal = val[property];
|
609 |
+
if (_.isString(propertyVal)) {
|
610 |
+
val[property] = Marionette.normalizeUIString(propertyVal, ui);
|
611 |
+
}
|
612 |
+
});
|
613 |
+
}
|
614 |
+
});
|
615 |
+
return hash;
|
616 |
+
};
|
617 |
+
|
618 |
+
// Mix in methods from Underscore, for iteration, and other
|
619 |
+
// collection related features.
|
620 |
+
// Borrowing this code from Backbone.Collection:
|
621 |
+
// http://backbonejs.org/docs/backbone.html#section-121
|
622 |
+
Marionette.actAsCollection = function(object, listProperty) {
|
623 |
+
var methods = ['forEach', 'each', 'map', 'find', 'detect', 'filter',
|
624 |
+
'select', 'reject', 'every', 'all', 'some', 'any', 'include',
|
625 |
+
'contains', 'invoke', 'toArray', 'first', 'initial', 'rest',
|
626 |
+
'last', 'without', 'isEmpty', 'pluck'];
|
627 |
+
|
628 |
+
_.each(methods, function(method) {
|
629 |
+
object[method] = function() {
|
630 |
+
var list = _.values(_.result(this, listProperty));
|
631 |
+
var args = [list].concat(_.toArray(arguments));
|
632 |
+
return _[method].apply(_, args);
|
633 |
+
};
|
634 |
+
});
|
635 |
+
};
|
636 |
+
|
637 |
+
var deprecate = Marionette.deprecate = function(message, test) {
|
638 |
+
if (_.isObject(message)) {
|
639 |
+
message = (
|
640 |
+
message.prev + ' is going to be removed in the future. ' +
|
641 |
+
'Please use ' + message.next + ' instead.' +
|
642 |
+
(message.url ? ' See: ' + message.url : '')
|
643 |
+
);
|
644 |
+
}
|
645 |
+
|
646 |
+
if ((test === undefined || !test) && !deprecate._cache[message]) {
|
647 |
+
deprecate._warn('Deprecation warning: ' + message);
|
648 |
+
deprecate._cache[message] = true;
|
649 |
+
}
|
650 |
+
};
|
651 |
+
|
652 |
+
deprecate._console = typeof console !== 'undefined' ? console : {};
|
653 |
+
deprecate._warn = function() {
|
654 |
+
var warn = deprecate._console.warn || deprecate._console.log || function() {};
|
655 |
+
return warn.apply(deprecate._console, arguments);
|
656 |
+
};
|
657 |
+
deprecate._cache = {};
|
658 |
+
|
659 |
+
/* jshint maxstatements: 14, maxcomplexity: 7 */
|
660 |
+
|
661 |
+
// Trigger Method
|
662 |
+
// --------------
|
663 |
+
|
664 |
+
Marionette._triggerMethod = (function() {
|
665 |
+
// split the event name on the ":"
|
666 |
+
var splitter = /(^|:)(\w)/gi;
|
667 |
+
|
668 |
+
// take the event section ("section1:section2:section3")
|
669 |
+
// and turn it in to uppercase name
|
670 |
+
function getEventName(match, prefix, eventName) {
|
671 |
+
return eventName.toUpperCase();
|
672 |
+
}
|
673 |
+
|
674 |
+
return function(context, event, args) {
|
675 |
+
var noEventArg = arguments.length < 3;
|
676 |
+
if (noEventArg) {
|
677 |
+
args = event;
|
678 |
+
event = args[0];
|
679 |
+
}
|
680 |
+
|
681 |
+
// get the method name from the event name
|
682 |
+
var methodName = 'on' + event.replace(splitter, getEventName);
|
683 |
+
var method = context[methodName];
|
684 |
+
var result;
|
685 |
+
|
686 |
+
// call the onMethodName if it exists
|
687 |
+
if (_.isFunction(method)) {
|
688 |
+
// pass all args, except the event name
|
689 |
+
result = method.apply(context, noEventArg ? _.rest(args) : args);
|
690 |
+
}
|
691 |
+
|
692 |
+
// trigger the event, if a trigger method exists
|
693 |
+
if (_.isFunction(context.trigger)) {
|
694 |
+
if (noEventArg + args.length > 1) {
|
695 |
+
context.trigger.apply(context, noEventArg ? args : [event].concat(_.drop(args, 0)));
|
696 |
+
} else {
|
697 |
+
context.trigger(event);
|
698 |
+
}
|
699 |
+
}
|
700 |
+
|
701 |
+
return result;
|
702 |
+
};
|
703 |
+
})();
|
704 |
+
|
705 |
+
// Trigger an event and/or a corresponding method name. Examples:
|
706 |
+
//
|
707 |
+
// `this.triggerMethod("foo")` will trigger the "foo" event and
|
708 |
+
// call the "onFoo" method.
|
709 |
+
//
|
710 |
+
// `this.triggerMethod("foo:bar")` will trigger the "foo:bar" event and
|
711 |
+
// call the "onFooBar" method.
|
712 |
+
Marionette.triggerMethod = function(event) {
|
713 |
+
return Marionette._triggerMethod(this, arguments);
|
714 |
+
};
|
715 |
+
|
716 |
+
// triggerMethodOn invokes triggerMethod on a specific context
|
717 |
+
//
|
718 |
+
// e.g. `Marionette.triggerMethodOn(view, 'show')`
|
719 |
+
// will trigger a "show" event or invoke onShow the view.
|
720 |
+
Marionette.triggerMethodOn = function(context) {
|
721 |
+
var fnc = _.isFunction(context.triggerMethod) ?
|
722 |
+
context.triggerMethod :
|
723 |
+
Marionette.triggerMethod;
|
724 |
+
|
725 |
+
return fnc.apply(context, _.rest(arguments));
|
726 |
+
};
|
727 |
+
|
728 |
+
// DOM Refresh
|
729 |
+
// -----------
|
730 |
+
|
731 |
+
// Monitor a view's state, and after it has been rendered and shown
|
732 |
+
// in the DOM, trigger a "dom:refresh" event every time it is
|
733 |
+
// re-rendered.
|
734 |
+
|
735 |
+
Marionette.MonitorDOMRefresh = function(view) {
|
736 |
+
if (view._isDomRefreshMonitored) { return; }
|
737 |
+
view._isDomRefreshMonitored = true;
|
738 |
+
|
739 |
+
// track when the view has been shown in the DOM,
|
740 |
+
// using a Marionette.Region (or by other means of triggering "show")
|
741 |
+
function handleShow() {
|
742 |
+
view._isShown = true;
|
743 |
+
triggerDOMRefresh();
|
744 |
+
}
|
745 |
+
|
746 |
+
// track when the view has been rendered
|
747 |
+
function handleRender() {
|
748 |
+
view._isRendered = true;
|
749 |
+
triggerDOMRefresh();
|
750 |
+
}
|
751 |
+
|
752 |
+
// Trigger the "dom:refresh" event and corresponding "onDomRefresh" method
|
753 |
+
function triggerDOMRefresh() {
|
754 |
+
if (view._isShown && view._isRendered && Marionette.isNodeAttached(view.el)) {
|
755 |
+
Marionette.triggerMethodOn(view, 'dom:refresh', view);
|
756 |
+
}
|
757 |
+
}
|
758 |
+
|
759 |
+
view.on({
|
760 |
+
show: handleShow,
|
761 |
+
render: handleRender
|
762 |
+
});
|
763 |
+
};
|
764 |
+
|
765 |
+
/* jshint maxparams: 5 */
|
766 |
+
|
767 |
+
// Bind Entity Events & Unbind Entity Events
|
768 |
+
// -----------------------------------------
|
769 |
+
//
|
770 |
+
// These methods are used to bind/unbind a backbone "entity" (e.g. collection/model)
|
771 |
+
// to methods on a target object.
|
772 |
+
//
|
773 |
+
// The first parameter, `target`, must have the Backbone.Events module mixed in.
|
774 |
+
//
|
775 |
+
// The second parameter is the `entity` (Backbone.Model, Backbone.Collection or
|
776 |
+
// any object that has Backbone.Events mixed in) to bind the events from.
|
777 |
+
//
|
778 |
+
// The third parameter is a hash of { "event:name": "eventHandler" }
|
779 |
+
// configuration. Multiple handlers can be separated by a space. A
|
780 |
+
// function can be supplied instead of a string handler name.
|
781 |
+
|
782 |
+
(function(Marionette) {
|
783 |
+
'use strict';
|
784 |
+
|
785 |
+
// Bind the event to handlers specified as a string of
|
786 |
+
// handler names on the target object
|
787 |
+
function bindFromStrings(target, entity, evt, methods) {
|
788 |
+
var methodNames = methods.split(/\s+/);
|
789 |
+
|
790 |
+
_.each(methodNames, function(methodName) {
|
791 |
+
|
792 |
+
var method = target[methodName];
|
793 |
+
if (!method) {
|
794 |
+
throw new Marionette.Error('Method "' + methodName +
|
795 |
+
'" was configured as an event handler, but does not exist.');
|
796 |
+
}
|
797 |
+
|
798 |
+
target.listenTo(entity, evt, method);
|
799 |
+
});
|
800 |
+
}
|
801 |
+
|
802 |
+
// Bind the event to a supplied callback function
|
803 |
+
function bindToFunction(target, entity, evt, method) {
|
804 |
+
target.listenTo(entity, evt, method);
|
805 |
+
}
|
806 |
+
|
807 |
+
// Bind the event to handlers specified as a string of
|
808 |
+
// handler names on the target object
|
809 |
+
function unbindFromStrings(target, entity, evt, methods) {
|
810 |
+
var methodNames = methods.split(/\s+/);
|
811 |
+
|
812 |
+
_.each(methodNames, function(methodName) {
|
813 |
+
var method = target[methodName];
|
814 |
+
target.stopListening(entity, evt, method);
|
815 |
+
});
|
816 |
+
}
|
817 |
+
|
818 |
+
// Bind the event to a supplied callback function
|
819 |
+
function unbindToFunction(target, entity, evt, method) {
|
820 |
+
target.stopListening(entity, evt, method);
|
821 |
+
}
|
822 |
+
|
823 |
+
// generic looping function
|
824 |
+
function iterateEvents(target, entity, bindings, functionCallback, stringCallback) {
|
825 |
+
if (!entity || !bindings) { return; }
|
826 |
+
|
827 |
+
// type-check bindings
|
828 |
+
if (!_.isObject(bindings)) {
|
829 |
+
throw new Marionette.Error({
|
830 |
+
message: 'Bindings must be an object or function.',
|
831 |
+
url: 'marionette.functions.html#marionettebindentityevents'
|
832 |
+
});
|
833 |
+
}
|
834 |
+
|
835 |
+
// allow the bindings to be a function
|
836 |
+
bindings = Marionette._getValue(bindings, target);
|
837 |
+
|
838 |
+
// iterate the bindings and bind them
|
839 |
+
_.each(bindings, function(methods, evt) {
|
840 |
+
|
841 |
+
// allow for a function as the handler,
|
842 |
+
// or a list of event names as a string
|
843 |
+
if (_.isFunction(methods)) {
|
844 |
+
functionCallback(target, entity, evt, methods);
|
845 |
+
} else {
|
846 |
+
stringCallback(target, entity, evt, methods);
|
847 |
+
}
|
848 |
+
|
849 |
+
});
|
850 |
+
}
|
851 |
+
|
852 |
+
// Export Public API
|
853 |
+
Marionette.bindEntityEvents = function(target, entity, bindings) {
|
854 |
+
iterateEvents(target, entity, bindings, bindToFunction, bindFromStrings);
|
855 |
+
};
|
856 |
+
|
857 |
+
Marionette.unbindEntityEvents = function(target, entity, bindings) {
|
858 |
+
iterateEvents(target, entity, bindings, unbindToFunction, unbindFromStrings);
|
859 |
+
};
|
860 |
+
|
861 |
+
// Proxy `bindEntityEvents`
|
862 |
+
Marionette.proxyBindEntityEvents = function(entity, bindings) {
|
863 |
+
return Marionette.bindEntityEvents(this, entity, bindings);
|
864 |
+
};
|
865 |
+
|
866 |
+
// Proxy `unbindEntityEvents`
|
867 |
+
Marionette.proxyUnbindEntityEvents = function(entity, bindings) {
|
868 |
+
return Marionette.unbindEntityEvents(this, entity, bindings);
|
869 |
+
};
|
870 |
+
})(Marionette);
|
871 |
+
|
872 |
+
|
873 |
+
// Error
|
874 |
+
// -----
|
875 |
+
|
876 |
+
var errorProps = ['description', 'fileName', 'lineNumber', 'name', 'message', 'number'];
|
877 |
+
|
878 |
+
Marionette.Error = Marionette.extend.call(Error, {
|
879 |
+
urlRoot: 'http://marionettejs.com/docs/v' + Marionette.VERSION + '/',
|
880 |
+
|
881 |
+
constructor: function(message, options) {
|
882 |
+
if (_.isObject(message)) {
|
883 |
+
options = message;
|
884 |
+
message = options.message;
|
885 |
+
} else if (!options) {
|
886 |
+
options = {};
|
887 |
+
}
|
888 |
+
|
889 |
+
var error = Error.call(this, message);
|
890 |
+
_.extend(this, _.pick(error, errorProps), _.pick(options, errorProps));
|
891 |
+
|
892 |
+
this.captureStackTrace();
|
893 |
+
|
894 |
+
if (options.url) {
|
895 |
+
this.url = this.urlRoot + options.url;
|
896 |
+
}
|
897 |
+
},
|
898 |
+
|
899 |
+
captureStackTrace: function() {
|
900 |
+
if (Error.captureStackTrace) {
|
901 |
+
Error.captureStackTrace(this, Marionette.Error);
|
902 |
+
}
|
903 |
+
},
|
904 |
+
|
905 |
+
toString: function() {
|
906 |
+
return this.name + ': ' + this.message + (this.url ? ' See: ' + this.url : '');
|
907 |
+
}
|
908 |
+
});
|
909 |
+
|
910 |
+
Marionette.Error.extend = Marionette.extend;
|
911 |
+
|
912 |
+
// Callbacks
|
913 |
+
// ---------
|
914 |
+
|
915 |
+
// A simple way of managing a collection of callbacks
|
916 |
+
// and executing them at a later point in time, using jQuery's
|
917 |
+
// `Deferred` object.
|
918 |
+
Marionette.Callbacks = function() {
|
919 |
+
this._deferred = Marionette.Deferred();
|
920 |
+
this._callbacks = [];
|
921 |
+
};
|
922 |
+
|
923 |
+
_.extend(Marionette.Callbacks.prototype, {
|
924 |
+
|
925 |
+
// Add a callback to be executed. Callbacks added here are
|
926 |
+
// guaranteed to execute, even if they are added after the
|
927 |
+
// `run` method is called.
|
928 |
+
add: function(callback, contextOverride) {
|
929 |
+
var promise = _.result(this._deferred, 'promise');
|
930 |
+
|
931 |
+
this._callbacks.push({cb: callback, ctx: contextOverride});
|
932 |
+
|
933 |
+
promise.then(function(args) {
|
934 |
+
if (contextOverride) { args.context = contextOverride; }
|
935 |
+
callback.call(args.context, args.options);
|
936 |
+
});
|
937 |
+
},
|
938 |
+
|
939 |
+
// Run all registered callbacks with the context specified.
|
940 |
+
// Additional callbacks can be added after this has been run
|
941 |
+
// and they will still be executed.
|
942 |
+
run: function(options, context) {
|
943 |
+
this._deferred.resolve({
|
944 |
+
options: options,
|
945 |
+
context: context
|
946 |
+
});
|
947 |
+
},
|
948 |
+
|
949 |
+
// Resets the list of callbacks to be run, allowing the same list
|
950 |
+
// to be run multiple times - whenever the `run` method is called.
|
951 |
+
reset: function() {
|
952 |
+
var callbacks = this._callbacks;
|
953 |
+
this._deferred = Marionette.Deferred();
|
954 |
+
this._callbacks = [];
|
955 |
+
|
956 |
+
_.each(callbacks, function(cb) {
|
957 |
+
this.add(cb.cb, cb.ctx);
|
958 |
+
}, this);
|
959 |
+
}
|
960 |
+
});
|
961 |
+
|
962 |
+
// Controller
|
963 |
+
// ----------
|
964 |
+
|
965 |
+
// A multi-purpose object to use as a controller for
|
966 |
+
// modules and routers, and as a mediator for workflow
|
967 |
+
// and coordination of other objects, views, and more.
|
968 |
+
Marionette.Controller = function(options) {
|
969 |
+
this.options = options || {};
|
970 |
+
|
971 |
+
if (_.isFunction(this.initialize)) {
|
972 |
+
this.initialize(this.options);
|
973 |
+
}
|
974 |
+
};
|
975 |
+
|
976 |
+
Marionette.Controller.extend = Marionette.extend;
|
977 |
+
|
978 |
+
// Controller Methods
|
979 |
+
// --------------
|
980 |
+
|
981 |
+
// Ensure it can trigger events with Backbone.Events
|
982 |
+
_.extend(Marionette.Controller.prototype, Backbone.Events, {
|
983 |
+
destroy: function() {
|
984 |
+
Marionette._triggerMethod(this, 'before:destroy', arguments);
|
985 |
+
Marionette._triggerMethod(this, 'destroy', arguments);
|
986 |
+
|
987 |
+
this.stopListening();
|
988 |
+
this.off();
|
989 |
+
return this;
|
990 |
+
},
|
991 |
+
|
992 |
+
// import the `triggerMethod` to trigger events with corresponding
|
993 |
+
// methods if the method exists
|
994 |
+
triggerMethod: Marionette.triggerMethod,
|
995 |
+
|
996 |
+
// A handy way to merge options onto the instance
|
997 |
+
mergeOptions: Marionette.mergeOptions,
|
998 |
+
|
999 |
+
// Proxy `getOption` to enable getting options from this or this.options by name.
|
1000 |
+
getOption: Marionette.proxyGetOption
|
1001 |
+
|
1002 |
+
});
|
1003 |
+
|
1004 |
+
// Object
|
1005 |
+
// ------
|
1006 |
+
|
1007 |
+
// A Base Class that other Classes should descend from.
|
1008 |
+
// Object borrows many conventions and utilities from Backbone.
|
1009 |
+
Marionette.Object = function(options) {
|
1010 |
+
this.options = _.extend({}, _.result(this, 'options'), options);
|
1011 |
+
|
1012 |
+
this.initialize.apply(this, arguments);
|
1013 |
+
};
|
1014 |
+
|
1015 |
+
Marionette.Object.extend = Marionette.extend;
|
1016 |
+
|
1017 |
+
// Object Methods
|
1018 |
+
// --------------
|
1019 |
+
|
1020 |
+
// Ensure it can trigger events with Backbone.Events
|
1021 |
+
_.extend(Marionette.Object.prototype, Backbone.Events, {
|
1022 |
+
|
1023 |
+
//this is a noop method intended to be overridden by classes that extend from this base
|
1024 |
+
initialize: function() {},
|
1025 |
+
|
1026 |
+
destroy: function(options) {
|
1027 |
+
options = options || {};
|
1028 |
+
|
1029 |
+
this.triggerMethod('before:destroy', options);
|
1030 |
+
this.triggerMethod('destroy', options);
|
1031 |
+
this.stopListening();
|
1032 |
+
|
1033 |
+
return this;
|
1034 |
+
},
|
1035 |
+
|
1036 |
+
// Import the `triggerMethod` to trigger events with corresponding
|
1037 |
+
// methods if the method exists
|
1038 |
+
triggerMethod: Marionette.triggerMethod,
|
1039 |
+
|
1040 |
+
// A handy way to merge options onto the instance
|
1041 |
+
mergeOptions: Marionette.mergeOptions,
|
1042 |
+
|
1043 |
+
// Proxy `getOption` to enable getting options from this or this.options by name.
|
1044 |
+
getOption: Marionette.proxyGetOption,
|
1045 |
+
|
1046 |
+
// Proxy `bindEntityEvents` to enable binding view's events from another entity.
|
1047 |
+
bindEntityEvents: Marionette.proxyBindEntityEvents,
|
1048 |
+
|
1049 |
+
// Proxy `unbindEntityEvents` to enable unbinding view's events from another entity.
|
1050 |
+
unbindEntityEvents: Marionette.proxyUnbindEntityEvents
|
1051 |
+
});
|
1052 |
+
|
1053 |
+
/* jshint maxcomplexity: 16, maxstatements: 45, maxlen: 120 */
|
1054 |
+
|
1055 |
+
// Region
|
1056 |
+
// ------
|
1057 |
+
|
1058 |
+
// Manage the visual regions of your composite application. See
|
1059 |
+
// http://lostechies.com/derickbailey/2011/12/12/composite-js-apps-regions-and-region-managers/
|
1060 |
+
|
1061 |
+
Marionette.Region = Marionette.Object.extend({
|
1062 |
+
constructor: function(options) {
|
1063 |
+
|
1064 |
+
// set options temporarily so that we can get `el`.
|
1065 |
+
// options will be overriden by Object.constructor
|
1066 |
+
this.options = options || {};
|
1067 |
+
this.el = this.getOption('el');
|
1068 |
+
|
1069 |
+
// Handle when this.el is passed in as a $ wrapped element.
|
1070 |
+
this.el = this.el instanceof Backbone.$ ? this.el[0] : this.el;
|
1071 |
+
|
1072 |
+
if (!this.el) {
|
1073 |
+
throw new Marionette.Error({
|
1074 |
+
name: 'NoElError',
|
1075 |
+
message: 'An "el" must be specified for a region.'
|
1076 |
+
});
|
1077 |
+
}
|
1078 |
+
|
1079 |
+
this.$el = this.getEl(this.el);
|
1080 |
+
Marionette.Object.call(this, options);
|
1081 |
+
},
|
1082 |
+
|
1083 |
+
// Displays a backbone view instance inside of the region.
|
1084 |
+
// Handles calling the `render` method for you. Reads content
|
1085 |
+
// directly from the `el` attribute. Also calls an optional
|
1086 |
+
// `onShow` and `onDestroy` method on your view, just after showing
|
1087 |
+
// or just before destroying the view, respectively.
|
1088 |
+
// The `preventDestroy` option can be used to prevent a view from
|
1089 |
+
// the old view being destroyed on show.
|
1090 |
+
// The `forceShow` option can be used to force a view to be
|
1091 |
+
// re-rendered if it's already shown in the region.
|
1092 |
+
show: function(view, options) {
|
1093 |
+
if (!this._ensureElement()) {
|
1094 |
+
return;
|
1095 |
+
}
|
1096 |
+
|
1097 |
+
this._ensureViewIsIntact(view);
|
1098 |
+
Marionette.MonitorDOMRefresh(view);
|
1099 |
+
|
1100 |
+
var showOptions = options || {};
|
1101 |
+
var isDifferentView = view !== this.currentView;
|
1102 |
+
var preventDestroy = !!showOptions.preventDestroy;
|
1103 |
+
var forceShow = !!showOptions.forceShow;
|
1104 |
+
|
1105 |
+
// We are only changing the view if there is a current view to change to begin with
|
1106 |
+
var isChangingView = !!this.currentView;
|
1107 |
+
|
1108 |
+
// Only destroy the current view if we don't want to `preventDestroy` and if
|
1109 |
+
// the view given in the first argument is different than `currentView`
|
1110 |
+
var _shouldDestroyView = isDifferentView && !preventDestroy;
|
1111 |
+
|
1112 |
+
// Only show the view given in the first argument if it is different than
|
1113 |
+
// the current view or if we want to re-show the view. Note that if
|
1114 |
+
// `_shouldDestroyView` is true, then `_shouldShowView` is also necessarily true.
|
1115 |
+
var _shouldShowView = isDifferentView || forceShow;
|
1116 |
+
|
1117 |
+
if (isChangingView) {
|
1118 |
+
this.triggerMethod('before:swapOut', this.currentView, this, options);
|
1119 |
+
}
|
1120 |
+
|
1121 |
+
if (this.currentView && isDifferentView) {
|
1122 |
+
delete this.currentView._parent;
|
1123 |
+
}
|
1124 |
+
|
1125 |
+
if (_shouldDestroyView) {
|
1126 |
+
this.empty();
|
1127 |
+
|
1128 |
+
// A `destroy` event is attached to the clean up manually removed views.
|
1129 |
+
// We need to detach this event when a new view is going to be shown as it
|
1130 |
+
// is no longer relevant.
|
1131 |
+
} else if (isChangingView && _shouldShowView) {
|
1132 |
+
this.currentView.off('destroy', this.empty, this);
|
1133 |
+
}
|
1134 |
+
|
1135 |
+
if (_shouldShowView) {
|
1136 |
+
|
1137 |
+
// We need to listen for if a view is destroyed
|
1138 |
+
// in a way other than through the region.
|
1139 |
+
// If this happens we need to remove the reference
|
1140 |
+
// to the currentView since once a view has been destroyed
|
1141 |
+
// we can not reuse it.
|
1142 |
+
view.once('destroy', this.empty, this);
|
1143 |
+
|
1144 |
+
// make this region the view's parent,
|
1145 |
+
// It's important that this parent binding happens before rendering
|
1146 |
+
// so that any events the child may trigger during render can also be
|
1147 |
+
// triggered on the child's ancestor views
|
1148 |
+
view._parent = this;
|
1149 |
+
this._renderView(view);
|
1150 |
+
|
1151 |
+
if (isChangingView) {
|
1152 |
+
this.triggerMethod('before:swap', view, this, options);
|
1153 |
+
}
|
1154 |
+
|
1155 |
+
this.triggerMethod('before:show', view, this, options);
|
1156 |
+
Marionette.triggerMethodOn(view, 'before:show', view, this, options);
|
1157 |
+
|
1158 |
+
if (isChangingView) {
|
1159 |
+
this.triggerMethod('swapOut', this.currentView, this, options);
|
1160 |
+
}
|
1161 |
+
|
1162 |
+
// An array of views that we're about to display
|
1163 |
+
var attachedRegion = Marionette.isNodeAttached(this.el);
|
1164 |
+
|
1165 |
+
// The views that we're about to attach to the document
|
1166 |
+
// It's important that we prevent _getNestedViews from being executed unnecessarily
|
1167 |
+
// as it's a potentially-slow method
|
1168 |
+
var displayedViews = [];
|
1169 |
+
|
1170 |
+
var attachOptions = _.extend({
|
1171 |
+
triggerBeforeAttach: this.triggerBeforeAttach,
|
1172 |
+
triggerAttach: this.triggerAttach
|
1173 |
+
}, showOptions);
|
1174 |
+
|
1175 |
+
if (attachedRegion && attachOptions.triggerBeforeAttach) {
|
1176 |
+
displayedViews = this._displayedViews(view);
|
1177 |
+
this._triggerAttach(displayedViews, 'before:');
|
1178 |
+
}
|
1179 |
+
|
1180 |
+
this.attachHtml(view);
|
1181 |
+
this.currentView = view;
|
1182 |
+
|
1183 |
+
if (attachedRegion && attachOptions.triggerAttach) {
|
1184 |
+
displayedViews = this._displayedViews(view);
|
1185 |
+
this._triggerAttach(displayedViews);
|
1186 |
+
}
|
1187 |
+
|
1188 |
+
if (isChangingView) {
|
1189 |
+
this.triggerMethod('swap', view, this, options);
|
1190 |
+
}
|
1191 |
+
|
1192 |
+
this.triggerMethod('show', view, this, options);
|
1193 |
+
Marionette.triggerMethodOn(view, 'show', view, this, options);
|
1194 |
+
|
1195 |
+
return this;
|
1196 |
+
}
|
1197 |
+
|
1198 |
+
return this;
|
1199 |
+
},
|
1200 |
+
|
1201 |
+
triggerBeforeAttach: true,
|
1202 |
+
triggerAttach: true,
|
1203 |
+
|
1204 |
+
_triggerAttach: function(views, prefix) {
|
1205 |
+
var eventName = (prefix || '') + 'attach';
|
1206 |
+
_.each(views, function(view) {
|
1207 |
+
Marionette.triggerMethodOn(view, eventName, view, this);
|
1208 |
+
}, this);
|
1209 |
+
},
|
1210 |
+
|
1211 |
+
_displayedViews: function(view) {
|
1212 |
+
return _.union([view], _.result(view, '_getNestedViews') || []);
|
1213 |
+
},
|
1214 |
+
|
1215 |
+
_renderView: function(view) {
|
1216 |
+
if (!view.supportsRenderLifecycle) {
|
1217 |
+
Marionette.triggerMethodOn(view, 'before:render', view);
|
1218 |
+
}
|
1219 |
+
view.render();
|
1220 |
+
if (!view.supportsRenderLifecycle) {
|
1221 |
+
Marionette.triggerMethodOn(view, 'render', view);
|
1222 |
+
}
|
1223 |
+
},
|
1224 |
+
|
1225 |
+
_ensureElement: function() {
|
1226 |
+
if (!_.isObject(this.el)) {
|
1227 |
+
this.$el = this.getEl(this.el);
|
1228 |
+
this.el = this.$el[0];
|
1229 |
+
}
|
1230 |
+
|
1231 |
+
if (!this.$el || this.$el.length === 0) {
|
1232 |
+
if (this.getOption('allowMissingEl')) {
|
1233 |
+
return false;
|
1234 |
+
} else {
|
1235 |
+
throw new Marionette.Error('An "el" ' + this.$el.selector + ' must exist in DOM');
|
1236 |
+
}
|
1237 |
+
}
|
1238 |
+
return true;
|
1239 |
+
},
|
1240 |
+
|
1241 |
+
_ensureViewIsIntact: function(view) {
|
1242 |
+
if (!view) {
|
1243 |
+
throw new Marionette.Error({
|
1244 |
+
name: 'ViewNotValid',
|
1245 |
+
message: 'The view passed is undefined and therefore invalid. You must pass a view instance to show.'
|
1246 |
+
});
|
1247 |
+
}
|
1248 |
+
|
1249 |
+
if (view.isDestroyed) {
|
1250 |
+
throw new Marionette.Error({
|
1251 |
+
name: 'ViewDestroyedError',
|
1252 |
+
message: 'View (cid: "' + view.cid + '") has already been destroyed and cannot be used.'
|
1253 |
+
});
|
1254 |
+
}
|
1255 |
+
},
|
1256 |
+
|
1257 |
+
// Override this method to change how the region finds the DOM
|
1258 |
+
// element that it manages. Return a jQuery selector object scoped
|
1259 |
+
// to a provided parent el or the document if none exists.
|
1260 |
+
getEl: function(el) {
|
1261 |
+
return Backbone.$(el, Marionette._getValue(this.options.parentEl, this));
|
1262 |
+
},
|
1263 |
+
|
1264 |
+
// Override this method to change how the new view is
|
1265 |
+
// appended to the `$el` that the region is managing
|
1266 |
+
attachHtml: function(view) {
|
1267 |
+
this.$el.contents().detach();
|
1268 |
+
|
1269 |
+
this.el.appendChild(view.el);
|
1270 |
+
},
|
1271 |
+
|
1272 |
+
// Destroy the current view, if there is one. If there is no
|
1273 |
+
// current view, it does nothing and returns immediately.
|
1274 |
+
empty: function(options) {
|
1275 |
+
var view = this.currentView;
|
1276 |
+
|
1277 |
+
var emptyOptions = options || {};
|
1278 |
+
var preventDestroy = !!emptyOptions.preventDestroy;
|
1279 |
+
// If there is no view in the region
|
1280 |
+
// we should not remove anything
|
1281 |
+
if (!view) { return this; }
|
1282 |
+
|
1283 |
+
view.off('destroy', this.empty, this);
|
1284 |
+
this.triggerMethod('before:empty', view);
|
1285 |
+
if (!preventDestroy) {
|
1286 |
+
this._destroyView();
|
1287 |
+
}
|
1288 |
+
this.triggerMethod('empty', view);
|
1289 |
+
|
1290 |
+
// Remove region pointer to the currentView
|
1291 |
+
delete this.currentView;
|
1292 |
+
|
1293 |
+
if (preventDestroy) {
|
1294 |
+
this.$el.contents().detach();
|
1295 |
+
}
|
1296 |
+
|
1297 |
+
return this;
|
1298 |
+
},
|
1299 |
+
|
1300 |
+
// call 'destroy' or 'remove', depending on which is found
|
1301 |
+
// on the view (if showing a raw Backbone view or a Marionette View)
|
1302 |
+
_destroyView: function() {
|
1303 |
+
var view = this.currentView;
|
1304 |
+
if (view.isDestroyed) { return; }
|
1305 |
+
|
1306 |
+
if (!view.supportsDestroyLifecycle) {
|
1307 |
+
Marionette.triggerMethodOn(view, 'before:destroy', view);
|
1308 |
+
}
|
1309 |
+
if (view.destroy) {
|
1310 |
+
view.destroy();
|
1311 |
+
} else {
|
1312 |
+
view.remove();
|
1313 |
+
|
1314 |
+
// appending isDestroyed to raw Backbone View allows regions
|
1315 |
+
// to throw a ViewDestroyedError for this view
|
1316 |
+
view.isDestroyed = true;
|
1317 |
+
}
|
1318 |
+
if (!view.supportsDestroyLifecycle) {
|
1319 |
+
Marionette.triggerMethodOn(view, 'destroy', view);
|
1320 |
+
}
|
1321 |
+
},
|
1322 |
+
|
1323 |
+
// Attach an existing view to the region. This
|
1324 |
+
// will not call `render` or `onShow` for the new view,
|
1325 |
+
// and will not replace the current HTML for the `el`
|
1326 |
+
// of the region.
|
1327 |
+
attachView: function(view) {
|
1328 |
+
if (this.currentView) {
|
1329 |
+
delete this.currentView._parent;
|
1330 |
+
}
|
1331 |
+
view._parent = this;
|
1332 |
+
this.currentView = view;
|
1333 |
+
return this;
|
1334 |
+
},
|
1335 |
+
|
1336 |
+
// Checks whether a view is currently present within
|
1337 |
+
// the region. Returns `true` if there is and `false` if
|
1338 |
+
// no view is present.
|
1339 |
+
hasView: function() {
|
1340 |
+
return !!this.currentView;
|
1341 |
+
},
|
1342 |
+
|
1343 |
+
// Reset the region by destroying any existing view and
|
1344 |
+
// clearing out the cached `$el`. The next time a view
|
1345 |
+
// is shown via this region, the region will re-query the
|
1346 |
+
// DOM for the region's `el`.
|
1347 |
+
reset: function() {
|
1348 |
+
this.empty();
|
1349 |
+
|
1350 |
+
if (this.$el) {
|
1351 |
+
this.el = this.$el.selector;
|
1352 |
+
}
|
1353 |
+
|
1354 |
+
delete this.$el;
|
1355 |
+
return this;
|
1356 |
+
}
|
1357 |
+
|
1358 |
+
},
|
1359 |
+
|
1360 |
+
// Static Methods
|
1361 |
+
{
|
1362 |
+
|
1363 |
+
// Build an instance of a region by passing in a configuration object
|
1364 |
+
// and a default region class to use if none is specified in the config.
|
1365 |
+
//
|
1366 |
+
// The config object should either be a string as a jQuery DOM selector,
|
1367 |
+
// a Region class directly, or an object literal that specifies a selector,
|
1368 |
+
// a custom regionClass, and any options to be supplied to the region:
|
1369 |
+
//
|
1370 |
+
// ```js
|
1371 |
+
// {
|
1372 |
+
// selector: "#foo",
|
1373 |
+
// regionClass: MyCustomRegion,
|
1374 |
+
// allowMissingEl: false
|
1375 |
+
// }
|
1376 |
+
// ```
|
1377 |
+
//
|
1378 |
+
buildRegion: function(regionConfig, DefaultRegionClass) {
|
1379 |
+
if (_.isString(regionConfig)) {
|
1380 |
+
return this._buildRegionFromSelector(regionConfig, DefaultRegionClass);
|
1381 |
+
}
|
1382 |
+
|
1383 |
+
if (regionConfig.selector || regionConfig.el || regionConfig.regionClass) {
|
1384 |
+
return this._buildRegionFromObject(regionConfig, DefaultRegionClass);
|
1385 |
+
}
|
1386 |
+
|
1387 |
+
if (_.isFunction(regionConfig)) {
|
1388 |
+
return this._buildRegionFromRegionClass(regionConfig);
|
1389 |
+
}
|
1390 |
+
|
1391 |
+
throw new Marionette.Error({
|
1392 |
+
message: 'Improper region configuration type.',
|
1393 |
+
url: 'marionette.region.html#region-configuration-types'
|
1394 |
+
});
|
1395 |
+
},
|
1396 |
+
|
1397 |
+
// Build the region from a string selector like '#foo-region'
|
1398 |
+
_buildRegionFromSelector: function(selector, DefaultRegionClass) {
|
1399 |
+
return new DefaultRegionClass({el: selector});
|
1400 |
+
},
|
1401 |
+
|
1402 |
+
// Build the region from a configuration object
|
1403 |
+
// ```js
|
1404 |
+
// { selector: '#foo', regionClass: FooRegion, allowMissingEl: false }
|
1405 |
+
// ```
|
1406 |
+
_buildRegionFromObject: function(regionConfig, DefaultRegionClass) {
|
1407 |
+
var RegionClass = regionConfig.regionClass || DefaultRegionClass;
|
1408 |
+
var options = _.omit(regionConfig, 'selector', 'regionClass');
|
1409 |
+
|
1410 |
+
if (regionConfig.selector && !options.el) {
|
1411 |
+
options.el = regionConfig.selector;
|
1412 |
+
}
|
1413 |
+
|
1414 |
+
return new RegionClass(options);
|
1415 |
+
},
|
1416 |
+
|
1417 |
+
// Build the region directly from a given `RegionClass`
|
1418 |
+
_buildRegionFromRegionClass: function(RegionClass) {
|
1419 |
+
return new RegionClass();
|
1420 |
+
}
|
1421 |
+
});
|
1422 |
+
|
1423 |
+
// Region Manager
|
1424 |
+
// --------------
|
1425 |
+
|
1426 |
+
// Manage one or more related `Marionette.Region` objects.
|
1427 |
+
Marionette.RegionManager = Marionette.Controller.extend({
|
1428 |
+
constructor: function(options) {
|
1429 |
+
this._regions = {};
|
1430 |
+
this.length = 0;
|
1431 |
+
|
1432 |
+
Marionette.Controller.call(this, options);
|
1433 |
+
|
1434 |
+
this.addRegions(this.getOption('regions'));
|
1435 |
+
},
|
1436 |
+
|
1437 |
+
// Add multiple regions using an object literal or a
|
1438 |
+
// function that returns an object literal, where
|
1439 |
+
// each key becomes the region name, and each value is
|
1440 |
+
// the region definition.
|
1441 |
+
addRegions: function(regionDefinitions, defaults) {
|
1442 |
+
regionDefinitions = Marionette._getValue(regionDefinitions, this, arguments);
|
1443 |
+
|
1444 |
+
return _.reduce(regionDefinitions, function(regions, definition, name) {
|
1445 |
+
if (_.isString(definition)) {
|
1446 |
+
definition = {selector: definition};
|
1447 |
+
}
|
1448 |
+
if (definition.selector) {
|
1449 |
+
definition = _.defaults({}, definition, defaults);
|
1450 |
+
}
|
1451 |
+
|
1452 |
+
regions[name] = this.addRegion(name, definition);
|
1453 |
+
return regions;
|
1454 |
+
}, {}, this);
|
1455 |
+
},
|
1456 |
+
|
1457 |
+
// Add an individual region to the region manager,
|
1458 |
+
// and return the region instance
|
1459 |
+
addRegion: function(name, definition) {
|
1460 |
+
var region;
|
1461 |
+
|
1462 |
+
if (definition instanceof Marionette.Region) {
|
1463 |
+
region = definition;
|
1464 |
+
} else {
|
1465 |
+
region = Marionette.Region.buildRegion(definition, Marionette.Region);
|
1466 |
+
}
|
1467 |
+
|
1468 |
+
this.triggerMethod('before:add:region', name, region);
|
1469 |
+
|
1470 |
+
region._parent = this;
|
1471 |
+
this._store(name, region);
|
1472 |
+
|
1473 |
+
this.triggerMethod('add:region', name, region);
|
1474 |
+
return region;
|
1475 |
+
},
|
1476 |
+
|
1477 |
+
// Get a region by name
|
1478 |
+
get: function(name) {
|
1479 |
+
return this._regions[name];
|
1480 |
+
},
|
1481 |
+
|
1482 |
+
// Gets all the regions contained within
|
1483 |
+
// the `regionManager` instance.
|
1484 |
+
getRegions: function() {
|
1485 |
+
return _.clone(this._regions);
|
1486 |
+
},
|
1487 |
+
|
1488 |
+
// Remove a region by name
|
1489 |
+
removeRegion: function(name) {
|
1490 |
+
var region = this._regions[name];
|
1491 |
+
this._remove(name, region);
|
1492 |
+
|
1493 |
+
return region;
|
1494 |
+
},
|
1495 |
+
|
1496 |
+
// Empty all regions in the region manager, and
|
1497 |
+
// remove them
|
1498 |
+
removeRegions: function() {
|
1499 |
+
var regions = this.getRegions();
|
1500 |
+
_.each(this._regions, function(region, name) {
|
1501 |
+
this._remove(name, region);
|
1502 |
+
}, this);
|
1503 |
+
|
1504 |
+
return regions;
|
1505 |
+
},
|
1506 |
+
|
1507 |
+
// Empty all regions in the region manager, but
|
1508 |
+
// leave them attached
|
1509 |
+
emptyRegions: function() {
|
1510 |
+
var regions = this.getRegions();
|
1511 |
+
_.invoke(regions, 'empty');
|
1512 |
+
return regions;
|
1513 |
+
},
|
1514 |
+
|
1515 |
+
// Destroy all regions and shut down the region
|
1516 |
+
// manager entirely
|
1517 |
+
destroy: function() {
|
1518 |
+
this.removeRegions();
|
1519 |
+
return Marionette.Controller.prototype.destroy.apply(this, arguments);
|
1520 |
+
},
|
1521 |
+
|
1522 |
+
// internal method to store regions
|
1523 |
+
_store: function(name, region) {
|
1524 |
+
if (!this._regions[name]) {
|
1525 |
+
this.length++;
|
1526 |
+
}
|
1527 |
+
|
1528 |
+
this._regions[name] = region;
|
1529 |
+
},
|
1530 |
+
|
1531 |
+
// internal method to remove a region
|
1532 |
+
_remove: function(name, region) {
|
1533 |
+
this.triggerMethod('before:remove:region', name, region);
|
1534 |
+
region.empty();
|
1535 |
+
region.stopListening();
|
1536 |
+
|
1537 |
+
delete region._parent;
|
1538 |
+
delete this._regions[name];
|
1539 |
+
this.length--;
|
1540 |
+
this.triggerMethod('remove:region', name, region);
|
1541 |
+
}
|
1542 |
+
});
|
1543 |
+
|
1544 |
+
Marionette.actAsCollection(Marionette.RegionManager.prototype, '_regions');
|
1545 |
+
|
1546 |
+
|
1547 |
+
// Template Cache
|
1548 |
+
// --------------
|
1549 |
+
|
1550 |
+
// Manage templates stored in `<script>` blocks,
|
1551 |
+
// caching them for faster access.
|
1552 |
+
Marionette.TemplateCache = function(templateId) {
|
1553 |
+
this.templateId = templateId;
|
1554 |
+
};
|
1555 |
+
|
1556 |
+
// TemplateCache object-level methods. Manage the template
|
1557 |
+
// caches from these method calls instead of creating
|
1558 |
+
// your own TemplateCache instances
|
1559 |
+
_.extend(Marionette.TemplateCache, {
|
1560 |
+
templateCaches: {},
|
1561 |
+
|
1562 |
+
// Get the specified template by id. Either
|
1563 |
+
// retrieves the cached version, or loads it
|
1564 |
+
// from the DOM.
|
1565 |
+
get: function(templateId, options) {
|
1566 |
+
var cachedTemplate = this.templateCaches[templateId];
|
1567 |
+
|
1568 |
+
if (!cachedTemplate) {
|
1569 |
+
cachedTemplate = new Marionette.TemplateCache(templateId);
|
1570 |
+
this.templateCaches[templateId] = cachedTemplate;
|
1571 |
+
}
|
1572 |
+
|
1573 |
+
return cachedTemplate.load(options);
|
1574 |
+
},
|
1575 |
+
|
1576 |
+
// Clear templates from the cache. If no arguments
|
1577 |
+
// are specified, clears all templates:
|
1578 |
+
// `clear()`
|
1579 |
+
//
|
1580 |
+
// If arguments are specified, clears each of the
|
1581 |
+
// specified templates from the cache:
|
1582 |
+
// `clear("#t1", "#t2", "...")`
|
1583 |
+
clear: function() {
|
1584 |
+
var i;
|
1585 |
+
var args = _.toArray(arguments);
|
1586 |
+
var length = args.length;
|
1587 |
+
|
1588 |
+
if (length > 0) {
|
1589 |
+
for (i = 0; i < length; i++) {
|
1590 |
+
delete this.templateCaches[args[i]];
|
1591 |
+
}
|
1592 |
+
} else {
|
1593 |
+
this.templateCaches = {};
|
1594 |
+
}
|
1595 |
+
}
|
1596 |
+
});
|
1597 |
+
|
1598 |
+
// TemplateCache instance methods, allowing each
|
1599 |
+
// template cache object to manage its own state
|
1600 |
+
// and know whether or not it has been loaded
|
1601 |
+
_.extend(Marionette.TemplateCache.prototype, {
|
1602 |
+
|
1603 |
+
// Internal method to load the template
|
1604 |
+
load: function(options) {
|
1605 |
+
// Guard clause to prevent loading this template more than once
|
1606 |
+
if (this.compiledTemplate) {
|
1607 |
+
return this.compiledTemplate;
|
1608 |
+
}
|
1609 |
+
|
1610 |
+
// Load the template and compile it
|
1611 |
+
var template = this.loadTemplate(this.templateId, options);
|
1612 |
+
this.compiledTemplate = this.compileTemplate(template, options);
|
1613 |
+
|
1614 |
+
return this.compiledTemplate;
|
1615 |
+
},
|
1616 |
+
|
1617 |
+
// Load a template from the DOM, by default. Override
|
1618 |
+
// this method to provide your own template retrieval
|
1619 |
+
// For asynchronous loading with AMD/RequireJS, consider
|
1620 |
+
// using a template-loader plugin as described here:
|
1621 |
+
// https://github.com/marionettejs/backbone.marionette/wiki/Using-marionette-with-requirejs
|
1622 |
+
loadTemplate: function(templateId, options) {
|
1623 |
+
var $template = Backbone.$(templateId);
|
1624 |
+
|
1625 |
+
if (!$template.length) {
|
1626 |
+
throw new Marionette.Error({
|
1627 |
+
name: 'NoTemplateError',
|
1628 |
+
message: 'Could not find template: "' + templateId + '"'
|
1629 |
+
});
|
1630 |
+
}
|
1631 |
+
return $template.html();
|
1632 |
+
},
|
1633 |
+
|
1634 |
+
// Pre-compile the template before caching it. Override
|
1635 |
+
// this method if you do not need to pre-compile a template
|
1636 |
+
// (JST / RequireJS for example) or if you want to change
|
1637 |
+
// the template engine used (Handebars, etc).
|
1638 |
+
compileTemplate: function(rawTemplate, options) {
|
1639 |
+
return _.template(rawTemplate, options);
|
1640 |
+
}
|
1641 |
+
});
|
1642 |
+
|
1643 |
+
// Renderer
|
1644 |
+
// --------
|
1645 |
+
|
1646 |
+
// Render a template with data by passing in the template
|
1647 |
+
// selector and the data to render.
|
1648 |
+
Marionette.Renderer = {
|
1649 |
+
|
1650 |
+
// Render a template with data. The `template` parameter is
|
1651 |
+
// passed to the `TemplateCache` object to retrieve the
|
1652 |
+
// template function. Override this method to provide your own
|
1653 |
+
// custom rendering and template handling for all of Marionette.
|
1654 |
+
render: function(template, data) {
|
1655 |
+
if (!template) {
|
1656 |
+
throw new Marionette.Error({
|
1657 |
+
name: 'TemplateNotFoundError',
|
1658 |
+
message: 'Cannot render the template since its false, null or undefined.'
|
1659 |
+
});
|
1660 |
+
}
|
1661 |
+
|
1662 |
+
var templateFunc = _.isFunction(template) ? template : Marionette.TemplateCache.get(template);
|
1663 |
+
|
1664 |
+
return templateFunc(data);
|
1665 |
+
}
|
1666 |
+
};
|
1667 |
+
|
1668 |
+
|
1669 |
+
/* jshint maxlen: 114, nonew: false */
|
1670 |
+
// View
|
1671 |
+
// ----
|
1672 |
+
|
1673 |
+
// The core view class that other Marionette views extend from.
|
1674 |
+
Marionette.View = Backbone.View.extend({
|
1675 |
+
isDestroyed: false,
|
1676 |
+
supportsRenderLifecycle: true,
|
1677 |
+
supportsDestroyLifecycle: true,
|
1678 |
+
|
1679 |
+
constructor: function(options) {
|
1680 |
+
this.render = _.bind(this.render, this);
|
1681 |
+
|
1682 |
+
options = Marionette._getValue(options, this);
|
1683 |
+
|
1684 |
+
// this exposes view options to the view initializer
|
1685 |
+
// this is a backfill since backbone removed the assignment
|
1686 |
+
// of this.options
|
1687 |
+
// at some point however this may be removed
|
1688 |
+
this.options = _.extend({}, _.result(this, 'options'), options);
|
1689 |
+
|
1690 |
+
this._behaviors = Marionette.Behaviors(this);
|
1691 |
+
|
1692 |
+
Backbone.View.call(this, this.options);
|
1693 |
+
|
1694 |
+
Marionette.MonitorDOMRefresh(this);
|
1695 |
+
},
|
1696 |
+
|
1697 |
+
// Get the template for this view
|
1698 |
+
// instance. You can set a `template` attribute in the view
|
1699 |
+
// definition or pass a `template: "whatever"` parameter in
|
1700 |
+
// to the constructor options.
|
1701 |
+
getTemplate: function() {
|
1702 |
+
return this.getOption('template');
|
1703 |
+
},
|
1704 |
+
|
1705 |
+
// Serialize a model by returning its attributes. Clones
|
1706 |
+
// the attributes to allow modification.
|
1707 |
+
serializeModel: function(model) {
|
1708 |
+
return model.toJSON.apply(model, _.rest(arguments));
|
1709 |
+
},
|
1710 |
+
|
1711 |
+
// Mix in template helper methods. Looks for a
|
1712 |
+
// `templateHelpers` attribute, which can either be an
|
1713 |
+
// object literal, or a function that returns an object
|
1714 |
+
// literal. All methods and attributes from this object
|
1715 |
+
// are copies to the object passed in.
|
1716 |
+
mixinTemplateHelpers: function(target) {
|
1717 |
+
target = target || {};
|
1718 |
+
var templateHelpers = this.getOption('templateHelpers');
|
1719 |
+
templateHelpers = Marionette._getValue(templateHelpers, this);
|
1720 |
+
return _.extend(target, templateHelpers);
|
1721 |
+
},
|
1722 |
+
|
1723 |
+
// normalize the keys of passed hash with the views `ui` selectors.
|
1724 |
+
// `{"@ui.foo": "bar"}`
|
1725 |
+
normalizeUIKeys: function(hash) {
|
1726 |
+
var uiBindings = _.result(this, '_uiBindings');
|
1727 |
+
return Marionette.normalizeUIKeys(hash, uiBindings || _.result(this, 'ui'));
|
1728 |
+
},
|
1729 |
+
|
1730 |
+
// normalize the values of passed hash with the views `ui` selectors.
|
1731 |
+
// `{foo: "@ui.bar"}`
|
1732 |
+
normalizeUIValues: function(hash, properties) {
|
1733 |
+
var ui = _.result(this, 'ui');
|
1734 |
+
var uiBindings = _.result(this, '_uiBindings');
|
1735 |
+
return Marionette.normalizeUIValues(hash, uiBindings || ui, properties);
|
1736 |
+
},
|
1737 |
+
|
1738 |
+
// Configure `triggers` to forward DOM events to view
|
1739 |
+
// events. `triggers: {"click .foo": "do:foo"}`
|
1740 |
+
configureTriggers: function() {
|
1741 |
+
if (!this.triggers) { return; }
|
1742 |
+
|
1743 |
+
// Allow `triggers` to be configured as a function
|
1744 |
+
var triggers = this.normalizeUIKeys(_.result(this, 'triggers'));
|
1745 |
+
|
1746 |
+
// Configure the triggers, prevent default
|
1747 |
+
// action and stop propagation of DOM events
|
1748 |
+
return _.reduce(triggers, function(events, value, key) {
|
1749 |
+
events[key] = this._buildViewTrigger(value);
|
1750 |
+
return events;
|
1751 |
+
}, {}, this);
|
1752 |
+
},
|
1753 |
+
|
1754 |
+
// Overriding Backbone.View's delegateEvents to handle
|
1755 |
+
// the `triggers`, `modelEvents`, and `collectionEvents` configuration
|
1756 |
+
delegateEvents: function(events) {
|
1757 |
+
this._delegateDOMEvents(events);
|
1758 |
+
this.bindEntityEvents(this.model, this.getOption('modelEvents'));
|
1759 |
+
this.bindEntityEvents(this.collection, this.getOption('collectionEvents'));
|
1760 |
+
|
1761 |
+
_.each(this._behaviors, function(behavior) {
|
1762 |
+
behavior.bindEntityEvents(this.model, behavior.getOption('modelEvents'));
|
1763 |
+
behavior.bindEntityEvents(this.collection, behavior.getOption('collectionEvents'));
|
1764 |
+
}, this);
|
1765 |
+
|
1766 |
+
return this;
|
1767 |
+
},
|
1768 |
+
|
1769 |
+
// internal method to delegate DOM events and triggers
|
1770 |
+
_delegateDOMEvents: function(eventsArg) {
|
1771 |
+
var events = Marionette._getValue(eventsArg || this.events, this);
|
1772 |
+
|
1773 |
+
// normalize ui keys
|
1774 |
+
events = this.normalizeUIKeys(events);
|
1775 |
+
if (_.isUndefined(eventsArg)) {this.events = events;}
|
1776 |
+
|
1777 |
+
var combinedEvents = {};
|
1778 |
+
|
1779 |
+
// look up if this view has behavior events
|
1780 |
+
var behaviorEvents = _.result(this, 'behaviorEvents') || {};
|
1781 |
+
var triggers = this.configureTriggers();
|
1782 |
+
var behaviorTriggers = _.result(this, 'behaviorTriggers') || {};
|
1783 |
+
|
1784 |
+
// behavior events will be overriden by view events and or triggers
|
1785 |
+
_.extend(combinedEvents, behaviorEvents, events, triggers, behaviorTriggers);
|
1786 |
+
|
1787 |
+
Backbone.View.prototype.delegateEvents.call(this, combinedEvents);
|
1788 |
+
},
|
1789 |
+
|
1790 |
+
// Overriding Backbone.View's undelegateEvents to handle unbinding
|
1791 |
+
// the `triggers`, `modelEvents`, and `collectionEvents` config
|
1792 |
+
undelegateEvents: function() {
|
1793 |
+
Backbone.View.prototype.undelegateEvents.apply(this, arguments);
|
1794 |
+
|
1795 |
+
this.unbindEntityEvents(this.model, this.getOption('modelEvents'));
|
1796 |
+
this.unbindEntityEvents(this.collection, this.getOption('collectionEvents'));
|
1797 |
+
|
1798 |
+
_.each(this._behaviors, function(behavior) {
|
1799 |
+
behavior.unbindEntityEvents(this.model, behavior.getOption('modelEvents'));
|
1800 |
+
behavior.unbindEntityEvents(this.collection, behavior.getOption('collectionEvents'));
|
1801 |
+
}, this);
|
1802 |
+
|
1803 |
+
return this;
|
1804 |
+
},
|
1805 |
+
|
1806 |
+
// Internal helper method to verify whether the view hasn't been destroyed
|
1807 |
+
_ensureViewIsIntact: function() {
|
1808 |
+
if (this.isDestroyed) {
|
1809 |
+
throw new Marionette.Error({
|
1810 |
+
name: 'ViewDestroyedError',
|
1811 |
+
message: 'View (cid: "' + this.cid + '") has already been destroyed and cannot be used.'
|
1812 |
+
});
|
1813 |
+
}
|
1814 |
+
},
|
1815 |
+
|
1816 |
+
// Default `destroy` implementation, for removing a view from the
|
1817 |
+
// DOM and unbinding it. Regions will call this method
|
1818 |
+
// for you. You can specify an `onDestroy` method in your view to
|
1819 |
+
// add custom code that is called after the view is destroyed.
|
1820 |
+
destroy: function() {
|
1821 |
+
if (this.isDestroyed) { return this; }
|
1822 |
+
|
1823 |
+
var args = _.toArray(arguments);
|
1824 |
+
|
1825 |
+
this.triggerMethod.apply(this, ['before:destroy'].concat(args));
|
1826 |
+
|
1827 |
+
// mark as destroyed before doing the actual destroy, to
|
1828 |
+
// prevent infinite loops within "destroy" event handlers
|
1829 |
+
// that are trying to destroy other views
|
1830 |
+
this.isDestroyed = true;
|
1831 |
+
this.triggerMethod.apply(this, ['destroy'].concat(args));
|
1832 |
+
|
1833 |
+
// unbind UI elements
|
1834 |
+
this.unbindUIElements();
|
1835 |
+
|
1836 |
+
this.isRendered = false;
|
1837 |
+
|
1838 |
+
// remove the view from the DOM
|
1839 |
+
this.remove();
|
1840 |
+
|
1841 |
+
// Call destroy on each behavior after
|
1842 |
+
// destroying the view.
|
1843 |
+
// This unbinds event listeners
|
1844 |
+
// that behaviors have registered for.
|
1845 |
+
_.invoke(this._behaviors, 'destroy', args);
|
1846 |
+
|
1847 |
+
return this;
|
1848 |
+
},
|
1849 |
+
|
1850 |
+
bindUIElements: function() {
|
1851 |
+
this._bindUIElements();
|
1852 |
+
_.invoke(this._behaviors, this._bindUIElements);
|
1853 |
+
},
|
1854 |
+
|
1855 |
+
// This method binds the elements specified in the "ui" hash inside the view's code with
|
1856 |
+
// the associated jQuery selectors.
|
1857 |
+
_bindUIElements: function() {
|
1858 |
+
if (!this.ui) { return; }
|
1859 |
+
|
1860 |
+
// store the ui hash in _uiBindings so they can be reset later
|
1861 |
+
// and so re-rendering the view will be able to find the bindings
|
1862 |
+
if (!this._uiBindings) {
|
1863 |
+
this._uiBindings = this.ui;
|
1864 |
+
}
|
1865 |
+
|
1866 |
+
// get the bindings result, as a function or otherwise
|
1867 |
+
var bindings = _.result(this, '_uiBindings');
|
1868 |
+
|
1869 |
+
// empty the ui so we don't have anything to start with
|
1870 |
+
this.ui = {};
|
1871 |
+
|
1872 |
+
// bind each of the selectors
|
1873 |
+
_.each(bindings, function(selector, key) {
|
1874 |
+
this.ui[key] = this.$(selector);
|
1875 |
+
}, this);
|
1876 |
+
},
|
1877 |
+
|
1878 |
+
// This method unbinds the elements specified in the "ui" hash
|
1879 |
+
unbindUIElements: function() {
|
1880 |
+
this._unbindUIElements();
|
1881 |
+
_.invoke(this._behaviors, this._unbindUIElements);
|
1882 |
+
},
|
1883 |
+
|
1884 |
+
_unbindUIElements: function() {
|
1885 |
+
if (!this.ui || !this._uiBindings) { return; }
|
1886 |
+
|
1887 |
+
// delete all of the existing ui bindings
|
1888 |
+
_.each(this.ui, function($el, name) {
|
1889 |
+
delete this.ui[name];
|
1890 |
+
}, this);
|
1891 |
+
|
1892 |
+
// reset the ui element to the original bindings configuration
|
1893 |
+
this.ui = this._uiBindings;
|
1894 |
+
delete this._uiBindings;
|
1895 |
+
},
|
1896 |
+
|
1897 |
+
// Internal method to create an event handler for a given `triggerDef` like
|
1898 |
+
// 'click:foo'
|
1899 |
+
_buildViewTrigger: function(triggerDef) {
|
1900 |
+
|
1901 |
+
var options = _.defaults({}, triggerDef, {
|
1902 |
+
preventDefault: true,
|
1903 |
+
stopPropagation: true
|
1904 |
+
});
|
1905 |
+
|
1906 |
+
var eventName = _.isObject(triggerDef) ? options.event : triggerDef;
|
1907 |
+
|
1908 |
+
return function(e) {
|
1909 |
+
if (e) {
|
1910 |
+
if (e.preventDefault && options.preventDefault) {
|
1911 |
+
e.preventDefault();
|
1912 |
+
}
|
1913 |
+
|
1914 |
+
if (e.stopPropagation && options.stopPropagation) {
|
1915 |
+
e.stopPropagation();
|
1916 |
+
}
|
1917 |
+
}
|
1918 |
+
|
1919 |
+
var args = {
|
1920 |
+
view: this,
|
1921 |
+
model: this.model,
|
1922 |
+
collection: this.collection
|
1923 |
+
};
|
1924 |
+
|
1925 |
+
this.triggerMethod(eventName, args);
|
1926 |
+
};
|
1927 |
+
},
|
1928 |
+
|
1929 |
+
setElement: function() {
|
1930 |
+
var ret = Backbone.View.prototype.setElement.apply(this, arguments);
|
1931 |
+
|
1932 |
+
// proxy behavior $el to the view's $el.
|
1933 |
+
// This is needed because a view's $el proxy
|
1934 |
+
// is not set until after setElement is called.
|
1935 |
+
_.invoke(this._behaviors, 'proxyViewProperties', this);
|
1936 |
+
|
1937 |
+
return ret;
|
1938 |
+
},
|
1939 |
+
|
1940 |
+
// import the `triggerMethod` to trigger events with corresponding
|
1941 |
+
// methods if the method exists
|
1942 |
+
triggerMethod: function() {
|
1943 |
+
var ret = Marionette._triggerMethod(this, arguments);
|
1944 |
+
|
1945 |
+
this._triggerEventOnBehaviors(arguments);
|
1946 |
+
this._triggerEventOnParentLayout(arguments[0], _.rest(arguments));
|
1947 |
+
|
1948 |
+
return ret;
|
1949 |
+
},
|
1950 |
+
|
1951 |
+
_triggerEventOnBehaviors: function(args) {
|
1952 |
+
var triggerMethod = Marionette._triggerMethod;
|
1953 |
+
var behaviors = this._behaviors;
|
1954 |
+
// Use good ol' for as this is a very hot function
|
1955 |
+
for (var i = 0, length = behaviors && behaviors.length; i < length; i++) {
|
1956 |
+
triggerMethod(behaviors[i], args);
|
1957 |
+
}
|
1958 |
+
},
|
1959 |
+
|
1960 |
+
_triggerEventOnParentLayout: function(eventName, args) {
|
1961 |
+
var layoutView = this._parentLayoutView();
|
1962 |
+
if (!layoutView) {
|
1963 |
+
return;
|
1964 |
+
}
|
1965 |
+
|
1966 |
+
// invoke triggerMethod on parent view
|
1967 |
+
var eventPrefix = Marionette.getOption(layoutView, 'childViewEventPrefix');
|
1968 |
+
var prefixedEventName = eventPrefix + ':' + eventName;
|
1969 |
+
var callArgs = [this].concat(args);
|
1970 |
+
|
1971 |
+
Marionette._triggerMethod(layoutView, prefixedEventName, callArgs);
|
1972 |
+
|
1973 |
+
// call the parent view's childEvents handler
|
1974 |
+
var childEvents = Marionette.getOption(layoutView, 'childEvents');
|
1975 |
+
|
1976 |
+
// since childEvents can be an object or a function use Marionette._getValue
|
1977 |
+
// to handle the abstaction for us.
|
1978 |
+
childEvents = Marionette._getValue(childEvents, layoutView);
|
1979 |
+
var normalizedChildEvents = layoutView.normalizeMethods(childEvents);
|
1980 |
+
|
1981 |
+
if (normalizedChildEvents && _.isFunction(normalizedChildEvents[eventName])) {
|
1982 |
+
normalizedChildEvents[eventName].apply(layoutView, callArgs);
|
1983 |
+
}
|
1984 |
+
},
|
1985 |
+
|
1986 |
+
// This method returns any views that are immediate
|
1987 |
+
// children of this view
|
1988 |
+
_getImmediateChildren: function() {
|
1989 |
+
return [];
|
1990 |
+
},
|
1991 |
+
|
1992 |
+
// Returns an array of every nested view within this view
|
1993 |
+
_getNestedViews: function() {
|
1994 |
+
var children = this._getImmediateChildren();
|
1995 |
+
|
1996 |
+
if (!children.length) { return children; }
|
1997 |
+
|
1998 |
+
return _.reduce(children, function(memo, view) {
|
1999 |
+
if (!view._getNestedViews) { return memo; }
|
2000 |
+
return memo.concat(view._getNestedViews());
|
2001 |
+
}, children);
|
2002 |
+
},
|
2003 |
+
|
2004 |
+
// Walk the _parent tree until we find a layout view (if one exists).
|
2005 |
+
// Returns the parent layout view hierarchically closest to this view.
|
2006 |
+
_parentLayoutView: function() {
|
2007 |
+
var parent = this._parent;
|
2008 |
+
|
2009 |
+
while (parent) {
|
2010 |
+
if (parent instanceof Marionette.LayoutView) {
|
2011 |
+
return parent;
|
2012 |
+
}
|
2013 |
+
parent = parent._parent;
|
2014 |
+
}
|
2015 |
+
},
|
2016 |
+
|
2017 |
+
// Imports the "normalizeMethods" to transform hashes of
|
2018 |
+
// events=>function references/names to a hash of events=>function references
|
2019 |
+
normalizeMethods: Marionette.normalizeMethods,
|
2020 |
+
|
2021 |
+
// A handy way to merge passed-in options onto the instance
|
2022 |
+
mergeOptions: Marionette.mergeOptions,
|
2023 |
+
|
2024 |
+
// Proxy `getOption` to enable getting options from this or this.options by name.
|
2025 |
+
getOption: Marionette.proxyGetOption,
|
2026 |
+
|
2027 |
+
// Proxy `bindEntityEvents` to enable binding view's events from another entity.
|
2028 |
+
bindEntityEvents: Marionette.proxyBindEntityEvents,
|
2029 |
+
|
2030 |
+
// Proxy `unbindEntityEvents` to enable unbinding view's events from another entity.
|
2031 |
+
unbindEntityEvents: Marionette.proxyUnbindEntityEvents
|
2032 |
+
});
|
2033 |
+
|
2034 |
+
// Item View
|
2035 |
+
// ---------
|
2036 |
+
|
2037 |
+
// A single item view implementation that contains code for rendering
|
2038 |
+
// with underscore.js templates, serializing the view's model or collection,
|
2039 |
+
// and calling several methods on extended views, such as `onRender`.
|
2040 |
+
Marionette.ItemView = Marionette.View.extend({
|
2041 |
+
|
2042 |
+
// Setting up the inheritance chain which allows changes to
|
2043 |
+
// Marionette.View.prototype.constructor which allows overriding
|
2044 |
+
constructor: function() {
|
2045 |
+
Marionette.View.apply(this, arguments);
|
2046 |
+
},
|
2047 |
+
|
2048 |
+
// Serialize the model or collection for the view. If a model is
|
2049 |
+
// found, the view's `serializeModel` is called. If a collection is found,
|
2050 |
+
// each model in the collection is serialized by calling
|
2051 |
+
// the view's `serializeCollection` and put into an `items` array in
|
2052 |
+
// the resulting data. If both are found, defaults to the model.
|
2053 |
+
// You can override the `serializeData` method in your own view definition,
|
2054 |
+
// to provide custom serialization for your view's data.
|
2055 |
+
serializeData: function() {
|
2056 |
+
if (!this.model && !this.collection) {
|
2057 |
+
return {};
|
2058 |
+
}
|
2059 |
+
|
2060 |
+
var args = [this.model || this.collection];
|
2061 |
+
if (arguments.length) {
|
2062 |
+
args.push.apply(args, arguments);
|
2063 |
+
}
|
2064 |
+
|
2065 |
+
if (this.model) {
|
2066 |
+
return this.serializeModel.apply(this, args);
|
2067 |
+
} else {
|
2068 |
+
return {
|
2069 |
+
items: this.serializeCollection.apply(this, args)
|
2070 |
+
};
|
2071 |
+
}
|
2072 |
+
},
|
2073 |
+
|
2074 |
+
// Serialize a collection by serializing each of its models.
|
2075 |
+
serializeCollection: function(collection) {
|
2076 |
+
return collection.toJSON.apply(collection, _.rest(arguments));
|
2077 |
+
},
|
2078 |
+
|
2079 |
+
// Render the view, defaulting to underscore.js templates.
|
2080 |
+
// You can override this in your view definition to provide
|
2081 |
+
// a very specific rendering for your view. In general, though,
|
2082 |
+
// you should override the `Marionette.Renderer` object to
|
2083 |
+
// change how Marionette renders views.
|
2084 |
+
render: function() {
|
2085 |
+
this._ensureViewIsIntact();
|
2086 |
+
|
2087 |
+
this.triggerMethod('before:render', this);
|
2088 |
+
|
2089 |
+
this._renderTemplate();
|
2090 |
+
this.isRendered = true;
|
2091 |
+
this.bindUIElements();
|
2092 |
+
|
2093 |
+
this.triggerMethod('render', this);
|
2094 |
+
|
2095 |
+
return this;
|
2096 |
+
},
|
2097 |
+
|
2098 |
+
// Internal method to render the template with the serialized data
|
2099 |
+
// and template helpers via the `Marionette.Renderer` object.
|
2100 |
+
// Throws an `UndefinedTemplateError` error if the template is
|
2101 |
+
// any falsely value but literal `false`.
|
2102 |
+
_renderTemplate: function() {
|
2103 |
+
var template = this.getTemplate();
|
2104 |
+
|
2105 |
+
// Allow template-less item views
|
2106 |
+
if (template === false) {
|
2107 |
+
return;
|
2108 |
+
}
|
2109 |
+
|
2110 |
+
if (!template) {
|
2111 |
+
throw new Marionette.Error({
|
2112 |
+
name: 'UndefinedTemplateError',
|
2113 |
+
message: 'Cannot render the template since it is null or undefined.'
|
2114 |
+
});
|
2115 |
+
}
|
2116 |
+
|
2117 |
+
// Add in entity data and template helpers
|
2118 |
+
var data = this.mixinTemplateHelpers(this.serializeData());
|
2119 |
+
|
2120 |
+
// Render and add to el
|
2121 |
+
var html = Marionette.Renderer.render(template, data, this);
|
2122 |
+
this.attachElContent(html);
|
2123 |
+
|
2124 |
+
return this;
|
2125 |
+
},
|
2126 |
+
|
2127 |
+
// Attaches the content of a given view.
|
2128 |
+
// This method can be overridden to optimize rendering,
|
2129 |
+
// or to render in a non standard way.
|
2130 |
+
//
|
2131 |
+
// For example, using `innerHTML` instead of `$el.html`
|
2132 |
+
//
|
2133 |
+
// ```js
|
2134 |
+
// attachElContent: function(html) {
|
2135 |
+
// this.el.innerHTML = html;
|
2136 |
+
// return this;
|
2137 |
+
// }
|
2138 |
+
// ```
|
2139 |
+
attachElContent: function(html) {
|
2140 |
+
this.$el.html(html);
|
2141 |
+
|
2142 |
+
return this;
|
2143 |
+
}
|
2144 |
+
});
|
2145 |
+
|
2146 |
+
/* jshint maxstatements: 20, maxcomplexity: 7 */
|
2147 |
+
|
2148 |
+
// Collection View
|
2149 |
+
// ---------------
|
2150 |
+
|
2151 |
+
// A view that iterates over a Backbone.Collection
|
2152 |
+
// and renders an individual child view for each model.
|
2153 |
+
Marionette.CollectionView = Marionette.View.extend({
|
2154 |
+
|
2155 |
+
// used as the prefix for child view events
|
2156 |
+
// that are forwarded through the collectionview
|
2157 |
+
childViewEventPrefix: 'childview',
|
2158 |
+
|
2159 |
+
// flag for maintaining the sorted order of the collection
|
2160 |
+
sort: true,
|
2161 |
+
|
2162 |
+
// constructor
|
2163 |
+
// option to pass `{sort: false}` to prevent the `CollectionView` from
|
2164 |
+
// maintaining the sorted order of the collection.
|
2165 |
+
// This will fallback onto appending childView's to the end.
|
2166 |
+
//
|
2167 |
+
// option to pass `{comparator: compFunction()}` to allow the `CollectionView`
|
2168 |
+
// to use a custom sort order for the collection.
|
2169 |
+
constructor: function(options) {
|
2170 |
+
this.once('render', this._initialEvents);
|
2171 |
+
this._initChildViewStorage();
|
2172 |
+
|
2173 |
+
Marionette.View.apply(this, arguments);
|
2174 |
+
|
2175 |
+
this.on({
|
2176 |
+
'before:show': this._onBeforeShowCalled,
|
2177 |
+
'show': this._onShowCalled,
|
2178 |
+
'before:attach': this._onBeforeAttachCalled,
|
2179 |
+
'attach': this._onAttachCalled
|
2180 |
+
});
|
2181 |
+
this.initRenderBuffer();
|
2182 |
+
},
|
2183 |
+
|
2184 |
+
// Instead of inserting elements one by one into the page,
|
2185 |
+
// it's much more performant to insert elements into a document
|
2186 |
+
// fragment and then insert that document fragment into the page
|
2187 |
+
initRenderBuffer: function() {
|
2188 |
+
this._bufferedChildren = [];
|
2189 |
+
},
|
2190 |
+
|
2191 |
+
startBuffering: function() {
|
2192 |
+
this.initRenderBuffer();
|
2193 |
+
this.isBuffering = true;
|
2194 |
+
},
|
2195 |
+
|
2196 |
+
endBuffering: function() {
|
2197 |
+
// Only trigger attach if already shown and attached, otherwise Region#show() handles this.
|
2198 |
+
var canTriggerAttach = this._isShown && Marionette.isNodeAttached(this.el);
|
2199 |
+
var nestedViews;
|
2200 |
+
|
2201 |
+
this.isBuffering = false;
|
2202 |
+
|
2203 |
+
if (this._isShown) {
|
2204 |
+
this._triggerMethodMany(this._bufferedChildren, this, 'before:show');
|
2205 |
+
}
|
2206 |
+
if (canTriggerAttach && this._triggerBeforeAttach) {
|
2207 |
+
nestedViews = this._getNestedViews();
|
2208 |
+
this._triggerMethodMany(nestedViews, this, 'before:attach');
|
2209 |
+
}
|
2210 |
+
|
2211 |
+
this.attachBuffer(this, this._createBuffer());
|
2212 |
+
|
2213 |
+
if (canTriggerAttach && this._triggerAttach) {
|
2214 |
+
nestedViews = this._getNestedViews();
|
2215 |
+
this._triggerMethodMany(nestedViews, this, 'attach');
|
2216 |
+
}
|
2217 |
+
if (this._isShown) {
|
2218 |
+
this._triggerMethodMany(this._bufferedChildren, this, 'show');
|
2219 |
+
}
|
2220 |
+
this.initRenderBuffer();
|
2221 |
+
},
|
2222 |
+
|
2223 |
+
_triggerMethodMany: function(targets, source, eventName) {
|
2224 |
+
var args = _.drop(arguments, 3);
|
2225 |
+
|
2226 |
+
_.each(targets, function(target) {
|
2227 |
+
Marionette.triggerMethodOn.apply(target, [target, eventName, target, source].concat(args));
|
2228 |
+
});
|
2229 |
+
},
|
2230 |
+
|
2231 |
+
// Configured the initial events that the collection view
|
2232 |
+
// binds to.
|
2233 |
+
_initialEvents: function() {
|
2234 |
+
if (this.collection) {
|
2235 |
+
this.listenTo(this.collection, 'add', this._onCollectionAdd);
|
2236 |
+
this.listenTo(this.collection, 'remove', this._onCollectionRemove);
|
2237 |
+
this.listenTo(this.collection, 'reset', this.render);
|
2238 |
+
|
2239 |
+
if (this.getOption('sort')) {
|
2240 |
+
this.listenTo(this.collection, 'sort', this._sortViews);
|
2241 |
+
}
|
2242 |
+
}
|
2243 |
+
},
|
2244 |
+
|
2245 |
+
// Handle a child added to the collection
|
2246 |
+
_onCollectionAdd: function(child, collection, opts) {
|
2247 |
+
// `index` is present when adding with `at` since BB 1.2; indexOf fallback for < 1.2
|
2248 |
+
var index = opts.at !== undefined && (opts.index || collection.indexOf(child));
|
2249 |
+
|
2250 |
+
// When filtered or when there is no initial index, calculate index.
|
2251 |
+
if (this.getOption('filter') || index === false) {
|
2252 |
+
index = _.indexOf(this._filteredSortedModels(index), child);
|
2253 |
+
}
|
2254 |
+
|
2255 |
+
if (this._shouldAddChild(child, index)) {
|
2256 |
+
this.destroyEmptyView();
|
2257 |
+
var ChildView = this.getChildView(child);
|
2258 |
+
this.addChild(child, ChildView, index);
|
2259 |
+
}
|
2260 |
+
},
|
2261 |
+
|
2262 |
+
// get the child view by model it holds, and remove it
|
2263 |
+
_onCollectionRemove: function(model) {
|
2264 |
+
var view = this.children.findByModel(model);
|
2265 |
+
this.removeChildView(view);
|
2266 |
+
this.checkEmpty();
|
2267 |
+
},
|
2268 |
+
|
2269 |
+
_onBeforeShowCalled: function() {
|
2270 |
+
// Reset attach event flags at the top of the Region#show() event lifecycle; if the Region's
|
2271 |
+
// show() options permit onBeforeAttach/onAttach events, these flags will be set true again.
|
2272 |
+
this._triggerBeforeAttach = this._triggerAttach = false;
|
2273 |
+
this.children.each(function(childView) {
|
2274 |
+
Marionette.triggerMethodOn(childView, 'before:show', childView);
|
2275 |
+
});
|
2276 |
+
},
|
2277 |
+
|
2278 |
+
_onShowCalled: function() {
|
2279 |
+
this.children.each(function(childView) {
|
2280 |
+
Marionette.triggerMethodOn(childView, 'show', childView);
|
2281 |
+
});
|
2282 |
+
},
|
2283 |
+
|
2284 |
+
// If during Region#show() onBeforeAttach was fired, continue firing it for child views
|
2285 |
+
_onBeforeAttachCalled: function() {
|
2286 |
+
this._triggerBeforeAttach = true;
|
2287 |
+
},
|
2288 |
+
|
2289 |
+
// If during Region#show() onAttach was fired, continue firing it for child views
|
2290 |
+
_onAttachCalled: function() {
|
2291 |
+
this._triggerAttach = true;
|
2292 |
+
},
|
2293 |
+
|
2294 |
+
// Render children views. Override this method to
|
2295 |
+
// provide your own implementation of a render function for
|
2296 |
+
// the collection view.
|
2297 |
+
render: function() {
|
2298 |
+
this._ensureViewIsIntact();
|
2299 |
+
this.triggerMethod('before:render', this);
|
2300 |
+
this._renderChildren();
|
2301 |
+
this.isRendered = true;
|
2302 |
+
this.triggerMethod('render', this);
|
2303 |
+
return this;
|
2304 |
+
},
|
2305 |
+
|
2306 |
+
// Reorder DOM after sorting. When your element's rendering
|
2307 |
+
// do not use their index, you can pass reorderOnSort: true
|
2308 |
+
// to only reorder the DOM after a sort instead of rendering
|
2309 |
+
// all the collectionView
|
2310 |
+
reorder: function() {
|
2311 |
+
var children = this.children;
|
2312 |
+
var models = this._filteredSortedModels();
|
2313 |
+
var anyModelsAdded = _.some(models, function(model) {
|
2314 |
+
return !children.findByModel(model);
|
2315 |
+
});
|
2316 |
+
|
2317 |
+
// If there are any new models added due to filtering
|
2318 |
+
// We need to add child views
|
2319 |
+
// So render as normal
|
2320 |
+
if (anyModelsAdded) {
|
2321 |
+
this.render();
|
2322 |
+
} else {
|
2323 |
+
// get the DOM nodes in the same order as the models
|
2324 |
+
var elsToReorder = _.map(models, function(model, index) {
|
2325 |
+
var view = children.findByModel(model);
|
2326 |
+
view._index = index;
|
2327 |
+
return view.el;
|
2328 |
+
});
|
2329 |
+
|
2330 |
+
// find the views that were children before but arent in this new ordering
|
2331 |
+
var filteredOutViews = children.filter(function(view) {
|
2332 |
+
return !_.contains(elsToReorder, view.el);
|
2333 |
+
});
|
2334 |
+
|
2335 |
+
this.triggerMethod('before:reorder');
|
2336 |
+
|
2337 |
+
// since append moves elements that are already in the DOM,
|
2338 |
+
// appending the elements will effectively reorder them
|
2339 |
+
this._appendReorderedChildren(elsToReorder);
|
2340 |
+
|
2341 |
+
// remove any views that have been filtered out
|
2342 |
+
_.each(filteredOutViews, this.removeChildView, this);
|
2343 |
+
this.checkEmpty();
|
2344 |
+
|
2345 |
+
this.triggerMethod('reorder');
|
2346 |
+
}
|
2347 |
+
},
|
2348 |
+
|
2349 |
+
// Render view after sorting. Override this method to
|
2350 |
+
// change how the view renders after a `sort` on the collection.
|
2351 |
+
// An example of this would be to only `renderChildren` in a `CompositeView`
|
2352 |
+
// rather than the full view.
|
2353 |
+
resortView: function() {
|
2354 |
+
if (Marionette.getOption(this, 'reorderOnSort')) {
|
2355 |
+
this.reorder();
|
2356 |
+
} else {
|
2357 |
+
this.render();
|
2358 |
+
}
|
2359 |
+
},
|
2360 |
+
|
2361 |
+
// Internal method. This checks for any changes in the order of the collection.
|
2362 |
+
// If the index of any view doesn't match, it will render.
|
2363 |
+
_sortViews: function() {
|
2364 |
+
var models = this._filteredSortedModels();
|
2365 |
+
|
2366 |
+
// check for any changes in sort order of views
|
2367 |
+
var orderChanged = _.find(models, function(item, index) {
|
2368 |
+
var view = this.children.findByModel(item);
|
2369 |
+
return !view || view._index !== index;
|
2370 |
+
}, this);
|
2371 |
+
|
2372 |
+
if (orderChanged) {
|
2373 |
+
this.resortView();
|
2374 |
+
}
|
2375 |
+
},
|
2376 |
+
|
2377 |
+
// Internal reference to what index a `emptyView` is.
|
2378 |
+
_emptyViewIndex: -1,
|
2379 |
+
|
2380 |
+
// Internal method. Separated so that CompositeView can append to the childViewContainer
|
2381 |
+
// if necessary
|
2382 |
+
_appendReorderedChildren: function(children) {
|
2383 |
+
this.$el.append(children);
|
2384 |
+
},
|
2385 |
+
|
2386 |
+
// Internal method. Separated so that CompositeView can have
|
2387 |
+
// more control over events being triggered, around the rendering
|
2388 |
+
// process
|
2389 |
+
_renderChildren: function() {
|
2390 |
+
this.destroyEmptyView();
|
2391 |
+
this.destroyChildren({checkEmpty: false});
|
2392 |
+
|
2393 |
+
if (this.isEmpty(this.collection)) {
|
2394 |
+
this.showEmptyView();
|
2395 |
+
} else {
|
2396 |
+
this.triggerMethod('before:render:collection', this);
|
2397 |
+
this.startBuffering();
|
2398 |
+
this.showCollection();
|
2399 |
+
this.endBuffering();
|
2400 |
+
this.triggerMethod('render:collection', this);
|
2401 |
+
|
2402 |
+
// If we have shown children and none have passed the filter, show the empty view
|
2403 |
+
if (this.children.isEmpty() && this.getOption('filter')) {
|
2404 |
+
this.showEmptyView();
|
2405 |
+
}
|
2406 |
+
}
|
2407 |
+
},
|
2408 |
+
|
2409 |
+
// Internal method to loop through collection and show each child view.
|
2410 |
+
showCollection: function() {
|
2411 |
+
var ChildView;
|
2412 |
+
|
2413 |
+
var models = this._filteredSortedModels();
|
2414 |
+
|
2415 |
+
_.each(models, function(child, index) {
|
2416 |
+
ChildView = this.getChildView(child);
|
2417 |
+
this.addChild(child, ChildView, index);
|
2418 |
+
}, this);
|
2419 |
+
},
|
2420 |
+
|
2421 |
+
// Allow the collection to be sorted by a custom view comparator
|
2422 |
+
_filteredSortedModels: function(addedAt) {
|
2423 |
+
var viewComparator = this.getViewComparator();
|
2424 |
+
var models = this.collection.models;
|
2425 |
+
addedAt = Math.min(Math.max(addedAt, 0), models.length - 1);
|
2426 |
+
|
2427 |
+
if (viewComparator) {
|
2428 |
+
var addedModel;
|
2429 |
+
// Preserve `at` location, even for a sorted view
|
2430 |
+
if (addedAt) {
|
2431 |
+
addedModel = models[addedAt];
|
2432 |
+
models = models.slice(0, addedAt).concat(models.slice(addedAt + 1));
|
2433 |
+
}
|
2434 |
+
models = this._sortModelsBy(models, viewComparator);
|
2435 |
+
if (addedModel) {
|
2436 |
+
models.splice(addedAt, 0, addedModel);
|
2437 |
+
}
|
2438 |
+
}
|
2439 |
+
|
2440 |
+
// Filter after sorting in case the filter uses the index
|
2441 |
+
if (this.getOption('filter')) {
|
2442 |
+
models = _.filter(models, function(model, index) {
|
2443 |
+
return this._shouldAddChild(model, index);
|
2444 |
+
}, this);
|
2445 |
+
}
|
2446 |
+
|
2447 |
+
return models;
|
2448 |
+
},
|
2449 |
+
|
2450 |
+
_sortModelsBy: function(models, comparator) {
|
2451 |
+
if (typeof comparator === 'string') {
|
2452 |
+
return _.sortBy(models, function(model) {
|
2453 |
+
return model.get(comparator);
|
2454 |
+
}, this);
|
2455 |
+
} else if (comparator.length === 1) {
|
2456 |
+
return _.sortBy(models, comparator, this);
|
2457 |
+
} else {
|
2458 |
+
return models.sort(_.bind(comparator, this));
|
2459 |
+
}
|
2460 |
+
},
|
2461 |
+
|
2462 |
+
// Internal method to show an empty view in place of
|
2463 |
+
// a collection of child views, when the collection is empty
|
2464 |
+
showEmptyView: function() {
|
2465 |
+
var EmptyView = this.getEmptyView();
|
2466 |
+
|
2467 |
+
if (EmptyView && !this._showingEmptyView) {
|
2468 |
+
this.triggerMethod('before:render:empty');
|
2469 |
+
|
2470 |
+
this._showingEmptyView = true;
|
2471 |
+
var model = new Backbone.Model();
|
2472 |
+
this.addEmptyView(model, EmptyView);
|
2473 |
+
|
2474 |
+
this.triggerMethod('render:empty');
|
2475 |
+
}
|
2476 |
+
},
|
2477 |
+
|
2478 |
+
// Internal method to destroy an existing emptyView instance
|
2479 |
+
// if one exists. Called when a collection view has been
|
2480 |
+
// rendered empty, and then a child is added to the collection.
|
2481 |
+
destroyEmptyView: function() {
|
2482 |
+
if (this._showingEmptyView) {
|
2483 |
+
this.triggerMethod('before:remove:empty');
|
2484 |
+
|
2485 |
+
this.destroyChildren();
|
2486 |
+
delete this._showingEmptyView;
|
2487 |
+
|
2488 |
+
this.triggerMethod('remove:empty');
|
2489 |
+
}
|
2490 |
+
},
|
2491 |
+
|
2492 |
+
// Retrieve the empty view class
|
2493 |
+
getEmptyView: function() {
|
2494 |
+
return this.getOption('emptyView');
|
2495 |
+
},
|
2496 |
+
|
2497 |
+
// Render and show the emptyView. Similar to addChild method
|
2498 |
+
// but "add:child" events are not fired, and the event from
|
2499 |
+
// emptyView are not forwarded
|
2500 |
+
addEmptyView: function(child, EmptyView) {
|
2501 |
+
// Only trigger attach if already shown, attached, and not buffering, otherwise endBuffer() or
|
2502 |
+
// Region#show() handles this.
|
2503 |
+
var canTriggerAttach = this._isShown && !this.isBuffering && Marionette.isNodeAttached(this.el);
|
2504 |
+
var nestedViews;
|
2505 |
+
|
2506 |
+
// get the emptyViewOptions, falling back to childViewOptions
|
2507 |
+
var emptyViewOptions = this.getOption('emptyViewOptions') ||
|
2508 |
+
this.getOption('childViewOptions');
|
2509 |
+
|
2510 |
+
if (_.isFunction(emptyViewOptions)) {
|
2511 |
+
emptyViewOptions = emptyViewOptions.call(this, child, this._emptyViewIndex);
|
2512 |
+
}
|
2513 |
+
|
2514 |
+
// build the empty view
|
2515 |
+
var view = this.buildChildView(child, EmptyView, emptyViewOptions);
|
2516 |
+
|
2517 |
+
view._parent = this;
|
2518 |
+
|
2519 |
+
// Proxy emptyView events
|
2520 |
+
this.proxyChildEvents(view);
|
2521 |
+
|
2522 |
+
view.once('render', function() {
|
2523 |
+
// trigger the 'before:show' event on `view` if the collection view has already been shown
|
2524 |
+
if (this._isShown) {
|
2525 |
+
Marionette.triggerMethodOn(view, 'before:show', view);
|
2526 |
+
}
|
2527 |
+
|
2528 |
+
// Trigger `before:attach` following `render` to avoid adding logic and event triggers
|
2529 |
+
// to public method `renderChildView()`.
|
2530 |
+
if (canTriggerAttach && this._triggerBeforeAttach) {
|
2531 |
+
nestedViews = this._getViewAndNested(view);
|
2532 |
+
this._triggerMethodMany(nestedViews, this, 'before:attach');
|
2533 |
+
}
|
2534 |
+
}, this);
|
2535 |
+
|
2536 |
+
// Store the `emptyView` like a `childView` so we can properly remove and/or close it later
|
2537 |
+
this.children.add(view);
|
2538 |
+
this.renderChildView(view, this._emptyViewIndex);
|
2539 |
+
|
2540 |
+
// Trigger `attach`
|
2541 |
+
if (canTriggerAttach && this._triggerAttach) {
|
2542 |
+
nestedViews = this._getViewAndNested(view);
|
2543 |
+
this._triggerMethodMany(nestedViews, this, 'attach');
|
2544 |
+
}
|
2545 |
+
// call the 'show' method if the collection view has already been shown
|
2546 |
+
if (this._isShown) {
|
2547 |
+
Marionette.triggerMethodOn(view, 'show', view);
|
2548 |
+
}
|
2549 |
+
},
|
2550 |
+
|
2551 |
+
// Retrieve the `childView` class, either from `this.options.childView`
|
2552 |
+
// or from the `childView` in the object definition. The "options"
|
2553 |
+
// takes precedence.
|
2554 |
+
// This method receives the model that will be passed to the instance
|
2555 |
+
// created from this `childView`. Overriding methods may use the child
|
2556 |
+
// to determine what `childView` class to return.
|
2557 |
+
getChildView: function(child) {
|
2558 |
+
var childView = this.getOption('childView');
|
2559 |
+
|
2560 |
+
if (!childView) {
|
2561 |
+
throw new Marionette.Error({
|
2562 |
+
name: 'NoChildViewError',
|
2563 |
+
message: 'A "childView" must be specified'
|
2564 |
+
});
|
2565 |
+
}
|
2566 |
+
|
2567 |
+
return childView;
|
2568 |
+
},
|
2569 |
+
|
2570 |
+
// Render the child's view and add it to the
|
2571 |
+
// HTML for the collection view at a given index.
|
2572 |
+
// This will also update the indices of later views in the collection
|
2573 |
+
// in order to keep the children in sync with the collection.
|
2574 |
+
addChild: function(child, ChildView, index) {
|
2575 |
+
var childViewOptions = this.getOption('childViewOptions');
|
2576 |
+
childViewOptions = Marionette._getValue(childViewOptions, this, [child, index]);
|
2577 |
+
|
2578 |
+
var view = this.buildChildView(child, ChildView, childViewOptions);
|
2579 |
+
|
2580 |
+
// increment indices of views after this one
|
2581 |
+
this._updateIndices(view, true, index);
|
2582 |
+
|
2583 |
+
this.triggerMethod('before:add:child', view);
|
2584 |
+
this._addChildView(view, index);
|
2585 |
+
this.triggerMethod('add:child', view);
|
2586 |
+
|
2587 |
+
view._parent = this;
|
2588 |
+
|
2589 |
+
return view;
|
2590 |
+
},
|
2591 |
+
|
2592 |
+
// Internal method. This decrements or increments the indices of views after the
|
2593 |
+
// added/removed view to keep in sync with the collection.
|
2594 |
+
_updateIndices: function(view, increment, index) {
|
2595 |
+
if (!this.getOption('sort')) {
|
2596 |
+
return;
|
2597 |
+
}
|
2598 |
+
|
2599 |
+
if (increment) {
|
2600 |
+
// assign the index to the view
|
2601 |
+
view._index = index;
|
2602 |
+
}
|
2603 |
+
|
2604 |
+
// update the indexes of views after this one
|
2605 |
+
this.children.each(function(laterView) {
|
2606 |
+
if (laterView._index >= view._index) {
|
2607 |
+
laterView._index += increment ? 1 : -1;
|
2608 |
+
}
|
2609 |
+
});
|
2610 |
+
},
|
2611 |
+
|
2612 |
+
// Internal Method. Add the view to children and render it at
|
2613 |
+
// the given index.
|
2614 |
+
_addChildView: function(view, index) {
|
2615 |
+
// Only trigger attach if already shown, attached, and not buffering, otherwise endBuffer() or
|
2616 |
+
// Region#show() handles this.
|
2617 |
+
var canTriggerAttach = this._isShown && !this.isBuffering && Marionette.isNodeAttached(this.el);
|
2618 |
+
var nestedViews;
|
2619 |
+
|
2620 |
+
// set up the child view event forwarding
|
2621 |
+
this.proxyChildEvents(view);
|
2622 |
+
|
2623 |
+
view.once('render', function() {
|
2624 |
+
// trigger the 'before:show' event on `view` if the collection view has already been shown
|
2625 |
+
if (this._isShown && !this.isBuffering) {
|
2626 |
+
Marionette.triggerMethodOn(view, 'before:show', view);
|
2627 |
+
}
|
2628 |
+
|
2629 |
+
// Trigger `before:attach` following `render` to avoid adding logic and event triggers
|
2630 |
+
// to public method `renderChildView()`.
|
2631 |
+
if (canTriggerAttach && this._triggerBeforeAttach) {
|
2632 |
+
nestedViews = this._getViewAndNested(view);
|
2633 |
+
this._triggerMethodMany(nestedViews, this, 'before:attach');
|
2634 |
+
}
|
2635 |
+
}, this);
|
2636 |
+
|
2637 |
+
// Store the child view itself so we can properly remove and/or destroy it later
|
2638 |
+
this.children.add(view);
|
2639 |
+
this.renderChildView(view, index);
|
2640 |
+
|
2641 |
+
// Trigger `attach`
|
2642 |
+
if (canTriggerAttach && this._triggerAttach) {
|
2643 |
+
nestedViews = this._getViewAndNested(view);
|
2644 |
+
this._triggerMethodMany(nestedViews, this, 'attach');
|
2645 |
+
}
|
2646 |
+
// Trigger `show`
|
2647 |
+
if (this._isShown && !this.isBuffering) {
|
2648 |
+
Marionette.triggerMethodOn(view, 'show', view);
|
2649 |
+
}
|
2650 |
+
},
|
2651 |
+
|
2652 |
+
// render the child view
|
2653 |
+
renderChildView: function(view, index) {
|
2654 |
+
if (!view.supportsRenderLifecycle) {
|
2655 |
+
Marionette.triggerMethodOn(view, 'before:render', view);
|
2656 |
+
}
|
2657 |
+
view.render();
|
2658 |
+
if (!view.supportsRenderLifecycle) {
|
2659 |
+
Marionette.triggerMethodOn(view, 'render', view);
|
2660 |
+
}
|
2661 |
+
this.attachHtml(this, view, index);
|
2662 |
+
return view;
|
2663 |
+
},
|
2664 |
+
|
2665 |
+
// Build a `childView` for a model in the collection.
|
2666 |
+
buildChildView: function(child, ChildViewClass, childViewOptions) {
|
2667 |
+
var options = _.extend({model: child}, childViewOptions);
|
2668 |
+
var childView = new ChildViewClass(options);
|
2669 |
+
Marionette.MonitorDOMRefresh(childView);
|
2670 |
+
return childView;
|
2671 |
+
},
|
2672 |
+
|
2673 |
+
// Remove the child view and destroy it.
|
2674 |
+
// This function also updates the indices of
|
2675 |
+
// later views in the collection in order to keep
|
2676 |
+
// the children in sync with the collection.
|
2677 |
+
removeChildView: function(view) {
|
2678 |
+
if (!view) { return view; }
|
2679 |
+
|
2680 |
+
this.triggerMethod('before:remove:child', view);
|
2681 |
+
|
2682 |
+
if (!view.supportsDestroyLifecycle) {
|
2683 |
+
Marionette.triggerMethodOn(view, 'before:destroy', view);
|
2684 |
+
}
|
2685 |
+
// call 'destroy' or 'remove', depending on which is found
|
2686 |
+
if (view.destroy) {
|
2687 |
+
view.destroy();
|
2688 |
+
} else {
|
2689 |
+
view.remove();
|
2690 |
+
}
|
2691 |
+
if (!view.supportsDestroyLifecycle) {
|
2692 |
+
Marionette.triggerMethodOn(view, 'destroy', view);
|
2693 |
+
}
|
2694 |
+
|
2695 |
+
delete view._parent;
|
2696 |
+
this.stopListening(view);
|
2697 |
+
this.children.remove(view);
|
2698 |
+
this.triggerMethod('remove:child', view);
|
2699 |
+
|
2700 |
+
// decrement the index of views after this one
|
2701 |
+
this._updateIndices(view, false);
|
2702 |
+
|
2703 |
+
return view;
|
2704 |
+
},
|
2705 |
+
|
2706 |
+
// check if the collection is empty
|
2707 |
+
isEmpty: function() {
|
2708 |
+
return !this.collection || this.collection.length === 0;
|
2709 |
+
},
|
2710 |
+
|
2711 |
+
// If empty, show the empty view
|
2712 |
+
checkEmpty: function() {
|
2713 |
+
if (this.isEmpty(this.collection)) {
|
2714 |
+
this.showEmptyView();
|
2715 |
+
}
|
2716 |
+
},
|
2717 |
+
|
2718 |
+
// You might need to override this if you've overridden attachHtml
|
2719 |
+
attachBuffer: function(collectionView, buffer) {
|
2720 |
+
collectionView.$el.append(buffer);
|
2721 |
+
},
|
2722 |
+
|
2723 |
+
// Create a fragment buffer from the currently buffered children
|
2724 |
+
_createBuffer: function() {
|
2725 |
+
var elBuffer = document.createDocumentFragment();
|
2726 |
+
_.each(this._bufferedChildren, function(b) {
|
2727 |
+
elBuffer.appendChild(b.el);
|
2728 |
+
});
|
2729 |
+
return elBuffer;
|
2730 |
+
},
|
2731 |
+
|
2732 |
+
// Append the HTML to the collection's `el`.
|
2733 |
+
// Override this method to do something other
|
2734 |
+
// than `.append`.
|
2735 |
+
attachHtml: function(collectionView, childView, index) {
|
2736 |
+
if (collectionView.isBuffering) {
|
2737 |
+
// buffering happens on reset events and initial renders
|
2738 |
+
// in order to reduce the number of inserts into the
|
2739 |
+
// document, which are expensive.
|
2740 |
+
collectionView._bufferedChildren.splice(index, 0, childView);
|
2741 |
+
} else {
|
2742 |
+
// If we've already rendered the main collection, append
|
2743 |
+
// the new child into the correct order if we need to. Otherwise
|
2744 |
+
// append to the end.
|
2745 |
+
if (!collectionView._insertBefore(childView, index)) {
|
2746 |
+
collectionView._insertAfter(childView);
|
2747 |
+
}
|
2748 |
+
}
|
2749 |
+
},
|
2750 |
+
|
2751 |
+
// Internal method. Check whether we need to insert the view into
|
2752 |
+
// the correct position.
|
2753 |
+
_insertBefore: function(childView, index) {
|
2754 |
+
var currentView;
|
2755 |
+
var findPosition = this.getOption('sort') && (index < this.children.length - 1);
|
2756 |
+
if (findPosition) {
|
2757 |
+
// Find the view after this one
|
2758 |
+
currentView = this.children.find(function(view) {
|
2759 |
+
return view._index === index + 1;
|
2760 |
+
});
|
2761 |
+
}
|
2762 |
+
|
2763 |
+
if (currentView) {
|
2764 |
+
currentView.$el.before(childView.el);
|
2765 |
+
return true;
|
2766 |
+
}
|
2767 |
+
|
2768 |
+
return false;
|
2769 |
+
},
|
2770 |
+
|
2771 |
+
// Internal method. Append a view to the end of the $el
|
2772 |
+
_insertAfter: function(childView) {
|
2773 |
+
this.$el.append(childView.el);
|
2774 |
+
},
|
2775 |
+
|
2776 |
+
// Internal method to set up the `children` object for
|
2777 |
+
// storing all of the child views
|
2778 |
+
_initChildViewStorage: function() {
|
2779 |
+
this.children = new Backbone.ChildViewContainer();
|
2780 |
+
},
|
2781 |
+
|
2782 |
+
// Handle cleanup and other destroying needs for the collection of views
|
2783 |
+
destroy: function() {
|
2784 |
+
if (this.isDestroyed) { return this; }
|
2785 |
+
|
2786 |
+
this.triggerMethod('before:destroy:collection');
|
2787 |
+
this.destroyChildren({checkEmpty: false});
|
2788 |
+
this.triggerMethod('destroy:collection');
|
2789 |
+
|
2790 |
+
return Marionette.View.prototype.destroy.apply(this, arguments);
|
2791 |
+
},
|
2792 |
+
|
2793 |
+
// Destroy the child views that this collection view
|
2794 |
+
// is holding on to, if any
|
2795 |
+
destroyChildren: function(options) {
|
2796 |
+
var destroyOptions = options || {};
|
2797 |
+
var shouldCheckEmpty = true;
|
2798 |
+
var childViews = this.children.map(_.identity);
|
2799 |
+
|
2800 |
+
if (!_.isUndefined(destroyOptions.checkEmpty)) {
|
2801 |
+
shouldCheckEmpty = destroyOptions.checkEmpty;
|
2802 |
+
}
|
2803 |
+
|
2804 |
+
this.children.each(this.removeChildView, this);
|
2805 |
+
|
2806 |
+
if (shouldCheckEmpty) {
|
2807 |
+
this.checkEmpty();
|
2808 |
+
}
|
2809 |
+
return childViews;
|
2810 |
+
},
|
2811 |
+
|
2812 |
+
// Return true if the given child should be shown
|
2813 |
+
// Return false otherwise
|
2814 |
+
// The filter will be passed (child, index, collection)
|
2815 |
+
// Where
|
2816 |
+
// 'child' is the given model
|
2817 |
+
// 'index' is the index of that model in the collection
|
2818 |
+
// 'collection' is the collection referenced by this CollectionView
|
2819 |
+
_shouldAddChild: function(child, index) {
|
2820 |
+
var filter = this.getOption('filter');
|
2821 |
+
return !_.isFunction(filter) || filter.call(this, child, index, this.collection);
|
2822 |
+
},
|
2823 |
+
|
2824 |
+
// Set up the child view event forwarding. Uses a "childview:"
|
2825 |
+
// prefix in front of all forwarded events.
|
2826 |
+
proxyChildEvents: function(view) {
|
2827 |
+
var prefix = this.getOption('childViewEventPrefix');
|
2828 |
+
|
2829 |
+
// Forward all child view events through the parent,
|
2830 |
+
// prepending "childview:" to the event name
|
2831 |
+
this.listenTo(view, 'all', function() {
|
2832 |
+
var args = _.toArray(arguments);
|
2833 |
+
var rootEvent = args[0];
|
2834 |
+
var childEvents = this.normalizeMethods(_.result(this, 'childEvents'));
|
2835 |
+
|
2836 |
+
args[0] = prefix + ':' + rootEvent;
|
2837 |
+
args.splice(1, 0, view);
|
2838 |
+
|
2839 |
+
// call collectionView childEvent if defined
|
2840 |
+
if (typeof childEvents !== 'undefined' && _.isFunction(childEvents[rootEvent])) {
|
2841 |
+
childEvents[rootEvent].apply(this, args.slice(1));
|
2842 |
+
}
|
2843 |
+
|
2844 |
+
this.triggerMethod.apply(this, args);
|
2845 |
+
});
|
2846 |
+
},
|
2847 |
+
|
2848 |
+
_getImmediateChildren: function() {
|
2849 |
+
return _.values(this.children._views);
|
2850 |
+
},
|
2851 |
+
|
2852 |
+
_getViewAndNested: function(view) {
|
2853 |
+
// This will not fail on Backbone.View which does not have #_getNestedViews.
|
2854 |
+
return [view].concat(_.result(view, '_getNestedViews') || []);
|
2855 |
+
},
|
2856 |
+
|
2857 |
+
getViewComparator: function() {
|
2858 |
+
return this.getOption('viewComparator');
|
2859 |
+
}
|
2860 |
+
});
|
2861 |
+
|
2862 |
+
/* jshint maxstatements: 17, maxlen: 117 */
|
2863 |
+
|
2864 |
+
// Composite View
|
2865 |
+
// --------------
|
2866 |
+
|
2867 |
+
// Used for rendering a branch-leaf, hierarchical structure.
|
2868 |
+
// Extends directly from CollectionView and also renders an
|
2869 |
+
// a child view as `modelView`, for the top leaf
|
2870 |
+
Marionette.CompositeView = Marionette.CollectionView.extend({
|
2871 |
+
|
2872 |
+
// Setting up the inheritance chain which allows changes to
|
2873 |
+
// Marionette.CollectionView.prototype.constructor which allows overriding
|
2874 |
+
// option to pass '{sort: false}' to prevent the CompositeView from
|
2875 |
+
// maintaining the sorted order of the collection.
|
2876 |
+
// This will fallback onto appending childView's to the end.
|
2877 |
+
constructor: function() {
|
2878 |
+
Marionette.CollectionView.apply(this, arguments);
|
2879 |
+
},
|
2880 |
+
|
2881 |
+
// Configured the initial events that the composite view
|
2882 |
+
// binds to. Override this method to prevent the initial
|
2883 |
+
// events, or to add your own initial events.
|
2884 |
+
_initialEvents: function() {
|
2885 |
+
|
2886 |
+
// Bind only after composite view is rendered to avoid adding child views
|
2887 |
+
// to nonexistent childViewContainer
|
2888 |
+
|
2889 |
+
if (this.collection) {
|
2890 |
+
this.listenTo(this.collection, 'add', this._onCollectionAdd);
|
2891 |
+
this.listenTo(this.collection, 'remove', this._onCollectionRemove);
|
2892 |
+
this.listenTo(this.collection, 'reset', this._renderChildren);
|
2893 |
+
|
2894 |
+
if (this.getOption('sort')) {
|
2895 |
+
this.listenTo(this.collection, 'sort', this._sortViews);
|
2896 |
+
}
|
2897 |
+
}
|
2898 |
+
},
|
2899 |
+
|
2900 |
+
// Retrieve the `childView` to be used when rendering each of
|
2901 |
+
// the items in the collection. The default is to return
|
2902 |
+
// `this.childView` or Marionette.CompositeView if no `childView`
|
2903 |
+
// has been defined
|
2904 |
+
getChildView: function(child) {
|
2905 |
+
var childView = this.getOption('childView') || this.constructor;
|
2906 |
+
|
2907 |
+
return childView;
|
2908 |
+
},
|
2909 |
+
|
2910 |
+
// Serialize the model for the view.
|
2911 |
+
// You can override the `serializeData` method in your own view
|
2912 |
+
// definition, to provide custom serialization for your view's data.
|
2913 |
+
serializeData: function() {
|
2914 |
+
var data = {};
|
2915 |
+
|
2916 |
+
if (this.model) {
|
2917 |
+
data = _.partial(this.serializeModel, this.model).apply(this, arguments);
|
2918 |
+
}
|
2919 |
+
|
2920 |
+
return data;
|
2921 |
+
},
|
2922 |
+
|
2923 |
+
// Renders the model and the collection.
|
2924 |
+
render: function() {
|
2925 |
+
this._ensureViewIsIntact();
|
2926 |
+
this._isRendering = true;
|
2927 |
+
this.resetChildViewContainer();
|
2928 |
+
|
2929 |
+
this.triggerMethod('before:render', this);
|
2930 |
+
|
2931 |
+
this._renderTemplate();
|
2932 |
+
this._renderChildren();
|
2933 |
+
|
2934 |
+
this._isRendering = false;
|
2935 |
+
this.isRendered = true;
|
2936 |
+
this.triggerMethod('render', this);
|
2937 |
+
return this;
|
2938 |
+
},
|
2939 |
+
|
2940 |
+
_renderChildren: function() {
|
2941 |
+
if (this.isRendered || this._isRendering) {
|
2942 |
+
Marionette.CollectionView.prototype._renderChildren.call(this);
|
2943 |
+
}
|
2944 |
+
},
|
2945 |
+
|
2946 |
+
// Render the root template that the children
|
2947 |
+
// views are appended to
|
2948 |
+
_renderTemplate: function() {
|
2949 |
+
var data = {};
|
2950 |
+
data = this.serializeData();
|
2951 |
+
data = this.mixinTemplateHelpers(data);
|
2952 |
+
|
2953 |
+
this.triggerMethod('before:render:template');
|
2954 |
+
|
2955 |
+
var template = this.getTemplate();
|
2956 |
+
var html = Marionette.Renderer.render(template, data, this);
|
2957 |
+
this.attachElContent(html);
|
2958 |
+
|
2959 |
+
// the ui bindings is done here and not at the end of render since they
|
2960 |
+
// will not be available until after the model is rendered, but should be
|
2961 |
+
// available before the collection is rendered.
|
2962 |
+
this.bindUIElements();
|
2963 |
+
this.triggerMethod('render:template');
|
2964 |
+
},
|
2965 |
+
|
2966 |
+
// Attaches the content of the root.
|
2967 |
+
// This method can be overridden to optimize rendering,
|
2968 |
+
// or to render in a non standard way.
|
2969 |
+
//
|
2970 |
+
// For example, using `innerHTML` instead of `$el.html`
|
2971 |
+
//
|
2972 |
+
// ```js
|
2973 |
+
// attachElContent: function(html) {
|
2974 |
+
// this.el.innerHTML = html;
|
2975 |
+
// return this;
|
2976 |
+
// }
|
2977 |
+
// ```
|
2978 |
+
attachElContent: function(html) {
|
2979 |
+
this.$el.html(html);
|
2980 |
+
|
2981 |
+
return this;
|
2982 |
+
},
|
2983 |
+
|
2984 |
+
// You might need to override this if you've overridden attachHtml
|
2985 |
+
attachBuffer: function(compositeView, buffer) {
|
2986 |
+
var $container = this.getChildViewContainer(compositeView);
|
2987 |
+
$container.append(buffer);
|
2988 |
+
},
|
2989 |
+
|
2990 |
+
// Internal method. Append a view to the end of the $el.
|
2991 |
+
// Overidden from CollectionView to ensure view is appended to
|
2992 |
+
// childViewContainer
|
2993 |
+
_insertAfter: function(childView) {
|
2994 |
+
var $container = this.getChildViewContainer(this, childView);
|
2995 |
+
$container.append(childView.el);
|
2996 |
+
},
|
2997 |
+
|
2998 |
+
// Internal method. Append reordered childView'.
|
2999 |
+
// Overidden from CollectionView to ensure reordered views
|
3000 |
+
// are appended to childViewContainer
|
3001 |
+
_appendReorderedChildren: function(children) {
|
3002 |
+
var $container = this.getChildViewContainer(this);
|
3003 |
+
$container.append(children);
|
3004 |
+
},
|
3005 |
+
|
3006 |
+
// Internal method to ensure an `$childViewContainer` exists, for the
|
3007 |
+
// `attachHtml` method to use.
|
3008 |
+
getChildViewContainer: function(containerView, childView) {
|
3009 |
+
if (!!containerView.$childViewContainer) {
|
3010 |
+
return containerView.$childViewContainer;
|
3011 |
+
}
|
3012 |
+
|
3013 |
+
var container;
|
3014 |
+
var childViewContainer = Marionette.getOption(containerView, 'childViewContainer');
|
3015 |
+
if (childViewContainer) {
|
3016 |
+
|
3017 |
+
var selector = Marionette._getValue(childViewContainer, containerView);
|
3018 |
+
|
3019 |
+
if (selector.charAt(0) === '@' && containerView.ui) {
|
3020 |
+
container = containerView.ui[selector.substr(4)];
|
3021 |
+
} else {
|
3022 |
+
container = containerView.$(selector);
|
3023 |
+
}
|
3024 |
+
|
3025 |
+
if (container.length <= 0) {
|
3026 |
+
throw new Marionette.Error({
|
3027 |
+
name: 'ChildViewContainerMissingError',
|
3028 |
+
message: 'The specified "childViewContainer" was not found: ' + containerView.childViewContainer
|
3029 |
+
});
|
3030 |
+
}
|
3031 |
+
|
3032 |
+
} else {
|
3033 |
+
container = containerView.$el;
|
3034 |
+
}
|
3035 |
+
|
3036 |
+
containerView.$childViewContainer = container;
|
3037 |
+
return container;
|
3038 |
+
},
|
3039 |
+
|
3040 |
+
// Internal method to reset the `$childViewContainer` on render
|
3041 |
+
resetChildViewContainer: function() {
|
3042 |
+
if (this.$childViewContainer) {
|
3043 |
+
this.$childViewContainer = undefined;
|
3044 |
+
}
|
3045 |
+
}
|
3046 |
+
});
|
3047 |
+
|
3048 |
+
// Layout View
|
3049 |
+
// -----------
|
3050 |
+
|
3051 |
+
// Used for managing application layoutViews, nested layoutViews and
|
3052 |
+
// multiple regions within an application or sub-application.
|
3053 |
+
//
|
3054 |
+
// A specialized view class that renders an area of HTML and then
|
3055 |
+
// attaches `Region` instances to the specified `regions`.
|
3056 |
+
// Used for composite view management and sub-application areas.
|
3057 |
+
Marionette.LayoutView = Marionette.ItemView.extend({
|
3058 |
+
regionClass: Marionette.Region,
|
3059 |
+
|
3060 |
+
options: {
|
3061 |
+
destroyImmediate: false
|
3062 |
+
},
|
3063 |
+
|
3064 |
+
// used as the prefix for child view events
|
3065 |
+
// that are forwarded through the layoutview
|
3066 |
+
childViewEventPrefix: 'childview',
|
3067 |
+
|
3068 |
+
// Ensure the regions are available when the `initialize` method
|
3069 |
+
// is called.
|
3070 |
+
constructor: function(options) {
|
3071 |
+
options = options || {};
|
3072 |
+
|
3073 |
+
this._firstRender = true;
|
3074 |
+
this._initializeRegions(options);
|
3075 |
+
|
3076 |
+
Marionette.ItemView.call(this, options);
|
3077 |
+
},
|
3078 |
+
|
3079 |
+
// LayoutView's render will use the existing region objects the
|
3080 |
+
// first time it is called. Subsequent calls will destroy the
|
3081 |
+
// views that the regions are showing and then reset the `el`
|
3082 |
+
// for the regions to the newly rendered DOM elements.
|
3083 |
+
render: function() {
|
3084 |
+
this._ensureViewIsIntact();
|
3085 |
+
|
3086 |
+
if (this._firstRender) {
|
3087 |
+
// if this is the first render, don't do anything to
|
3088 |
+
// reset the regions
|
3089 |
+
this._firstRender = false;
|
3090 |
+
} else {
|
3091 |
+
// If this is not the first render call, then we need to
|
3092 |
+
// re-initialize the `el` for each region
|
3093 |
+
this._reInitializeRegions();
|
3094 |
+
}
|
3095 |
+
|
3096 |
+
return Marionette.ItemView.prototype.render.apply(this, arguments);
|
3097 |
+
},
|
3098 |
+
|
3099 |
+
// Handle destroying regions, and then destroy the view itself.
|
3100 |
+
destroy: function() {
|
3101 |
+
if (this.isDestroyed) { return this; }
|
3102 |
+
// #2134: remove parent element before destroying the child views, so
|
3103 |
+
// removing the child views doesn't retrigger repaints
|
3104 |
+
if (this.getOption('destroyImmediate') === true) {
|
3105 |
+
this.$el.remove();
|
3106 |
+
}
|
3107 |
+
this.regionManager.destroy();
|
3108 |
+
return Marionette.ItemView.prototype.destroy.apply(this, arguments);
|
3109 |
+
},
|
3110 |
+
|
3111 |
+
showChildView: function(regionName, view, options) {
|
3112 |
+
var region = this.getRegion(regionName);
|
3113 |
+
return region.show.apply(region, _.rest(arguments));
|
3114 |
+
},
|
3115 |
+
|
3116 |
+
getChildView: function(regionName) {
|
3117 |
+
return this.getRegion(regionName).currentView;
|
3118 |
+
},
|
3119 |
+
|
3120 |
+
// Add a single region, by name, to the layoutView
|
3121 |
+
addRegion: function(name, definition) {
|
3122 |
+
var regions = {};
|
3123 |
+
regions[name] = definition;
|
3124 |
+
return this._buildRegions(regions)[name];
|
3125 |
+
},
|
3126 |
+
|
3127 |
+
// Add multiple regions as a {name: definition, name2: def2} object literal
|
3128 |
+
addRegions: function(regions) {
|
3129 |
+
this.regions = _.extend({}, this.regions, regions);
|
3130 |
+
return this._buildRegions(regions);
|
3131 |
+
},
|
3132 |
+
|
3133 |
+
// Remove a single region from the LayoutView, by name
|
3134 |
+
removeRegion: function(name) {
|
3135 |
+
delete this.regions[name];
|
3136 |
+
return this.regionManager.removeRegion(name);
|
3137 |
+
},
|
3138 |
+
|
3139 |
+
// Provides alternative access to regions
|
3140 |
+
// Accepts the region name
|
3141 |
+
// getRegion('main')
|
3142 |
+
getRegion: function(region) {
|
3143 |
+
return this.regionManager.get(region);
|
3144 |
+
},
|
3145 |
+
|
3146 |
+
// Get all regions
|
3147 |
+
getRegions: function() {
|
3148 |
+
return this.regionManager.getRegions();
|
3149 |
+
},
|
3150 |
+
|
3151 |
+
// internal method to build regions
|
3152 |
+
_buildRegions: function(regions) {
|
3153 |
+
var defaults = {
|
3154 |
+
regionClass: this.getOption('regionClass'),
|
3155 |
+
parentEl: _.partial(_.result, this, 'el')
|
3156 |
+
};
|
3157 |
+
|
3158 |
+
return this.regionManager.addRegions(regions, defaults);
|
3159 |
+
},
|
3160 |
+
|
3161 |
+
// Internal method to initialize the regions that have been defined in a
|
3162 |
+
// `regions` attribute on this layoutView.
|
3163 |
+
_initializeRegions: function(options) {
|
3164 |
+
var regions;
|
3165 |
+
this._initRegionManager();
|
3166 |
+
|
3167 |
+
regions = Marionette._getValue(this.regions, this, [options]) || {};
|
3168 |
+
|
3169 |
+
// Enable users to define `regions` as instance options.
|
3170 |
+
var regionOptions = this.getOption.call(options, 'regions');
|
3171 |
+
|
3172 |
+
// enable region options to be a function
|
3173 |
+
regionOptions = Marionette._getValue(regionOptions, this, [options]);
|
3174 |
+
|
3175 |
+
_.extend(regions, regionOptions);
|
3176 |
+
|
3177 |
+
// Normalize region selectors hash to allow
|
3178 |
+
// a user to use the @ui. syntax.
|
3179 |
+
regions = this.normalizeUIValues(regions, ['selector', 'el']);
|
3180 |
+
|
3181 |
+
this.addRegions(regions);
|
3182 |
+
},
|
3183 |
+
|
3184 |
+
// Internal method to re-initialize all of the regions by updating the `el` that
|
3185 |
+
// they point to
|
3186 |
+
_reInitializeRegions: function() {
|
3187 |
+
this.regionManager.invoke('reset');
|
3188 |
+
},
|
3189 |
+
|
3190 |
+
// Enable easy overriding of the default `RegionManager`
|
3191 |
+
// for customized region interactions and business specific
|
3192 |
+
// view logic for better control over single regions.
|
3193 |
+
getRegionManager: function() {
|
3194 |
+
return new Marionette.RegionManager();
|
3195 |
+
},
|
3196 |
+
|
3197 |
+
// Internal method to initialize the region manager
|
3198 |
+
// and all regions in it
|
3199 |
+
_initRegionManager: function() {
|
3200 |
+
this.regionManager = this.getRegionManager();
|
3201 |
+
this.regionManager._parent = this;
|
3202 |
+
|
3203 |
+
this.listenTo(this.regionManager, 'before:add:region', function(name) {
|
3204 |
+
this.triggerMethod('before:add:region', name);
|
3205 |
+
});
|
3206 |
+
|
3207 |
+
this.listenTo(this.regionManager, 'add:region', function(name, region) {
|
3208 |
+
this[name] = region;
|
3209 |
+
this.triggerMethod('add:region', name, region);
|
3210 |
+
});
|
3211 |
+
|
3212 |
+
this.listenTo(this.regionManager, 'before:remove:region', function(name) {
|
3213 |
+
this.triggerMethod('before:remove:region', name);
|
3214 |
+
});
|
3215 |
+
|
3216 |
+
this.listenTo(this.regionManager, 'remove:region', function(name, region) {
|
3217 |
+
delete this[name];
|
3218 |
+
this.triggerMethod('remove:region', name, region);
|
3219 |
+
});
|
3220 |
+
},
|
3221 |
+
|
3222 |
+
_getImmediateChildren: function() {
|
3223 |
+
return _.chain(this.regionManager.getRegions())
|
3224 |
+
.pluck('currentView')
|
3225 |
+
.compact()
|
3226 |
+
.value();
|
3227 |
+
}
|
3228 |
+
});
|
3229 |
+
|
3230 |
+
|
3231 |
+
// Behavior
|
3232 |
+
// --------
|
3233 |
+
|
3234 |
+
// A Behavior is an isolated set of DOM /
|
3235 |
+
// user interactions that can be mixed into any View.
|
3236 |
+
// Behaviors allow you to blackbox View specific interactions
|
3237 |
+
// into portable logical chunks, keeping your views simple and your code DRY.
|
3238 |
+
|
3239 |
+
Marionette.Behavior = Marionette.Object.extend({
|
3240 |
+
constructor: function(options, view) {
|
3241 |
+
// Setup reference to the view.
|
3242 |
+
// this comes in handle when a behavior
|
3243 |
+
// wants to directly talk up the chain
|
3244 |
+
// to the view.
|
3245 |
+
this.view = view;
|
3246 |
+
this.defaults = _.result(this, 'defaults') || {};
|
3247 |
+
this.options = _.extend({}, this.defaults, options);
|
3248 |
+
// Construct an internal UI hash using
|
3249 |
+
// the views UI hash and then the behaviors UI hash.
|
3250 |
+
// This allows the user to use UI hash elements
|
3251 |
+
// defined in the parent view as well as those
|
3252 |
+
// defined in the given behavior.
|
3253 |
+
this.ui = _.extend({}, _.result(view, 'ui'), _.result(this, 'ui'));
|
3254 |
+
|
3255 |
+
Marionette.Object.apply(this, arguments);
|
3256 |
+
},
|
3257 |
+
|
3258 |
+
// proxy behavior $ method to the view
|
3259 |
+
// this is useful for doing jquery DOM lookups
|
3260 |
+
// scoped to behaviors view.
|
3261 |
+
$: function() {
|
3262 |
+
return this.view.$.apply(this.view, arguments);
|
3263 |
+
},
|
3264 |
+
|
3265 |
+
// Stops the behavior from listening to events.
|
3266 |
+
// Overrides Object#destroy to prevent additional events from being triggered.
|
3267 |
+
destroy: function() {
|
3268 |
+
this.stopListening();
|
3269 |
+
|
3270 |
+
return this;
|
3271 |
+
},
|
3272 |
+
|
3273 |
+
proxyViewProperties: function(view) {
|
3274 |
+
this.$el = view.$el;
|
3275 |
+
this.el = view.el;
|
3276 |
+
}
|
3277 |
+
});
|
3278 |
+
|
3279 |
+
/* jshint maxlen: 143 */
|
3280 |
+
// Behaviors
|
3281 |
+
// ---------
|
3282 |
+
|
3283 |
+
// Behaviors is a utility class that takes care of
|
3284 |
+
// gluing your behavior instances to their given View.
|
3285 |
+
// The most important part of this class is that you
|
3286 |
+
// **MUST** override the class level behaviorsLookup
|
3287 |
+
// method for things to work properly.
|
3288 |
+
|
3289 |
+
Marionette.Behaviors = (function(Marionette, _) {
|
3290 |
+
// Borrow event splitter from Backbone
|
3291 |
+
var delegateEventSplitter = /^(\S+)\s*(.*)$/;
|
3292 |
+
|
3293 |
+
function Behaviors(view, behaviors) {
|
3294 |
+
|
3295 |
+
if (!_.isObject(view.behaviors)) {
|
3296 |
+
return {};
|
3297 |
+
}
|
3298 |
+
|
3299 |
+
// Behaviors defined on a view can be a flat object literal
|
3300 |
+
// or it can be a function that returns an object.
|
3301 |
+
behaviors = Behaviors.parseBehaviors(view, behaviors || _.result(view, 'behaviors'));
|
3302 |
+
|
3303 |
+
// Wraps several of the view's methods
|
3304 |
+
// calling the methods first on each behavior
|
3305 |
+
// and then eventually calling the method on the view.
|
3306 |
+
Behaviors.wrap(view, behaviors, _.keys(methods));
|
3307 |
+
return behaviors;
|
3308 |
+
}
|
3309 |
+
|
3310 |
+
var methods = {
|
3311 |
+
behaviorTriggers: function(behaviorTriggers, behaviors) {
|
3312 |
+
var triggerBuilder = new BehaviorTriggersBuilder(this, behaviors);
|
3313 |
+
return triggerBuilder.buildBehaviorTriggers();
|
3314 |
+
},
|
3315 |
+
|
3316 |
+
behaviorEvents: function(behaviorEvents, behaviors) {
|
3317 |
+
var _behaviorsEvents = {};
|
3318 |
+
|
3319 |
+
_.each(behaviors, function(b, i) {
|
3320 |
+
var _events = {};
|
3321 |
+
var behaviorEvents = _.clone(_.result(b, 'events')) || {};
|
3322 |
+
|
3323 |
+
// Normalize behavior events hash to allow
|
3324 |
+
// a user to use the @ui. syntax.
|
3325 |
+
behaviorEvents = Marionette.normalizeUIKeys(behaviorEvents, getBehaviorsUI(b));
|
3326 |
+
|
3327 |
+
var j = 0;
|
3328 |
+
_.each(behaviorEvents, function(behaviour, key) {
|
3329 |
+
var match = key.match(delegateEventSplitter);
|
3330 |
+
|
3331 |
+
// Set event name to be namespaced using the view cid,
|
3332 |
+
// the behavior index, and the behavior event index
|
3333 |
+
// to generate a non colliding event namespace
|
3334 |
+
// http://api.jquery.com/event.namespace/
|
3335 |
+
var eventName = match[1] + '.' + [this.cid, i, j++, ' '].join('');
|
3336 |
+
var selector = match[2];
|
3337 |
+
|
3338 |
+
var eventKey = eventName + selector;
|
3339 |
+
var handler = _.isFunction(behaviour) ? behaviour : b[behaviour];
|
3340 |
+
if (!handler) { return; }
|
3341 |
+
_events[eventKey] = _.bind(handler, b);
|
3342 |
+
}, this);
|
3343 |
+
|
3344 |
+
_behaviorsEvents = _.extend(_behaviorsEvents, _events);
|
3345 |
+
}, this);
|
3346 |
+
|
3347 |
+
return _behaviorsEvents;
|
3348 |
+
}
|
3349 |
+
};
|
3350 |
+
|
3351 |
+
_.extend(Behaviors, {
|
3352 |
+
|
3353 |
+
// Placeholder method to be extended by the user.
|
3354 |
+
// The method should define the object that stores the behaviors.
|
3355 |
+
// i.e.
|
3356 |
+
//
|
3357 |
+
// ```js
|
3358 |
+
// Marionette.Behaviors.behaviorsLookup: function() {
|
3359 |
+
// return App.Behaviors
|
3360 |
+
// }
|
3361 |
+
// ```
|
3362 |
+
behaviorsLookup: function() {
|
3363 |
+
throw new Marionette.Error({
|
3364 |
+
message: 'You must define where your behaviors are stored.',
|
3365 |
+
url: 'marionette.behaviors.html#behaviorslookup'
|
3366 |
+
});
|
3367 |
+
},
|
3368 |
+
|
3369 |
+
// Takes care of getting the behavior class
|
3370 |
+
// given options and a key.
|
3371 |
+
// If a user passes in options.behaviorClass
|
3372 |
+
// default to using that. Otherwise delegate
|
3373 |
+
// the lookup to the users `behaviorsLookup` implementation.
|
3374 |
+
getBehaviorClass: function(options, key) {
|
3375 |
+
if (options.behaviorClass) {
|
3376 |
+
return options.behaviorClass;
|
3377 |
+
}
|
3378 |
+
|
3379 |
+
// Get behavior class can be either a flat object or a method
|
3380 |
+
return Marionette._getValue(Behaviors.behaviorsLookup, this, [options, key])[key];
|
3381 |
+
},
|
3382 |
+
|
3383 |
+
// Iterate over the behaviors object, for each behavior
|
3384 |
+
// instantiate it and get its grouped behaviors.
|
3385 |
+
parseBehaviors: function(view, behaviors) {
|
3386 |
+
return _.chain(behaviors).map(function(options, key) {
|
3387 |
+
var BehaviorClass = Behaviors.getBehaviorClass(options, key);
|
3388 |
+
|
3389 |
+
var behavior = new BehaviorClass(options, view);
|
3390 |
+
var nestedBehaviors = Behaviors.parseBehaviors(view, _.result(behavior, 'behaviors'));
|
3391 |
+
|
3392 |
+
return [behavior].concat(nestedBehaviors);
|
3393 |
+
}).flatten().value();
|
3394 |
+
},
|
3395 |
+
|
3396 |
+
// Wrap view internal methods so that they delegate to behaviors. For example,
|
3397 |
+
// `onDestroy` should trigger destroy on all of the behaviors and then destroy itself.
|
3398 |
+
// i.e.
|
3399 |
+
//
|
3400 |
+
// `view.delegateEvents = _.partial(methods.delegateEvents, view.delegateEvents, behaviors);`
|
3401 |
+
wrap: function(view, behaviors, methodNames) {
|
3402 |
+
_.each(methodNames, function(methodName) {
|
3403 |
+
view[methodName] = _.partial(methods[methodName], view[methodName], behaviors);
|
3404 |
+
});
|
3405 |
+
}
|
3406 |
+
});
|
3407 |
+
|
3408 |
+
// Class to build handlers for `triggers` on behaviors
|
3409 |
+
// for views
|
3410 |
+
function BehaviorTriggersBuilder(view, behaviors) {
|
3411 |
+
this._view = view;
|
3412 |
+
this._behaviors = behaviors;
|
3413 |
+
this._triggers = {};
|
3414 |
+
}
|
3415 |
+
|
3416 |
+
_.extend(BehaviorTriggersBuilder.prototype, {
|
3417 |
+
// Main method to build the triggers hash with event keys and handlers
|
3418 |
+
buildBehaviorTriggers: function() {
|
3419 |
+
_.each(this._behaviors, this._buildTriggerHandlersForBehavior, this);
|
3420 |
+
return this._triggers;
|
3421 |
+
},
|
3422 |
+
|
3423 |
+
// Internal method to build all trigger handlers for a given behavior
|
3424 |
+
_buildTriggerHandlersForBehavior: function(behavior, i) {
|
3425 |
+
var triggersHash = _.clone(_.result(behavior, 'triggers')) || {};
|
3426 |
+
|
3427 |
+
triggersHash = Marionette.normalizeUIKeys(triggersHash, getBehaviorsUI(behavior));
|
3428 |
+
|
3429 |
+
_.each(triggersHash, _.bind(this._setHandlerForBehavior, this, behavior, i));
|
3430 |
+
},
|
3431 |
+
|
3432 |
+
// Internal method to create and assign the trigger handler for a given
|
3433 |
+
// behavior
|
3434 |
+
_setHandlerForBehavior: function(behavior, i, eventName, trigger) {
|
3435 |
+
// Unique identifier for the `this._triggers` hash
|
3436 |
+
var triggerKey = trigger.replace(/^\S+/, function(triggerName) {
|
3437 |
+
return triggerName + '.' + 'behaviortriggers' + i;
|
3438 |
+
});
|
3439 |
+
|
3440 |
+
this._triggers[triggerKey] = this._view._buildViewTrigger(eventName);
|
3441 |
+
}
|
3442 |
+
});
|
3443 |
+
|
3444 |
+
function getBehaviorsUI(behavior) {
|
3445 |
+
return behavior._uiBindings || behavior.ui;
|
3446 |
+
}
|
3447 |
+
|
3448 |
+
return Behaviors;
|
3449 |
+
|
3450 |
+
})(Marionette, _);
|
3451 |
+
|
3452 |
+
|
3453 |
+
// App Router
|
3454 |
+
// ----------
|
3455 |
+
|
3456 |
+
// Reduce the boilerplate code of handling route events
|
3457 |
+
// and then calling a single method on another object.
|
3458 |
+
// Have your routers configured to call the method on
|
3459 |
+
// your object, directly.
|
3460 |
+
//
|
3461 |
+
// Configure an AppRouter with `appRoutes`.
|
3462 |
+
//
|
3463 |
+
// App routers can only take one `controller` object.
|
3464 |
+
// It is recommended that you divide your controller
|
3465 |
+
// objects in to smaller pieces of related functionality
|
3466 |
+
// and have multiple routers / controllers, instead of
|
3467 |
+
// just one giant router and controller.
|
3468 |
+
//
|
3469 |
+
// You can also add standard routes to an AppRouter.
|
3470 |
+
|
3471 |
+
Marionette.AppRouter = Backbone.Router.extend({
|
3472 |
+
|
3473 |
+
constructor: function(options) {
|
3474 |
+
this.options = options || {};
|
3475 |
+
|
3476 |
+
Backbone.Router.apply(this, arguments);
|
3477 |
+
|
3478 |
+
var appRoutes = this.getOption('appRoutes');
|
3479 |
+
var controller = this._getController();
|
3480 |
+
this.processAppRoutes(controller, appRoutes);
|
3481 |
+
this.on('route', this._processOnRoute, this);
|
3482 |
+
},
|
3483 |
+
|
3484 |
+
// Similar to route method on a Backbone Router but
|
3485 |
+
// method is called on the controller
|
3486 |
+
appRoute: function(route, methodName) {
|
3487 |
+
var controller = this._getController();
|
3488 |
+
this._addAppRoute(controller, route, methodName);
|
3489 |
+
},
|
3490 |
+
|
3491 |
+
// process the route event and trigger the onRoute
|
3492 |
+
// method call, if it exists
|
3493 |
+
_processOnRoute: function(routeName, routeArgs) {
|
3494 |
+
// make sure an onRoute before trying to call it
|
3495 |
+
if (_.isFunction(this.onRoute)) {
|
3496 |
+
// find the path that matches the current route
|
3497 |
+
var routePath = _.invert(this.getOption('appRoutes'))[routeName];
|
3498 |
+
this.onRoute(routeName, routePath, routeArgs);
|
3499 |
+
}
|
3500 |
+
},
|
3501 |
+
|
3502 |
+
// Internal method to process the `appRoutes` for the
|
3503 |
+
// router, and turn them in to routes that trigger the
|
3504 |
+
// specified method on the specified `controller`.
|
3505 |
+
processAppRoutes: function(controller, appRoutes) {
|
3506 |
+
if (!appRoutes) { return; }
|
3507 |
+
|
3508 |
+
var routeNames = _.keys(appRoutes).reverse(); // Backbone requires reverted order of routes
|
3509 |
+
|
3510 |
+
_.each(routeNames, function(route) {
|
3511 |
+
this._addAppRoute(controller, route, appRoutes[route]);
|
3512 |
+
}, this);
|
3513 |
+
},
|
3514 |
+
|
3515 |
+
_getController: function() {
|
3516 |
+
return this.getOption('controller');
|
3517 |
+
},
|
3518 |
+
|
3519 |
+
_addAppRoute: function(controller, route, methodName) {
|
3520 |
+
var method = controller[methodName];
|
3521 |
+
|
3522 |
+
if (!method) {
|
3523 |
+
throw new Marionette.Error('Method "' + methodName + '" was not found on the controller');
|
3524 |
+
}
|
3525 |
+
|
3526 |
+
this.route(route, methodName, _.bind(method, controller));
|
3527 |
+
},
|
3528 |
+
|
3529 |
+
mergeOptions: Marionette.mergeOptions,
|
3530 |
+
|
3531 |
+
// Proxy `getOption` to enable getting options from this or this.options by name.
|
3532 |
+
getOption: Marionette.proxyGetOption,
|
3533 |
+
|
3534 |
+
triggerMethod: Marionette.triggerMethod,
|
3535 |
+
|
3536 |
+
bindEntityEvents: Marionette.proxyBindEntityEvents,
|
3537 |
+
|
3538 |
+
unbindEntityEvents: Marionette.proxyUnbindEntityEvents
|
3539 |
+
});
|
3540 |
+
|
3541 |
+
// Application
|
3542 |
+
// -----------
|
3543 |
+
|
3544 |
+
// Contain and manage the composite application as a whole.
|
3545 |
+
// Stores and starts up `Region` objects, includes an
|
3546 |
+
// event aggregator as `app.vent`
|
3547 |
+
Marionette.Application = Marionette.Object.extend({
|
3548 |
+
constructor: function(options) {
|
3549 |
+
this._initializeRegions(options);
|
3550 |
+
this._initCallbacks = new Marionette.Callbacks();
|
3551 |
+
this.submodules = {};
|
3552 |
+
_.extend(this, options);
|
3553 |
+
this._initChannel();
|
3554 |
+
Marionette.Object.apply(this, arguments);
|
3555 |
+
},
|
3556 |
+
|
3557 |
+
// Command execution, facilitated by Backbone.Wreqr.Commands
|
3558 |
+
execute: function() {
|
3559 |
+
this.commands.execute.apply(this.commands, arguments);
|
3560 |
+
},
|
3561 |
+
|
3562 |
+
// Request/response, facilitated by Backbone.Wreqr.RequestResponse
|
3563 |
+
request: function() {
|
3564 |
+
return this.reqres.request.apply(this.reqres, arguments);
|
3565 |
+
},
|
3566 |
+
|
3567 |
+
// Add an initializer that is either run at when the `start`
|
3568 |
+
// method is called, or run immediately if added after `start`
|
3569 |
+
// has already been called.
|
3570 |
+
addInitializer: function(initializer) {
|
3571 |
+
this._initCallbacks.add(initializer);
|
3572 |
+
},
|
3573 |
+
|
3574 |
+
// kick off all of the application's processes.
|
3575 |
+
// initializes all of the regions that have been added
|
3576 |
+
// to the app, and runs all of the initializer functions
|
3577 |
+
start: function(options) {
|
3578 |
+
this.triggerMethod('before:start', options);
|
3579 |
+
this._initCallbacks.run(options, this);
|
3580 |
+
this.triggerMethod('start', options);
|
3581 |
+
},
|
3582 |
+
|
3583 |
+
// Add regions to your app.
|
3584 |
+
// Accepts a hash of named strings or Region objects
|
3585 |
+
// addRegions({something: "#someRegion"})
|
3586 |
+
// addRegions({something: Region.extend({el: "#someRegion"}) });
|
3587 |
+
addRegions: function(regions) {
|
3588 |
+
return this._regionManager.addRegions(regions);
|
3589 |
+
},
|
3590 |
+
|
3591 |
+
// Empty all regions in the app, without removing them
|
3592 |
+
emptyRegions: function() {
|
3593 |
+
return this._regionManager.emptyRegions();
|
3594 |
+
},
|
3595 |
+
|
3596 |
+
// Removes a region from your app, by name
|
3597 |
+
// Accepts the regions name
|
3598 |
+
// removeRegion('myRegion')
|
3599 |
+
removeRegion: function(region) {
|
3600 |
+
return this._regionManager.removeRegion(region);
|
3601 |
+
},
|
3602 |
+
|
3603 |
+
// Provides alternative access to regions
|
3604 |
+
// Accepts the region name
|
3605 |
+
// getRegion('main')
|
3606 |
+
getRegion: function(region) {
|
3607 |
+
return this._regionManager.get(region);
|
3608 |
+
},
|
3609 |
+
|
3610 |
+
// Get all the regions from the region manager
|
3611 |
+
getRegions: function() {
|
3612 |
+
return this._regionManager.getRegions();
|
3613 |
+
},
|
3614 |
+
|
3615 |
+
// Create a module, attached to the application
|
3616 |
+
module: function(moduleNames, moduleDefinition) {
|
3617 |
+
|
3618 |
+
// Overwrite the module class if the user specifies one
|
3619 |
+
var ModuleClass = Marionette.Module.getClass(moduleDefinition);
|
3620 |
+
|
3621 |
+
var args = _.toArray(arguments);
|
3622 |
+
args.unshift(this);
|
3623 |
+
|
3624 |
+
// see the Marionette.Module object for more information
|
3625 |
+
return ModuleClass.create.apply(ModuleClass, args);
|
3626 |
+
},
|
3627 |
+
|
3628 |
+
// Enable easy overriding of the default `RegionManager`
|
3629 |
+
// for customized region interactions and business-specific
|
3630 |
+
// view logic for better control over single regions.
|
3631 |
+
getRegionManager: function() {
|
3632 |
+
return new Marionette.RegionManager();
|
3633 |
+
},
|
3634 |
+
|
3635 |
+
// Internal method to initialize the regions that have been defined in a
|
3636 |
+
// `regions` attribute on the application instance
|
3637 |
+
_initializeRegions: function(options) {
|
3638 |
+
var regions = _.isFunction(this.regions) ? this.regions(options) : this.regions || {};
|
3639 |
+
|
3640 |
+
this._initRegionManager();
|
3641 |
+
|
3642 |
+
// Enable users to define `regions` in instance options.
|
3643 |
+
var optionRegions = Marionette.getOption(options, 'regions');
|
3644 |
+
|
3645 |
+
// Enable region options to be a function
|
3646 |
+
if (_.isFunction(optionRegions)) {
|
3647 |
+
optionRegions = optionRegions.call(this, options);
|
3648 |
+
}
|
3649 |
+
|
3650 |
+
// Overwrite current regions with those passed in options
|
3651 |
+
_.extend(regions, optionRegions);
|
3652 |
+
|
3653 |
+
this.addRegions(regions);
|
3654 |
+
|
3655 |
+
return this;
|
3656 |
+
},
|
3657 |
+
|
3658 |
+
// Internal method to set up the region manager
|
3659 |
+
_initRegionManager: function() {
|
3660 |
+
this._regionManager = this.getRegionManager();
|
3661 |
+
this._regionManager._parent = this;
|
3662 |
+
|
3663 |
+
this.listenTo(this._regionManager, 'before:add:region', function() {
|
3664 |
+
Marionette._triggerMethod(this, 'before:add:region', arguments);
|
3665 |
+
});
|
3666 |
+
|
3667 |
+
this.listenTo(this._regionManager, 'add:region', function(name, region) {
|
3668 |
+
this[name] = region;
|
3669 |
+
Marionette._triggerMethod(this, 'add:region', arguments);
|
3670 |
+
});
|
3671 |
+
|
3672 |
+
this.listenTo(this._regionManager, 'before:remove:region', function() {
|
3673 |
+
Marionette._triggerMethod(this, 'before:remove:region', arguments);
|
3674 |
+
});
|
3675 |
+
|
3676 |
+
this.listenTo(this._regionManager, 'remove:region', function(name) {
|
3677 |
+
delete this[name];
|
3678 |
+
Marionette._triggerMethod(this, 'remove:region', arguments);
|
3679 |
+
});
|
3680 |
+
},
|
3681 |
+
|
3682 |
+
// Internal method to setup the Wreqr.radio channel
|
3683 |
+
_initChannel: function() {
|
3684 |
+
this.channelName = _.result(this, 'channelName') || 'global';
|
3685 |
+
this.channel = _.result(this, 'channel') || Backbone.Wreqr.radio.channel(this.channelName);
|
3686 |
+
this.vent = _.result(this, 'vent') || this.channel.vent;
|
3687 |
+
this.commands = _.result(this, 'commands') || this.channel.commands;
|
3688 |
+
this.reqres = _.result(this, 'reqres') || this.channel.reqres;
|
3689 |
+
}
|
3690 |
+
});
|
3691 |
+
|
3692 |
+
/* jshint maxparams: 9 */
|
3693 |
+
|
3694 |
+
// Module
|
3695 |
+
// ------
|
3696 |
+
|
3697 |
+
// A simple module system, used to create privacy and encapsulation in
|
3698 |
+
// Marionette applications
|
3699 |
+
Marionette.Module = function(moduleName, app, options) {
|
3700 |
+
this.moduleName = moduleName;
|
3701 |
+
this.options = _.extend({}, this.options, options);
|
3702 |
+
// Allow for a user to overide the initialize
|
3703 |
+
// for a given module instance.
|
3704 |
+
this.initialize = options.initialize || this.initialize;
|
3705 |
+
|
3706 |
+
// Set up an internal store for sub-modules.
|
3707 |
+
this.submodules = {};
|
3708 |
+
|
3709 |
+
this._setupInitializersAndFinalizers();
|
3710 |
+
|
3711 |
+
// Set an internal reference to the app
|
3712 |
+
// within a module.
|
3713 |
+
this.app = app;
|
3714 |
+
|
3715 |
+
if (_.isFunction(this.initialize)) {
|
3716 |
+
this.initialize(moduleName, app, this.options);
|
3717 |
+
}
|
3718 |
+
};
|
3719 |
+
|
3720 |
+
Marionette.Module.extend = Marionette.extend;
|
3721 |
+
|
3722 |
+
// Extend the Module prototype with events / listenTo, so that the module
|
3723 |
+
// can be used as an event aggregator or pub/sub.
|
3724 |
+
_.extend(Marionette.Module.prototype, Backbone.Events, {
|
3725 |
+
|
3726 |
+
// By default modules start with their parents.
|
3727 |
+
startWithParent: true,
|
3728 |
+
|
3729 |
+
// Initialize is an empty function by default. Override it with your own
|
3730 |
+
// initialization logic when extending Marionette.Module.
|
3731 |
+
initialize: function() {},
|
3732 |
+
|
3733 |
+
// Initializer for a specific module. Initializers are run when the
|
3734 |
+
// module's `start` method is called.
|
3735 |
+
addInitializer: function(callback) {
|
3736 |
+
this._initializerCallbacks.add(callback);
|
3737 |
+
},
|
3738 |
+
|
3739 |
+
// Finalizers are run when a module is stopped. They are used to teardown
|
3740 |
+
// and finalize any variables, references, events and other code that the
|
3741 |
+
// module had set up.
|
3742 |
+
addFinalizer: function(callback) {
|
3743 |
+
this._finalizerCallbacks.add(callback);
|
3744 |
+
},
|
3745 |
+
|
3746 |
+
// Start the module, and run all of its initializers
|
3747 |
+
start: function(options) {
|
3748 |
+
// Prevent re-starting a module that is already started
|
3749 |
+
if (this._isInitialized) { return; }
|
3750 |
+
|
3751 |
+
// start the sub-modules (depth-first hierarchy)
|
3752 |
+
_.each(this.submodules, function(mod) {
|
3753 |
+
// check to see if we should start the sub-module with this parent
|
3754 |
+
if (mod.startWithParent) {
|
3755 |
+
mod.start(options);
|
3756 |
+
}
|
3757 |
+
});
|
3758 |
+
|
3759 |
+
// run the callbacks to "start" the current module
|
3760 |
+
this.triggerMethod('before:start', options);
|
3761 |
+
|
3762 |
+
this._initializerCallbacks.run(options, this);
|
3763 |
+
this._isInitialized = true;
|
3764 |
+
|
3765 |
+
this.triggerMethod('start', options);
|
3766 |
+
},
|
3767 |
+
|
3768 |
+
// Stop this module by running its finalizers and then stop all of
|
3769 |
+
// the sub-modules for this module
|
3770 |
+
stop: function() {
|
3771 |
+
// if we are not initialized, don't bother finalizing
|
3772 |
+
if (!this._isInitialized) { return; }
|
3773 |
+
this._isInitialized = false;
|
3774 |
+
|
3775 |
+
this.triggerMethod('before:stop');
|
3776 |
+
|
3777 |
+
// stop the sub-modules; depth-first, to make sure the
|
3778 |
+
// sub-modules are stopped / finalized before parents
|
3779 |
+
_.invoke(this.submodules, 'stop');
|
3780 |
+
|
3781 |
+
// run the finalizers
|
3782 |
+
this._finalizerCallbacks.run(undefined, this);
|
3783 |
+
|
3784 |
+
// reset the initializers and finalizers
|
3785 |
+
this._initializerCallbacks.reset();
|
3786 |
+
this._finalizerCallbacks.reset();
|
3787 |
+
|
3788 |
+
this.triggerMethod('stop');
|
3789 |
+
},
|
3790 |
+
|
3791 |
+
// Configure the module with a definition function and any custom args
|
3792 |
+
// that are to be passed in to the definition function
|
3793 |
+
addDefinition: function(moduleDefinition, customArgs) {
|
3794 |
+
this._runModuleDefinition(moduleDefinition, customArgs);
|
3795 |
+
},
|
3796 |
+
|
3797 |
+
// Internal method: run the module definition function with the correct
|
3798 |
+
// arguments
|
3799 |
+
_runModuleDefinition: function(definition, customArgs) {
|
3800 |
+
// If there is no definition short circut the method.
|
3801 |
+
if (!definition) { return; }
|
3802 |
+
|
3803 |
+
// build the correct list of arguments for the module definition
|
3804 |
+
var args = _.flatten([
|
3805 |
+
this,
|
3806 |
+
this.app,
|
3807 |
+
Backbone,
|
3808 |
+
Marionette,
|
3809 |
+
Backbone.$, _,
|
3810 |
+
customArgs
|
3811 |
+
]);
|
3812 |
+
|
3813 |
+
definition.apply(this, args);
|
3814 |
+
},
|
3815 |
+
|
3816 |
+
// Internal method: set up new copies of initializers and finalizers.
|
3817 |
+
// Calling this method will wipe out all existing initializers and
|
3818 |
+
// finalizers.
|
3819 |
+
_setupInitializersAndFinalizers: function() {
|
3820 |
+
this._initializerCallbacks = new Marionette.Callbacks();
|
3821 |
+
this._finalizerCallbacks = new Marionette.Callbacks();
|
3822 |
+
},
|
3823 |
+
|
3824 |
+
// import the `triggerMethod` to trigger events with corresponding
|
3825 |
+
// methods if the method exists
|
3826 |
+
triggerMethod: Marionette.triggerMethod
|
3827 |
+
});
|
3828 |
+
|
3829 |
+
// Class methods to create modules
|
3830 |
+
_.extend(Marionette.Module, {
|
3831 |
+
|
3832 |
+
// Create a module, hanging off the app parameter as the parent object.
|
3833 |
+
create: function(app, moduleNames, moduleDefinition) {
|
3834 |
+
var module = app;
|
3835 |
+
|
3836 |
+
// get the custom args passed in after the module definition and
|
3837 |
+
// get rid of the module name and definition function
|
3838 |
+
var customArgs = _.drop(arguments, 3);
|
3839 |
+
|
3840 |
+
// Split the module names and get the number of submodules.
|
3841 |
+
// i.e. an example module name of `Doge.Wow.Amaze` would
|
3842 |
+
// then have the potential for 3 module definitions.
|
3843 |
+
moduleNames = moduleNames.split('.');
|
3844 |
+
var length = moduleNames.length;
|
3845 |
+
|
3846 |
+
// store the module definition for the last module in the chain
|
3847 |
+
var moduleDefinitions = [];
|
3848 |
+
moduleDefinitions[length - 1] = moduleDefinition;
|
3849 |
+
|
3850 |
+
// Loop through all the parts of the module definition
|
3851 |
+
_.each(moduleNames, function(moduleName, i) {
|
3852 |
+
var parentModule = module;
|
3853 |
+
module = this._getModule(parentModule, moduleName, app, moduleDefinition);
|
3854 |
+
this._addModuleDefinition(parentModule, module, moduleDefinitions[i], customArgs);
|
3855 |
+
}, this);
|
3856 |
+
|
3857 |
+
// Return the last module in the definition chain
|
3858 |
+
return module;
|
3859 |
+
},
|
3860 |
+
|
3861 |
+
_getModule: function(parentModule, moduleName, app, def, args) {
|
3862 |
+
var options = _.extend({}, def);
|
3863 |
+
var ModuleClass = this.getClass(def);
|
3864 |
+
|
3865 |
+
// Get an existing module of this name if we have one
|
3866 |
+
var module = parentModule[moduleName];
|
3867 |
+
|
3868 |
+
if (!module) {
|
3869 |
+
// Create a new module if we don't have one
|
3870 |
+
module = new ModuleClass(moduleName, app, options);
|
3871 |
+
parentModule[moduleName] = module;
|
3872 |
+
// store the module on the parent
|
3873 |
+
parentModule.submodules[moduleName] = module;
|
3874 |
+
}
|
3875 |
+
|
3876 |
+
return module;
|
3877 |
+
},
|
3878 |
+
|
3879 |
+
// ## Module Classes
|
3880 |
+
//
|
3881 |
+
// Module classes can be used as an alternative to the define pattern.
|
3882 |
+
// The extend function of a Module is identical to the extend functions
|
3883 |
+
// on other Backbone and Marionette classes.
|
3884 |
+
// This allows module lifecyle events like `onStart` and `onStop` to be called directly.
|
3885 |
+
getClass: function(moduleDefinition) {
|
3886 |
+
var ModuleClass = Marionette.Module;
|
3887 |
+
|
3888 |
+
if (!moduleDefinition) {
|
3889 |
+
return ModuleClass;
|
3890 |
+
}
|
3891 |
+
|
3892 |
+
// If all of the module's functionality is defined inside its class,
|
3893 |
+
// then the class can be passed in directly. `MyApp.module("Foo", FooModule)`.
|
3894 |
+
if (moduleDefinition.prototype instanceof ModuleClass) {
|
3895 |
+
return moduleDefinition;
|
3896 |
+
}
|
3897 |
+
|
3898 |
+
return moduleDefinition.moduleClass || ModuleClass;
|
3899 |
+
},
|
3900 |
+
|
3901 |
+
// Add the module definition and add a startWithParent initializer function.
|
3902 |
+
// This is complicated because module definitions are heavily overloaded
|
3903 |
+
// and support an anonymous function, module class, or options object
|
3904 |
+
_addModuleDefinition: function(parentModule, module, def, args) {
|
3905 |
+
var fn = this._getDefine(def);
|
3906 |
+
var startWithParent = this._getStartWithParent(def, module);
|
3907 |
+
|
3908 |
+
if (fn) {
|
3909 |
+
module.addDefinition(fn, args);
|
3910 |
+
}
|
3911 |
+
|
3912 |
+
this._addStartWithParent(parentModule, module, startWithParent);
|
3913 |
+
},
|
3914 |
+
|
3915 |
+
_getStartWithParent: function(def, module) {
|
3916 |
+
var swp;
|
3917 |
+
|
3918 |
+
if (_.isFunction(def) && (def.prototype instanceof Marionette.Module)) {
|
3919 |
+
swp = module.constructor.prototype.startWithParent;
|
3920 |
+
return _.isUndefined(swp) ? true : swp;
|
3921 |
+
}
|
3922 |
+
|
3923 |
+
if (_.isObject(def)) {
|
3924 |
+
swp = def.startWithParent;
|
3925 |
+
return _.isUndefined(swp) ? true : swp;
|
3926 |
+
}
|
3927 |
+
|
3928 |
+
return true;
|
3929 |
+
},
|
3930 |
+
|
3931 |
+
_getDefine: function(def) {
|
3932 |
+
if (_.isFunction(def) && !(def.prototype instanceof Marionette.Module)) {
|
3933 |
+
return def;
|
3934 |
+
}
|
3935 |
+
|
3936 |
+
if (_.isObject(def)) {
|
3937 |
+
return def.define;
|
3938 |
+
}
|
3939 |
+
|
3940 |
+
return null;
|
3941 |
+
},
|
3942 |
+
|
3943 |
+
_addStartWithParent: function(parentModule, module, startWithParent) {
|
3944 |
+
module.startWithParent = module.startWithParent && startWithParent;
|
3945 |
+
|
3946 |
+
if (!module.startWithParent || !!module.startWithParentIsConfigured) {
|
3947 |
+
return;
|
3948 |
+
}
|
3949 |
+
|
3950 |
+
module.startWithParentIsConfigured = true;
|
3951 |
+
|
3952 |
+
parentModule.addInitializer(function(options) {
|
3953 |
+
if (module.startWithParent) {
|
3954 |
+
module.start(options);
|
3955 |
+
}
|
3956 |
+
});
|
3957 |
+
}
|
3958 |
+
});
|
3959 |
+
|
3960 |
+
|
3961 |
+
return Marionette;
|
3962 |
+
}));
|
assets/admin/js/lib/backbone.marionette.min.js
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// MarionetteJS (Backbone.Marionette)
|
2 |
+
// ----------------------------------
|
3 |
+
// v2.4.5
|
4 |
+
//
|
5 |
+
// Copyright (c)2016 Derick Bailey, Muted Solutions, LLC.
|
6 |
+
// Distributed under MIT license
|
7 |
+
//
|
8 |
+
// http://marionettejs.com
|
9 |
+
|
10 |
+
|
11 |
+
/*!
|
12 |
+
* Includes BabySitter
|
13 |
+
* https://github.com/marionettejs/backbone.babysitter/
|
14 |
+
*
|
15 |
+
* Includes Wreqr
|
16 |
+
* https://github.com/marionettejs/backbone.wreqr/
|
17 |
+
*/
|
18 |
+
|
19 |
+
|
20 |
+
|
21 |
+
!function(a,b){if("function"==typeof define&&define.amd)define(["backbone","underscore"],function(c,d){return a.Marionette=a.Mn=b(a,c,d)});else if("undefined"!=typeof exports){var c=require("backbone"),d=require("underscore");module.exports=b(a,c,d)}else a.Marionette=a.Mn=b(a,a.Backbone,a._)}(this,function(a,b,c){"use strict";!function(a,b){var c=a.ChildViewContainer;return a.ChildViewContainer=function(a,b){var c=function(a){this._views={},this._indexByModel={},this._indexByCustom={},this._updateLength(),b.each(a,this.add,this)};b.extend(c.prototype,{add:function(a,b){var c=a.cid;return this._views[c]=a,a.model&&(this._indexByModel[a.model.cid]=c),b&&(this._indexByCustom[b]=c),this._updateLength(),this},findByModel:function(a){return this.findByModelCid(a.cid)},findByModelCid:function(a){var b=this._indexByModel[a];return this.findByCid(b)},findByCustom:function(a){var b=this._indexByCustom[a];return this.findByCid(b)},findByIndex:function(a){return b.values(this._views)[a]},findByCid:function(a){return this._views[a]},remove:function(a){var c=a.cid;return a.model&&delete this._indexByModel[a.model.cid],b.any(this._indexByCustom,function(a,b){return a===c?(delete this._indexByCustom[b],!0):void 0},this),delete this._views[c],this._updateLength(),this},call:function(a){this.apply(a,b.tail(arguments))},apply:function(a,c){b.each(this._views,function(d){b.isFunction(d[a])&&d[a].apply(d,c||[])})},_updateLength:function(){this.length=b.size(this._views)}});var d=["forEach","each","map","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","toArray","first","initial","rest","last","without","isEmpty","pluck","reduce"];return b.each(d,function(a){c.prototype[a]=function(){var c=b.values(this._views),d=[c].concat(b.toArray(arguments));return b[a].apply(b,d)}}),c}(a,b),a.ChildViewContainer.VERSION="0.1.11",a.ChildViewContainer.noConflict=function(){return a.ChildViewContainer=c,this},a.ChildViewContainer}(b,c),function(a,b){var c=a.Wreqr,d=a.Wreqr={};return a.Wreqr.VERSION="1.3.6",a.Wreqr.noConflict=function(){return a.Wreqr=c,this},d.Handlers=function(a,b){var c=function(a){this.options=a,this._wreqrHandlers={},b.isFunction(this.initialize)&&this.initialize(a)};return c.extend=a.Model.extend,b.extend(c.prototype,a.Events,{setHandlers:function(a){b.each(a,function(a,c){var d=null;b.isObject(a)&&!b.isFunction(a)&&(d=a.context,a=a.callback),this.setHandler(c,a,d)},this)},setHandler:function(a,b,c){var d={callback:b,context:c};this._wreqrHandlers[a]=d,this.trigger("handler:add",a,b,c)},hasHandler:function(a){return!!this._wreqrHandlers[a]},getHandler:function(a){var b=this._wreqrHandlers[a];if(b)return function(){return b.callback.apply(b.context,arguments)}},removeHandler:function(a){delete this._wreqrHandlers[a]},removeAllHandlers:function(){this._wreqrHandlers={}}}),c}(a,b),d.CommandStorage=function(){var c=function(a){this.options=a,this._commands={},b.isFunction(this.initialize)&&this.initialize(a)};return b.extend(c.prototype,a.Events,{getCommands:function(a){var b=this._commands[a];return b||(b={command:a,instances:[]},this._commands[a]=b),b},addCommand:function(a,b){var c=this.getCommands(a);c.instances.push(b)},clearCommands:function(a){var b=this.getCommands(a);b.instances=[]}}),c}(),d.Commands=function(a,b){return a.Handlers.extend({storageType:a.CommandStorage,constructor:function(b){this.options=b||{},this._initializeStorage(this.options),this.on("handler:add",this._executeCommands,this),a.Handlers.prototype.constructor.apply(this,arguments)},execute:function(a){a=arguments[0];var c=b.rest(arguments);this.hasHandler(a)?this.getHandler(a).apply(this,c):this.storage.addCommand(a,c)},_executeCommands:function(a,c,d){var e=this.storage.getCommands(a);b.each(e.instances,function(a){c.apply(d,a)}),this.storage.clearCommands(a)},_initializeStorage:function(a){var c,d=a.storageType||this.storageType;c=b.isFunction(d)?new d:d,this.storage=c}})}(d,b),d.RequestResponse=function(a,b){return a.Handlers.extend({request:function(a){return this.hasHandler(a)?this.getHandler(a).apply(this,b.rest(arguments)):void 0}})}(d,b),d.EventAggregator=function(a,b){var c=function(){};return c.extend=a.Model.extend,b.extend(c.prototype,a.Events),c}(a,b),d.Channel=function(c){var d=function(b){this.vent=new a.Wreqr.EventAggregator,this.reqres=new a.Wreqr.RequestResponse,this.commands=new a.Wreqr.Commands,this.channelName=b};return b.extend(d.prototype,{reset:function(){return this.vent.off(),this.vent.stopListening(),this.reqres.removeAllHandlers(),this.commands.removeAllHandlers(),this},connectEvents:function(a,b){return this._connect("vent",a,b),this},connectCommands:function(a,b){return this._connect("commands",a,b),this},connectRequests:function(a,b){return this._connect("reqres",a,b),this},_connect:function(a,c,d){if(c){d=d||this;var e="vent"===a?"on":"setHandler";b.each(c,function(c,f){this[a][e](f,b.bind(c,d))},this)}}}),d}(d),d.radio=function(a,b){var c=function(){this._channels={},this.vent={},this.commands={},this.reqres={},this._proxyMethods()};b.extend(c.prototype,{channel:function(a){if(!a)throw new Error("Channel must receive a name");return this._getChannel(a)},_getChannel:function(b){var c=this._channels[b];return c||(c=new a.Channel(b),this._channels[b]=c),c},_proxyMethods:function(){b.each(["vent","commands","reqres"],function(a){b.each(d[a],function(b){this[a][b]=e(this,a,b)},this)},this)}});var d={vent:["on","off","trigger","once","stopListening","listenTo","listenToOnce"],commands:["execute","setHandler","setHandlers","removeHandler","removeAllHandlers"],reqres:["request","setHandler","setHandlers","removeHandler","removeAllHandlers"]},e=function(a,c,d){return function(e){var f=a._getChannel(e)[c];return f[d].apply(f,b.rest(arguments))}};return new c}(d,b),a.Wreqr}(b,c);var d=a.Marionette,e=a.Mn,f=b.Marionette={};f.VERSION="2.4.5",f.noConflict=function(){return a.Marionette=d,a.Mn=e,this},b.Marionette=f,f.Deferred=b.$.Deferred,f.extend=b.Model.extend,f.isNodeAttached=function(a){return b.$.contains(document.documentElement,a)},f.mergeOptions=function(a,b){a&&c.extend(this,c.pick(a,b))},f.getOption=function(a,b){return a&&b?a.options&&void 0!==a.options[b]?a.options[b]:a[b]:void 0},f.proxyGetOption=function(a){return f.getOption(this,a)},f._getValue=function(a,b,d){return c.isFunction(a)&&(a=d?a.apply(b,d):a.call(b)),a},f.normalizeMethods=function(a){return c.reduce(a,function(a,b,d){return c.isFunction(b)||(b=this[b]),b&&(a[d]=b),a},{},this)},f.normalizeUIString=function(a,b){return a.replace(/@ui\.[a-zA-Z-_$0-9]*/g,function(a){return b[a.slice(4)]})},f.normalizeUIKeys=function(a,b){return c.reduce(a,function(a,c,d){var e=f.normalizeUIString(d,b);return a[e]=c,a},{})},f.normalizeUIValues=function(a,b,d){return c.each(a,function(e,g){c.isString(e)?a[g]=f.normalizeUIString(e,b):c.isObject(e)&&c.isArray(d)&&(c.extend(e,f.normalizeUIValues(c.pick(e,d),b)),c.each(d,function(a){var d=e[a];c.isString(d)&&(e[a]=f.normalizeUIString(d,b))}))}),a},f.actAsCollection=function(a,b){var d=["forEach","each","map","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","toArray","first","initial","rest","last","without","isEmpty","pluck"];c.each(d,function(d){a[d]=function(){var a=c.values(c.result(this,b)),e=[a].concat(c.toArray(arguments));return c[d].apply(c,e)}})};var g=f.deprecate=function(a,b){c.isObject(a)&&(a=a.prev+" is going to be removed in the future. Please use "+a.next+" instead."+(a.url?" See: "+a.url:"")),void 0!==b&&b||g._cache[a]||(g._warn("Deprecation warning: "+a),g._cache[a]=!0)};g._console="undefined"!=typeof console?console:{},g._warn=function(){var a=g._console.warn||g._console.log||function(){};return a.apply(g._console,arguments)},g._cache={},f._triggerMethod=function(){function a(a,b,c){return c.toUpperCase()}var b=/(^|:)(\w)/gi;return function(d,e,f){var g=arguments.length<3;g&&(f=e,e=f[0]);var h,i="on"+e.replace(b,a),j=d[i];return c.isFunction(j)&&(h=j.apply(d,g?c.rest(f):f)),c.isFunction(d.trigger)&&(g+f.length>1?d.trigger.apply(d,g?f:[e].concat(c.drop(f,0))):d.trigger(e)),h}}(),f.triggerMethod=function(a){return f._triggerMethod(this,arguments)},f.triggerMethodOn=function(a){var b=c.isFunction(a.triggerMethod)?a.triggerMethod:f.triggerMethod;return b.apply(a,c.rest(arguments))},f.MonitorDOMRefresh=function(a){function b(){a._isShown=!0,d()}function c(){a._isRendered=!0,d()}function d(){a._isShown&&a._isRendered&&f.isNodeAttached(a.el)&&f.triggerMethodOn(a,"dom:refresh",a)}a._isDomRefreshMonitored||(a._isDomRefreshMonitored=!0,a.on({show:b,render:c}))},function(a){function b(b,d,e,f){var g=f.split(/\s+/);c.each(g,function(c){var f=b[c];if(!f)throw new a.Error('Method "'+c+'" was configured as an event handler, but does not exist.');b.listenTo(d,e,f)})}function d(a,b,c,d){a.listenTo(b,c,d)}function e(a,b,d,e){var f=e.split(/\s+/);c.each(f,function(c){var e=a[c];a.stopListening(b,d,e)})}function f(a,b,c,d){a.stopListening(b,c,d)}function g(b,d,e,f,g){if(d&&e){if(!c.isObject(e))throw new a.Error({message:"Bindings must be an object or function.",url:"marionette.functions.html#marionettebindentityevents"});e=a._getValue(e,b),c.each(e,function(a,e){c.isFunction(a)?f(b,d,e,a):g(b,d,e,a)})}}a.bindEntityEvents=function(a,c,e){g(a,c,e,d,b)},a.unbindEntityEvents=function(a,b,c){g(a,b,c,f,e)},a.proxyBindEntityEvents=function(b,c){return a.bindEntityEvents(this,b,c)},a.proxyUnbindEntityEvents=function(b,c){return a.unbindEntityEvents(this,b,c)}}(f);var h=["description","fileName","lineNumber","name","message","number"];return f.Error=f.extend.call(Error,{urlRoot:"http://marionettejs.com/docs/v"+f.VERSION+"/",constructor:function(a,b){c.isObject(a)?(b=a,a=b.message):b||(b={});var d=Error.call(this,a);c.extend(this,c.pick(d,h),c.pick(b,h)),this.captureStackTrace(),b.url&&(this.url=this.urlRoot+b.url)},captureStackTrace:function(){Error.captureStackTrace&&Error.captureStackTrace(this,f.Error)},toString:function(){return this.name+": "+this.message+(this.url?" See: "+this.url:"")}}),f.Error.extend=f.extend,f.Callbacks=function(){this._deferred=f.Deferred(),this._callbacks=[]},c.extend(f.Callbacks.prototype,{add:function(a,b){var d=c.result(this._deferred,"promise");this._callbacks.push({cb:a,ctx:b}),d.then(function(c){b&&(c.context=b),a.call(c.context,c.options)})},run:function(a,b){this._deferred.resolve({options:a,context:b})},reset:function(){var a=this._callbacks;this._deferred=f.Deferred(),this._callbacks=[],c.each(a,function(a){this.add(a.cb,a.ctx)},this)}}),f.Controller=function(a){this.options=a||{},c.isFunction(this.initialize)&&this.initialize(this.options)},f.Controller.extend=f.extend,c.extend(f.Controller.prototype,b.Events,{destroy:function(){return f._triggerMethod(this,"before:destroy",arguments),f._triggerMethod(this,"destroy",arguments),this.stopListening(),this.off(),this},triggerMethod:f.triggerMethod,mergeOptions:f.mergeOptions,getOption:f.proxyGetOption}),f.Object=function(a){this.options=c.extend({},c.result(this,"options"),a),this.initialize.apply(this,arguments)},f.Object.extend=f.extend,c.extend(f.Object.prototype,b.Events,{initialize:function(){},destroy:function(a){return a=a||{},this.triggerMethod("before:destroy",a),this.triggerMethod("destroy",a),this.stopListening(),this},triggerMethod:f.triggerMethod,mergeOptions:f.mergeOptions,getOption:f.proxyGetOption,bindEntityEvents:f.proxyBindEntityEvents,unbindEntityEvents:f.proxyUnbindEntityEvents}),f.Region=f.Object.extend({constructor:function(a){if(this.options=a||{},this.el=this.getOption("el"),this.el=this.el instanceof b.$?this.el[0]:this.el,!this.el)throw new f.Error({name:"NoElError",message:'An "el" must be specified for a region.'});this.$el=this.getEl(this.el),f.Object.call(this,a)},show:function(a,b){if(this._ensureElement()){this._ensureViewIsIntact(a),f.MonitorDOMRefresh(a);var d=b||{},e=a!==this.currentView,g=!!d.preventDestroy,h=!!d.forceShow,i=!!this.currentView,j=e&&!g,k=e||h;if(i&&this.triggerMethod("before:swapOut",this.currentView,this,b),this.currentView&&e&&delete this.currentView._parent,j?this.empty():i&&k&&this.currentView.off("destroy",this.empty,this),k){a.once("destroy",this.empty,this),a._parent=this,this._renderView(a),i&&this.triggerMethod("before:swap",a,this,b),this.triggerMethod("before:show",a,this,b),f.triggerMethodOn(a,"before:show",a,this,b),i&&this.triggerMethod("swapOut",this.currentView,this,b);var l=f.isNodeAttached(this.el),m=[],n=c.extend({triggerBeforeAttach:this.triggerBeforeAttach,triggerAttach:this.triggerAttach},d);return l&&n.triggerBeforeAttach&&(m=this._displayedViews(a),this._triggerAttach(m,"before:")),this.attachHtml(a),this.currentView=a,l&&n.triggerAttach&&(m=this._displayedViews(a),this._triggerAttach(m)),i&&this.triggerMethod("swap",a,this,b),this.triggerMethod("show",a,this,b),f.triggerMethodOn(a,"show",a,this,b),this}return this}},triggerBeforeAttach:!0,triggerAttach:!0,_triggerAttach:function(a,b){var d=(b||"")+"attach";c.each(a,function(a){f.triggerMethodOn(a,d,a,this)},this)},_displayedViews:function(a){return c.union([a],c.result(a,"_getNestedViews")||[])},_renderView:function(a){a.supportsRenderLifecycle||f.triggerMethodOn(a,"before:render",a),a.render(),a.supportsRenderLifecycle||f.triggerMethodOn(a,"render",a)},_ensureElement:function(){if(c.isObject(this.el)||(this.$el=this.getEl(this.el),this.el=this.$el[0]),!this.$el||0===this.$el.length){if(this.getOption("allowMissingEl"))return!1;throw new f.Error('An "el" '+this.$el.selector+" must exist in DOM")}return!0},_ensureViewIsIntact:function(a){if(!a)throw new f.Error({name:"ViewNotValid",message:"The view passed is undefined and therefore invalid. You must pass a view instance to show."});if(a.isDestroyed)throw new f.Error({name:"ViewDestroyedError",message:'View (cid: "'+a.cid+'") has already been destroyed and cannot be used.'})},getEl:function(a){return b.$(a,f._getValue(this.options.parentEl,this))},attachHtml:function(a){this.$el.contents().detach(),this.el.appendChild(a.el)},empty:function(a){var b=this.currentView,c=a||{},d=!!c.preventDestroy;return b?(b.off("destroy",this.empty,this),this.triggerMethod("before:empty",b),d||this._destroyView(),this.triggerMethod("empty",b),delete this.currentView,d&&this.$el.contents().detach(),this):this},_destroyView:function(){var a=this.currentView;a.isDestroyed||(a.supportsDestroyLifecycle||f.triggerMethodOn(a,"before:destroy",a),a.destroy?a.destroy():(a.remove(),a.isDestroyed=!0),a.supportsDestroyLifecycle||f.triggerMethodOn(a,"destroy",a))},attachView:function(a){return this.currentView&&delete this.currentView._parent,a._parent=this,this.currentView=a,this},hasView:function(){return!!this.currentView},reset:function(){return this.empty(),this.$el&&(this.el=this.$el.selector),delete this.$el,this}},{buildRegion:function(a,b){if(c.isString(a))return this._buildRegionFromSelector(a,b);if(a.selector||a.el||a.regionClass)return this._buildRegionFromObject(a,b);if(c.isFunction(a))return this._buildRegionFromRegionClass(a);throw new f.Error({message:"Improper region configuration type.",url:"marionette.region.html#region-configuration-types"})},_buildRegionFromSelector:function(a,b){return new b({el:a})},_buildRegionFromObject:function(a,b){var d=a.regionClass||b,e=c.omit(a,"selector","regionClass");return a.selector&&!e.el&&(e.el=a.selector),new d(e)},_buildRegionFromRegionClass:function(a){return new a}}),f.RegionManager=f.Controller.extend({constructor:function(a){this._regions={},this.length=0,f.Controller.call(this,a),this.addRegions(this.getOption("regions"))},addRegions:function(a,b){return a=f._getValue(a,this,arguments),c.reduce(a,function(a,d,e){return c.isString(d)&&(d={selector:d}),d.selector&&(d=c.defaults({},d,b)),a[e]=this.addRegion(e,d),a},{},this)},addRegion:function(a,b){var c;return c=b instanceof f.Region?b:f.Region.buildRegion(b,f.Region),this.triggerMethod("before:add:region",a,c),c._parent=this,this._store(a,c),this.triggerMethod("add:region",a,c),c},get:function(a){return this._regions[a]},getRegions:function(){return c.clone(this._regions)},removeRegion:function(a){var b=this._regions[a];return this._remove(a,b),b},removeRegions:function(){var a=this.getRegions();return c.each(this._regions,function(a,b){this._remove(b,a)},this),a},emptyRegions:function(){var a=this.getRegions();return c.invoke(a,"empty"),a},destroy:function(){return this.removeRegions(),f.Controller.prototype.destroy.apply(this,arguments)},_store:function(a,b){this._regions[a]||this.length++,this._regions[a]=b},_remove:function(a,b){this.triggerMethod("before:remove:region",a,b),b.empty(),b.stopListening(),delete b._parent,delete this._regions[a],this.length--,this.triggerMethod("remove:region",a,b)}}),f.actAsCollection(f.RegionManager.prototype,"_regions"),f.TemplateCache=function(a){this.templateId=a},c.extend(f.TemplateCache,{templateCaches:{},get:function(a,b){var c=this.templateCaches[a];return c||(c=new f.TemplateCache(a),this.templateCaches[a]=c),c.load(b)},clear:function(){var a,b=c.toArray(arguments),d=b.length;if(d>0)for(a=0;d>a;a++)delete this.templateCaches[b[a]];else this.templateCaches={}}}),c.extend(f.TemplateCache.prototype,{load:function(a){if(this.compiledTemplate)return this.compiledTemplate;var b=this.loadTemplate(this.templateId,a);return this.compiledTemplate=this.compileTemplate(b,a),this.compiledTemplate},loadTemplate:function(a,c){var d=b.$(a);if(!d.length)throw new f.Error({name:"NoTemplateError",message:'Could not find template: "'+a+'"'});return d.html()},compileTemplate:function(a,b){return c.template(a,b)}}),f.Renderer={render:function(a,b){if(!a)throw new f.Error({name:"TemplateNotFoundError",message:"Cannot render the template since its false, null or undefined."});var d=c.isFunction(a)?a:f.TemplateCache.get(a);return d(b)}},f.View=b.View.extend({isDestroyed:!1,supportsRenderLifecycle:!0,supportsDestroyLifecycle:!0,constructor:function(a){this.render=c.bind(this.render,this),a=f._getValue(a,this),this.options=c.extend({},c.result(this,"options"),a),this._behaviors=f.Behaviors(this),b.View.call(this,this.options),f.MonitorDOMRefresh(this)},getTemplate:function(){return this.getOption("template")},serializeModel:function(a){return a.toJSON.apply(a,c.rest(arguments))},mixinTemplateHelpers:function(a){a=a||{};var b=this.getOption("templateHelpers");return b=f._getValue(b,this),c.extend(a,b)},normalizeUIKeys:function(a){var b=c.result(this,"_uiBindings");return f.normalizeUIKeys(a,b||c.result(this,"ui"))},normalizeUIValues:function(a,b){var d=c.result(this,"ui"),e=c.result(this,"_uiBindings");return f.normalizeUIValues(a,e||d,b)},configureTriggers:function(){if(this.triggers){var a=this.normalizeUIKeys(c.result(this,"triggers"));return c.reduce(a,function(a,b,c){return a[c]=this._buildViewTrigger(b),a},{},this)}},delegateEvents:function(a){return this._delegateDOMEvents(a),this.bindEntityEvents(this.model,this.getOption("modelEvents")),this.bindEntityEvents(this.collection,this.getOption("collectionEvents")),c.each(this._behaviors,function(a){a.bindEntityEvents(this.model,a.getOption("modelEvents")),a.bindEntityEvents(this.collection,a.getOption("collectionEvents"))},this),this},_delegateDOMEvents:function(a){var d=f._getValue(a||this.events,this);d=this.normalizeUIKeys(d),c.isUndefined(a)&&(this.events=d);var e={},g=c.result(this,"behaviorEvents")||{},h=this.configureTriggers(),i=c.result(this,"behaviorTriggers")||{};c.extend(e,g,d,h,i),b.View.prototype.delegateEvents.call(this,e)},undelegateEvents:function(){return b.View.prototype.undelegateEvents.apply(this,arguments),this.unbindEntityEvents(this.model,this.getOption("modelEvents")),this.unbindEntityEvents(this.collection,this.getOption("collectionEvents")),c.each(this._behaviors,function(a){a.unbindEntityEvents(this.model,a.getOption("modelEvents")),a.unbindEntityEvents(this.collection,a.getOption("collectionEvents"))},this),this},_ensureViewIsIntact:function(){if(this.isDestroyed)throw new f.Error({name:"ViewDestroyedError",message:'View (cid: "'+this.cid+'") has already been destroyed and cannot be used.'})},destroy:function(){if(this.isDestroyed)return this;var a=c.toArray(arguments);return this.triggerMethod.apply(this,["before:destroy"].concat(a)),this.isDestroyed=!0,this.triggerMethod.apply(this,["destroy"].concat(a)),this.unbindUIElements(),this.isRendered=!1,this.remove(),c.invoke(this._behaviors,"destroy",a),this},bindUIElements:function(){this._bindUIElements(),c.invoke(this._behaviors,this._bindUIElements)},_bindUIElements:function(){if(this.ui){this._uiBindings||(this._uiBindings=this.ui);var a=c.result(this,"_uiBindings");this.ui={},c.each(a,function(a,b){this.ui[b]=this.$(a)},this)}},unbindUIElements:function(){this._unbindUIElements(),c.invoke(this._behaviors,this._unbindUIElements)},_unbindUIElements:function(){this.ui&&this._uiBindings&&(c.each(this.ui,function(a,b){delete this.ui[b]},this),this.ui=this._uiBindings,delete this._uiBindings)},_buildViewTrigger:function(a){var b=c.defaults({},a,{preventDefault:!0,stopPropagation:!0}),d=c.isObject(a)?b.event:a;return function(a){a&&(a.preventDefault&&b.preventDefault&&a.preventDefault(),a.stopPropagation&&b.stopPropagation&&a.stopPropagation());var c={view:this,model:this.model,collection:this.collection};this.triggerMethod(d,c)}},setElement:function(){var a=b.View.prototype.setElement.apply(this,arguments);return c.invoke(this._behaviors,"proxyViewProperties",this),a},triggerMethod:function(){var a=f._triggerMethod(this,arguments);return this._triggerEventOnBehaviors(arguments),this._triggerEventOnParentLayout(arguments[0],c.rest(arguments)),a},_triggerEventOnBehaviors:function(a){for(var b=f._triggerMethod,c=this._behaviors,d=0,e=c&&c.length;e>d;d++)b(c[d],a)},_triggerEventOnParentLayout:function(a,b){var d=this._parentLayoutView();if(d){var e=f.getOption(d,"childViewEventPrefix"),g=e+":"+a,h=[this].concat(b);f._triggerMethod(d,g,h);var i=f.getOption(d,"childEvents");i=f._getValue(i,d);var j=d.normalizeMethods(i);j&&c.isFunction(j[a])&&j[a].apply(d,h)}},_getImmediateChildren:function(){return[]},_getNestedViews:function(){var a=this._getImmediateChildren();return a.length?c.reduce(a,function(a,b){return b._getNestedViews?a.concat(b._getNestedViews()):a},a):a},_parentLayoutView:function(){for(var a=this._parent;a;){if(a instanceof f.LayoutView)return a;a=a._parent}},normalizeMethods:f.normalizeMethods,mergeOptions:f.mergeOptions,getOption:f.proxyGetOption,bindEntityEvents:f.proxyBindEntityEvents,unbindEntityEvents:f.proxyUnbindEntityEvents}),f.ItemView=f.View.extend({constructor:function(){f.View.apply(this,arguments)},serializeData:function(){if(!this.model&&!this.collection)return{};var a=[this.model||this.collection];return arguments.length&&a.push.apply(a,arguments),this.model?this.serializeModel.apply(this,a):{items:this.serializeCollection.apply(this,a)}},serializeCollection:function(a){return a.toJSON.apply(a,c.rest(arguments))},render:function(){return this._ensureViewIsIntact(),this.triggerMethod("before:render",this),this._renderTemplate(),this.isRendered=!0,this.bindUIElements(),this.triggerMethod("render",this),this},_renderTemplate:function(){var a=this.getTemplate();if(a!==!1){if(!a)throw new f.Error({name:"UndefinedTemplateError",message:"Cannot render the template since it is null or undefined."});var b=this.mixinTemplateHelpers(this.serializeData()),c=f.Renderer.render(a,b,this);return this.attachElContent(c),this}},attachElContent:function(a){return this.$el.html(a),this}}),f.CollectionView=f.View.extend({childViewEventPrefix:"childview",sort:!0,constructor:function(a){this.once("render",this._initialEvents),this._initChildViewStorage(),f.View.apply(this,arguments),this.on({"before:show":this._onBeforeShowCalled,show:this._onShowCalled,"before:attach":this._onBeforeAttachCalled,attach:this._onAttachCalled}),this.initRenderBuffer()},initRenderBuffer:function(){this._bufferedChildren=[]},startBuffering:function(){this.initRenderBuffer(),this.isBuffering=!0},endBuffering:function(){var a,b=this._isShown&&f.isNodeAttached(this.el);this.isBuffering=!1,this._isShown&&this._triggerMethodMany(this._bufferedChildren,this,"before:show"),b&&this._triggerBeforeAttach&&(a=this._getNestedViews(),this._triggerMethodMany(a,this,"before:attach")),this.attachBuffer(this,this._createBuffer()),b&&this._triggerAttach&&(a=this._getNestedViews(),this._triggerMethodMany(a,this,"attach")),this._isShown&&this._triggerMethodMany(this._bufferedChildren,this,"show"),this.initRenderBuffer()},_triggerMethodMany:function(a,b,d){var e=c.drop(arguments,3);c.each(a,function(a){f.triggerMethodOn.apply(a,[a,d,a,b].concat(e))})},_initialEvents:function(){this.collection&&(this.listenTo(this.collection,"add",this._onCollectionAdd),this.listenTo(this.collection,"remove",this._onCollectionRemove),this.listenTo(this.collection,"reset",this.render),this.getOption("sort")&&this.listenTo(this.collection,"sort",this._sortViews))},_onCollectionAdd:function(a,b,d){var e=void 0!==d.at&&(d.index||b.indexOf(a));if((this.getOption("filter")||e===!1)&&(e=c.indexOf(this._filteredSortedModels(e),a)),this._shouldAddChild(a,e)){this.destroyEmptyView();var f=this.getChildView(a);this.addChild(a,f,e)}},_onCollectionRemove:function(a){var b=this.children.findByModel(a);this.removeChildView(b),this.checkEmpty()},_onBeforeShowCalled:function(){this._triggerBeforeAttach=this._triggerAttach=!1,this.children.each(function(a){f.triggerMethodOn(a,"before:show",a)})},_onShowCalled:function(){this.children.each(function(a){f.triggerMethodOn(a,"show",a)})},_onBeforeAttachCalled:function(){this._triggerBeforeAttach=!0},_onAttachCalled:function(){this._triggerAttach=!0},render:function(){return this._ensureViewIsIntact(),this.triggerMethod("before:render",this),this._renderChildren(),this.isRendered=!0,this.triggerMethod("render",this),this},reorder:function(){var a=this.children,b=this._filteredSortedModels(),d=c.some(b,function(b){return!a.findByModel(b)});if(d)this.render();else{var e=c.map(b,function(b,c){var d=a.findByModel(b);return d._index=c,d.el}),f=a.filter(function(a){return!c.contains(e,a.el)});this.triggerMethod("before:reorder"),this._appendReorderedChildren(e),c.each(f,this.removeChildView,this),this.checkEmpty(),this.triggerMethod("reorder")}},resortView:function(){f.getOption(this,"reorderOnSort")?this.reorder():this.render()},_sortViews:function(){var a=this._filteredSortedModels(),b=c.find(a,function(a,b){var c=this.children.findByModel(a);return!c||c._index!==b},this);b&&this.resortView()},_emptyViewIndex:-1,_appendReorderedChildren:function(a){this.$el.append(a)},_renderChildren:function(){this.destroyEmptyView(),this.destroyChildren({checkEmpty:!1}),this.isEmpty(this.collection)?this.showEmptyView():(this.triggerMethod("before:render:collection",this),this.startBuffering(),this.showCollection(),this.endBuffering(),this.triggerMethod("render:collection",this),this.children.isEmpty()&&this.getOption("filter")&&this.showEmptyView())},showCollection:function(){var a,b=this._filteredSortedModels();c.each(b,function(b,c){a=this.getChildView(b),this.addChild(b,a,c)},this)},_filteredSortedModels:function(a){var b=this.getViewComparator(),d=this.collection.models;if(a=Math.min(Math.max(a,0),d.length-1),b){var e;a&&(e=d[a],d=d.slice(0,a).concat(d.slice(a+1))),d=this._sortModelsBy(d,b),e&&d.splice(a,0,e)}return this.getOption("filter")&&(d=c.filter(d,function(a,b){return this._shouldAddChild(a,b)},this)),d},_sortModelsBy:function(a,b){return"string"==typeof b?c.sortBy(a,function(a){return a.get(b)},this):1===b.length?c.sortBy(a,b,this):a.sort(c.bind(b,this))},showEmptyView:function(){var a=this.getEmptyView();if(a&&!this._showingEmptyView){this.triggerMethod("before:render:empty"),this._showingEmptyView=!0;var c=new b.Model;this.addEmptyView(c,a),this.triggerMethod("render:empty")}},destroyEmptyView:function(){this._showingEmptyView&&(this.triggerMethod("before:remove:empty"),this.destroyChildren(),delete this._showingEmptyView,this.triggerMethod("remove:empty"))},getEmptyView:function(){return this.getOption("emptyView")},addEmptyView:function(a,b){var d,e=this._isShown&&!this.isBuffering&&f.isNodeAttached(this.el),g=this.getOption("emptyViewOptions")||this.getOption("childViewOptions");c.isFunction(g)&&(g=g.call(this,a,this._emptyViewIndex));var h=this.buildChildView(a,b,g);h._parent=this,this.proxyChildEvents(h),h.once("render",function(){this._isShown&&f.triggerMethodOn(h,"before:show",h),e&&this._triggerBeforeAttach&&(d=this._getViewAndNested(h),this._triggerMethodMany(d,this,"before:attach"))},this),this.children.add(h),this.renderChildView(h,this._emptyViewIndex),e&&this._triggerAttach&&(d=this._getViewAndNested(h),this._triggerMethodMany(d,this,"attach")),this._isShown&&f.triggerMethodOn(h,"show",h)},getChildView:function(a){var b=this.getOption("childView");if(!b)throw new f.Error({name:"NoChildViewError",message:'A "childView" must be specified'});return b},addChild:function(a,b,c){var d=this.getOption("childViewOptions");d=f._getValue(d,this,[a,c]);var e=this.buildChildView(a,b,d);return this._updateIndices(e,!0,c),this.triggerMethod("before:add:child",e),this._addChildView(e,c),this.triggerMethod("add:child",e),e._parent=this,e},_updateIndices:function(a,b,c){this.getOption("sort")&&(b&&(a._index=c),this.children.each(function(c){c._index>=a._index&&(c._index+=b?1:-1)}))},_addChildView:function(a,b){var c,d=this._isShown&&!this.isBuffering&&f.isNodeAttached(this.el);this.proxyChildEvents(a),a.once("render",function(){this._isShown&&!this.isBuffering&&f.triggerMethodOn(a,"before:show",a),d&&this._triggerBeforeAttach&&(c=this._getViewAndNested(a),this._triggerMethodMany(c,this,"before:attach"))},this),this.children.add(a),this.renderChildView(a,b),d&&this._triggerAttach&&(c=this._getViewAndNested(a),this._triggerMethodMany(c,this,"attach")),this._isShown&&!this.isBuffering&&f.triggerMethodOn(a,"show",a)},renderChildView:function(a,b){return a.supportsRenderLifecycle||f.triggerMethodOn(a,"before:render",a),a.render(),a.supportsRenderLifecycle||f.triggerMethodOn(a,"render",a),this.attachHtml(this,a,b),a},buildChildView:function(a,b,d){var e=c.extend({model:a},d),g=new b(e);return f.MonitorDOMRefresh(g),g},removeChildView:function(a){return a?(this.triggerMethod("before:remove:child",a),a.supportsDestroyLifecycle||f.triggerMethodOn(a,"before:destroy",a),a.destroy?a.destroy():a.remove(),a.supportsDestroyLifecycle||f.triggerMethodOn(a,"destroy",a),delete a._parent,this.stopListening(a),this.children.remove(a),this.triggerMethod("remove:child",a),this._updateIndices(a,!1),a):a},isEmpty:function(){return!this.collection||0===this.collection.length},checkEmpty:function(){this.isEmpty(this.collection)&&this.showEmptyView()},attachBuffer:function(a,b){a.$el.append(b)},_createBuffer:function(){var a=document.createDocumentFragment();return c.each(this._bufferedChildren,function(b){a.appendChild(b.el)}),a},attachHtml:function(a,b,c){a.isBuffering?a._bufferedChildren.splice(c,0,b):a._insertBefore(b,c)||a._insertAfter(b)},_insertBefore:function(a,b){var c,d=this.getOption("sort")&&b<this.children.length-1;return d&&(c=this.children.find(function(a){return a._index===b+1})),c?(c.$el.before(a.el),!0):!1},_insertAfter:function(a){this.$el.append(a.el)},_initChildViewStorage:function(){this.children=new b.ChildViewContainer},destroy:function(){return this.isDestroyed?this:(this.triggerMethod("before:destroy:collection"),this.destroyChildren({checkEmpty:!1}),this.triggerMethod("destroy:collection"),f.View.prototype.destroy.apply(this,arguments))},destroyChildren:function(a){var b=a||{},d=!0,e=this.children.map(c.identity);return c.isUndefined(b.checkEmpty)||(d=b.checkEmpty),this.children.each(this.removeChildView,this),d&&this.checkEmpty(),e},_shouldAddChild:function(a,b){var d=this.getOption("filter");return!c.isFunction(d)||d.call(this,a,b,this.collection)},proxyChildEvents:function(a){var b=this.getOption("childViewEventPrefix");this.listenTo(a,"all",function(){var d=c.toArray(arguments),e=d[0],f=this.normalizeMethods(c.result(this,"childEvents"));
|
22 |
+
d[0]=b+":"+e,d.splice(1,0,a),"undefined"!=typeof f&&c.isFunction(f[e])&&f[e].apply(this,d.slice(1)),this.triggerMethod.apply(this,d)})},_getImmediateChildren:function(){return c.values(this.children._views)},_getViewAndNested:function(a){return[a].concat(c.result(a,"_getNestedViews")||[])},getViewComparator:function(){return this.getOption("viewComparator")}}),f.CompositeView=f.CollectionView.extend({constructor:function(){f.CollectionView.apply(this,arguments)},_initialEvents:function(){this.collection&&(this.listenTo(this.collection,"add",this._onCollectionAdd),this.listenTo(this.collection,"remove",this._onCollectionRemove),this.listenTo(this.collection,"reset",this._renderChildren),this.getOption("sort")&&this.listenTo(this.collection,"sort",this._sortViews))},getChildView:function(a){var b=this.getOption("childView")||this.constructor;return b},serializeData:function(){var a={};return this.model&&(a=c.partial(this.serializeModel,this.model).apply(this,arguments)),a},render:function(){return this._ensureViewIsIntact(),this._isRendering=!0,this.resetChildViewContainer(),this.triggerMethod("before:render",this),this._renderTemplate(),this._renderChildren(),this._isRendering=!1,this.isRendered=!0,this.triggerMethod("render",this),this},_renderChildren:function(){(this.isRendered||this._isRendering)&&f.CollectionView.prototype._renderChildren.call(this)},_renderTemplate:function(){var a={};a=this.serializeData(),a=this.mixinTemplateHelpers(a),this.triggerMethod("before:render:template");var b=this.getTemplate(),c=f.Renderer.render(b,a,this);this.attachElContent(c),this.bindUIElements(),this.triggerMethod("render:template")},attachElContent:function(a){return this.$el.html(a),this},attachBuffer:function(a,b){var c=this.getChildViewContainer(a);c.append(b)},_insertAfter:function(a){var b=this.getChildViewContainer(this,a);b.append(a.el)},_appendReorderedChildren:function(a){var b=this.getChildViewContainer(this);b.append(a)},getChildViewContainer:function(a,b){if(a.$childViewContainer)return a.$childViewContainer;var c,d=f.getOption(a,"childViewContainer");if(d){var e=f._getValue(d,a);if(c="@"===e.charAt(0)&&a.ui?a.ui[e.substr(4)]:a.$(e),c.length<=0)throw new f.Error({name:"ChildViewContainerMissingError",message:'The specified "childViewContainer" was not found: '+a.childViewContainer})}else c=a.$el;return a.$childViewContainer=c,c},resetChildViewContainer:function(){this.$childViewContainer&&(this.$childViewContainer=void 0)}}),f.LayoutView=f.ItemView.extend({regionClass:f.Region,options:{destroyImmediate:!1},childViewEventPrefix:"childview",constructor:function(a){a=a||{},this._firstRender=!0,this._initializeRegions(a),f.ItemView.call(this,a)},render:function(){return this._ensureViewIsIntact(),this._firstRender?this._firstRender=!1:this._reInitializeRegions(),f.ItemView.prototype.render.apply(this,arguments)},destroy:function(){return this.isDestroyed?this:(this.getOption("destroyImmediate")===!0&&this.$el.remove(),this.regionManager.destroy(),f.ItemView.prototype.destroy.apply(this,arguments))},showChildView:function(a,b,d){var e=this.getRegion(a);return e.show.apply(e,c.rest(arguments))},getChildView:function(a){return this.getRegion(a).currentView},addRegion:function(a,b){var c={};return c[a]=b,this._buildRegions(c)[a]},addRegions:function(a){return this.regions=c.extend({},this.regions,a),this._buildRegions(a)},removeRegion:function(a){return delete this.regions[a],this.regionManager.removeRegion(a)},getRegion:function(a){return this.regionManager.get(a)},getRegions:function(){return this.regionManager.getRegions()},_buildRegions:function(a){var b={regionClass:this.getOption("regionClass"),parentEl:c.partial(c.result,this,"el")};return this.regionManager.addRegions(a,b)},_initializeRegions:function(a){var b;this._initRegionManager(),b=f._getValue(this.regions,this,[a])||{};var d=this.getOption.call(a,"regions");d=f._getValue(d,this,[a]),c.extend(b,d),b=this.normalizeUIValues(b,["selector","el"]),this.addRegions(b)},_reInitializeRegions:function(){this.regionManager.invoke("reset")},getRegionManager:function(){return new f.RegionManager},_initRegionManager:function(){this.regionManager=this.getRegionManager(),this.regionManager._parent=this,this.listenTo(this.regionManager,"before:add:region",function(a){this.triggerMethod("before:add:region",a)}),this.listenTo(this.regionManager,"add:region",function(a,b){this[a]=b,this.triggerMethod("add:region",a,b)}),this.listenTo(this.regionManager,"before:remove:region",function(a){this.triggerMethod("before:remove:region",a)}),this.listenTo(this.regionManager,"remove:region",function(a,b){delete this[a],this.triggerMethod("remove:region",a,b)})},_getImmediateChildren:function(){return c.chain(this.regionManager.getRegions()).pluck("currentView").compact().value()}}),f.Behavior=f.Object.extend({constructor:function(a,b){this.view=b,this.defaults=c.result(this,"defaults")||{},this.options=c.extend({},this.defaults,a),this.ui=c.extend({},c.result(b,"ui"),c.result(this,"ui")),f.Object.apply(this,arguments)},$:function(){return this.view.$.apply(this.view,arguments)},destroy:function(){return this.stopListening(),this},proxyViewProperties:function(a){this.$el=a.$el,this.el=a.el}}),f.Behaviors=function(a,b){function c(a,d){return b.isObject(a.behaviors)?(d=c.parseBehaviors(a,d||b.result(a,"behaviors")),c.wrap(a,d,b.keys(g)),d):{}}function d(a,b){this._view=a,this._behaviors=b,this._triggers={}}function e(a){return a._uiBindings||a.ui}var f=/^(\S+)\s*(.*)$/,g={behaviorTriggers:function(a,b){var c=new d(this,b);return c.buildBehaviorTriggers()},behaviorEvents:function(c,d){var g={};return b.each(d,function(c,d){var h={},i=b.clone(b.result(c,"events"))||{};i=a.normalizeUIKeys(i,e(c));var j=0;b.each(i,function(a,e){var g=e.match(f),i=g[1]+"."+[this.cid,d,j++," "].join(""),k=g[2],l=i+k,m=b.isFunction(a)?a:c[a];m&&(h[l]=b.bind(m,c))},this),g=b.extend(g,h)},this),g}};return b.extend(c,{behaviorsLookup:function(){throw new a.Error({message:"You must define where your behaviors are stored.",url:"marionette.behaviors.html#behaviorslookup"})},getBehaviorClass:function(b,d){return b.behaviorClass?b.behaviorClass:a._getValue(c.behaviorsLookup,this,[b,d])[d]},parseBehaviors:function(a,d){return b.chain(d).map(function(d,e){var f=c.getBehaviorClass(d,e),g=new f(d,a),h=c.parseBehaviors(a,b.result(g,"behaviors"));return[g].concat(h)}).flatten().value()},wrap:function(a,c,d){b.each(d,function(d){a[d]=b.partial(g[d],a[d],c)})}}),b.extend(d.prototype,{buildBehaviorTriggers:function(){return b.each(this._behaviors,this._buildTriggerHandlersForBehavior,this),this._triggers},_buildTriggerHandlersForBehavior:function(c,d){var f=b.clone(b.result(c,"triggers"))||{};f=a.normalizeUIKeys(f,e(c)),b.each(f,b.bind(this._setHandlerForBehavior,this,c,d))},_setHandlerForBehavior:function(a,b,c,d){var e=d.replace(/^\S+/,function(a){return a+".behaviortriggers"+b});this._triggers[e]=this._view._buildViewTrigger(c)}}),c}(f,c),f.AppRouter=b.Router.extend({constructor:function(a){this.options=a||{},b.Router.apply(this,arguments);var c=this.getOption("appRoutes"),d=this._getController();this.processAppRoutes(d,c),this.on("route",this._processOnRoute,this)},appRoute:function(a,b){var c=this._getController();this._addAppRoute(c,a,b)},_processOnRoute:function(a,b){if(c.isFunction(this.onRoute)){var d=c.invert(this.getOption("appRoutes"))[a];this.onRoute(a,d,b)}},processAppRoutes:function(a,b){if(b){var d=c.keys(b).reverse();c.each(d,function(c){this._addAppRoute(a,c,b[c])},this)}},_getController:function(){return this.getOption("controller")},_addAppRoute:function(a,b,d){var e=a[d];if(!e)throw new f.Error('Method "'+d+'" was not found on the controller');this.route(b,d,c.bind(e,a))},mergeOptions:f.mergeOptions,getOption:f.proxyGetOption,triggerMethod:f.triggerMethod,bindEntityEvents:f.proxyBindEntityEvents,unbindEntityEvents:f.proxyUnbindEntityEvents}),f.Application=f.Object.extend({constructor:function(a){this._initializeRegions(a),this._initCallbacks=new f.Callbacks,this.submodules={},c.extend(this,a),this._initChannel(),f.Object.apply(this,arguments)},execute:function(){this.commands.execute.apply(this.commands,arguments)},request:function(){return this.reqres.request.apply(this.reqres,arguments)},addInitializer:function(a){this._initCallbacks.add(a)},start:function(a){this.triggerMethod("before:start",a),this._initCallbacks.run(a,this),this.triggerMethod("start",a)},addRegions:function(a){return this._regionManager.addRegions(a)},emptyRegions:function(){return this._regionManager.emptyRegions()},removeRegion:function(a){return this._regionManager.removeRegion(a)},getRegion:function(a){return this._regionManager.get(a)},getRegions:function(){return this._regionManager.getRegions()},module:function(a,b){var d=f.Module.getClass(b),e=c.toArray(arguments);return e.unshift(this),d.create.apply(d,e)},getRegionManager:function(){return new f.RegionManager},_initializeRegions:function(a){var b=c.isFunction(this.regions)?this.regions(a):this.regions||{};this._initRegionManager();var d=f.getOption(a,"regions");return c.isFunction(d)&&(d=d.call(this,a)),c.extend(b,d),this.addRegions(b),this},_initRegionManager:function(){this._regionManager=this.getRegionManager(),this._regionManager._parent=this,this.listenTo(this._regionManager,"before:add:region",function(){f._triggerMethod(this,"before:add:region",arguments)}),this.listenTo(this._regionManager,"add:region",function(a,b){this[a]=b,f._triggerMethod(this,"add:region",arguments)}),this.listenTo(this._regionManager,"before:remove:region",function(){f._triggerMethod(this,"before:remove:region",arguments)}),this.listenTo(this._regionManager,"remove:region",function(a){delete this[a],f._triggerMethod(this,"remove:region",arguments)})},_initChannel:function(){this.channelName=c.result(this,"channelName")||"global",this.channel=c.result(this,"channel")||b.Wreqr.radio.channel(this.channelName),this.vent=c.result(this,"vent")||this.channel.vent,this.commands=c.result(this,"commands")||this.channel.commands,this.reqres=c.result(this,"reqres")||this.channel.reqres}}),f.Module=function(a,b,d){this.moduleName=a,this.options=c.extend({},this.options,d),this.initialize=d.initialize||this.initialize,this.submodules={},this._setupInitializersAndFinalizers(),this.app=b,c.isFunction(this.initialize)&&this.initialize(a,b,this.options)},f.Module.extend=f.extend,c.extend(f.Module.prototype,b.Events,{startWithParent:!0,initialize:function(){},addInitializer:function(a){this._initializerCallbacks.add(a)},addFinalizer:function(a){this._finalizerCallbacks.add(a)},start:function(a){this._isInitialized||(c.each(this.submodules,function(b){b.startWithParent&&b.start(a)}),this.triggerMethod("before:start",a),this._initializerCallbacks.run(a,this),this._isInitialized=!0,this.triggerMethod("start",a))},stop:function(){this._isInitialized&&(this._isInitialized=!1,this.triggerMethod("before:stop"),c.invoke(this.submodules,"stop"),this._finalizerCallbacks.run(void 0,this),this._initializerCallbacks.reset(),this._finalizerCallbacks.reset(),this.triggerMethod("stop"))},addDefinition:function(a,b){this._runModuleDefinition(a,b)},_runModuleDefinition:function(a,d){if(a){var e=c.flatten([this,this.app,b,f,b.$,c,d]);a.apply(this,e)}},_setupInitializersAndFinalizers:function(){this._initializerCallbacks=new f.Callbacks,this._finalizerCallbacks=new f.Callbacks},triggerMethod:f.triggerMethod}),c.extend(f.Module,{create:function(a,b,d){var e=a,f=c.drop(arguments,3);b=b.split(".");var g=b.length,h=[];return h[g-1]=d,c.each(b,function(b,c){var g=e;e=this._getModule(g,b,a,d),this._addModuleDefinition(g,e,h[c],f)},this),e},_getModule:function(a,b,d,e,f){var g=c.extend({},e),h=this.getClass(e),i=a[b];return i||(i=new h(b,d,g),a[b]=i,a.submodules[b]=i),i},getClass:function(a){var b=f.Module;return a?a.prototype instanceof b?a:a.moduleClass||b:b},_addModuleDefinition:function(a,b,c,d){var e=this._getDefine(c),f=this._getStartWithParent(c,b);e&&b.addDefinition(e,d),this._addStartWithParent(a,b,f)},_getStartWithParent:function(a,b){var d;return c.isFunction(a)&&a.prototype instanceof f.Module?(d=b.constructor.prototype.startWithParent,c.isUndefined(d)?!0:d):c.isObject(a)?(d=a.startWithParent,c.isUndefined(d)?!0:d):!0},_getDefine:function(a){return!c.isFunction(a)||a.prototype instanceof f.Module?c.isObject(a)?a.define:null:a},_addStartWithParent:function(a,b,c){b.startWithParent=b.startWithParent&&c,b.startWithParent&&!b.startWithParentIsConfigured&&(b.startWithParentIsConfigured=!0,a.addInitializer(function(a){b.startWithParent&&b.start(a)}))}}),f});
|
23 |
+
//# sourceMappingURL=backbone.marionette.min.js.map
|
assets/admin/js/lib/backbone.marionette.min.js.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"sources":["backbone.marionette.js"],"names":["root","factory","define","amd","Backbone","_","Marionette","Mn","exports","require","module","this","previousChildViewContainer","ChildViewContainer","Container","views","_views","_indexByModel","_indexByCustom","_updateLength","each","add","extend","prototype","view","customIndex","viewCid","cid","model","findByModel","findByModelCid","modelCid","findByCid","findByCustom","index","findByIndex","values","remove","any","key","call","method","apply","tail","arguments","args","isFunction","length","size","methods","concat","toArray","VERSION","noConflict","previousWreqr","Wreqr","Handlers","options","_wreqrHandlers","initialize","Model","Events","setHandlers","handlers","handler","name","context","isObject","callback","setHandler","config","trigger","hasHandler","getHandler","removeHandler","removeAllHandlers","CommandStorage","_commands","getCommands","commandName","commands","command","instances","addCommand","push","clearCommands","Commands","storageType","constructor","_initializeStorage","on","_executeCommands","execute","rest","storage","StorageType","RequestResponse","request","EventAggregator","EA","Channel","channelName","vent","reqres","reset","off","stopListening","connectEvents","hash","_connect","connectCommands","connectRequests","type","fn","eventName","bind","radio","Radio","_channels","_proxyMethods","channel","Error","_getChannel","system","messageSystems","proxyMethod","messageSystem","previousMarionette","previousMn","Deferred","$","isNodeAttached","el","contains","document","documentElement","mergeOptions","keys","pick","getOption","target","optionName","undefined","proxyGetOption","_getValue","value","params","normalizeMethods","reduce","normalizedHash","normalizeUIString","uiString","ui","replace","r","slice","normalizeUIKeys","memo","val","normalizedKey","normalizeUIValues","properties","isString","isArray","property","propertyVal","actAsCollection","object","listProperty","list","result","deprecate","message","test","prev","next","url","_cache","_warn","_console","console","warn","log","_triggerMethod","getEventName","match","prefix","toUpperCase","splitter","event","noEventArg","methodName","drop","triggerMethod","triggerMethodOn","fnc","MonitorDOMRefresh","handleShow","_isShown","triggerDOMRefresh","handleRender","_isRendered","_isDomRefreshMonitored","show","render","bindFromStrings","entity","evt","methodNames","split","listenTo","bindToFunction","unbindFromStrings","unbindToFunction","iterateEvents","bindings","functionCallback","stringCallback","bindEntityEvents","unbindEntityEvents","proxyBindEntityEvents","proxyUnbindEntityEvents","errorProps","urlRoot","error","captureStackTrace","toString","Callbacks","_deferred","_callbacks","contextOverride","promise","cb","ctx","then","run","resolve","callbacks","Controller","destroy","Object","Region","$el","getEl","_ensureElement","_ensureViewIsIntact","showOptions","isDifferentView","currentView","preventDestroy","forceShow","isChangingView","_shouldDestroyView","_shouldShowView","_parent","empty","once","_renderView","attachedRegion","displayedViews","attachOptions","triggerBeforeAttach","triggerAttach","_displayedViews","_triggerAttach","attachHtml","union","supportsRenderLifecycle","selector","isDestroyed","parentEl","contents","detach","appendChild","emptyOptions","_destroyView","supportsDestroyLifecycle","attachView","hasView","buildRegion","regionConfig","DefaultRegionClass","_buildRegionFromSelector","regionClass","_buildRegionFromObject","_buildRegionFromRegionClass","RegionClass","omit","RegionManager","_regions","addRegions","regionDefinitions","defaults","regions","definition","addRegion","region","_store","get","getRegions","clone","removeRegion","_remove","removeRegions","emptyRegions","invoke","TemplateCache","templateId","templateCaches","cachedTemplate","load","clear","i","compiledTemplate","template","loadTemplate","compileTemplate","$template","html","rawTemplate","Renderer","data","templateFunc","View","_behaviors","Behaviors","getTemplate","serializeModel","toJSON","mixinTemplateHelpers","templateHelpers","uiBindings","configureTriggers","triggers","events","_buildViewTrigger","delegateEvents","_delegateDOMEvents","collection","behavior","eventsArg","isUndefined","combinedEvents","behaviorEvents","behaviorTriggers","undelegateEvents","unbindUIElements","isRendered","bindUIElements","_bindUIElements","_uiBindings","_unbindUIElements","triggerDef","preventDefault","stopPropagation","e","setElement","ret","_triggerEventOnBehaviors","_triggerEventOnParentLayout","behaviors","layoutView","_parentLayoutView","eventPrefix","prefixedEventName","callArgs","childEvents","normalizedChildEvents","_getImmediateChildren","_getNestedViews","children","parent","LayoutView","ItemView","serializeData","items","serializeCollection","_renderTemplate","attachElContent","CollectionView","childViewEventPrefix","sort","_initialEvents","_initChildViewStorage","before:show","_onBeforeShowCalled","_onShowCalled","before:attach","_onBeforeAttachCalled","attach","_onAttachCalled","initRenderBuffer","_bufferedChildren","startBuffering","isBuffering","endBuffering","nestedViews","canTriggerAttach","_triggerMethodMany","_triggerBeforeAttach","attachBuffer","_createBuffer","targets","source","_onCollectionAdd","_onCollectionRemove","_sortViews","child","opts","at","indexOf","_filteredSortedModels","_shouldAddChild","destroyEmptyView","ChildView","getChildView","addChild","removeChildView","checkEmpty","childView","_renderChildren","reorder","models","anyModelsAdded","some","elsToReorder","map","_index","filteredOutViews","filter","_appendReorderedChildren","resortView","orderChanged","find","item","_emptyViewIndex","append","destroyChildren","isEmpty","showEmptyView","showCollection","addedAt","viewComparator","getViewComparator","Math","min","max","addedModel","_sortModelsBy","splice","comparator","sortBy","EmptyView","getEmptyView","_showingEmptyView","addEmptyView","emptyViewOptions","buildChildView","proxyChildEvents","_getViewAndNested","renderChildView","childViewOptions","_updateIndices","_addChildView","increment","laterView","ChildViewClass","collectionView","buffer","elBuffer","createDocumentFragment","b","_insertBefore","_insertAfter","findPosition","before","destroyOptions","shouldCheckEmpty","childViews","identity","rootEvent","CompositeView","partial","_isRendering","resetChildViewContainer","compositeView","$container","getChildViewContainer","containerView","$childViewContainer","container","childViewContainer","charAt","substr","destroyImmediate","_firstRender","_initializeRegions","_reInitializeRegions","regionManager","showChildView","regionName","getRegion","_buildRegions","_initRegionManager","regionOptions","getRegionManager","chain","pluck","compact","Behavior","proxyViewProperties","parseBehaviors","wrap","BehaviorTriggersBuilder","_view","_triggers","getBehaviorsUI","delegateEventSplitter","triggerBuilder","buildBehaviorTriggers","_behaviorsEvents","_events","j","behaviour","join","eventKey","behaviorsLookup","getBehaviorClass","behaviorClass","BehaviorClass","nestedBehaviors","flatten","_buildTriggerHandlersForBehavior","triggersHash","_setHandlerForBehavior","triggerKey","triggerName","AppRouter","Router","appRoutes","controller","_getController","processAppRoutes","_processOnRoute","appRoute","route","_addAppRoute","routeName","routeArgs","onRoute","routePath","invert","routeNames","reverse","Application","_initCallbacks","submodules","_initChannel","addInitializer","initializer","start","_regionManager","moduleNames","moduleDefinition","ModuleClass","Module","getClass","unshift","create","optionRegions","moduleName","app","_setupInitializersAndFinalizers","startWithParent","_initializerCallbacks","addFinalizer","_finalizerCallbacks","_isInitialized","mod","stop","addDefinition","customArgs","_runModuleDefinition","moduleDefinitions","parentModule","_getModule","_addModuleDefinition","def","moduleClass","_getDefine","_getStartWithParent","_addStartWithParent","swp","startWithParentIsConfigured"],"mappings":"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","file":"backbone.marionette.min.js"}
|
assets/admin/js/lib/backbone.radio.js
ADDED
@@ -0,0 +1,350 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Backbone.Radio v1.0.4
|
2 |
+
|
3 |
+
(function (global, factory) {
|
4 |
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('underscore'), require('backbone')) :
|
5 |
+
typeof define === 'function' && define.amd ? define(['underscore', 'backbone'], factory) :
|
6 |
+
(global.Backbone = global.Backbone || {}, global.Backbone.Radio = factory(global._,global.Backbone));
|
7 |
+
}(this, function (_,Backbone) { 'use strict';
|
8 |
+
|
9 |
+
_ = 'default' in _ ? _['default'] : _;
|
10 |
+
Backbone = 'default' in Backbone ? Backbone['default'] : Backbone;
|
11 |
+
|
12 |
+
var babelHelpers = {};
|
13 |
+
babelHelpers.typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
|
14 |
+
return typeof obj;
|
15 |
+
} : function (obj) {
|
16 |
+
return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
17 |
+
};
|
18 |
+
babelHelpers;
|
19 |
+
|
20 |
+
var previousRadio = Backbone.Radio;
|
21 |
+
|
22 |
+
var Radio = Backbone.Radio = {};
|
23 |
+
|
24 |
+
Radio.VERSION = '1.0.4';
|
25 |
+
|
26 |
+
// This allows you to run multiple instances of Radio on the same
|
27 |
+
// webapp. After loading the new version, call `noConflict()` to
|
28 |
+
// get a reference to it. At the same time the old version will be
|
29 |
+
// returned to Backbone.Radio.
|
30 |
+
Radio.noConflict = function () {
|
31 |
+
Backbone.Radio = previousRadio;
|
32 |
+
return this;
|
33 |
+
};
|
34 |
+
|
35 |
+
// Whether or not we're in DEBUG mode or not. DEBUG mode helps you
|
36 |
+
// get around the issues of lack of warnings when events are mis-typed.
|
37 |
+
Radio.DEBUG = false;
|
38 |
+
|
39 |
+
// Format debug text.
|
40 |
+
Radio._debugText = function (warning, eventName, channelName) {
|
41 |
+
return warning + (channelName ? ' on the ' + channelName + ' channel' : '') + ': "' + eventName + '"';
|
42 |
+
};
|
43 |
+
|
44 |
+
// This is the method that's called when an unregistered event was called.
|
45 |
+
// By default, it logs warning to the console. By overriding this you could
|
46 |
+
// make it throw an Error, for instance. This would make firing a nonexistent event
|
47 |
+
// have the same consequence as firing a nonexistent method on an Object.
|
48 |
+
Radio.debugLog = function (warning, eventName, channelName) {
|
49 |
+
if (Radio.DEBUG && console && console.warn) {
|
50 |
+
console.warn(Radio._debugText(warning, eventName, channelName));
|
51 |
+
}
|
52 |
+
};
|
53 |
+
|
54 |
+
var eventSplitter = /\s+/;
|
55 |
+
|
56 |
+
// An internal method used to handle Radio's method overloading for Requests.
|
57 |
+
// It's borrowed from Backbone.Events. It differs from Backbone's overload
|
58 |
+
// API (which is used in Backbone.Events) in that it doesn't support space-separated
|
59 |
+
// event names.
|
60 |
+
Radio._eventsApi = function (obj, action, name, rest) {
|
61 |
+
if (!name) {
|
62 |
+
return false;
|
63 |
+
}
|
64 |
+
|
65 |
+
var results = {};
|
66 |
+
|
67 |
+
// Handle event maps.
|
68 |
+
if ((typeof name === 'undefined' ? 'undefined' : babelHelpers.typeof(name)) === 'object') {
|
69 |
+
for (var key in name) {
|
70 |
+
var result = obj[action].apply(obj, [key, name[key]].concat(rest));
|
71 |
+
eventSplitter.test(key) ? _.extend(results, result) : results[key] = result;
|
72 |
+
}
|
73 |
+
return results;
|
74 |
+
}
|
75 |
+
|
76 |
+
// Handle space separated event names.
|
77 |
+
if (eventSplitter.test(name)) {
|
78 |
+
var names = name.split(eventSplitter);
|
79 |
+
for (var i = 0, l = names.length; i < l; i++) {
|
80 |
+
results[names[i]] = obj[action].apply(obj, [names[i]].concat(rest));
|
81 |
+
}
|
82 |
+
return results;
|
83 |
+
}
|
84 |
+
|
85 |
+
return false;
|
86 |
+
};
|
87 |
+
|
88 |
+
// An optimized way to execute callbacks.
|
89 |
+
Radio._callHandler = function (callback, context, args) {
|
90 |
+
var a1 = args[0],
|
91 |
+
a2 = args[1],
|
92 |
+
a3 = args[2];
|
93 |
+
switch (args.length) {
|
94 |
+
case 0:
|
95 |
+
return callback.call(context);
|
96 |
+
case 1:
|
97 |
+
return callback.call(context, a1);
|
98 |
+
case 2:
|
99 |
+
return callback.call(context, a1, a2);
|
100 |
+
case 3:
|
101 |
+
return callback.call(context, a1, a2, a3);
|
102 |
+
default:
|
103 |
+
return callback.apply(context, args);
|
104 |
+
}
|
105 |
+
};
|
106 |
+
|
107 |
+
// A helper used by `off` methods to the handler from the store
|
108 |
+
function removeHandler(store, name, callback, context) {
|
109 |
+
var event = store[name];
|
110 |
+
if ((!callback || callback === event.callback || callback === event.callback._callback) && (!context || context === event.context)) {
|
111 |
+
delete store[name];
|
112 |
+
return true;
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
function removeHandlers(store, name, callback, context) {
|
117 |
+
store || (store = {});
|
118 |
+
var names = name ? [name] : _.keys(store);
|
119 |
+
var matched = false;
|
120 |
+
|
121 |
+
for (var i = 0, length = names.length; i < length; i++) {
|
122 |
+
name = names[i];
|
123 |
+
|
124 |
+
// If there's no event by this name, log it and continue
|
125 |
+
// with the loop
|
126 |
+
if (!store[name]) {
|
127 |
+
continue;
|
128 |
+
}
|
129 |
+
|
130 |
+
if (removeHandler(store, name, callback, context)) {
|
131 |
+
matched = true;
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
return matched;
|
136 |
+
}
|
137 |
+
|
138 |
+
/*
|
139 |
+
* tune-in
|
140 |
+
* -------
|
141 |
+
* Get console logs of a channel's activity
|
142 |
+
*
|
143 |
+
*/
|
144 |
+
|
145 |
+
var _logs = {};
|
146 |
+
|
147 |
+
// This is to produce an identical function in both tuneIn and tuneOut,
|
148 |
+
// so that Backbone.Events unregisters it.
|
149 |
+
function _partial(channelName) {
|
150 |
+
return _logs[channelName] || (_logs[channelName] = _.partial(Radio.log, channelName));
|
151 |
+
}
|
152 |
+
|
153 |
+
_.extend(Radio, {
|
154 |
+
|
155 |
+
// Log information about the channel and event
|
156 |
+
log: function log(channelName, eventName) {
|
157 |
+
if (typeof console === 'undefined') {
|
158 |
+
return;
|
159 |
+
}
|
160 |
+
var args = _.drop(arguments, 2);
|
161 |
+
console.log('[' + channelName + '] "' + eventName + '"', args);
|
162 |
+
},
|
163 |
+
|
164 |
+
// Logs all events on this channel to the console. It sets an
|
165 |
+
// internal value on the channel telling it we're listening,
|
166 |
+
// then sets a listener on the Backbone.Events
|
167 |
+
tuneIn: function tuneIn(channelName) {
|
168 |
+
var channel = Radio.channel(channelName);
|
169 |
+
channel._tunedIn = true;
|
170 |
+
channel.on('all', _partial(channelName));
|
171 |
+
return this;
|
172 |
+
},
|
173 |
+
|
174 |
+
// Stop logging all of the activities on this channel to the console
|
175 |
+
tuneOut: function tuneOut(channelName) {
|
176 |
+
var channel = Radio.channel(channelName);
|
177 |
+
channel._tunedIn = false;
|
178 |
+
channel.off('all', _partial(channelName));
|
179 |
+
delete _logs[channelName];
|
180 |
+
return this;
|
181 |
+
}
|
182 |
+
});
|
183 |
+
|
184 |
+
/*
|
185 |
+
* Backbone.Radio.Requests
|
186 |
+
* -----------------------
|
187 |
+
* A messaging system for requesting data.
|
188 |
+
*
|
189 |
+
*/
|
190 |
+
|
191 |
+
function makeCallback(callback) {
|
192 |
+
return _.isFunction(callback) ? callback : function () {
|
193 |
+
return callback;
|
194 |
+
};
|
195 |
+
}
|
196 |
+
|
197 |
+
Radio.Requests = {
|
198 |
+
|
199 |
+
// Make a request
|
200 |
+
request: function request(name) {
|
201 |
+
var args = _.rest(arguments);
|
202 |
+
var results = Radio._eventsApi(this, 'request', name, args);
|
203 |
+
if (results) {
|
204 |
+
return results;
|
205 |
+
}
|
206 |
+
var channelName = this.channelName;
|
207 |
+
var requests = this._requests;
|
208 |
+
|
209 |
+
// Check if we should log the request, and if so, do it
|
210 |
+
if (channelName && this._tunedIn) {
|
211 |
+
Radio.log.apply(this, [channelName, name].concat(args));
|
212 |
+
}
|
213 |
+
|
214 |
+
// If the request isn't handled, log it in DEBUG mode and exit
|
215 |
+
if (requests && (requests[name] || requests['default'])) {
|
216 |
+
var handler = requests[name] || requests['default'];
|
217 |
+
args = requests[name] ? args : arguments;
|
218 |
+
return Radio._callHandler(handler.callback, handler.context, args);
|
219 |
+
} else {
|
220 |
+
Radio.debugLog('An unhandled request was fired', name, channelName);
|
221 |
+
}
|
222 |
+
},
|
223 |
+
|
224 |
+
// Set up a handler for a request
|
225 |
+
reply: function reply(name, callback, context) {
|
226 |
+
if (Radio._eventsApi(this, 'reply', name, [callback, context])) {
|
227 |
+
return this;
|
228 |
+
}
|
229 |
+
|
230 |
+
this._requests || (this._requests = {});
|
231 |
+
|
232 |
+
if (this._requests[name]) {
|
233 |
+
Radio.debugLog('A request was overwritten', name, this.channelName);
|
234 |
+
}
|
235 |
+
|
236 |
+
this._requests[name] = {
|
237 |
+
callback: makeCallback(callback),
|
238 |
+
context: context || this
|
239 |
+
};
|
240 |
+
|
241 |
+
return this;
|
242 |
+
},
|
243 |
+
|
244 |
+
// Set up a handler that can only be requested once
|
245 |
+
replyOnce: function replyOnce(name, callback, context) {
|
246 |
+
if (Radio._eventsApi(this, 'replyOnce', name, [callback, context])) {
|
247 |
+
return this;
|
248 |
+
}
|
249 |
+
|
250 |
+
var self = this;
|
251 |
+
|
252 |
+
var once = _.once(function () {
|
253 |
+
self.stopReplying(name);
|
254 |
+
return makeCallback(callback).apply(this, arguments);
|
255 |
+
});
|
256 |
+
|
257 |
+
return this.reply(name, once, context);
|
258 |
+
},
|
259 |
+
|
260 |
+
// Remove handler(s)
|
261 |
+
stopReplying: function stopReplying(name, callback, context) {
|
262 |
+
if (Radio._eventsApi(this, 'stopReplying', name)) {
|
263 |
+
return this;
|
264 |
+
}
|
265 |
+
|
266 |
+
// Remove everything if there are no arguments passed
|
267 |
+
if (!name && !callback && !context) {
|
268 |
+
delete this._requests;
|
269 |
+
} else if (!removeHandlers(this._requests, name, callback, context)) {
|
270 |
+
Radio.debugLog('Attempted to remove the unregistered request', name, this.channelName);
|
271 |
+
}
|
272 |
+
|
273 |
+
return this;
|
274 |
+
}
|
275 |
+
};
|
276 |
+
|
277 |
+
/*
|
278 |
+
* Backbone.Radio.channel
|
279 |
+
* ----------------------
|
280 |
+
* Get a reference to a channel by name.
|
281 |
+
*
|
282 |
+
*/
|
283 |
+
|
284 |
+
Radio._channels = {};
|
285 |
+
|
286 |
+
Radio.channel = function (channelName) {
|
287 |
+
if (!channelName) {
|
288 |
+
throw new Error('You must provide a name for the channel.');
|
289 |
+
}
|
290 |
+
|
291 |
+
if (Radio._channels[channelName]) {
|
292 |
+
return Radio._channels[channelName];
|
293 |
+
} else {
|
294 |
+
return Radio._channels[channelName] = new Radio.Channel(channelName);
|
295 |
+
}
|
296 |
+
};
|
297 |
+
|
298 |
+
/*
|
299 |
+
* Backbone.Radio.Channel
|
300 |
+
* ----------------------
|
301 |
+
* A Channel is an object that extends from Backbone.Events,
|
302 |
+
* and Radio.Requests.
|
303 |
+
*
|
304 |
+
*/
|
305 |
+
|
306 |
+
Radio.Channel = function (channelName) {
|
307 |
+
this.channelName = channelName;
|
308 |
+
};
|
309 |
+
|
310 |
+
_.extend(Radio.Channel.prototype, Backbone.Events, Radio.Requests, {
|
311 |
+
|
312 |
+
// Remove all handlers from the messaging systems of this channel
|
313 |
+
reset: function reset() {
|
314 |
+
this.off();
|
315 |
+
this.stopListening();
|
316 |
+
this.stopReplying();
|
317 |
+
return this;
|
318 |
+
}
|
319 |
+
});
|
320 |
+
|
321 |
+
/*
|
322 |
+
* Top-level API
|
323 |
+
* -------------
|
324 |
+
* Supplies the 'top-level API' for working with Channels directly
|
325 |
+
* from Backbone.Radio.
|
326 |
+
*
|
327 |
+
*/
|
328 |
+
|
329 |
+
var channel;
|
330 |
+
var args;
|
331 |
+
var systems = [Backbone.Events, Radio.Requests];
|
332 |
+
_.each(systems, function (system) {
|
333 |
+
_.each(system, function (method, methodName) {
|
334 |
+
Radio[methodName] = function (channelName) {
|
335 |
+
args = _.rest(arguments);
|
336 |
+
channel = this.channel(channelName);
|
337 |
+
return channel[methodName].apply(channel, args);
|
338 |
+
};
|
339 |
+
});
|
340 |
+
});
|
341 |
+
|
342 |
+
Radio.reset = function (channelName) {
|
343 |
+
var channels = !channelName ? this._channels : [this._channels[channelName]];
|
344 |
+
_.invoke(channels, 'reset');
|
345 |
+
};
|
346 |
+
|
347 |
+
return Radio;
|
348 |
+
|
349 |
+
}));
|
350 |
+
//# sourceMappingURL=./backbone.radio.js.map
|
assets/admin/js/lib/backbone.radio.js.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"names":[],"mappings":"","sources":["backbone.radio.js"],"sourcesContent":["// Backbone.Radio v1.0.4\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('underscore'), require('backbone')) :\n typeof define === 'function' && define.amd ? define(['underscore', 'backbone'], factory) :\n (global.Backbone = global.Backbone || {}, global.Backbone.Radio = factory(global._,global.Backbone));\n}(this, function (_,Backbone) { 'use strict';\n\n _ = 'default' in _ ? _['default'] : _;\n Backbone = 'default' in Backbone ? Backbone['default'] : Backbone;\n\n var babelHelpers = {};\n babelHelpers.typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n babelHelpers;\n\n var previousRadio = Backbone.Radio;\n\n var Radio = Backbone.Radio = {};\n\n Radio.VERSION = '1.0.4';\n\n // This allows you to run multiple instances of Radio on the same\n // webapp. After loading the new version, call `noConflict()` to\n // get a reference to it. At the same time the old version will be\n // returned to Backbone.Radio.\n Radio.noConflict = function () {\n Backbone.Radio = previousRadio;\n return this;\n };\n\n // Whether or not we're in DEBUG mode or not. DEBUG mode helps you\n // get around the issues of lack of warnings when events are mis-typed.\n Radio.DEBUG = false;\n\n // Format debug text.\n Radio._debugText = function (warning, eventName, channelName) {\n return warning + (channelName ? ' on the ' + channelName + ' channel' : '') + ': \"' + eventName + '\"';\n };\n\n // This is the method that's called when an unregistered event was called.\n // By default, it logs warning to the console. By overriding this you could\n // make it throw an Error, for instance. This would make firing a nonexistent event\n // have the same consequence as firing a nonexistent method on an Object.\n Radio.debugLog = function (warning, eventName, channelName) {\n if (Radio.DEBUG && console && console.warn) {\n console.warn(Radio._debugText(warning, eventName, channelName));\n }\n };\n\n var eventSplitter = /\\s+/;\n\n // An internal method used to handle Radio's method overloading for Requests.\n // It's borrowed from Backbone.Events. It differs from Backbone's overload\n // API (which is used in Backbone.Events) in that it doesn't support space-separated\n // event names.\n Radio._eventsApi = function (obj, action, name, rest) {\n if (!name) {\n return false;\n }\n\n var results = {};\n\n // Handle event maps.\n if ((typeof name === 'undefined' ? 'undefined' : babelHelpers.typeof(name)) === 'object') {\n for (var key in name) {\n var result = obj[action].apply(obj, [key, name[key]].concat(rest));\n eventSplitter.test(key) ? _.extend(results, result) : results[key] = result;\n }\n return results;\n }\n\n // Handle space separated event names.\n if (eventSplitter.test(name)) {\n var names = name.split(eventSplitter);\n for (var i = 0, l = names.length; i < l; i++) {\n results[names[i]] = obj[action].apply(obj, [names[i]].concat(rest));\n }\n return results;\n }\n\n return false;\n };\n\n // An optimized way to execute callbacks.\n Radio._callHandler = function (callback, context, args) {\n var a1 = args[0],\n a2 = args[1],\n a3 = args[2];\n switch (args.length) {\n case 0:\n return callback.call(context);\n case 1:\n return callback.call(context, a1);\n case 2:\n return callback.call(context, a1, a2);\n case 3:\n return callback.call(context, a1, a2, a3);\n default:\n return callback.apply(context, args);\n }\n };\n\n // A helper used by `off` methods to the handler from the store\n function removeHandler(store, name, callback, context) {\n var event = store[name];\n if ((!callback || callback === event.callback || callback === event.callback._callback) && (!context || context === event.context)) {\n delete store[name];\n return true;\n }\n }\n\n function removeHandlers(store, name, callback, context) {\n store || (store = {});\n var names = name ? [name] : _.keys(store);\n var matched = false;\n\n for (var i = 0, length = names.length; i < length; i++) {\n name = names[i];\n\n // If there's no event by this name, log it and continue\n // with the loop\n if (!store[name]) {\n continue;\n }\n\n if (removeHandler(store, name, callback, context)) {\n matched = true;\n }\n }\n\n return matched;\n }\n\n /*\n * tune-in\n * -------\n * Get console logs of a channel's activity\n *\n */\n\n var _logs = {};\n\n // This is to produce an identical function in both tuneIn and tuneOut,\n // so that Backbone.Events unregisters it.\n function _partial(channelName) {\n return _logs[channelName] || (_logs[channelName] = _.partial(Radio.log, channelName));\n }\n\n _.extend(Radio, {\n\n // Log information about the channel and event\n log: function log(channelName, eventName) {\n if (typeof console === 'undefined') {\n return;\n }\n var args = _.drop(arguments, 2);\n console.log('[' + channelName + '] \"' + eventName + '\"', args);\n },\n\n // Logs all events on this channel to the console. It sets an\n // internal value on the channel telling it we're listening,\n // then sets a listener on the Backbone.Events\n tuneIn: function tuneIn(channelName) {\n var channel = Radio.channel(channelName);\n channel._tunedIn = true;\n channel.on('all', _partial(channelName));\n return this;\n },\n\n // Stop logging all of the activities on this channel to the console\n tuneOut: function tuneOut(channelName) {\n var channel = Radio.channel(channelName);\n channel._tunedIn = false;\n channel.off('all', _partial(channelName));\n delete _logs[channelName];\n return this;\n }\n });\n\n /*\n * Backbone.Radio.Requests\n * -----------------------\n * A messaging system for requesting data.\n *\n */\n\n function makeCallback(callback) {\n return _.isFunction(callback) ? callback : function () {\n return callback;\n };\n }\n\n Radio.Requests = {\n\n // Make a request\n request: function request(name) {\n var args = _.rest(arguments);\n var results = Radio._eventsApi(this, 'request', name, args);\n if (results) {\n return results;\n }\n var channelName = this.channelName;\n var requests = this._requests;\n\n // Check if we should log the request, and if so, do it\n if (channelName && this._tunedIn) {\n Radio.log.apply(this, [channelName, name].concat(args));\n }\n\n // If the request isn't handled, log it in DEBUG mode and exit\n if (requests && (requests[name] || requests['default'])) {\n var handler = requests[name] || requests['default'];\n args = requests[name] ? args : arguments;\n return Radio._callHandler(handler.callback, handler.context, args);\n } else {\n Radio.debugLog('An unhandled request was fired', name, channelName);\n }\n },\n\n // Set up a handler for a request\n reply: function reply(name, callback, context) {\n if (Radio._eventsApi(this, 'reply', name, [callback, context])) {\n return this;\n }\n\n this._requests || (this._requests = {});\n\n if (this._requests[name]) {\n Radio.debugLog('A request was overwritten', name, this.channelName);\n }\n\n this._requests[name] = {\n callback: makeCallback(callback),\n context: context || this\n };\n\n return this;\n },\n\n // Set up a handler that can only be requested once\n replyOnce: function replyOnce(name, callback, context) {\n if (Radio._eventsApi(this, 'replyOnce', name, [callback, context])) {\n return this;\n }\n\n var self = this;\n\n var once = _.once(function () {\n self.stopReplying(name);\n return makeCallback(callback).apply(this, arguments);\n });\n\n return this.reply(name, once, context);\n },\n\n // Remove handler(s)\n stopReplying: function stopReplying(name, callback, context) {\n if (Radio._eventsApi(this, 'stopReplying', name)) {\n return this;\n }\n\n // Remove everything if there are no arguments passed\n if (!name && !callback && !context) {\n delete this._requests;\n } else if (!removeHandlers(this._requests, name, callback, context)) {\n Radio.debugLog('Attempted to remove the unregistered request', name, this.channelName);\n }\n\n return this;\n }\n };\n\n /*\n * Backbone.Radio.channel\n * ----------------------\n * Get a reference to a channel by name.\n *\n */\n\n Radio._channels = {};\n\n Radio.channel = function (channelName) {\n if (!channelName) {\n throw new Error('You must provide a name for the channel.');\n }\n\n if (Radio._channels[channelName]) {\n return Radio._channels[channelName];\n } else {\n return Radio._channels[channelName] = new Radio.Channel(channelName);\n }\n };\n\n /*\n * Backbone.Radio.Channel\n * ----------------------\n * A Channel is an object that extends from Backbone.Events,\n * and Radio.Requests.\n *\n */\n\n Radio.Channel = function (channelName) {\n this.channelName = channelName;\n };\n\n _.extend(Radio.Channel.prototype, Backbone.Events, Radio.Requests, {\n\n // Remove all handlers from the messaging systems of this channel\n reset: function reset() {\n this.off();\n this.stopListening();\n this.stopReplying();\n return this;\n }\n });\n\n /*\n * Top-level API\n * -------------\n * Supplies the 'top-level API' for working with Channels directly\n * from Backbone.Radio.\n *\n */\n\n var channel;\n var args;\n var systems = [Backbone.Events, Radio.Requests];\n _.each(systems, function (system) {\n _.each(system, function (method, methodName) {\n Radio[methodName] = function (channelName) {\n args = _.rest(arguments);\n channel = this.channel(channelName);\n return channel[methodName].apply(channel, args);\n };\n });\n });\n\n Radio.reset = function (channelName) {\n var channels = !channelName ? this._channels : [this._channels[channelName]];\n _.invoke(channels, 'reset');\n };\n\n return Radio;\n\n}));\n"],"file":"backbone.radio.js","sourceRoot":"/source/"}
|
assets/admin/js/lib/backbone.radio.min.js
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
// Backbone.Radio v1.0.4
|
2 |
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("underscore"),require("backbone")):"function"==typeof define&&define.amd?define(["underscore","backbone"],n):(e.Backbone=e.Backbone||{},e.Backbone.Radio=n(e._,e.Backbone))}(this,function(e,n){"use strict";function t(e,n,t,r){var o=e[n];return t&&t!==o.callback&&t!==o.callback._callback||r&&r!==o.context?void 0:(delete e[n],!0)}function r(n,r,o,i){n||(n={});for(var s=r?[r]:e.keys(n),u=!1,a=0,c=s.length;c>a;a++)r=s[a],n[r]&&t(n,r,o,i)&&(u=!0);return u}function o(n){return l[n]||(l[n]=e.partial(a.log,n))}function i(n){return e.isFunction(n)?n:function(){return n}}e="default"in e?e["default"]:e,n="default"in n?n["default"]:n;var s={};s["typeof"]="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};var u=n.Radio,a=n.Radio={};a.VERSION="1.0.4",a.noConflict=function(){return n.Radio=u,this},a.DEBUG=!1,a._debugText=function(e,n,t){return e+(t?" on the "+t+" channel":"")+': "'+n+'"'},a.debugLog=function(e,n,t){a.DEBUG&&console&&console.warn&&console.warn(a._debugText(e,n,t))};var c=/\s+/;a._eventsApi=function(n,t,r,o){if(!r)return!1;var i={};if("object"===("undefined"==typeof r?"undefined":s["typeof"](r))){for(var u in r){var a=n[t].apply(n,[u,r[u]].concat(o));c.test(u)?e.extend(i,a):i[u]=a}return i}if(c.test(r)){for(var l=r.split(c),f=0,h=l.length;h>f;f++)i[l[f]]=n[t].apply(n,[l[f]].concat(o));return i}return!1},a._callHandler=function(e,n,t){var r=t[0],o=t[1],i=t[2];switch(t.length){case 0:return e.call(n);case 1:return e.call(n,r);case 2:return e.call(n,r,o);case 3:return e.call(n,r,o,i);default:return e.apply(n,t)}};var l={};e.extend(a,{log:function(n,t){if("undefined"!=typeof console){var r=e.drop(arguments,2);console.log("["+n+'] "'+t+'"',r)}},tuneIn:function(e){var n=a.channel(e);return n._tunedIn=!0,n.on("all",o(e)),this},tuneOut:function(e){var n=a.channel(e);return n._tunedIn=!1,n.off("all",o(e)),delete l[e],this}}),a.Requests={request:function(n){var t=e.rest(arguments),r=a._eventsApi(this,"request",n,t);if(r)return r;var o=this.channelName,i=this._requests;if(o&&this._tunedIn&&a.log.apply(this,[o,n].concat(t)),i&&(i[n]||i["default"])){var s=i[n]||i["default"];return t=i[n]?t:arguments,a._callHandler(s.callback,s.context,t)}a.debugLog("An unhandled request was fired",n,o)},reply:function(e,n,t){return a._eventsApi(this,"reply",e,[n,t])?this:(this._requests||(this._requests={}),this._requests[e]&&a.debugLog("A request was overwritten",e,this.channelName),this._requests[e]={callback:i(n),context:t||this},this)},replyOnce:function(n,t,r){if(a._eventsApi(this,"replyOnce",n,[t,r]))return this;var o=this,s=e.once(function(){return o.stopReplying(n),i(t).apply(this,arguments)});return this.reply(n,s,r)},stopReplying:function(e,n,t){return a._eventsApi(this,"stopReplying",e)?this:(e||n||t?r(this._requests,e,n,t)||a.debugLog("Attempted to remove the unregistered request",e,this.channelName):delete this._requests,this)}},a._channels={},a.channel=function(e){if(!e)throw new Error("You must provide a name for the channel.");return a._channels[e]?a._channels[e]:a._channels[e]=new a.Channel(e)},a.Channel=function(e){this.channelName=e},e.extend(a.Channel.prototype,n.Events,a.Requests,{reset:function(){return this.off(),this.stopListening(),this.stopReplying(),this}});var f,h,d=[n.Events,a.Requests];return e.each(d,function(n){e.each(n,function(n,t){a[t]=function(n){return h=e.rest(arguments),f=this.channel(n),f[t].apply(f,h)}})}),a.reset=function(n){var t=n?[this._channels[n]]:this._channels;e.invoke(t,"reset")},a});
|
3 |
+
//# sourceMappingURL=backbone.radio.min.js.map
|
assets/admin/js/lib/backbone.radio.min.js.map
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
// Backbone.Radio v1.0.4
|
2 |
+
{"version":3,"sources":["backbone.radio.min.js"],"names":["global","factory","exports","module","require","define","amd","Backbone","Radio","_","this","removeHandler","store","name","callback","context","event","_callback","removeHandlers","names","keys","matched","i","length","_partial","channelName","_logs","partial","log","makeCallback","isFunction","babelHelpers","Symbol","iterator","obj","constructor","previousRadio","VERSION","noConflict","DEBUG","_debugText","warning","eventName","debugLog","console","warn","eventSplitter","_eventsApi","action","rest","results","key","result","apply","concat","test","extend","split","l","_callHandler","args","a1","a2","a3","call","drop","arguments","tuneIn","channel","_tunedIn","on","tuneOut","off","Requests","request","requests","_requests","handler","reply","replyOnce","self","once","stopReplying","_channels","Error","Channel","prototype","Events","reset","stopListening","systems","each","system","method","methodName","channels","invoke"],"mappings":"CAEC,SAAUA,EAAQC,GACE,gBAAZC,UAA0C,mBAAXC,QAAyBA,OAAOD,QAAUD,EAAQG,QAAQ,cAAeA,QAAQ,aACrG,kBAAXC,SAAyBA,OAAOC,IAAMD,QAAQ,aAAc,YAAaJ,IAC/ED,EAAOO,SAAWP,EAAOO,aAAgBP,EAAOO,SAASC,MAAQP,EAAQD,EAAOS,EAAET,EAAOO,YAC1FG,KAAM,SAAUD,EAAEF,GAAY,YAqG9B,SAASI,GAAcC,EAAOC,EAAMC,EAAUC,GAC5C,GAAIC,GAAQJ,EAAMC,EAClB,OAAMC,IAAYA,IAAaE,EAAMF,UAAYA,IAAaE,EAAMF,SAASG,WAAgBF,GAAWA,IAAYC,EAAMD,QAA1H,cACSH,GAAMC,IACN,GAIX,QAASK,GAAeN,EAAOC,EAAMC,EAAUC,GAC7CH,IAAUA,KAIV,KAAK,GAHDO,GAAQN,GAAQA,GAAQJ,EAAEW,KAAKR,GAC/BS,GAAU,EAELC,EAAI,EAAGC,EAASJ,EAAMI,OAAYA,EAAJD,EAAYA,IACjDT,EAAOM,EAAMG,GAIRV,EAAMC,IAIPF,EAAcC,EAAOC,EAAMC,EAAUC,KACvCM,GAAU,EAId,OAAOA,GAcT,QAASG,GAASC,GAChB,MAAOC,GAAMD,KAAiBC,EAAMD,GAAehB,EAAEkB,QAAQnB,EAAMoB,IAAKH,IAyC1E,QAASI,GAAaf,GACpB,MAAOL,GAAEqB,WAAWhB,GAAYA,EAAW,WACzC,MAAOA,IAxLXL,EAAI,WAAaA,GAAIA,EAAE,WAAaA,EACpCF,EAAW,WAAaA,GAAWA,EAAS,WAAaA,CAEzD,IAAIwB,KACJA,GAAAA,UAAwC,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GACpG,aAAcA,IACZ,SAAUA,GACZ,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,GAI/F,IAAIE,GAAgB7B,EAASC,MAEzBA,EAAQD,EAASC,QAErBA,GAAM6B,QAAU,QAMhB7B,EAAM8B,WAAa,WAEjB,MADA/B,GAASC,MAAQ4B,EACV1B,MAKTF,EAAM+B,OAAQ,EAGd/B,EAAMgC,WAAa,SAAUC,EAASC,EAAWjB,GAC/C,MAAOgB,IAAWhB,EAAc,WAAaA,EAAc,WAAa,IAAM,MAAQiB,EAAY,KAOpGlC,EAAMmC,SAAW,SAAUF,EAASC,EAAWjB,GACzCjB,EAAM+B,OAASK,SAAWA,QAAQC,MACpCD,QAAQC,KAAKrC,EAAMgC,WAAWC,EAASC,EAAWjB,IAItD,IAAIqB,GAAgB,KAMpBtC,GAAMuC,WAAa,SAAUb,EAAKc,EAAQnC,EAAMoC,GAC9C,IAAKpC,EACH,OAAO,CAGT,IAAIqC,KAGJ,IAAgF,YAA3D,mBAATrC,GAAuB,YAAckB,EAAAA,UAAoBlB,IAAqB,CACxF,IAAK,GAAIsC,KAAOtC,GAAM,CACpB,GAAIuC,GAASlB,EAAIc,GAAQK,MAAMnB,GAAMiB,EAAKtC,EAAKsC,IAAMG,OAAOL,GAC5DH,GAAcS,KAAKJ,GAAO1C,EAAE+C,OAAON,EAASE,GAAUF,EAAQC,GAAOC,EAEvE,MAAOF,GAIT,GAAIJ,EAAcS,KAAK1C,GAAO,CAE5B,IAAK,GADDM,GAAQN,EAAK4C,MAAMX,GACdxB,EAAI,EAAGoC,EAAIvC,EAAMI,OAAYmC,EAAJpC,EAAOA,IACvC4B,EAAQ/B,EAAMG,IAAMY,EAAIc,GAAQK,MAAMnB,GAAMf,EAAMG,IAAIgC,OAAOL,GAE/D,OAAOC,GAGT,OAAO,GAIT1C,EAAMmD,aAAe,SAAU7C,EAAUC,EAAS6C,GAChD,GAAIC,GAAKD,EAAK,GACVE,EAAKF,EAAK,GACVG,EAAKH,EAAK,EACd,QAAQA,EAAKrC,QACX,IAAK,GACH,MAAOT,GAASkD,KAAKjD,EACvB,KAAK,GACH,MAAOD,GAASkD,KAAKjD,EAAS8C,EAChC,KAAK,GACH,MAAO/C,GAASkD,KAAKjD,EAAS8C,EAAIC,EACpC,KAAK,GACH,MAAOhD,GAASkD,KAAKjD,EAAS8C,EAAIC,EAAIC,EACxC,SACE,MAAOjD,GAASuC,MAAMtC,EAAS6C,IA0CrC,IAAIlC,KAQJjB,GAAE+C,OAAOhD,GAGPoB,IAAK,SAAaH,EAAaiB,GAC7B,GAAuB,mBAAZE,SAAX,CAGA,GAAIgB,GAAOnD,EAAEwD,KAAKC,UAAW,EAC7BtB,SAAQhB,IAAI,IAAMH,EAAc,MAAQiB,EAAY,IAAKkB,KAM3DO,OAAQ,SAAgB1C,GACtB,GAAI2C,GAAU5D,EAAM4D,QAAQ3C,EAG5B,OAFA2C,GAAQC,UAAW,EACnBD,EAAQE,GAAG,MAAO9C,EAASC,IACpBf,MAIT6D,QAAS,SAAiB9C,GACxB,GAAI2C,GAAU5D,EAAM4D,QAAQ3C,EAI5B,OAHA2C,GAAQC,UAAW,EACnBD,EAAQI,IAAI,MAAOhD,EAASC,UACrBC,GAAMD,GACNf,QAiBXF,EAAMiE,UAGJC,QAAS,SAAiB7D,GACxB,GAAI+C,GAAOnD,EAAEwC,KAAKiB,WACdhB,EAAU1C,EAAMuC,WAAWrC,KAAM,UAAWG,EAAM+C,EACtD,IAAIV,EACF,MAAOA,EAET,IAAIzB,GAAcf,KAAKe,YACnBkD,EAAWjE,KAAKkE,SAQpB,IALInD,GAAef,KAAK2D,UACtB7D,EAAMoB,IAAIyB,MAAM3C,MAAOe,EAAaZ,GAAMyC,OAAOM,IAI/Ce,IAAaA,EAAS9D,IAAS8D,EAAS,YAAa,CACvD,GAAIE,GAAUF,EAAS9D,IAAS8D,EAAS,UAEzC,OADAf,GAAOe,EAAS9D,GAAQ+C,EAAOM,UACxB1D,EAAMmD,aAAakB,EAAQ/D,SAAU+D,EAAQ9D,QAAS6C,GAE7DpD,EAAMmC,SAAS,iCAAkC9B,EAAMY,IAK3DqD,MAAO,SAAejE,EAAMC,EAAUC,GACpC,MAAIP,GAAMuC,WAAWrC,KAAM,QAASG,GAAOC,EAAUC,IAC5CL,MAGTA,KAAKkE,YAAclE,KAAKkE,cAEpBlE,KAAKkE,UAAU/D,IACjBL,EAAMmC,SAAS,4BAA6B9B,EAAMH,KAAKe,aAGzDf,KAAKkE,UAAU/D,IACbC,SAAUe,EAAaf,GACvBC,QAASA,GAAWL,MAGfA,OAITqE,UAAW,SAAmBlE,EAAMC,EAAUC,GAC5C,GAAIP,EAAMuC,WAAWrC,KAAM,YAAaG,GAAOC,EAAUC,IACvD,MAAOL,KAGT,IAAIsE,GAAOtE,KAEPuE,EAAOxE,EAAEwE,KAAK,WAEhB,MADAD,GAAKE,aAAarE,GACXgB,EAAaf,GAAUuC,MAAM3C,KAAMwD,YAG5C,OAAOxD,MAAKoE,MAAMjE,EAAMoE,EAAMlE,IAIhCmE,aAAc,SAAsBrE,EAAMC,EAAUC,GAClD,MAAIP,GAAMuC,WAAWrC,KAAM,eAAgBG,GAClCH,MAIJG,GAASC,GAAaC,EAEfG,EAAeR,KAAKkE,UAAW/D,EAAMC,EAAUC,IACzDP,EAAMmC,SAAS,+CAAgD9B,EAAMH,KAAKe,mBAFnEf,MAAKkE,UAKPlE,QAWXF,EAAM2E,aAEN3E,EAAM4D,QAAU,SAAU3C,GACxB,IAAKA,EACH,KAAM,IAAI2D,OAAM,2CAGlB,OAAI5E,GAAM2E,UAAU1D,GACXjB,EAAM2E,UAAU1D,GAEhBjB,EAAM2E,UAAU1D,GAAe,GAAIjB,GAAM6E,QAAQ5D,IAY5DjB,EAAM6E,QAAU,SAAU5D,GACxBf,KAAKe,YAAcA,GAGrBhB,EAAE+C,OAAOhD,EAAM6E,QAAQC,UAAW/E,EAASgF,OAAQ/E,EAAMiE,UAGvDe,MAAO,WAIL,MAHA9E,MAAK8D,MACL9D,KAAK+E,gBACL/E,KAAKwE,eACExE,OAYX,IAAI0D,GACAR,EACA8B,GAAWnF,EAASgF,OAAQ/E,EAAMiE,SAgBtC,OAfAhE,GAAEkF,KAAKD,EAAS,SAAUE,GACxBnF,EAAEkF,KAAKC,EAAQ,SAAUC,EAAQC,GAC/BtF,EAAMsF,GAAc,SAAUrE,GAG5B,MAFAmC,GAAOnD,EAAEwC,KAAKiB,WACdE,EAAU1D,KAAK0D,QAAQ3C,GAChB2C,EAAQ0B,GAAYzC,MAAMe,EAASR,QAKhDpD,EAAMgF,MAAQ,SAAU/D,GACtB,GAAIsE,GAAYtE,GAAgCf,KAAKyE,UAAU1D,IAAjCf,KAAKyE,SACnC1E,GAAEuF,OAAOD,EAAU,UAGdvF","file":"backbone.radio.min.js","sourcesContent":["// Backbone.Radio v1.0.4\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('underscore'), require('backbone')) :\n typeof define === 'function' && define.amd ? define(['underscore', 'backbone'], factory) :\n (global.Backbone = global.Backbone || {}, global.Backbone.Radio = factory(global._,global.Backbone));\n}(this, function (_,Backbone) { 'use strict';\n\n _ = 'default' in _ ? _['default'] : _;\n Backbone = 'default' in Backbone ? Backbone['default'] : Backbone;\n\n var babelHelpers = {};\n babelHelpers.typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n babelHelpers;\n\n var previousRadio = Backbone.Radio;\n\n var Radio = Backbone.Radio = {};\n\n Radio.VERSION = '1.0.4';\n\n // This allows you to run multiple instances of Radio on the same\n // webapp. After loading the new version, call `noConflict()` to\n // get a reference to it. At the same time the old version will be\n // returned to Backbone.Radio.\n Radio.noConflict = function () {\n Backbone.Radio = previousRadio;\n return this;\n };\n\n // Whether or not we're in DEBUG mode or not. DEBUG mode helps you\n // get around the issues of lack of warnings when events are mis-typed.\n Radio.DEBUG = false;\n\n // Format debug text.\n Radio._debugText = function (warning, eventName, channelName) {\n return warning + (channelName ? ' on the ' + channelName + ' channel' : '') + ': \"' + eventName + '\"';\n };\n\n // This is the method that's called when an unregistered event was called.\n // By default, it logs warning to the console. By overriding this you could\n // make it throw an Error, for instance. This would make firing a nonexistent event\n // have the same consequence as firing a nonexistent method on an Object.\n Radio.debugLog = function (warning, eventName, channelName) {\n if (Radio.DEBUG && console && console.warn) {\n console.warn(Radio._debugText(warning, eventName, channelName));\n }\n };\n\n var eventSplitter = /\\s+/;\n\n // An internal method used to handle Radio's method overloading for Requests.\n // It's borrowed from Backbone.Events. It differs from Backbone's overload\n // API (which is used in Backbone.Events) in that it doesn't support space-separated\n // event names.\n Radio._eventsApi = function (obj, action, name, rest) {\n if (!name) {\n return false;\n }\n\n var results = {};\n\n // Handle event maps.\n if ((typeof name === 'undefined' ? 'undefined' : babelHelpers.typeof(name)) === 'object') {\n for (var key in name) {\n var result = obj[action].apply(obj, [key, name[key]].concat(rest));\n eventSplitter.test(key) ? _.extend(results, result) : results[key] = result;\n }\n return results;\n }\n\n // Handle space separated event names.\n if (eventSplitter.test(name)) {\n var names = name.split(eventSplitter);\n for (var i = 0, l = names.length; i < l; i++) {\n results[names[i]] = obj[action].apply(obj, [names[i]].concat(rest));\n }\n return results;\n }\n\n return false;\n };\n\n // An optimized way to execute callbacks.\n Radio._callHandler = function (callback, context, args) {\n var a1 = args[0],\n a2 = args[1],\n a3 = args[2];\n switch (args.length) {\n case 0:\n return callback.call(context);\n case 1:\n return callback.call(context, a1);\n case 2:\n return callback.call(context, a1, a2);\n case 3:\n return callback.call(context, a1, a2, a3);\n default:\n return callback.apply(context, args);\n }\n };\n\n // A helper used by `off` methods to the handler from the store\n function removeHandler(store, name, callback, context) {\n var event = store[name];\n if ((!callback || callback === event.callback || callback === event.callback._callback) && (!context || context === event.context)) {\n delete store[name];\n return true;\n }\n }\n\n function removeHandlers(store, name, callback, context) {\n store || (store = {});\n var names = name ? [name] : _.keys(store);\n var matched = false;\n\n for (var i = 0, length = names.length; i < length; i++) {\n name = names[i];\n\n // If there's no event by this name, log it and continue\n // with the loop\n if (!store[name]) {\n continue;\n }\n\n if (removeHandler(store, name, callback, context)) {\n matched = true;\n }\n }\n\n return matched;\n }\n\n /*\n * tune-in\n * -------\n * Get console logs of a channel's activity\n *\n */\n\n var _logs = {};\n\n // This is to produce an identical function in both tuneIn and tuneOut,\n // so that Backbone.Events unregisters it.\n function _partial(channelName) {\n return _logs[channelName] || (_logs[channelName] = _.partial(Radio.log, channelName));\n }\n\n _.extend(Radio, {\n\n // Log information about the channel and event\n log: function log(channelName, eventName) {\n if (typeof console === 'undefined') {\n return;\n }\n var args = _.drop(arguments, 2);\n console.log('[' + channelName + '] \"' + eventName + '\"', args);\n },\n\n // Logs all events on this channel to the console. It sets an\n // internal value on the channel telling it we're listening,\n // then sets a listener on the Backbone.Events\n tuneIn: function tuneIn(channelName) {\n var channel = Radio.channel(channelName);\n channel._tunedIn = true;\n channel.on('all', _partial(channelName));\n return this;\n },\n\n // Stop logging all of the activities on this channel to the console\n tuneOut: function tuneOut(channelName) {\n var channel = Radio.channel(channelName);\n channel._tunedIn = false;\n channel.off('all', _partial(channelName));\n delete _logs[channelName];\n return this;\n }\n });\n\n /*\n * Backbone.Radio.Requests\n * -----------------------\n * A messaging system for requesting data.\n *\n */\n\n function makeCallback(callback) {\n return _.isFunction(callback) ? callback : function () {\n return callback;\n };\n }\n\n Radio.Requests = {\n\n // Make a request\n request: function request(name) {\n var args = _.rest(arguments);\n var results = Radio._eventsApi(this, 'request', name, args);\n if (results) {\n return results;\n }\n var channelName = this.channelName;\n var requests = this._requests;\n\n // Check if we should log the request, and if so, do it\n if (channelName && this._tunedIn) {\n Radio.log.apply(this, [channelName, name].concat(args));\n }\n\n // If the request isn't handled, log it in DEBUG mode and exit\n if (requests && (requests[name] || requests['default'])) {\n var handler = requests[name] || requests['default'];\n args = requests[name] ? args : arguments;\n return Radio._callHandler(handler.callback, handler.context, args);\n } else {\n Radio.debugLog('An unhandled request was fired', name, channelName);\n }\n },\n\n // Set up a handler for a request\n reply: function reply(name, callback, context) {\n if (Radio._eventsApi(this, 'reply', name, [callback, context])) {\n return this;\n }\n\n this._requests || (this._requests = {});\n\n if (this._requests[name]) {\n Radio.debugLog('A request was overwritten', name, this.channelName);\n }\n\n this._requests[name] = {\n callback: makeCallback(callback),\n context: context || this\n };\n\n return this;\n },\n\n // Set up a handler that can only be requested once\n replyOnce: function replyOnce(name, callback, context) {\n if (Radio._eventsApi(this, 'replyOnce', name, [callback, context])) {\n return this;\n }\n\n var self = this;\n\n var once = _.once(function () {\n self.stopReplying(name);\n return makeCallback(callback).apply(this, arguments);\n });\n\n return this.reply(name, once, context);\n },\n\n // Remove handler(s)\n stopReplying: function stopReplying(name, callback, context) {\n if (Radio._eventsApi(this, 'stopReplying', name)) {\n return this;\n }\n\n // Remove everything if there are no arguments passed\n if (!name && !callback && !context) {\n delete this._requests;\n } else if (!removeHandlers(this._requests, name, callback, context)) {\n Radio.debugLog('Attempted to remove the unregistered request', name, this.channelName);\n }\n\n return this;\n }\n };\n\n /*\n * Backbone.Radio.channel\n * ----------------------\n * Get a reference to a channel by name.\n *\n */\n\n Radio._channels = {};\n\n Radio.channel = function (channelName) {\n if (!channelName) {\n throw new Error('You must provide a name for the channel.');\n }\n\n if (Radio._channels[channelName]) {\n return Radio._channels[channelName];\n } else {\n return Radio._channels[channelName] = new Radio.Channel(channelName);\n }\n };\n\n /*\n * Backbone.Radio.Channel\n * ----------------------\n * A Channel is an object that extends from Backbone.Events,\n * and Radio.Requests.\n *\n */\n\n Radio.Channel = function (channelName) {\n this.channelName = channelName;\n };\n\n _.extend(Radio.Channel.prototype, Backbone.Events, Radio.Requests, {\n\n // Remove all handlers from the messaging systems of this channel\n reset: function reset() {\n this.off();\n this.stopListening();\n this.stopReplying();\n return this;\n }\n });\n\n /*\n * Top-level API\n * -------------\n * Supplies the 'top-level API' for working with Channels directly\n * from Backbone.Radio.\n *\n */\n\n var channel;\n var args;\n var systems = [Backbone.Events, Radio.Requests];\n _.each(systems, function (system) {\n _.each(system, function (method, methodName) {\n Radio[methodName] = function (channelName) {\n args = _.rest(arguments);\n channel = this.channel(channelName);\n return channel[methodName].apply(channel, args);\n };\n });\n });\n\n Radio.reset = function (channelName) {\n var channels = !channelName ? this._channels : [this._channels[channelName]];\n _.invoke(channels, 'reset');\n };\n\n return Radio;\n\n}));\n//# sourceMappingURL=./backbone.radio.js.map"],"sourceRoot":"/source/"}
|
assets/admin/js/lib/dialog.js
ADDED
@@ -0,0 +1,581 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Dialogs Manager v1.0.2
|
3 |
+
* https://github.com/cobicarmel/dialogs-manager/
|
4 |
+
*
|
5 |
+
* Copyright Kobi Zaltzberg
|
6 |
+
* Released under the MIT license
|
7 |
+
* https://github.com/cobicarmel/dialogs-manager/blob/master/LICENSE.txt
|
8 |
+
*/
|
9 |
+
|
10 |
+
(function ($, global) {
|
11 |
+
'use strict';
|
12 |
+
|
13 |
+
var DialogsManager = {
|
14 |
+
widgets: {},
|
15 |
+
createWidgetType: function (typeName, properties, Parent) {
|
16 |
+
if (!Parent) {
|
17 |
+
Parent = this.Widget;
|
18 |
+
}
|
19 |
+
|
20 |
+
var WidgetType = function () {
|
21 |
+
|
22 |
+
Parent.call(this, typeName);
|
23 |
+
};
|
24 |
+
|
25 |
+
var prototype = WidgetType.prototype = new Parent(typeName);
|
26 |
+
|
27 |
+
$.extend(prototype, properties);
|
28 |
+
|
29 |
+
prototype.constructor = WidgetType;
|
30 |
+
|
31 |
+
WidgetType.extend = function (typeName, properties) {
|
32 |
+
|
33 |
+
return DialogsManager.createWidgetType(typeName, properties, WidgetType);
|
34 |
+
};
|
35 |
+
|
36 |
+
return WidgetType;
|
37 |
+
},
|
38 |
+
addWidgetType: function (typeName, properties, Parent) {
|
39 |
+
|
40 |
+
if (properties && properties.prototype instanceof this.Widget) {
|
41 |
+
return this.widgets[typeName] = properties;
|
42 |
+
}
|
43 |
+
|
44 |
+
return this.widgets[typeName] = this.createWidgetType(typeName, properties, Parent);
|
45 |
+
}
|
46 |
+
};
|
47 |
+
|
48 |
+
DialogsManager.Instance = function () {
|
49 |
+
|
50 |
+
var self = this,
|
51 |
+
components = {},
|
52 |
+
settings = {};
|
53 |
+
|
54 |
+
var initComponents = function () {
|
55 |
+
|
56 |
+
components.$body = $('body');
|
57 |
+
};
|
58 |
+
|
59 |
+
var initSettings = function (options) {
|
60 |
+
|
61 |
+
var defaultSettings = {
|
62 |
+
classPrefix: 'dialog',
|
63 |
+
effects: {
|
64 |
+
show: 'fadeIn',
|
65 |
+
hide: 'fadeOut'
|
66 |
+
}
|
67 |
+
};
|
68 |
+
|
69 |
+
settings = $.extend(defaultSettings, options);
|
70 |
+
};
|
71 |
+
|
72 |
+
this.createWidget = function (widgetType, properties) {
|
73 |
+
|
74 |
+
var widget = new DialogsManager.widgets[widgetType]();
|
75 |
+
|
76 |
+
properties = properties || {};
|
77 |
+
|
78 |
+
widget.init(self, properties);
|
79 |
+
|
80 |
+
widget.setMessage(properties.message);
|
81 |
+
|
82 |
+
if (properties.linkedElement) {
|
83 |
+
widget.linkElement(properties.linkedElement, widget);
|
84 |
+
}
|
85 |
+
|
86 |
+
return widget;
|
87 |
+
};
|
88 |
+
|
89 |
+
this.getSettings = function (property) {
|
90 |
+
|
91 |
+
if (property) {
|
92 |
+
return settings[property];
|
93 |
+
}
|
94 |
+
|
95 |
+
return Object.create(settings);
|
96 |
+
};
|
97 |
+
|
98 |
+
this.init = function (settings) {
|
99 |
+
|
100 |
+
initSettings(settings);
|
101 |
+
|
102 |
+
initComponents();
|
103 |
+
|
104 |
+
return self;
|
105 |
+
};
|
106 |
+
|
107 |
+
this.popDialog = function (widget) {
|
108 |
+
|
109 |
+
Widget.show();
|
110 |
+
};
|
111 |
+
|
112 |
+
self.init();
|
113 |
+
};
|
114 |
+
|
115 |
+
DialogsManager.Widget = function (widgetName) {
|
116 |
+
|
117 |
+
var self = this,
|
118 |
+
settings = {},
|
119 |
+
components = {
|
120 |
+
$element: 0
|
121 |
+
};
|
122 |
+
|
123 |
+
var callEffect = function (intent) {
|
124 |
+
|
125 |
+
var effect = settings.effects[intent],
|
126 |
+
$widget = components.$widget;
|
127 |
+
|
128 |
+
if ($.isFunction(effect)) {
|
129 |
+
effect.call($widget);
|
130 |
+
}
|
131 |
+
else {
|
132 |
+
|
133 |
+
if ($widget[effect]) {
|
134 |
+
$widget[effect]();
|
135 |
+
}
|
136 |
+
else {
|
137 |
+
throw 'Reference Error: The effect ' + effect + ' not found';
|
138 |
+
}
|
139 |
+
}
|
140 |
+
};
|
141 |
+
|
142 |
+
var initComponents = function () {
|
143 |
+
|
144 |
+
self.addComponent('widget');
|
145 |
+
|
146 |
+
self.addComponent('message');
|
147 |
+
};
|
148 |
+
|
149 |
+
var initSettings = function (parent, userSettings) {
|
150 |
+
|
151 |
+
var parentSettings = parent.getSettings();
|
152 |
+
|
153 |
+
settings = self.getDefaultSettings();
|
154 |
+
|
155 |
+
settings.effects = parentSettings.effects;
|
156 |
+
|
157 |
+
var prefix = parentSettings.classPrefix + '-' + widgetName;
|
158 |
+
|
159 |
+
settings.classes = {
|
160 |
+
globalPrefix: parentSettings.classPrefix,
|
161 |
+
prefix: prefix,
|
162 |
+
Widget: 'dialog-widget',
|
163 |
+
linkedActive: prefix + '-linked-active'
|
164 |
+
};
|
165 |
+
|
166 |
+
$.extend(true, settings, userSettings);
|
167 |
+
};
|
168 |
+
|
169 |
+
var normalizeClassName = function (name) {
|
170 |
+
|
171 |
+
return name.replace(/([a-z])([A-Z])/g, function () {
|
172 |
+
return arguments[1] + '-' + arguments[2].toLowerCase();
|
173 |
+
});
|
174 |
+
};
|
175 |
+
|
176 |
+
this.addComponent = function (name, component, type) {
|
177 |
+
|
178 |
+
var $newComponent = components['$' + name] = $(component || '<div>'),
|
179 |
+
className = settings.classes.prefix + '-';
|
180 |
+
|
181 |
+
name = normalizeClassName(name);
|
182 |
+
|
183 |
+
className += name;
|
184 |
+
|
185 |
+
if (!type) {
|
186 |
+
type = name;
|
187 |
+
}
|
188 |
+
|
189 |
+
className += ' ' + settings.classes.globalPrefix + '-' + type;
|
190 |
+
|
191 |
+
$newComponent.addClass(className);
|
192 |
+
|
193 |
+
return $newComponent;
|
194 |
+
};
|
195 |
+
|
196 |
+
this.getSettings = function (setting) {
|
197 |
+
|
198 |
+
var copy = Object.create(settings);
|
199 |
+
|
200 |
+
if (setting) {
|
201 |
+
return copy[setting];
|
202 |
+
}
|
203 |
+
|
204 |
+
return copy;
|
205 |
+
};
|
206 |
+
|
207 |
+
this.init = function (parent, properties) {
|
208 |
+
|
209 |
+
if (!(parent instanceof DialogsManager.Instance)) {
|
210 |
+
throw 'The ' + self.widgetName + ' must to be initialized from an instance of DialogsManager.Instance';
|
211 |
+
}
|
212 |
+
|
213 |
+
self.onInit(properties);
|
214 |
+
|
215 |
+
initSettings(parent, properties);
|
216 |
+
|
217 |
+
initComponents();
|
218 |
+
|
219 |
+
self.buildWidget();
|
220 |
+
|
221 |
+
if (self.attachEvents) {
|
222 |
+
self.attachEvents();
|
223 |
+
}
|
224 |
+
|
225 |
+
self.onReady();
|
226 |
+
|
227 |
+
return self;
|
228 |
+
};
|
229 |
+
|
230 |
+
this.getComponents = function (item) {
|
231 |
+
|
232 |
+
return item ? components['$' + item] : components;
|
233 |
+
};
|
234 |
+
|
235 |
+
this.hide = function () {
|
236 |
+
|
237 |
+
callEffect('hide');
|
238 |
+
|
239 |
+
if (components.$element.length) {
|
240 |
+
components.$element.removeClass(settings.classes.linkedActive);
|
241 |
+
}
|
242 |
+
|
243 |
+
self.onHide();
|
244 |
+
|
245 |
+
return self;
|
246 |
+
};
|
247 |
+
|
248 |
+
this.linkElement = function (element) {
|
249 |
+
|
250 |
+
this.addComponent('element', element);
|
251 |
+
|
252 |
+
return self;
|
253 |
+
};
|
254 |
+
|
255 |
+
this.setMessage = function (message) {
|
256 |
+
|
257 |
+
components.$message.html(message);
|
258 |
+
|
259 |
+
return self;
|
260 |
+
};
|
261 |
+
|
262 |
+
this.show = function (e, userSettings) {
|
263 |
+
|
264 |
+
if (e) {
|
265 |
+
e.stopPropagation();
|
266 |
+
}
|
267 |
+
|
268 |
+
components.$widget.appendTo('body');
|
269 |
+
|
270 |
+
callEffect('show');
|
271 |
+
|
272 |
+
if (components.$element.length) {
|
273 |
+
components.$element.addClass(settings.classes.linkedActive);
|
274 |
+
}
|
275 |
+
|
276 |
+
self.onShow(userSettings);
|
277 |
+
|
278 |
+
return self;
|
279 |
+
};
|
280 |
+
|
281 |
+
};
|
282 |
+
|
283 |
+
DialogsManager.Widget.prototype.buildWidget = function () {
|
284 |
+
|
285 |
+
var components = this.getComponents();
|
286 |
+
|
287 |
+
components.$widget.html(components.$message);
|
288 |
+
};
|
289 |
+
|
290 |
+
DialogsManager.Widget.prototype.getDefaultSettings = function () {
|
291 |
+
|
292 |
+
return {};
|
293 |
+
};
|
294 |
+
|
295 |
+
DialogsManager.Widget.prototype.onHide = function () {
|
296 |
+
};
|
297 |
+
|
298 |
+
DialogsManager.Widget.prototype.onShow = function () {
|
299 |
+
};
|
300 |
+
|
301 |
+
DialogsManager.Widget.prototype.onInit = function () {
|
302 |
+
};
|
303 |
+
|
304 |
+
DialogsManager.Widget.prototype.onReady = function () {
|
305 |
+
};
|
306 |
+
|
307 |
+
DialogsManager.addWidgetType('tool-tip', {
|
308 |
+
onShow: function () {
|
309 |
+
|
310 |
+
var components = this.getComponents();
|
311 |
+
|
312 |
+
if (components.$element.length) {
|
313 |
+
|
314 |
+
components.$widget.position({
|
315 |
+
at: 'left top-5',
|
316 |
+
my: 'left+10 bottom',
|
317 |
+
of: components.$element,
|
318 |
+
collision: 'none none'
|
319 |
+
});
|
320 |
+
|
321 |
+
components.$element.focus();
|
322 |
+
}
|
323 |
+
|
324 |
+
setTimeout(this.hide, 5000);
|
325 |
+
}
|
326 |
+
});
|
327 |
+
|
328 |
+
DialogsManager.addWidgetType('options', {
|
329 |
+
activeKeyUp: function (event) {
|
330 |
+
|
331 |
+
var ENTER_KEY = 13;
|
332 |
+
|
333 |
+
if (event.which !== ENTER_KEY) {
|
334 |
+
|
335 |
+
event.preventDefault();
|
336 |
+
}
|
337 |
+
|
338 |
+
if (this.hotKeys[event.which]) {
|
339 |
+
this.hotKeys[event.which](this);
|
340 |
+
}
|
341 |
+
},
|
342 |
+
activeKeyDown: function (event) {
|
343 |
+
|
344 |
+
var TAB_KEY = 9,
|
345 |
+
ENTER_KEY = 13;
|
346 |
+
|
347 |
+
if (event.which !== ENTER_KEY) {
|
348 |
+
|
349 |
+
event.preventDefault();
|
350 |
+
}
|
351 |
+
|
352 |
+
if (event.which === TAB_KEY) {
|
353 |
+
|
354 |
+
var currentButtonIndex = this.focusedButton.index(),
|
355 |
+
nextButtonIndex;
|
356 |
+
|
357 |
+
if (event.shiftKey) {
|
358 |
+
|
359 |
+
nextButtonIndex = currentButtonIndex - 1;
|
360 |
+
|
361 |
+
if (nextButtonIndex < 0) {
|
362 |
+
nextButtonIndex = this.buttons.length - 1;
|
363 |
+
}
|
364 |
+
} else {
|
365 |
+
|
366 |
+
nextButtonIndex = currentButtonIndex + 1;
|
367 |
+
|
368 |
+
if (nextButtonIndex >= this.buttons.length) {
|
369 |
+
nextButtonIndex = 0;
|
370 |
+
}
|
371 |
+
}
|
372 |
+
|
373 |
+
this.focusedButton = this.buttons[nextButtonIndex].focus();
|
374 |
+
}
|
375 |
+
},
|
376 |
+
addButton: function (options) {
|
377 |
+
|
378 |
+
var self = this,
|
379 |
+
$button = self.addComponent(options.name, $('<button>').text(options.text));
|
380 |
+
|
381 |
+
self.buttons.push($button);
|
382 |
+
|
383 |
+
var buttonFn = function () {
|
384 |
+
|
385 |
+
self.hide();
|
386 |
+
|
387 |
+
if ($.isFunction(options.callback)) {
|
388 |
+
options.callback.call(this, self);
|
389 |
+
}
|
390 |
+
};
|
391 |
+
|
392 |
+
$button.on('click', buttonFn);
|
393 |
+
|
394 |
+
if (options.hotKey) {
|
395 |
+
this.hotKeys[options.hotKey] = buttonFn;
|
396 |
+
}
|
397 |
+
|
398 |
+
this.getComponents('buttonsWrapper').append($button);
|
399 |
+
|
400 |
+
if (options.focus) {
|
401 |
+
this.focusedButton = $button;
|
402 |
+
}
|
403 |
+
},
|
404 |
+
bindHotKeys: function () {
|
405 |
+
var self = this;
|
406 |
+
|
407 |
+
self.bindKeyUpEvents = function (event) {
|
408 |
+
|
409 |
+
self.activeKeyUp(event);
|
410 |
+
};
|
411 |
+
|
412 |
+
self.bindKeyDownEvents = function (event) {
|
413 |
+
|
414 |
+
self.activeKeyDown(event);
|
415 |
+
};
|
416 |
+
|
417 |
+
$(window).on({
|
418 |
+
keyup: self.bindKeyUpEvents,
|
419 |
+
keydown: self.bindKeyDownEvents
|
420 |
+
});
|
421 |
+
},
|
422 |
+
buildWidget: function () {
|
423 |
+
|
424 |
+
var $widgetHeader = this.addComponent('widgetHeader'),
|
425 |
+
$widgetContent = this.addComponent('widgetContent'),
|
426 |
+
$buttonsWrapper = this.addComponent('buttonsWrapper');
|
427 |
+
|
428 |
+
var components = this.getComponents();
|
429 |
+
|
430 |
+
$widgetContent.append($widgetHeader, components.$message, $buttonsWrapper);
|
431 |
+
|
432 |
+
components.$widget.html($widgetContent);
|
433 |
+
},
|
434 |
+
getDefaultSettings: function () {
|
435 |
+
|
436 |
+
return {
|
437 |
+
position: {
|
438 |
+
my: 'center',
|
439 |
+
at: 'center center-100'
|
440 |
+
},
|
441 |
+
headerMessage: ''
|
442 |
+
};
|
443 |
+
},
|
444 |
+
onHide: function () {
|
445 |
+
|
446 |
+
this.unbindHotKeys();
|
447 |
+
},
|
448 |
+
onInit: function () {
|
449 |
+
|
450 |
+
this.buttons = [];
|
451 |
+
|
452 |
+
this.hotKeys = {};
|
453 |
+
|
454 |
+
this.focusedButton = null;
|
455 |
+
},
|
456 |
+
onReady: function(){
|
457 |
+
|
458 |
+
this.setHeaderMessage(this.getSettings('headerMessage'));
|
459 |
+
},
|
460 |
+
onShow: function (userSettings) {
|
461 |
+
|
462 |
+
var components = this.getComponents(),
|
463 |
+
position = this.getSettings('position');
|
464 |
+
|
465 |
+
position.of = components.$widget;
|
466 |
+
|
467 |
+
if (userSettings) {
|
468 |
+
$.extend(position, userSettings);
|
469 |
+
}
|
470 |
+
|
471 |
+
components.$widgetContent.position(position);
|
472 |
+
|
473 |
+
this.bindHotKeys();
|
474 |
+
|
475 |
+
if (!this.focusedButton) {
|
476 |
+
this.focusedButton = this.buttons[0];
|
477 |
+
}
|
478 |
+
|
479 |
+
if (this.focusedButton) {
|
480 |
+
this.focusedButton.focus();
|
481 |
+
}
|
482 |
+
},
|
483 |
+
setHeaderMessage: function (message) {
|
484 |
+
|
485 |
+
this.getComponents('widgetHeader').html(message);
|
486 |
+
},
|
487 |
+
unbindHotKeys: function () {
|
488 |
+
|
489 |
+
$(window).off({
|
490 |
+
keyup: this.bindKeyUpEvents,
|
491 |
+
keydown: this.bindKeyDownEvents
|
492 |
+
});
|
493 |
+
}
|
494 |
+
});
|
495 |
+
|
496 |
+
DialogsManager.addWidgetType('confirm', DialogsManager.widgets.options.extend('confirm', {
|
497 |
+
onReady: function () {
|
498 |
+
|
499 |
+
DialogsManager.widgets.options.prototype.onReady.apply(this, arguments);
|
500 |
+
|
501 |
+
var strings = this.getSettings('strings'),
|
502 |
+
ESC_KEY = 27,
|
503 |
+
isDefaultCancel = this.getSettings('defaultOption') === 'cancel';
|
504 |
+
|
505 |
+
this.addButton({
|
506 |
+
name: 'cancel',
|
507 |
+
text: strings.cancel,
|
508 |
+
callback: this.getSettings('onCancel'),
|
509 |
+
hotKey: ESC_KEY,
|
510 |
+
focus: isDefaultCancel
|
511 |
+
});
|
512 |
+
|
513 |
+
this.addButton({
|
514 |
+
name: 'ok',
|
515 |
+
text: strings.confirm,
|
516 |
+
callback: this.getSettings('onConfirm'),
|
517 |
+
focus: !isDefaultCancel
|
518 |
+
});
|
519 |
+
},
|
520 |
+
getDefaultSettings: function () {
|
521 |
+
|
522 |
+
var settings = DialogsManager.widgets.options.prototype.getDefaultSettings.apply(this, arguments);
|
523 |
+
|
524 |
+
settings.strings = {
|
525 |
+
confirm: 'Ok',
|
526 |
+
cancel: 'Cancel'
|
527 |
+
};
|
528 |
+
|
529 |
+
settings.defaultOption = 'cancel';
|
530 |
+
|
531 |
+
return settings;
|
532 |
+
}
|
533 |
+
}));
|
534 |
+
|
535 |
+
DialogsManager.addWidgetType('alert', DialogsManager.widgets.options.extend('alert', {
|
536 |
+
onReady: function () {
|
537 |
+
var strings = this.getSettings('strings');
|
538 |
+
|
539 |
+
this.addButton({
|
540 |
+
name: 'ok',
|
541 |
+
text: strings.confirm,
|
542 |
+
callback: this.getSettings('onConfirm')
|
543 |
+
});
|
544 |
+
},
|
545 |
+
getDefaultSettings: function () {
|
546 |
+
var settings = DialogsManager.widgets.options.prototype.getDefaultSettings.apply(this, arguments);
|
547 |
+
|
548 |
+
settings.strings = {
|
549 |
+
confirm: 'Ok'
|
550 |
+
};
|
551 |
+
|
552 |
+
return settings;
|
553 |
+
}
|
554 |
+
}));
|
555 |
+
|
556 |
+
DialogsManager.addWidgetType('popup', {
|
557 |
+
getDefaultSettings: function () {
|
558 |
+
|
559 |
+
return {
|
560 |
+
position: {
|
561 |
+
my: 'center',
|
562 |
+
at: 'center',
|
563 |
+
of: window
|
564 |
+
},
|
565 |
+
hide: {
|
566 |
+
delay: 5000
|
567 |
+
}
|
568 |
+
};
|
569 |
+
},
|
570 |
+
onShow: function () {
|
571 |
+
|
572 |
+
var $widgetMessage = this.getComponents('message');
|
573 |
+
|
574 |
+
$widgetMessage.position(this.getSettings('position'));
|
575 |
+
|
576 |
+
setTimeout(this.hide, this.getSettings('hide').delay);
|
577 |
+
}
|
578 |
+
});
|
579 |
+
|
580 |
+
global.DialogsManager = DialogsManager;
|
581 |
+
})('function' === typeof require ? require('jquery') : jQuery, 'undefined' !== typeof module && module.exports || window);
|
assets/admin/js/lib/dialog.min.js
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
/*! dialogs-manager v1.0.5 | (c) Kobi Zaltzberg | https://github.com/cobicarmel/dialogs-manager/blob/master/LICENSE.txt
|
2 |
+
2016-04-10 13:18 */
|
3 |
+
!function(a,b){"use strict";var c={widgets:{},createWidgetType:function(b,d,e){e||(e=this.Widget);var f=function(){e.call(this,b)},g=f.prototype=new e(b);return a.extend(g,d),g.constructor=f,f.extend=function(a,b){return c.createWidgetType(a,b,f)},f},addWidgetType:function(a,b,c){return b&&b.prototype instanceof this.Widget?this.widgets[a]=b:this.widgets[a]=this.createWidgetType(a,b,c)}};c.Instance=function(){var b=this,d={},e={},f=function(){d.$body=a("body")},g=function(b){var c={classPrefix:"dialog",effects:{show:"fadeIn",hide:"fadeOut"}};e=a.extend(c,b)};this.createWidget=function(a,d){var e=new c.widgets[a];return d=d||{},e.init(b,d),e.setMessage(d.message),d.linkedElement&&e.linkElement(d.linkedElement,e),e},this.getSettings=function(a){return a?e[a]:Object.create(e)},this.init=function(a){return g(a),f(),b},this.popDialog=function(a){Widget.show()},b.init()},c.Widget=function(b){var d=this,e={},f={$element:0},g=function(b){var c=e.effects[b],d=f.$widget;if(a.isFunction(c))c.call(d);else{if(!d[c])throw"Reference Error: The effect "+c+" not found";d[c]()}},h=function(){d.addComponent("widget"),d.addComponent("message")},i=function(c,f){var g=c.getSettings();e=d.getDefaultSettings(),e.effects=g.effects;var h=g.classPrefix+"-"+b;e.classes={globalPrefix:g.classPrefix,prefix:h,Widget:"dialog-widget",linkedActive:h+"-linked-active"},a.extend(!0,e,f)},j=function(a){return a.replace(/([a-z])([A-Z])/g,function(){return arguments[1]+"-"+arguments[2].toLowerCase()})};this.addComponent=function(b,c,d){var g=f["$"+b]=a(c||"<div>"),h=e.classes.prefix+"-";return b=j(b),h+=b,d||(d=b),h+=" "+e.classes.globalPrefix+"-"+d,g.addClass(h),g},this.getSettings=function(a){var b=Object.create(e);return a?b[a]:b},this.init=function(a,b){if(!(a instanceof c.Instance))throw"The "+d.widgetName+" must to be initialized from an instance of DialogsManager.Instance";return d.onInit(b),i(a,b),h(),d.buildWidget(),d.attachEvents&&d.attachEvents(),d.onReady(),d},this.getComponents=function(a){return a?f["$"+a]:f},this.hide=function(){return g("hide"),f.$element.length&&f.$element.removeClass(e.classes.linkedActive),d.onHide(),d},this.linkElement=function(a){return this.addComponent("element",a),d},this.setMessage=function(a){return f.$message.html(a),d},this.show=function(a,b){return a&&a.stopPropagation(),f.$widget.appendTo("body"),g("show"),f.$element.length&&f.$element.addClass(e.classes.linkedActive),d.onShow(b),d}},c.Widget.prototype.buildWidget=function(){var a=this.getComponents();a.$widget.html(a.$message)},c.Widget.prototype.getDefaultSettings=function(){return{}},c.Widget.prototype.onHide=function(){},c.Widget.prototype.onShow=function(){},c.Widget.prototype.onInit=function(){},c.Widget.prototype.onReady=function(){},c.addWidgetType("tool-tip",{onShow:function(){var a=this.getComponents();a.$element.length&&(a.$widget.position({at:"left top-5",my:"left+10 bottom",of:a.$element,collision:"none none"}),a.$element.focus()),setTimeout(this.hide,5e3)}}),c.addWidgetType("options",{activeKeyUp:function(a){var b=13;a.which!==b&&a.preventDefault(),this.hotKeys[a.which]&&this.hotKeys[a.which](this)},activeKeyDown:function(a){var b=9,c=13;if(a.which!==c&&a.preventDefault(),a.which===b){var d,e=this.focusedButton.index();a.shiftKey?(d=e-1,0>d&&(d=this.buttons.length-1)):(d=e+1,d>=this.buttons.length&&(d=0)),this.focusedButton=this.buttons[d].focus()}},addButton:function(b){var c=this,d=c.addComponent(b.name,a("<button>").text(b.text));c.buttons.push(d);var e=function(){c.hide(),a.isFunction(b.callback)&&b.callback.call(this,c)};d.on("click",e),b.hotKey&&(this.hotKeys[b.hotKey]=e),this.getComponents("buttonsWrapper").append(d),b.focus&&(this.focusedButton=d)},bindHotKeys:function(){var b=this;b.bindKeyUpEvents=function(a){b.activeKeyUp(a)},b.bindKeyDownEvents=function(a){b.activeKeyDown(a)},a(window).on({keyup:b.bindKeyUpEvents,keydown:b.bindKeyDownEvents})},buildWidget:function(){var a=this.addComponent("widgetHeader"),b=this.addComponent("widgetContent"),c=this.addComponent("buttonsWrapper"),d=this.getComponents();b.append(a,d.$message,c),d.$widget.html(b)},getDefaultSettings:function(){return{position:{my:"center",at:"center center-100"},headerMessage:""}},onHide:function(){this.unbindHotKeys()},onInit:function(){this.buttons=[],this.hotKeys={},this.focusedButton=null},onReady:function(){this.setHeaderMessage(this.getSettings("headerMessage"))},onShow:function(b){var c=this.getComponents(),d=this.getSettings("position");d.of=c.$widget,b&&a.extend(d,b),c.$widgetContent.position(d),this.bindHotKeys(),this.focusedButton||(this.focusedButton=this.buttons[0]),this.focusedButton&&this.focusedButton.focus()},setHeaderMessage:function(a){this.getComponents("widgetHeader").html(a)},unbindHotKeys:function(){a(window).off({keyup:this.bindKeyUpEvents,keydown:this.bindKeyDownEvents})}}),c.addWidgetType("confirm",c.widgets.options.extend("confirm",{onReady:function(){c.widgets.options.prototype.onReady.apply(this,arguments);var a=this.getSettings("strings"),b=27,d="cancel"===this.getSettings("defaultOption");this.addButton({name:"cancel",text:a.cancel,callback:this.getSettings("onCancel"),hotKey:b,focus:d}),this.addButton({name:"ok",text:a.confirm,callback:this.getSettings("onConfirm"),focus:!d})},getDefaultSettings:function(){var a=c.widgets.options.prototype.getDefaultSettings.apply(this,arguments);return a.strings={confirm:"Ok",cancel:"Cancel"},a.defaultOption="cancel",a}})),c.addWidgetType("alert",c.widgets.options.extend("alert",{onReady:function(){var a=this.getSettings("strings");this.addButton({name:"ok",text:a.confirm,callback:this.getSettings("onConfirm")})},getDefaultSettings:function(){var a=c.widgets.options.prototype.getDefaultSettings.apply(this,arguments);return a.strings={confirm:"Ok"},a}})),c.addWidgetType("popup",{getDefaultSettings:function(){return{position:{my:"center",at:"center",of:window},hide:{delay:5e3}}},onShow:function(){var a=this.getComponents("message");a.position(this.getSettings("position")),setTimeout(this.hide,this.getSettings("hide").delay)}}),b.DialogsManager=c}("function"==typeof require?require("jquery"):jQuery,"undefined"!=typeof module&&module.exports||window);
|
assets/admin/js/lib/imagesloaded.js
ADDED
@@ -0,0 +1,487 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* imagesLoaded PACKAGED v4.1.0
|
3 |
+
* JavaScript is all like "You images are done yet or what?"
|
4 |
+
* MIT License
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* EvEmitter v1.0.1
|
9 |
+
* Lil' event emitter
|
10 |
+
* MIT License
|
11 |
+
*/
|
12 |
+
|
13 |
+
/* jshint unused: true, undef: true, strict: true */
|
14 |
+
|
15 |
+
( function( global, factory ) {
|
16 |
+
// universal module definition
|
17 |
+
/* jshint strict: false */ /* globals define, module */
|
18 |
+
if ( typeof define == 'function' && define.amd ) {
|
19 |
+
// AMD - RequireJS
|
20 |
+
define( 'ev-emitter/ev-emitter',factory );
|
21 |
+
} else if ( typeof module == 'object' && module.exports ) {
|
22 |
+
// CommonJS - Browserify, Webpack
|
23 |
+
module.exports = factory();
|
24 |
+
} else {
|
25 |
+
// Browser globals
|
26 |
+
global.EvEmitter = factory();
|
27 |
+
}
|
28 |
+
|
29 |
+
}( this, function() {
|
30 |
+
|
31 |
+
|
32 |
+
|
33 |
+
function EvEmitter() {}
|
34 |
+
|
35 |
+
var proto = EvEmitter.prototype;
|
36 |
+
|
37 |
+
proto.on = function( eventName, listener ) {
|
38 |
+
if ( !eventName || !listener ) {
|
39 |
+
return;
|
40 |
+
}
|
41 |
+
// set events hash
|
42 |
+
var events = this._events = this._events || {};
|
43 |
+
// set listeners array
|
44 |
+
var listeners = events[ eventName ] = events[ eventName ] || [];
|
45 |
+
// only add once
|
46 |
+
if ( listeners.indexOf( listener ) == -1 ) {
|
47 |
+
listeners.push( listener );
|
48 |
+
}
|
49 |
+
|
50 |
+
return this;
|
51 |
+
};
|
52 |
+
|
53 |
+
proto.once = function( eventName, listener ) {
|
54 |
+
if ( !eventName || !listener ) {
|
55 |
+
return;
|
56 |
+
}
|
57 |
+
// add event
|
58 |
+
this.on( eventName, listener );
|
59 |
+
// set once flag
|
60 |
+
// set onceEvents hash
|
61 |
+
var onceEvents = this._onceEvents = this._onceEvents || {};
|
62 |
+
// set onceListeners array
|
63 |
+
var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || [];
|
64 |
+
// set flag
|
65 |
+
onceListeners[ listener ] = true;
|
66 |
+
|
67 |
+
return this;
|
68 |
+
};
|
69 |
+
|
70 |
+
proto.off = function( eventName, listener ) {
|
71 |
+
var listeners = this._events && this._events[ eventName ];
|
72 |
+
if ( !listeners || !listeners.length ) {
|
73 |
+
return;
|
74 |
+
}
|
75 |
+
var index = listeners.indexOf( listener );
|
76 |
+
if ( index != -1 ) {
|
77 |
+
listeners.splice( index, 1 );
|
78 |
+
}
|
79 |
+
|
80 |
+
return this;
|
81 |
+
};
|
82 |
+
|
83 |
+
proto.emitEvent = function( eventName, args ) {
|
84 |
+
var listeners = this._events && this._events[ eventName ];
|
85 |
+
if ( !listeners || !listeners.length ) {
|
86 |
+
return;
|
87 |
+
}
|
88 |
+
var i = 0;
|
89 |
+
var listener = listeners[i];
|
90 |
+
args = args || [];
|
91 |
+
// once stuff
|
92 |
+
var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
|
93 |
+
|
94 |
+
while ( listener ) {
|
95 |
+
var isOnce = onceListeners && onceListeners[ listener ];
|
96 |
+
if ( isOnce ) {
|
97 |
+
// remove listener
|
98 |
+
// remove before trigger to prevent recursion
|
99 |
+
this.off( eventName, listener );
|
100 |
+
// unset once flag
|
101 |
+
delete onceListeners[ listener ];
|
102 |
+
}
|
103 |
+
// trigger listener
|
104 |
+
listener.apply( this, args );
|
105 |
+
// get next listener
|
106 |
+
i += isOnce ? 0 : 1;
|
107 |
+
listener = listeners[i];
|
108 |
+
}
|
109 |
+
|
110 |
+
return this;
|
111 |
+
};
|
112 |
+
|
113 |
+
return EvEmitter;
|
114 |
+
|
115 |
+
}));
|
116 |
+
|
117 |
+
/*!
|
118 |
+
* imagesLoaded v4.1.0
|
119 |
+
* JavaScript is all like "You images are done yet or what?"
|
120 |
+
* MIT License
|
121 |
+
*/
|
122 |
+
|
123 |
+
( function( window, factory ) { 'use strict';
|
124 |
+
// universal module definition
|
125 |
+
|
126 |
+
/*global define: false, module: false, require: false */
|
127 |
+
|
128 |
+
if ( typeof define == 'function' && define.amd ) {
|
129 |
+
// AMD
|
130 |
+
define( [
|
131 |
+
'ev-emitter/ev-emitter'
|
132 |
+
], function( EvEmitter ) {
|
133 |
+
return factory( window, EvEmitter );
|
134 |
+
});
|
135 |
+
} else if ( typeof module == 'object' && module.exports ) {
|
136 |
+
// CommonJS
|
137 |
+
module.exports = factory(
|
138 |
+
window,
|
139 |
+
require('ev-emitter')
|
140 |
+
);
|
141 |
+
} else {
|
142 |
+
// browser global
|
143 |
+
window.imagesLoaded = factory(
|
144 |
+
window,
|
145 |
+
window.EvEmitter
|
146 |
+
);
|
147 |
+
}
|
148 |
+
|
149 |
+
})( window,
|
150 |
+
|
151 |
+
// -------------------------- factory -------------------------- //
|
152 |
+
|
153 |
+
function factory( window, EvEmitter ) {
|
154 |
+
|
155 |
+
|
156 |
+
|
157 |
+
var $ = window.jQuery;
|
158 |
+
var console = window.console;
|
159 |
+
|
160 |
+
// -------------------------- helpers -------------------------- //
|
161 |
+
|
162 |
+
// extend objects
|
163 |
+
function extend( a, b ) {
|
164 |
+
for ( var prop in b ) {
|
165 |
+
a[ prop ] = b[ prop ];
|
166 |
+
}
|
167 |
+
return a;
|
168 |
+
}
|
169 |
+
|
170 |
+
// turn element or nodeList into an array
|
171 |
+
function makeArray( obj ) {
|
172 |
+
var ary = [];
|
173 |
+
if ( Array.isArray( obj ) ) {
|
174 |
+
// use object if already an array
|
175 |
+
ary = obj;
|
176 |
+
} else if ( typeof obj.length == 'number' ) {
|
177 |
+
// convert nodeList to array
|
178 |
+
for ( var i=0; i < obj.length; i++ ) {
|
179 |
+
ary.push( obj[i] );
|
180 |
+
}
|
181 |
+
} else {
|
182 |
+
// array of single index
|
183 |
+
ary.push( obj );
|
184 |
+
}
|
185 |
+
return ary;
|
186 |
+
}
|
187 |
+
|
188 |
+
// -------------------------- imagesLoaded -------------------------- //
|
189 |
+
|
190 |
+
/**
|
191 |
+
* @param {Array, Element, NodeList, String} elem
|
192 |
+
* @param {Object or Function} options - if function, use as callback
|
193 |
+
* @param {Function} onAlways - callback function
|
194 |
+
*/
|
195 |
+
function ImagesLoaded( elem, options, onAlways ) {
|
196 |
+
// coerce ImagesLoaded() without new, to be new ImagesLoaded()
|
197 |
+
if ( !( this instanceof ImagesLoaded ) ) {
|
198 |
+
return new ImagesLoaded( elem, options, onAlways );
|
199 |
+
}
|
200 |
+
// use elem as selector string
|
201 |
+
if ( typeof elem == 'string' ) {
|
202 |
+
elem = document.querySelectorAll( elem );
|
203 |
+
}
|
204 |
+
|
205 |
+
this.elements = makeArray( elem );
|
206 |
+
this.options = extend( {}, this.options );
|
207 |
+
|
208 |
+
if ( typeof options == 'function' ) {
|
209 |
+
onAlways = options;
|
210 |
+
} else {
|
211 |
+
extend( this.options, options );
|
212 |
+
}
|
213 |
+
|
214 |
+
if ( onAlways ) {
|
215 |
+
this.on( 'always', onAlways );
|
216 |
+
}
|
217 |
+
|
218 |
+
this.getImages();
|
219 |
+
|
220 |
+
if ( $ ) {
|
221 |
+
// add jQuery Deferred object
|
222 |
+
this.jqDeferred = new $.Deferred();
|
223 |
+
}
|
224 |
+
|
225 |
+
// HACK check async to allow time to bind listeners
|
226 |
+
setTimeout( function() {
|
227 |
+
this.check();
|
228 |
+
}.bind( this ));
|
229 |
+
}
|
230 |
+
|
231 |
+
ImagesLoaded.prototype = Object.create( EvEmitter.prototype );
|
232 |
+
|
233 |
+
ImagesLoaded.prototype.options = {};
|
234 |
+
|
235 |
+
ImagesLoaded.prototype.getImages = function() {
|
236 |
+
this.images = [];
|
237 |
+
|
238 |
+
// filter & find items if we have an item selector
|
239 |
+
this.elements.forEach( this.addElementImages, this );
|
240 |
+
};
|
241 |
+
|
242 |
+
/**
|
243 |
+
* @param {Node} element
|
244 |
+
*/
|
245 |
+
ImagesLoaded.prototype.addElementImages = function( elem ) {
|
246 |
+
// filter siblings
|
247 |
+
if ( elem.nodeName == 'IMG' ) {
|
248 |
+
this.addImage( elem );
|
249 |
+
}
|
250 |
+
// get background image on element
|
251 |
+
if ( this.options.background === true ) {
|
252 |
+
this.addElementBackgroundImages( elem );
|
253 |
+
}
|
254 |
+
|
255 |
+
// find children
|
256 |
+
// no non-element nodes, #143
|
257 |
+
var nodeType = elem.nodeType;
|
258 |
+
if ( !nodeType || !elementNodeTypes[ nodeType ] ) {
|
259 |
+
return;
|
260 |
+
}
|
261 |
+
var childImgs = elem.querySelectorAll('img');
|
262 |
+
// concat childElems to filterFound array
|
263 |
+
for ( var i=0; i < childImgs.length; i++ ) {
|
264 |
+
var img = childImgs[i];
|
265 |
+
this.addImage( img );
|
266 |
+
}
|
267 |
+
|
268 |
+
// get child background images
|
269 |
+
if ( typeof this.options.background == 'string' ) {
|
270 |
+
var children = elem.querySelectorAll( this.options.background );
|
271 |
+
for ( i=0; i < children.length; i++ ) {
|
272 |
+
var child = children[i];
|
273 |
+
this.addElementBackgroundImages( child );
|
274 |
+
}
|
275 |
+
}
|
276 |
+
};
|
277 |
+
|
278 |
+
var elementNodeTypes = {
|
279 |
+
1: true,
|
280 |
+
9: true,
|
281 |
+
11: true
|
282 |
+
};
|
283 |
+
|
284 |
+
ImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {
|
285 |
+
var style = getComputedStyle( elem );
|
286 |
+
if ( !style ) {
|
287 |
+
// Firefox returns null if in a hidden iframe https://bugzil.la/548397
|
288 |
+
return;
|
289 |
+
}
|
290 |
+
// get url inside url("...")
|
291 |
+
var reURL = /url\((['"])?(.*?)\1\)/gi;
|
292 |
+
var matches = reURL.exec( style.backgroundImage );
|
293 |
+
while ( matches !== null ) {
|
294 |
+
var url = matches && matches[2];
|
295 |
+
if ( url ) {
|
296 |
+
this.addBackground( url, elem );
|
297 |
+
}
|
298 |
+
matches = reURL.exec( style.backgroundImage );
|
299 |
+
}
|
300 |
+
};
|
301 |
+
|
302 |
+
/**
|
303 |
+
* @param {Image} img
|
304 |
+
*/
|
305 |
+
ImagesLoaded.prototype.addImage = function( img ) {
|
306 |
+
var loadingImage = new LoadingImage( img );
|
307 |
+
this.images.push( loadingImage );
|
308 |
+
};
|
309 |
+
|
310 |
+
ImagesLoaded.prototype.addBackground = function( url, elem ) {
|
311 |
+
var background = new Background( url, elem );
|
312 |
+
this.images.push( background );
|
313 |
+
};
|
314 |
+
|
315 |
+
ImagesLoaded.prototype.check = function() {
|
316 |
+
var _this = this;
|
317 |
+
this.progressedCount = 0;
|
318 |
+
this.hasAnyBroken = false;
|
319 |
+
// complete if no images
|
320 |
+
if ( !this.images.length ) {
|
321 |
+
this.complete();
|
322 |
+
return;
|
323 |
+
}
|
324 |
+
|
325 |
+
function onProgress( image, elem, message ) {
|
326 |
+
// HACK - Chrome triggers event before object properties have changed. #83
|
327 |
+
setTimeout( function() {
|
328 |
+
_this.progress( image, elem, message );
|
329 |
+
});
|
330 |
+
}
|
331 |
+
|
332 |
+
this.images.forEach( function( loadingImage ) {
|
333 |
+
loadingImage.once( 'progress', onProgress );
|
334 |
+
loadingImage.check();
|
335 |
+
});
|
336 |
+
};
|
337 |
+
|
338 |
+
ImagesLoaded.prototype.progress = function( image, elem, message ) {
|
339 |
+
this.progressedCount++;
|
340 |
+
this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
|
341 |
+
// progress event
|
342 |
+
this.emitEvent( 'progress', [ this, image, elem ] );
|
343 |
+
if ( this.jqDeferred && this.jqDeferred.notify ) {
|
344 |
+
this.jqDeferred.notify( this, image );
|
345 |
+
}
|
346 |
+
// check if completed
|
347 |
+
if ( this.progressedCount == this.images.length ) {
|
348 |
+
this.complete();
|
349 |
+
}
|
350 |
+
|
351 |
+
if ( this.options.debug && console ) {
|
352 |
+
console.log( 'progress: ' + message, image, elem );
|
353 |
+
}
|
354 |
+
};
|
355 |
+
|
356 |
+
ImagesLoaded.prototype.complete = function() {
|
357 |
+
var eventName = this.hasAnyBroken ? 'fail' : 'done';
|
358 |
+
this.isComplete = true;
|
359 |
+
this.emitEvent( eventName, [ this ] );
|
360 |
+
this.emitEvent( 'always', [ this ] );
|
361 |
+
if ( this.jqDeferred ) {
|
362 |
+
var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
|
363 |
+
this.jqDeferred[ jqMethod ]( this );
|
364 |
+
}
|
365 |
+
};
|
366 |
+
|
367 |
+
// -------------------------- -------------------------- //
|
368 |
+
|
369 |
+
function LoadingImage( img ) {
|
370 |
+
this.img = img;
|
371 |
+
}
|
372 |
+
|
373 |
+
LoadingImage.prototype = Object.create( EvEmitter.prototype );
|
374 |
+
|
375 |
+
LoadingImage.prototype.check = function() {
|
376 |
+
// If complete is true and browser supports natural sizes,
|
377 |
+
// try to check for image status manually.
|
378 |
+
var isComplete = this.getIsImageComplete();
|
379 |
+
if ( isComplete ) {
|
380 |
+
// report based on naturalWidth
|
381 |
+
this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
|
382 |
+
return;
|
383 |
+
}
|
384 |
+
|
385 |
+
// If none of the checks above matched, simulate loading on detached element.
|
386 |
+
this.proxyImage = new Image();
|
387 |
+
this.proxyImage.addEventListener( 'load', this );
|
388 |
+
this.proxyImage.addEventListener( 'error', this );
|
389 |
+
// bind to image as well for Firefox. #191
|
390 |
+
this.img.addEventListener( 'load', this );
|
391 |
+
this.img.addEventListener( 'error', this );
|
392 |
+
this.proxyImage.src = this.img.src;
|
393 |
+
};
|
394 |
+
|
395 |
+
LoadingImage.prototype.getIsImageComplete = function() {
|
396 |
+
return this.img.complete && this.img.naturalWidth !== undefined;
|
397 |
+
};
|
398 |
+
|
399 |
+
LoadingImage.prototype.confirm = function( isLoaded, message ) {
|
400 |
+
this.isLoaded = isLoaded;
|
401 |
+
this.emitEvent( 'progress', [ this, this.img, message ] );
|
402 |
+
};
|
403 |
+
|
404 |
+
// ----- events ----- //
|
405 |
+
|
406 |
+
// trigger specified handler for event type
|
407 |
+
LoadingImage.prototype.handleEvent = function( event ) {
|
408 |
+
var method = 'on' + event.type;
|
409 |
+
if ( this[ method ] ) {
|
410 |
+
this[ method ]( event );
|
411 |
+
}
|
412 |
+
};
|
413 |
+
|
414 |
+
LoadingImage.prototype.onload = function() {
|
415 |
+
this.confirm( true, 'onload' );
|
416 |
+
this.unbindEvents();
|
417 |
+
};
|
418 |
+
|
419 |
+
LoadingImage.prototype.onerror = function() {
|
420 |
+
this.confirm( false, 'onerror' );
|
421 |
+
this.unbindEvents();
|
422 |
+
};
|
423 |
+
|
424 |
+
LoadingImage.prototype.unbindEvents = function() {
|
425 |
+
this.proxyImage.removeEventListener( 'load', this );
|
426 |
+
this.proxyImage.removeEventListener( 'error', this );
|
427 |
+
this.img.removeEventListener( 'load', this );
|
428 |
+
this.img.removeEventListener( 'error', this );
|
429 |
+
};
|
430 |
+
|
431 |
+
// -------------------------- Background -------------------------- //
|
432 |
+
|
433 |
+
function Background( url, element ) {
|
434 |
+
this.url = url;
|
435 |
+
this.element = element;
|
436 |
+
this.img = new Image();
|
437 |
+
}
|
438 |
+
|
439 |
+
// inherit LoadingImage prototype
|
440 |
+
Background.prototype = Object.create( LoadingImage.prototype );
|
441 |
+
|
442 |
+
Background.prototype.check = function() {
|
443 |
+
this.img.addEventListener( 'load', this );
|
444 |
+
this.img.addEventListener( 'error', this );
|
445 |
+
this.img.src = this.url;
|
446 |
+
// check if image is already complete
|
447 |
+
var isComplete = this.getIsImageComplete();
|
448 |
+
if ( isComplete ) {
|
449 |
+
this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
|
450 |
+
this.unbindEvents();
|
451 |
+
}
|
452 |
+
};
|
453 |
+
|
454 |
+
Background.prototype.unbindEvents = function() {
|
455 |
+
this.img.removeEventListener( 'load', this );
|
456 |
+
this.img.removeEventListener( 'error', this );
|
457 |
+
};
|
458 |
+
|
459 |
+
Background.prototype.confirm = function( isLoaded, message ) {
|
460 |
+
this.isLoaded = isLoaded;
|
461 |
+
this.emitEvent( 'progress', [ this, this.element, message ] );
|
462 |
+
};
|
463 |
+
|
464 |
+
// -------------------------- jQuery -------------------------- //
|
465 |
+
|
466 |
+
ImagesLoaded.makeJQueryPlugin = function( jQuery ) {
|
467 |
+
jQuery = jQuery || window.jQuery;
|
468 |
+
if ( !jQuery ) {
|
469 |
+
return;
|
470 |
+
}
|
471 |
+
// set local variable
|
472 |
+
$ = jQuery;
|
473 |
+
// $().imagesLoaded()
|
474 |
+
$.fn.imagesLoaded = function( options, callback ) {
|
475 |
+
var instance = new ImagesLoaded( this, options, callback );
|
476 |
+
return instance.jqDeferred.promise( $(this) );
|
477 |
+
};
|
478 |
+
};
|
479 |
+
// try making plugin
|
480 |
+
ImagesLoaded.makeJQueryPlugin();
|
481 |
+
|
482 |
+
// -------------------------- -------------------------- //
|
483 |
+
|
484 |
+
return ImagesLoaded;
|
485 |
+
|
486 |
+
});
|
487 |
+
|
assets/admin/js/lib/jquery-html5-dnd.js
ADDED
@@ -0,0 +1,318 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* HTML5 - Drag and Drop
|
3 |
+
*/
|
4 |
+
|
5 |
+
;(function( $ ) {
|
6 |
+
|
7 |
+
var hasFullDataTransferSupport = function( event ) {
|
8 |
+
try {
|
9 |
+
event.originalEvent.dataTransfer.setData( 'test', 'test' );
|
10 |
+
|
11 |
+
event.originalEvent.dataTransfer.clearData( 'test' );
|
12 |
+
|
13 |
+
return true;
|
14 |
+
} catch ( e ) {
|
15 |
+
return false;
|
16 |
+
}
|
17 |
+
};
|
18 |
+
|
19 |
+
var Draggable = function( userSettings ) {
|
20 |
+
var self = this,
|
21 |
+
settings = {},
|
22 |
+
elementsCache = {},
|
23 |
+
defaultSettings = {
|
24 |
+
element: '',
|
25 |
+
groups: null,
|
26 |
+
onDragStart: null
|
27 |
+
};
|
28 |
+
|
29 |
+
var init = function() {
|
30 |
+
initSettings();
|
31 |
+
|
32 |
+
initElementsCache();
|
33 |
+
|
34 |
+
buildElements();
|
35 |
+
|
36 |
+
attachEvents();
|
37 |
+
};
|
38 |
+
|
39 |
+
var initSettings = function() {
|
40 |
+
$.extend( true, settings, defaultSettings, userSettings );
|
41 |
+
};
|
42 |
+
|
43 |
+
var initElementsCache = function() {
|
44 |
+
elementsCache.$element = $( settings.element );
|
45 |
+
};
|
46 |
+
|
47 |
+
var buildElements = function() {
|
48 |
+
elementsCache.$element.attr( 'draggable', true );
|
49 |
+
};
|
50 |
+
|
51 |
+
var attachEvents = function() {
|
52 |
+
elementsCache.$element.on( 'dragstart', onDragStart );
|
53 |
+
};
|
54 |
+
|
55 |
+
var onDragStart = function( event ) {
|
56 |
+
var groups = settings.groups || [],
|
57 |
+
dataContainer = {
|
58 |
+
groups: groups
|
59 |
+
};
|
60 |
+
|
61 |
+
if ( hasFullDataTransferSupport( event ) ) {
|
62 |
+
event.originalEvent.dataTransfer.setData( JSON.stringify( dataContainer ), true );
|
63 |
+
}
|
64 |
+
|
65 |
+
if ( $.isFunction( settings.onDragStart ) ) {
|
66 |
+
settings.onDragStart.call( elementsCache.$element, event, self );
|
67 |
+
}
|
68 |
+
};
|
69 |
+
|
70 |
+
this.destroy = function() {
|
71 |
+
elementsCache.$element.off( 'dragstart', onDragStart );
|
72 |
+
|
73 |
+
elementsCache.$element.removeAttr( 'draggable' );
|
74 |
+
};
|
75 |
+
|
76 |
+
init();
|
77 |
+
};
|
78 |
+
|
79 |
+
var Droppable = function( userSettings ) {
|
80 |
+
var self = this,
|
81 |
+
settings = {},
|
82 |
+
elementsCache = {},
|
83 |
+
defaultSettings = {
|
84 |
+
element: '',
|
85 |
+
items: '>',
|
86 |
+
horizontalSensitivity: '10%',
|
87 |
+
axis: [ 'vertical', 'horizontal' ],
|
88 |
+
groups: null,
|
89 |
+
isDroppingAllowed: null,
|
90 |
+
onDragging: null,
|
91 |
+
onDropping: null,
|
92 |
+
onDragLeave: null
|
93 |
+
};
|
94 |
+
|
95 |
+
var init = function() {
|
96 |
+
initSettings();
|
97 |
+
|
98 |
+
initElementsCache();
|
99 |
+
|
100 |
+
attachEvents();
|
101 |
+
};
|
102 |
+
|
103 |
+
var initSettings = function() {
|
104 |
+
$.extend( settings, defaultSettings, userSettings );
|
105 |
+
};
|
106 |
+
|
107 |
+
var initElementsCache = function() {
|
108 |
+
elementsCache.$element = $( settings.element );
|
109 |
+
};
|
110 |
+
|
111 |
+
var attachEvents = function() {
|
112 |
+
elementsCache.$element.on( 'dragover', settings.items, onDragOver );
|
113 |
+
|
114 |
+
elementsCache.$element.on( 'drop', settings.items, onDrop );
|
115 |
+
|
116 |
+
elementsCache.$element.on( 'dragleave drop', settings.items, onDragLeave );
|
117 |
+
};
|
118 |
+
|
119 |
+
var checkHorizontal = function( offsetX, elementWidth ) {
|
120 |
+
var isPercentValue,
|
121 |
+
sensitivity;
|
122 |
+
|
123 |
+
if ( ! hasHorizontalDetection() ) {
|
124 |
+
return false;
|
125 |
+
}
|
126 |
+
|
127 |
+
if ( ! hasVerticalDetection() ) {
|
128 |
+
return offsetX > elementWidth / 2 ? 'right' : 'left';
|
129 |
+
}
|
130 |
+
|
131 |
+
sensitivity = settings.horizontalSensitivity.match( /\d+/ );
|
132 |
+
|
133 |
+
if ( ! sensitivity ) {
|
134 |
+
return false;
|
135 |
+
}
|
136 |
+
|
137 |
+
sensitivity = sensitivity[ 0 ];
|
138 |
+
|
139 |
+
isPercentValue = /%$/.test( settings.horizontalSensitivity );
|
140 |
+
|
141 |
+
if ( isPercentValue ) {
|
142 |
+
sensitivity = elementWidth / sensitivity;
|
143 |
+
}
|
144 |
+
|
145 |
+
if ( offsetX > elementWidth - sensitivity ) {
|
146 |
+
return 'right';
|
147 |
+
} else if ( offsetX < sensitivity ) {
|
148 |
+
return 'left';
|
149 |
+
}
|
150 |
+
|
151 |
+
return false;
|
152 |
+
};
|
153 |
+
|
154 |
+
var hasHorizontalDetection = function() {
|
155 |
+
return -1 !== settings.axis.indexOf( 'horizontal' );
|
156 |
+
};
|
157 |
+
|
158 |
+
var hasVerticalDetection = function() {
|
159 |
+
return -1 !== settings.axis.indexOf( 'vertical' );
|
160 |
+
};
|
161 |
+
|
162 |
+
var getSide = function( element, event ) {
|
163 |
+
var $element,
|
164 |
+
thisHeight,
|
165 |
+
thisWidth,
|
166 |
+
side;
|
167 |
+
|
168 |
+
event = event.originalEvent;
|
169 |
+
|
170 |
+
$element = $( element );
|
171 |
+
thisHeight = $element.outerHeight();
|
172 |
+
thisWidth = $element.outerWidth();
|
173 |
+
|
174 |
+
if ( side = checkHorizontal( event.offsetX, thisWidth ) ) {
|
175 |
+
return side;
|
176 |
+
}
|
177 |
+
|
178 |
+
if ( ! hasVerticalDetection() ) {
|
179 |
+
return false;
|
180 |
+
}
|
181 |
+
|
182 |
+
if ( event.offsetY > thisHeight / 2 ) {
|
183 |
+
side = 'bottom';
|
184 |
+
} else {
|
185 |
+
side = 'top';
|
186 |
+
}
|
187 |
+
|
188 |
+
return side;
|
189 |
+
};
|
190 |
+
|
191 |
+
var isDroppingAllowed = function( element, side, event ) {
|
192 |
+
var dataTransferTypes,
|
193 |
+
draggableGroups,
|
194 |
+
isGroupMatch,
|
195 |
+
isDroppingAllowed;
|
196 |
+
|
197 |
+
if ( settings.groups && hasFullDataTransferSupport( event ) ) {
|
198 |
+
|
199 |
+
dataTransferTypes = event.originalEvent.dataTransfer.types;
|
200 |
+
isGroupMatch = false;
|
201 |
+
|
202 |
+
dataTransferTypes = Array.prototype.slice.apply( dataTransferTypes ); // Convert to array, since Firefox hold him as DOMStringList
|
203 |
+
|
204 |
+
dataTransferTypes.forEach( function( type ) {
|
205 |
+
try {
|
206 |
+
draggableGroups = JSON.parse( type );
|
207 |
+
|
208 |
+
if ( ! draggableGroups.groups.slice ) {
|
209 |
+
return;
|
210 |
+
}
|
211 |
+
|
212 |
+
settings.groups.forEach( function( groupName ) {
|
213 |
+
|
214 |
+
if ( -1 !== draggableGroups.groups.indexOf( groupName ) ) {
|
215 |
+
isGroupMatch = true;
|
216 |
+
return false; // stops the forEach from extra loops
|
217 |
+
}
|
218 |
+
} );
|
219 |
+
} catch ( e ) {
|
220 |
+
}
|
221 |
+
} );
|
222 |
+
|
223 |
+
if ( ! isGroupMatch ) {
|
224 |
+
return false;
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
+
if ( $.isFunction( settings.isDroppingAllowed ) ) {
|
229 |
+
|
230 |
+
isDroppingAllowed = settings.isDroppingAllowed.call( element, side, event, self );
|
231 |
+
|
232 |
+
if ( ! isDroppingAllowed ) {
|
233 |
+
return false;
|
234 |
+
}
|
235 |
+
}
|
236 |
+
|
237 |
+
return true;
|
238 |
+
};
|
239 |
+
|
240 |
+
var onDragOver = function( event ) {
|
241 |
+
var side = getSide( this, event );
|
242 |
+
|
243 |
+
if ( ! isDroppingAllowed( this, side, event ) ) {
|
244 |
+
return;
|
245 |
+
}
|
246 |
+
|
247 |
+
event.preventDefault();
|
248 |
+
|
249 |
+
if ( $.isFunction( settings.onDragging ) ) {
|
250 |
+
settings.onDragging.call( this, side, event, self );
|
251 |
+
}
|
252 |
+
};
|
253 |
+
|
254 |
+
var onDrop = function( event ) {
|
255 |
+
var side = getSide( this, event );
|
256 |
+
|
257 |
+
if ( ! isDroppingAllowed( this, side, event ) ) {
|
258 |
+
return;
|
259 |
+
}
|
260 |
+
|
261 |
+
event.preventDefault();
|
262 |
+
|
263 |
+
if ( $.isFunction( settings.onDropping ) ) {
|
264 |
+
settings.onDropping.call( this, side, event, self );
|
265 |
+
}
|
266 |
+
};
|
267 |
+
|
268 |
+
var onDragLeave = function( event ) {
|
269 |
+
if ( $.isFunction( settings.onDragLeave ) ) {
|
270 |
+
settings.onDragLeave.call( this, event, self );
|
271 |
+
}
|
272 |
+
};
|
273 |
+
|
274 |
+
this.destroy = function() {
|
275 |
+
elementsCache.$element.off( 'dragover', settings.items, onDragOver );
|
276 |
+
|
277 |
+
elementsCache.$element.off( 'drop', settings.items, onDrop );
|
278 |
+
|
279 |
+
elementsCache.$element.off( 'dragleave drop', settings.items, onDragLeave );
|
280 |
+
};
|
281 |
+
|
282 |
+
init();
|
283 |
+
};
|
284 |
+
|
285 |
+
var plugins = {
|
286 |
+
html5Draggable: Draggable,
|
287 |
+
html5Droppable: Droppable
|
288 |
+
};
|
289 |
+
|
290 |
+
$.each( plugins, function( pluginName, Plugin ) {
|
291 |
+
$.fn[ pluginName ] = function( options ) {
|
292 |
+
options = options || {};
|
293 |
+
|
294 |
+
this.each( function() {
|
295 |
+
var instance = $.data( this, pluginName ),
|
296 |
+
hasInstance = instance instanceof Plugin;
|
297 |
+
|
298 |
+
if ( hasInstance ) {
|
299 |
+
|
300 |
+
if ( 'destroy' === options ) {
|
301 |
+
|
302 |
+
instance.destroy();
|
303 |
+
|
304 |
+
$.removeData( this, pluginName );
|
305 |
+
}
|
306 |
+
|
307 |
+
return;
|
308 |
+
}
|
309 |
+
|
310 |
+
options.element = this;
|
311 |
+
|
312 |
+
$.data( this, pluginName, new Plugin( options ) );
|
313 |
+
} );
|
314 |
+
|
315 |
+
return this;
|
316 |
+
};
|
317 |
+
} );
|
318 |
+
})( jQuery );
|
assets/admin/js/lib/jquery-html5-dnd.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(t){var n=function(t){try{return t.originalEvent.dataTransfer.setData("test","test"),t.originalEvent.dataTransfer.clearData("test"),!0}catch(n){return!1}},e=function(e){var r=this,i={},o={},a={element:"",groups:null,onDragStart:null},l=function(){s(),u(),f(),c()},s=function(){t.extend(!0,i,a,e)},u=function(){o.$element=t(i.element)},f=function(){o.$element.attr("draggable",!0)},c=function(){o.$element.on("dragstart",g)},g=function(e){var a=i.groups||[],l={groups:a};n(e)&&e.originalEvent.dataTransfer.setData(JSON.stringify(l),!0),t.isFunction(i.onDragStart)&&i.onDragStart.call(o.$element,e,r)};this.destroy=function(){o.$element.off("dragstart",g),o.$element.removeAttr("draggable")},l()},r=function(e){var r=this,i={},o={},a={element:"",items:">",horizontalSensitivity:"10%",axis:["vertical","horizontal"],groups:null,isDroppingAllowed:null,onDragging:null,onDropping:null,onDragLeave:null},l=function(){s(),u(),f()},s=function(){t.extend(i,a,e)},u=function(){o.$element=t(i.element)},f=function(){o.$element.on("dragover",i.items,p),o.$element.on("drop",i.items,m),o.$element.on("dragleave drop",i.items,D)},c=function(t,n){if(!g())return!1;if(!v())return t>n/2?"right":"left";var e=i.horizontalSensitivity.match(/\d+/);if(!e)return!1;e=e[0];var r=/%$/.test(i.horizontalSensitivity);return r&&(e=n/e),t>n-e?"right":e>t?"left":!1},g=function(){return-1!==i.axis.indexOf("horizontal")},v=function(){return-1!==i.axis.indexOf("vertical")},d=function(n,e){e=e.originalEvent;var r,i=t(n),o=i.outerHeight(),a=i.outerWidth();return(r=c(e.offsetX,a))?r:v()?r=e.offsetY>o/2?"bottom":"top":!1},h=function(e,o,a){if(i.groups&&n(a)){var l,s=a.originalEvent.dataTransfer.types,u=!1;if(s=Array.prototype.slice.apply(s),s.forEach(function(t){try{if(l=JSON.parse(t),!l.groups.slice)return;i.groups.forEach(function(t){return-1!==l.groups.indexOf(t)?(u=!0,!1):void 0})}catch(n){}}),!u)return!1}if(t.isFunction(i.isDroppingAllowed)){var f=i.isDroppingAllowed.call(e,o,a,r);if(!f)return!1}return!0},p=function(n){var e=d(this,n);h(this,e,n)&&(n.preventDefault(),t.isFunction(i.onDragging)&&i.onDragging.call(this,e,n,r))},m=function(n){var e=d(this,n);h(this,e,n)&&(n.preventDefault(),t.isFunction(i.onDropping)&&i.onDropping.call(this,e,n,r))},D=function(n){t.isFunction(i.onDragLeave)&&i.onDragLeave.call(this,n,r)};this.destroy=function(){o.$element.off("dragover",i.items,p),o.$element.off("drop",i.items,m),o.$element.off("dragleave drop",i.items,D)},l()},i={html5Draggable:e,html5Droppable:r};t.each(i,function(n,e){t.fn[n]=function(r){return r=r||{},this.each(function(){var i=t.data(this,n),o=i instanceof e;return o?void("destroy"===r&&(i.destroy(),t.removeData(this,n))):(r.element=this,void t.data(this,n,new e(r)))}),this}})}(jQuery);
|
assets/admin/js/lib/jquery-serialize-object.js
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* jQuery Serialize Object v1.0.0
|
3 |
+
* https://github.com/cobicarmel/jquery-serialize-object/
|
4 |
+
*
|
5 |
+
* Copyright Kobi Zaltzberg
|
6 |
+
* Released under the MIT license
|
7 |
+
* https://github.com/cobicarmel/jquery-serialize-object/blob/master/LICENSE.txt
|
8 |
+
*/
|
9 |
+
|
10 |
+
(function( $ ) {
|
11 |
+
|
12 |
+
$.fn.elementorSerializeObject = function() {
|
13 |
+
var serializedArray = this.serializeArray(),
|
14 |
+
data = {};
|
15 |
+
|
16 |
+
var parseObject = function( dataContainer, key, value ) {
|
17 |
+
var isArrayKey = /\[]/.test( key ),
|
18 |
+
isObjectKey = /\[.+]/.test( key ),
|
19 |
+
keyName = key.replace( /\[.*/, '' );
|
20 |
+
|
21 |
+
if ( isArrayKey ) {
|
22 |
+
if ( !dataContainer[ keyName ] ) {
|
23 |
+
dataContainer[ keyName ] = [];
|
24 |
+
}
|
25 |
+
}
|
26 |
+
else {
|
27 |
+
if ( ! isObjectKey ) {
|
28 |
+
if ( dataContainer.push ) {
|
29 |
+
dataContainer.push( value );
|
30 |
+
}
|
31 |
+
else {
|
32 |
+
dataContainer[ keyName ] = value;
|
33 |
+
}
|
34 |
+
|
35 |
+
return;
|
36 |
+
}
|
37 |
+
|
38 |
+
if ( ! dataContainer[ keyName ] ) {
|
39 |
+
dataContainer[ keyName ] = {};
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
var nextKeys = key.match( /\[([^\[\]]+)]/g );
|
44 |
+
|
45 |
+
nextKeys[ 0 ] = nextKeys[ 0 ].replace( /\[|]/g, '' );
|
46 |
+
|
47 |
+
return parseObject( dataContainer[ keyName ], nextKeys.join( '' ), value );
|
48 |
+
};
|
49 |
+
|
50 |
+
$.each( serializedArray, function() {
|
51 |
+
parseObject( data, this.name, this.value );
|
52 |
+
} );
|
53 |
+
return data;
|
54 |
+
};
|
55 |
+
})( jQuery );
|
assets/admin/js/lib/jquery.easing.js
ADDED
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* jQuery Easing v1.3.2 - http://gsgd.co.uk/sandbox/jquery/easing/
|
3 |
+
* Open source under the BSD License.
|
4 |
+
* Copyright © 2008 George McGinley Smith
|
5 |
+
* All rights reserved.
|
6 |
+
* https://raw.github.com/gdsmith/jquery-easing/master/LICENSE
|
7 |
+
*/
|
8 |
+
|
9 |
+
// t: current time, b: begInnIng value, c: change In value, d: duration
|
10 |
+
(function($){$.easing['jswing'] = $.easing['swing'];
|
11 |
+
|
12 |
+
$.extend( $.easing,
|
13 |
+
{
|
14 |
+
def: 'easeOutQuad',
|
15 |
+
swing: function (x, t, b, c, d) {
|
16 |
+
//alert($.easing.default);
|
17 |
+
return $.easing[$.easing.def](x, t, b, c, d);
|
18 |
+
},
|
19 |
+
easeInQuad: function (x, t, b, c, d) {
|
20 |
+
return c*(t/=d)*t + b;
|
21 |
+
},
|
22 |
+
easeOutQuad: function (x, t, b, c, d) {
|
23 |
+
return -c *(t/=d)*(t-2) + b;
|
24 |
+
},
|
25 |
+
easeInOutQuad: function (x, t, b, c, d) {
|
26 |
+
if ((t/=d/2) < 1) return c/2*t*t + b;
|
27 |
+
return -c/2 * ((--t)*(t-2) - 1) + b;
|
28 |
+
},
|
29 |
+
easeInCubic: function (x, t, b, c, d) {
|
30 |
+
return c*(t/=d)*t*t + b;
|
31 |
+
},
|
32 |
+
easeOutCubic: function (x, t, b, c, d) {
|
33 |
+
return c*((t=t/d-1)*t*t + 1) + b;
|
34 |
+
},
|
35 |
+
easeInOutCubic: function (x, t, b, c, d) {
|
36 |
+
if ((t/=d/2) < 1) return c/2*t*t*t + b;
|
37 |
+
return c/2*((t-=2)*t*t + 2) + b;
|
38 |
+
},
|
39 |
+
easeInQuart: function (x, t, b, c, d) {
|
40 |
+
return c*(t/=d)*t*t*t + b;
|
41 |
+
},
|
42 |
+
easeOutQuart: function (x, t, b, c, d) {
|
43 |
+
return -c * ((t=t/d-1)*t*t*t - 1) + b;
|
44 |
+
},
|
45 |
+
easeInOutQuart: function (x, t, b, c, d) {
|
46 |
+
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
|
47 |
+
return -c/2 * ((t-=2)*t*t*t - 2) + b;
|
48 |
+
},
|
49 |
+
easeInQuint: function (x, t, b, c, d) {
|
50 |
+
return c*(t/=d)*t*t*t*t + b;
|
51 |
+
},
|
52 |
+
easeOutQuint: function (x, t, b, c, d) {
|
53 |
+
return c*((t=t/d-1)*t*t*t*t + 1) + b;
|
54 |
+
},
|
55 |
+
easeInOutQuint: function (x, t, b, c, d) {
|
56 |
+
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
|
57 |
+
return c/2*((t-=2)*t*t*t*t + 2) + b;
|
58 |
+
},
|
59 |
+
easeInSine: function (x, t, b, c, d) {
|
60 |
+
return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
|
61 |
+
},
|
62 |
+
easeOutSine: function (x, t, b, c, d) {
|
63 |
+
return c * Math.sin(t/d * (Math.PI/2)) + b;
|
64 |
+
},
|
65 |
+
easeInOutSine: function (x, t, b, c, d) {
|
66 |
+
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
|
67 |
+
},
|
68 |
+
easeInExpo: function (x, t, b, c, d) {
|
69 |
+
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
|
70 |
+
},
|
71 |
+
easeOutExpo: function (x, t, b, c, d) {
|
72 |
+
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
|
73 |
+
},
|
74 |
+
easeInOutExpo: function (x, t, b, c, d) {
|
75 |
+
if (t==0) return b;
|
76 |
+
if (t==d) return b+c;
|
77 |
+
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
|
78 |
+
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
|
79 |
+
},
|
80 |
+
easeInCirc: function (x, t, b, c, d) {
|
81 |
+
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
|
82 |
+
},
|
83 |
+
easeOutCirc: function (x, t, b, c, d) {
|
84 |
+
return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
|
85 |
+
},
|
86 |
+
easeInOutCirc: function (x, t, b, c, d) {
|
87 |
+
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
|
88 |
+
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
|
89 |
+
},
|
90 |
+
easeInElastic: function (x, t, b, c, d) {
|
91 |
+
var s=1.70158;var p=0;var a=c;
|
92 |
+
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
|
93 |
+
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
94 |
+
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
95 |
+
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
|
96 |
+
},
|
97 |
+
easeOutElastic: function (x, t, b, c, d) {
|
98 |
+
var s=1.70158;var p=0;var a=c;
|
99 |
+
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
|
100 |
+
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
101 |
+
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
102 |
+
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
|
103 |
+
},
|
104 |
+
easeInOutElastic: function (x, t, b, c, d) {
|
105 |
+
var s=1.70158;var p=0;var a=c;
|
106 |
+
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
|
107 |
+
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
108 |
+
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
109 |
+
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
|
110 |
+
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
|
111 |
+
},
|
112 |
+
easeInBack: function (x, t, b, c, d, s) {
|
113 |
+
if (s == undefined) s = 1.70158;
|
114 |
+
return c*(t/=d)*t*((s+1)*t - s) + b;
|
115 |
+
},
|
116 |
+
easeOutBack: function (x, t, b, c, d, s) {
|
117 |
+
if (s == undefined) s = 1.70158;
|
118 |
+
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
|
119 |
+
},
|
120 |
+
easeInOutBack: function (x, t, b, c, d, s) {
|
121 |
+
if (s == undefined) s = 1.70158;
|
122 |
+
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
|
123 |
+
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
|
124 |
+
},
|
125 |
+
easeInBounce: function (x, t, b, c, d) {
|
126 |
+
return c - $.easing.easeOutBounce (x, d-t, 0, c, d) + b;
|
127 |
+
},
|
128 |
+
easeOutBounce: function (x, t, b, c, d) {
|
129 |
+
if ((t/=d) < (1/2.75)) {
|
130 |
+
return c*(7.5625*t*t) + b;
|
131 |
+
} else if (t < (2/2.75)) {
|
132 |
+
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
|
133 |
+
} else if (t < (2.5/2.75)) {
|
134 |
+
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
|
135 |
+
} else {
|
136 |
+
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
|
137 |
+
}
|
138 |
+
},
|
139 |
+
easeInOutBounce: function (x, t, b, c, d) {
|
140 |
+
if (t < d/2) return $.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
|
141 |
+
return $.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
|
142 |
+
}
|
143 |
+
});})(jQuery);
|
assets/admin/js/lib/jquery.numerator.js
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* jQuery Numerator Plugin 0.2.0
|
3 |
+
* https://github.com/garethdn/jquery-numerator
|
4 |
+
*
|
5 |
+
* Copyright 2013, Gareth Nolan
|
6 |
+
* http://ie.linkedin.com/in/garethnolan/
|
7 |
+
|
8 |
+
* Based on jQuery Boilerplate by Zeno Rocha with the help of Addy Osmani
|
9 |
+
* http://jqueryboilerplate.com
|
10 |
+
*
|
11 |
+
* Licensed under the MIT license:
|
12 |
+
* http://www.opensource.org/licenses/MIT
|
13 |
+
*/
|
14 |
+
|
15 |
+
;(function ( $, window, document, undefined ) {
|
16 |
+
'use strict';
|
17 |
+
var pluginName = "numerator",
|
18 |
+
defaults = {
|
19 |
+
easing: 'swing',
|
20 |
+
duration: 500,
|
21 |
+
delimiter: undefined,
|
22 |
+
rounding: 0,
|
23 |
+
toValue: undefined,
|
24 |
+
fromValue: 0,
|
25 |
+
queue: false,
|
26 |
+
onStart: function(){},
|
27 |
+
onStep: function(){},
|
28 |
+
onProgress: function(){},
|
29 |
+
onComplete: function(){}
|
30 |
+
};
|
31 |
+
|
32 |
+
function Plugin ( element, options ) {
|
33 |
+
this.element = element;
|
34 |
+
this.settings = $.extend( {}, defaults, options );
|
35 |
+
this._defaults = defaults;
|
36 |
+
this._name = pluginName;
|
37 |
+
this.init();
|
38 |
+
}
|
39 |
+
|
40 |
+
Plugin.prototype = {
|
41 |
+
init: function () {
|
42 |
+
this.parseElement();
|
43 |
+
this.setValue();
|
44 |
+
},
|
45 |
+
|
46 |
+
parseElement: function () {
|
47 |
+
var elText = $.trim($(this.element).text());
|
48 |
+
|
49 |
+
this.settings.fromValue = this.format(elText);
|
50 |
+
this.settings.toValue = this.format($(this.element ).data('to_value'));
|
51 |
+
},
|
52 |
+
|
53 |
+
setValue: function() {
|
54 |
+
var self = this;
|
55 |
+
|
56 |
+
$({value: self.settings.fromValue}).animate({value: self.settings.toValue}, {
|
57 |
+
|
58 |
+
duration: parseInt(self.settings.duration),
|
59 |
+
|
60 |
+
easing: self.settings.easing,
|
61 |
+
|
62 |
+
start: self.settings.onStart,
|
63 |
+
|
64 |
+
step: function(now, fx) {
|
65 |
+
$(self.element).text(self.format(now));
|
66 |
+
// accepts two params - (now, fx)
|
67 |
+
self.settings.onStep(now, fx);
|
68 |
+
},
|
69 |
+
|
70 |
+
// accepts three params - (animation object, progress ratio, time remaining(ms))
|
71 |
+
progress: self.settings.onProgress,
|
72 |
+
|
73 |
+
complete: self.settings.onComplete
|
74 |
+
});
|
75 |
+
},
|
76 |
+
|
77 |
+
format: function(value){
|
78 |
+
var self = this;
|
79 |
+
|
80 |
+
if ( parseInt(this.settings.rounding ) < 1) {
|
81 |
+
value = parseInt(value);
|
82 |
+
} else {
|
83 |
+
value = parseFloat(value).toFixed( parseInt(this.settings.rounding) );
|
84 |
+
}
|
85 |
+
|
86 |
+
if (self.settings.delimiter) {
|
87 |
+
return this.delimit(value)
|
88 |
+
} else {
|
89 |
+
return value;
|
90 |
+
}
|
91 |
+
},
|
92 |
+
|
93 |
+
delimit: function(value){
|
94 |
+
var self = this;
|
95 |
+
|
96 |
+
value = value.toString();
|
97 |
+
|
98 |
+
if (self.settings.rounding && parseInt(self.settings.rounding) > 0) {
|
99 |
+
var decimals = value.substring( (value.length - (self.settings.rounding + 1)), value.length ),
|
100 |
+
wholeValue = value.substring( 0, (value.length - (self.settings.rounding + 1)));
|
101 |
+
|
102 |
+
return self.addCommas(wholeValue) + decimals;
|
103 |
+
} else {
|
104 |
+
return self.addCommas(value);
|
105 |
+
}
|
106 |
+
},
|
107 |
+
|
108 |
+
addCommas: function(value){
|
109 |
+
return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, this.settings.delimiter);
|
110 |
+
}
|
111 |
+
};
|
112 |
+
|
113 |
+
$.fn[ pluginName ] = function ( options ) {
|
114 |
+
return this.each(function() {
|
115 |
+
if ( $.data( this, "plugin_" + pluginName ) ) {
|
116 |
+
$.data(this, 'plugin_' + pluginName, null);
|
117 |
+
}
|
118 |
+
$.data( this, "plugin_" + pluginName, new Plugin( this, options ) );
|
119 |
+
});
|
120 |
+
};
|
121 |
+
|
122 |
+
})( jQuery, window, document );
|
assets/admin/js/lib/nprogress.js
ADDED
@@ -0,0 +1,476 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
|
2 |
+
* @license MIT */
|
3 |
+
|
4 |
+
;(function(root, factory) {
|
5 |
+
|
6 |
+
if (typeof define === 'function' && define.amd) {
|
7 |
+
define(factory);
|
8 |
+
} else if (typeof exports === 'object') {
|
9 |
+
module.exports = factory();
|
10 |
+
} else {
|
11 |
+
root.NProgress = factory();
|
12 |
+
}
|
13 |
+
|
14 |
+
})(this, function() {
|
15 |
+
var NProgress = {};
|
16 |
+
|
17 |
+
NProgress.version = '0.2.0';
|
18 |
+
|
19 |
+
var Settings = NProgress.settings = {
|
20 |
+
minimum: 0.08,
|
21 |
+
easing: 'ease',
|
22 |
+
positionUsing: '',
|
23 |
+
speed: 200,
|
24 |
+
trickle: true,
|
25 |
+
trickleRate: 0.02,
|
26 |
+
trickleSpeed: 800,
|
27 |
+
showSpinner: true,
|
28 |
+
barSelector: '[role="bar"]',
|
29 |
+
spinnerSelector: '[role="spinner"]',
|
30 |
+
parent: 'body',
|
31 |
+
template: '<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'
|
32 |
+
};
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Updates configuration.
|
36 |
+
*
|
37 |
+
* NProgress.configure({
|
38 |
+
* minimum: 0.1
|
39 |
+
* });
|
40 |
+
*/
|
41 |
+
NProgress.configure = function(options) {
|
42 |
+
var key, value;
|
43 |
+
for (key in options) {
|
44 |
+
value = options[key];
|
45 |
+
if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;
|
46 |
+
}
|
47 |
+
|
48 |
+
return this;
|
49 |
+
};
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Last number.
|
53 |
+
*/
|
54 |
+
|
55 |
+
NProgress.status = null;
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.
|
59 |
+
*
|
60 |
+
* NProgress.set(0.4);
|
61 |
+
* NProgress.set(1.0);
|
62 |
+
*/
|
63 |
+
|
64 |
+
NProgress.set = function(n) {
|
65 |
+
var started = NProgress.isStarted();
|
66 |
+
|
67 |
+
n = clamp(n, Settings.minimum, 1);
|
68 |
+
NProgress.status = (n === 1 ? null : n);
|
69 |
+
|
70 |
+
var progress = NProgress.render(!started),
|
71 |
+
bar = progress.querySelector(Settings.barSelector),
|
72 |
+
speed = Settings.speed,
|
73 |
+
ease = Settings.easing;
|
74 |
+
|
75 |
+
progress.offsetWidth; /* Repaint */
|
76 |
+
|
77 |
+
queue(function(next) {
|
78 |
+
// Set positionUsing if it hasn't already been set
|
79 |
+
if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();
|
80 |
+
|
81 |
+
// Add transition
|
82 |
+
css(bar, barPositionCSS(n, speed, ease));
|
83 |
+
|
84 |
+
if (n === 1) {
|
85 |
+
// Fade out
|
86 |
+
css(progress, {
|
87 |
+
transition: 'none',
|
88 |
+
opacity: 1
|
89 |
+
});
|
90 |
+
progress.offsetWidth; /* Repaint */
|
91 |
+
|
92 |
+
setTimeout(function() {
|
93 |
+
css(progress, {
|
94 |
+
transition: 'all ' + speed + 'ms linear',
|
95 |
+
opacity: 0
|
96 |
+
});
|
97 |
+
setTimeout(function() {
|
98 |
+
NProgress.remove();
|
99 |
+
next();
|
100 |
+
}, speed);
|
101 |
+
}, speed);
|
102 |
+
} else {
|
103 |
+
setTimeout(next, speed);
|
104 |
+
}
|
105 |
+
});
|
106 |
+
|
107 |
+
return this;
|
108 |
+
};
|
109 |
+
|
110 |
+
NProgress.isStarted = function() {
|
111 |
+
return typeof NProgress.status === 'number';
|
112 |
+
};
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Shows the progress bar.
|
116 |
+
* This is the same as setting the status to 0%, except that it doesn't go backwards.
|
117 |
+
*
|
118 |
+
* NProgress.start();
|
119 |
+
*
|
120 |
+
*/
|
121 |
+
NProgress.start = function() {
|
122 |
+
if (!NProgress.status) NProgress.set(0);
|
123 |
+
|
124 |
+
var work = function() {
|
125 |
+
setTimeout(function() {
|
126 |
+
if (!NProgress.status) return;
|
127 |
+
NProgress.trickle();
|
128 |
+
work();
|
129 |
+
}, Settings.trickleSpeed);
|
130 |
+
};
|
131 |
+
|
132 |
+
if (Settings.trickle) work();
|
133 |
+
|
134 |
+
return this;
|
135 |
+
};
|
136 |
+
|
137 |
+
/**
|
138 |
+
* Hides the progress bar.
|
139 |
+
* This is the *sort of* the same as setting the status to 100%, with the
|
140 |
+
* difference being `done()` makes some placebo effect of some realistic motion.
|
141 |
+
*
|
142 |
+
* NProgress.done();
|
143 |
+
*
|
144 |
+
* If `true` is passed, it will show the progress bar even if its hidden.
|
145 |
+
*
|
146 |
+
* NProgress.done(true);
|
147 |
+
*/
|
148 |
+
|
149 |
+
NProgress.done = function(force) {
|
150 |
+
if (!force && !NProgress.status) return this;
|
151 |
+
|
152 |
+
return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);
|
153 |
+
};
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Increments by a random amount.
|
157 |
+
*/
|
158 |
+
|
159 |
+
NProgress.inc = function(amount) {
|
160 |
+
var n = NProgress.status;
|
161 |
+
|
162 |
+
if (!n) {
|
163 |
+
return NProgress.start();
|
164 |
+
} else {
|
165 |
+
if (typeof amount !== 'number') {
|
166 |
+
amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);
|
167 |
+
}
|
168 |
+
|
169 |
+
n = clamp(n + amount, 0, 0.994);
|
170 |
+
return NProgress.set(n);
|
171 |
+
}
|
172 |
+
};
|
173 |
+
|
174 |
+
NProgress.trickle = function() {
|
175 |
+
return NProgress.inc(Math.random() * Settings.trickleRate);
|
176 |
+
};
|
177 |
+
|
178 |
+
/**
|
179 |
+
* Waits for all supplied jQuery promises and
|
180 |
+
* increases the progress as the promises resolve.
|
181 |
+
*
|
182 |
+
* @param $promise jQUery Promise
|
183 |
+
*/
|
184 |
+
(function() {
|
185 |
+
var initial = 0, current = 0;
|
186 |
+
|
187 |
+
NProgress.promise = function($promise) {
|
188 |
+
if (!$promise || $promise.state() === "resolved") {
|
189 |
+
return this;
|
190 |
+
}
|
191 |
+
|
192 |
+
if (current === 0) {
|
193 |
+
NProgress.start();
|
194 |
+
}
|
195 |
+
|
196 |
+
initial++;
|
197 |
+
current++;
|
198 |
+
|
199 |
+
$promise.always(function() {
|
200 |
+
current--;
|
201 |
+
if (current === 0) {
|
202 |
+
initial = 0;
|
203 |
+
NProgress.done();
|
204 |
+
} else {
|
205 |
+
NProgress.set((initial - current) / initial);
|
206 |
+
}
|
207 |
+
});
|
208 |
+
|
209 |
+
return this;
|
210 |
+
};
|
211 |
+
|
212 |
+
})();
|
213 |
+
|
214 |
+
/**
|
215 |
+
* (Internal) renders the progress bar markup based on the `template`
|
216 |
+
* setting.
|
217 |
+
*/
|
218 |
+
|
219 |
+
NProgress.render = function(fromStart) {
|
220 |
+
if (NProgress.isRendered()) return document.getElementById('nprogress');
|
221 |
+
|
222 |
+
addClass(document.documentElement, 'nprogress-busy');
|
223 |
+
|
224 |
+
var progress = document.createElement('div');
|
225 |
+
progress.id = 'nprogress';
|
226 |
+
progress.innerHTML = Settings.template;
|
227 |
+
|
228 |
+
var bar = progress.querySelector(Settings.barSelector),
|
229 |
+
perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),
|
230 |
+
parent = document.querySelector(Settings.parent),
|
231 |
+
spinner;
|
232 |
+
|
233 |
+
css(bar, {
|
234 |
+
transition: 'all 0 linear',
|
235 |
+
transform: 'translate3d(' + perc + '%,0,0)'
|
236 |
+
});
|
237 |
+
|
238 |
+
if (!Settings.showSpinner) {
|
239 |
+
spinner = progress.querySelector(Settings.spinnerSelector);
|
240 |
+
spinner && removeElement(spinner);
|
241 |
+
}
|
242 |
+
|
243 |
+
if (parent != document.body) {
|
244 |
+
addClass(parent, 'nprogress-custom-parent');
|
245 |
+
}
|
246 |
+
|
247 |
+
parent.appendChild(progress);
|
248 |
+
return progress;
|
249 |
+
};
|
250 |
+
|
251 |
+
/**
|
252 |
+
* Removes the element. Opposite of render().
|
253 |
+
*/
|
254 |
+
|
255 |
+
NProgress.remove = function() {
|
256 |
+
removeClass(document.documentElement, 'nprogress-busy');
|
257 |
+
removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');
|
258 |
+
var progress = document.getElementById('nprogress');
|
259 |
+
progress && removeElement(progress);
|
260 |
+
};
|
261 |
+
|
262 |
+
/**
|
263 |
+
* Checks if the progress bar is rendered.
|
264 |
+
*/
|
265 |
+
|
266 |
+
NProgress.isRendered = function() {
|
267 |
+
return !!document.getElementById('nprogress');
|
268 |
+
};
|
269 |
+
|
270 |
+
/**
|
271 |
+
* Determine which positioning CSS rule to use.
|
272 |
+
*/
|
273 |
+
|
274 |
+
NProgress.getPositioningCSS = function() {
|
275 |
+
// Sniff on document.body.style
|
276 |
+
var bodyStyle = document.body.style;
|
277 |
+
|
278 |
+
// Sniff prefixes
|
279 |
+
var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :
|
280 |
+
('MozTransform' in bodyStyle) ? 'Moz' :
|
281 |
+
('msTransform' in bodyStyle) ? 'ms' :
|
282 |
+
('OTransform' in bodyStyle) ? 'O' : '';
|
283 |
+
|
284 |
+
if (vendorPrefix + 'Perspective' in bodyStyle) {
|
285 |
+
// Modern browsers with 3D support, e.g. Webkit, IE10
|
286 |
+
return 'translate3d';
|
287 |
+
} else if (vendorPrefix + 'Transform' in bodyStyle) {
|
288 |
+
// Browsers without 3D support, e.g. IE9
|
289 |
+
return 'translate';
|
290 |
+
} else {
|
291 |
+
// Browsers without translate() support, e.g. IE7-8
|
292 |
+
return 'margin';
|
293 |
+
}
|
294 |
+
};
|
295 |
+
|
296 |
+
/**
|
297 |
+
* Helpers
|
298 |
+
*/
|
299 |
+
|
300 |
+
function clamp(n, min, max) {
|
301 |
+
if (n < min) return min;
|
302 |
+
if (n > max) return max;
|
303 |
+
return n;
|
304 |
+
}
|
305 |
+
|
306 |
+
/**
|
307 |
+
* (Internal) converts a percentage (`0..1`) to a bar translateX
|
308 |
+
* percentage (`-100%..0%`).
|
309 |
+
*/
|
310 |
+
|
311 |
+
function toBarPerc(n) {
|
312 |
+
return (-1 + n) * 100;
|
313 |
+
}
|
314 |
+
|
315 |
+
|
316 |
+
/**
|
317 |
+
* (Internal) returns the correct CSS for changing the bar's
|
318 |
+
* position given an n percentage, and speed and ease from Settings
|
319 |
+
*/
|
320 |
+
|
321 |
+
function barPositionCSS(n, speed, ease) {
|
322 |
+
var barCSS;
|
323 |
+
|
324 |
+
if (Settings.positionUsing === 'translate3d') {
|
325 |
+
barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };
|
326 |
+
} else if (Settings.positionUsing === 'translate') {
|
327 |
+
barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };
|
328 |
+
} else {
|
329 |
+
barCSS = { 'margin-left': toBarPerc(n)+'%' };
|
330 |
+
}
|
331 |
+
|
332 |
+
barCSS.transition = 'all '+speed+'ms '+ease;
|
333 |
+
|
334 |
+
return barCSS;
|
335 |
+
}
|
336 |
+
|
337 |
+
/**
|
338 |
+
* (Internal) Queues a function to be executed.
|
339 |
+
*/
|
340 |
+
|
341 |
+
var queue = (function() {
|
342 |
+
var pending = [];
|
343 |
+
|
344 |
+
function next() {
|
345 |
+
var fn = pending.shift();
|
346 |
+
if (fn) {
|
347 |
+
fn(next);
|
348 |
+
}
|
349 |
+
}
|
350 |
+
|
351 |
+
return function(fn) {
|
352 |
+
pending.push(fn);
|
353 |
+
if (pending.length == 1) next();
|
354 |
+
};
|
355 |
+
})();
|
356 |
+
|
357 |
+
/**
|
358 |
+
* (Internal) Applies css properties to an element, similar to the jQuery
|
359 |
+
* css method.
|
360 |
+
*
|
361 |
+
* While this helper does assist with vendor prefixed property names, it
|
362 |
+
* does not perform any manipulation of values prior to setting styles.
|
363 |
+
*/
|
364 |
+
|
365 |
+
var css = (function() {
|
366 |
+
var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],
|
367 |
+
cssProps = {};
|
368 |
+
|
369 |
+
function camelCase(string) {
|
370 |
+
return string.replace(/^-ms-/, 'ms-').replace(/-([\da-z])/gi, function(match, letter) {
|
371 |
+
return letter.toUpperCase();
|
372 |
+
});
|
373 |
+
}
|
374 |
+
|
375 |
+
function getVendorProp(name) {
|
376 |
+
var style = document.body.style;
|
377 |
+
if (name in style) return name;
|
378 |
+
|
379 |
+
var i = cssPrefixes.length,
|
380 |
+
capName = name.charAt(0).toUpperCase() + name.slice(1),
|
381 |
+
vendorName;
|
382 |
+
while (i--) {
|
383 |
+
vendorName = cssPrefixes[i] + capName;
|
384 |
+
if (vendorName in style) return vendorName;
|
385 |
+
}
|
386 |
+
|
387 |
+
return name;
|
388 |
+
}
|
389 |
+
|
390 |
+
function getStyleProp(name) {
|
391 |
+
name = camelCase(name);
|
392 |
+
return cssProps[name] || (cssProps[name] = getVendorProp(name));
|
393 |
+
}
|
394 |
+
|
395 |
+
function applyCss(element, prop, value) {
|
396 |
+
prop = getStyleProp(prop);
|
397 |
+
element.style[prop] = value;
|
398 |
+
}
|
399 |
+
|
400 |
+
return function(element, properties) {
|
401 |
+
var args = arguments,
|
402 |
+
prop,
|
403 |
+
value;
|
404 |
+
|
405 |
+
if (args.length == 2) {
|
406 |
+
for (prop in properties) {
|
407 |
+
value = properties[prop];
|
408 |
+
if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);
|
409 |
+
}
|
410 |
+
} else {
|
411 |
+
applyCss(element, args[1], args[2]);
|
412 |
+
}
|
413 |
+
}
|
414 |
+
})();
|
415 |
+
|
416 |
+
/**
|
417 |
+
* (Internal) Determines if an element or space separated list of class names contains a class name.
|
418 |
+
*/
|
419 |
+
|
420 |
+
function hasClass(element, name) {
|
421 |
+
var list = typeof element == 'string' ? element : classList(element);
|
422 |
+
return list.indexOf(' ' + name + ' ') >= 0;
|
423 |
+
}
|
424 |
+
|
425 |
+
/**
|
426 |
+
* (Internal) Adds a class to an element.
|
427 |
+
*/
|
428 |
+
|
429 |
+
function addClass(element, name) {
|
430 |
+
var oldList = classList(element),
|
431 |
+
newList = oldList + name;
|
432 |
+
|
433 |
+
if (hasClass(oldList, name)) return;
|
434 |
+
|
435 |
+
// Trim the opening space.
|
436 |
+
element.className = newList.substring(1);
|
437 |
+
}
|
438 |
+
|
439 |
+
/**
|
440 |
+
* (Internal) Removes a class from an element.
|
441 |
+
*/
|
442 |
+
|
443 |
+
function removeClass(element, name) {
|
444 |
+
var oldList = classList(element),
|
445 |
+
newList;
|
446 |
+
|
447 |
+
if (!hasClass(element, name)) return;
|
448 |
+
|
449 |
+
// Replace the class name.
|
450 |
+
newList = oldList.replace(' ' + name + ' ', ' ');
|
451 |
+
|
452 |
+
// Trim the opening and closing spaces.
|
453 |
+
element.className = newList.substring(1, newList.length - 1);
|
454 |
+
}
|
455 |
+
|
456 |
+
/**
|
457 |
+
* (Internal) Gets a space separated list of the class names on the element.
|
458 |
+
* The list is wrapped with a single space on each end to facilitate finding
|
459 |
+
* matches within the list.
|
460 |
+
*/
|
461 |
+
|
462 |
+
function classList(element) {
|
463 |
+
return (' ' + (element.className || '') + ' ').replace(/\s+/gi, ' ');
|
464 |
+
}
|
465 |
+
|
466 |
+
/**
|
467 |
+
* (Internal) Removes an element from the DOM.
|
468 |
+
*/
|
469 |
+
|
470 |
+
function removeElement(element) {
|
471 |
+
element && element.parentNode && element.parentNode.removeChild(element);
|
472 |
+
}
|
473 |
+
|
474 |
+
return NProgress;
|
475 |
+
});
|
476 |
+
|
assets/admin/js/lib/perfect-scrollbar.jquery.min.js
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
/* perfect-scrollbar v0.6.7 */
|
2 |
+
!function t(e,n,r){function o(l,s){if(!n[l]){if(!e[l]){var a="function"==typeof require&&require;if(!s&&a)return a(l,!0);if(i)return i(l,!0);var c=new Error("Cannot find module '"+l+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[l]={exports:{}};e[l][0].call(u.exports,function(t){var n=e[l][1][t];return o(n?n:t)},u,u.exports,t,e,n,r)}return n[l].exports}for(var i="function"==typeof require&&require,l=0;l<r.length;l++)o(r[l]);return o}({1:[function(t,e,n){"use strict";function r(t){t.fn.perfectScrollbar=function(e){return this.each(function(){if("object"==typeof e||"undefined"==typeof e){var n=e;i.get(this)||o.initialize(this,n)}else{var r=e;"update"===r?o.update(this):"destroy"===r&&o.destroy(this)}return t(this)})}}var o=t("../main"),i=t("../plugin/instances");if("function"==typeof define&&define.amd)define(["jquery"],r);else{var l=window.jQuery?window.jQuery:window.$;"undefined"!=typeof l&&r(l)}e.exports=r},{"../main":7,"../plugin/instances":18}],2:[function(t,e,n){"use strict";function r(t,e){var n=t.className.split(" ");n.indexOf(e)<0&&n.push(e),t.className=n.join(" ")}function o(t,e){var n=t.className.split(" "),r=n.indexOf(e);r>=0&&n.splice(r,1),t.className=n.join(" ")}n.add=function(t,e){t.classList?t.classList.add(e):r(t,e)},n.remove=function(t,e){t.classList?t.classList.remove(e):o(t,e)},n.list=function(t){return t.classList?Array.prototype.slice.apply(t.classList):t.className.split(" ")}},{}],3:[function(t,e,n){"use strict";function r(t,e){return window.getComputedStyle(t)[e]}function o(t,e,n){return"number"==typeof n&&(n=n.toString()+"px"),t.style[e]=n,t}function i(t,e){for(var n in e){var r=e[n];"number"==typeof r&&(r=r.toString()+"px"),t.style[n]=r}return t}var l={};l.e=function(t,e){var n=document.createElement(t);return n.className=e,n},l.appendTo=function(t,e){return e.appendChild(t),t},l.css=function(t,e,n){return"object"==typeof e?i(t,e):"undefined"==typeof n?r(t,e):o(t,e,n)},l.matches=function(t,e){return"undefined"!=typeof t.matches?t.matches(e):"undefined"!=typeof t.matchesSelector?t.matchesSelector(e):"undefined"!=typeof t.webkitMatchesSelector?t.webkitMatchesSelector(e):"undefined"!=typeof t.mozMatchesSelector?t.mozMatchesSelector(e):"undefined"!=typeof t.msMatchesSelector?t.msMatchesSelector(e):void 0},l.remove=function(t){"undefined"!=typeof t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t)},l.queryChildren=function(t,e){return Array.prototype.filter.call(t.childNodes,function(t){return l.matches(t,e)})},e.exports=l},{}],4:[function(t,e,n){"use strict";var r=function(t){this.element=t,this.events={}};r.prototype.bind=function(t,e){"undefined"==typeof this.events[t]&&(this.events[t]=[]),this.events[t].push(e),this.element.addEventListener(t,e,!1)},r.prototype.unbind=function(t,e){var n="undefined"!=typeof e;this.events[t]=this.events[t].filter(function(r){return n&&r!==e?!0:(this.element.removeEventListener(t,r,!1),!1)},this)},r.prototype.unbindAll=function(){for(var t in this.events)this.unbind(t)};var o=function(){this.eventElements=[]};o.prototype.eventElement=function(t){var e=this.eventElements.filter(function(e){return e.element===t})[0];return"undefined"==typeof e&&(e=new r(t),this.eventElements.push(e)),e},o.prototype.bind=function(t,e,n){this.eventElement(t).bind(e,n)},o.prototype.unbind=function(t,e,n){this.eventElement(t).unbind(e,n)},o.prototype.unbindAll=function(){for(var t=0;t<this.eventElements.length;t++)this.eventElements[t].unbindAll()},o.prototype.once=function(t,e,n){var r=this.eventElement(t),o=function(t){r.unbind(e,o),n(t)};r.bind(e,o)},e.exports=o},{}],5:[function(t,e,n){"use strict";e.exports=function(){function t(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return function(){return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()}}()},{}],6:[function(t,e,n){"use strict";var r=t("./class"),o=t("./dom");n.toInt=function(t){return parseInt(t,10)||0},n.clone=function(t){if(null===t)return null;if("object"==typeof t){var e={};for(var n in t)e[n]=this.clone(t[n]);return e}return t},n.extend=function(t,e){var n=this.clone(t);for(var r in e)n[r]=this.clone(e[r]);return n},n.isEditable=function(t){return o.matches(t,"input,[contenteditable]")||o.matches(t,"select,[contenteditable]")||o.matches(t,"textarea,[contenteditable]")||o.matches(t,"button,[contenteditable]")},n.removePsClasses=function(t){for(var e=r.list(t),n=0;n<e.length;n++){var o=e[n];0===o.indexOf("ps-")&&r.remove(t,o)}},n.outerWidth=function(t){return this.toInt(o.css(t,"width"))+this.toInt(o.css(t,"paddingLeft"))+this.toInt(o.css(t,"paddingRight"))+this.toInt(o.css(t,"borderLeftWidth"))+this.toInt(o.css(t,"borderRightWidth"))},n.startScrolling=function(t,e){r.add(t,"ps-in-scrolling"),"undefined"!=typeof e?r.add(t,"ps-"+e):(r.add(t,"ps-x"),r.add(t,"ps-y"))},n.stopScrolling=function(t,e){r.remove(t,"ps-in-scrolling"),"undefined"!=typeof e?r.remove(t,"ps-"+e):(r.remove(t,"ps-x"),r.remove(t,"ps-y"))},n.env={isWebKit:"WebkitAppearance"in document.documentElement.style,supportsTouch:"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,supportsIePointer:null!==window.navigator.msMaxTouchPoints}},{"./class":2,"./dom":3}],7:[function(t,e,n){"use strict";var r=t("./plugin/destroy"),o=t("./plugin/initialize"),i=t("./plugin/update");e.exports={initialize:o,update:i,destroy:r}},{"./plugin/destroy":9,"./plugin/initialize":17,"./plugin/update":21}],8:[function(t,e,n){"use strict";e.exports={maxScrollbarLength:null,minScrollbarLength:null,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0,suppressScrollX:!1,suppressScrollY:!1,swipePropagation:!0,useBothWheelAxes:!1,useKeyboard:!0,useSelectionScroll:!1,wheelPropagation:!1,wheelSpeed:1}},{}],9:[function(t,e,n){"use strict";var r=t("../lib/dom"),o=t("../lib/helper"),i=t("./instances");e.exports=function(t){var e=i.get(t);e&&(e.event.unbindAll(),r.remove(e.scrollbarX),r.remove(e.scrollbarY),r.remove(e.scrollbarXRail),r.remove(e.scrollbarYRail),o.removePsClasses(t),i.remove(t))}},{"../lib/dom":3,"../lib/helper":6,"./instances":18}],10:[function(t,e,n){"use strict";function r(t,e){function n(t){return t.getBoundingClientRect()}var r=window.Event.prototype.stopPropagation.bind;e.settings.stopPropagationOnClick&&e.event.bind(e.scrollbarY,"click",r),e.event.bind(e.scrollbarYRail,"click",function(r){var i=o.toInt(e.scrollbarYHeight/2),a=e.railYRatio*(r.pageY-window.scrollY-n(e.scrollbarYRail).top-i),c=e.railYRatio*(e.railYHeight-e.scrollbarYHeight),u=a/c;0>u?u=0:u>1&&(u=1),s(t,"top",(e.contentHeight-e.containerHeight)*u),l(t),r.stopPropagation()}),e.settings.stopPropagationOnClick&&e.event.bind(e.scrollbarX,"click",r),e.event.bind(e.scrollbarXRail,"click",function(r){var i=o.toInt(e.scrollbarXWidth/2),a=e.railXRatio*(r.pageX-window.scrollX-n(e.scrollbarXRail).left-i),c=e.railXRatio*(e.railXWidth-e.scrollbarXWidth),u=a/c;0>u?u=0:u>1&&(u=1),s(t,"left",(e.contentWidth-e.containerWidth)*u-e.negativeScrollAdjustment),l(t),r.stopPropagation()})}var o=t("../../lib/helper"),i=t("../instances"),l=t("../update-geometry"),s=t("../update-scroll");e.exports=function(t){var e=i.get(t);r(t,e)}},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],11:[function(t,e,n){"use strict";function r(t,e){function n(n){var o=r+n*e.railXRatio,i=e.scrollbarXRail.getBoundingClientRect().left+e.railXRatio*(e.railXWidth-e.scrollbarXWidth);0>o?e.scrollbarXLeft=0:o>i?e.scrollbarXLeft=i:e.scrollbarXLeft=o;var s=l.toInt(e.scrollbarXLeft*(e.contentWidth-e.containerWidth)/(e.containerWidth-e.railXRatio*e.scrollbarXWidth))-e.negativeScrollAdjustment;c(t,"left",s)}var r=null,o=null,s=function(e){n(e.pageX-o),a(t),e.stopPropagation(),e.preventDefault()},u=function(){l.stopScrolling(t,"x"),e.event.unbind(e.ownerDocument,"mousemove",s)};e.event.bind(e.scrollbarX,"mousedown",function(n){o=n.pageX,r=l.toInt(i.css(e.scrollbarX,"left"))*e.railXRatio,l.startScrolling(t,"x"),e.event.bind(e.ownerDocument,"mousemove",s),e.event.once(e.ownerDocument,"mouseup",u),n.stopPropagation(),n.preventDefault()})}function o(t,e){function n(n){var o=r+n*e.railYRatio,i=e.scrollbarYRail.getBoundingClientRect().top+e.railYRatio*(e.railYHeight-e.scrollbarYHeight);0>o?e.scrollbarYTop=0:o>i?e.scrollbarYTop=i:e.scrollbarYTop=o;var s=l.toInt(e.scrollbarYTop*(e.contentHeight-e.containerHeight)/(e.containerHeight-e.railYRatio*e.scrollbarYHeight));c(t,"top",s)}var r=null,o=null,s=function(e){n(e.pageY-o),a(t),e.stopPropagation(),e.preventDefault()},u=function(){l.stopScrolling(t,"y"),e.event.unbind(e.ownerDocument,"mousemove",s)};e.event.bind(e.scrollbarY,"mousedown",function(n){o=n.pageY,r=l.toInt(i.css(e.scrollbarY,"top"))*e.railYRatio,l.startScrolling(t,"y"),e.event.bind(e.ownerDocument,"mousemove",s),e.event.once(e.ownerDocument,"mouseup",u),n.stopPropagation(),n.preventDefault()})}var i=t("../../lib/dom"),l=t("../../lib/helper"),s=t("../instances"),a=t("../update-geometry"),c=t("../update-scroll");e.exports=function(t){var e=s.get(t);r(t,e),o(t,e)}},{"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],12:[function(t,e,n){"use strict";function r(t,e){function n(n,r){var o=t.scrollTop;if(0===n){if(!e.scrollbarYActive)return!1;if(0===o&&r>0||o>=e.contentHeight-e.containerHeight&&0>r)return!e.settings.wheelPropagation}var i=t.scrollLeft;if(0===r){if(!e.scrollbarXActive)return!1;if(0===i&&0>n||i>=e.contentWidth-e.containerWidth&&n>0)return!e.settings.wheelPropagation}return!0}var r=!1;e.event.bind(t,"mouseenter",function(){r=!0}),e.event.bind(t,"mouseleave",function(){r=!1});var i=!1;e.event.bind(e.ownerDocument,"keydown",function(a){if((!a.isDefaultPrevented||!a.isDefaultPrevented())&&r){var c=document.activeElement?document.activeElement:e.ownerDocument.activeElement;if(c){for(;c.shadowRoot;)c=c.shadowRoot.activeElement;if(o.isEditable(c))return}var u=0,d=0;switch(a.which){case 37:u=-30;break;case 38:d=30;break;case 39:u=30;break;case 40:d=-30;break;case 33:d=90;break;case 32:d=a.shiftKey?90:-90;break;case 34:d=-90;break;case 35:d=a.ctrlKey?-e.contentHeight:-e.containerHeight;break;case 36:d=a.ctrlKey?t.scrollTop:e.containerHeight;break;default:return}s(t,"top",t.scrollTop-d),s(t,"left",t.scrollLeft+u),l(t),i=n(u,d),i&&a.preventDefault()}})}var o=t("../../lib/helper"),i=t("../instances"),l=t("../update-geometry"),s=t("../update-scroll");e.exports=function(t){var e=i.get(t);r(t,e)}},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],13:[function(t,e,n){"use strict";function r(t,e){function n(n,r){var o=t.scrollTop;if(0===n){if(!e.scrollbarYActive)return!1;if(0===o&&r>0||o>=e.contentHeight-e.containerHeight&&0>r)return!e.settings.wheelPropagation}var i=t.scrollLeft;if(0===r){if(!e.scrollbarXActive)return!1;if(0===i&&0>n||i>=e.contentWidth-e.containerWidth&&n>0)return!e.settings.wheelPropagation}return!0}function r(t){var e=t.deltaX,n=-1*t.deltaY;return("undefined"==typeof e||"undefined"==typeof n)&&(e=-1*t.wheelDeltaX/6,n=t.wheelDeltaY/6),t.deltaMode&&1===t.deltaMode&&(e*=10,n*=10),e!==e&&n!==n&&(e=0,n=t.wheelDelta),[e,n]}function i(e,n){var r=t.querySelector("textarea:hover");if(r){var o=r.scrollHeight-r.clientHeight;if(o>0&&!(0===r.scrollTop&&n>0||r.scrollTop===o&&0>n))return!0;var i=r.scrollLeft-r.clientWidth;if(i>0&&!(0===r.scrollLeft&&0>e||r.scrollLeft===i&&e>0))return!0}return!1}function a(a){if(o.env.isWebKit||!t.querySelector("select:focus")){var u=r(a),d=u[0],p=u[1];i(d,p)||(c=!1,e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(p?s(t,"top",t.scrollTop-p*e.settings.wheelSpeed):s(t,"top",t.scrollTop+d*e.settings.wheelSpeed),c=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(d?s(t,"left",t.scrollLeft+d*e.settings.wheelSpeed):s(t,"left",t.scrollLeft-p*e.settings.wheelSpeed),c=!0):(s(t,"top",t.scrollTop-p*e.settings.wheelSpeed),s(t,"left",t.scrollLeft+d*e.settings.wheelSpeed)),l(t),c=c||n(d,p),c&&(a.stopPropagation(),a.preventDefault()))}}var c=!1;"undefined"!=typeof window.onwheel?e.event.bind(t,"wheel",a):"undefined"!=typeof window.onmousewheel&&e.event.bind(t,"mousewheel",a)}var o=t("../../lib/helper"),i=t("../instances"),l=t("../update-geometry"),s=t("../update-scroll");e.exports=function(t){var e=i.get(t);r(t,e)}},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],14:[function(t,e,n){"use strict";function r(t,e){e.event.bind(t,"scroll",function(){i(t)})}var o=t("../instances"),i=t("../update-geometry");e.exports=function(t){var e=o.get(t);r(t,e)}},{"../instances":18,"../update-geometry":19}],15:[function(t,e,n){"use strict";function r(t,e){function n(){var t=window.getSelection?window.getSelection():document.getSelection?document.getSelection():"";return 0===t.toString().length?null:t.getRangeAt(0).commonAncestorContainer}function r(){c||(c=setInterval(function(){return i.get(t)?(s(t,"top",t.scrollTop+u.top),s(t,"left",t.scrollLeft+u.left),void l(t)):void clearInterval(c)},50))}function a(){c&&(clearInterval(c),c=null),o.stopScrolling(t)}var c=null,u={top:0,left:0},d=!1;e.event.bind(e.ownerDocument,"selectionchange",function(){t.contains(n())?d=!0:(d=!1,a())}),e.event.bind(window,"mouseup",function(){d&&(d=!1,a())}),e.event.bind(window,"mousemove",function(e){if(d){var n={x:e.pageX,y:e.pageY},i={left:t.offsetLeft,right:t.offsetLeft+t.offsetWidth,top:t.offsetTop,bottom:t.offsetTop+t.offsetHeight};n.x<i.left+3?(u.left=-5,o.startScrolling(t,"x")):n.x>i.right-3?(u.left=5,o.startScrolling(t,"x")):u.left=0,n.y<i.top+3?(i.top+3-n.y<5?u.top=-5:u.top=-20,o.startScrolling(t,"y")):n.y>i.bottom-3?(n.y-i.bottom+3<5?u.top=5:u.top=20,o.startScrolling(t,"y")):u.top=0,0===u.top&&0===u.left?a():r()}})}var o=t("../../lib/helper"),i=t("../instances"),l=t("../update-geometry"),s=t("../update-scroll");e.exports=function(t){var e=i.get(t);r(t,e)}},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],16:[function(t,e,n){"use strict";function r(t,e,n,r){function s(n,r){var o=t.scrollTop,i=t.scrollLeft,l=Math.abs(n),s=Math.abs(r);if(s>l){if(0>r&&o===e.contentHeight-e.containerHeight||r>0&&0===o)return!e.settings.swipePropagation}else if(l>s&&(0>n&&i===e.contentWidth-e.containerWidth||n>0&&0===i))return!e.settings.swipePropagation;return!0}function a(e,n){l(t,"top",t.scrollTop-n),l(t,"left",t.scrollLeft-e),i(t)}function c(){Y=!0}function u(){Y=!1}function d(t){return t.targetTouches?t.targetTouches[0]:t}function p(t){return t.targetTouches&&1===t.targetTouches.length?!0:t.pointerType&&"mouse"!==t.pointerType&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE?!0:!1}function f(t){if(p(t)){w=!0;var e=d(t);b.pageX=e.pageX,b.pageY=e.pageY,g=(new Date).getTime(),null!==y&&clearInterval(y),t.stopPropagation()}}function h(t){if(!Y&&w&&p(t)){var e=d(t),n={pageX:e.pageX,pageY:e.pageY},r=n.pageX-b.pageX,o=n.pageY-b.pageY;a(r,o),b=n;var i=(new Date).getTime(),l=i-g;l>0&&(m.x=r/l,m.y=o/l,g=i),s(r,o)&&(t.stopPropagation(),t.preventDefault())}}function v(){!Y&&w&&(w=!1,clearInterval(y),y=setInterval(function(){return o.get(t)?Math.abs(m.x)<.01&&Math.abs(m.y)<.01?void clearInterval(y):(a(30*m.x,30*m.y),m.x*=.8,void(m.y*=.8)):void clearInterval(y)},10))}var b={},g=0,m={},y=null,Y=!1,w=!1;n&&(e.event.bind(window,"touchstart",c),e.event.bind(window,"touchend",u),e.event.bind(t,"touchstart",f),e.event.bind(t,"touchmove",h),e.event.bind(t,"touchend",v)),r&&(window.PointerEvent?(e.event.bind(window,"pointerdown",c),e.event.bind(window,"pointerup",u),e.event.bind(t,"pointerdown",f),e.event.bind(t,"pointermove",h),e.event.bind(t,"pointerup",v)):window.MSPointerEvent&&(e.event.bind(window,"MSPointerDown",c),e.event.bind(window,"MSPointerUp",u),e.event.bind(t,"MSPointerDown",f),e.event.bind(t,"MSPointerMove",h),e.event.bind(t,"MSPointerUp",v)))}var o=t("../instances"),i=t("../update-geometry"),l=t("../update-scroll");e.exports=function(t,e,n){var i=o.get(t);r(t,i,e,n)}},{"../instances":18,"../update-geometry":19,"../update-scroll":20}],17:[function(t,e,n){"use strict";var r=t("../lib/class"),o=t("../lib/helper"),i=t("./instances"),l=t("./update-geometry"),s=t("./handler/click-rail"),a=t("./handler/drag-scrollbar"),c=t("./handler/keyboard"),u=t("./handler/mouse-wheel"),d=t("./handler/native-scroll"),p=t("./handler/selection"),f=t("./handler/touch");e.exports=function(t,e){e="object"==typeof e?e:{},r.add(t,"ps-container");var n=i.add(t);n.settings=o.extend(n.settings,e),s(t),a(t),u(t),d(t),n.settings.useSelectionScroll&&p(t),(o.env.supportsTouch||o.env.supportsIePointer)&&f(t,o.env.supportsTouch,o.env.supportsIePointer),n.settings.useKeyboard&&c(t),l(t)}},{"../lib/class":2,"../lib/helper":6,"./handler/click-rail":10,"./handler/drag-scrollbar":11,"./handler/keyboard":12,"./handler/mouse-wheel":13,"./handler/native-scroll":14,"./handler/selection":15,"./handler/touch":16,"./instances":18,"./update-geometry":19}],18:[function(t,e,n){"use strict";function r(t){var e=this;e.settings=d.clone(a),e.containerWidth=null,e.containerHeight=null,e.contentWidth=null,e.contentHeight=null,e.isRtl="rtl"===s.css(t,"direction"),e.isNegativeScroll=function(){var e=t.scrollLeft,n=null;return t.scrollLeft=-1,n=t.scrollLeft<0,t.scrollLeft=e,n}(),e.negativeScrollAdjustment=e.isNegativeScroll?t.scrollWidth-t.clientWidth:0,e.event=new c,e.ownerDocument=t.ownerDocument||document,e.scrollbarXRail=s.appendTo(s.e("div","ps-scrollbar-x-rail"),t),e.scrollbarX=s.appendTo(s.e("div","ps-scrollbar-x"),e.scrollbarXRail),e.scrollbarXActive=null,e.scrollbarXWidth=null,e.scrollbarXLeft=null,e.scrollbarXBottom=d.toInt(s.css(e.scrollbarXRail,"bottom")),e.isScrollbarXUsingBottom=e.scrollbarXBottom===e.scrollbarXBottom,e.scrollbarXTop=e.isScrollbarXUsingBottom?null:d.toInt(s.css(e.scrollbarXRail,"top")),e.railBorderXWidth=d.toInt(s.css(e.scrollbarXRail,"borderLeftWidth"))+d.toInt(s.css(e.scrollbarXRail,"borderRightWidth")),s.css(e.scrollbarXRail,"display","block"),e.railXMarginWidth=d.toInt(s.css(e.scrollbarXRail,"marginLeft"))+d.toInt(s.css(e.scrollbarXRail,"marginRight")),s.css(e.scrollbarXRail,"display",""),e.railXWidth=null,e.railXRatio=null,e.scrollbarYRail=s.appendTo(s.e("div","ps-scrollbar-y-rail"),t),e.scrollbarY=s.appendTo(s.e("div","ps-scrollbar-y"),e.scrollbarYRail),e.scrollbarYActive=null,e.scrollbarYHeight=null,e.scrollbarYTop=null,e.scrollbarYRight=d.toInt(s.css(e.scrollbarYRail,"right")),e.isScrollbarYUsingRight=e.scrollbarYRight===e.scrollbarYRight,e.scrollbarYLeft=e.isScrollbarYUsingRight?null:d.toInt(s.css(e.scrollbarYRail,"left")),e.scrollbarYOuterWidth=e.isRtl?d.outerWidth(e.scrollbarY):null,e.railBorderYWidth=d.toInt(s.css(e.scrollbarYRail,"borderTopWidth"))+d.toInt(s.css(e.scrollbarYRail,"borderBottomWidth")),s.css(e.scrollbarYRail,"display","block"),e.railYMarginHeight=d.toInt(s.css(e.scrollbarYRail,"marginTop"))+d.toInt(s.css(e.scrollbarYRail,"marginBottom")),s.css(e.scrollbarYRail,"display",""),e.railYHeight=null,e.railYRatio=null}function o(t){return"undefined"==typeof t.dataset?t.getAttribute("data-ps-id"):t.dataset.psId}function i(t,e){"undefined"==typeof t.dataset?t.setAttribute("data-ps-id",e):t.dataset.psId=e}function l(t){"undefined"==typeof t.dataset?t.removeAttribute("data-ps-id"):delete t.dataset.psId}var s=t("../lib/dom"),a=t("./default-setting"),c=t("../lib/event-manager"),u=t("../lib/guid"),d=t("../lib/helper"),p={};n.add=function(t){var e=u();return i(t,e),p[e]=new r(t),p[e]},n.remove=function(t){delete p[o(t)],l(t)},n.get=function(t){return p[o(t)]}},{"../lib/dom":3,"../lib/event-manager":4,"../lib/guid":5,"../lib/helper":6,"./default-setting":8}],19:[function(t,e,n){"use strict";function r(t,e){return t.settings.minScrollbarLength&&(e=Math.max(e,t.settings.minScrollbarLength)),t.settings.maxScrollbarLength&&(e=Math.min(e,t.settings.maxScrollbarLength)),e}function o(t,e){var n={width:e.railXWidth};e.isRtl?n.left=e.negativeScrollAdjustment+t.scrollLeft+e.containerWidth-e.contentWidth:n.left=t.scrollLeft,e.isScrollbarXUsingBottom?n.bottom=e.scrollbarXBottom-t.scrollTop:n.top=e.scrollbarXTop+t.scrollTop,l.css(e.scrollbarXRail,n);var r={top:t.scrollTop,height:e.railYHeight};e.isScrollbarYUsingRight?e.isRtl?r.right=e.contentWidth-(e.negativeScrollAdjustment+t.scrollLeft)-e.scrollbarYRight-e.scrollbarYOuterWidth:r.right=e.scrollbarYRight-t.scrollLeft:e.isRtl?r.left=e.negativeScrollAdjustment+t.scrollLeft+2*e.containerWidth-e.contentWidth-e.scrollbarYLeft-e.scrollbarYOuterWidth:r.left=e.scrollbarYLeft+t.scrollLeft,l.css(e.scrollbarYRail,r),l.css(e.scrollbarX,{left:e.scrollbarXLeft,width:e.scrollbarXWidth-e.railBorderXWidth}),l.css(e.scrollbarY,{top:e.scrollbarYTop,height:e.scrollbarYHeight-e.railBorderYWidth})}var i=t("../lib/class"),l=t("../lib/dom"),s=t("../lib/helper"),a=t("./instances"),c=t("./update-scroll");e.exports=function(t){var e=a.get(t);e.containerWidth=t.clientWidth,e.containerHeight=t.clientHeight,e.contentWidth=t.scrollWidth,e.contentHeight=t.scrollHeight;var n;t.contains(e.scrollbarXRail)||(n=l.queryChildren(t,".ps-scrollbar-x-rail"),n.length>0&&n.forEach(function(t){l.remove(t)}),l.appendTo(e.scrollbarXRail,t)),t.contains(e.scrollbarYRail)||(n=l.queryChildren(t,".ps-scrollbar-y-rail"),n.length>0&&n.forEach(function(t){l.remove(t)}),l.appendTo(e.scrollbarYRail,t)),!e.settings.suppressScrollX&&e.containerWidth+e.settings.scrollXMarginOffset<e.contentWidth?(e.scrollbarXActive=!0,e.railXWidth=e.containerWidth-e.railXMarginWidth,e.railXRatio=e.containerWidth/e.railXWidth,e.scrollbarXWidth=r(e,s.toInt(e.railXWidth*e.containerWidth/e.contentWidth)),e.scrollbarXLeft=s.toInt((e.negativeScrollAdjustment+t.scrollLeft)*(e.railXWidth-e.scrollbarXWidth)/(e.contentWidth-e.containerWidth))):(e.scrollbarXActive=!1,e.scrollbarXWidth=0,e.scrollbarXLeft=0,t.scrollLeft=0),!e.settings.suppressScrollY&&e.containerHeight+e.settings.scrollYMarginOffset<e.contentHeight?(e.scrollbarYActive=!0,e.railYHeight=e.containerHeight-e.railYMarginHeight,e.railYRatio=e.containerHeight/e.railYHeight,e.scrollbarYHeight=r(e,s.toInt(e.railYHeight*e.containerHeight/e.contentHeight)),e.scrollbarYTop=s.toInt(t.scrollTop*(e.railYHeight-e.scrollbarYHeight)/(e.contentHeight-e.containerHeight))):(e.scrollbarYActive=!1,e.scrollbarYHeight=0,e.scrollbarYTop=0,c(t,"top",0)),e.scrollbarXLeft>=e.railXWidth-e.scrollbarXWidth&&(e.scrollbarXLeft=e.railXWidth-e.scrollbarXWidth),e.scrollbarYTop>=e.railYHeight-e.scrollbarYHeight&&(e.scrollbarYTop=e.railYHeight-e.scrollbarYHeight),o(t,e),i[e.scrollbarXActive?"add":"remove"](t,"ps-active-x"),i[e.scrollbarYActive?"add":"remove"](t,"ps-active-y")}},{"../lib/class":2,"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-scroll":20}],20:[function(t,e,n){"use strict";var r,o,i=t("./instances"),l=document.createEvent("Event"),s=document.createEvent("Event"),a=document.createEvent("Event"),c=document.createEvent("Event"),u=document.createEvent("Event"),d=document.createEvent("Event"),p=document.createEvent("Event"),f=document.createEvent("Event"),h=document.createEvent("Event"),v=document.createEvent("Event");l.initEvent("ps-scroll-up",!0,!0),s.initEvent("ps-scroll-down",!0,!0),a.initEvent("ps-scroll-left",!0,!0),c.initEvent("ps-scroll-right",!0,!0),u.initEvent("ps-scroll-y",!0,!0),d.initEvent("ps-scroll-x",!0,!0),p.initEvent("ps-x-reach-start",!0,!0),f.initEvent("ps-x-reach-end",!0,!0),h.initEvent("ps-y-reach-start",!0,!0),v.initEvent("ps-y-reach-end",!0,!0),e.exports=function(t,e,n){if("undefined"==typeof t)throw"You must provide an element to the update-scroll function";if("undefined"==typeof e)throw"You must provide an axis to the update-scroll function";if("undefined"==typeof n)throw"You must provide a value to the update-scroll function";if("top"===e&&0>=n)return t.scrollTop=0,void t.dispatchEvent(h);if("left"===e&&0>=n)return t.scrollLeft=0,void t.dispatchEvent(p);var b=i.get(t);return"top"===e&&n>b.contentHeight-b.containerHeight?(t.scrollTop=b.contentHeight-b.containerHeight,void t.dispatchEvent(v)):"left"===e&&n>b.contentWidth-b.containerWidth?(t.scrollLeft=b.contentWidth-b.containerWidth,void t.dispatchEvent(f)):(r||(r=t.scrollTop),o||(o=t.scrollLeft),"top"===e&&r>n&&t.dispatchEvent(l),"top"===e&&n>r&&t.dispatchEvent(s),"left"===e&&o>n&&t.dispatchEvent(a),"left"===e&&n>o&&t.dispatchEvent(c),"top"===e&&(t.scrollTop=r=n,t.dispatchEvent(u)),void("left"===e&&(t.scrollLeft=o=n,t.dispatchEvent(d))))}},{"./instances":18}],21:[function(t,e,n){"use strict";var r=t("../lib/dom"),o=t("../lib/helper"),i=t("./instances"),l=t("./update-geometry");e.exports=function(t){var e=i.get(t);e&&(e.negativeScrollAdjustment=e.isNegativeScroll?t.scrollWidth-t.clientWidth:0,r.css(e.scrollbarXRail,"display","block"),r.css(e.scrollbarYRail,"display","block"),e.railXMarginWidth=o.toInt(r.css(e.scrollbarXRail,"marginLeft"))+o.toInt(r.css(e.scrollbarXRail,"marginRight")),e.railYMarginHeight=o.toInt(r.css(e.scrollbarYRail,"marginTop"))+o.toInt(r.css(e.scrollbarYRail,"marginBottom")),r.css(e.scrollbarXRail,"display","none"),r.css(e.scrollbarYRail,"display","none"),l(t),r.css(e.scrollbarXRail,"display",""),r.css(e.scrollbarYRail,"display",""))}},{"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-geometry":19}]},{},[1]);
|
assets/admin/js/lib/tipsy.min.js
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
// (c) 2008-2010 jason frame [jason@onehackoranother.com]
|
2 |
+
// released under the MIT license
|
3 |
+
!function(t){function i(t,i){return"function"==typeof t?t.call(i):t}function e(t){for(;t=t.parentNode;)if(t==document)return!0;return!1}function s(i,e){this.$element=t(i),this.options=e,this.enabled=!0,this.fixTitle()}s.prototype={show:function(){var e=this.getTitle();if(e&&this.enabled){var s=this.tip();s.find(".tipsy-inner")[this.options.html?"html":"text"](e),s[0].className="tipsy",s.remove().css({top:0,left:0,visibility:"hidden",display:"block"}).prependTo(document.body);var n,o=t.extend({},this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight}),l=s[0].offsetWidth,a=s[0].offsetHeight,f=i(this.options.gravity,this.$element[0]);switch(f.charAt(0)){case"n":n={top:o.top+o.height+this.options.offset,left:o.left+o.width/2-l/2};break;case"s":n={top:o.top-a-this.options.offset,left:o.left+o.width/2-l/2};break;case"e":n={top:o.top+o.height/2-a/2,left:o.left-l-this.options.offset};break;case"w":n={top:o.top+o.height/2-a/2,left:o.left+o.width+this.options.offset}}2==f.length&&("w"==f.charAt(1)?n.left=o.left+o.width/2-15:n.left=o.left+o.width/2-l+15),s.css(n).addClass("tipsy-"+f),s.find(".tipsy-arrow")[0].className="tipsy-arrow tipsy-arrow-"+f.charAt(0),this.options.className&&s.addClass(i(this.options.className,this.$element[0])),this.options.fade?s.stop().css({opacity:0,display:"block",visibility:"visible"}).animate({opacity:this.options.opacity}):s.css({visibility:"visible",opacity:this.options.opacity})}},hide:function(){this.options.fade?this.tip().stop().fadeOut(function(){t(this).remove()}):this.tip().remove()},fixTitle:function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("original-title"))&&t.attr("original-title",t.attr("title")||"").removeAttr("title")},getTitle:function(){var t,i=this.$element,e=this.options;this.fixTitle();var t,e=this.options;return"string"==typeof e.title?t=i.attr("title"==e.title?"original-title":e.title):"function"==typeof e.title&&(t=e.title.call(i[0])),t=(""+t).replace(/(^\s*|\s*$)/,""),t||e.fallback},tip:function(){return this.$tip||(this.$tip=t('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>'),this.$tip.data("tipsy-pointee",this.$element[0])),this.$tip},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled}},t.fn.tipsy=function(i){function e(e){var n=t.data(e,"tipsy");return n||(n=new s(e,t.fn.tipsy.elementOptions(e,i)),t.data(e,"tipsy",n)),n}function n(){var t=e(this);t.hoverState="in",0==i.delayIn?t.show():(t.fixTitle(),setTimeout(function(){"in"==t.hoverState&&t.show()},i.delayIn))}function o(){var t=e(this);t.hoverState="out",0==i.delayOut?t.hide():setTimeout(function(){"out"==t.hoverState&&t.hide()},i.delayOut)}if(i===!0)return this.data("tipsy");if("string"==typeof i){var l=this.data("tipsy");return l&&l[i](),this}if(i=t.extend({},t.fn.tipsy.defaults,i),i.live||this.each(function(){e(this)}),"manual"!=i.trigger){var a=i.live?"live":"bind",f="hover"==i.trigger?"mouseenter":"focus",h="hover"==i.trigger?"mouseleave":"blur";this[a](f,n)[a](h,o)}return this},t.fn.tipsy.defaults={className:null,delayIn:0,delayOut:0,fade:!1,fallback:"",gravity:"n",html:!1,live:!1,offset:0,opacity:.8,title:"title",trigger:"hover"},t.fn.tipsy.revalidate=function(){t(".tipsy").each(function(){var i=t.data(this,"tipsy-pointee");i&&e(i)||t(this).remove()})},t.fn.tipsy.elementOptions=function(i,e){return t.metadata?t.extend({},e,t(i).metadata()):e},t.fn.tipsy.autoNS=function(){return t(this).offset().top>t(document).scrollTop()+t(window).height()/2?"s":"n"},t.fn.tipsy.autoWE=function(){return t(this).offset().left>t(document).scrollLeft()+t(window).width()/2?"e":"w"},t.fn.tipsy.autoBounds=function(i,e){return function(){var s={ns:e[0],ew:e.length>1?e[1]:!1},n=t(document).scrollTop()+i,o=t(document).scrollLeft()+i,l=t(this);return l.offset().top<n&&(s.ns="n"),l.offset().left<o&&(s.ew="w"),t(window).width()+t(document).scrollLeft()-l.offset().left<i&&(s.ew="e"),t(window).height()+t(document).scrollTop()-l.offset().top<i&&(s.ns="s"),s.ns+(s.ew?s.ew:"")}}}(jQuery);
|
assets/admin/js/lib/waypoints-for-editor.js
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function( $ ) {
|
2 |
+
$.fn.waypoint = function(callback) {
|
3 |
+
if ( typeof callback === 'function' ) {
|
4 |
+
callback.call( this );
|
5 |
+
}
|
6 |
+
};
|
7 |
+
})( jQuery );
|
assets/admin/js/lib/waypoints.js
ADDED
@@ -0,0 +1,520 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Generated by CoffeeScript 1.6.2
|
2 |
+
/*
|
3 |
+
jQuery Waypoints - v2.0.2
|
4 |
+
Copyright (c) 2011-2013 Caleb Troughton
|
5 |
+
Dual licensed under the MIT license and GPL license.
|
6 |
+
https://github.com/imakewebthings/jquery-waypoints/blob/master/licenses.txt
|
7 |
+
*/
|
8 |
+
|
9 |
+
|
10 |
+
(function() {
|
11 |
+
var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
|
12 |
+
__slice = [].slice;
|
13 |
+
|
14 |
+
(function(root, factory) {
|
15 |
+
if (typeof define === 'function' && define.amd) {
|
16 |
+
return define('waypoints', ['jquery'], function($) {
|
17 |
+
return factory($, root);
|
18 |
+
});
|
19 |
+
} else {
|
20 |
+
return factory(root.jQuery, root);
|
21 |
+
}
|
22 |
+
})(this, function($, window) {
|
23 |
+
var $w, Context, Waypoint, allWaypoints, contextCounter, contextKey, contexts, isTouch, jQMethods, methods, resizeEvent, scrollEvent, waypointCounter, waypointKey, wp, wps;
|
24 |
+
|
25 |
+
$w = $(window);
|
26 |
+
isTouch = __indexOf.call(window, 'ontouchstart') >= 0;
|
27 |
+
allWaypoints = {
|
28 |
+
horizontal: {},
|
29 |
+
vertical: {}
|
30 |
+
};
|
31 |
+
contextCounter = 1;
|
32 |
+
contexts = {};
|
33 |
+
contextKey = 'waypoints-context-id';
|
34 |
+
resizeEvent = 'resize.waypoints';
|
35 |
+
scrollEvent = 'scroll.waypoints';
|
36 |
+
waypointCounter = 1;
|
37 |
+
waypointKey = 'waypoints-waypoint-ids';
|
38 |
+
wp = 'waypoint';
|
39 |
+
wps = 'waypoints';
|
40 |
+
Context = (function() {
|
41 |
+
function Context($element) {
|
42 |
+
var _this = this;
|
43 |
+
|
44 |
+
this.$element = $element;
|
45 |
+
this.element = $element[0];
|
46 |
+
this.didResize = false;
|
47 |
+
this.didScroll = false;
|
48 |
+
this.id = 'context' + contextCounter++;
|
49 |
+
this.oldScroll = {
|
50 |
+
x: $element.scrollLeft(),
|
51 |
+
y: $element.scrollTop()
|
52 |
+
};
|
53 |
+
this.waypoints = {
|
54 |
+
horizontal: {},
|
55 |
+
vertical: {}
|
56 |
+
};
|
57 |
+
$element.data(contextKey, this.id);
|
58 |
+
contexts[this.id] = this;
|
59 |
+
$element.bind(scrollEvent, function() {
|
60 |
+
var scrollHandler;
|
61 |
+
|
62 |
+
if (!(_this.didScroll || isTouch)) {
|
63 |
+
_this.didScroll = true;
|
64 |
+
scrollHandler = function() {
|
65 |
+
_this.doScroll();
|
66 |
+
return _this.didScroll = false;
|
67 |
+
};
|
68 |
+
return window.setTimeout(scrollHandler, $[wps].settings.scrollThrottle);
|
69 |
+
}
|
70 |
+
});
|
71 |
+
$element.bind(resizeEvent, function() {
|
72 |
+
var resizeHandler;
|
73 |
+
|
74 |
+
if (!_this.didResize) {
|
75 |
+
_this.didResize = true;
|
76 |
+
resizeHandler = function() {
|
77 |
+
$[wps]('refresh');
|
78 |
+
return _this.didResize = false;
|
79 |
+
};
|
80 |
+
return window.setTimeout(resizeHandler, $[wps].settings.resizeThrottle);
|
81 |
+
}
|
82 |
+
});
|
83 |
+
}
|
84 |
+
|
85 |
+
Context.prototype.doScroll = function() {
|
86 |
+
var axes,
|
87 |
+
_this = this;
|
88 |
+
|
89 |
+
axes = {
|
90 |
+
horizontal: {
|
91 |
+
newScroll: this.$element.scrollLeft(),
|
92 |
+
oldScroll: this.oldScroll.x,
|
93 |
+
forward: 'right',
|
94 |
+
backward: 'left'
|
95 |
+
},
|
96 |
+
vertical: {
|
97 |
+
newScroll: this.$element.scrollTop(),
|
98 |
+
oldScroll: this.oldScroll.y,
|
99 |
+
forward: 'down',
|
100 |
+
backward: 'up'
|
101 |
+
}
|
102 |
+
};
|
103 |
+
if (isTouch && (!axes.vertical.oldScroll || !axes.vertical.newScroll)) {
|
104 |
+
$[wps]('refresh');
|
105 |
+
}
|
106 |
+
$.each(axes, function(aKey, axis) {
|
107 |
+
var direction, isForward, triggered;
|
108 |
+
|
109 |
+
triggered = [];
|
110 |
+
isForward = axis.newScroll > axis.oldScroll;
|
111 |
+
direction = isForward ? axis.forward : axis.backward;
|
112 |
+
$.each(_this.waypoints[aKey], function(wKey, waypoint) {
|
113 |
+
var _ref, _ref1;
|
114 |
+
|
115 |
+
if ((axis.oldScroll < (_ref = waypoint.offset) && _ref <= axis.newScroll)) {
|
116 |
+
return triggered.push(waypoint);
|
117 |
+
} else if ((axis.newScroll < (_ref1 = waypoint.offset) && _ref1 <= axis.oldScroll)) {
|
118 |
+
return triggered.push(waypoint);
|
119 |
+
}
|
120 |
+
});
|
121 |
+
triggered.sort(function(a, b) {
|
122 |
+
return a.offset - b.offset;
|
123 |
+
});
|
124 |
+
if (!isForward) {
|
125 |
+
triggered.reverse();
|
126 |
+
}
|
127 |
+
return $.each(triggered, function(i, waypoint) {
|
128 |
+
if (waypoint.options.continuous || i === triggered.length - 1) {
|
129 |
+
return waypoint.trigger([direction]);
|
130 |
+
}
|
131 |
+
});
|
132 |
+
});
|
133 |
+
return this.oldScroll = {
|
134 |
+
x: axes.horizontal.newScroll,
|
135 |
+
y: axes.vertical.newScroll
|
136 |
+
};
|
137 |
+
};
|
138 |
+
|
139 |
+
Context.prototype.refresh = function() {
|
140 |
+
var axes, cOffset, isWin,
|
141 |
+
_this = this;
|
142 |
+
|
143 |
+
isWin = $.isWindow(this.element);
|
144 |
+
cOffset = this.$element.offset();
|
145 |
+
this.doScroll();
|
146 |
+
axes = {
|
147 |
+
horizontal: {
|
148 |
+
contextOffset: isWin ? 0 : cOffset.left,
|
149 |
+
contextScroll: isWin ? 0 : this.oldScroll.x,
|
150 |
+
contextDimension: this.$element.width(),
|
151 |
+
oldScroll: this.oldScroll.x,
|
152 |
+
forward: 'right',
|
153 |
+
backward: 'left',
|
154 |
+
offsetProp: 'left'
|
155 |
+
},
|
156 |
+
vertical: {
|
157 |
+
contextOffset: isWin ? 0 : cOffset.top,
|
158 |
+
contextScroll: isWin ? 0 : this.oldScroll.y,
|
159 |
+
contextDimension: isWin ? $[wps]('viewportHeight') : this.$element.height(),
|
160 |
+
oldScroll: this.oldScroll.y,
|
161 |
+
forward: 'down',
|
162 |
+
backward: 'up',
|
163 |
+
offsetProp: 'top'
|
164 |
+
}
|
165 |
+
};
|
166 |
+
return $.each(axes, function(aKey, axis) {
|
167 |
+
return $.each(_this.waypoints[aKey], function(i, waypoint) {
|
168 |
+
var adjustment, elementOffset, oldOffset, _ref, _ref1;
|
169 |
+
|
170 |
+
adjustment = waypoint.options.offset;
|
171 |
+
oldOffset = waypoint.offset;
|
172 |
+
elementOffset = $.isWindow(waypoint.element) ? 0 : waypoint.$element.offset()[axis.offsetProp];
|
173 |
+
if ($.isFunction(adjustment)) {
|
174 |
+
adjustment = adjustment.apply(waypoint.element);
|
175 |
+
} else if (typeof adjustment === 'string') {
|
176 |
+
adjustment = parseFloat(adjustment);
|
177 |
+
if (waypoint.options.offset.indexOf('%') > -1) {
|
178 |
+
adjustment = Math.ceil(axis.contextDimension * adjustment / 100);
|
179 |
+
}
|
180 |
+
}
|
181 |
+
waypoint.offset = elementOffset - axis.contextOffset + axis.contextScroll - adjustment;
|
182 |
+
if ((waypoint.options.onlyOnScroll && (oldOffset != null)) || !waypoint.enabled) {
|
183 |
+
return;
|
184 |
+
}
|
185 |
+
if (oldOffset !== null && (oldOffset < (_ref = axis.oldScroll) && _ref <= waypoint.offset)) {
|
186 |
+
return waypoint.trigger([axis.backward]);
|
187 |
+
} else if (oldOffset !== null && (oldOffset > (_ref1 = axis.oldScroll) && _ref1 >= waypoint.offset)) {
|
188 |
+
return waypoint.trigger([axis.forward]);
|
189 |
+
} else if (oldOffset === null && axis.oldScroll >= waypoint.offset) {
|
190 |
+
return waypoint.trigger([axis.forward]);
|
191 |
+
}
|
192 |
+
});
|
193 |
+
});
|
194 |
+
};
|
195 |
+
|
196 |
+
Context.prototype.checkEmpty = function() {
|
197 |
+
if ($.isEmptyObject(this.waypoints.horizontal) && $.isEmptyObject(this.waypoints.vertical)) {
|
198 |
+
this.$element.unbind([resizeEvent, scrollEvent].join(' '));
|
199 |
+
return delete contexts[this.id];
|
200 |
+
}
|
201 |
+
};
|
202 |
+
|
203 |
+
return Context;
|
204 |
+
|
205 |
+
})();
|
206 |
+
Waypoint = (function() {
|
207 |
+
function Waypoint($element, context, options) {
|
208 |
+
var idList, _ref;
|
209 |
+
|
210 |
+
options = $.extend({}, $.fn[wp].defaults, options);
|
211 |
+
if (options.offset === 'bottom-in-view') {
|
212 |
+
options.offset = function() {
|
213 |
+
var contextHeight;
|
214 |
+
|
215 |
+
contextHeight = $[wps]('viewportHeight');
|
216 |
+
if (!$.isWindow(context.element)) {
|
217 |
+
contextHeight = context.$element.height();
|
218 |
+
}
|
219 |
+
return contextHeight - $(this).outerHeight();
|
220 |
+
};
|
221 |
+
}
|
222 |
+
this.$element = $element;
|
223 |
+
this.element = $element[0];
|
224 |
+
this.axis = options.horizontal ? 'horizontal' : 'vertical';
|
225 |
+
this.callback = options.handler;
|
226 |
+
this.context = context;
|
227 |
+
this.enabled = options.enabled;
|
228 |
+
this.id = 'waypoints' + waypointCounter++;
|
229 |
+
this.offset = null;
|
230 |
+
this.options = options;
|
231 |
+
context.waypoints[this.axis][this.id] = this;
|
232 |
+
allWaypoints[this.axis][this.id] = this;
|
233 |
+
idList = (_ref = $element.data(waypointKey)) != null ? _ref : [];
|
234 |
+
idList.push(this.id);
|
235 |
+
$element.data(waypointKey, idList);
|
236 |
+
}
|
237 |
+
|
238 |
+
Waypoint.prototype.trigger = function(args) {
|
239 |
+
if (!this.enabled) {
|
240 |
+
return;
|
241 |
+
}
|
242 |
+
if (this.callback != null) {
|
243 |
+
this.callback.apply(this.element, args);
|
244 |
+
}
|
245 |
+
if (this.options.triggerOnce) {
|
246 |
+
return this.destroy();
|
247 |
+
}
|
248 |
+
};
|
249 |
+
|
250 |
+
Waypoint.prototype.disable = function() {
|
251 |
+
return this.enabled = false;
|
252 |
+
};
|
253 |
+
|
254 |
+
Waypoint.prototype.enable = function() {
|
255 |
+
this.context.refresh();
|
256 |
+
return this.enabled = true;
|
257 |
+
};
|
258 |
+
|
259 |
+
Waypoint.prototype.destroy = function() {
|
260 |
+
delete allWaypoints[this.axis][this.id];
|
261 |
+
delete this.context.waypoints[this.axis][this.id];
|
262 |
+
return this.context.checkEmpty();
|
263 |
+
};
|
264 |
+
|
265 |
+
Waypoint.getWaypointsByElement = function(element) {
|
266 |
+
var all, ids;
|
267 |
+
|
268 |
+
ids = $(element).data(waypointKey);
|
269 |
+
if (!ids) {
|
270 |
+
return [];
|
271 |
+
}
|
272 |
+
all = $.extend({}, allWaypoints.horizontal, allWaypoints.vertical);
|
273 |
+
return $.map(ids, function(id) {
|
274 |
+
return all[id];
|
275 |
+
});
|
276 |
+
};
|
277 |
+
|
278 |
+
return Waypoint;
|
279 |
+
|
280 |
+
})();
|
281 |
+
methods = {
|
282 |
+
init: function(f, options) {
|
283 |
+
var _ref;
|
284 |
+
|
285 |
+
if (options == null) {
|
286 |
+
options = {};
|
287 |
+
}
|
288 |
+
if ((_ref = options.handler) == null) {
|
289 |
+
options.handler = f;
|
290 |
+
}
|
291 |
+
this.each(function() {
|
292 |
+
var $this, context, contextElement, _ref1;
|
293 |
+
|
294 |
+
$this = $(this);
|
295 |
+
contextElement = (_ref1 = options.context) != null ? _ref1 : $.fn[wp].defaults.context;
|
296 |
+
if (!$.isWindow(contextElement)) {
|
297 |
+
contextElement = $this.closest(contextElement);
|
298 |
+
}
|
299 |
+
contextElement = $(contextElement);
|
300 |
+
context = contexts[contextElement.data(contextKey)];
|
301 |
+
if (!context) {
|
302 |
+
context = new Context(contextElement);
|
303 |
+
}
|
304 |
+
return new Waypoint($this, context, options);
|
305 |
+
});
|
306 |
+
$[wps]('refresh');
|
307 |
+
return this;
|
308 |
+
},
|
309 |
+
disable: function() {
|
310 |
+
return methods._invoke(this, 'disable');
|
311 |
+
},
|
312 |
+
enable: function() {
|
313 |
+
return methods._invoke(this, 'enable');
|
314 |
+
},
|
315 |
+
destroy: function() {
|
316 |
+
return methods._invoke(this, 'destroy');
|
317 |
+
},
|
318 |
+
prev: function(axis, selector) {
|
319 |
+
return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) {
|
320 |
+
if (index > 0) {
|
321 |
+
return stack.push(waypoints[index - 1]);
|
322 |
+
}
|
323 |
+
});
|
324 |
+
},
|
325 |
+
next: function(axis, selector) {
|
326 |
+
return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) {
|
327 |
+
if (index < waypoints.length - 1) {
|
328 |
+
return stack.push(waypoints[index + 1]);
|
329 |
+
}
|
330 |
+
});
|
331 |
+
},
|
332 |
+
_traverse: function(axis, selector, push) {
|
333 |
+
var stack, waypoints;
|
334 |
+
|
335 |
+
if (axis == null) {
|
336 |
+
axis = 'vertical';
|
337 |
+
}
|
338 |
+
if (selector == null) {
|
339 |
+
selector = window;
|
340 |
+
}
|
341 |
+
waypoints = jQMethods.aggregate(selector);
|
342 |
+
stack = [];
|
343 |
+
this.each(function() {
|
344 |
+
var index;
|
345 |
+
|
346 |
+
index = $.inArray(this, waypoints[axis]);
|
347 |
+
return push(stack, index, waypoints[axis]);
|
348 |
+
});
|
349 |
+
return this.pushStack(stack);
|
350 |
+
},
|
351 |
+
_invoke: function($elements, method) {
|
352 |
+
$elements.each(function() {
|
353 |
+
var waypoints;
|
354 |
+
|
355 |
+
waypoints = Waypoint.getWaypointsByElement(this);
|
356 |
+
return $.each(waypoints, function(i, waypoint) {
|
357 |
+
waypoint[method]();
|
358 |
+
return true;
|
359 |
+
});
|
360 |
+
});
|
361 |
+
return this;
|
362 |
+
}
|
363 |
+
};
|
364 |
+
$.fn[wp] = function() {
|
365 |
+
var args, method;
|
366 |
+
|
367 |
+
method = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
368 |
+
if (methods[method]) {
|
369 |
+
return methods[method].apply(this, args);
|
370 |
+
} else if ($.isFunction(method)) {
|
371 |
+
return methods.init.apply(this, arguments);
|
372 |
+
} else if ($.isPlainObject(method)) {
|
373 |
+
return methods.init.apply(this, [null, method]);
|
374 |
+
} else if (!method) {
|
375 |
+
return $.error("jQuery Waypoints needs a callback function or handler option.");
|
376 |
+
} else {
|
377 |
+
return $.error("The " + method + " method does not exist in jQuery Waypoints.");
|
378 |
+
}
|
379 |
+
};
|
380 |
+
$.fn[wp].defaults = {
|
381 |
+
context: window,
|
382 |
+
continuous: true,
|
383 |
+
enabled: true,
|
384 |
+
horizontal: false,
|
385 |
+
offset: 0,
|
386 |
+
triggerOnce: false
|
387 |
+
};
|
388 |
+
jQMethods = {
|
389 |
+
refresh: function() {
|
390 |
+
return $.each(contexts, function(i, context) {
|
391 |
+
return context.refresh();
|
392 |
+
});
|
393 |
+
},
|
394 |
+
viewportHeight: function() {
|
395 |
+
var _ref;
|
396 |
+
|
397 |
+
return (_ref = window.innerHeight) != null ? _ref : $w.height();
|
398 |
+
},
|
399 |
+
aggregate: function(contextSelector) {
|
400 |
+
var collection, waypoints, _ref;
|
401 |
+
|
402 |
+
collection = allWaypoints;
|
403 |
+
if (contextSelector) {
|
404 |
+
collection = (_ref = contexts[$(contextSelector).data(contextKey)]) != null ? _ref.waypoints : void 0;
|
405 |
+
}
|
406 |
+
if (!collection) {
|
407 |
+
return [];
|
408 |
+
}
|
409 |
+
waypoints = {
|
410 |
+
horizontal: [],
|
411 |
+
vertical: []
|
412 |
+
};
|
413 |
+
$.each(waypoints, function(axis, arr) {
|
414 |
+
$.each(collection[axis], function(key, waypoint) {
|
415 |
+
return arr.push(waypoint);
|
416 |
+
});
|
417 |
+
arr.sort(function(a, b) {
|
418 |
+
return a.offset - b.offset;
|
419 |
+
});
|
420 |
+
waypoints[axis] = $.map(arr, function(waypoint) {
|
421 |
+
return waypoint.element;
|
422 |
+
});
|
423 |
+
return waypoints[axis] = $.unique(waypoints[axis]);
|
424 |
+
});
|
425 |
+
return waypoints;
|
426 |
+
},
|
427 |
+
above: function(contextSelector) {
|
428 |
+
if (contextSelector == null) {
|
429 |
+
contextSelector = window;
|
430 |
+
}
|
431 |
+
return jQMethods._filter(contextSelector, 'vertical', function(context, waypoint) {
|
432 |
+
return waypoint.offset <= context.oldScroll.y;
|
433 |
+
});
|
434 |
+
},
|
435 |
+
below: function(contextSelector) {
|
436 |
+
if (contextSelector == null) {
|
437 |
+
contextSelector = window;
|
438 |
+
}
|
439 |
+
return jQMethods._filter(contextSelector, 'vertical', function(context, waypoint) {
|
440 |
+
return waypoint.offset > context.oldScroll.y;
|
441 |
+
});
|
442 |
+
},
|
443 |
+
left: function(contextSelector) {
|
444 |
+
if (contextSelector == null) {
|
445 |
+
contextSelector = window;
|
446 |
+
}
|
447 |
+
return jQMethods._filter(contextSelector, 'horizontal', function(context, waypoint) {
|
448 |
+
return waypoint.offset <= context.oldScroll.x;
|
449 |
+
});
|
450 |
+
},
|
451 |
+
right: function(contextSelector) {
|
452 |
+
if (contextSelector == null) {
|
453 |
+
contextSelector = window;
|
454 |
+
}
|
455 |
+
return jQMethods._filter(contextSelector, 'horizontal', function(context, waypoint) {
|
456 |
+
return waypoint.offset > context.oldScroll.x;
|
457 |
+
});
|
458 |
+
},
|
459 |
+
enable: function() {
|
460 |
+
return jQMethods._invoke('enable');
|
461 |
+
},
|
462 |
+
disable: function() {
|
463 |
+
return jQMethods._invoke('disable');
|
464 |
+
},
|
465 |
+
destroy: function() {
|
466 |
+
return jQMethods._invoke('destroy');
|
467 |
+
},
|
468 |
+
extendFn: function(methodName, f) {
|
469 |
+
return methods[methodName] = f;
|
470 |
+
},
|
471 |
+
_invoke: function(method) {
|
472 |
+
var waypoints;
|
473 |
+
|
474 |
+
waypoints = $.extend({}, allWaypoints.vertical, allWaypoints.horizontal);
|
475 |
+
return $.each(waypoints, function(key, waypoint) {
|
476 |
+
waypoint[method]();
|
477 |
+
return true;
|
478 |
+
});
|
479 |
+
},
|
480 |
+
_filter: function(selector, axis, test) {
|
481 |
+
var context, waypoints;
|
482 |
+
|
483 |
+
context = contexts[$(selector).data(contextKey)];
|
484 |
+
if (!context) {
|
485 |
+
return [];
|
486 |
+
}
|
487 |
+
waypoints = [];
|
488 |
+
$.each(context.waypoints[axis], function(i, waypoint) {
|
489 |
+
if (test(context, waypoint)) {
|
490 |
+
return waypoints.push(waypoint);
|
491 |
+
}
|
492 |
+
});
|
493 |
+
waypoints.sort(function(a, b) {
|
494 |
+
return a.offset - b.offset;
|
495 |
+
});
|
496 |
+
return $.map(waypoints, function(waypoint) {
|
497 |
+
return waypoint.element;
|
498 |
+
});
|
499 |
+
}
|
500 |
+
};
|
501 |
+
$[wps] = function() {
|
502 |
+
var args, method;
|
503 |
+
|
504 |
+
method = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
505 |
+
if (jQMethods[method]) {
|
506 |
+
return jQMethods[method].apply(null, args);
|
507 |
+
} else {
|
508 |
+
return jQMethods.aggregate.call(null, method);
|
509 |
+
}
|
510 |
+
};
|
511 |
+
$[wps].settings = {
|
512 |
+
resizeThrottle: 100,
|
513 |
+
scrollThrottle: 30
|
514 |
+
};
|
515 |
+
return $w.load(function() {
|
516 |
+
return $[wps]('refresh');
|
517 |
+
});
|
518 |
+
});
|
519 |
+
|
520 |
+
}).call(this);
|
assets/admin/js/lib/wp-color-picker-alpha.js
ADDED
@@ -0,0 +1,336 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* wp-color-picker-alpha
|
3 |
+
*
|
4 |
+
* Overwrite Automattic Iris for enabled Alpha Channel in wpColorPicker
|
5 |
+
* Only run in input and is defined data alpha in true
|
6 |
+
*
|
7 |
+
* Version: 1.1
|
8 |
+
* https://github.com/23r9i0/wp-color-picker-alpha
|
9 |
+
* Copyright (c) 2015 Sergio P.A. (23r9i0).
|
10 |
+
* Licensed under the GPLv2 license.
|
11 |
+
*/
|
12 |
+
( function( $ ) {
|
13 |
+
// Variable for some backgrounds
|
14 |
+
var image = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAAHnlligAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNpi+P///4EDBxiAGMgCCCAGFB5AADGCRBgYDh48CCRZIJS9vT2QBAggFBkmBiSAogxFBiCAoHogAKIKAlBUYTELAiAmEtABEECk20G6BOmuIl0CIMBQ/IEMkO0myiSSraaaBhZcbkUOs0HuBwDplz5uFJ3Z4gAAAABJRU5ErkJggg==';
|
15 |
+
// html stuff for wpColorPicker copy of the original color-picker.js
|
16 |
+
var _before = '<a tabindex="0" class="wp-color-result" />',
|
17 |
+
_after = '<div class="wp-picker-holder" />',
|
18 |
+
_wrap = '<div class="wp-picker-container" />',
|
19 |
+
_button = '<input type="button" class="button button-small hidden" />';
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Overwrite Color
|
23 |
+
* for enable support rbga
|
24 |
+
*/
|
25 |
+
Color.fn.toString = function() {
|
26 |
+
if ( this._alpha < 1 ) {
|
27 |
+
return this.toCSS( 'rgba', this._alpha ).replace( /\s+/g, '' );
|
28 |
+
}
|
29 |
+
var hex = parseInt( this._color, 10 ).toString( 16 );
|
30 |
+
|
31 |
+
if ( this.error ) {
|
32 |
+
return '';
|
33 |
+
}
|
34 |
+
|
35 |
+
if ( hex.length < 6 ) {
|
36 |
+
for ( var i = 6 - hex.length - 1; i >= 0; i-- ) {
|
37 |
+
hex = '0' + hex;
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
return '#' + hex;
|
42 |
+
};
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Overwrite wpColorPicker
|
46 |
+
*/
|
47 |
+
$.widget( 'wp.wpColorPicker', $.wp.wpColorPicker, {
|
48 |
+
_create: function() {
|
49 |
+
// bail early for unsupported Iris.
|
50 |
+
if ( ! $.support.iris ) {
|
51 |
+
return;
|
52 |
+
}
|
53 |
+
|
54 |
+
var self = this,
|
55 |
+
el = self.element;
|
56 |
+
|
57 |
+
$.extend( self.options, el.data() );
|
58 |
+
|
59 |
+
// keep close bound so it can be attached to a body listener
|
60 |
+
self.close = $.proxy( self.close, self );
|
61 |
+
|
62 |
+
self.initialValue = el.val();
|
63 |
+
|
64 |
+
// Set up HTML structure, hide things
|
65 |
+
el.addClass( 'wp-color-picker' ).hide().wrap( _wrap );
|
66 |
+
self.wrap = el.parent();
|
67 |
+
self.toggler = $( _before ).insertBefore( el ).css( { backgroundColor: self.initialValue } ).attr( 'title', wpColorPickerL10n.pick ).attr( 'data-current', wpColorPickerL10n.current );
|
68 |
+
self.pickerContainer = $( _after ).insertAfter( el );
|
69 |
+
self.button = $( _button );
|
70 |
+
|
71 |
+
if ( self.options.defaultColor ) {
|
72 |
+
self.button.addClass( 'wp-picker-default' ).val( wpColorPickerL10n.defaultString );
|
73 |
+
} else {
|
74 |
+
self.button.addClass( 'wp-picker-clear' ).val( wpColorPickerL10n.clear );
|
75 |
+
}
|
76 |
+
|
77 |
+
el.wrap( '<span class="wp-picker-input-wrap" />' ).after(self.button);
|
78 |
+
|
79 |
+
el.iris( {
|
80 |
+
target: self.pickerContainer,
|
81 |
+
hide: self.options.hide,
|
82 |
+
width: self.options.width,
|
83 |
+
mode: self.options.mode,
|
84 |
+
palettes: self.options.palettes,
|
85 |
+
change: function( event, ui ) {
|
86 |
+
if ( self.options.alpha ) {
|
87 |
+
self.toggler.css( { 'background-image': 'url(' + image + ')' } ).html('<span />');
|
88 |
+
self.toggler.find('span').css({
|
89 |
+
'top': '3px',
|
90 |
+
'left': '3px',
|
91 |
+
'bottom': '3px',
|
92 |
+
'right': '3px',
|
93 |
+
'position': 'absolute',
|
94 |
+
'border-top-left-radius': '3px',
|
95 |
+
'border-bottom-left-radius': '3px',
|
96 |
+
'background': ui.color.toString()
|
97 |
+
});
|
98 |
+
} else {
|
99 |
+
self.toggler.css( { backgroundColor: ui.color.toString() } );
|
100 |
+
}
|
101 |
+
// check for a custom cb
|
102 |
+
if ( $.isFunction( self.options.change ) ) {
|
103 |
+
self.options.change.call( this, event, ui );
|
104 |
+
}
|
105 |
+
}
|
106 |
+
} );
|
107 |
+
|
108 |
+
el.val( self.initialValue );
|
109 |
+
self._addListeners();
|
110 |
+
if ( ! self.options.hide ) {
|
111 |
+
self.toggler.click();
|
112 |
+
}
|
113 |
+
},
|
114 |
+
_addListeners: function() {
|
115 |
+
var self = this;
|
116 |
+
|
117 |
+
// prevent any clicks inside this widget from leaking to the top and closing it
|
118 |
+
self.wrap.on( 'click.wpcolorpicker', function( event ) {
|
119 |
+
event.stopPropagation();
|
120 |
+
});
|
121 |
+
|
122 |
+
self.toggler.click( function(){
|
123 |
+
if ( self.toggler.hasClass( 'wp-picker-open' ) ) {
|
124 |
+
self.close();
|
125 |
+
} else {
|
126 |
+
self.open();
|
127 |
+
}
|
128 |
+
});
|
129 |
+
|
130 |
+
self.element.change( function( event ) {
|
131 |
+
var me = $( this ),
|
132 |
+
val = me.val();
|
133 |
+
// Empty or Error = clear
|
134 |
+
if ( val === '' || self.element.hasClass('iris-error') ) {
|
135 |
+
if ( self.options.alpha ) {
|
136 |
+
self.toggler.removeAttr('style');
|
137 |
+
self.toggler.find('span').css( 'backgroundColor', '' );
|
138 |
+
} else {
|
139 |
+
self.toggler.css( 'backgroundColor', '' );
|
140 |
+
}
|
141 |
+
// fire clear callback if we have one
|
142 |
+
if ( $.isFunction( self.options.clear ) ) {
|
143 |
+
self.options.clear.call( this, event );
|
144 |
+
}
|
145 |
+
}
|
146 |
+
});
|
147 |
+
|
148 |
+
// open a keyboard-focused closed picker with space or enter
|
149 |
+
self.toggler.on( 'keyup', function( event ) {
|
150 |
+
if ( event.keyCode === 13 || event.keyCode === 32 ) {
|
151 |
+
event.preventDefault();
|
152 |
+
self.toggler.trigger( 'click' ).next().focus();
|
153 |
+
}
|
154 |
+
});
|
155 |
+
|
156 |
+
self.button.click( function( event ) {
|
157 |
+
var me = $( this );
|
158 |
+
if ( me.hasClass( 'wp-picker-clear' ) ) {
|
159 |
+
self.element.val( '' );
|
160 |
+
if ( self.options.alpha ) {
|
161 |
+
self.toggler.removeAttr('style');
|
162 |
+
self.toggler.find('span').css( 'backgroundColor', '' );
|
163 |
+
} else {
|
164 |
+
self.toggler.css( 'backgroundColor', '' );
|
165 |
+
}
|
166 |
+
if ( $.isFunction( self.options.clear ) ) {
|
167 |
+
self.options.clear.call( this, event );
|
168 |
+
}
|
169 |
+
} else if ( me.hasClass( 'wp-picker-default' ) ) {
|
170 |
+
self.element.val( self.options.defaultColor ).change();
|
171 |
+
}
|
172 |
+
});
|
173 |
+
}
|
174 |
+
});
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Overwrite iris
|
178 |
+
*/
|
179 |
+
$.widget( 'a8c.iris', $.a8c.iris, {
|
180 |
+
_create: function() {
|
181 |
+
this._super();
|
182 |
+
|
183 |
+
// Global option for check is mode rbga is enabled
|
184 |
+
this.options.alpha = this.element.data( 'alpha' ) || false;
|
185 |
+
|
186 |
+
// Is not input disabled
|
187 |
+
if ( ! this.element.is( ':input' ) ) {
|
188 |
+
this.options.alpha = false;
|
189 |
+
}
|
190 |
+
|
191 |
+
if ( typeof this.options.alpha !== 'undefined' && this.options.alpha ) {
|
192 |
+
var self = this,
|
193 |
+
el = self.element,
|
194 |
+
_html = '<div class="iris-strip iris-slider iris-alpha-slider"><div class="iris-slider-offset iris-slider-offset-alpha"></div></div>',
|
195 |
+
aContainer = $( _html ).appendTo( self.picker.find( '.iris-picker-inner' ) ),
|
196 |
+
aSlider = aContainer.find( '.iris-slider-offset-alpha' ),
|
197 |
+
controls = {
|
198 |
+
aContainer: aContainer,
|
199 |
+
aSlider: aSlider
|
200 |
+
};
|
201 |
+
|
202 |
+
// Set default width for input reset
|
203 |
+
self.options.defaultWidth = el.width();
|
204 |
+
|
205 |
+
// Update width for input
|
206 |
+
if ( self._color._alpha < 1 || self._color.toString().indexOf('rgb') != 1 ) {
|
207 |
+
//el.width( parseInt( self.options.defaultWidth+100 ) );
|
208 |
+
}
|
209 |
+
el.width( parseInt( self.options.defaultWidth+100 ) );
|
210 |
+
|
211 |
+
// Push new controls
|
212 |
+
$.each( controls, function( k, v ){
|
213 |
+
self.controls[k] = v;
|
214 |
+
});
|
215 |
+
|
216 |
+
// Change size strip and add margin for sliders
|
217 |
+
self.controls.square.css({'margin-right': '0'});
|
218 |
+
var emptyWidth = ( self.picker.width() - self.controls.square.width() - 20 ),
|
219 |
+
stripsMargin = emptyWidth/6,
|
220 |
+
stripsWidth = (emptyWidth/2) - stripsMargin;
|
221 |
+
|
222 |
+
$.each( [ 'aContainer', 'strip' ], function( k, v ) {
|
223 |
+
self.controls[v].width( stripsWidth ).css({ 'margin-left': stripsMargin + 'px' });
|
224 |
+
});
|
225 |
+
|
226 |
+
// Add new slider
|
227 |
+
self._initControls();
|
228 |
+
|
229 |
+
// For updated widget
|
230 |
+
self._change();
|
231 |
+
}
|
232 |
+
},
|
233 |
+
_initControls: function() {
|
234 |
+
this._super();
|
235 |
+
|
236 |
+
if ( this.options.alpha ) {
|
237 |
+
var self = this,
|
238 |
+
controls = self.controls;
|
239 |
+
|
240 |
+
controls.aSlider.slider({
|
241 |
+
orientation: 'vertical',
|
242 |
+
min: 0,
|
243 |
+
max: 100,
|
244 |
+
step: 1,
|
245 |
+
value: parseInt( self._color._alpha*100 ),
|
246 |
+
slide: function( event, ui ) {
|
247 |
+
// Update alpha value
|
248 |
+
self._color._alpha = parseFloat( ui.value/100 );
|
249 |
+
self._change.apply( self, arguments );
|
250 |
+
}
|
251 |
+
});
|
252 |
+
}
|
253 |
+
},
|
254 |
+
_change: function() {
|
255 |
+
this._super();
|
256 |
+
var self = this,
|
257 |
+
el = self.element;
|
258 |
+
|
259 |
+
if ( this.options.alpha ) {
|
260 |
+
var controls = self.controls,
|
261 |
+
alpha = parseInt( self._color._alpha*100 ),
|
262 |
+
color = self._color.toRgb(),
|
263 |
+
gradient = [
|
264 |
+
'rgb(' + color.r + ',' + color.g + ',' + color.b + ') 0%',
|
265 |
+
'rgba(' + color.r + ',' + color.g + ',' + color.b + ', 0) 100%'
|
266 |
+
],
|
267 |
+
defaultWidth = self.options.defaultWidth,
|
268 |
+
target = self.picker.closest('.wp-picker-container').find( '.wp-color-result' );
|
269 |
+
|
270 |
+
// Generate background slider alpha, only for CSS3 old browser fuck!! :)
|
271 |
+
controls.aContainer.css({ 'background': 'linear-gradient(to bottom, ' + gradient.join( ', ' ) + '), url(' + image + ')' });
|
272 |
+
|
273 |
+
if ( target.hasClass('wp-picker-open') ) {
|
274 |
+
// Update alpha value
|
275 |
+
controls.aSlider.slider( 'value', alpha );
|
276 |
+
|
277 |
+
/**
|
278 |
+
* Disabled change opacity in default slider Saturation ( only is alpha enabled )
|
279 |
+
* and change input width for view all value
|
280 |
+
*/
|
281 |
+
if ( self._color._alpha < 1 ) {
|
282 |
+
var style = controls.strip.attr( 'style' ).replace( /rgba\(([0-9]+,)(\s+)?([0-9]+,)(\s+)?([0-9]+)(,(\s+)?[0-9\.]+)\)/g, 'rgb($1$3$5)' );
|
283 |
+
|
284 |
+
controls.strip.attr( 'style', style );
|
285 |
+
|
286 |
+
//el.width( parseInt( defaultWidth+100 ) );
|
287 |
+
} else {
|
288 |
+
//el.width( defaultWidth );
|
289 |
+
}
|
290 |
+
}
|
291 |
+
}
|
292 |
+
|
293 |
+
var reset = el.data('reset-alpha') || false;
|
294 |
+
if ( reset ) {
|
295 |
+
self.picker.find( '.iris-palette-container' ).on( 'click.palette', '.iris-palette', function() {
|
296 |
+
self._color._alpha = 1;
|
297 |
+
self.active = 'external';
|
298 |
+
self._change();
|
299 |
+
});
|
300 |
+
}
|
301 |
+
},
|
302 |
+
_addInputListeners: function( input ) {
|
303 |
+
var self = this,
|
304 |
+
debounceTimeout = 100,
|
305 |
+
callback = function( event ){
|
306 |
+
var color = new Color( input.val() ),
|
307 |
+
val = input.val();
|
308 |
+
|
309 |
+
input.removeClass( 'iris-error' );
|
310 |
+
// we gave a bad color
|
311 |
+
if ( color.error ) {
|
312 |
+
// don't error on an empty input
|
313 |
+
if ( val !== '' ) {
|
314 |
+
input.addClass( 'iris-error' );
|
315 |
+
}
|
316 |
+
} else {
|
317 |
+
if ( color.toString() !== self._color.toString() ) {
|
318 |
+
// let's not do this on keyup for hex shortcodes
|
319 |
+
if ( ! ( event.type === 'keyup' && val.match( /^[0-9a-fA-F]{3}$/ ) ) ) {
|
320 |
+
self._setOption( 'color', color.toString() );
|
321 |
+
}
|
322 |
+
}
|
323 |
+
}
|
324 |
+
};
|
325 |
+
|
326 |
+
input.on( 'change', callback ).on( 'keyup', self._debounce( callback, debounceTimeout ) );
|
327 |
+
|
328 |
+
// If we initialized hidden, show on first focus. The rest is up to you.
|
329 |
+
if ( self.options.hide ) {
|
330 |
+
input.one( 'focus', function() {
|
331 |
+
self.show();
|
332 |
+
});
|
333 |
+
}
|
334 |
+
}
|
335 |
+
} );
|
336 |
+
}( jQuery ) );
|
assets/css/admin-rtl.css
ADDED
@@ -0,0 +1,360 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'eicon';
|
3 |
+
src: url("../fonts/eicon/eicon.eot?0.11");
|
4 |
+
src: url("../fonts/eicon/eicon.eot?0.11#iefix") format("embedded-opentype"), url("../fonts/eicon/eicon.woff2?0.11") format("woff2"), url("../fonts/eicon/eicon.woff?0.11") format("woff"), url("../fonts/eicon/eicon.ttf?0.11") format("truetype"), url("../fonts/eicon/eicon.svg?0.11#eicon") format("svg");
|
5 |
+
font-weight: normal;
|
6 |
+
font-style: normal; }
|
7 |
+
[class^="eicon-"],
|
8 |
+
[class*=" eicon-"] {
|
9 |
+
display: inline-block;
|
10 |
+
font-family: eicon;
|
11 |
+
font-size: inherit;
|
12 |
+
font-weight: normal;
|
13 |
+
font-style: normal;
|
14 |
+
font-variant: normal;
|
15 |
+
line-height: 1;
|
16 |
+
text-rendering: auto;
|
17 |
+
-webkit-font-smoothing: antialiased;
|
18 |
+
-moz-osx-font-smoothing: grayscale; }
|
19 |
+
|
20 |
+
.eicon-c1-1:before {
|
21 |
+
content: '\e800'; }
|
22 |
+
|
23 |
+
.eicon-c2-1:before {
|
24 |
+
content: '\e801'; }
|
25 |
+
|
26 |
+
.eicon-c2-2:before {
|
27 |
+
content: '\e802'; }
|
28 |
+
|
29 |
+
.eicon-c2-3:before {
|
30 |
+
content: '\e803'; }
|
31 |
+
|
32 |
+
.eicon-c2-4:before {
|
33 |
+
content: '\e804'; }
|
34 |
+
|
35 |
+
.eicon-c2-5:before {
|
36 |
+
content: '\e805'; }
|
37 |
+
|
38 |
+
.eicon-c2-6:before {
|
39 |
+
content: '\e806'; }
|
40 |
+
|
41 |
+
.eicon-c2-7:before {
|
42 |
+
content: '\e807'; }
|
43 |
+
|
44 |
+
.eicon-c2-8:before {
|
45 |
+
content: '\e808'; }
|
46 |
+
|
47 |
+
.eicon-c2-9:before {
|
48 |
+
content: '\e809'; }
|
49 |
+
|
50 |
+
.eicon-c3-1:before {
|
51 |
+
content: '\e80a'; }
|
52 |
+
|
53 |
+
.eicon-c3-2:before {
|
54 |
+
content: '\e80b'; }
|
55 |
+
|
56 |
+
.eicon-c3-3:before {
|
57 |
+
content: '\e80c'; }
|
58 |
+
|
59 |
+
.eicon-c3-4:before {
|
60 |
+
content: '\e80d'; }
|
61 |
+
|
62 |
+
.eicon-c3-5:before {
|
63 |
+
content: '\e80e'; }
|
64 |
+
|
65 |
+
.eicon-c3-6:before {
|
66 |
+
content: '\e80f'; }
|
67 |
+
|
68 |
+
.eicon-c3-7:before {
|
69 |
+
content: '\e811'; }
|
70 |
+
|
71 |
+
.eicon-c3-8:before {
|
72 |
+
content: '\e811'; }
|
73 |
+
|
74 |
+
.eicon-c3-9:before {
|
75 |
+
content: '\e812'; }
|
76 |
+
|
77 |
+
.eicon-c4-1:before {
|
78 |
+
content: '\e813'; }
|
79 |
+
|
80 |
+
.eicon-c4-2:before {
|
81 |
+
content: '\e814'; }
|
82 |
+
|
83 |
+
.eicon-c4-3:before {
|
84 |
+
content: '\e815'; }
|
85 |
+
|
86 |
+
.eicon-c4-4:before {
|
87 |
+
content: '\e816'; }
|
88 |
+
|
89 |
+
.eicon-c4-5:before {
|
90 |
+
content: '\e817'; }
|
91 |
+
|
92 |
+
.eicon-c4-6:before {
|
93 |
+
content: '\e818'; }
|
94 |
+
|
95 |
+
.eicon-c4-7:before {
|
96 |
+
content: '\e819'; }
|
97 |
+
|
98 |
+
.eicon-c4-8:before {
|
99 |
+
content: '\e81a'; }
|
100 |
+
|
101 |
+
.eicon-c4-9:before {
|
102 |
+
content: '\e81b'; }
|
103 |
+
|
104 |
+
.eicon-c4-11:before {
|
105 |
+
content: '\e81c'; }
|
106 |
+
|
107 |
+
.eicon-c4-11:before {
|
108 |
+
content: '\e81d'; }
|
109 |
+
|
110 |
+
.eicon-c5-1:before {
|
111 |
+
content: '\e81e'; }
|
112 |
+
|
113 |
+
.eicon-c5-2:before {
|
114 |
+
content: '\e81f'; }
|
115 |
+
|
116 |
+
.eicon-c5-3:before {
|
117 |
+
content: '\e820'; }
|
118 |
+
|
119 |
+
.eicon-c5-4:before {
|
120 |
+
content: '\e821'; }
|
121 |
+
|
122 |
+
.eicon-c5-5:before {
|
123 |
+
content: '\e822'; }
|
124 |
+
|
125 |
+
.eicon-c5-6:before {
|
126 |
+
content: '\e823'; }
|
127 |
+
|
128 |
+
.eicon-c5-7:before {
|
129 |
+
content: '\e824'; }
|
130 |
+
|
131 |
+
.eicon-c5-8:before {
|
132 |
+
content: '\e825'; }
|
133 |
+
|
134 |
+
.eicon-c5-9:before {
|
135 |
+
content: '\e826'; }
|
136 |
+
|
137 |
+
.eicon-c5-11:before {
|
138 |
+
content: '\e827'; }
|
139 |
+
|
140 |
+
.eicon-c6-1:before {
|
141 |
+
content: '\e828'; }
|
142 |
+
|
143 |
+
.eicon-c6-2:before {
|
144 |
+
content: '\e829'; }
|
145 |
+
|
146 |
+
.eicon-c6-3:before {
|
147 |
+
content: '\e82a'; }
|
148 |
+
|
149 |
+
.eicon-c6-4:before {
|
150 |
+
content: '\e82b'; }
|
151 |
+
|
152 |
+
.eicon-c6-5:before {
|
153 |
+
content: '\e82c'; }
|
154 |
+
|
155 |
+
.eicon-c6-6:before {
|
156 |
+
content: '\e82d'; }
|
157 |
+
|
158 |
+
.eicon-c6-7:before {
|
159 |
+
content: '\e82e'; }
|
160 |
+
|
161 |
+
.eicon-c6-8:before {
|
162 |
+
content: '\e82f'; }
|
163 |
+
|
164 |
+
.eicon-c6-9:before {
|
165 |
+
content: '\e830'; }
|
166 |
+
|
167 |
+
.eicon-c6-11:before {
|
168 |
+
content: '\e831'; }
|
169 |
+
|
170 |
+
.eicon-c6-11:before {
|
171 |
+
content: '\e832'; }
|
172 |
+
|
173 |
+
.eicon-c7-1:before {
|
174 |
+
content: '\e833'; }
|
175 |
+
|
176 |
+
.eicon-c8-1:before {
|
177 |
+
content: '\e834'; }
|
178 |
+
|
179 |
+
.eicon-c9-1:before {
|
180 |
+
content: '\e835'; }
|
181 |
+
|
182 |
+
.eicon-c11-1:before {
|
183 |
+
content: '\e836'; }
|
184 |
+
|
185 |
+
.eicon-anchor:before {
|
186 |
+
content: '\e837'; }
|
187 |
+
|
188 |
+
.eicon-wordpress:before {
|
189 |
+
content: '\e838'; }
|
190 |
+
|
191 |
+
.eicon-insert-image:before {
|
192 |
+
content: '\e839'; }
|
193 |
+
|
194 |
+
.eicon-align-left:before {
|
195 |
+
content: '\e83a'; }
|
196 |
+
|
197 |
+
.eicon-digital-alarm-clock:before {
|
198 |
+
content: '\e83b'; }
|
199 |
+
|
200 |
+
.eicon-favorite:before {
|
201 |
+
content: '\e83c'; }
|
202 |
+
|
203 |
+
.eicon-firewall-on:before {
|
204 |
+
content: '\e83d'; }
|
205 |
+
|
206 |
+
.eicon-google-maps:before {
|
207 |
+
content: '\e83e'; }
|
208 |
+
|
209 |
+
.eicon-text-size:before {
|
210 |
+
content: '\e83f'; }
|
211 |
+
|
212 |
+
.eicon-youtube:before {
|
213 |
+
content: '\e840'; }
|
214 |
+
|
215 |
+
.eicon-success-chart:before {
|
216 |
+
content: '\e841'; }
|
217 |
+
|
218 |
+
.eicon-type-tool:before {
|
219 |
+
content: '\e842'; }
|
220 |
+
|
221 |
+
.eicon-bullet-list:before {
|
222 |
+
content: '\e843'; }
|
223 |
+
|
224 |
+
.eicon-click:before {
|
225 |
+
content: '\e844'; }
|
226 |
+
|
227 |
+
.eicon-coding:before {
|
228 |
+
content: '\e845'; }
|
229 |
+
|
230 |
+
.eicon-accordion:before {
|
231 |
+
content: '\e846'; }
|
232 |
+
|
233 |
+
.eicon-divider:before {
|
234 |
+
content: '\e847'; }
|
235 |
+
|
236 |
+
.eicon-toggle:before {
|
237 |
+
content: '\e848'; }
|
238 |
+
|
239 |
+
.eicon-settings:before {
|
240 |
+
content: '\e849'; }
|
241 |
+
|
242 |
+
.eicon-section:before {
|
243 |
+
content: '\e84a'; }
|
244 |
+
|
245 |
+
.eicon-photo-library:before {
|
246 |
+
content: '\e84b'; }
|
247 |
+
|
248 |
+
.eicon-elementor:before {
|
249 |
+
content: '\e84c'; }
|
250 |
+
|
251 |
+
.eicon-menu:before {
|
252 |
+
content: '\e84d'; }
|
253 |
+
|
254 |
+
.eicon-plus:before {
|
255 |
+
content: '\e84e'; }
|
256 |
+
|
257 |
+
.eicon-apps:before {
|
258 |
+
content: '\e84f'; }
|
259 |
+
|
260 |
+
.eicon-tabs:before {
|
261 |
+
content: '\e850'; }
|
262 |
+
|
263 |
+
.eicon-elementor-square:before {
|
264 |
+
content: '\e851'; }
|
265 |
+
|
266 |
+
#wpadminbar #wp-admin-bar-elementor_edit_page > .ab-item::before {
|
267 |
+
content: "\e84c";
|
268 |
+
font-family: eicon;
|
269 |
+
font-size: 14px;
|
270 |
+
margin-top: 5px; }
|
271 |
+
|
272 |
+
#adminmenu #toplevel_page_elementor div.wp-menu-image:before {
|
273 |
+
content: "\e84c";
|
274 |
+
font-family: eicon;
|
275 |
+
font-size: 14px;
|
276 |
+
margin-top: 3px; }
|
277 |
+
|
278 |
+
#elementor-switch-mode {
|
279 |
+
margin: 15px 0; }
|
280 |
+
#elementor-switch-mode button {
|
281 |
+
display: none; }
|
282 |
+
#elementor-switch-mode button.elementor-switch-mode-button {
|
283 |
+
padding: 0 30px;
|
284 |
+
height: 50px;
|
285 |
+
line-height: 50px; }
|
286 |
+
#elementor-switch-mode button.elementor-switch-mode-button span {
|
287 |
+
display: none; }
|
288 |
+
#elementor-switch-mode.elementor-editor-inactive button.elementor-switch-mode-button {
|
289 |
+
display: none;
|
290 |
+
background-color: #B40B51;
|
291 |
+
color: #ffffff;
|
292 |
+
border-color: #7D1036;
|
293 |
+
box-shadow: 0 2px 0 #7D1036;
|
294 |
+
text-shadow: none; }
|
295 |
+
|
296 |
+
#elementor-editor {
|
297 |
+
background-color: #F7F7F7;
|
298 |
+
border: 1px solid #DDD;
|
299 |
+
height: auto;
|
300 |
+
width: 100%;
|
301 |
+
display: none;
|
302 |
+
transition: all 0.5s ease; }
|
303 |
+
#elementor-editor.elementor-editor-active {
|
304 |
+
display: table; }
|
305 |
+
#elementor-editor:hover {
|
306 |
+
background-color: #ffffff; }
|
307 |
+
#elementor-editor .elementor-go-to-edit-page {
|
308 |
+
display: table-cell;
|
309 |
+
vertical-align: middle;
|
310 |
+
text-align: center; }
|
311 |
+
#elementor-editor .elementor-go-to-edit-page > a {
|
312 |
+
padding: 70px 0;
|
313 |
+
display: block;
|
314 |
+
text-decoration: none; }
|
315 |
+
#elementor-editor .elementor-go-to-edit-page > a span.elementor-go-to-edit-text {
|
316 |
+
background-image: url(../images/go-to-edit.png);
|
317 |
+
background-position: top center;
|
318 |
+
background-repeat: no-repeat;
|
319 |
+
padding-top: 135px;
|
320 |
+
font-size: 20px;
|
321 |
+
text-transform: uppercase;
|
322 |
+
color: #B40B51;
|
323 |
+
display: block; }
|
324 |
+
|
325 |
+
/*= Elementor System Info
|
326 |
+
---------------------------------------*/
|
327 |
+
#elementor-system-info {
|
328 |
+
padding: 15px; }
|
329 |
+
#elementor-system-info .elementor-system-info-section {
|
330 |
+
margin-bottom: 10px; }
|
331 |
+
#elementor-system-info .elementor-system-info-section > .elementor-system-info-report-name {
|
332 |
+
padding-left: 10px;
|
333 |
+
border-bottom: 1px solid #e1e1e1; }
|
334 |
+
#elementor-system-info .elementor-system-info-report-name {
|
335 |
+
text-transform: uppercase;
|
336 |
+
font-size: 14px;
|
337 |
+
margin: 0;
|
338 |
+
line-height: 2; }
|
339 |
+
#elementor-system-info .elementor-system-info-report-row {
|
340 |
+
overflow: hidden;
|
341 |
+
padding: 5px 0; }
|
342 |
+
#elementor-system-info .elementor-system-info-report-row > * {
|
343 |
+
float: left; }
|
344 |
+
#elementor-system-info .elementor-system-info-report-field, #elementor-system-info .elementor-system-info-field-recommendation {
|
345 |
+
padding-left: 10px;
|
346 |
+
color: #7F7F7F; }
|
347 |
+
#elementor-system-info .elementor-system-info-report-fields {
|
348 |
+
padding-left: 20px; }
|
349 |
+
#elementor-system-info .elementor-system-info-plugin-name {
|
350 |
+
color: #000; }
|
351 |
+
#elementor-system-info .elementor-system-info-plugin-properties {
|
352 |
+
padding: 10px; }
|
353 |
+
#elementor-system-info #elementor-system-info-raw-code {
|
354 |
+
width: 100%;
|
355 |
+
height: 200px; }
|
356 |
+
#elementor-system-info #elementor-system-info-raw-code-label {
|
357 |
+
padding: 5px;
|
358 |
+
display: block; }
|
359 |
+
|
360 |
+
/*# sourceMappingURL=admin-rtl.css.map */
|
assets/css/admin-rtl.css.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"sources":["../scss/admin/_eicon.scss","../scss/admin/admin.scss","../scss/helpers/mixins.scss","../scss/admin/_system_info.scss"],"names":[],"mappings":"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","file":"admin-rtl.css"}
|
assets/css/admin-rtl.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
@font-face{font-family:eicon;src:url(../fonts/eicon/eicon.eot?0.11);src:url(../fonts/eicon/eicon.eot?0.11#iefix) format("embedded-opentype"),url(../fonts/eicon/eicon.woff2?0.11) format("woff2"),url(../fonts/eicon/eicon.woff?0.11) format("woff"),url(../fonts/eicon/eicon.ttf?0.11) format("truetype"),url(../fonts/eicon/eicon.svg?0.11#eicon) format("svg");font-weight:400;font-style:normal}[class*=" eicon-"],[class^=eicon-]{display:inline-block;font-family:eicon;font-size:inherit;font-weight:400;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.eicon-c1-1:before{content:'\e800'}.eicon-c2-1:before{content:'\e801'}.eicon-c2-2:before{content:'\e802'}.eicon-c2-3:before{content:'\e803'}.eicon-c2-4:before{content:'\e804'}.eicon-c2-5:before{content:'\e805'}.eicon-c2-6:before{content:'\e806'}.eicon-c2-7:before{content:'\e807'}.eicon-c2-8:before{content:'\e808'}.eicon-c2-9:before{content:'\e809'}.eicon-c3-1:before{content:'\e80a'}.eicon-c3-2:before{content:'\e80b'}.eicon-c3-3:before{content:'\e80c'}.eicon-c3-4:before{content:'\e80d'}.eicon-c3-5:before{content:'\e80e'}.eicon-c3-6:before{content:'\e80f'}.eicon-c3-7:before,.eicon-c3-8:before{content:'\e811'}.eicon-c3-9:before{content:'\e812'}.eicon-c4-1:before{content:'\e813'}.eicon-c4-2:before{content:'\e814'}.eicon-c4-3:before{content:'\e815'}.eicon-c4-4:before{content:'\e816'}.eicon-c4-5:before{content:'\e817'}.eicon-c4-6:before{content:'\e818'}.eicon-c4-7:before{content:'\e819'}.eicon-c4-8:before{content:'\e81a'}.eicon-c4-9:before{content:'\e81b'}.eicon-c4-11:before{content:'\e81c';content:'\e81d'}.eicon-c5-1:before{content:'\e81e'}.eicon-c5-2:before{content:'\e81f'}.eicon-c5-3:before{content:'\e820'}.eicon-c5-4:before{content:'\e821'}.eicon-c5-5:before{content:'\e822'}.eicon-c5-6:before{content:'\e823'}.eicon-c5-7:before{content:'\e824'}.eicon-c5-8:before{content:'\e825'}.eicon-c5-9:before{content:'\e826'}.eicon-c5-11:before{content:'\e827'}.eicon-c6-1:before{content:'\e828'}.eicon-c6-2:before{content:'\e829'}.eicon-c6-3:before{content:'\e82a'}.eicon-c6-4:before{content:'\e82b'}.eicon-c6-5:before{content:'\e82c'}.eicon-c6-6:before{content:'\e82d'}.eicon-c6-7:before{content:'\e82e'}.eicon-c6-8:before{content:'\e82f'}.eicon-c6-9:before{content:'\e830'}.eicon-c6-11:before{content:'\e831';content:'\e832'}.eicon-c7-1:before{content:'\e833'}.eicon-c8-1:before{content:'\e834'}.eicon-c9-1:before{content:'\e835'}.eicon-c11-1:before{content:'\e836'}.eicon-anchor:before{content:'\e837'}.eicon-wordpress:before{content:'\e838'}.eicon-insert-image:before{content:'\e839'}.eicon-align-left:before{content:'\e83a'}.eicon-digital-alarm-clock:before{content:'\e83b'}.eicon-favorite:before{content:'\e83c'}.eicon-firewall-on:before{content:'\e83d'}.eicon-google-maps:before{content:'\e83e'}.eicon-text-size:before{content:'\e83f'}.eicon-youtube:before{content:'\e840'}.eicon-success-chart:before{content:'\e841'}.eicon-type-tool:before{content:'\e842'}.eicon-bullet-list:before{content:'\e843'}.eicon-click:before{content:'\e844'}.eicon-coding:before{content:'\e845'}.eicon-accordion:before{content:'\e846'}.eicon-divider:before{content:'\e847'}.eicon-toggle:before{content:'\e848'}.eicon-settings:before{content:'\e849'}.eicon-section:before{content:'\e84a'}.eicon-photo-library:before{content:'\e84b'}.eicon-elementor:before{content:'\e84c'}.eicon-menu:before{content:'\e84d'}.eicon-plus:before{content:'\e84e'}.eicon-apps:before{content:'\e84f'}.eicon-tabs:before{content:'\e850'}.eicon-elementor-square:before{content:'\e851'}#wpadminbar #wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e84c";font-family:eicon;font-size:14px;margin-top:5px}#adminmenu #toplevel_page_elementor div.wp-menu-image:before{content:"\e84c";font-family:eicon;font-size:14px;margin-top:3px}#elementor-switch-mode{margin:15px 0}#elementor-switch-mode button{display:none}#elementor-switch-mode button.elementor-switch-mode-button{padding:0 30px;height:50px;line-height:50px}#elementor-switch-mode button.elementor-switch-mode-button span{display:none}#elementor-switch-mode.elementor-editor-inactive button.elementor-switch-mode-button{display:none;background-color:#b40b51;color:#fff;border-color:#7d1036;box-shadow:0 2px 0 #7d1036;text-shadow:none}#elementor-editor{background-color:#f7f7f7;border:1px solid #ddd;height:auto;width:100%;display:none;transition:all .5s ease}#elementor-editor.elementor-editor-active{display:table}#elementor-editor:hover{background-color:#fff}#elementor-editor .elementor-go-to-edit-page{display:table-cell;vertical-align:middle;text-align:center}#elementor-editor .elementor-go-to-edit-page>a{padding:70px 0;display:block;text-decoration:none}#elementor-editor .elementor-go-to-edit-page>a span.elementor-go-to-edit-text{background-image:url(../images/go-to-edit.png);background-position:top;background-repeat:no-repeat;padding-top:135px;font-size:20px;text-transform:uppercase;color:#b40b51;display:block}#elementor-system-info{padding:15px}#elementor-system-info .elementor-system-info-section{margin-bottom:10px}#elementor-system-info .elementor-system-info-section>.elementor-system-info-report-name{padding-left:10px;border-bottom:1px solid #e1e1e1}#elementor-system-info .elementor-system-info-report-name{text-transform:uppercase;font-size:14px;margin:0;line-height:2}#elementor-system-info .elementor-system-info-report-row{overflow:hidden;padding:5px 0}#elementor-system-info .elementor-system-info-report-row>*{float:left}#elementor-system-info .elementor-system-info-field-recommendation,#elementor-system-info .elementor-system-info-report-field{padding-left:10px;color:#7f7f7f}#elementor-system-info .elementor-system-info-report-fields{padding-left:20px}#elementor-system-info .elementor-system-info-plugin-name{color:#000}#elementor-system-info .elementor-system-info-plugin-properties{padding:10px}#elementor-system-info #elementor-system-info-raw-code{width:100%;height:200px}#elementor-system-info #elementor-system-info-raw-code-label{padding:5px;display:block}
|
assets/css/admin.css
ADDED
@@ -0,0 +1,360 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'eicon';
|
3 |
+
src: url("../fonts/eicon/eicon.eot?0.11");
|
4 |
+
src: url("../fonts/eicon/eicon.eot?0.11#iefix") format("embedded-opentype"), url("../fonts/eicon/eicon.woff2?0.11") format("woff2"), url("../fonts/eicon/eicon.woff?0.11") format("woff"), url("../fonts/eicon/eicon.ttf?0.11") format("truetype"), url("../fonts/eicon/eicon.svg?0.11#eicon") format("svg");
|
5 |
+
font-weight: normal;
|
6 |
+
font-style: normal; }
|
7 |
+
[class^="eicon-"],
|
8 |
+
[class*=" eicon-"] {
|
9 |
+
display: inline-block;
|
10 |
+
font-family: eicon;
|
11 |
+
font-size: inherit;
|
12 |
+
font-weight: normal;
|
13 |
+
font-style: normal;
|
14 |
+
font-variant: normal;
|
15 |
+
line-height: 1;
|
16 |
+
text-rendering: auto;
|
17 |
+
-webkit-font-smoothing: antialiased;
|
18 |
+
-moz-osx-font-smoothing: grayscale; }
|
19 |
+
|
20 |
+
.eicon-c1-1:before {
|
21 |
+
content: '\e800'; }
|
22 |
+
|
23 |
+
.eicon-c2-1:before {
|
24 |
+
content: '\e801'; }
|
25 |
+
|
26 |
+
.eicon-c2-2:before {
|
27 |
+
content: '\e802'; }
|
28 |
+
|
29 |
+
.eicon-c2-3:before {
|
30 |
+
content: '\e803'; }
|
31 |
+
|
32 |
+
.eicon-c2-4:before {
|
33 |
+
content: '\e804'; }
|
34 |
+
|
35 |
+
.eicon-c2-5:before {
|
36 |
+
content: '\e805'; }
|
37 |
+
|
38 |
+
.eicon-c2-6:before {
|
39 |
+
content: '\e806'; }
|
40 |
+
|
41 |
+
.eicon-c2-7:before {
|
42 |
+
content: '\e807'; }
|
43 |
+
|
44 |
+
.eicon-c2-8:before {
|
45 |
+
content: '\e808'; }
|
46 |
+
|
47 |
+
.eicon-c2-9:before {
|
48 |
+
content: '\e809'; }
|
49 |
+
|
50 |
+
.eicon-c3-1:before {
|
51 |
+
content: '\e80a'; }
|
52 |
+
|
53 |
+
.eicon-c3-2:before {
|
54 |
+
content: '\e80b'; }
|
55 |
+
|
56 |
+
.eicon-c3-3:before {
|
57 |
+
content: '\e80c'; }
|
58 |
+
|
59 |
+
.eicon-c3-4:before {
|
60 |
+
content: '\e80d'; }
|
61 |
+
|
62 |
+
.eicon-c3-5:before {
|
63 |
+
content: '\e80e'; }
|
64 |
+
|
65 |
+
.eicon-c3-6:before {
|
66 |
+
content: '\e80f'; }
|
67 |
+
|
68 |
+
.eicon-c3-7:before {
|
69 |
+
content: '\e811'; }
|
70 |
+
|
71 |
+
.eicon-c3-8:before {
|
72 |
+
content: '\e811'; }
|
73 |
+
|
74 |
+
.eicon-c3-9:before {
|
75 |
+
content: '\e812'; }
|
76 |
+
|
77 |
+
.eicon-c4-1:before {
|
78 |
+
content: '\e813'; }
|
79 |
+
|
80 |
+
.eicon-c4-2:before {
|
81 |
+
content: '\e814'; }
|
82 |
+
|
83 |
+
.eicon-c4-3:before {
|
84 |
+
content: '\e815'; }
|
85 |
+
|
86 |
+
.eicon-c4-4:before {
|
87 |
+
content: '\e816'; }
|
88 |
+
|
89 |
+
.eicon-c4-5:before {
|
90 |
+
content: '\e817'; }
|
91 |
+
|
92 |
+
.eicon-c4-6:before {
|
93 |
+
content: '\e818'; }
|
94 |
+
|
95 |
+
.eicon-c4-7:before {
|
96 |
+
content: '\e819'; }
|
97 |
+
|
98 |
+
.eicon-c4-8:before {
|
99 |
+
content: '\e81a'; }
|
100 |
+
|
101 |
+
.eicon-c4-9:before {
|
102 |
+
content: '\e81b'; }
|
103 |
+
|
104 |
+
.eicon-c4-11:before {
|
105 |
+
content: '\e81c'; }
|
106 |
+
|
107 |
+
.eicon-c4-11:before {
|
108 |
+
content: '\e81d'; }
|
109 |
+
|
110 |
+
.eicon-c5-1:before {
|
111 |
+
content: '\e81e'; }
|
112 |
+
|
113 |
+
.eicon-c5-2:before {
|
114 |
+
content: '\e81f'; }
|
115 |
+
|
116 |
+
.eicon-c5-3:before {
|
117 |
+
content: '\e820'; }
|
118 |
+
|
119 |
+
.eicon-c5-4:before {
|
120 |
+
content: '\e821'; }
|
121 |
+
|
122 |
+
.eicon-c5-5:before {
|
123 |
+
content: '\e822'; }
|
124 |
+
|
125 |
+
.eicon-c5-6:before {
|
126 |
+
content: '\e823'; }
|
127 |
+
|
128 |
+
.eicon-c5-7:before {
|
129 |
+
content: '\e824'; }
|
130 |
+
|
131 |
+
.eicon-c5-8:before {
|
132 |
+
content: '\e825'; }
|
133 |
+
|
134 |
+
.eicon-c5-9:before {
|
135 |
+
content: '\e826'; }
|
136 |
+
|
137 |
+
.eicon-c5-11:before {
|
138 |
+
content: '\e827'; }
|
139 |
+
|
140 |
+
.eicon-c6-1:before {
|
141 |
+
content: '\e828'; }
|
142 |
+
|
143 |
+
.eicon-c6-2:before {
|
144 |
+
content: '\e829'; }
|
145 |
+
|
146 |
+
.eicon-c6-3:before {
|
147 |
+
content: '\e82a'; }
|
148 |
+
|
149 |
+
.eicon-c6-4:before {
|
150 |
+
content: '\e82b'; }
|
151 |
+
|
152 |
+
.eicon-c6-5:before {
|
153 |
+
content: '\e82c'; }
|
154 |
+
|
155 |
+
.eicon-c6-6:before {
|
156 |
+
content: '\e82d'; }
|
157 |
+
|
158 |
+
.eicon-c6-7:before {
|
159 |
+
content: '\e82e'; }
|
160 |
+
|
161 |
+
.eicon-c6-8:before {
|
162 |
+
content: '\e82f'; }
|
163 |
+
|
164 |
+
.eicon-c6-9:before {
|
165 |
+
content: '\e830'; }
|
166 |
+
|
167 |
+
.eicon-c6-11:before {
|
168 |
+
content: '\e831'; }
|
169 |
+
|
170 |
+
.eicon-c6-11:before {
|
171 |
+
content: '\e832'; }
|
172 |
+
|
173 |
+
.eicon-c7-1:before {
|
174 |
+
content: '\e833'; }
|
175 |
+
|
176 |
+
.eicon-c8-1:before {
|
177 |
+
content: '\e834'; }
|
178 |
+
|
179 |
+
.eicon-c9-1:before {
|
180 |
+
content: '\e835'; }
|
181 |
+
|
182 |
+
.eicon-c11-1:before {
|
183 |
+
content: '\e836'; }
|
184 |
+
|
185 |
+
.eicon-anchor:before {
|
186 |
+
content: '\e837'; }
|
187 |
+
|
188 |
+
.eicon-wordpress:before {
|
189 |
+
content: '\e838'; }
|
190 |
+
|
191 |
+
.eicon-insert-image:before {
|
192 |
+
content: '\e839'; }
|
193 |
+
|
194 |
+
.eicon-align-left:before {
|
195 |
+
content: '\e83a'; }
|
196 |
+
|
197 |
+
.eicon-digital-alarm-clock:before {
|
198 |
+
content: '\e83b'; }
|
199 |
+
|
200 |
+
.eicon-favorite:before {
|
201 |
+
content: '\e83c'; }
|
202 |
+
|
203 |
+
.eicon-firewall-on:before {
|
204 |
+
content: '\e83d'; }
|
205 |
+
|
206 |
+
.eicon-google-maps:before {
|
207 |
+
content: '\e83e'; }
|
208 |
+
|
209 |
+
.eicon-text-size:before {
|
210 |
+
content: '\e83f'; }
|
211 |
+
|
212 |
+
.eicon-youtube:before {
|
213 |
+
content: '\e840'; }
|
214 |
+
|
215 |
+
.eicon-success-chart:before {
|
216 |
+
content: '\e841'; }
|
217 |
+
|
218 |
+
.eicon-type-tool:before {
|
219 |
+
content: '\e842'; }
|
220 |
+
|
221 |
+
.eicon-bullet-list:before {
|
222 |
+
content: '\e843'; }
|
223 |
+
|
224 |
+
.eicon-click:before {
|
225 |
+
content: '\e844'; }
|
226 |
+
|
227 |
+
.eicon-coding:before {
|
228 |
+
content: '\e845'; }
|
229 |
+
|
230 |
+
.eicon-accordion:before {
|
231 |
+
content: '\e846'; }
|
232 |
+
|
233 |
+
.eicon-divider:before {
|
234 |
+
content: '\e847'; }
|
235 |
+
|
236 |
+
.eicon-toggle:before {
|
237 |
+
content: '\e848'; }
|
238 |
+
|
239 |
+
.eicon-settings:before {
|
240 |
+
content: '\e849'; }
|
241 |
+
|
242 |
+
.eicon-section:before {
|
243 |
+
content: '\e84a'; }
|
244 |
+
|
245 |
+
.eicon-photo-library:before {
|
246 |
+
content: '\e84b'; }
|
247 |
+
|
248 |
+
.eicon-elementor:before {
|
249 |
+
content: '\e84c'; }
|
250 |
+
|
251 |
+
.eicon-menu:before {
|
252 |
+
content: '\e84d'; }
|
253 |
+
|
254 |
+
.eicon-plus:before {
|
255 |
+
content: '\e84e'; }
|
256 |
+
|
257 |
+
.eicon-apps:before {
|
258 |
+
content: '\e84f'; }
|
259 |
+
|
260 |
+
.eicon-tabs:before {
|
261 |
+
content: '\e850'; }
|
262 |
+
|
263 |
+
.eicon-elementor-square:before {
|
264 |
+
content: '\e851'; }
|
265 |
+
|
266 |
+
#wpadminbar #wp-admin-bar-elementor_edit_page > .ab-item::before {
|
267 |
+
content: "\e84c";
|
268 |
+
font-family: eicon;
|
269 |
+
font-size: 14px;
|
270 |
+
margin-top: 5px; }
|
271 |
+
|
272 |
+
#adminmenu #toplevel_page_elementor div.wp-menu-image:before {
|
273 |
+
content: "\e84c";
|
274 |
+
font-family: eicon;
|
275 |
+
font-size: 14px;
|
276 |
+
margin-top: 3px; }
|
277 |
+
|
278 |
+
#elementor-switch-mode {
|
279 |
+
margin: 15px 0; }
|
280 |
+
#elementor-switch-mode button {
|
281 |
+
display: none; }
|
282 |
+
#elementor-switch-mode button.elementor-switch-mode-button {
|
283 |
+
padding: 0 30px;
|
284 |
+
height: 50px;
|
285 |
+
line-height: 50px; }
|
286 |
+
#elementor-switch-mode button.elementor-switch-mode-button span {
|
287 |
+
display: none; }
|
288 |
+
#elementor-switch-mode.elementor-editor-inactive button.elementor-switch-mode-button {
|
289 |
+
display: none;
|
290 |
+
background-color: #B40B51;
|
291 |
+
color: #ffffff;
|
292 |
+
border-color: #7D1036;
|
293 |
+
box-shadow: 0 2px 0 #7D1036;
|
294 |
+
text-shadow: none; }
|
295 |
+
|
296 |
+
#elementor-editor {
|
297 |
+
background-color: #F7F7F7;
|
298 |
+
border: 1px solid #DDD;
|
299 |
+
height: auto;
|
300 |
+
width: 100%;
|
301 |
+
display: none;
|
302 |
+
transition: all 0.5s ease; }
|
303 |
+
#elementor-editor.elementor-editor-active {
|
304 |
+
display: table; }
|
305 |
+
#elementor-editor:hover {
|
306 |
+
background-color: #ffffff; }
|
307 |
+
#elementor-editor .elementor-go-to-edit-page {
|
308 |
+
display: table-cell;
|
309 |
+
vertical-align: middle;
|
310 |
+
text-align: center; }
|
311 |
+
#elementor-editor .elementor-go-to-edit-page > a {
|
312 |
+
padding: 70px 0;
|
313 |
+
display: block;
|
314 |
+
text-decoration: none; }
|
315 |
+
#elementor-editor .elementor-go-to-edit-page > a span.elementor-go-to-edit-text {
|
316 |
+
background-image: url(../images/go-to-edit.png);
|
317 |
+
background-position: top center;
|
318 |
+
background-repeat: no-repeat;
|
319 |
+
padding-top: 135px;
|
320 |
+
font-size: 20px;
|
321 |
+
text-transform: uppercase;
|
322 |
+
color: #B40B51;
|
323 |
+
display: block; }
|
324 |
+
|
325 |
+
/*= Elementor System Info
|
326 |
+
---------------------------------------*/
|
327 |
+
#elementor-system-info {
|
328 |
+
padding: 15px; }
|
329 |
+
#elementor-system-info .elementor-system-info-section {
|
330 |
+
margin-bottom: 10px; }
|
331 |
+
#elementor-system-info .elementor-system-info-section > .elementor-system-info-report-name {
|
332 |
+
padding-left: 10px;
|
333 |
+
border-bottom: 1px solid #e1e1e1; }
|
334 |
+
#elementor-system-info .elementor-system-info-report-name {
|
335 |
+
text-transform: uppercase;
|
336 |
+
font-size: 14px;
|
337 |
+
margin: 0;
|
338 |
+
line-height: 2; }
|
339 |
+
#elementor-system-info .elementor-system-info-report-row {
|
340 |
+
overflow: hidden;
|
341 |
+
padding: 5px 0; }
|
342 |
+
#elementor-system-info .elementor-system-info-report-row > * {
|
343 |
+
float: left; }
|
344 |
+
#elementor-system-info .elementor-system-info-report-field, #elementor-system-info .elementor-system-info-field-recommendation {
|
345 |
+
padding-left: 10px;
|
346 |
+
color: #7F7F7F; }
|
347 |
+
#elementor-system-info .elementor-system-info-report-fields {
|
348 |
+
padding-left: 20px; }
|
349 |
+
#elementor-system-info .elementor-system-info-plugin-name {
|
350 |
+
color: #000; }
|
351 |
+
#elementor-system-info .elementor-system-info-plugin-properties {
|
352 |
+
padding: 10px; }
|
353 |
+
#elementor-system-info #elementor-system-info-raw-code {
|
354 |
+
width: 100%;
|
355 |
+
height: 200px; }
|
356 |
+
#elementor-system-info #elementor-system-info-raw-code-label {
|
357 |
+
padding: 5px;
|
358 |
+
display: block; }
|
359 |
+
|
360 |
+
/*# sourceMappingURL=admin.css.map */
|
assets/css/admin.css.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"sources":["../scss/admin/_eicon.scss","../scss/admin/admin.scss","../scss/helpers/mixins.scss","../scss/admin/_system_info.scss"],"names":[],"mappings":"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","file":"admin.css"}
|
assets/css/admin.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
@font-face{font-family:eicon;src:url(../fonts/eicon/eicon.eot?0.11);src:url(../fonts/eicon/eicon.eot?0.11#iefix) format("embedded-opentype"),url(../fonts/eicon/eicon.woff2?0.11) format("woff2"),url(../fonts/eicon/eicon.woff?0.11) format("woff"),url(../fonts/eicon/eicon.ttf?0.11) format("truetype"),url(../fonts/eicon/eicon.svg?0.11#eicon) format("svg");font-weight:400;font-style:normal}[class*=" eicon-"],[class^=eicon-]{display:inline-block;font-family:eicon;font-size:inherit;font-weight:400;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.eicon-c1-1:before{content:'\e800'}.eicon-c2-1:before{content:'\e801'}.eicon-c2-2:before{content:'\e802'}.eicon-c2-3:before{content:'\e803'}.eicon-c2-4:before{content:'\e804'}.eicon-c2-5:before{content:'\e805'}.eicon-c2-6:before{content:'\e806'}.eicon-c2-7:before{content:'\e807'}.eicon-c2-8:before{content:'\e808'}.eicon-c2-9:before{content:'\e809'}.eicon-c3-1:before{content:'\e80a'}.eicon-c3-2:before{content:'\e80b'}.eicon-c3-3:before{content:'\e80c'}.eicon-c3-4:before{content:'\e80d'}.eicon-c3-5:before{content:'\e80e'}.eicon-c3-6:before{content:'\e80f'}.eicon-c3-7:before,.eicon-c3-8:before{content:'\e811'}.eicon-c3-9:before{content:'\e812'}.eicon-c4-1:before{content:'\e813'}.eicon-c4-2:before{content:'\e814'}.eicon-c4-3:before{content:'\e815'}.eicon-c4-4:before{content:'\e816'}.eicon-c4-5:before{content:'\e817'}.eicon-c4-6:before{content:'\e818'}.eicon-c4-7:before{content:'\e819'}.eicon-c4-8:before{content:'\e81a'}.eicon-c4-9:before{content:'\e81b'}.eicon-c4-11:before{content:'\e81c';content:'\e81d'}.eicon-c5-1:before{content:'\e81e'}.eicon-c5-2:before{content:'\e81f'}.eicon-c5-3:before{content:'\e820'}.eicon-c5-4:before{content:'\e821'}.eicon-c5-5:before{content:'\e822'}.eicon-c5-6:before{content:'\e823'}.eicon-c5-7:before{content:'\e824'}.eicon-c5-8:before{content:'\e825'}.eicon-c5-9:before{content:'\e826'}.eicon-c5-11:before{content:'\e827'}.eicon-c6-1:before{content:'\e828'}.eicon-c6-2:before{content:'\e829'}.eicon-c6-3:before{content:'\e82a'}.eicon-c6-4:before{content:'\e82b'}.eicon-c6-5:before{content:'\e82c'}.eicon-c6-6:before{content:'\e82d'}.eicon-c6-7:before{content:'\e82e'}.eicon-c6-8:before{content:'\e82f'}.eicon-c6-9:before{content:'\e830'}.eicon-c6-11:before{content:'\e831';content:'\e832'}.eicon-c7-1:before{content:'\e833'}.eicon-c8-1:before{content:'\e834'}.eicon-c9-1:before{content:'\e835'}.eicon-c11-1:before{content:'\e836'}.eicon-anchor:before{content:'\e837'}.eicon-wordpress:before{content:'\e838'}.eicon-insert-image:before{content:'\e839'}.eicon-align-left:before{content:'\e83a'}.eicon-digital-alarm-clock:before{content:'\e83b'}.eicon-favorite:before{content:'\e83c'}.eicon-firewall-on:before{content:'\e83d'}.eicon-google-maps:before{content:'\e83e'}.eicon-text-size:before{content:'\e83f'}.eicon-youtube:before{content:'\e840'}.eicon-success-chart:before{content:'\e841'}.eicon-type-tool:before{content:'\e842'}.eicon-bullet-list:before{content:'\e843'}.eicon-click:before{content:'\e844'}.eicon-coding:before{content:'\e845'}.eicon-accordion:before{content:'\e846'}.eicon-divider:before{content:'\e847'}.eicon-toggle:before{content:'\e848'}.eicon-settings:before{content:'\e849'}.eicon-section:before{content:'\e84a'}.eicon-photo-library:before{content:'\e84b'}.eicon-elementor:before{content:'\e84c'}.eicon-menu:before{content:'\e84d'}.eicon-plus:before{content:'\e84e'}.eicon-apps:before{content:'\e84f'}.eicon-tabs:before{content:'\e850'}.eicon-elementor-square:before{content:'\e851'}#wpadminbar #wp-admin-bar-elementor_edit_page>.ab-item:before{content:"\e84c";font-family:eicon;font-size:14px;margin-top:5px}#adminmenu #toplevel_page_elementor div.wp-menu-image:before{content:"\e84c";font-family:eicon;font-size:14px;margin-top:3px}#elementor-switch-mode{margin:15px 0}#elementor-switch-mode button{display:none}#elementor-switch-mode button.elementor-switch-mode-button{padding:0 30px;height:50px;line-height:50px}#elementor-switch-mode button.elementor-switch-mode-button span{display:none}#elementor-switch-mode.elementor-editor-inactive button.elementor-switch-mode-button{display:none;background-color:#b40b51;color:#fff;border-color:#7d1036;box-shadow:0 2px 0 #7d1036;text-shadow:none}#elementor-editor{background-color:#f7f7f7;border:1px solid #ddd;height:auto;width:100%;display:none;transition:all .5s ease}#elementor-editor.elementor-editor-active{display:table}#elementor-editor:hover{background-color:#fff}#elementor-editor .elementor-go-to-edit-page{display:table-cell;vertical-align:middle;text-align:center}#elementor-editor .elementor-go-to-edit-page>a{padding:70px 0;display:block;text-decoration:none}#elementor-editor .elementor-go-to-edit-page>a span.elementor-go-to-edit-text{background-image:url(../images/go-to-edit.png);background-position:top;background-repeat:no-repeat;padding-top:135px;font-size:20px;text-transform:uppercase;color:#b40b51;display:block}#elementor-system-info{padding:15px}#elementor-system-info .elementor-system-info-section{margin-bottom:10px}#elementor-system-info .elementor-system-info-section>.elementor-system-info-report-name{padding-left:10px;border-bottom:1px solid #e1e1e1}#elementor-system-info .elementor-system-info-report-name{text-transform:uppercase;font-size:14px;margin:0;line-height:2}#elementor-system-info .elementor-system-info-report-row{overflow:hidden;padding:5px 0}#elementor-system-info .elementor-system-info-report-row>*{float:left}#elementor-system-info .elementor-system-info-field-recommendation,#elementor-system-info .elementor-system-info-report-field{padding-left:10px;color:#7f7f7f}#elementor-system-info .elementor-system-info-report-fields{padding-left:20px}#elementor-system-info .elementor-system-info-plugin-name{color:#000}#elementor-system-info .elementor-system-info-plugin-properties{padding:10px}#elementor-system-info #elementor-system-info-raw-code{width:100%;height:200px}#elementor-system-info #elementor-system-info-raw-code-label{padding:5px;display:block}
|
assets/css/editor-preview-rtl.css
ADDED
@@ -0,0 +1,597 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@charset "UTF-8";
|
2 |
+
@font-face {
|
3 |
+
font-family: 'eicon';
|
4 |
+
src: url("../fonts/eicon/eicon.eot?0.11");
|
5 |
+
src: url("../fonts/eicon/eicon.eot?0.11#iefix") format("embedded-opentype"), url("../fonts/eicon/eicon.woff2?0.11") format("woff2"), url("../fonts/eicon/eicon.woff?0.11") format("woff"), url("../fonts/eicon/eicon.ttf?0.11") format("truetype"), url("../fonts/eicon/eicon.svg?0.11#eicon") format("svg");
|
6 |
+
font-weight: normal;
|
7 |
+
font-style: normal; }
|
8 |
+
[class^="eicon-"],
|
9 |
+
[class*=" eicon-"] {
|
10 |
+
display: inline-block;
|
11 |
+
font-family: eicon;
|
12 |
+
font-size: inherit;
|
13 |
+
font-weight: normal;
|
14 |
+
font-style: normal;
|
15 |
+
font-variant: normal;
|
16 |
+
line-height: 1;
|
17 |
+
text-rendering: auto;
|
18 |
+
-webkit-font-smoothing: antialiased;
|
19 |
+
-moz-osx-font-smoothing: grayscale; }
|
20 |
+
|
21 |
+
.eicon-c1-1:before {
|
22 |
+
content: '\e800'; }
|
23 |
+
|
24 |
+
.eicon-c2-1:before {
|
25 |
+
content: '\e801'; }
|
26 |
+
|
27 |
+
.eicon-c2-2:before {
|
28 |
+
content: '\e802'; }
|
29 |
+
|
30 |
+
.eicon-c2-3:before {
|
31 |
+
content: '\e803'; }
|
32 |
+
|
33 |
+
.eicon-c2-4:before {
|
34 |
+
content: '\e804'; }
|
35 |
+
|
36 |
+
.eicon-c2-5:before {
|
37 |
+
content: '\e805'; }
|
38 |
+
|
39 |
+
.eicon-c2-6:before {
|
40 |
+
content: '\e806'; }
|
41 |
+
|
42 |
+
.eicon-c2-7:before {
|
43 |
+
content: '\e807'; }
|
44 |
+
|
45 |
+
.eicon-c2-8:before {
|
46 |
+
content: '\e808'; }
|
47 |
+
|
48 |
+
.eicon-c2-9:before {
|
49 |
+
content: '\e809'; }
|
50 |
+
|
51 |
+
.eicon-c3-1:before {
|
52 |
+
content: '\e80a'; }
|
53 |
+
|
54 |
+
.eicon-c3-2:before {
|
55 |
+
content: '\e80b'; }
|
56 |
+
|
57 |
+
.eicon-c3-3:before {
|
58 |
+
content: '\e80c'; }
|
59 |
+
|
60 |
+
.eicon-c3-4:before {
|
61 |
+
content: '\e80d'; }
|
62 |
+
|
63 |
+
.eicon-c3-5:before {
|
64 |
+
content: '\e80e'; }
|
65 |
+
|
66 |
+
.eicon-c3-6:before {
|
67 |
+
content: '\e80f'; }
|
68 |
+
|
69 |
+
.eicon-c3-7:before {
|
70 |
+
content: '\e811'; }
|
71 |
+
|
72 |
+
.eicon-c3-8:before {
|
73 |
+
content: '\e811'; }
|
74 |
+
|
75 |
+
.eicon-c3-9:before {
|
76 |
+
content: '\e812'; }
|
77 |
+
|
78 |
+
.eicon-c4-1:before {
|
79 |
+
content: '\e813'; }
|
80 |
+
|
81 |
+
.eicon-c4-2:before {
|
82 |
+
content: '\e814'; }
|
83 |
+
|
84 |
+
.eicon-c4-3:before {
|
85 |
+
content: '\e815'; }
|
86 |
+
|
87 |
+
.eicon-c4-4:before {
|
88 |
+
content: '\e816'; }
|
89 |
+
|
90 |
+
.eicon-c4-5:before {
|
91 |
+
content: '\e817'; }
|
92 |
+
|
93 |
+
.eicon-c4-6:before {
|
94 |
+
content: '\e818'; }
|
95 |
+
|
96 |
+
.eicon-c4-7:before {
|
97 |
+
content: '\e819'; }
|
98 |
+
|
99 |
+
.eicon-c4-8:before {
|
100 |
+
content: '\e81a'; }
|
101 |
+
|
102 |
+
.eicon-c4-9:before {
|
103 |
+
content: '\e81b'; }
|
104 |
+
|
105 |
+
.eicon-c4-11:before {
|
106 |
+
content: '\e81c'; }
|
107 |
+
|
108 |
+
.eicon-c4-11:before {
|
109 |
+
content: '\e81d'; }
|
110 |
+
|
111 |
+
.eicon-c5-1:before {
|
112 |
+
content: '\e81e'; }
|
113 |
+
|
114 |
+
.eicon-c5-2:before {
|
115 |
+
content: '\e81f'; }
|
116 |
+
|
117 |
+
.eicon-c5-3:before {
|
118 |
+
content: '\e820'; }
|
119 |
+
|
120 |
+
.eicon-c5-4:before {
|
121 |
+
content: '\e821'; }
|
122 |
+
|
123 |
+
.eicon-c5-5:before {
|
124 |
+
content: '\e822'; }
|
125 |
+
|
126 |
+
.eicon-c5-6:before {
|
127 |
+
content: '\e823'; }
|
128 |
+
|
129 |
+
.eicon-c5-7:before {
|
130 |
+
content: '\e824'; }
|
131 |
+
|
132 |
+
.eicon-c5-8:before {
|
133 |
+
content: '\e825'; }
|
134 |
+
|
135 |
+
.eicon-c5-9:before {
|
136 |
+
content: '\e826'; }
|
137 |
+
|
138 |
+
.eicon-c5-11:before {
|
139 |
+
content: '\e827'; }
|
140 |
+
|
141 |
+
.eicon-c6-1:before {
|
142 |
+
content: '\e828'; }
|
143 |
+
|
144 |
+
.eicon-c6-2:before {
|
145 |
+
content: '\e829'; }
|
146 |
+
|
147 |
+
.eicon-c6-3:before {
|
148 |
+
content: '\e82a'; }
|
149 |
+
|
150 |
+
.eicon-c6-4:before {
|
151 |
+
content: '\e82b'; }
|
152 |
+
|
153 |
+
.eicon-c6-5:before {
|
154 |
+
content: '\e82c'; }
|
155 |
+
|
156 |
+
.eicon-c6-6:before {
|
157 |
+
content: '\e82d'; }
|
158 |
+
|
159 |
+
.eicon-c6-7:before {
|
160 |
+
content: '\e82e'; }
|
161 |
+
|
162 |
+
.eicon-c6-8:before {
|
163 |
+
content: '\e82f'; }
|
164 |
+
|
165 |
+
.eicon-c6-9:before {
|
166 |
+
content: '\e830'; }
|
167 |
+
|
168 |
+
.eicon-c6-11:before {
|
169 |
+
content: '\e831'; }
|
170 |
+
|
171 |
+
.eicon-c6-11:before {
|
172 |
+
content: '\e832'; }
|
173 |
+
|
174 |
+
.eicon-c7-1:before {
|
175 |
+
content: '\e833'; }
|
176 |
+
|
177 |
+
.eicon-c8-1:before {
|
178 |
+
content: '\e834'; }
|
179 |
+
|
180 |
+
.eicon-c9-1:before {
|
181 |
+
content: '\e835'; }
|
182 |
+
|
183 |
+
.eicon-c11-1:before {
|
184 |
+
content: '\e836'; }
|
185 |
+
|
186 |
+
.eicon-anchor:before {
|
187 |
+
content: '\e837'; }
|
188 |
+
|
189 |
+
.eicon-wordpress:before {
|
190 |
+
content: '\e838'; }
|
191 |
+
|
192 |
+
.eicon-insert-image:before {
|
193 |
+
content: '\e839'; }
|
194 |
+
|
195 |
+
.eicon-align-left:before {
|
196 |
+
content: '\e83a'; }
|
197 |
+
|
198 |
+
.eicon-digital-alarm-clock:before {
|
199 |
+
content: '\e83b'; }
|
200 |
+
|
201 |
+
.eicon-favorite:before {
|
202 |
+
content: '\e83c'; }
|
203 |
+
|
204 |
+
.eicon-firewall-on:before {
|
205 |
+
content: '\e83d'; }
|
206 |
+
|
207 |
+
.eicon-google-maps:before {
|
208 |
+
content: '\e83e'; }
|
209 |
+
|
210 |
+
.eicon-text-size:before {
|
211 |
+
content: '\e83f'; }
|
212 |
+
|
213 |
+
.eicon-youtube:before {
|
214 |
+
content: '\e840'; }
|
215 |
+
|
216 |
+
.eicon-success-chart:before {
|
217 |
+
content: '\e841'; }
|
218 |
+
|
219 |
+
.eicon-type-tool:before {
|
220 |
+
content: '\e842'; }
|
221 |
+
|
222 |
+
.eicon-bullet-list:before {
|
223 |
+
content: '\e843'; }
|
224 |
+
|
225 |
+
.eicon-click:before {
|
226 |
+
content: '\e844'; }
|
227 |
+
|
228 |
+
.eicon-coding:before {
|
229 |
+
content: '\e845'; }
|
230 |
+
|
231 |
+
.eicon-accordion:before {
|
232 |
+
content: '\e846'; }
|
233 |
+
|
234 |
+
.eicon-divider:before {
|
235 |
+
content: '\e847'; }
|
236 |
+
|
237 |
+
.eicon-toggle:before {
|
238 |
+
content: '\e848'; }
|
239 |
+
|
240 |
+
.eicon-settings:before {
|
241 |
+
content: '\e849'; }
|
242 |
+
|
243 |
+
.eicon-section:before {
|
244 |
+
content: '\e84a'; }
|
245 |
+
|
246 |
+
.eicon-photo-library:before {
|
247 |
+
content: '\e84b'; }
|
248 |
+
|
249 |
+
.eicon-elementor:before {
|
250 |
+
content: '\e84c'; }
|
251 |
+
|
252 |
+
.eicon-menu:before {
|
253 |
+
content: '\e84d'; }
|
254 |
+
|
255 |
+
.eicon-plus:before {
|
256 |
+
content: '\e84e'; }
|
257 |
+
|
258 |
+
.eicon-apps:before {
|
259 |
+
content: '\e84f'; }
|
260 |
+
|
261 |
+
.eicon-tabs:before {
|
262 |
+
content: '\e850'; }
|
263 |
+
|
264 |
+
.eicon-elementor-square:before {
|
265 |
+
content: '\e851'; }
|
266 |
+
|
267 |
+
html.elementor-html {
|
268 |
+
margin-top: 0 !important; }
|
269 |
+
|
270 |
+
body.layout-section .entry-content {
|
271 |
+
overflow: visible; }
|
272 |
+
body.elementor-editor-active #elementor {
|
273 |
+
position: relative; }
|
274 |
+
body.elementor-editor-active #elementor .elementor-element-empty .elementor-sortable-placeholder {
|
275 |
+
display: none; }
|
276 |
+
body.elementor-editor-active #elementor .elementor-empty-view {
|
277 |
+
display: table;
|
278 |
+
width: 100%;
|
279 |
+
height: 100%;
|
280 |
+
position: relative;
|
281 |
+
z-index: 1; }
|
282 |
+
body.elementor-editor-active #elementor .elementor-first-add {
|
283 |
+
display: table-cell;
|
284 |
+
vertical-align: middle;
|
285 |
+
text-align: center;
|
286 |
+
border: 1px dashed #d5dadf; }
|
287 |
+
body.elementor-editor-active #elementor .elementor-first-add .elementor-icon {
|
288 |
+
font-size: 19px;
|
289 |
+
color: #a4afb7;
|
290 |
+
cursor: pointer; }
|
291 |
+
body.elementor-editor-active #elementor .elementor-element > .elementor-element-overlay {
|
292 |
+
position: absolute;
|
293 |
+
top: 0;
|
294 |
+
right: 0;
|
295 |
+
left: 0;
|
296 |
+
bottom: 0;
|
297 |
+
z-index: 1; }
|
298 |
+
body.elementor-editor-active #elementor .elementor-element.elementor-widget-empty {
|
299 |
+
height: 50px;
|
300 |
+
background: #ffffff; }
|
301 |
+
body.elementor-editor-active #elementor .elementor-element.elementor-widget-empty:after {
|
302 |
+
position: absolute;
|
303 |
+
content: '';
|
304 |
+
left: 0;
|
305 |
+
right: 0;
|
306 |
+
top: 0;
|
307 |
+
bottom: 0;
|
308 |
+
background-color: rgba(230, 233, 236, 0.8); }
|
309 |
+
body.elementor-editor-active #elementor .elementor-element.elementor-widget-empty .elementor-widget-empty-icon {
|
310 |
+
position: absolute;
|
311 |
+
height: 25px;
|
312 |
+
width: 25px;
|
313 |
+
top: 0;
|
314 |
+
bottom: 0;
|
315 |
+
right: 0;
|
316 |
+
left: 0;
|
317 |
+
margin: auto;
|
318 |
+
color: #818a91;
|
319 |
+
font-size: 22px; }
|
320 |
+
body.elementor-editor-active #elementor .elementor-element:not(:hover):not(.elementor-element-editable) > .elementor-element-overlay .elementor-editor-element-settings-list {
|
321 |
+
display: none; }
|
322 |
+
body.elementor-editor-active #elementor .elementor-element:not(:hover):not(.ui-resizable-resizing) > .elementor-element-overlay .column-title {
|
323 |
+
display: none; }
|
324 |
+
@media (max-width: 1023px) {
|
325 |
+
body.elementor-editor-active #elementor .elementor-element > .elementor-element-overlay .column-title {
|
326 |
+
display: none; } }
|
327 |
+
body.elementor-editor-active #elementor .elementor-element[data-side] {
|
328 |
+
animation: increase-border .6s;
|
329 |
+
animation-timing-function: ease-out; }
|
330 |
+
body.elementor-editor-active #elementor .elementor-element[data-side="top"], body.elementor-editor-active #elementor .elementor-element[data-side="bottom"] + .elementor-element {
|
331 |
+
border-top: 4px solid #71d7f7; }
|
332 |
+
body.elementor-editor-active #elementor .elementor-element[data-side="bottom"]:last-child {
|
333 |
+
border-bottom: 4px solid #71d7f7; }
|
334 |
+
@media (min-width: 768px) {
|
335 |
+
body.elementor-editor-active #elementor .elementor-section:not(.elementor-section-height-full) .elementor-column-wrap.elementor-element-empty, body.elementor-editor-active #elementor .elementor-section:not(.elementor-section-height-full) .elementor-column-wrap.elementor-element-empty .elementor-widget-wrap {
|
336 |
+
position: absolute;
|
337 |
+
width: 100%;
|
338 |
+
height: 100%;
|
339 |
+
top: 0; } }
|
340 |
+
body.elementor-editor-active #elementor .elementor-top-column .elementor-widget-wrap .elementor-inner-section {
|
341 |
+
margin-top: 20px; }
|
342 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings {
|
343 |
+
position: absolute;
|
344 |
+
overflow: hidden; }
|
345 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list {
|
346 |
+
display: table;
|
347 |
+
table-layout: fixed;
|
348 |
+
height: 20px;
|
349 |
+
list-style: none;
|
350 |
+
margin: 0;
|
351 |
+
padding: 0;
|
352 |
+
font-family: Arial, Helvetica, sans-serif;
|
353 |
+
line-height: 1; }
|
354 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list:not(.elementor-editor-section-settings-list) {
|
355 |
+
background-color: #495157; }
|
356 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list:not(.elementor-editor-section-settings-list) .elementor-editor-element-setting:not(:last-child) {
|
357 |
+
border-left: 1px solid #556068; }
|
358 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list:not(.elementor-editor-section-settings-list) .elementor-editor-element-setting > a:hover {
|
359 |
+
background-color: #556068; }
|
360 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list {
|
361 |
+
background-color: #a4afb7; }
|
362 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list .elementor-editor-element-setting:not(:last-child) {
|
363 |
+
border-left: 1px solid #c2cbd2; }
|
364 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list .elementor-editor-element-setting.elementor-editor-element-trigger:not(.elementor-active) {
|
365 |
+
border: none; }
|
366 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list .elementor-editor-element-setting > a:hover {
|
367 |
+
background-color: #c2cbd2; }
|
368 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list .fa {
|
369 |
+
color: #ffffff; }
|
370 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-setting {
|
371 |
+
display: table-cell;
|
372 |
+
vertical-align: middle;
|
373 |
+
width: 35px;
|
374 |
+
text-align: center;
|
375 |
+
padding: 0;
|
376 |
+
margin: 0; }
|
377 |
+
@media (max-width: 1023px) {
|
378 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-setting:not(.elementor-editor-element-edit) {
|
379 |
+
display: none; } }
|
380 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-setting > a {
|
381 |
+
padding: 8.5px 0;
|
382 |
+
display: inline-block;
|
383 |
+
width: 100%;
|
384 |
+
font-size: 11px;
|
385 |
+
color: #fff; }
|
386 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-remove .fa {
|
387 |
+
color: #f00; }
|
388 |
+
body.elementor-editor-active #elementor .elementor-editor-column-settings {
|
389 |
+
right: -1px;
|
390 |
+
z-index: 1;
|
391 |
+
bottom: 100%;
|
392 |
+
margin-bottom: 1px;
|
393 |
+
transform: translateY(1px);
|
394 |
+
border-radius: 3px 3px 0 0; }
|
395 |
+
body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-settings-list {
|
396 |
+
float: right; }
|
397 |
+
body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger:not(.elementor-active) ~ .elementor-editor-element-setting {
|
398 |
+
display: none; }
|
399 |
+
body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger > a {
|
400 |
+
cursor: move;
|
401 |
+
padding: 8.5px; }
|
402 |
+
body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger > a:hover:after {
|
403 |
+
content: "";
|
404 |
+
font-family: 'FontAwesome';
|
405 |
+
margin-right: 5px; }
|
406 |
+
body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger.elementor-active > a:after {
|
407 |
+
content: "";
|
408 |
+
font-family: 'FontAwesome';
|
409 |
+
margin-right: 5px; }
|
410 |
+
body.elementor-editor-active #elementor .elementor-editor-widget-settings {
|
411 |
+
z-index: 2;
|
412 |
+
border-radius: 3px; }
|
413 |
+
body.elementor-editor-active #elementor .elementor-editor-widget-settings:not(.elementor-open) {
|
414 |
+
display: none; }
|
415 |
+
@media (max-width: 1023px) {
|
416 |
+
body.elementor-editor-active #elementor .elementor-editor-element-setting:not(.elementor-editor-element-edit) {
|
417 |
+
display: none; } }
|
418 |
+
body.elementor-editor-active #elementor .elementor-element-label {
|
419 |
+
position: absolute;
|
420 |
+
left: -1px;
|
421 |
+
top: -1px;
|
422 |
+
background-color: #71d7f7;
|
423 |
+
color: #fff;
|
424 |
+
font-family: Arial, Helvetica, sans-serif;
|
425 |
+
font-size: 9px;
|
426 |
+
line-height: 1;
|
427 |
+
padding: 3px 6px; }
|
428 |
+
body.elementor-editor-active #elementor .elementor-section-filled .elementor-editor-column-settings .elementor-editor-element-add, body.elementor-editor-active #elementor .elementor-section-filled .elementor-editor-column-settings .elementor-editor-element-duplicate {
|
429 |
+
display: none; }
|
430 |
+
body.elementor-editor-active #elementor .elementor-section-filled .elementor-sortable-placeholder.elementor-column {
|
431 |
+
display: none; }
|
432 |
+
body.elementor-editor-active #elementor .elementor-section-filled .elementor-row.elementor-draggable-over {
|
433 |
+
border: 1px solid #f00; }
|
434 |
+
body.elementor-editor-active #elementor .elementor-row {
|
435 |
+
min-height: 100px; }
|
436 |
+
body.elementor-editor-active #elementor .elementor-column:hover > .elementor-element-overlay, body.elementor-editor-active #elementor .elementor-column.elementor-element-editable > .elementor-element-overlay {
|
437 |
+
border: 1px solid #ffffff; }
|
438 |
+
body.elementor-editor-active #elementor .elementor-column:hover > .elementor-element-overlay:after, body.elementor-editor-active #elementor .elementor-column.elementor-element-editable > .elementor-element-overlay:after {
|
439 |
+
position: absolute;
|
440 |
+
content: '';
|
441 |
+
left: 0;
|
442 |
+
right: 0;
|
443 |
+
top: 0;
|
444 |
+
bottom: 0;
|
445 |
+
width: 100%;
|
446 |
+
height: 100%;
|
447 |
+
outline: 1px dashed #373a3c; }
|
448 |
+
body.elementor-editor-active #elementor .elementor-column.elementor-dragging-on-child > .elementor-element-overlay {
|
449 |
+
border: 1px solid #71d7f7; }
|
450 |
+
body.elementor-editor-active #elementor .elementor-column.elementor-dragging-on-child > .elementor-element-overlay:after {
|
451 |
+
display: none; }
|
452 |
+
body.elementor-editor-active #elementor .elementor-column .column-title {
|
453 |
+
position: absolute;
|
454 |
+
bottom: 100%;
|
455 |
+
left: 0;
|
456 |
+
color: #999;
|
457 |
+
font-family: Arial, Helvetica, sans-serif;
|
458 |
+
line-height: 1;
|
459 |
+
font-size: 12px;
|
460 |
+
font-style: italic; }
|
461 |
+
body.elementor-editor-active #elementor .elementor-column > .ui-resizable-e, body.elementor-editor-active #elementor .elementor-column > .ui-resizable-w {
|
462 |
+
cursor: ew-resize;
|
463 |
+
width: 7px;
|
464 |
+
position: absolute;
|
465 |
+
left: -5px;
|
466 |
+
top: 0;
|
467 |
+
height: 100%; }
|
468 |
+
body.elementor-editor-active #elementor .elementor-column:last-of-type > .ui-resizable-e {
|
469 |
+
display: none !important; }
|
470 |
+
@media (max-width: 1023px) {
|
471 |
+
body.elementor-editor-active #elementor .elementor-column > .ui-resizable-e {
|
472 |
+
display: none !important; } }
|
473 |
+
@media (min-width: 768px) {
|
474 |
+
body.elementor-editor-active .elementor-column-wrap.elementor-element-empty .elementor-widget-wrap {
|
475 |
+
padding: 10px; } }
|
476 |
+
body.elementor-editor-active .elementor-widget.elementor-loading {
|
477 |
+
opacity: .3; }
|
478 |
+
body.elementor-editor-active .elementor-widget:not(.elementor-loading) {
|
479 |
+
transition: all .1s; }
|
480 |
+
body.elementor-editor-active .elementor-widget.elementor-element-editable > .elementor-element-overlay, body.elementor-editor-active .elementor-widget:hover > .elementor-element-overlay {
|
481 |
+
border: 1px solid #71d7f7; }
|
482 |
+
body.elementor-editor-active .elementor-widget:not(.elementor-element-editable):not(:hover) .elementor-element-label {
|
483 |
+
display: none; }
|
484 |
+
body.elementor-editor-active .elementor-column.elementor-dragging div.elementor-column-wrap {
|
485 |
+
min-height: 50px; }
|
486 |
+
body.elementor-editor-active div.handle {
|
487 |
+
display: none; }
|
488 |
+
body.elementor-editor-active .elementor-sortable-placeholder {
|
489 |
+
background: #71d7f7;
|
490 |
+
transition-timing-function: ease-out; }
|
491 |
+
body.elementor-editor-active .elementor-sortable-placeholder:not(.elementor-column) {
|
492 |
+
height: 5px; }
|
493 |
+
body.elementor-editor-active .elementor-sortable-placeholder.elementor-column {
|
494 |
+
width: 5px; }
|
495 |
+
body.elementor-editor-active .elementor-sortable-helper {
|
496 |
+
position: absolute;
|
497 |
+
background: rgba(73, 81, 87, 0.85);
|
498 |
+
display: table;
|
499 |
+
table-layout: fixed;
|
500 |
+
color: #fff;
|
501 |
+
line-height: 50px;
|
502 |
+
border-radius: 3px; }
|
503 |
+
body.elementor-editor-active .elementor-sortable-helper .fa {
|
504 |
+
font-size: 25px;
|
505 |
+
width: 60px;
|
506 |
+
text-align: center; }
|
507 |
+
body.elementor-editor-active .elementor-sortable-helper > * {
|
508 |
+
display: table-cell;
|
509 |
+
vertical-align: middle; }
|
510 |
+
body.elementor-editor-active .elementor-draggable-over:not([data-dragged-element="section"]):not([data-dragged-is-inner="true"]) > .elementor-empty-view > .elementor-first-add:after,
|
511 |
+
body.elementor-editor-active .elementor-first-add[data-side]:after {
|
512 |
+
content: '';
|
513 |
+
height: 4px;
|
514 |
+
display: block;
|
515 |
+
background-color: #71d7f7; }
|
516 |
+
body.elementor-editor-active .elementor-draggable-over:not([data-dragged-element="section"]):not([data-dragged-is-inner="true"]) > .elementor-empty-view > .elementor-first-add .elementor-icon,
|
517 |
+
body.elementor-editor-active .elementor-first-add[data-side] .elementor-icon {
|
518 |
+
display: none; }
|
519 |
+
body.elementor-editor-active .elementor-draggable-over[data-dragged-element="section"][data-dragged-is-inner="true"] .elementor-sortable-placeholder {
|
520 |
+
display: none; }
|
521 |
+
body.elementor-editor-active #elementor-add-section {
|
522 |
+
background-color: rgba(255, 255, 255, 0.5);
|
523 |
+
margin: 60px auto;
|
524 |
+
padding: 40px 0;
|
525 |
+
max-width: 1140px;
|
526 |
+
position: relative; }
|
527 |
+
body.elementor-editor-active #elementor-add-section:not([data-side]) {
|
528 |
+
border: 2px dashed #d5dadf; }
|
529 |
+
body.elementor-editor-active #elementor-add-section[data-side] {
|
530 |
+
border: 3px dashed #71d7f7; }
|
531 |
+
body.elementor-editor-active #elementor-add-section-inner {
|
532 |
+
text-align: center;
|
533 |
+
margin-top: 10px; }
|
534 |
+
body.elementor-editor-active #elementor-add-section-button {
|
535 |
+
background-color: #9b0a46;
|
536 |
+
background-image: none;
|
537 |
+
color: #fff;
|
538 |
+
font-size: 13px;
|
539 |
+
font-family: Arial, Helvetica, sans-serif;
|
540 |
+
line-height: 1;
|
541 |
+
text-transform: uppercase;
|
542 |
+
font-weight: normal;
|
543 |
+
height: 40px;
|
544 |
+
width: 170px;
|
545 |
+
padding: 0;
|
546 |
+
border: none;
|
547 |
+
border-radius: 3px;
|
548 |
+
cursor: pointer; }
|
549 |
+
body.elementor-editor-active #elementor-add-section-button:hover {
|
550 |
+
opacity: 0.85;
|
551 |
+
box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); }
|
552 |
+
body.elementor-editor-active #elementor-add-section-button:active {
|
553 |
+
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.1); }
|
554 |
+
body.elementor-editor-active #elementor-add-section-drag-title {
|
555 |
+
font-family: Arial, Helvetica, sans-serif;
|
556 |
+
font-size: 13px;
|
557 |
+
font-weight: normal;
|
558 |
+
font-style: italic;
|
559 |
+
line-height: 1;
|
560 |
+
color: #556068;
|
561 |
+
margin-top: 10px; }
|
562 |
+
body.elementor-editor-active #elementor-select-preset-close {
|
563 |
+
position: absolute;
|
564 |
+
right: 20px;
|
565 |
+
top: 20px;
|
566 |
+
font-size: 20px;
|
567 |
+
cursor: pointer;
|
568 |
+
line-height: 1;
|
569 |
+
color: #d5dadf; }
|
570 |
+
body.elementor-editor-active #elementor-select-preset-title {
|
571 |
+
font-weight: 500;
|
572 |
+
color: #556068; }
|
573 |
+
body.elementor-editor-active ul#elementor-select-preset-list {
|
574 |
+
list-style: none;
|
575 |
+
padding: 0 25px;
|
576 |
+
margin: 20px auto 0;
|
577 |
+
overflow: hidden;
|
578 |
+
max-width: 700px; }
|
579 |
+
body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset {
|
580 |
+
cursor: pointer;
|
581 |
+
margin: 0;
|
582 |
+
padding: 10px;
|
583 |
+
float: right; }
|
584 |
+
body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset:hover {
|
585 |
+
color: #6d7882; }
|
586 |
+
body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset:not(:hover) {
|
587 |
+
color: #d5dadf; }
|
588 |
+
body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset [class^="eicon-"] {
|
589 |
+
font-size: 40px; }
|
590 |
+
body.elementor-editor-preview .elementor-element-overlay,
|
591 |
+
body.elementor-editor-preview .column-title,
|
592 |
+
body.elementor-editor-preview .elementor-empty,
|
593 |
+
body.elementor-editor-preview #elementor-add-section,
|
594 |
+
body.elementor-editor-preview .elementor-element-empty {
|
595 |
+
display: none; }
|
596 |
+
|
597 |
+
/*# sourceMappingURL=editor-preview-rtl.css.map */
|
assets/css/editor-preview-rtl.css.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"sources":["editor-preview-rtl.css","../scss/admin/_eicon.scss","../scss/editor/editor-preview.scss","../scss/helpers/variables.scss","../scss/helpers/direction.scss"],"names":[],"mappings":"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","file":"editor-preview-rtl.css"}
|
assets/css/editor-preview-rtl.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
@charset "UTF-8";@font-face{font-family:eicon;src:url(../fonts/eicon/eicon.eot?0.11);src:url(../fonts/eicon/eicon.eot?0.11#iefix) format("embedded-opentype"),url(../fonts/eicon/eicon.woff2?0.11) format("woff2"),url(../fonts/eicon/eicon.woff?0.11) format("woff"),url(../fonts/eicon/eicon.ttf?0.11) format("truetype"),url(../fonts/eicon/eicon.svg?0.11#eicon) format("svg");font-weight:400;font-style:normal}[class*=" eicon-"],[class^=eicon-]{display:inline-block;font-family:eicon;font-size:inherit;font-weight:400;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.eicon-c1-1:before{content:'\e800'}.eicon-c2-1:before{content:'\e801'}.eicon-c2-2:before{content:'\e802'}.eicon-c2-3:before{content:'\e803'}.eicon-c2-4:before{content:'\e804'}.eicon-c2-5:before{content:'\e805'}.eicon-c2-6:before{content:'\e806'}.eicon-c2-7:before{content:'\e807'}.eicon-c2-8:before{content:'\e808'}.eicon-c2-9:before{content:'\e809'}.eicon-c3-1:before{content:'\e80a'}.eicon-c3-2:before{content:'\e80b'}.eicon-c3-3:before{content:'\e80c'}.eicon-c3-4:before{content:'\e80d'}.eicon-c3-5:before{content:'\e80e'}.eicon-c3-6:before{content:'\e80f'}.eicon-c3-7:before,.eicon-c3-8:before{content:'\e811'}.eicon-c3-9:before{content:'\e812'}.eicon-c4-1:before{content:'\e813'}.eicon-c4-2:before{content:'\e814'}.eicon-c4-3:before{content:'\e815'}.eicon-c4-4:before{content:'\e816'}.eicon-c4-5:before{content:'\e817'}.eicon-c4-6:before{content:'\e818'}.eicon-c4-7:before{content:'\e819'}.eicon-c4-8:before{content:'\e81a'}.eicon-c4-9:before{content:'\e81b'}.eicon-c4-11:before{content:'\e81c';content:'\e81d'}.eicon-c5-1:before{content:'\e81e'}.eicon-c5-2:before{content:'\e81f'}.eicon-c5-3:before{content:'\e820'}.eicon-c5-4:before{content:'\e821'}.eicon-c5-5:before{content:'\e822'}.eicon-c5-6:before{content:'\e823'}.eicon-c5-7:before{content:'\e824'}.eicon-c5-8:before{content:'\e825'}.eicon-c5-9:before{content:'\e826'}.eicon-c5-11:before{content:'\e827'}.eicon-c6-1:before{content:'\e828'}.eicon-c6-2:before{content:'\e829'}.eicon-c6-3:before{content:'\e82a'}.eicon-c6-4:before{content:'\e82b'}.eicon-c6-5:before{content:'\e82c'}.eicon-c6-6:before{content:'\e82d'}.eicon-c6-7:before{content:'\e82e'}.eicon-c6-8:before{content:'\e82f'}.eicon-c6-9:before{content:'\e830'}.eicon-c6-11:before{content:'\e831';content:'\e832'}.eicon-c7-1:before{content:'\e833'}.eicon-c8-1:before{content:'\e834'}.eicon-c9-1:before{content:'\e835'}.eicon-c11-1:before{content:'\e836'}.eicon-anchor:before{content:'\e837'}.eicon-wordpress:before{content:'\e838'}.eicon-insert-image:before{content:'\e839'}.eicon-align-left:before{content:'\e83a'}.eicon-digital-alarm-clock:before{content:'\e83b'}.eicon-favorite:before{content:'\e83c'}.eicon-firewall-on:before{content:'\e83d'}.eicon-google-maps:before{content:'\e83e'}.eicon-text-size:before{content:'\e83f'}.eicon-youtube:before{content:'\e840'}.eicon-success-chart:before{content:'\e841'}.eicon-type-tool:before{content:'\e842'}.eicon-bullet-list:before{content:'\e843'}.eicon-click:before{content:'\e844'}.eicon-coding:before{content:'\e845'}.eicon-accordion:before{content:'\e846'}.eicon-divider:before{content:'\e847'}.eicon-toggle:before{content:'\e848'}.eicon-settings:before{content:'\e849'}.eicon-section:before{content:'\e84a'}.eicon-photo-library:before{content:'\e84b'}.eicon-elementor:before{content:'\e84c'}.eicon-menu:before{content:'\e84d'}.eicon-plus:before{content:'\e84e'}.eicon-apps:before{content:'\e84f'}.eicon-tabs:before{content:'\e850'}.eicon-elementor-square:before{content:'\e851'}html.elementor-html{margin-top:0!important}body.layout-section .entry-content{overflow:visible}body.elementor-editor-active #elementor{position:relative}body.elementor-editor-active #elementor .elementor-element-empty .elementor-sortable-placeholder{display:none}body.elementor-editor-active #elementor .elementor-empty-view{display:table;width:100%;height:100%;position:relative;z-index:1}body.elementor-editor-active #elementor .elementor-first-add{display:table-cell;vertical-align:middle;text-align:center;border:1px dashed #d5dadf}body.elementor-editor-active #elementor .elementor-first-add .elementor-icon{font-size:19px;color:#a4afb7;cursor:pointer}body.elementor-editor-active #elementor .elementor-element>.elementor-element-overlay{position:absolute;top:0;right:0;left:0;bottom:0;z-index:1}body.elementor-editor-active #elementor .elementor-element.elementor-widget-empty{height:50px;background:#fff}body.elementor-editor-active #elementor .elementor-element.elementor-widget-empty:after{position:absolute;content:'';left:0;right:0;top:0;bottom:0;background-color:rgba(230,233,236,.8)}body.elementor-editor-active #elementor .elementor-element.elementor-widget-empty .elementor-widget-empty-icon{position:absolute;height:25px;width:25px;top:0;bottom:0;right:0;left:0;margin:auto;color:#818a91;font-size:22px}body.elementor-editor-active #elementor .elementor-element:not(:hover):not(.elementor-element-editable)>.elementor-element-overlay .elementor-editor-element-settings-list,body.elementor-editor-active #elementor .elementor-element:not(:hover):not(.ui-resizable-resizing)>.elementor-element-overlay .column-title{display:none}@media (max-width:1023px){body.elementor-editor-active #elementor .elementor-element>.elementor-element-overlay .column-title{display:none}}body.elementor-editor-active #elementor .elementor-element[data-side]{animation:increase-border .6s;animation-timing-function:ease-out}body.elementor-editor-active #elementor .elementor-element[data-side=bottom]+.elementor-element,body.elementor-editor-active #elementor .elementor-element[data-side=top]{border-top:4px solid #71d7f7}body.elementor-editor-active #elementor .elementor-element[data-side=bottom]:last-child{border-bottom:4px solid #71d7f7}@media (min-width:768px){body.elementor-editor-active #elementor .elementor-section:not(.elementor-section-height-full) .elementor-column-wrap.elementor-element-empty,body.elementor-editor-active #elementor .elementor-section:not(.elementor-section-height-full) .elementor-column-wrap.elementor-element-empty .elementor-widget-wrap{position:absolute;width:100%;height:100%;top:0}}body.elementor-editor-active #elementor .elementor-top-column .elementor-widget-wrap .elementor-inner-section{margin-top:20px}body.elementor-editor-active #elementor .elementor-editor-element-settings{position:absolute;overflow:hidden}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list{display:table;table-layout:fixed;height:20px;list-style:none;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;line-height:1}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list:not(.elementor-editor-section-settings-list){background-color:#495157}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list:not(.elementor-editor-section-settings-list) .elementor-editor-element-setting:not(:last-child){border-left:1px solid #556068}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list:not(.elementor-editor-section-settings-list) .elementor-editor-element-setting>a:hover{background-color:#556068}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list{background-color:#a4afb7}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list .elementor-editor-element-setting:not(:last-child){border-left:1px solid #c2cbd2}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list .elementor-editor-element-setting.elementor-editor-element-trigger:not(.elementor-active){border:none}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list .elementor-editor-element-setting>a:hover{background-color:#c2cbd2}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list .fa{color:#fff}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-setting{display:table-cell;vertical-align:middle;width:35px;text-align:center;padding:0;margin:0}@media (max-width:1023px){body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-setting:not(.elementor-editor-element-edit){display:none}}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-setting>a{padding:8.5px 0;display:inline-block;width:100%;font-size:11px;color:#fff}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-remove .fa{color:red}body.elementor-editor-active #elementor .elementor-editor-column-settings{right:-1px;z-index:1;bottom:100%;margin-bottom:1px;transform:translateY(1px);border-radius:3px 3px 0 0}body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-settings-list{float:right}body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger:not(.elementor-active)~.elementor-editor-element-setting{display:none}body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger>a{cursor:move;padding:8.5px}body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger.elementor-active>a:after,body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger>a:hover:after{content:"";font-family:FontAwesome;margin-right:5px}body.elementor-editor-active #elementor .elementor-editor-widget-settings{z-index:2;border-radius:3px}body.elementor-editor-active #elementor .elementor-editor-widget-settings:not(.elementor-open){display:none}@media (max-width:1023px){body.elementor-editor-active #elementor .elementor-editor-element-setting:not(.elementor-editor-element-edit){display:none}}body.elementor-editor-active #elementor .elementor-element-label{position:absolute;left:-1px;top:-1px;background-color:#71d7f7;color:#fff;font-family:Arial,Helvetica,sans-serif;font-size:9px;line-height:1;padding:3px 6px}body.elementor-editor-active #elementor .elementor-section-filled .elementor-editor-column-settings .elementor-editor-element-add,body.elementor-editor-active #elementor .elementor-section-filled .elementor-editor-column-settings .elementor-editor-element-duplicate,body.elementor-editor-active #elementor .elementor-section-filled .elementor-sortable-placeholder.elementor-column{display:none}body.elementor-editor-active #elementor .elementor-section-filled .elementor-row.elementor-draggable-over{border:1px solid red}body.elementor-editor-active #elementor .elementor-row{min-height:100px}body.elementor-editor-active #elementor .elementor-column.elementor-element-editable>.elementor-element-overlay,body.elementor-editor-active #elementor .elementor-column:hover>.elementor-element-overlay{border:1px solid #fff}body.elementor-editor-active #elementor .elementor-column.elementor-element-editable>.elementor-element-overlay:after,body.elementor-editor-active #elementor .elementor-column:hover>.elementor-element-overlay:after{position:absolute;content:'';left:0;right:0;top:0;bottom:0;width:100%;height:100%;outline:1px dashed #373a3c}body.elementor-editor-active #elementor .elementor-column.elementor-dragging-on-child>.elementor-element-overlay{border:1px solid #71d7f7}body.elementor-editor-active #elementor .elementor-column.elementor-dragging-on-child>.elementor-element-overlay:after{display:none}body.elementor-editor-active #elementor .elementor-column .column-title{position:absolute;bottom:100%;left:0;color:#999;font-family:Arial,Helvetica,sans-serif;line-height:1;font-size:12px;font-style:italic}body.elementor-editor-active #elementor .elementor-column>.ui-resizable-e,body.elementor-editor-active #elementor .elementor-column>.ui-resizable-w{cursor:ew-resize;width:7px;position:absolute;left:-5px;top:0;height:100%}body.elementor-editor-active #elementor .elementor-column:last-of-type>.ui-resizable-e{display:none!important}@media (max-width:1023px){body.elementor-editor-active #elementor .elementor-column>.ui-resizable-e{display:none!important}}@media (min-width:768px){body.elementor-editor-active .elementor-column-wrap.elementor-element-empty .elementor-widget-wrap{padding:10px}}body.elementor-editor-active .elementor-widget.elementor-loading{opacity:.3}body.elementor-editor-active .elementor-widget:not(.elementor-loading){transition:all .1s}body.elementor-editor-active .elementor-widget.elementor-element-editable>.elementor-element-overlay,body.elementor-editor-active .elementor-widget:hover>.elementor-element-overlay{border:1px solid #71d7f7}body.elementor-editor-active .elementor-widget:not(.elementor-element-editable):not(:hover) .elementor-element-label{display:none}body.elementor-editor-active .elementor-column.elementor-dragging div.elementor-column-wrap{min-height:50px}body.elementor-editor-active div.handle{display:none}body.elementor-editor-active .elementor-sortable-placeholder{background:#71d7f7;transition-timing-function:ease-out}body.elementor-editor-active .elementor-sortable-placeholder:not(.elementor-column){height:5px}body.elementor-editor-active .elementor-sortable-placeholder.elementor-column{width:5px}body.elementor-editor-active .elementor-sortable-helper{position:absolute;background:rgba(73,81,87,.85);display:table;table-layout:fixed;color:#fff;line-height:50px;border-radius:3px}body.elementor-editor-active .elementor-sortable-helper .fa{font-size:25px;width:60px;text-align:center}body.elementor-editor-active .elementor-sortable-helper>*{display:table-cell;vertical-align:middle}body.elementor-editor-active .elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true])>.elementor-empty-view>.elementor-first-add:after,body.elementor-editor-active .elementor-first-add[data-side]:after{content:'';height:4px;display:block;background-color:#71d7f7}body.elementor-editor-active .elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true])>.elementor-empty-view>.elementor-first-add .elementor-icon,body.elementor-editor-active .elementor-draggable-over[data-dragged-element=section][data-dragged-is-inner=true] .elementor-sortable-placeholder,body.elementor-editor-active .elementor-first-add[data-side] .elementor-icon{display:none}body.elementor-editor-active #elementor-add-section{background-color:hsla(0,0%,100%,.5);margin:60px auto;padding:40px 0;max-width:1140px;position:relative}body.elementor-editor-active #elementor-add-section:not([data-side]){border:2px dashed #d5dadf}body.elementor-editor-active #elementor-add-section[data-side]{border:3px dashed #71d7f7}body.elementor-editor-active #elementor-add-section-inner{text-align:center;margin-top:10px}body.elementor-editor-active #elementor-add-section-button{background-color:#9b0a46;background-image:none;color:#fff;font-size:13px;font-family:Arial,Helvetica,sans-serif;line-height:1;text-transform:uppercase;font-weight:400;height:40px;width:170px;padding:0;border:none;border-radius:3px;cursor:pointer}body.elementor-editor-active #elementor-add-section-button:hover{opacity:.85;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}body.elementor-editor-active #elementor-add-section-button:active{box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.1)}body.elementor-editor-active #elementor-add-section-drag-title{font-family:Arial,Helvetica,sans-serif;font-size:13px;font-weight:400;font-style:italic;line-height:1;color:#556068;margin-top:10px}body.elementor-editor-active #elementor-select-preset-close{position:absolute;right:20px;top:20px;font-size:20px;cursor:pointer;line-height:1;color:#d5dadf}body.elementor-editor-active #elementor-select-preset-title{font-weight:500;color:#556068}body.elementor-editor-active ul#elementor-select-preset-list{list-style:none;padding:0 25px;margin:20px auto 0;overflow:hidden;max-width:700px}body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset{cursor:pointer;margin:0;padding:10px;float:right}body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset:hover{color:#6d7882}body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset:not(:hover){color:#d5dadf}body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset [class^=eicon-]{font-size:40px}body.elementor-editor-preview #elementor-add-section,body.elementor-editor-preview .column-title,body.elementor-editor-preview .elementor-element-empty,body.elementor-editor-preview .elementor-element-overlay,body.elementor-editor-preview .elementor-empty{display:none}
|
assets/css/editor-preview.css
ADDED
@@ -0,0 +1,597 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@charset "UTF-8";
|
2 |
+
@font-face {
|
3 |
+
font-family: 'eicon';
|
4 |
+
src: url("../fonts/eicon/eicon.eot?0.11");
|
5 |
+
src: url("../fonts/eicon/eicon.eot?0.11#iefix") format("embedded-opentype"), url("../fonts/eicon/eicon.woff2?0.11") format("woff2"), url("../fonts/eicon/eicon.woff?0.11") format("woff"), url("../fonts/eicon/eicon.ttf?0.11") format("truetype"), url("../fonts/eicon/eicon.svg?0.11#eicon") format("svg");
|
6 |
+
font-weight: normal;
|
7 |
+
font-style: normal; }
|
8 |
+
[class^="eicon-"],
|
9 |
+
[class*=" eicon-"] {
|
10 |
+
display: inline-block;
|
11 |
+
font-family: eicon;
|
12 |
+
font-size: inherit;
|
13 |
+
font-weight: normal;
|
14 |
+
font-style: normal;
|
15 |
+
font-variant: normal;
|
16 |
+
line-height: 1;
|
17 |
+
text-rendering: auto;
|
18 |
+
-webkit-font-smoothing: antialiased;
|
19 |
+
-moz-osx-font-smoothing: grayscale; }
|
20 |
+
|
21 |
+
.eicon-c1-1:before {
|
22 |
+
content: '\e800'; }
|
23 |
+
|
24 |
+
.eicon-c2-1:before {
|
25 |
+
content: '\e801'; }
|
26 |
+
|
27 |
+
.eicon-c2-2:before {
|
28 |
+
content: '\e802'; }
|
29 |
+
|
30 |
+
.eicon-c2-3:before {
|
31 |
+
content: '\e803'; }
|
32 |
+
|
33 |
+
.eicon-c2-4:before {
|
34 |
+
content: '\e804'; }
|
35 |
+
|
36 |
+
.eicon-c2-5:before {
|
37 |
+
content: '\e805'; }
|
38 |
+
|
39 |
+
.eicon-c2-6:before {
|
40 |
+
content: '\e806'; }
|
41 |
+
|
42 |
+
.eicon-c2-7:before {
|
43 |
+
content: '\e807'; }
|
44 |
+
|
45 |
+
.eicon-c2-8:before {
|
46 |
+
content: '\e808'; }
|
47 |
+
|
48 |
+
.eicon-c2-9:before {
|
49 |
+
content: '\e809'; }
|
50 |
+
|
51 |
+
.eicon-c3-1:before {
|
52 |
+
content: '\e80a'; }
|
53 |
+
|
54 |
+
.eicon-c3-2:before {
|
55 |
+
content: '\e80b'; }
|
56 |
+
|
57 |
+
.eicon-c3-3:before {
|
58 |
+
content: '\e80c'; }
|
59 |
+
|
60 |
+
.eicon-c3-4:before {
|
61 |
+
content: '\e80d'; }
|
62 |
+
|
63 |
+
.eicon-c3-5:before {
|
64 |
+
content: '\e80e'; }
|
65 |
+
|
66 |
+
.eicon-c3-6:before {
|
67 |
+
content: '\e80f'; }
|
68 |
+
|
69 |
+
.eicon-c3-7:before {
|
70 |
+
content: '\e811'; }
|
71 |
+
|
72 |
+
.eicon-c3-8:before {
|
73 |
+
content: '\e811'; }
|
74 |
+
|
75 |
+
.eicon-c3-9:before {
|
76 |
+
content: '\e812'; }
|
77 |
+
|
78 |
+
.eicon-c4-1:before {
|
79 |
+
content: '\e813'; }
|
80 |
+
|
81 |
+
.eicon-c4-2:before {
|
82 |
+
content: '\e814'; }
|
83 |
+
|
84 |
+
.eicon-c4-3:before {
|
85 |
+
content: '\e815'; }
|
86 |
+
|
87 |
+
.eicon-c4-4:before {
|
88 |
+
content: '\e816'; }
|
89 |
+
|
90 |
+
.eicon-c4-5:before {
|
91 |
+
content: '\e817'; }
|
92 |
+
|
93 |
+
.eicon-c4-6:before {
|
94 |
+
content: '\e818'; }
|
95 |
+
|
96 |
+
.eicon-c4-7:before {
|
97 |
+
content: '\e819'; }
|
98 |
+
|
99 |
+
.eicon-c4-8:before {
|
100 |
+
content: '\e81a'; }
|
101 |
+
|
102 |
+
.eicon-c4-9:before {
|
103 |
+
content: '\e81b'; }
|
104 |
+
|
105 |
+
.eicon-c4-11:before {
|
106 |
+
content: '\e81c'; }
|
107 |
+
|
108 |
+
.eicon-c4-11:before {
|
109 |
+
content: '\e81d'; }
|
110 |
+
|
111 |
+
.eicon-c5-1:before {
|
112 |
+
content: '\e81e'; }
|
113 |
+
|
114 |
+
.eicon-c5-2:before {
|
115 |
+
content: '\e81f'; }
|
116 |
+
|
117 |
+
.eicon-c5-3:before {
|
118 |
+
content: '\e820'; }
|
119 |
+
|
120 |
+
.eicon-c5-4:before {
|
121 |
+
content: '\e821'; }
|
122 |
+
|
123 |
+
.eicon-c5-5:before {
|
124 |
+
content: '\e822'; }
|
125 |
+
|
126 |
+
.eicon-c5-6:before {
|
127 |
+
content: '\e823'; }
|
128 |
+
|
129 |
+
.eicon-c5-7:before {
|
130 |
+
content: '\e824'; }
|
131 |
+
|
132 |
+
.eicon-c5-8:before {
|
133 |
+
content: '\e825'; }
|
134 |
+
|
135 |
+
.eicon-c5-9:before {
|
136 |
+
content: '\e826'; }
|
137 |
+
|
138 |
+
.eicon-c5-11:before {
|
139 |
+
content: '\e827'; }
|
140 |
+
|
141 |
+
.eicon-c6-1:before {
|
142 |
+
content: '\e828'; }
|
143 |
+
|
144 |
+
.eicon-c6-2:before {
|
145 |
+
content: '\e829'; }
|
146 |
+
|
147 |
+
.eicon-c6-3:before {
|
148 |
+
content: '\e82a'; }
|
149 |
+
|
150 |
+
.eicon-c6-4:before {
|
151 |
+
content: '\e82b'; }
|
152 |
+
|
153 |
+
.eicon-c6-5:before {
|
154 |
+
content: '\e82c'; }
|
155 |
+
|
156 |
+
.eicon-c6-6:before {
|
157 |
+
content: '\e82d'; }
|
158 |
+
|
159 |
+
.eicon-c6-7:before {
|
160 |
+
content: '\e82e'; }
|
161 |
+
|
162 |
+
.eicon-c6-8:before {
|
163 |
+
content: '\e82f'; }
|
164 |
+
|
165 |
+
.eicon-c6-9:before {
|
166 |
+
content: '\e830'; }
|
167 |
+
|
168 |
+
.eicon-c6-11:before {
|
169 |
+
content: '\e831'; }
|
170 |
+
|
171 |
+
.eicon-c6-11:before {
|
172 |
+
content: '\e832'; }
|
173 |
+
|
174 |
+
.eicon-c7-1:before {
|
175 |
+
content: '\e833'; }
|
176 |
+
|
177 |
+
.eicon-c8-1:before {
|
178 |
+
content: '\e834'; }
|
179 |
+
|
180 |
+
.eicon-c9-1:before {
|
181 |
+
content: '\e835'; }
|
182 |
+
|
183 |
+
.eicon-c11-1:before {
|
184 |
+
content: '\e836'; }
|
185 |
+
|
186 |
+
.eicon-anchor:before {
|
187 |
+
content: '\e837'; }
|
188 |
+
|
189 |
+
.eicon-wordpress:before {
|
190 |
+
content: '\e838'; }
|
191 |
+
|
192 |
+
.eicon-insert-image:before {
|
193 |
+
content: '\e839'; }
|
194 |
+
|
195 |
+
.eicon-align-left:before {
|
196 |
+
content: '\e83a'; }
|
197 |
+
|
198 |
+
.eicon-digital-alarm-clock:before {
|
199 |
+
content: '\e83b'; }
|
200 |
+
|
201 |
+
.eicon-favorite:before {
|
202 |
+
content: '\e83c'; }
|
203 |
+
|
204 |
+
.eicon-firewall-on:before {
|
205 |
+
content: '\e83d'; }
|
206 |
+
|
207 |
+
.eicon-google-maps:before {
|
208 |
+
content: '\e83e'; }
|
209 |
+
|
210 |
+
.eicon-text-size:before {
|
211 |
+
content: '\e83f'; }
|
212 |
+
|
213 |
+
.eicon-youtube:before {
|
214 |
+
content: '\e840'; }
|
215 |
+
|
216 |
+
.eicon-success-chart:before {
|
217 |
+
content: '\e841'; }
|
218 |
+
|
219 |
+
.eicon-type-tool:before {
|
220 |
+
content: '\e842'; }
|
221 |
+
|
222 |
+
.eicon-bullet-list:before {
|
223 |
+
content: '\e843'; }
|
224 |
+
|
225 |
+
.eicon-click:before {
|
226 |
+
content: '\e844'; }
|
227 |
+
|
228 |
+
.eicon-coding:before {
|
229 |
+
content: '\e845'; }
|
230 |
+
|
231 |
+
.eicon-accordion:before {
|
232 |
+
content: '\e846'; }
|
233 |
+
|
234 |
+
.eicon-divider:before {
|
235 |
+
content: '\e847'; }
|
236 |
+
|
237 |
+
.eicon-toggle:before {
|
238 |
+
content: '\e848'; }
|
239 |
+
|
240 |
+
.eicon-settings:before {
|
241 |
+
content: '\e849'; }
|
242 |
+
|
243 |
+
.eicon-section:before {
|
244 |
+
content: '\e84a'; }
|
245 |
+
|
246 |
+
.eicon-photo-library:before {
|
247 |
+
content: '\e84b'; }
|
248 |
+
|
249 |
+
.eicon-elementor:before {
|
250 |
+
content: '\e84c'; }
|
251 |
+
|
252 |
+
.eicon-menu:before {
|
253 |
+
content: '\e84d'; }
|
254 |
+
|
255 |
+
.eicon-plus:before {
|
256 |
+
content: '\e84e'; }
|
257 |
+
|
258 |
+
.eicon-apps:before {
|
259 |
+
content: '\e84f'; }
|
260 |
+
|
261 |
+
.eicon-tabs:before {
|
262 |
+
content: '\e850'; }
|
263 |
+
|
264 |
+
.eicon-elementor-square:before {
|
265 |
+
content: '\e851'; }
|
266 |
+
|
267 |
+
html.elementor-html {
|
268 |
+
margin-top: 0 !important; }
|
269 |
+
|
270 |
+
body.layout-section .entry-content {
|
271 |
+
overflow: visible; }
|
272 |
+
body.elementor-editor-active #elementor {
|
273 |
+
position: relative; }
|
274 |
+
body.elementor-editor-active #elementor .elementor-element-empty .elementor-sortable-placeholder {
|
275 |
+
display: none; }
|
276 |
+
body.elementor-editor-active #elementor .elementor-empty-view {
|
277 |
+
display: table;
|
278 |
+
width: 100%;
|
279 |
+
height: 100%;
|
280 |
+
position: relative;
|
281 |
+
z-index: 1; }
|
282 |
+
body.elementor-editor-active #elementor .elementor-first-add {
|
283 |
+
display: table-cell;
|
284 |
+
vertical-align: middle;
|
285 |
+
text-align: center;
|
286 |
+
border: 1px dashed #d5dadf; }
|
287 |
+
body.elementor-editor-active #elementor .elementor-first-add .elementor-icon {
|
288 |
+
font-size: 19px;
|
289 |
+
color: #a4afb7;
|
290 |
+
cursor: pointer; }
|
291 |
+
body.elementor-editor-active #elementor .elementor-element > .elementor-element-overlay {
|
292 |
+
position: absolute;
|
293 |
+
top: 0;
|
294 |
+
right: 0;
|
295 |
+
left: 0;
|
296 |
+
bottom: 0;
|
297 |
+
z-index: 1; }
|
298 |
+
body.elementor-editor-active #elementor .elementor-element.elementor-widget-empty {
|
299 |
+
height: 50px;
|
300 |
+
background: #ffffff; }
|
301 |
+
body.elementor-editor-active #elementor .elementor-element.elementor-widget-empty:after {
|
302 |
+
position: absolute;
|
303 |
+
content: '';
|
304 |
+
left: 0;
|
305 |
+
right: 0;
|
306 |
+
top: 0;
|
307 |
+
bottom: 0;
|
308 |
+
background-color: rgba(230, 233, 236, 0.8); }
|
309 |
+
body.elementor-editor-active #elementor .elementor-element.elementor-widget-empty .elementor-widget-empty-icon {
|
310 |
+
position: absolute;
|
311 |
+
height: 25px;
|
312 |
+
width: 25px;
|
313 |
+
top: 0;
|
314 |
+
bottom: 0;
|
315 |
+
right: 0;
|
316 |
+
left: 0;
|
317 |
+
margin: auto;
|
318 |
+
color: #818a91;
|
319 |
+
font-size: 22px; }
|
320 |
+
body.elementor-editor-active #elementor .elementor-element:not(:hover):not(.elementor-element-editable) > .elementor-element-overlay .elementor-editor-element-settings-list {
|
321 |
+
display: none; }
|
322 |
+
body.elementor-editor-active #elementor .elementor-element:not(:hover):not(.ui-resizable-resizing) > .elementor-element-overlay .column-title {
|
323 |
+
display: none; }
|
324 |
+
@media (max-width: 1023px) {
|
325 |
+
body.elementor-editor-active #elementor .elementor-element > .elementor-element-overlay .column-title {
|
326 |
+
display: none; } }
|
327 |
+
body.elementor-editor-active #elementor .elementor-element[data-side] {
|
328 |
+
animation: increase-border .6s;
|
329 |
+
animation-timing-function: ease-out; }
|
330 |
+
body.elementor-editor-active #elementor .elementor-element[data-side="top"], body.elementor-editor-active #elementor .elementor-element[data-side="bottom"] + .elementor-element {
|
331 |
+
border-top: 4px solid #71d7f7; }
|
332 |
+
body.elementor-editor-active #elementor .elementor-element[data-side="bottom"]:last-child {
|
333 |
+
border-bottom: 4px solid #71d7f7; }
|
334 |
+
@media (min-width: 768px) {
|
335 |
+
body.elementor-editor-active #elementor .elementor-section:not(.elementor-section-height-full) .elementor-column-wrap.elementor-element-empty, body.elementor-editor-active #elementor .elementor-section:not(.elementor-section-height-full) .elementor-column-wrap.elementor-element-empty .elementor-widget-wrap {
|
336 |
+
position: absolute;
|
337 |
+
width: 100%;
|
338 |
+
height: 100%;
|
339 |
+
top: 0; } }
|
340 |
+
body.elementor-editor-active #elementor .elementor-top-column .elementor-widget-wrap .elementor-inner-section {
|
341 |
+
margin-top: 20px; }
|
342 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings {
|
343 |
+
position: absolute;
|
344 |
+
overflow: hidden; }
|
345 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list {
|
346 |
+
display: table;
|
347 |
+
table-layout: fixed;
|
348 |
+
height: 20px;
|
349 |
+
list-style: none;
|
350 |
+
margin: 0;
|
351 |
+
padding: 0;
|
352 |
+
font-family: Arial, Helvetica, sans-serif;
|
353 |
+
line-height: 1; }
|
354 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list:not(.elementor-editor-section-settings-list) {
|
355 |
+
background-color: #495157; }
|
356 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list:not(.elementor-editor-section-settings-list) .elementor-editor-element-setting:not(:last-child) {
|
357 |
+
border-right: 1px solid #556068; }
|
358 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list:not(.elementor-editor-section-settings-list) .elementor-editor-element-setting > a:hover {
|
359 |
+
background-color: #556068; }
|
360 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list {
|
361 |
+
background-color: #a4afb7; }
|
362 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list .elementor-editor-element-setting:not(:last-child) {
|
363 |
+
border-right: 1px solid #c2cbd2; }
|
364 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list .elementor-editor-element-setting.elementor-editor-element-trigger:not(.elementor-active) {
|
365 |
+
border: none; }
|
366 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list .elementor-editor-element-setting > a:hover {
|
367 |
+
background-color: #c2cbd2; }
|
368 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list .fa {
|
369 |
+
color: #ffffff; }
|
370 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-setting {
|
371 |
+
display: table-cell;
|
372 |
+
vertical-align: middle;
|
373 |
+
width: 35px;
|
374 |
+
text-align: center;
|
375 |
+
padding: 0;
|
376 |
+
margin: 0; }
|
377 |
+
@media (max-width: 1023px) {
|
378 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-setting:not(.elementor-editor-element-edit) {
|
379 |
+
display: none; } }
|
380 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-setting > a {
|
381 |
+
padding: 8.5px 0;
|
382 |
+
display: inline-block;
|
383 |
+
width: 100%;
|
384 |
+
font-size: 11px;
|
385 |
+
color: #fff; }
|
386 |
+
body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-remove .fa {
|
387 |
+
color: #f00; }
|
388 |
+
body.elementor-editor-active #elementor .elementor-editor-column-settings {
|
389 |
+
left: -1px;
|
390 |
+
z-index: 1;
|
391 |
+
bottom: 100%;
|
392 |
+
margin-bottom: 1px;
|
393 |
+
transform: translateY(1px);
|
394 |
+
border-radius: 3px 3px 0 0; }
|
395 |
+
body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-settings-list {
|
396 |
+
float: left; }
|
397 |
+
body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger:not(.elementor-active) ~ .elementor-editor-element-setting {
|
398 |
+
display: none; }
|
399 |
+
body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger > a {
|
400 |
+
cursor: move;
|
401 |
+
padding: 8.5px; }
|
402 |
+
body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger > a:hover:after {
|
403 |
+
content: "";
|
404 |
+
font-family: 'FontAwesome';
|
405 |
+
margin-left: 5px; }
|
406 |
+
body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger.elementor-active > a:after {
|
407 |
+
content: "";
|
408 |
+
font-family: 'FontAwesome';
|
409 |
+
margin-left: 5px; }
|
410 |
+
body.elementor-editor-active #elementor .elementor-editor-widget-settings {
|
411 |
+
z-index: 2;
|
412 |
+
border-radius: 3px; }
|
413 |
+
body.elementor-editor-active #elementor .elementor-editor-widget-settings:not(.elementor-open) {
|
414 |
+
display: none; }
|
415 |
+
@media (max-width: 1023px) {
|
416 |
+
body.elementor-editor-active #elementor .elementor-editor-element-setting:not(.elementor-editor-element-edit) {
|
417 |
+
display: none; } }
|
418 |
+
body.elementor-editor-active #elementor .elementor-element-label {
|
419 |
+
position: absolute;
|
420 |
+
right: -1px;
|
421 |
+
top: -1px;
|
422 |
+
background-color: #71d7f7;
|
423 |
+
color: #fff;
|
424 |
+
font-family: Arial, Helvetica, sans-serif;
|
425 |
+
font-size: 9px;
|
426 |
+
line-height: 1;
|
427 |
+
padding: 3px 6px; }
|
428 |
+
body.elementor-editor-active #elementor .elementor-section-filled .elementor-editor-column-settings .elementor-editor-element-add, body.elementor-editor-active #elementor .elementor-section-filled .elementor-editor-column-settings .elementor-editor-element-duplicate {
|
429 |
+
display: none; }
|
430 |
+
body.elementor-editor-active #elementor .elementor-section-filled .elementor-sortable-placeholder.elementor-column {
|
431 |
+
display: none; }
|
432 |
+
body.elementor-editor-active #elementor .elementor-section-filled .elementor-row.elementor-draggable-over {
|
433 |
+
border: 1px solid #f00; }
|
434 |
+
body.elementor-editor-active #elementor .elementor-row {
|
435 |
+
min-height: 100px; }
|
436 |
+
body.elementor-editor-active #elementor .elementor-column:hover > .elementor-element-overlay, body.elementor-editor-active #elementor .elementor-column.elementor-element-editable > .elementor-element-overlay {
|
437 |
+
border: 1px solid #ffffff; }
|
438 |
+
body.elementor-editor-active #elementor .elementor-column:hover > .elementor-element-overlay:after, body.elementor-editor-active #elementor .elementor-column.elementor-element-editable > .elementor-element-overlay:after {
|
439 |
+
position: absolute;
|
440 |
+
content: '';
|
441 |
+
left: 0;
|
442 |
+
right: 0;
|
443 |
+
top: 0;
|
444 |
+
bottom: 0;
|
445 |
+
width: 100%;
|
446 |
+
height: 100%;
|
447 |
+
outline: 1px dashed #373a3c; }
|
448 |
+
body.elementor-editor-active #elementor .elementor-column.elementor-dragging-on-child > .elementor-element-overlay {
|
449 |
+
border: 1px solid #71d7f7; }
|
450 |
+
body.elementor-editor-active #elementor .elementor-column.elementor-dragging-on-child > .elementor-element-overlay:after {
|
451 |
+
display: none; }
|
452 |
+
body.elementor-editor-active #elementor .elementor-column .column-title {
|
453 |
+
position: absolute;
|
454 |
+
bottom: 100%;
|
455 |
+
right: 0;
|
456 |
+
color: #999;
|
457 |
+
font-family: Arial, Helvetica, sans-serif;
|
458 |
+
line-height: 1;
|
459 |
+
font-size: 12px;
|
460 |
+
font-style: italic; }
|
461 |
+
body.elementor-editor-active #elementor .elementor-column > .ui-resizable-e, body.elementor-editor-active #elementor .elementor-column > .ui-resizable-w {
|
462 |
+
cursor: ew-resize;
|
463 |
+
width: 7px;
|
464 |
+
position: absolute;
|
465 |
+
right: -5px;
|
466 |
+
top: 0;
|
467 |
+
height: 100%; }
|
468 |
+
body.elementor-editor-active #elementor .elementor-column:last-of-type > .ui-resizable-e {
|
469 |
+
display: none !important; }
|
470 |
+
@media (max-width: 1023px) {
|
471 |
+
body.elementor-editor-active #elementor .elementor-column > .ui-resizable-e {
|
472 |
+
display: none !important; } }
|
473 |
+
@media (min-width: 768px) {
|
474 |
+
body.elementor-editor-active .elementor-column-wrap.elementor-element-empty .elementor-widget-wrap {
|
475 |
+
padding: 10px; } }
|
476 |
+
body.elementor-editor-active .elementor-widget.elementor-loading {
|
477 |
+
opacity: .3; }
|
478 |
+
body.elementor-editor-active .elementor-widget:not(.elementor-loading) {
|
479 |
+
transition: all .1s; }
|
480 |
+
body.elementor-editor-active .elementor-widget.elementor-element-editable > .elementor-element-overlay, body.elementor-editor-active .elementor-widget:hover > .elementor-element-overlay {
|
481 |
+
border: 1px solid #71d7f7; }
|
482 |
+
body.elementor-editor-active .elementor-widget:not(.elementor-element-editable):not(:hover) .elementor-element-label {
|
483 |
+
display: none; }
|
484 |
+
body.elementor-editor-active .elementor-column.elementor-dragging div.elementor-column-wrap {
|
485 |
+
min-height: 50px; }
|
486 |
+
body.elementor-editor-active div.handle {
|
487 |
+
display: none; }
|
488 |
+
body.elementor-editor-active .elementor-sortable-placeholder {
|
489 |
+
background: #71d7f7;
|
490 |
+
transition-timing-function: ease-out; }
|
491 |
+
body.elementor-editor-active .elementor-sortable-placeholder:not(.elementor-column) {
|
492 |
+
height: 5px; }
|
493 |
+
body.elementor-editor-active .elementor-sortable-placeholder.elementor-column {
|
494 |
+
width: 5px; }
|
495 |
+
body.elementor-editor-active .elementor-sortable-helper {
|
496 |
+
position: absolute;
|
497 |
+
background: rgba(73, 81, 87, 0.85);
|
498 |
+
display: table;
|
499 |
+
table-layout: fixed;
|
500 |
+
color: #fff;
|
501 |
+
line-height: 50px;
|
502 |
+
border-radius: 3px; }
|
503 |
+
body.elementor-editor-active .elementor-sortable-helper .fa {
|
504 |
+
font-size: 25px;
|
505 |
+
width: 60px;
|
506 |
+
text-align: center; }
|
507 |
+
body.elementor-editor-active .elementor-sortable-helper > * {
|
508 |
+
display: table-cell;
|
509 |
+
vertical-align: middle; }
|
510 |
+
body.elementor-editor-active .elementor-draggable-over:not([data-dragged-element="section"]):not([data-dragged-is-inner="true"]) > .elementor-empty-view > .elementor-first-add:after,
|
511 |
+
body.elementor-editor-active .elementor-first-add[data-side]:after {
|
512 |
+
content: '';
|
513 |
+
height: 4px;
|
514 |
+
display: block;
|
515 |
+
background-color: #71d7f7; }
|
516 |
+
body.elementor-editor-active .elementor-draggable-over:not([data-dragged-element="section"]):not([data-dragged-is-inner="true"]) > .elementor-empty-view > .elementor-first-add .elementor-icon,
|
517 |
+
body.elementor-editor-active .elementor-first-add[data-side] .elementor-icon {
|
518 |
+
display: none; }
|
519 |
+
body.elementor-editor-active .elementor-draggable-over[data-dragged-element="section"][data-dragged-is-inner="true"] .elementor-sortable-placeholder {
|
520 |
+
display: none; }
|
521 |
+
body.elementor-editor-active #elementor-add-section {
|
522 |
+
background-color: rgba(255, 255, 255, 0.5);
|
523 |
+
margin: 60px auto;
|
524 |
+
padding: 40px 0;
|
525 |
+
max-width: 1140px;
|
526 |
+
position: relative; }
|
527 |
+
body.elementor-editor-active #elementor-add-section:not([data-side]) {
|
528 |
+
border: 2px dashed #d5dadf; }
|
529 |
+
body.elementor-editor-active #elementor-add-section[data-side] {
|
530 |
+
border: 3px dashed #71d7f7; }
|
531 |
+
body.elementor-editor-active #elementor-add-section-inner {
|
532 |
+
text-align: center;
|
533 |
+
margin-top: 10px; }
|
534 |
+
body.elementor-editor-active #elementor-add-section-button {
|
535 |
+
background-color: #9b0a46;
|
536 |
+
background-image: none;
|
537 |
+
color: #fff;
|
538 |
+
font-size: 13px;
|
539 |
+
font-family: Arial, Helvetica, sans-serif;
|
540 |
+
line-height: 1;
|
541 |
+
text-transform: uppercase;
|
542 |
+
font-weight: normal;
|
543 |
+
height: 40px;
|
544 |
+
width: 170px;
|
545 |
+
padding: 0;
|
546 |
+
border: none;
|
547 |
+
border-radius: 3px;
|
548 |
+
cursor: pointer; }
|
549 |
+
body.elementor-editor-active #elementor-add-section-button:hover {
|
550 |
+
opacity: 0.85;
|
551 |
+
box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); }
|
552 |
+
body.elementor-editor-active #elementor-add-section-button:active {
|
553 |
+
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.1); }
|
554 |
+
body.elementor-editor-active #elementor-add-section-drag-title {
|
555 |
+
font-family: Arial, Helvetica, sans-serif;
|
556 |
+
font-size: 13px;
|
557 |
+
font-weight: normal;
|
558 |
+
font-style: italic;
|
559 |
+
line-height: 1;
|
560 |
+
color: #556068;
|
561 |
+
margin-top: 10px; }
|
562 |
+
body.elementor-editor-active #elementor-select-preset-close {
|
563 |
+
position: absolute;
|
564 |
+
right: 20px;
|
565 |
+
top: 20px;
|
566 |
+
font-size: 20px;
|
567 |
+
cursor: pointer;
|
568 |
+
line-height: 1;
|
569 |
+
color: #d5dadf; }
|
570 |
+
body.elementor-editor-active #elementor-select-preset-title {
|
571 |
+
font-weight: 500;
|
572 |
+
color: #556068; }
|
573 |
+
body.elementor-editor-active ul#elementor-select-preset-list {
|
574 |
+
list-style: none;
|
575 |
+
padding: 0 25px;
|
576 |
+
margin: 20px auto 0;
|
577 |
+
overflow: hidden;
|
578 |
+
max-width: 700px; }
|
579 |
+
body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset {
|
580 |
+
cursor: pointer;
|
581 |
+
margin: 0;
|
582 |
+
padding: 10px;
|
583 |
+
float: left; }
|
584 |
+
body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset:hover {
|
585 |
+
color: #6d7882; }
|
586 |
+
body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset:not(:hover) {
|
587 |
+
color: #d5dadf; }
|
588 |
+
body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset [class^="eicon-"] {
|
589 |
+
font-size: 40px; }
|
590 |
+
body.elementor-editor-preview .elementor-element-overlay,
|
591 |
+
body.elementor-editor-preview .column-title,
|
592 |
+
body.elementor-editor-preview .elementor-empty,
|
593 |
+
body.elementor-editor-preview #elementor-add-section,
|
594 |
+
body.elementor-editor-preview .elementor-element-empty {
|
595 |
+
display: none; }
|
596 |
+
|
597 |
+
/*# sourceMappingURL=editor-preview.css.map */
|
assets/css/editor-preview.css.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"sources":["editor-preview.css","../scss/admin/_eicon.scss","../scss/editor/editor-preview.scss","../scss/helpers/variables.scss","../scss/helpers/direction.scss"],"names":[],"mappings":"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","file":"editor-preview.css"}
|
assets/css/editor-preview.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
@charset "UTF-8";@font-face{font-family:eicon;src:url(../fonts/eicon/eicon.eot?0.11);src:url(../fonts/eicon/eicon.eot?0.11#iefix) format("embedded-opentype"),url(../fonts/eicon/eicon.woff2?0.11) format("woff2"),url(../fonts/eicon/eicon.woff?0.11) format("woff"),url(../fonts/eicon/eicon.ttf?0.11) format("truetype"),url(../fonts/eicon/eicon.svg?0.11#eicon) format("svg");font-weight:400;font-style:normal}[class*=" eicon-"],[class^=eicon-]{display:inline-block;font-family:eicon;font-size:inherit;font-weight:400;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.eicon-c1-1:before{content:'\e800'}.eicon-c2-1:before{content:'\e801'}.eicon-c2-2:before{content:'\e802'}.eicon-c2-3:before{content:'\e803'}.eicon-c2-4:before{content:'\e804'}.eicon-c2-5:before{content:'\e805'}.eicon-c2-6:before{content:'\e806'}.eicon-c2-7:before{content:'\e807'}.eicon-c2-8:before{content:'\e808'}.eicon-c2-9:before{content:'\e809'}.eicon-c3-1:before{content:'\e80a'}.eicon-c3-2:before{content:'\e80b'}.eicon-c3-3:before{content:'\e80c'}.eicon-c3-4:before{content:'\e80d'}.eicon-c3-5:before{content:'\e80e'}.eicon-c3-6:before{content:'\e80f'}.eicon-c3-7:before,.eicon-c3-8:before{content:'\e811'}.eicon-c3-9:before{content:'\e812'}.eicon-c4-1:before{content:'\e813'}.eicon-c4-2:before{content:'\e814'}.eicon-c4-3:before{content:'\e815'}.eicon-c4-4:before{content:'\e816'}.eicon-c4-5:before{content:'\e817'}.eicon-c4-6:before{content:'\e818'}.eicon-c4-7:before{content:'\e819'}.eicon-c4-8:before{content:'\e81a'}.eicon-c4-9:before{content:'\e81b'}.eicon-c4-11:before{content:'\e81c';content:'\e81d'}.eicon-c5-1:before{content:'\e81e'}.eicon-c5-2:before{content:'\e81f'}.eicon-c5-3:before{content:'\e820'}.eicon-c5-4:before{content:'\e821'}.eicon-c5-5:before{content:'\e822'}.eicon-c5-6:before{content:'\e823'}.eicon-c5-7:before{content:'\e824'}.eicon-c5-8:before{content:'\e825'}.eicon-c5-9:before{content:'\e826'}.eicon-c5-11:before{content:'\e827'}.eicon-c6-1:before{content:'\e828'}.eicon-c6-2:before{content:'\e829'}.eicon-c6-3:before{content:'\e82a'}.eicon-c6-4:before{content:'\e82b'}.eicon-c6-5:before{content:'\e82c'}.eicon-c6-6:before{content:'\e82d'}.eicon-c6-7:before{content:'\e82e'}.eicon-c6-8:before{content:'\e82f'}.eicon-c6-9:before{content:'\e830'}.eicon-c6-11:before{content:'\e831';content:'\e832'}.eicon-c7-1:before{content:'\e833'}.eicon-c8-1:before{content:'\e834'}.eicon-c9-1:before{content:'\e835'}.eicon-c11-1:before{content:'\e836'}.eicon-anchor:before{content:'\e837'}.eicon-wordpress:before{content:'\e838'}.eicon-insert-image:before{content:'\e839'}.eicon-align-left:before{content:'\e83a'}.eicon-digital-alarm-clock:before{content:'\e83b'}.eicon-favorite:before{content:'\e83c'}.eicon-firewall-on:before{content:'\e83d'}.eicon-google-maps:before{content:'\e83e'}.eicon-text-size:before{content:'\e83f'}.eicon-youtube:before{content:'\e840'}.eicon-success-chart:before{content:'\e841'}.eicon-type-tool:before{content:'\e842'}.eicon-bullet-list:before{content:'\e843'}.eicon-click:before{content:'\e844'}.eicon-coding:before{content:'\e845'}.eicon-accordion:before{content:'\e846'}.eicon-divider:before{content:'\e847'}.eicon-toggle:before{content:'\e848'}.eicon-settings:before{content:'\e849'}.eicon-section:before{content:'\e84a'}.eicon-photo-library:before{content:'\e84b'}.eicon-elementor:before{content:'\e84c'}.eicon-menu:before{content:'\e84d'}.eicon-plus:before{content:'\e84e'}.eicon-apps:before{content:'\e84f'}.eicon-tabs:before{content:'\e850'}.eicon-elementor-square:before{content:'\e851'}html.elementor-html{margin-top:0!important}body.layout-section .entry-content{overflow:visible}body.elementor-editor-active #elementor{position:relative}body.elementor-editor-active #elementor .elementor-element-empty .elementor-sortable-placeholder{display:none}body.elementor-editor-active #elementor .elementor-empty-view{display:table;width:100%;height:100%;position:relative;z-index:1}body.elementor-editor-active #elementor .elementor-first-add{display:table-cell;vertical-align:middle;text-align:center;border:1px dashed #d5dadf}body.elementor-editor-active #elementor .elementor-first-add .elementor-icon{font-size:19px;color:#a4afb7;cursor:pointer}body.elementor-editor-active #elementor .elementor-element>.elementor-element-overlay{position:absolute;top:0;right:0;left:0;bottom:0;z-index:1}body.elementor-editor-active #elementor .elementor-element.elementor-widget-empty{height:50px;background:#fff}body.elementor-editor-active #elementor .elementor-element.elementor-widget-empty:after{position:absolute;content:'';left:0;right:0;top:0;bottom:0;background-color:rgba(230,233,236,.8)}body.elementor-editor-active #elementor .elementor-element.elementor-widget-empty .elementor-widget-empty-icon{position:absolute;height:25px;width:25px;top:0;bottom:0;right:0;left:0;margin:auto;color:#818a91;font-size:22px}body.elementor-editor-active #elementor .elementor-element:not(:hover):not(.elementor-element-editable)>.elementor-element-overlay .elementor-editor-element-settings-list,body.elementor-editor-active #elementor .elementor-element:not(:hover):not(.ui-resizable-resizing)>.elementor-element-overlay .column-title{display:none}@media (max-width:1023px){body.elementor-editor-active #elementor .elementor-element>.elementor-element-overlay .column-title{display:none}}body.elementor-editor-active #elementor .elementor-element[data-side]{animation:increase-border .6s;animation-timing-function:ease-out}body.elementor-editor-active #elementor .elementor-element[data-side=bottom]+.elementor-element,body.elementor-editor-active #elementor .elementor-element[data-side=top]{border-top:4px solid #71d7f7}body.elementor-editor-active #elementor .elementor-element[data-side=bottom]:last-child{border-bottom:4px solid #71d7f7}@media (min-width:768px){body.elementor-editor-active #elementor .elementor-section:not(.elementor-section-height-full) .elementor-column-wrap.elementor-element-empty,body.elementor-editor-active #elementor .elementor-section:not(.elementor-section-height-full) .elementor-column-wrap.elementor-element-empty .elementor-widget-wrap{position:absolute;width:100%;height:100%;top:0}}body.elementor-editor-active #elementor .elementor-top-column .elementor-widget-wrap .elementor-inner-section{margin-top:20px}body.elementor-editor-active #elementor .elementor-editor-element-settings{position:absolute;overflow:hidden}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list{display:table;table-layout:fixed;height:20px;list-style:none;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;line-height:1}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list:not(.elementor-editor-section-settings-list){background-color:#495157}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list:not(.elementor-editor-section-settings-list) .elementor-editor-element-setting:not(:last-child){border-right:1px solid #556068}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list:not(.elementor-editor-section-settings-list) .elementor-editor-element-setting>a:hover{background-color:#556068}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list{background-color:#a4afb7}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list .elementor-editor-element-setting:not(:last-child){border-right:1px solid #c2cbd2}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list .elementor-editor-element-setting.elementor-editor-element-trigger:not(.elementor-active){border:none}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list.elementor-editor-section-settings-list .elementor-editor-element-setting>a:hover{background-color:#c2cbd2}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-settings-list .fa{color:#fff}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-setting{display:table-cell;vertical-align:middle;width:35px;text-align:center;padding:0;margin:0}@media (max-width:1023px){body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-setting:not(.elementor-editor-element-edit){display:none}}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-setting>a{padding:8.5px 0;display:inline-block;width:100%;font-size:11px;color:#fff}body.elementor-editor-active #elementor .elementor-editor-element-settings .elementor-editor-element-remove .fa{color:red}body.elementor-editor-active #elementor .elementor-editor-column-settings{left:-1px;z-index:1;bottom:100%;margin-bottom:1px;transform:translateY(1px);border-radius:3px 3px 0 0}body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-settings-list{float:left}body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger:not(.elementor-active)~.elementor-editor-element-setting{display:none}body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger>a{cursor:move;padding:8.5px}body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger.elementor-active>a:after,body.elementor-editor-active #elementor .elementor-editor-column-settings .elementor-editor-element-trigger>a:hover:after{content:"";font-family:FontAwesome;margin-left:5px}body.elementor-editor-active #elementor .elementor-editor-widget-settings{z-index:2;border-radius:3px}body.elementor-editor-active #elementor .elementor-editor-widget-settings:not(.elementor-open){display:none}@media (max-width:1023px){body.elementor-editor-active #elementor .elementor-editor-element-setting:not(.elementor-editor-element-edit){display:none}}body.elementor-editor-active #elementor .elementor-element-label{position:absolute;right:-1px;top:-1px;background-color:#71d7f7;color:#fff;font-family:Arial,Helvetica,sans-serif;font-size:9px;line-height:1;padding:3px 6px}body.elementor-editor-active #elementor .elementor-section-filled .elementor-editor-column-settings .elementor-editor-element-add,body.elementor-editor-active #elementor .elementor-section-filled .elementor-editor-column-settings .elementor-editor-element-duplicate,body.elementor-editor-active #elementor .elementor-section-filled .elementor-sortable-placeholder.elementor-column{display:none}body.elementor-editor-active #elementor .elementor-section-filled .elementor-row.elementor-draggable-over{border:1px solid red}body.elementor-editor-active #elementor .elementor-row{min-height:100px}body.elementor-editor-active #elementor .elementor-column.elementor-element-editable>.elementor-element-overlay,body.elementor-editor-active #elementor .elementor-column:hover>.elementor-element-overlay{border:1px solid #fff}body.elementor-editor-active #elementor .elementor-column.elementor-element-editable>.elementor-element-overlay:after,body.elementor-editor-active #elementor .elementor-column:hover>.elementor-element-overlay:after{position:absolute;content:'';left:0;right:0;top:0;bottom:0;width:100%;height:100%;outline:1px dashed #373a3c}body.elementor-editor-active #elementor .elementor-column.elementor-dragging-on-child>.elementor-element-overlay{border:1px solid #71d7f7}body.elementor-editor-active #elementor .elementor-column.elementor-dragging-on-child>.elementor-element-overlay:after{display:none}body.elementor-editor-active #elementor .elementor-column .column-title{position:absolute;bottom:100%;right:0;color:#999;font-family:Arial,Helvetica,sans-serif;line-height:1;font-size:12px;font-style:italic}body.elementor-editor-active #elementor .elementor-column>.ui-resizable-e,body.elementor-editor-active #elementor .elementor-column>.ui-resizable-w{cursor:ew-resize;width:7px;position:absolute;right:-5px;top:0;height:100%}body.elementor-editor-active #elementor .elementor-column:last-of-type>.ui-resizable-e{display:none!important}@media (max-width:1023px){body.elementor-editor-active #elementor .elementor-column>.ui-resizable-e{display:none!important}}@media (min-width:768px){body.elementor-editor-active .elementor-column-wrap.elementor-element-empty .elementor-widget-wrap{padding:10px}}body.elementor-editor-active .elementor-widget.elementor-loading{opacity:.3}body.elementor-editor-active .elementor-widget:not(.elementor-loading){transition:all .1s}body.elementor-editor-active .elementor-widget.elementor-element-editable>.elementor-element-overlay,body.elementor-editor-active .elementor-widget:hover>.elementor-element-overlay{border:1px solid #71d7f7}body.elementor-editor-active .elementor-widget:not(.elementor-element-editable):not(:hover) .elementor-element-label{display:none}body.elementor-editor-active .elementor-column.elementor-dragging div.elementor-column-wrap{min-height:50px}body.elementor-editor-active div.handle{display:none}body.elementor-editor-active .elementor-sortable-placeholder{background:#71d7f7;transition-timing-function:ease-out}body.elementor-editor-active .elementor-sortable-placeholder:not(.elementor-column){height:5px}body.elementor-editor-active .elementor-sortable-placeholder.elementor-column{width:5px}body.elementor-editor-active .elementor-sortable-helper{position:absolute;background:rgba(73,81,87,.85);display:table;table-layout:fixed;color:#fff;line-height:50px;border-radius:3px}body.elementor-editor-active .elementor-sortable-helper .fa{font-size:25px;width:60px;text-align:center}body.elementor-editor-active .elementor-sortable-helper>*{display:table-cell;vertical-align:middle}body.elementor-editor-active .elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true])>.elementor-empty-view>.elementor-first-add:after,body.elementor-editor-active .elementor-first-add[data-side]:after{content:'';height:4px;display:block;background-color:#71d7f7}body.elementor-editor-active .elementor-draggable-over:not([data-dragged-element=section]):not([data-dragged-is-inner=true])>.elementor-empty-view>.elementor-first-add .elementor-icon,body.elementor-editor-active .elementor-draggable-over[data-dragged-element=section][data-dragged-is-inner=true] .elementor-sortable-placeholder,body.elementor-editor-active .elementor-first-add[data-side] .elementor-icon{display:none}body.elementor-editor-active #elementor-add-section{background-color:hsla(0,0%,100%,.5);margin:60px auto;padding:40px 0;max-width:1140px;position:relative}body.elementor-editor-active #elementor-add-section:not([data-side]){border:2px dashed #d5dadf}body.elementor-editor-active #elementor-add-section[data-side]{border:3px dashed #71d7f7}body.elementor-editor-active #elementor-add-section-inner{text-align:center;margin-top:10px}body.elementor-editor-active #elementor-add-section-button{background-color:#9b0a46;background-image:none;color:#fff;font-size:13px;font-family:Arial,Helvetica,sans-serif;line-height:1;text-transform:uppercase;font-weight:400;height:40px;width:170px;padding:0;border:none;border-radius:3px;cursor:pointer}body.elementor-editor-active #elementor-add-section-button:hover{opacity:.85;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}body.elementor-editor-active #elementor-add-section-button:active{box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.1)}body.elementor-editor-active #elementor-add-section-drag-title{font-family:Arial,Helvetica,sans-serif;font-size:13px;font-weight:400;font-style:italic;line-height:1;color:#556068;margin-top:10px}body.elementor-editor-active #elementor-select-preset-close{position:absolute;right:20px;top:20px;font-size:20px;cursor:pointer;line-height:1;color:#d5dadf}body.elementor-editor-active #elementor-select-preset-title{font-weight:500;color:#556068}body.elementor-editor-active ul#elementor-select-preset-list{list-style:none;padding:0 25px;margin:20px auto 0;overflow:hidden;max-width:700px}body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset{cursor:pointer;margin:0;padding:10px;float:left}body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset:hover{color:#6d7882}body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset:not(:hover){color:#d5dadf}body.elementor-editor-active ul#elementor-select-preset-list li.elementor-preset [class^=eicon-]{font-size:40px}body.elementor-editor-preview #elementor-add-section,body.elementor-editor-preview .column-title,body.elementor-editor-preview .elementor-element-empty,body.elementor-editor-preview .elementor-element-overlay,body.elementor-editor-preview .elementor-empty{display:none}
|
assets/css/editor-rtl.css
ADDED
@@ -0,0 +1,1717 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@charset "UTF-8";
|
2 |
+
.elementor-clearfix:before, .elementor-clearfix:after {
|
3 |
+
content: " ";
|
4 |
+
display: table; }
|
5 |
+
.elementor-clearfix:after {
|
6 |
+
clear: both; }
|
7 |
+
|
8 |
+
.elementor-screen-only,
|
9 |
+
.screen-reader-text,
|
10 |
+
.screen-reader-text span,
|
11 |
+
.ui-helper-hidden-accessible {
|
12 |
+
position: absolute;
|
13 |
+
width: 1px;
|
14 |
+
height: 1px;
|
15 |
+
margin: -1px;
|
16 |
+
padding: 0;
|
17 |
+
overflow: hidden;
|
18 |
+
clip: rect(0, 0, 0, 0);
|
19 |
+
border: 0; }
|
20 |
+
|
21 |
+
body,
|
22 |
+
html {
|
23 |
+
height: 100%;
|
24 |
+
margin: 0;
|
25 |
+
padding: 0; }
|
26 |
+
|
27 |
+
html {
|
28 |
+
background-color: #F1F1F1; }
|
29 |
+
|
30 |
+
body {
|
31 |
+
color: #373a3c;
|
32 |
+
font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
|
33 |
+
font-size: 13px;
|
34 |
+
font-weight: normal;
|
35 |
+
line-height: 1.4;
|
36 |
+
text-decoration: none;
|
37 |
+
text-transform: none;
|
38 |
+
overflow: hidden; }
|
39 |
+
body.elementor-editor-active #elementor-preview {
|
40 |
+
right: 280px;
|
41 |
+
left: 0; }
|
42 |
+
body.elementor-editor-active #elementor-panel {
|
43 |
+
right: 0; }
|
44 |
+
body.elementor-editor-active #elementor-mode-switcher-preview .fa:before {
|
45 |
+
content: ""; }
|
46 |
+
body:not(.elementor-editor-active) #elementor-preview {
|
47 |
+
left: 0; }
|
48 |
+
body:not(.elementor-editor-active) #elementor-panel {
|
49 |
+
right: -280px; }
|
50 |
+
body:not(.elementor-editor-active) #elementor-mode-switcher-preview .fa:before {
|
51 |
+
content: ""; }
|
52 |
+
|
53 |
+
iframe,
|
54 |
+
img {
|
55 |
+
border: 0 none; }
|
56 |
+
|
57 |
+
#elementor-preview {
|
58 |
+
background-color: #333;
|
59 |
+
position: absolute;
|
60 |
+
overflow: auto;
|
61 |
+
height: 100%;
|
62 |
+
top: 0;
|
63 |
+
right: 0;
|
64 |
+
border: 0; }
|
65 |
+
|
66 |
+
#elementor-preview, #elementor-panel {
|
67 |
+
transition: right 0.5s; }
|
68 |
+
|
69 |
+
#elementor-loading {
|
70 |
+
position: fixed;
|
71 |
+
top: 0;
|
72 |
+
left: 0;
|
73 |
+
bottom: 0;
|
74 |
+
right: 0;
|
75 |
+
background: #6d7882;
|
76 |
+
z-index: 9999; }
|
77 |
+
|
78 |
+
#elementor-loader-wrapper {
|
79 |
+
position: absolute;
|
80 |
+
top: 50%;
|
81 |
+
left: 50%;
|
82 |
+
transform: translateX(-50%) translateY(-50%);
|
83 |
+
width: 100px; }
|
84 |
+
#elementor-loader-wrapper #elementor-loader {
|
85 |
+
height: 100px;
|
86 |
+
position: relative; }
|
87 |
+
#elementor-loader-wrapper .elementor-loader-box {
|
88 |
+
position: absolute;
|
89 |
+
background-color: #e6e9ec;
|
90 |
+
opacity: 0;
|
91 |
+
animation: load 1.8s linear infinite; }
|
92 |
+
#elementor-loader-wrapper .elementor-loader-box:nth-of-type(1) {
|
93 |
+
width: 20%;
|
94 |
+
height: 100%;
|
95 |
+
left: 0;
|
96 |
+
top: 0; }
|
97 |
+
#elementor-loader-wrapper .elementor-loader-box:not(:nth-of-type(1)) {
|
98 |
+
right: 0;
|
99 |
+
height: 20%;
|
100 |
+
width: 60%; }
|
101 |
+
#elementor-loader-wrapper .elementor-loader-box:nth-of-type(2) {
|
102 |
+
top: 0;
|
103 |
+
animation-delay: -0.45s; }
|
104 |
+
#elementor-loader-wrapper .elementor-loader-box:nth-of-type(3) {
|
105 |
+
top: 40%;
|
106 |
+
animation-delay: -0.9s; }
|
107 |
+
#elementor-loader-wrapper .elementor-loader-box:nth-of-type(4) {
|
108 |
+
bottom: 0;
|
109 |
+
animation-delay: -1.35s; }
|
110 |
+
@keyframes load {
|
111 |
+
0% {
|
112 |
+
opacity: .3; }
|
113 |
+
50% {
|
114 |
+
opacity: 1; }
|
115 |
+
100% {
|
116 |
+
opacity: .3; } }
|
117 |
+
@keyframes load-title {
|
118 |
+
0% {
|
119 |
+
opacity: 1; }
|
120 |
+
50% {
|
121 |
+
opacity: .6; }
|
122 |
+
100% {
|
123 |
+
opacity: 1; } }
|
124 |
+
#elementor-loading-title {
|
125 |
+
color: #fff;
|
126 |
+
text-align: center;
|
127 |
+
text-transform: uppercase;
|
128 |
+
margin-top: 30px;
|
129 |
+
letter-spacing: 7px;
|
130 |
+
font-size: 10px;
|
131 |
+
animation: load-title 1.5s linear infinite; }
|
132 |
+
|
133 |
+
.select2-dropdown {
|
134 |
+
border-color: #a4afb7; }
|
135 |
+
.select2-dropdown .select2-search__field {
|
136 |
+
outline: none; }
|
137 |
+
|
138 |
+
.elementor-button {
|
139 |
+
border: none;
|
140 |
+
cursor: pointer;
|
141 |
+
border-radius: 3px;
|
142 |
+
transition: all 0.5s; }
|
143 |
+
.elementor-button:not(.elementor-button-state) .elementor-state-icon {
|
144 |
+
display: none; }
|
145 |
+
.elementor-button .elementor-state-icon {
|
146 |
+
float: left;
|
147 |
+
padding-left: 5px; }
|
148 |
+
|
149 |
+
.elementor-button-success, #elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button {
|
150 |
+
color: #fff; }
|
151 |
+
.elementor-button-success[disabled], #elementor-panel #elementor-panel-footer-save.elementor-save-active [disabled].elementor-button {
|
152 |
+
background-color: #c2cbd2; }
|
153 |
+
.elementor-button-success:not([disabled]), #elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]) {
|
154 |
+
background-color: #38B54A; }
|
155 |
+
.elementor-button-success:not([disabled]):hover, #elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):hover {
|
156 |
+
opacity: 0.85;
|
157 |
+
box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); }
|
158 |
+
.elementor-button-success:not([disabled]):active, #elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):active {
|
159 |
+
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.19), 0 3px 3px rgba(0, 0, 0, 0.1); }
|
160 |
+
|
161 |
+
input, select, textarea {
|
162 |
+
border-radius: 3px;
|
163 |
+
font-size: 12px;
|
164 |
+
width: 100%;
|
165 |
+
background: none;
|
166 |
+
box-shadow: none;
|
167 |
+
color: #495157;
|
168 |
+
border: 1px solid;
|
169 |
+
margin: 0; }
|
170 |
+
input:not(:focus), select:not(:focus), textarea:not(:focus) {
|
171 |
+
border-color: #d5dadf; }
|
172 |
+
input:focus, select:focus, textarea:focus {
|
173 |
+
border-color: #a4afb7; }
|
174 |
+
|
175 |
+
.elementor-error input, .elementor-error select, .elementor-error textarea {
|
176 |
+
border-color: #b01b1b; }
|
177 |
+
|
178 |
+
input, textarea {
|
179 |
+
padding: 5px 8px; }
|
180 |
+
|
181 |
+
textarea {
|
182 |
+
resize: vertical; }
|
183 |
+
|
184 |
+
input[type="checkbox"],
|
185 |
+
input[type="radio"] {
|
186 |
+
border: 1px solid #d5dadf;
|
187 |
+
background: #fff;
|
188 |
+
color: #555;
|
189 |
+
clear: none;
|
190 |
+
cursor: pointer;
|
191 |
+
display: inline-block;
|
192 |
+
line-height: 0;
|
193 |
+
height: 16px;
|
194 |
+
margin: -4px 4px 0 0;
|
195 |
+
outline: 0;
|
196 |
+
padding: 0;
|
197 |
+
text-align: center;
|
198 |
+
vertical-align: middle;
|
199 |
+
width: 16px;
|
200 |
+
min-width: 16px;
|
201 |
+
transition: .05s border-color ease-in-out; }
|
202 |
+
input[type="checkbox"]:focus,
|
203 |
+
input[type="radio"]:focus {
|
204 |
+
border-color: #a4afb7; }
|
205 |
+
|
206 |
+
input[disabled] {
|
207 |
+
background-color: #e6e9ec;
|
208 |
+
cursor: not-allowed;
|
209 |
+
opacity: 1; }
|
210 |
+
|
211 |
+
select {
|
212 |
+
height: 27px; }
|
213 |
+
|
214 |
+
.ps-container {
|
215 |
+
-ms-touch-action: none;
|
216 |
+
overflow: hidden !important; }
|
217 |
+
|
218 |
+
.ps-container.ps-active-x > .ps-scrollbar-x-rail,
|
219 |
+
.ps-container.ps-active-y > .ps-scrollbar-y-rail {
|
220 |
+
display: block; }
|
221 |
+
|
222 |
+
.ps-container.ps-in-scrolling {
|
223 |
+
pointer-events: none; }
|
224 |
+
|
225 |
+
.ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail {
|
226 |
+
background-color: #eee;
|
227 |
+
opacity: 0.9; }
|
228 |
+
|
229 |
+
.ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x {
|
230 |
+
background-color: #999; }
|
231 |
+
|
232 |
+
.ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail {
|
233 |
+
background-color: #eee;
|
234 |
+
opacity: 0.9; }
|
235 |
+
|
236 |
+
.ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y {
|
237 |
+
background-color: #999; }
|
238 |
+
|
239 |
+
.ps-container > .ps-scrollbar-x-rail {
|
240 |
+
display: none;
|
241 |
+
position: absolute;
|
242 |
+
/* please don't change 'position' */
|
243 |
+
border-radius: 4px;
|
244 |
+
opacity: 0;
|
245 |
+
transition: background-color 0.2s linear, opacity 0.2s linear;
|
246 |
+
bottom: 3px;
|
247 |
+
/* there must be 'bottom' for ps-scrollbar-x-rail */
|
248 |
+
height: 8px; }
|
249 |
+
|
250 |
+
.ps-container > .ps-scrollbar-x-rail > .ps-scrollbar-x {
|
251 |
+
position: absolute;
|
252 |
+
/* please don't change 'position' */
|
253 |
+
background-color: #aaa;
|
254 |
+
border-radius: 4px;
|
255 |
+
transition: background-color 0.2s linear;
|
256 |
+
bottom: 0;
|
257 |
+
/* there must be 'bottom' for ps-scrollbar-x */
|
258 |
+
height: 8px; }
|
259 |
+
|
260 |
+
.ps-container > .ps-scrollbar-y-rail {
|
261 |
+
display: none;
|
262 |
+
position: absolute;
|
263 |
+
/* please don't change 'position' */
|
264 |
+
border-radius: 4px;
|
265 |
+
opacity: 0;
|
266 |
+
transition: background-color 0.2s linear, opacity 0.2s linear;
|
267 |
+
right: 3px;
|
268 |
+
/* there must be 'right' for ps-scrollbar-y-rail */
|
269 |
+
width: 8px; }
|
270 |
+
|
271 |
+
.ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y {
|
272 |
+
position: absolute;
|
273 |
+
/* please don't change 'position' */
|
274 |
+
background-color: #aaa;
|
275 |
+
border-radius: 4px;
|
276 |
+
transition: background-color 0.2s linear;
|
277 |
+
right: 0;
|
278 |
+
/* there must be 'right' for ps-scrollbar-y */
|
279 |
+
width: 8px; }
|
280 |
+
|
281 |
+
.ps-container:hover.ps-in-scrolling {
|
282 |
+
pointer-events: none; }
|
283 |
+
|
284 |
+
.ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail {
|
285 |
+
background-color: #eee;
|
286 |
+
opacity: 0.9; }
|
287 |
+
|
288 |
+
.ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x {
|
289 |
+
background-color: #999; }
|
290 |
+
|
291 |
+
.ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail {
|
292 |
+
background-color: #eee;
|
293 |
+
opacity: 0.9; }
|
294 |
+
|
295 |
+
.ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y {
|
296 |
+
background-color: #999; }
|
297 |
+
|
298 |
+
.ps-container:hover > .ps-scrollbar-x-rail,
|
299 |
+
.ps-container:hover > .ps-scrollbar-y-rail {
|
300 |
+
opacity: 0.6; }
|
301 |
+
|
302 |
+
.ps-container:hover > .ps-scrollbar-x-rail:hover {
|
303 |
+
background-color: #eee;
|
304 |
+
opacity: 0.9; }
|
305 |
+
|
306 |
+
.ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x {
|
307 |
+
background-color: #999; }
|
308 |
+
|
309 |
+
.ps-container:hover > .ps-scrollbar-y-rail:hover {
|
310 |
+
background-color: #eee;
|
311 |
+
opacity: 0.9; }
|
312 |
+
|
313 |
+
.ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y {
|
314 |
+
background-color: #999; }
|
315 |
+
|
316 |
+
/* Make clicks pass-through */
|
317 |
+
#nprogress {
|
318 |
+
pointer-events: none; }
|
319 |
+
|
320 |
+
#nprogress .bar {
|
321 |
+
background: #39b54a;
|
322 |
+
position: fixed;
|
323 |
+
z-index: 1031;
|
324 |
+
top: 0;
|
325 |
+
left: 0;
|
326 |
+
width: 100%;
|
327 |
+
height: 2px; }
|
328 |
+
|
329 |
+
/* Fancy blur effect */
|
330 |
+
#nprogress .peg {
|
331 |
+
display: block;
|
332 |
+
position: absolute;
|
333 |
+
right: 0;
|
334 |
+
width: 100px;
|
335 |
+
height: 100%;
|
336 |
+
box-shadow: 0 0 10px #39b54a, 0 0 5px #39b54a;
|
337 |
+
opacity: 1.0;
|
338 |
+
transform: rotate(3deg) translate(0px, -4px); }
|
339 |
+
|
340 |
+
/* Remove these to get rid of the spinner */
|
341 |
+
#nprogress .spinner {
|
342 |
+
display: none;
|
343 |
+
position: fixed;
|
344 |
+
z-index: 1031;
|
345 |
+
top: 15px;
|
346 |
+
right: 15px; }
|
347 |
+
|
348 |
+
#nprogress .spinner-icon {
|
349 |
+
width: 18px;
|
350 |
+
height: 18px;
|
351 |
+
box-sizing: border-box;
|
352 |
+
border: solid 2px transparent;
|
353 |
+
border-top-color: #39b54a;
|
354 |
+
border-left-color: #39b54a;
|
355 |
+
border-radius: 50%;
|
356 |
+
animation: nprogress-spinner 400ms linear infinite; }
|
357 |
+
|
358 |
+
.nprogress-custom-parent {
|
359 |
+
overflow: hidden;
|
360 |
+
position: relative; }
|
361 |
+
|
362 |
+
.nprogress-custom-parent #nprogress .spinner,
|
363 |
+
.nprogress-custom-parent #nprogress .bar {
|
364 |
+
position: absolute; }
|
365 |
+
|
366 |
+
@keyframes nprogress-spinner {
|
367 |
+
0% {
|
368 |
+
transform: rotate(0deg); }
|
369 |
+
100% {
|
370 |
+
transform: rotate(360deg); } }
|
371 |
+
#nprogress .bar,
|
372 |
+
#nprogress .spinner {
|
373 |
+
z-index: 100000; }
|
374 |
+
|
375 |
+
#elementor-panel {
|
376 |
+
color: #373a3c;
|
377 |
+
font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
|
378 |
+
font-size: 13px;
|
379 |
+
font-weight: normal;
|
380 |
+
line-height: 1.4;
|
381 |
+
background-color: #e6e9ec;
|
382 |
+
position: fixed;
|
383 |
+
width: 280px;
|
384 |
+
height: 100%;
|
385 |
+
top: 0;
|
386 |
+
bottom: 0;
|
387 |
+
overflow: visible; }
|
388 |
+
#elementor-panel * {
|
389 |
+
box-sizing: border-box; }
|
390 |
+
#elementor-panel *:before,
|
391 |
+
#elementor-panel *:after {
|
392 |
+
box-sizing: border-box; }
|
393 |
+
#elementor-panel ::-moz-selection {
|
394 |
+
background: #5bc0de;
|
395 |
+
color: #ffffff; }
|
396 |
+
#elementor-panel ::selection {
|
397 |
+
background: #5bc0de;
|
398 |
+
color: #ffffff; }
|
399 |
+
#elementor-panel a {
|
400 |
+
text-decoration: none;
|
401 |
+
transition: none; }
|
402 |
+
#elementor-panel a:visited {
|
403 |
+
color: inherit; }
|
404 |
+
#elementor-panel ol,
|
405 |
+
#elementor-panel ul {
|
406 |
+
list-style: none;
|
407 |
+
padding: 0;
|
408 |
+
margin: 0; }
|
409 |
+
#elementor-panel h1,
|
410 |
+
#elementor-panel h2,
|
411 |
+
#elementor-panel h3,
|
412 |
+
#elementor-panel h4,
|
413 |
+
#elementor-panel h5,
|
414 |
+
#elementor-panel h6 {
|
415 |
+
font-size: 100%;
|
416 |
+
font-weight: normal; }
|
417 |
+
#elementor-panel abbr,
|
418 |
+
#elementor-panel acronym {
|
419 |
+
border: 0;
|
420 |
+
font-variant: normal; }
|
421 |
+
#elementor-panel sup {
|
422 |
+
vertical-align: text-top; }
|
423 |
+
#elementor-panel sub {
|
424 |
+
vertical-align: text-bottom; }
|
425 |
+
#elementor-panel img {
|
426 |
+
max-width: 100%;
|
427 |
+
height: auto;
|
428 |
+
border: 0; }
|
429 |
+
#elementor-panel ::-moz-focus-inner {
|
430 |
+
padding: 0;
|
431 |
+
border: 0; }
|
432 |
+
#elementor-panel :focus {
|
433 |
+
outline: 0; }
|
434 |
+
#elementor-panel .elementor-panel-inner {
|
435 |
+
position: relative;
|
436 |
+
height: 100%;
|
437 |
+
box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); }
|
438 |
+
#elementor-panel .elementor-panel-container {
|
439 |
+
clear: both;
|
440 |
+
padding-left: 15px;
|
441 |
+
padding-right: 15px; }
|
442 |
+
#elementor-panel .elementor-panel-heading {
|
443 |
+
display: table;
|
444 |
+
table-layout: fixed;
|
445 |
+
height: 40px;
|
446 |
+
padding: 0 20px;
|
447 |
+
width: 100%;
|
448 |
+
border-bottom: 1px solid #e6e9ec;
|
449 |
+
cursor: pointer; }
|
450 |
+
#elementor-panel .elementor-panel-heading:not(.elementor-open) .elementor-panel-heading-toggle .fa:before {
|
451 |
+
content: ""; }
|
452 |
+
#elementor-panel .elementor-panel-heading.elementor-open .elementor-panel-heading-toggle .fa:before {
|
453 |
+
content: '\f0d7'; }
|
454 |
+
#elementor-panel .elementor-panel-heading > * {
|
455 |
+
display: table-cell;
|
456 |
+
vertical-align: middle; }
|
457 |
+
#elementor-panel .elementor-panel-heading-toggle {
|
458 |
+
width: 20px;
|
459 |
+
color: #495157; }
|
460 |
+
#elementor-panel .elementor-panel-heading-title {
|
461 |
+
color: #495157;
|
462 |
+
font-weight: bold; }
|
463 |
+
#elementor-panel .elementor-panel-box {
|
464 |
+
margin-top: 10px;
|
465 |
+
background-color: #fff; }
|
466 |
+
#elementor-panel .elementor-panel-box-content {
|
467 |
+
padding: 20px 20px 10px; }
|
468 |
+
#elementor-panel .elementor-control-title {
|
469 |
+
color: #6d7882;
|
470 |
+
font-size: 12px; }
|
471 |
+
#elementor-panel .select2-container {
|
472 |
+
width: 100% !important; }
|
473 |
+
#elementor-panel .select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single {
|
474 |
+
border-color: #d5dadf; }
|
475 |
+
#elementor-panel .select2-container.select2-container--open .select2-selection--single, #elementor-panel .select2-container.select2-container--focus .select2-selection--single {
|
476 |
+
border-color: #a4afb7; }
|
477 |
+
#elementor-panel .select2-selection--single {
|
478 |
+
height: 27px; }
|
479 |
+
#elementor-panel .select2-selection__rendered {
|
480 |
+
line-height: 27px; }
|
481 |
+
#elementor-panel .select2-selection__arrow {
|
482 |
+
height: 27px;
|
483 |
+
top: 0; }
|
484 |
+
#elementor-panel #elementor-panel-header {
|
485 |
+
display: table;
|
486 |
+
height: 40px;
|
487 |
+
width: 100%;
|
488 |
+
background-color: #9b0a46;
|
489 |
+
color: #fff; }
|
490 |
+
#elementor-panel #elementor-panel-header > * {
|
491 |
+
display: table-cell;
|
492 |
+
vertical-align: middle;
|
493 |
+
text-align: center; }
|
494 |
+
#elementor-panel .elementor-header-button {
|
495 |
+
width: 40px; }
|
496 |
+
#elementor-panel .elementor-header-button .elementor-icon {
|
497 |
+
cursor: pointer;
|
498 |
+
display: block;
|
499 |
+
font-size: 19px;
|
500 |
+
height: 40px;
|
501 |
+
line-height: 40px;
|
502 |
+
transition: all 0.5s; }
|
503 |
+
#elementor-panel .elementor-header-button .elementor-icon:hover {
|
504 |
+
color: #d5dadf; }
|
505 |
+
#elementor-panel #elementor-panel-header-title {
|
506 |
+
font-size: 15px; }
|
507 |
+
#elementor-panel #elementor-panel-elements-search-area {
|
508 |
+
box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); }
|
509 |
+
#elementor-panel #elementor-panel-elements {
|
510 |
+
overflow: hidden;
|
511 |
+
padding: 5px; }
|
512 |
+
#elementor-panel .elementor-element-wrapper {
|
513 |
+
float: left;
|
514 |
+
width: 50%;
|
515 |
+
padding: 5px;
|
516 |
+
text-align: center;
|
517 |
+
box-sizing: border-box; }
|
518 |
+
#elementor-panel .elementor-element {
|
519 |
+
border-radius: 3px;
|
520 |
+
padding-bottom: 10px;
|
521 |
+
background-color: #fff;
|
522 |
+
cursor: move; }
|
523 |
+
#elementor-panel .elementor-element:hover {
|
524 |
+
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); }
|
525 |
+
#elementor-panel .elementor-element:hover .icon, #elementor-panel .elementor-element:hover .title {
|
526 |
+
color: #9b0a46; }
|
527 |
+
#elementor-panel .elementor-element .icon {
|
528 |
+
font-size: 28px;
|
529 |
+
padding: 15px 0;
|
530 |
+
line-height: 1;
|
531 |
+
color: #556068; }
|
532 |
+
#elementor-panel .elementor-element .title {
|
533 |
+
font-size: 11px;
|
534 |
+
color: #556068; }
|
535 |
+
#elementor-panel #elementor-panel-elements-search-wrapper {
|
536 |
+
position: relative; }
|
537 |
+
#elementor-panel #elementor-panel-elements-search-wrapper .fa {
|
538 |
+
position: absolute;
|
539 |
+
left: 15px;
|
540 |
+
top: 50%;
|
541 |
+
color: #a4afb7;
|
542 |
+
transform: translateY(-50%); }
|
543 |
+
#elementor-panel #elementor-panel-elements-search-input {
|
544 |
+
width: 100%;
|
545 |
+
background-color: #fff;
|
546 |
+
line-height: 1;
|
547 |
+
font-size: 11px;
|
548 |
+
padding: 8px 15px 8px 42px;
|
549 |
+
font-style: italic;
|
550 |
+
color: #a4afb7;
|
551 |
+
border: none;
|
552 |
+
border-radius: 0;
|
553 |
+
margin: 0; }
|
554 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-title {
|
555 |
+
padding: 10px 20px;
|
556 |
+
margin-top: 10px; }
|
557 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-buttons {
|
558 |
+
padding-right: 20px;
|
559 |
+
display: table;
|
560 |
+
table-layout: fixed;
|
561 |
+
width: 100%;
|
562 |
+
height: 40px;
|
563 |
+
background-color: #fff; }
|
564 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-button-wrapper {
|
565 |
+
display: table-cell;
|
566 |
+
vertical-align: middle; }
|
567 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-save {
|
568 |
+
text-align: center; }
|
569 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-save .elementor-button {
|
570 |
+
padding: 6px 18px;
|
571 |
+
text-transform: uppercase; }
|
572 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-reset .elementor-button, #elementor-panel .elementor-panel-scheme .elementor-panel-scheme-discard .elementor-button {
|
573 |
+
color: #a4afb7;
|
574 |
+
background: none; }
|
575 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-reset .fa, #elementor-panel .elementor-panel-scheme .elementor-panel-scheme-discard .fa {
|
576 |
+
margin-right: 3px; }
|
577 |
+
#elementor-panel #elementor-panel-scheme-color .elementor-panel-scheme-items {
|
578 |
+
position: relative; }
|
579 |
+
#elementor-panel #elementor-panel-scheme-color .elementor-panel-scheme-item {
|
580 |
+
display: inline-block;
|
581 |
+
margin-bottom: 10px; }
|
582 |
+
#elementor-panel #elementor-panel-scheme-color .elementor-panel-scheme-item:not(:nth-child(4n)) {
|
583 |
+
margin-left: 13px; }
|
584 |
+
#elementor-panel #elementor-panel-scheme-color .wp-picker-container.wp-picker-active {
|
585 |
+
transform: translateY(-20px); }
|
586 |
+
#elementor-panel #elementor-panel-scheme-color .wp-picker-container.wp-picker-active .wp-color-result {
|
587 |
+
margin-right: 7px; }
|
588 |
+
#elementor-panel .elementor-panel-scheme-typography-item {
|
589 |
+
display: table;
|
590 |
+
table-layout: fixed;
|
591 |
+
width: 100%;
|
592 |
+
margin-bottom: 15px; }
|
593 |
+
#elementor-panel .elementor-panel-scheme-typography-item > * {
|
594 |
+
display: table-cell;
|
595 |
+
vertical-align: middle; }
|
596 |
+
#elementor-panel .elementor-panel-scheme-typography-item-value select, #elementor-panel .elementor-panel-scheme-typography-item-value input {
|
597 |
+
width: 100%; }
|
598 |
+
#elementor-panel .elementor-panel-scheme-item .elementor-panel-heading:not(.elementor-open) + .elementor-panel-scheme-typography-items {
|
599 |
+
display: none; }
|
600 |
+
#elementor-panel .elementor-panel-scheme-color-system-scheme {
|
601 |
+
margin-bottom: 10px; }
|
602 |
+
#elementor-panel .elementor-panel-scheme-color-system-scheme .elementor-title {
|
603 |
+
font-size: 11px;
|
604 |
+
color: #a4afb7;
|
605 |
+
font-style: italic;
|
606 |
+
margin-top: 5px; }
|
607 |
+
#elementor-panel .elementor-panel-scheme-color-system-items {
|
608 |
+
transition: border .5s;
|
609 |
+
overflow: hidden;
|
610 |
+
padding: 3px;
|
611 |
+
border-radius: 3px;
|
612 |
+
border: 1px solid #d5dadf;
|
613 |
+
cursor: pointer; }
|
614 |
+
#elementor-panel .elementor-panel-scheme-color-system-items:hover {
|
615 |
+
border: 1px solid #a4afb7; }
|
616 |
+
#elementor-panel .elementor-panel-scheme-color-system-item {
|
617 |
+
float: left;
|
618 |
+
height: 20px;
|
619 |
+
width: 25%; }
|
620 |
+
#elementor-panel #elementor-panel-content-wrapper {
|
621 |
+
position: absolute;
|
622 |
+
bottom: 40px;
|
623 |
+
top: 40px;
|
624 |
+
left: 0;
|
625 |
+
width: 100%; }
|
626 |
+
#elementor-panel #elementor-panel-page-menu {
|
627 |
+
box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); }
|
628 |
+
#elementor-panel .elementor-panel-menu-item {
|
629 |
+
display: table;
|
630 |
+
width: 100%;
|
631 |
+
height: 50px;
|
632 |
+
cursor: pointer;
|
633 |
+
margin-bottom: 1px; }
|
634 |
+
#elementor-panel .elementor-panel-menu-item:not(:hover) {
|
635 |
+
background-color: #fff; }
|
636 |
+
#elementor-panel .elementor-panel-menu-item > * {
|
637 |
+
display: table-cell;
|
638 |
+
vertical-align: middle; }
|
639 |
+
#elementor-panel .elementor-panel-menu-item-icon {
|
640 |
+
text-align: center;
|
641 |
+
color: #6d7882;
|
642 |
+
width: 55px; }
|
643 |
+
#elementor-panel .elementor-panel-menu-item-title {
|
644 |
+
color: #6d7882;
|
645 |
+
font-weight: 500; }
|
646 |
+
#elementor-panel .elementor-panel-menu-item-title > span {
|
647 |
+
color: #39b54a; }
|
648 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls {
|
649 |
+
background-color: #ffffff;
|
650 |
+
box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); }
|
651 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul {
|
652 |
+
display: table;
|
653 |
+
table-layout: fixed;
|
654 |
+
width: 100%; }
|
655 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li {
|
656 |
+
display: table-cell; }
|
657 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-content a:before {
|
658 |
+
content: '\f040'; }
|
659 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-style a:before {
|
660 |
+
content: '\f042'; }
|
661 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-advanced a:before {
|
662 |
+
content: '\f013'; }
|
663 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-responsive a:before {
|
664 |
+
content: '\f10a'; }
|
665 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-structure a:before {
|
666 |
+
content: '\f00a'; }
|
667 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-section a:before {
|
668 |
+
content: '\f147'; }
|
669 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-column a:before {
|
670 |
+
content: '\f0db'; }
|
671 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.active {
|
672 |
+
background-image: linear-gradient(to bottom, #f3f3f3, #fff);
|
673 |
+
border-bottom: 3px solid #9b0a46; }
|
674 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li a {
|
675 |
+
display: block;
|
676 |
+
line-height: 1;
|
677 |
+
text-align: center;
|
678 |
+
padding: 12px 0 8px;
|
679 |
+
font-size: 10px;
|
680 |
+
color: #6d7882; }
|
681 |
+
#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li a:before {
|
682 |
+
font-family: FontAwesome;
|
683 |
+
font-size: 16px;
|
684 |
+
display: block;
|
685 |
+
line-height: 1;
|
686 |
+
margin-bottom: 6px; }
|
687 |
+
#elementor-panel #elementor-panel-page-editor .elementor-controls > .elementor-control:not(.elementor-active-tab) {
|
688 |
+
display: none; }
|
689 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control {
|
690 |
+
background-color: #fff;
|
691 |
+
position: relative;
|
692 |
+
padding: 0 20px 15px; }
|
693 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-control-separator-default:before {
|
694 |
+
content: '';
|
695 |
+
height: 1px;
|
696 |
+
display: block;
|
697 |
+
margin-bottom: 15px;
|
698 |
+
background-color: #e6e9ec; }
|
699 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-control-separator-before {
|
700 |
+
padding-top: 15px; }
|
701 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-control-separator-before:before {
|
702 |
+
content: '';
|
703 |
+
position: absolute;
|
704 |
+
height: 3px;
|
705 |
+
width: 100%;
|
706 |
+
top: 0;
|
707 |
+
left: 0;
|
708 |
+
background-color: #d5dadf; }
|
709 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-control-hidden-label .elementor-control-title {
|
710 |
+
display: none; }
|
711 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-active-tab.elementor-hidden-control {
|
712 |
+
display: none; }
|
713 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-active-tab.elementor-control-under-section {
|
714 |
+
display: none; }
|
715 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-active-tab.elementor-control-under-section.elementor-open {
|
716 |
+
display: block; }
|
717 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-active-tab.elementor-control-under-section.elementor-open.elementor-hidden-control {
|
718 |
+
display: none; }
|
719 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-label-block:not(.elementor-control-hidden-label) .elementor-control-title {
|
720 |
+
display: block;
|
721 |
+
margin-bottom: 10px; }
|
722 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-label-inline .elementor-control-field {
|
723 |
+
display: table;
|
724 |
+
width: 100%; }
|
725 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-label-inline .elementor-control-field > * {
|
726 |
+
display: table-cell;
|
727 |
+
vertical-align: middle; }
|
728 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-label-inline .elementor-control-title {
|
729 |
+
width: 45%; }
|
730 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-control-type-heading .elementor-control-title {
|
731 |
+
font-weight: bold;
|
732 |
+
margin: 0; }
|
733 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-description {
|
734 |
+
margin-top: 10px;
|
735 |
+
font-size: 11px;
|
736 |
+
font-style: italic; }
|
737 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-descriptor {
|
738 |
+
font-size: 11px;
|
739 |
+
font-style: italic;
|
740 |
+
color: #a4afb7; }
|
741 |
+
#elementor-panel #elementor-panel-page-editor .elementor-choices {
|
742 |
+
display: table;
|
743 |
+
width: 100%;
|
744 |
+
height: 27px;
|
745 |
+
background-color: #a4afb7;
|
746 |
+
text-align: center;
|
747 |
+
border-spacing: 1px;
|
748 |
+
border-radius: 3px; }
|
749 |
+
#elementor-panel #elementor-panel-page-editor .elementor-choices input {
|
750 |
+
display: none; }
|
751 |
+
#elementor-panel #elementor-panel-page-editor .elementor-choices input:checked + .elementor-choices-label {
|
752 |
+
color: #fff; }
|
753 |
+
#elementor-panel #elementor-panel-page-editor .elementor-choices input:not(:checked) + .elementor-choices-label {
|
754 |
+
background-color: #fff;
|
755 |
+
color: #a4afb7; }
|
756 |
+
#elementor-panel #elementor-panel-page-editor .elementor-choices .elementor-choices-label {
|
757 |
+
display: table-cell;
|
758 |
+
vertical-align: middle;
|
759 |
+
font-size: 12px;
|
760 |
+
transition: all .5s;
|
761 |
+
cursor: pointer; }
|
762 |
+
#elementor-panel #elementor-panel-page-editor .elementor-units-choices {
|
763 |
+
float: left; }
|
764 |
+
#elementor-panel #elementor-panel-page-editor .elementor-units-choices input {
|
765 |
+
display: none; }
|
766 |
+
#elementor-panel #elementor-panel-page-editor .elementor-units-choices input:not(:checked) + label {
|
767 |
+
color: #c2cbd2; }
|
768 |
+
#elementor-panel #elementor-panel-page-editor .elementor-units-choices input:checked + label {
|
769 |
+
text-decoration: underline; }
|
770 |
+
#elementor-panel #elementor-panel-page-editor .elementor-units-choices label {
|
771 |
+
cursor: pointer;
|
772 |
+
padding: 0 2px;
|
773 |
+
text-transform: uppercase;
|
774 |
+
font-size: 9px; }
|
775 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media {
|
776 |
+
padding: 7px;
|
777 |
+
border: 1px solid;
|
778 |
+
height: 150px; }
|
779 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media:not(:hover) {
|
780 |
+
border-color: #d5dadf; }
|
781 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media:not(:hover) .elementor-control-media-upload-button {
|
782 |
+
background-color: #d5dadf; }
|
783 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media:hover {
|
784 |
+
border-color: #a4afb7; }
|
785 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media:hover .elementor-control-media-upload-button {
|
786 |
+
background-color: #a4afb7; }
|
787 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media.media-empty .elementor-control-media-image-area {
|
788 |
+
display: none; }
|
789 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media:not(.media-empty) .elementor-control-media-upload-button {
|
790 |
+
display: none; }
|
791 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media > * {
|
792 |
+
height: 100%;
|
793 |
+
cursor: pointer;
|
794 |
+
position: relative; }
|
795 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .fa-plus-circle {
|
796 |
+
position: absolute;
|
797 |
+
top: 50%;
|
798 |
+
left: 50%;
|
799 |
+
transform: translateX(-50%) translateY(-50%);
|
800 |
+
color: #fff;
|
801 |
+
font-size: 20px; }
|
802 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media-image-area:not(:hover) .elementor-control-media-delete {
|
803 |
+
display: none; }
|
804 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media-image-area:hover .elementor-control-media-image {
|
805 |
+
opacity: .5; }
|
806 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media-delete {
|
807 |
+
position: absolute;
|
808 |
+
bottom: 0;
|
809 |
+
left: 0;
|
810 |
+
right: 0;
|
811 |
+
text-align: center;
|
812 |
+
line-height: 1;
|
813 |
+
padding: 9.5px;
|
814 |
+
font-size: 11px;
|
815 |
+
color: #fff;
|
816 |
+
background-color: #a4afb7;
|
817 |
+
text-transform: uppercase; }
|
818 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media-image {
|
819 |
+
height: 100%;
|
820 |
+
background-size: cover; }
|
821 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions .elementor-control-dimensions {
|
822 |
+
overflow: hidden; }
|
823 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li {
|
824 |
+
float: left;
|
825 |
+
width: 20%; }
|
826 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li input,
|
827 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li .elementor-link-dimensions {
|
828 |
+
display: block;
|
829 |
+
text-align: center;
|
830 |
+
width: 100%;
|
831 |
+
border-color: #a4afb7;
|
832 |
+
height: 27px; }
|
833 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li input {
|
834 |
+
border-left: none;
|
835 |
+
border-radius: 0;
|
836 |
+
padding: 4px 0; }
|
837 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li input + span {
|
838 |
+
display: block;
|
839 |
+
text-align: center;
|
840 |
+
color: #D4D4D4;
|
841 |
+
font-size: 9px;
|
842 |
+
text-transform: uppercase;
|
843 |
+
line-height: 1;
|
844 |
+
padding-top: 5px; }
|
845 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li input:focus + span {
|
846 |
+
color: #818a91; }
|
847 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li .elementor-link-dimensions {
|
848 |
+
border: 1px solid #a4afb7;
|
849 |
+
border-left: none;
|
850 |
+
background-color: #fff;
|
851 |
+
padding: 0;
|
852 |
+
outline: none;
|
853 |
+
border-radius: 0 3px 3px 0;
|
854 |
+
cursor: pointer; }
|
855 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li:first-child input {
|
856 |
+
border-left: 1px solid #a4afb7;
|
857 |
+
border-radius: 3px 0 0 3px; }
|
858 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions .elementor-link-dimensions.unlinked {
|
859 |
+
background-color: #fff; }
|
860 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked {
|
861 |
+
display: none; }
|
862 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) {
|
863 |
+
background-color: #a4afb7; }
|
864 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked {
|
865 |
+
display: none; }
|
866 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions .elementor-link-dimensions .elementor-linked {
|
867 |
+
color: #fff; }
|
868 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-url .elementor-control-input-wrapper {
|
869 |
+
position: relative; }
|
870 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-url .elementor-control-url-target {
|
871 |
+
position: absolute;
|
872 |
+
top: 0;
|
873 |
+
right: 0;
|
874 |
+
padding: 0;
|
875 |
+
height: 100%;
|
876 |
+
width: 40px;
|
877 |
+
border: none;
|
878 |
+
border-left: 1px solid;
|
879 |
+
background: none;
|
880 |
+
cursor: pointer;
|
881 |
+
font-size: 10px;
|
882 |
+
border-radius: 0 3px 3px 0; }
|
883 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-url .elementor-control-url-target.active {
|
884 |
+
background-color: #a4afb7; }
|
885 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-url .elementor-control-url-target.active .elementor-control-url-external {
|
886 |
+
color: #fff; }
|
887 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-url .elementor-control-url-target:not(.active) .elementor-control-url-external {
|
888 |
+
opacity: .5; }
|
889 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-url input {
|
890 |
+
padding-right: 46px;
|
891 |
+
direction: ltr; }
|
892 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-url input:not(:focus) + .elementor-control-url-target {
|
893 |
+
border-color: #d5dadf; }
|
894 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-url input:not(:focus) + .elementor-control-url-target.active {
|
895 |
+
background-color: #d5dadf; }
|
896 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-url input:focus + .elementor-control-url-target {
|
897 |
+
border-color: #a4afb7; }
|
898 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-url input:focus + .elementor-control-url-target.active {
|
899 |
+
background-color: #a4afb7; }
|
900 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-text_align .elementor-control-type-choose .elementor-choices {
|
901 |
+
direction: ltr; }
|
902 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-slider input {
|
903 |
+
width: 80%;
|
904 |
+
float: left; }
|
905 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-slider .elementor-control-slider {
|
906 |
+
display: inline-block;
|
907 |
+
margin-top: 10px;
|
908 |
+
height: 4px;
|
909 |
+
background-color: #a4afb7;
|
910 |
+
border-radius: 5px;
|
911 |
+
position: relative;
|
912 |
+
width: 67%; }
|
913 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-slider .elementor-control-slider-input {
|
914 |
+
width: 33%;
|
915 |
+
float: left; }
|
916 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-slider .ui-slider-handle {
|
917 |
+
height: 16px;
|
918 |
+
width: 16px;
|
919 |
+
background-color: #fff;
|
920 |
+
display: inline-block;
|
921 |
+
top: 50%;
|
922 |
+
transform: translateY(-50%) translateX(-8px);
|
923 |
+
position: absolute;
|
924 |
+
box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.3);
|
925 |
+
border-radius: 50%;
|
926 |
+
cursor: pointer; }
|
927 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-section {
|
928 |
+
margin-top: 10px;
|
929 |
+
padding: 0; }
|
930 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-section + .elementor-control:not(.elementor-control-type-section) {
|
931 |
+
padding-top: 15px; }
|
932 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-section + .elementor-control:not(.elementor-control-type-section):before {
|
933 |
+
display: none; }
|
934 |
+
#elementor-panel #elementor-panel-page-editor .wp-picker-container:not(.wp-picker-active) {
|
935 |
+
float: left; }
|
936 |
+
#elementor-panel #elementor-panel-page-editor .wp-picker-container.wp-picker-active {
|
937 |
+
transform: translateY(-18px); }
|
938 |
+
#elementor-panel #elementor-panel-page-editor .wp-picker-container.wp-picker-active .wp-color-result {
|
939 |
+
margin-right: 3px; }
|
940 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg * {
|
941 |
+
box-sizing: content-box; }
|
942 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .wp-editor-container {
|
943 |
+
border: 1px solid #e6e9ec;
|
944 |
+
border-radius: 3px; }
|
945 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg #insert-media-button {
|
946 |
+
margin-top: 7px;
|
947 |
+
height: initial;
|
948 |
+
line-height: 1;
|
949 |
+
font-size: 11px;
|
950 |
+
padding: 3px 9px;
|
951 |
+
background-color: #e6e9ec; }
|
952 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .ed_button {
|
953 |
+
height: 22px;
|
954 |
+
width: initial; }
|
955 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .wp-media-buttons-icon {
|
956 |
+
height: 14px;
|
957 |
+
margin: 0; }
|
958 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .wp-media-buttons-icon:before {
|
959 |
+
font-size: 14px; }
|
960 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .wp-switch-editor {
|
961 |
+
border: none;
|
962 |
+
color: #6d7882;
|
963 |
+
font-size: 11px;
|
964 |
+
padding: 3px 12px 4px;
|
965 |
+
border-radius: 3px 3px 0 0; }
|
966 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .html-active .switch-tmce {
|
967 |
+
background-color: transparent; }
|
968 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .html-active .switch-html {
|
969 |
+
background-color: #e6e9ec; }
|
970 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .tmce-active .switch-tmce {
|
971 |
+
background-color: #e6e9ec; }
|
972 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .tmce-active .switch-html {
|
973 |
+
background-color: transparent; }
|
974 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-toolbar-grp, #elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .quicktags-toolbar {
|
975 |
+
background-color: #e6e9ec; }
|
976 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-toolbar-grp > div {
|
977 |
+
padding: 0 3px; }
|
978 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .elementor-wp-editor {
|
979 |
+
box-sizing: border-box; }
|
980 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-ico {
|
981 |
+
color: #6d7882;
|
982 |
+
font-size: 16px; }
|
983 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-btn:hover, #elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-btn:active, #elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-btn.mce-active {
|
984 |
+
border-color: #d5dadf; }
|
985 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-path {
|
986 |
+
padding: 5px 10px; }
|
987 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-path-item {
|
988 |
+
font-size: 12px;
|
989 |
+
color: #6d7882; }
|
990 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-icon .select2-selection__rendered .fa {
|
991 |
+
margin-right: 3px; }
|
992 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-preset {
|
993 |
+
border: 1px solid #e6e9ec;
|
994 |
+
padding: 3px;
|
995 |
+
border-radius: 3px; }
|
996 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-preset:not(.elementor-control-structure-current-preset) {
|
997 |
+
display: inline-block;
|
998 |
+
cursor: pointer; }
|
999 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-preset:not(.elementor-control-structure-current-preset) i {
|
1000 |
+
font-size: 50px; }
|
1001 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-preset i {
|
1002 |
+
color: #e6e9ec; }
|
1003 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-current-preset i {
|
1004 |
+
font-size: 116px; }
|
1005 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-more-presets-title {
|
1006 |
+
color: #495157;
|
1007 |
+
font-weight: bold;
|
1008 |
+
padding: 15px 20px;
|
1009 |
+
border-bottom: 1px solid #e6e9ec;
|
1010 |
+
line-height: 1; }
|
1011 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-more-presets {
|
1012 |
+
display: -ms-flexbox;
|
1013 |
+
display: flex;
|
1014 |
+
-ms-flex-wrap: wrap;
|
1015 |
+
flex-wrap: wrap;
|
1016 |
+
-ms-flex-pack: justify;
|
1017 |
+
justify-content: space-between; }
|
1018 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-more-presets input {
|
1019 |
+
display: none; }
|
1020 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-more-presets input:checked + .elementor-control-structure-preset i {
|
1021 |
+
color: #a4afb7; }
|
1022 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-preset-wrapper {
|
1023 |
+
width: 45%;
|
1024 |
+
margin-top: 15px; }
|
1025 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-preset-title {
|
1026 |
+
text-align: center;
|
1027 |
+
padding-top: 5px;
|
1028 |
+
font-style: italic; }
|
1029 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater, #elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-control {
|
1030 |
+
padding: 0 10px 15px; }
|
1031 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-control:before {
|
1032 |
+
display: none; }
|
1033 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove {
|
1034 |
+
display: none; }
|
1035 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .repeater-fields {
|
1036 |
+
margin: 10px 0; }
|
1037 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-controls {
|
1038 |
+
border: 1px solid #d5dadf;
|
1039 |
+
border-top-width: 0;
|
1040 |
+
padding-top: 15px; }
|
1041 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable) {
|
1042 |
+
display: none; }
|
1043 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools {
|
1044 |
+
display: table;
|
1045 |
+
width: 100%;
|
1046 |
+
color: #556068;
|
1047 |
+
background-color: #d5dadf;
|
1048 |
+
height: 40px;
|
1049 |
+
border-spacing: 1px;
|
1050 |
+
transition: all .5s; }
|
1051 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools:hover {
|
1052 |
+
background-color: #a4afb7; }
|
1053 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools > div {
|
1054 |
+
display: table-cell;
|
1055 |
+
text-align: center;
|
1056 |
+
vertical-align: middle;
|
1057 |
+
cursor: pointer; }
|
1058 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools > div:not(.elementor-repeater-row-handle-sortable) {
|
1059 |
+
background-color: #fff; }
|
1060 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools > div:hover {
|
1061 |
+
opacity: .95; }
|
1062 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-number {
|
1063 |
+
text-align: right;
|
1064 |
+
padding-right: 20px; }
|
1065 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool {
|
1066 |
+
width: 40px; }
|
1067 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable {
|
1068 |
+
cursor: move;
|
1069 |
+
width: 10px;
|
1070 |
+
color: #fff; }
|
1071 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-button-wrapper {
|
1072 |
+
text-align: center;
|
1073 |
+
padding: 10px; }
|
1074 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-add {
|
1075 |
+
background-color: #a4afb7;
|
1076 |
+
color: #fff;
|
1077 |
+
font-size: 11px;
|
1078 |
+
text-transform: uppercase;
|
1079 |
+
padding: 6.5px 15px; }
|
1080 |
+
#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-add:hover {
|
1081 |
+
background-color: #6d7882; }
|
1082 |
+
#elementor-panel .wp-picker-container.wp-picker-active {
|
1083 |
+
position: absolute;
|
1084 |
+
z-index: 1;
|
1085 |
+
left: 0;
|
1086 |
+
background-color: #fff;
|
1087 |
+
border: solid #fff;
|
1088 |
+
border-width: 0 17px 0 12px;
|
1089 |
+
padding-top: 10px; }
|
1090 |
+
#elementor-panel .wp-picker-container.wp-picker-active .wp-color-result {
|
1091 |
+
float: right; }
|
1092 |
+
#elementor-panel .wp-picker-container.wp-picker-active .wp-picker-input-wrap {
|
1093 |
+
padding-left: 10px;
|
1094 |
+
float: left; }
|
1095 |
+
#elementor-panel .wp-picker-container * {
|
1096 |
+
box-sizing: content-box; }
|
1097 |
+
#elementor-panel .wp-picker-container .iris-picker {
|
1098 |
+
border: none; }
|
1099 |
+
#elementor-panel .wp-color-result {
|
1100 |
+
margin: 0;
|
1101 |
+
width: 48px;
|
1102 |
+
height: 25px;
|
1103 |
+
box-shadow: inset 0 0 0 3px white;
|
1104 |
+
transition: border .5s;
|
1105 |
+
padding: 0;
|
1106 |
+
border-radius: 3px;
|
1107 |
+
border: 1px solid #d5dadf; }
|
1108 |
+
#elementor-panel .wp-color-result:after {
|
1109 |
+
content: none; }
|
1110 |
+
#elementor-panel .wp-color-result:hover {
|
1111 |
+
border: 1px solid #a4afb7; }
|
1112 |
+
#elementor-panel .wp-color-result:focus, #elementor-panel .wp-color-result:active {
|
1113 |
+
outline: 0; }
|
1114 |
+
#elementor-panel .wp-picker-clear {
|
1115 |
+
height: 24px;
|
1116 |
+
width: 48px;
|
1117 |
+
padding: 0;
|
1118 |
+
background-color: #d5dadf;
|
1119 |
+
border-radius: 0 3px 3px 0;
|
1120 |
+
margin: 0; }
|
1121 |
+
#elementor-panel .wp-color-picker {
|
1122 |
+
float: left;
|
1123 |
+
width: 100px;
|
1124 |
+
border-radius: 3px 0 0 3px; }
|
1125 |
+
#elementor-panel .wp-picker-holder * {
|
1126 |
+
box-sizing: content-box; }
|
1127 |
+
#elementor-panel .wp-picker-open ~ .wp-picker-holder {
|
1128 |
+
clear: both;
|
1129 |
+
margin-bottom: 15px; }
|
1130 |
+
#elementor-panel #elementor-panel-footer {
|
1131 |
+
position: absolute;
|
1132 |
+
bottom: 0;
|
1133 |
+
left: 0;
|
1134 |
+
right: 0;
|
1135 |
+
height: 40px;
|
1136 |
+
background-color: #495157; }
|
1137 |
+
#elementor-panel #elementor-panel-footer-tools {
|
1138 |
+
display: table;
|
1139 |
+
table-layout: fixed;
|
1140 |
+
width: 100%;
|
1141 |
+
height: 100%; }
|
1142 |
+
#elementor-panel .elementor-panel-footer-tool {
|
1143 |
+
display: table-cell;
|
1144 |
+
vertical-align: middle;
|
1145 |
+
text-align: center;
|
1146 |
+
cursor: pointer;
|
1147 |
+
color: #a4afb7;
|
1148 |
+
transition: all 0.5s; }
|
1149 |
+
#elementor-panel .elementor-panel-footer-tool.elementor-open {
|
1150 |
+
color: #fff; }
|
1151 |
+
#elementor-panel .elementor-panel-footer-tool:not(.elementor-open):hover {
|
1152 |
+
color: #d5dadf; }
|
1153 |
+
#elementor-panel .elementor-panel-footer-tool:not(.elementor-open) .elementor-panel-footer-sub-menu-wrapper {
|
1154 |
+
display: none; }
|
1155 |
+
#elementor-panel .elementor-panel-footer-sub-menu-wrapper {
|
1156 |
+
position: absolute;
|
1157 |
+
bottom: 100%;
|
1158 |
+
left: 0;
|
1159 |
+
width: 100%;
|
1160 |
+
background-color: #556068;
|
1161 |
+
padding: 10px;
|
1162 |
+
box-shadow: -2px -5px 8px rgba(0, 0, 0, 0.1);
|
1163 |
+
cursor: default; }
|
1164 |
+
#elementor-panel .elementor-panel-footer-sub-menu {
|
1165 |
+
border-radius: 5px;
|
1166 |
+
overflow: hidden; }
|
1167 |
+
#elementor-panel .elementor-panel-footer-sub-menu-item {
|
1168 |
+
background-color: #495157;
|
1169 |
+
display: table;
|
1170 |
+
table-layout: fixed;
|
1171 |
+
width: 100%;
|
1172 |
+
cursor: pointer; }
|
1173 |
+
#elementor-panel .elementor-panel-footer-sub-menu-item:not(:last-child) {
|
1174 |
+
margin-bottom: 1px; }
|
1175 |
+
#elementor-panel .elementor-panel-footer-sub-menu-item[data-device-mode="mobile-landscape"] .fa-mobile {
|
1176 |
+
transform: rotate(-90deg); }
|
1177 |
+
#elementor-panel .elementor-panel-footer-sub-menu-item:hover {
|
1178 |
+
background-color: rgba(0, 0, 0, 0.2); }
|
1179 |
+
#elementor-panel .elementor-panel-footer-sub-menu-item.active {
|
1180 |
+
background-color: rgba(0, 0, 0, 0.3); }
|
1181 |
+
#elementor-panel .elementor-panel-footer-sub-menu-item > * {
|
1182 |
+
display: table-cell;
|
1183 |
+
height: 40px;
|
1184 |
+
vertical-align: middle; }
|
1185 |
+
#elementor-panel .elementor-panel-footer-sub-menu-item .elementor-icon {
|
1186 |
+
width: 40px;
|
1187 |
+
color: #a4afb7; }
|
1188 |
+
#elementor-panel .elementor-panel-footer-sub-menu-item .elementor-title {
|
1189 |
+
text-align: right;
|
1190 |
+
color: #d5dadf; }
|
1191 |
+
#elementor-panel .elementor-panel-footer-sub-menu-item .elementor-description {
|
1192 |
+
width: 95px;
|
1193 |
+
text-align: right;
|
1194 |
+
font-size: 11px;
|
1195 |
+
font-style: italic;
|
1196 |
+
color: #a4afb7; }
|
1197 |
+
#elementor-panel #elementor-panel-footer-save {
|
1198 |
+
width: 90px;
|
1199 |
+
padding: 0 10px; }
|
1200 |
+
#elementor-panel #elementor-panel-footer-save .elementor-button {
|
1201 |
+
font-size: 11px;
|
1202 |
+
text-transform: uppercase;
|
1203 |
+
width: 100%;
|
1204 |
+
height: 26px;
|
1205 |
+
background-color: #556068;
|
1206 |
+
color: #a4afb7; }
|
1207 |
+
#elementor-panel #elementor-panel-footer-publish .elementor-icon, #elementor-panel #elementor-panel-footer-publish .elementor-title {
|
1208 |
+
color: #39b54a; }
|
1209 |
+
#elementor-panel #elementor-panel-footer-discard .elementor-icon, #elementor-panel #elementor-panel-footer-discard .elementor-title {
|
1210 |
+
color: #b01b1b; }
|
1211 |
+
|
1212 |
+
#elementor-mode-switcher {
|
1213 |
+
position: absolute;
|
1214 |
+
right: 100%;
|
1215 |
+
top: 50%;
|
1216 |
+
width: 15px;
|
1217 |
+
height: 50px;
|
1218 |
+
transform: translateY(-50%);
|
1219 |
+
background-color: #e6e9ec;
|
1220 |
+
font-size: 15px;
|
1221 |
+
box-shadow: -3px 1px 5px rgba(0, 0, 0, 0.1);
|
1222 |
+
cursor: pointer; }
|
1223 |
+
#elementor-mode-switcher:hover {
|
1224 |
+
background-color: #9b0a46;
|
1225 |
+
color: #FFFFFF; }
|
1226 |
+
|
1227 |
+
body.elementor-editor-preview #elementor-mode-switcher {
|
1228 |
+
background-color: #9b0a46;
|
1229 |
+
color: #FFFFFF; }
|
1230 |
+
|
1231 |
+
#elementor-mode-switcher-inner, #elementor-mode-switcher-preview {
|
1232 |
+
width: 100%;
|
1233 |
+
height: 100%;
|
1234 |
+
position: absolute;
|
1235 |
+
top: 0;
|
1236 |
+
left: 0; }
|
1237 |
+
|
1238 |
+
#elementor-mode-switcher-preview {
|
1239 |
+
cursor: pointer; }
|
1240 |
+
#elementor-mode-switcher-preview .fa {
|
1241 |
+
position: absolute;
|
1242 |
+
top: 50%;
|
1243 |
+
left: 50%;
|
1244 |
+
transform: translateX(-50%) translateY(-50%); }
|
1245 |
+
|
1246 |
+
#elementor-mode-switcher-preview-input {
|
1247 |
+
display: none; }
|
1248 |
+
|
1249 |
+
#elementor-preview-responsive-wrapper {
|
1250 |
+
position: absolute;
|
1251 |
+
top: 0;
|
1252 |
+
bottom: 0;
|
1253 |
+
left: 0;
|
1254 |
+
right: 0;
|
1255 |
+
transition: all .5s ease 0s; }
|
1256 |
+
#elementor-preview-responsive-wrapper.elementor-device-desktop {
|
1257 |
+
min-width: 1024px;
|
1258 |
+
width: 100%;
|
1259 |
+
height: 100%; }
|
1260 |
+
#elementor-preview-responsive-wrapper.elementor-device-mobile, #elementor-preview-responsive-wrapper.elementor-device-tablet, #elementor-preview-responsive-wrapper.elementor-device-laptop, #elementor-preview-responsive-wrapper.elementor-device-mobile-landscape {
|
1261 |
+
border-radius: 30px;
|
1262 |
+
background-color: #111;
|
1263 |
+
margin: 30px auto 80px; }
|
1264 |
+
#elementor-preview-responsive-wrapper.elementor-device-laptop {
|
1265 |
+
width: 1024px;
|
1266 |
+
height: 768px;
|
1267 |
+
padding: 10px 70px 10px 40px; }
|
1268 |
+
#elementor-preview-responsive-wrapper.elementor-device-tablet {
|
1269 |
+
width: 768px;
|
1270 |
+
height: 1024px;
|
1271 |
+
padding: 40px 10px 70px; }
|
1272 |
+
#elementor-preview-responsive-wrapper.elementor-device-mobile-landscape {
|
1273 |
+
width: 640px;
|
1274 |
+
height: 360px;
|
1275 |
+
padding: 10px 70px 10px 40px; }
|
1276 |
+
#elementor-preview-responsive-wrapper.elementor-device-mobile {
|
1277 |
+
width: 360px;
|
1278 |
+
height: 640px;
|
1279 |
+
padding: 40px 10px 70px; }
|
1280 |
+
|
1281 |
+
#elementor-preview-iframe {
|
1282 |
+
width: 100%;
|
1283 |
+
height: 100%;
|
1284 |
+
background-color: #fff; }
|
1285 |
+
|
1286 |
+
.tipsy {
|
1287 |
+
font-size: 10px;
|
1288 |
+
position: absolute;
|
1289 |
+
padding: 5px;
|
1290 |
+
z-index: 100000; }
|
1291 |
+
|
1292 |
+
.tipsy-inner {
|
1293 |
+
background-color: #000;
|
1294 |
+
color: #FFF;
|
1295 |
+
max-width: 200px;
|
1296 |
+
padding: 5px 8px 4px;
|
1297 |
+
text-align: center;
|
1298 |
+
border-radius: 3px; }
|
1299 |
+
|
1300 |
+
.tipsy-arrow {
|
1301 |
+
position: absolute;
|
1302 |
+
width: 0;
|
1303 |
+
height: 0;
|
1304 |
+
line-height: 0;
|
1305 |
+
border: 5px dashed #000; }
|
1306 |
+
|
1307 |
+
.tipsy-arrow-n {
|
1308 |
+
border-bottom-color: #000; }
|
1309 |
+
|
1310 |
+
.tipsy-arrow-s {
|
1311 |
+
border-top-color: #000; }
|
1312 |
+
|
1313 |
+
.tipsy-arrow-e {
|
1314 |
+
border-left-color: #000; }
|
1315 |
+
|
1316 |
+
.tipsy-arrow-w {
|
1317 |
+
border-right-color: #000; }
|
1318 |
+
|
1319 |
+
.tipsy-n .tipsy-arrow, .tipsy-nw .tipsy-arrow {
|
1320 |
+
border-left-color: transparent;
|
1321 |
+
border-right-color: transparent;
|
1322 |
+
top: 0;
|
1323 |
+
border-bottom-style: solid;
|
1324 |
+
border-top: none; }
|
1325 |
+
|
1326 |
+
.tipsy-n .tipsy-arrow {
|
1327 |
+
left: 50%;
|
1328 |
+
margin-left: -5px; }
|
1329 |
+
|
1330 |
+
.tipsy-nw .tipsy-arrow {
|
1331 |
+
left: 10px; }
|
1332 |
+
|
1333 |
+
.tipsy-ne .tipsy-arrow {
|
1334 |
+
top: 0;
|
1335 |
+
right: 10px;
|
1336 |
+
border-bottom-style: solid;
|
1337 |
+
border-top: none;
|
1338 |
+
border-left-color: transparent;
|
1339 |
+
border-right-color: transparent; }
|
1340 |
+
|
1341 |
+
.tipsy-s .tipsy-arrow, .tipsy-se .tipsy-arrow, .tipsy-sw .tipsy-arrow {
|
1342 |
+
bottom: 0;
|
1343 |
+
border-top-style: solid;
|
1344 |
+
border-bottom: none;
|
1345 |
+
border-left-color: transparent;
|
1346 |
+
border-right-color: transparent; }
|
1347 |
+
|
1348 |
+
.tipsy-s .tipsy-arrow {
|
1349 |
+
left: 50%;
|
1350 |
+
margin-left: -5px; }
|
1351 |
+
|
1352 |
+
.tipsy-sw .tipsy-arrow {
|
1353 |
+
left: 10px; }
|
1354 |
+
|
1355 |
+
.tipsy-se .tipsy-arrow {
|
1356 |
+
right: 10px; }
|
1357 |
+
|
1358 |
+
.tipsy-e .tipsy-arrow, .tipsy-w .tipsy-arrow {
|
1359 |
+
top: 50%;
|
1360 |
+
margin-top: -5px;
|
1361 |
+
border-top-color: transparent;
|
1362 |
+
border-bottom-color: transparent; }
|
1363 |
+
|
1364 |
+
.tipsy-e .tipsy-arrow {
|
1365 |
+
right: 0;
|
1366 |
+
border-left-style: solid;
|
1367 |
+
border-right: none; }
|
1368 |
+
|
1369 |
+
.tipsy-w .tipsy-arrow {
|
1370 |
+
left: 0;
|
1371 |
+
border-right-style: solid;
|
1372 |
+
border-left: none; }
|
1373 |
+
|
1374 |
+
.dialog-widget {
|
1375 |
+
position: fixed;
|
1376 |
+
height: 100%;
|
1377 |
+
width: 100%;
|
1378 |
+
top: 0;
|
1379 |
+
left: 0;
|
1380 |
+
-webkit-user-select: none;
|
1381 |
+
-moz-user-select: none;
|
1382 |
+
background-color: rgba(0, 0, 0, 0.5); }
|
1383 |
+
.dialog-widget * {
|
1384 |
+
box-sizing: border-box; }
|
1385 |
+
|
1386 |
+
.dialog-widget-content {
|
1387 |
+
background-color: #fff;
|
1388 |
+
position: absolute;
|
1389 |
+
width: 350px;
|
1390 |
+
height: 150px;
|
1391 |
+
margin: auto;
|
1392 |
+
border-radius: 3px;
|
1393 |
+
box-shadow: 2px 8px 23px 3px rgba(0, 0, 0, 0.2);
|
1394 |
+
overflow: hidden; }
|
1395 |
+
|
1396 |
+
.dialog-widget-header, .dialog-message {
|
1397 |
+
text-align: center; }
|
1398 |
+
|
1399 |
+
.dialog-widget-header {
|
1400 |
+
font-size: 15px;
|
1401 |
+
line-height: 1;
|
1402 |
+
padding: 20px 0;
|
1403 |
+
font-weight: 500;
|
1404 |
+
color: #495157; }
|
1405 |
+
|
1406 |
+
.dialog-message {
|
1407 |
+
color: #6d7882;
|
1408 |
+
padding: 0 20px;
|
1409 |
+
font-size: 12px; }
|
1410 |
+
|
1411 |
+
.dialog-buttons-wrapper {
|
1412 |
+
border-top: 1px solid #e6e9ec;
|
1413 |
+
position: absolute;
|
1414 |
+
bottom: 0;
|
1415 |
+
width: 100%; }
|
1416 |
+
.dialog-buttons-wrapper > button {
|
1417 |
+
width: 50%;
|
1418 |
+
border: none;
|
1419 |
+
background: none;
|
1420 |
+
font-size: 15px;
|
1421 |
+
cursor: pointer;
|
1422 |
+
padding: 13px 0;
|
1423 |
+
outline: none;
|
1424 |
+
margin: 0; }
|
1425 |
+
.dialog-buttons-wrapper > button:first-child {
|
1426 |
+
border-right: 1px solid #e6e9ec;
|
1427 |
+
color: #6d7882; }
|
1428 |
+
.dialog-buttons-wrapper > button.dialog-ok {
|
1429 |
+
color: #b01b1b; }
|
1430 |
+
.dialog-buttons-wrapper > button.dialog-take_over {
|
1431 |
+
color: #39b54a; }
|
1432 |
+
.dialog-buttons-wrapper > button:focus {
|
1433 |
+
background-color: #e6e9ec; }
|
1434 |
+
.dialog-buttons-wrapper > button:active {
|
1435 |
+
background-color: rgba(230, 233, 236, 0.5); }
|
1436 |
+
|
1437 |
+
.dialog-popup-message {
|
1438 |
+
height: 155px;
|
1439 |
+
width: 155px;
|
1440 |
+
background-color: #fff;
|
1441 |
+
border-radius: 10px; }
|
1442 |
+
|
1443 |
+
.elementor-dialog-message {
|
1444 |
+
padding: 15px; }
|
1445 |
+
.elementor-dialog-message .fa {
|
1446 |
+
font-size: 85px;
|
1447 |
+
padding: 10px; }
|
1448 |
+
|
1449 |
+
.elementor-dialog-message-text {
|
1450 |
+
text-transform: uppercase; }
|
1451 |
+
|
1452 |
+
@font-face {
|
1453 |
+
font-family: 'eicon';
|
1454 |
+
src: url("../fonts/eicon/eicon.eot?0.11");
|
1455 |
+
src: url("../fonts/eicon/eicon.eot?0.11#iefix") format("embedded-opentype"), url("../fonts/eicon/eicon.woff2?0.11") format("woff2"), url("../fonts/eicon/eicon.woff?0.11") format("woff"), url("../fonts/eicon/eicon.ttf?0.11") format("truetype"), url("../fonts/eicon/eicon.svg?0.11#eicon") format("svg");
|
1456 |
+
font-weight: normal;
|
1457 |
+
font-style: normal; }
|
1458 |
+
[class^="eicon-"],
|
1459 |
+
[class*=" eicon-"] {
|
1460 |
+
display: inline-block;
|
1461 |
+
font-family: eicon;
|
1462 |
+
font-size: inherit;
|
1463 |
+
font-weight: normal;
|
1464 |
+
font-style: normal;
|
1465 |
+
font-variant: normal;
|
1466 |
+
line-height: 1;
|
1467 |
+
text-rendering: auto;
|
1468 |
+
-webkit-font-smoothing: antialiased;
|
1469 |
+
-moz-osx-font-smoothing: grayscale; }
|
1470 |
+
|
1471 |
+
.eicon-c1-1:before {
|
1472 |
+
content: '\e800'; }
|
1473 |
+
|
1474 |
+
.eicon-c2-1:before {
|
1475 |
+
content: '\e801'; }
|
1476 |
+
|
1477 |
+
.eicon-c2-2:before {
|
1478 |
+
content: '\e802'; }
|
1479 |
+
|
1480 |
+
.eicon-c2-3:before {
|
1481 |
+
content: '\e803'; }
|
1482 |
+
|
1483 |
+
.eicon-c2-4:before {
|
1484 |
+
content: '\e804'; }
|
1485 |
+
|
1486 |
+
.eicon-c2-5:before {
|
1487 |
+
content: '\e805'; }
|
1488 |
+
|
1489 |
+
.eicon-c2-6:before {
|
1490 |
+
content: '\e806'; }
|
1491 |
+
|
1492 |
+
.eicon-c2-7:before {
|
1493 |
+
content: '\e807'; }
|
1494 |
+
|
1495 |
+
.eicon-c2-8:before {
|
1496 |
+
content: '\e808'; }
|
1497 |
+
|
1498 |
+
.eicon-c2-9:before {
|
1499 |
+
content: '\e809'; }
|
1500 |
+
|
1501 |
+
.eicon-c3-1:before {
|
1502 |
+
content: '\e80a'; }
|
1503 |
+
|
1504 |
+
.eicon-c3-2:before {
|
1505 |
+
content: '\e80b'; }
|
1506 |
+
|
1507 |
+
.eicon-c3-3:before {
|
1508 |
+
content: '\e80c'; }
|
1509 |
+
|
1510 |
+
.eicon-c3-4:before {
|
1511 |
+
content: '\e80d'; }
|
1512 |
+
|
1513 |
+
.eicon-c3-5:before {
|
1514 |
+
content: '\e80e'; }
|
1515 |
+
|
1516 |
+
.eicon-c3-6:before {
|
1517 |
+
content: '\e80f'; }
|
1518 |
+
|
1519 |
+
.eicon-c3-7:before {
|
1520 |
+
content: '\e811'; }
|
1521 |
+
|
1522 |
+
.eicon-c3-8:before {
|
1523 |
+
content: '\e811'; }
|
1524 |
+
|
1525 |
+
.eicon-c3-9:before {
|
1526 |
+
content: '\e812'; }
|
1527 |
+
|
1528 |
+
.eicon-c4-1:before {
|
1529 |
+
content: '\e813'; }
|
1530 |
+
|
1531 |
+
.eicon-c4-2:before {
|
1532 |
+
content: '\e814'; }
|
1533 |
+
|
1534 |
+
.eicon-c4-3:before {
|
1535 |
+
content: '\e815'; }
|
1536 |
+
|
1537 |
+
.eicon-c4-4:before {
|
1538 |
+
content: '\e816'; }
|
1539 |
+
|
1540 |
+
.eicon-c4-5:before {
|
1541 |
+
content: '\e817'; }
|
1542 |
+
|
1543 |
+
.eicon-c4-6:before {
|
1544 |
+
content: '\e818'; }
|
1545 |
+
|
1546 |
+
.eicon-c4-7:before {
|
1547 |
+
content: '\e819'; }
|
1548 |
+
|
1549 |
+
.eicon-c4-8:before {
|
1550 |
+
content: '\e81a'; }
|
1551 |
+
|
1552 |
+
.eicon-c4-9:before {
|
1553 |
+
content: '\e81b'; }
|
1554 |
+
|
1555 |
+
.eicon-c4-11:before {
|
1556 |
+
content: '\e81c'; }
|
1557 |
+
|
1558 |
+
.eicon-c4-11:before {
|
1559 |
+
content: '\e81d'; }
|
1560 |
+
|
1561 |
+
.eicon-c5-1:before {
|
1562 |
+
content: '\e81e'; }
|
1563 |
+
|
1564 |
+
.eicon-c5-2:before {
|
1565 |
+
content: '\e81f'; }
|
1566 |
+
|
1567 |
+
.eicon-c5-3:before {
|
1568 |
+
content: '\e820'; }
|
1569 |
+
|
1570 |
+
.eicon-c5-4:before {
|
1571 |
+
content: '\e821'; }
|
1572 |
+
|
1573 |
+
.eicon-c5-5:before {
|
1574 |
+
content: '\e822'; }
|
1575 |
+
|
1576 |
+
.eicon-c5-6:before {
|
1577 |
+
content: '\e823'; }
|
1578 |
+
|
1579 |
+
.eicon-c5-7:before {
|
1580 |
+
content: '\e824'; }
|
1581 |
+
|
1582 |
+
.eicon-c5-8:before {
|
1583 |
+
content: '\e825'; }
|
1584 |
+
|
1585 |
+
.eicon-c5-9:before {
|
1586 |
+
content: '\e826'; }
|
1587 |
+
|
1588 |
+
.eicon-c5-11:before {
|
1589 |
+
content: '\e827'; }
|
1590 |
+
|
1591 |
+
.eicon-c6-1:before {
|
1592 |
+
content: '\e828'; }
|
1593 |
+
|
1594 |
+
.eicon-c6-2:before {
|
1595 |
+
content: '\e829'; }
|
1596 |
+
|
1597 |
+
.eicon-c6-3:before {
|
1598 |
+
content: '\e82a'; }
|
1599 |
+
|
1600 |
+
.eicon-c6-4:before {
|
1601 |
+
content: '\e82b'; }
|
1602 |
+
|
1603 |
+
.eicon-c6-5:before {
|
1604 |
+
content: '\e82c'; }
|
1605 |
+
|
1606 |
+
.eicon-c6-6:before {
|
1607 |
+
content: '\e82d'; }
|
1608 |
+
|
1609 |
+
.eicon-c6-7:before {
|
1610 |
+
content: '\e82e'; }
|
1611 |
+
|
1612 |
+
.eicon-c6-8:before {
|
1613 |
+
content: '\e82f'; }
|
1614 |
+
|
1615 |
+
.eicon-c6-9:before {
|
1616 |
+
content: '\e830'; }
|
1617 |
+
|
1618 |
+
.eicon-c6-11:before {
|
1619 |
+
content: '\e831'; }
|
1620 |
+
|
1621 |
+
.eicon-c6-11:before {
|
1622 |
+
content: '\e832'; }
|
1623 |
+
|
1624 |
+
.eicon-c7-1:before {
|
1625 |
+
content: '\e833'; }
|
1626 |
+
|
1627 |
+
.eicon-c8-1:before {
|
1628 |
+
content: '\e834'; }
|
1629 |
+
|
1630 |
+
.eicon-c9-1:before {
|
1631 |
+
content: '\e835'; }
|
1632 |
+
|
1633 |
+
.eicon-c11-1:before {
|
1634 |
+
content: '\e836'; }
|
1635 |
+
|
1636 |
+
.eicon-anchor:before {
|
1637 |
+
content: '\e837'; }
|
1638 |
+
|
1639 |
+
.eicon-wordpress:before {
|
1640 |
+
content: '\e838'; }
|
1641 |
+
|
1642 |
+
.eicon-insert-image:before {
|
1643 |
+
content: '\e839'; }
|
1644 |
+
|
1645 |
+
.eicon-align-left:before {
|
1646 |
+
content: '\e83a'; }
|
1647 |
+
|
1648 |
+
.eicon-digital-alarm-clock:before {
|
1649 |
+
content: '\e83b'; }
|
1650 |
+
|
1651 |
+
.eicon-favorite:before {
|
1652 |
+
content: '\e83c'; }
|
1653 |
+
|
1654 |
+
.eicon-firewall-on:before {
|
1655 |
+
content: '\e83d'; }
|
1656 |
+
|
1657 |
+
.eicon-google-maps:before {
|
1658 |
+
content: '\e83e'; }
|
1659 |
+
|
1660 |
+
.eicon-text-size:before {
|
1661 |
+
content: '\e83f'; }
|
1662 |
+
|
1663 |
+
.eicon-youtube:before {
|
1664 |
+
content: '\e840'; }
|
1665 |
+
|
1666 |
+
.eicon-success-chart:before {
|
1667 |
+
content: '\e841'; }
|
1668 |
+
|
1669 |
+
.eicon-type-tool:before {
|
1670 |
+
content: '\e842'; }
|
1671 |
+
|
1672 |
+
.eicon-bullet-list:before {
|
1673 |
+
content: '\e843'; }
|
1674 |
+
|
1675 |
+
.eicon-click:before {
|
1676 |
+
content: '\e844'; }
|
1677 |
+
|
1678 |
+
.eicon-coding:before {
|
1679 |
+
content: '\e845'; }
|
1680 |
+
|
1681 |
+
.eicon-accordion:before {
|
1682 |
+
content: '\e846'; }
|
1683 |
+
|
1684 |
+
.eicon-divider:before {
|
1685 |
+
content: '\e847'; }
|
1686 |
+
|
1687 |
+
.eicon-toggle:before {
|
1688 |
+
content: '\e848'; }
|
1689 |
+
|
1690 |
+
.eicon-settings:before {
|
1691 |
+
content: '\e849'; }
|
1692 |
+
|
1693 |
+
.eicon-section:before {
|
1694 |
+
content: '\e84a'; }
|
1695 |
+
|
1696 |
+
.eicon-photo-library:before {
|
1697 |
+
content: '\e84b'; }
|
1698 |
+
|
1699 |
+
.eicon-elementor:before {
|
1700 |
+
content: '\e84c'; }
|
1701 |
+
|
1702 |
+
.eicon-menu:before {
|
1703 |
+
content: '\e84d'; }
|
1704 |
+
|
1705 |
+
.eicon-plus:before {
|
1706 |
+
content: '\e84e'; }
|
1707 |
+
|
1708 |
+
.eicon-apps:before {
|
1709 |
+
content: '\e84f'; }
|
1710 |
+
|
1711 |
+
.eicon-tabs:before {
|
1712 |
+
content: '\e850'; }
|
1713 |
+
|
1714 |
+
.eicon-elementor-square:before {
|
1715 |
+
content: '\e851'; }
|
1716 |
+
|
1717 |
+
/*# sourceMappingURL=editor-rtl.css.map */
|
assets/css/editor-rtl.css.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"sources":["editor-rtl.css","../scss/helpers/mixins.scss","../scss/helpers/utilities.scss","../scss/editor/_wrapper.scss","../scss/helpers/variables.scss","../scss/helpers/direction.scss","../scss/editor/_global.scss","../scss/editor/_buttons.scss","../scss/editor/_forms.scss","../scss/editor/_perfect-scrollbar.scss","../scss/editor/_nprogress.scss","../scss/editor/panel/_panel.scss","../scss/editor/panel/_reset.scss","../scss/editor/panel/_global.scss","../scss/editor/panel/_header.scss","../scss/editor/panel/_elements.scss","../scss/editor/panel/_schemes.scss","../scss/editor/panel/_menu.scss","../scss/editor/panel/_element-settings.scss","../scss/editor/panel/_control.scss","../scss/editor/panel/controls/_repeater.scss","../scss/editor/panel/_color-picker.scss","../scss/editor/panel/_footer.scss","../scss/editor/_mode-switcher.scss","../scss/editor/_devices.scss","../scss/editor/_tipsy.scss","../scss/editor/_dialog.scss","../scss/admin/_eicon.scss"],"names":[],"mappings":"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","file":"editor-rtl.css"}
|
assets/css/editor-rtl.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
@charset "UTF-8";.elementor-clearfix:after,.elementor-clearfix:before{content:" ";display:table}.elementor-clearfix:after{clear:both}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}body,html{height:100%;margin:0;padding:0}html{background-color:#f1f1f1}body{color:#373a3c;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:13px;font-weight:400;line-height:1.4;text-decoration:none;text-transform:none;overflow:hidden}body.elementor-editor-active #elementor-preview{right:280px;left:0}body.elementor-editor-active #elementor-panel{right:0}body.elementor-editor-active #elementor-mode-switcher-preview .fa:before{content:""}body:not(.elementor-editor-active) #elementor-preview{left:0}body:not(.elementor-editor-active) #elementor-panel{right:-280px}body:not(.elementor-editor-active) #elementor-mode-switcher-preview .fa:before{content:""}iframe,img{border:0 none}#elementor-preview{background-color:#333;position:absolute;overflow:auto;height:100%;top:0;right:0;border:0}#elementor-panel,#elementor-preview{transition:right .5s}#elementor-loading{position:fixed;top:0;left:0;bottom:0;right:0;background:#6d7882;z-index:3}#elementor-loader-wrapper{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:100px}#elementor-loader-wrapper #elementor-loader{height:100px;position:relative}#elementor-loader-wrapper .elementor-loader-box{position:absolute;background-color:#e6e9ec;opacity:0;animation:a 1.8s linear infinite}#elementor-loader-wrapper .elementor-loader-box:nth-of-type(1){width:20%;height:100%;left:0;top:0}#elementor-loader-wrapper .elementor-loader-box:not(:nth-of-type(1)){right:0;height:20%;width:60%}#elementor-loader-wrapper .elementor-loader-box:nth-of-type(2){top:0;animation-delay:-.45s}#elementor-loader-wrapper .elementor-loader-box:nth-of-type(3){top:40%;animation-delay:-.9s}#elementor-loader-wrapper .elementor-loader-box:nth-of-type(4){bottom:0;animation-delay:-1.35s}@keyframes a{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}@keyframes b{0%{opacity:1}50%{opacity:.6}to{opacity:1}}#elementor-loading-title{color:#fff;text-align:center;text-transform:uppercase;margin-top:30px;letter-spacing:7px;font-size:10px;animation:b 1.5s linear infinite}.select2-dropdown{border-color:#a4afb7}.select2-dropdown .select2-search__field{outline:none}.elementor-button{border:none;cursor:pointer;border-radius:3px;transition:all .5s}.elementor-button:not(.elementor-button-state) .elementor-state-icon{display:none}.elementor-button .elementor-state-icon{float:left;padding-left:5px}#elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button,.elementor-button-success{color:#fff}#elementor-panel #elementor-panel-footer-save.elementor-save-active [disabled].elementor-button,.elementor-button-success[disabled]{background-color:#c2cbd2}#elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]),.elementor-button-success:not([disabled]){background-color:#38b54a}#elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):hover,.elementor-button-success:not([disabled]):hover{opacity:.85;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}#elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):active,.elementor-button-success:not([disabled]):active{box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}input,select,textarea{border-radius:3px;font-size:12px;width:100%;background:none;box-shadow:none;color:#495157;border:1px solid;margin:0}input:not(:focus),select:not(:focus),textarea:not(:focus){border-color:#d5dadf}input:focus,select:focus,textarea:focus{border-color:#a4afb7}.elementor-error input,.elementor-error select,.elementor-error textarea{border-color:#b01b1b}input,textarea{padding:5px 8px}textarea{resize:vertical}input[type=checkbox],input[type=radio]{border:1px solid #d5dadf;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;padding:0;text-align:center;vertical-align:middle;width:16px;min-width:16px;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=radio]:focus{border-color:#a4afb7}input[disabled]{background-color:#e6e9ec;cursor:not-allowed;opacity:1}select{height:27px}.ps-container{-ms-touch-action:none;overflow:hidden!important}.ps-container.ps-active-x>.ps-scrollbar-x-rail,.ps-container.ps-active-y>.ps-scrollbar-y-rail{display:block}.ps-container.ps-in-scrolling{pointer-events:none}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999}.ps-container>.ps-scrollbar-x-rail{display:none;position:absolute;border-radius:4px;opacity:0;transition:background-color .2s linear,opacity .2s linear;bottom:3px;height:8px}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{position:absolute;background-color:#aaa;border-radius:4px;transition:background-color .2s linear;bottom:0;height:8px}.ps-container>.ps-scrollbar-y-rail{display:none;position:absolute;border-radius:4px;opacity:0;transition:background-color .2s linear,opacity .2s linear;right:3px;width:8px}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{position:absolute;background-color:#aaa;border-radius:4px;transition:background-color .2s linear;right:0;width:8px}.ps-container:hover.ps-in-scrolling{pointer-events:none}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999}.ps-container:hover>.ps-scrollbar-x-rail,.ps-container:hover>.ps-scrollbar-y-rail{opacity:.6}.ps-container:hover>.ps-scrollbar-x-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-x-rail:hover>.ps-scrollbar-x{background-color:#999}.ps-container:hover>.ps-scrollbar-y-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-y-rail:hover>.ps-scrollbar-y{background-color:#999}#nprogress{pointer-events:none}#nprogress .bar{background:#39b54a;position:fixed;z-index:2;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #39b54a,0 0 5px #39b54a;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:none;position:fixed;z-index:2;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#39b54a;border-left-color:#39b54a;border-radius:50%;animation:c .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes c{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}#nprogress .bar,#nprogress .spinner{z-index:4}#elementor-panel{color:#373a3c;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:13px;font-weight:400;line-height:1.4;background-color:#e6e9ec;position:fixed;width:280px;height:100%;top:0;bottom:0;overflow:visible}#elementor-panel *,#elementor-panel :after,#elementor-panel :before{box-sizing:border-box}#elementor-panel ::-moz-selection{background:#5bc0de;color:#fff}#elementor-panel ::selection{background:#5bc0de;color:#fff}#elementor-panel a{text-decoration:none;transition:none}#elementor-panel a:visited{color:inherit}#elementor-panel ol,#elementor-panel ul{list-style:none;padding:0;margin:0}#elementor-panel h1,#elementor-panel h2,#elementor-panel h3,#elementor-panel h4,#elementor-panel h5,#elementor-panel h6{font-size:100%;font-weight:400}#elementor-panel abbr,#elementor-panel acronym{border:0;font-variant:normal}#elementor-panel sup{vertical-align:text-top}#elementor-panel sub{vertical-align:text-bottom}#elementor-panel img{max-width:100%;height:auto;border:0}#elementor-panel ::-moz-focus-inner{padding:0;border:0}#elementor-panel :focus{outline:0}#elementor-panel .elementor-panel-inner{position:relative;height:100%;box-shadow:0 0 5px 0 rgba(0,0,0,.2)}#elementor-panel .elementor-panel-container{clear:both;padding-left:15px;padding-right:15px}#elementor-panel .elementor-panel-heading{display:table;table-layout:fixed;height:40px;padding:0 20px;width:100%;border-bottom:1px solid #e6e9ec;cursor:pointer}#elementor-panel .elementor-panel-heading:not(.elementor-open) .elementor-panel-heading-toggle .fa:before{content:""}#elementor-panel .elementor-panel-heading.elementor-open .elementor-panel-heading-toggle .fa:before{content:'\f0d7'}#elementor-panel .elementor-panel-heading>*{display:table-cell;vertical-align:middle}#elementor-panel .elementor-panel-heading-toggle{width:20px;color:#495157}#elementor-panel .elementor-panel-heading-title{color:#495157;font-weight:700}#elementor-panel .elementor-panel-box{margin-top:10px;background-color:#fff}#elementor-panel .elementor-panel-box-content{padding:20px 20px 10px}#elementor-panel .elementor-control-title{color:#6d7882;font-size:12px}#elementor-panel .select2-container{width:100%!important}#elementor-panel .select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single{border-color:#d5dadf}#elementor-panel .select2-container.select2-container--focus .select2-selection--single,#elementor-panel .select2-container.select2-container--open .select2-selection--single{border-color:#a4afb7}#elementor-panel .select2-selection--single{height:27px}#elementor-panel .select2-selection__rendered{line-height:27px}#elementor-panel .select2-selection__arrow{height:27px;top:0}#elementor-panel #elementor-panel-header{display:table;height:40px;width:100%;background-color:#9b0a46;color:#fff}#elementor-panel #elementor-panel-header>*{display:table-cell;vertical-align:middle;text-align:center}#elementor-panel .elementor-header-button{width:40px}#elementor-panel .elementor-header-button .elementor-icon{cursor:pointer;display:block;font-size:19px;height:40px;line-height:40px;transition:all .5s}#elementor-panel .elementor-header-button .elementor-icon:hover{color:#d5dadf}#elementor-panel #elementor-panel-header-title{font-size:15px}#elementor-panel #elementor-panel-elements-search-area{box-shadow:0 0 8px rgba(0,0,0,.1)}#elementor-panel #elementor-panel-elements{overflow:hidden;padding:5px}#elementor-panel .elementor-element-wrapper{float:left;width:50%;padding:5px;text-align:center;box-sizing:border-box}#elementor-panel .elementor-element{border-radius:3px;padding-bottom:10px;background-color:#fff;cursor:move}#elementor-panel .elementor-element:hover{box-shadow:0 2px 6px rgba(0,0,0,.2)}#elementor-panel .elementor-element:hover .icon,#elementor-panel .elementor-element:hover .title{color:#9b0a46}#elementor-panel .elementor-element .icon{font-size:28px;padding:15px 0;line-height:1;color:#556068}#elementor-panel .elementor-element .title{font-size:11px;color:#556068}#elementor-panel #elementor-panel-elements-search-wrapper{position:relative}#elementor-panel #elementor-panel-elements-search-wrapper .fa{position:absolute;left:15px;top:50%;color:#a4afb7;transform:translateY(-50%)}#elementor-panel #elementor-panel-elements-search-input{width:100%;background-color:#fff;line-height:1;font-size:11px;padding:8px 15px 8px 42px;font-style:italic;color:#a4afb7;border:none;border-radius:0;margin:0}#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-title{padding:10px 20px;margin-top:10px}#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-buttons{padding-right:20px;display:table;table-layout:fixed;width:100%;height:40px;background-color:#fff}#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-button-wrapper{display:table-cell;vertical-align:middle}#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-save{text-align:center}#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-save .elementor-button{padding:6px 18px;text-transform:uppercase}#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-discard .elementor-button,#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-reset .elementor-button{color:#a4afb7;background:none}#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-discard .fa,#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-reset .fa{margin-right:3px}#elementor-panel #elementor-panel-scheme-color .elementor-panel-scheme-items{position:relative}#elementor-panel #elementor-panel-scheme-color .elementor-panel-scheme-item{display:inline-block;margin-bottom:10px}#elementor-panel #elementor-panel-scheme-color .elementor-panel-scheme-item:not(:nth-child(4n)){margin-left:13px}#elementor-panel #elementor-panel-scheme-color .wp-picker-container.wp-picker-active{transform:translateY(-20px)}#elementor-panel #elementor-panel-scheme-color .wp-picker-container.wp-picker-active .wp-color-result{margin-right:7px}#elementor-panel .elementor-panel-scheme-typography-item{display:table;table-layout:fixed;width:100%;margin-bottom:15px}#elementor-panel .elementor-panel-scheme-typography-item>*{display:table-cell;vertical-align:middle}#elementor-panel .elementor-panel-scheme-typography-item-value input,#elementor-panel .elementor-panel-scheme-typography-item-value select{width:100%}#elementor-panel .elementor-panel-scheme-item .elementor-panel-heading:not(.elementor-open)+.elementor-panel-scheme-typography-items{display:none}#elementor-panel .elementor-panel-scheme-color-system-scheme{margin-bottom:10px}#elementor-panel .elementor-panel-scheme-color-system-scheme .elementor-title{font-size:11px;color:#a4afb7;font-style:italic;margin-top:5px}#elementor-panel .elementor-panel-scheme-color-system-items{transition:border .5s;overflow:hidden;padding:3px;border-radius:3px;border:1px solid #d5dadf;cursor:pointer}#elementor-panel .elementor-panel-scheme-color-system-items:hover{border:1px solid #a4afb7}#elementor-panel .elementor-panel-scheme-color-system-item{float:left;height:20px;width:25%}#elementor-panel #elementor-panel-content-wrapper{position:absolute;bottom:40px;top:40px;left:0;width:100%}#elementor-panel #elementor-panel-page-menu{box-shadow:0 0 8px rgba(0,0,0,.1)}#elementor-panel .elementor-panel-menu-item{display:table;width:100%;height:50px;cursor:pointer;margin-bottom:1px}#elementor-panel .elementor-panel-menu-item:not(:hover){background-color:#fff}#elementor-panel .elementor-panel-menu-item>*{display:table-cell;vertical-align:middle}#elementor-panel .elementor-panel-menu-item-icon{text-align:center;color:#6d7882;width:55px}#elementor-panel .elementor-panel-menu-item-title{color:#6d7882;font-weight:500}#elementor-panel .elementor-panel-menu-item-title>span{color:#39b54a}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls{background-color:#fff;box-shadow:0 0 8px rgba(0,0,0,.1)}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul{display:table;table-layout:fixed;width:100%}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li{display:table-cell}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-content a:before{content:'\f040'}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-style a:before{content:'\f042'}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-advanced a:before{content:'\f013'}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-responsive a:before{content:'\f10a'}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-structure a:before{content:'\f00a'}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-section a:before{content:'\f147'}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.elementor-tab-control-column a:before{content:'\f0db'}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li.active{background-image:linear-gradient(180deg,#f3f3f3,#fff);border-bottom:3px solid #9b0a46}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li a{display:block;line-height:1;text-align:center;padding:12px 0 8px;font-size:10px;color:#6d7882}#elementor-panel #elementor-panel-page-editor .elementor-tabs-controls ul li a:before{font-family:FontAwesome;font-size:16px;display:block;line-height:1;margin-bottom:6px}#elementor-panel #elementor-panel-page-editor .elementor-controls>.elementor-control:not(.elementor-active-tab){display:none}#elementor-panel #elementor-panel-page-editor .elementor-control{background-color:#fff;position:relative;padding:0 20px 15px}#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-control-separator-default:before{content:'';height:1px;display:block;margin-bottom:15px;background-color:#e6e9ec}#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-control-separator-before{padding-top:15px}#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-control-separator-before:before{content:'';position:absolute;height:3px;width:100%;top:0;left:0;background-color:#d5dadf}#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-active-tab.elementor-control-under-section,#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-active-tab.elementor-hidden-control,#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-control-hidden-label .elementor-control-title{display:none}#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-active-tab.elementor-control-under-section.elementor-open{display:block}#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-active-tab.elementor-control-under-section.elementor-open.elementor-hidden-control{display:none}#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-label-block:not(.elementor-control-hidden-label) .elementor-control-title{display:block;margin-bottom:10px}#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-label-inline .elementor-control-field{display:table;width:100%}#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-label-inline .elementor-control-field>*{display:table-cell;vertical-align:middle}#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-label-inline .elementor-control-title{width:45%}#elementor-panel #elementor-panel-page-editor .elementor-control.elementor-control-type-heading .elementor-control-title{font-weight:700;margin:0}#elementor-panel #elementor-panel-page-editor .elementor-control-description{margin-top:10px;font-size:11px;font-style:italic}#elementor-panel #elementor-panel-page-editor .elementor-control-descriptor{font-size:11px;font-style:italic;color:#a4afb7}#elementor-panel #elementor-panel-page-editor .elementor-choices{display:table;width:100%;height:27px;background-color:#a4afb7;text-align:center;border-spacing:1px;border-radius:3px}#elementor-panel #elementor-panel-page-editor .elementor-choices input{display:none}#elementor-panel #elementor-panel-page-editor .elementor-choices input:checked+.elementor-choices-label{color:#fff}#elementor-panel #elementor-panel-page-editor .elementor-choices input:not(:checked)+.elementor-choices-label{background-color:#fff;color:#a4afb7}#elementor-panel #elementor-panel-page-editor .elementor-choices .elementor-choices-label{display:table-cell;vertical-align:middle;font-size:12px;transition:all .5s;cursor:pointer}#elementor-panel #elementor-panel-page-editor .elementor-units-choices{float:left}#elementor-panel #elementor-panel-page-editor .elementor-units-choices input{display:none}#elementor-panel #elementor-panel-page-editor .elementor-units-choices input:not(:checked)+label{color:#c2cbd2}#elementor-panel #elementor-panel-page-editor .elementor-units-choices input:checked+label{text-decoration:underline}#elementor-panel #elementor-panel-page-editor .elementor-units-choices label{cursor:pointer;padding:0 2px;text-transform:uppercase;font-size:9px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media{padding:7px;border:1px solid;height:150px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media:not(:hover){border-color:#d5dadf}#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media:not(:hover) .elementor-control-media-upload-button{background-color:#d5dadf}#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media:hover{border-color:#a4afb7}#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media:hover .elementor-control-media-upload-button{background-color:#a4afb7}#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media.media-empty .elementor-control-media-image-area,#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media:not(.media-empty) .elementor-control-media-upload-button{display:none}#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media>*{height:100%;cursor:pointer;position:relative}#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .fa-plus-circle{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);color:#fff;font-size:20px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media-image-area:not(:hover) .elementor-control-media-delete{display:none}#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media-image-area:hover .elementor-control-media-image{opacity:.5}#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media-delete{position:absolute;bottom:0;left:0;right:0;text-align:center;line-height:1;padding:9.5px;font-size:11px;color:#fff;background-color:#a4afb7;text-transform:uppercase}#elementor-panel #elementor-panel-page-editor .elementor-control-type-media .elementor-control-media-image{height:100%;background-size:cover}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions .elementor-control-dimensions{overflow:hidden}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li{float:left;width:20%}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li .elementor-link-dimensions,#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li input{display:block;text-align:center;width:100%;border-color:#a4afb7;height:27px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li input{border-left:none;border-radius:0;padding:4px 0}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li input+span{display:block;text-align:center;color:#d4d4d4;font-size:9px;text-transform:uppercase;line-height:1;padding-top:5px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li input:focus+span{color:#818a91}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li .elementor-link-dimensions{border:1px solid #a4afb7;border-left:none;background-color:#fff;padding:0;outline:none;border-radius:0 3px 3px 0;cursor:pointer}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions li:first-child input{border-left:1px solid #a4afb7;border-radius:3px 0 0 3px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions .elementor-link-dimensions.unlinked{background-color:#fff}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions .elementor-link-dimensions.unlinked .elementor-linked{display:none}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked){background-color:#a4afb7}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions .elementor-link-dimensions:not(.unlinked) .elementor-unlinked{display:none}#elementor-panel #elementor-panel-page-editor .elementor-control-type-dimensions .elementor-link-dimensions .elementor-linked{color:#fff}#elementor-panel #elementor-panel-page-editor .elementor-control-type-url .elementor-control-input-wrapper{position:relative}#elementor-panel #elementor-panel-page-editor .elementor-control-type-url .elementor-control-url-target{position:absolute;top:0;right:0;padding:0;height:100%;width:40px;border:none;border-left:1px solid;background:none;cursor:pointer;font-size:10px;border-radius:0 3px 3px 0}#elementor-panel #elementor-panel-page-editor .elementor-control-type-url .elementor-control-url-target.active{background-color:#a4afb7}#elementor-panel #elementor-panel-page-editor .elementor-control-type-url .elementor-control-url-target.active .elementor-control-url-external{color:#fff}#elementor-panel #elementor-panel-page-editor .elementor-control-type-url .elementor-control-url-target:not(.active) .elementor-control-url-external{opacity:.5}#elementor-panel #elementor-panel-page-editor .elementor-control-type-url input{padding-right:46px;direction:ltr}#elementor-panel #elementor-panel-page-editor .elementor-control-type-url input:not(:focus)+.elementor-control-url-target{border-color:#d5dadf}#elementor-panel #elementor-panel-page-editor .elementor-control-type-url input:not(:focus)+.elementor-control-url-target.active{background-color:#d5dadf}#elementor-panel #elementor-panel-page-editor .elementor-control-type-url input:focus+.elementor-control-url-target{border-color:#a4afb7}#elementor-panel #elementor-panel-page-editor .elementor-control-type-url input:focus+.elementor-control-url-target.active{background-color:#a4afb7}#elementor-panel #elementor-panel-page-editor .elementor-control-text_align .elementor-control-type-choose .elementor-choices{direction:ltr}#elementor-panel #elementor-panel-page-editor .elementor-control-type-slider input{width:80%;float:left}#elementor-panel #elementor-panel-page-editor .elementor-control-type-slider .elementor-control-slider{display:inline-block;margin-top:10px;height:4px;background-color:#a4afb7;border-radius:5px;position:relative;width:67%}#elementor-panel #elementor-panel-page-editor .elementor-control-type-slider .elementor-control-slider-input{width:33%;float:left}#elementor-panel #elementor-panel-page-editor .elementor-control-type-slider .ui-slider-handle{height:16px;width:16px;background-color:#fff;display:inline-block;top:50%;transform:translateY(-50%) translateX(-8px);position:absolute;box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:50%;cursor:pointer}#elementor-panel #elementor-panel-page-editor .elementor-control-type-section{margin-top:10px;padding:0}#elementor-panel #elementor-panel-page-editor .elementor-control-type-section+.elementor-control:not(.elementor-control-type-section){padding-top:15px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-section+.elementor-control:not(.elementor-control-type-section):before{display:none}#elementor-panel #elementor-panel-page-editor .wp-picker-container:not(.wp-picker-active){float:left}#elementor-panel #elementor-panel-page-editor .wp-picker-container.wp-picker-active{transform:translateY(-18px)}#elementor-panel #elementor-panel-page-editor .wp-picker-container.wp-picker-active .wp-color-result{margin-right:3px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg *{box-sizing:content-box}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .wp-editor-container{border:1px solid #e6e9ec;border-radius:3px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg #insert-media-button{margin-top:7px;height:initial;line-height:1;font-size:11px;padding:3px 9px;background-color:#e6e9ec}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .ed_button{height:22px;width:initial}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .wp-media-buttons-icon{height:14px;margin:0}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .wp-media-buttons-icon:before{font-size:14px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .wp-switch-editor{border:none;color:#6d7882;font-size:11px;padding:3px 12px 4px;border-radius:3px 3px 0 0}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .html-active .switch-tmce{background-color:transparent}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .html-active .switch-html,#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .tmce-active .switch-tmce{background-color:#e6e9ec}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .tmce-active .switch-html{background-color:transparent}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-toolbar-grp,#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .quicktags-toolbar{background-color:#e6e9ec}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-toolbar-grp>div{padding:0 3px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .elementor-wp-editor{box-sizing:border-box}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-ico{color:#6d7882;font-size:16px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-btn.mce-active,#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-btn:active,#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-btn:hover{border-color:#d5dadf}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-path{padding:5px 10px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-wysiwyg .mce-path-item{font-size:12px;color:#6d7882}#elementor-panel #elementor-panel-page-editor .elementor-control-type-icon .select2-selection__rendered .fa{margin-right:3px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-preset{border:1px solid #e6e9ec;padding:3px;border-radius:3px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-preset:not(.elementor-control-structure-current-preset){display:inline-block;cursor:pointer}#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-preset:not(.elementor-control-structure-current-preset) i{font-size:50px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-preset i{color:#e6e9ec}#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-current-preset i{font-size:116px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-more-presets-title{color:#495157;font-weight:700;padding:15px 20px;border-bottom:1px solid #e6e9ec;line-height:1}#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-more-presets{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between}#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-more-presets input{display:none}#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-more-presets input:checked+.elementor-control-structure-preset i{color:#a4afb7}#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-preset-wrapper{width:45%;margin-top:15px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-structure .elementor-control-structure-preset-title{text-align:center;padding-top:5px;font-style:italic}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater,#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-control{padding:0 10px 15px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-control:before,#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater.elementor-repeater-has-minimum-rows .elementor-repeater-tool-remove{display:none}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .repeater-fields{margin:10px 0}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-controls{border:1px solid #d5dadf;border-top-width:0;padding-top:15px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-controls:not(.editable){display:none}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools{display:table;width:100%;color:#556068;background-color:#d5dadf;height:40px;border-spacing:1px;transition:all .5s}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools:hover{background-color:#a4afb7}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools>div{display:table-cell;text-align:center;vertical-align:middle;cursor:pointer}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools>div:not(.elementor-repeater-row-handle-sortable){background-color:#fff}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools>div:hover{opacity:.95}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-number{text-align:right;padding-right:20px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-tool{width:40px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-handle-sortable{cursor:move;width:10px;color:#fff}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-button-wrapper{text-align:center;padding:10px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-add{background-color:#a4afb7;color:#fff;font-size:11px;text-transform:uppercase;padding:6.5px 15px}#elementor-panel #elementor-panel-page-editor .elementor-control-type-repeater .elementor-repeater-add:hover{background-color:#6d7882}#elementor-panel .wp-picker-container.wp-picker-active{position:absolute;z-index:1;left:0;background-color:#fff;border:solid #fff;border-width:0 17px 0 12px;padding-top:10px}#elementor-panel .wp-picker-container.wp-picker-active .wp-color-result{float:right}#elementor-panel .wp-picker-container.wp-picker-active .wp-picker-input-wrap{padding-left:10px;float:left}#elementor-panel .wp-picker-container *{box-sizing:content-box}#elementor-panel .wp-picker-container .iris-picker{border:none}#elementor-panel .wp-color-result{margin:0;width:48px;height:25px;box-shadow:inset 0 0 0 3px #fff;transition:border .5s;padding:0;border-radius:3px;border:1px solid #d5dadf}#elementor-panel .wp-color-result:after{content:none}#elementor-panel .wp-color-result:hover{border:1px solid #a4afb7}#elementor-panel .wp-color-result:active,#elementor-panel .wp-color-result:focus{outline:0}#elementor-panel .wp-picker-clear{height:24px;width:48px;padding:0;background-color:#d5dadf;border-radius:0 3px 3px 0;margin:0}#elementor-panel .wp-color-picker{float:left;width:100px;border-radius:3px 0 0 3px}#elementor-panel .wp-picker-holder *{box-sizing:content-box}#elementor-panel .wp-picker-open~.wp-picker-holder{clear:both;margin-bottom:15px}#elementor-panel #elementor-panel-footer{position:absolute;bottom:0;left:0;right:0;height:40px;background-color:#495157}#elementor-panel #elementor-panel-footer-tools{display:table;table-layout:fixed;width:100%;height:100%}#elementor-panel .elementor-panel-footer-tool{display:table-cell;vertical-align:middle;text-align:center;cursor:pointer;color:#a4afb7;transition:all .5s}#elementor-panel .elementor-panel-footer-tool.elementor-open{color:#fff}#elementor-panel .elementor-panel-footer-tool:not(.elementor-open):hover{color:#d5dadf}#elementor-panel .elementor-panel-footer-tool:not(.elementor-open) .elementor-panel-footer-sub-menu-wrapper{display:none}#elementor-panel .elementor-panel-footer-sub-menu-wrapper{position:absolute;bottom:100%;left:0;width:100%;background-color:#556068;padding:10px;box-shadow:-2px -5px 8px rgba(0,0,0,.1);cursor:default}#elementor-panel .elementor-panel-footer-sub-menu{border-radius:5px;overflow:hidden}#elementor-panel .elementor-panel-footer-sub-menu-item{background-color:#495157;display:table;table-layout:fixed;width:100%;cursor:pointer}#elementor-panel .elementor-panel-footer-sub-menu-item:not(:last-child){margin-bottom:1px}#elementor-panel .elementor-panel-footer-sub-menu-item[data-device-mode=mobile-landscape] .fa-mobile{transform:rotate(-90deg)}#elementor-panel .elementor-panel-footer-sub-menu-item:hover{background-color:rgba(0,0,0,.2)}#elementor-panel .elementor-panel-footer-sub-menu-item.active{background-color:rgba(0,0,0,.3)}#elementor-panel .elementor-panel-footer-sub-menu-item>*{display:table-cell;height:40px;vertical-align:middle}#elementor-panel .elementor-panel-footer-sub-menu-item .elementor-icon{width:40px;color:#a4afb7}#elementor-panel .elementor-panel-footer-sub-menu-item .elementor-title{text-align:right;color:#d5dadf}#elementor-panel .elementor-panel-footer-sub-menu-item .elementor-description{width:95px;text-align:right;font-size:11px;font-style:italic;color:#a4afb7}#elementor-panel #elementor-panel-footer-save{width:90px;padding:0 10px}#elementor-panel #elementor-panel-footer-save .elementor-button{font-size:11px;text-transform:uppercase;width:100%;height:26px;background-color:#556068;color:#a4afb7}#elementor-panel #elementor-panel-footer-publish .elementor-icon,#elementor-panel #elementor-panel-footer-publish .elementor-title{color:#39b54a}#elementor-panel #elementor-panel-footer-discard .elementor-icon,#elementor-panel #elementor-panel-footer-discard .elementor-title{color:#b01b1b}#elementor-mode-switcher{position:absolute;right:100%;top:50%;width:15px;height:50px;transform:translateY(-50%);background-color:#e6e9ec;font-size:15px;box-shadow:-3px 1px 5px rgba(0,0,0,.1);cursor:pointer}#elementor-mode-switcher:hover,body.elementor-editor-preview #elementor-mode-switcher{background-color:#9b0a46;color:#fff}#elementor-mode-switcher-inner,#elementor-mode-switcher-preview{width:100%;height:100%;position:absolute;top:0;left:0}#elementor-mode-switcher-preview{cursor:pointer}#elementor-mode-switcher-preview .fa{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%)}#elementor-mode-switcher-preview-input{display:none}#elementor-preview-responsive-wrapper{position:absolute;top:0;bottom:0;left:0;right:0;transition:all .5s ease 0s}#elementor-preview-responsive-wrapper.elementor-device-desktop{min-width:1024px;width:100%;height:100%}#elementor-preview-responsive-wrapper.elementor-device-laptop,#elementor-preview-responsive-wrapper.elementor-device-mobile,#elementor-preview-responsive-wrapper.elementor-device-mobile-landscape,#elementor-preview-responsive-wrapper.elementor-device-tablet{border-radius:30px;background-color:#111;margin:30px auto 80px}#elementor-preview-responsive-wrapper.elementor-device-laptop{width:1024px;height:768px;padding:10px 70px 10px 40px}#elementor-preview-responsive-wrapper.elementor-device-tablet{width:768px;height:1024px;padding:40px 10px 70px}#elementor-preview-responsive-wrapper.elementor-device-mobile-landscape{width:640px;height:360px;padding:10px 70px 10px 40px}#elementor-preview-responsive-wrapper.elementor-device-mobile{width:360px;height:640px;padding:40px 10px 70px}#elementor-preview-iframe{width:100%;height:100%;background-color:#fff}.tipsy{font-size:10px;position:absolute;padding:5px;z-index:4}.tipsy-inner{background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px;text-align:center;border-radius:3px}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-arrow-n{border-bottom-color:#000}.tipsy-arrow-s{border-top-color:#000}.tipsy-arrow-e{border-left-color:#000}.tipsy-arrow-w{border-right-color:#000}.tipsy-n .tipsy-arrow,.tipsy-nw .tipsy-arrow{border-left-color:transparent;border-right-color:transparent;top:0;border-bottom-style:solid;border-top:none}.tipsy-n .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-nw .tipsy-arrow{left:10px}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow,.tipsy-se .tipsy-arrow,.tipsy-sw .tipsy-arrow{bottom:0;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{left:50%;margin-left:-5px}.tipsy-sw .tipsy-arrow{left:10px}.tipsy-se .tipsy-arrow{right:10px}.tipsy-e .tipsy-arrow,.tipsy-w .tipsy-arrow{top:50%;margin-top:-5px;border-top-color:transparent;border-bottom-color:transparent}.tipsy-e .tipsy-arrow{right:0;border-left-style:solid;border-right:none}.tipsy-w .tipsy-arrow{left:0;border-right-style:solid;border-left:none}.dialog-widget{position:fixed;height:100%;width:100%;top:0;left:0;-webkit-user-select:none;-moz-user-select:none;background-color:rgba(0,0,0,.5)}.dialog-widget *{box-sizing:border-box}.dialog-widget-content{background-color:#fff;position:absolute;width:350px;height:150px;margin:auto;border-radius:3px;box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden}.dialog-message,.dialog-widget-header{text-align:center}.dialog-widget-header{font-size:15px;line-height:1;padding:20px 0;font-weight:500;color:#495157}.dialog-message{color:#6d7882;padding:0 20px;font-size:12px}.dialog-buttons-wrapper{border-top:1px solid #e6e9ec;position:absolute;bottom:0;width:100%}.dialog-buttons-wrapper>button{width:50%;border:none;background:none;font-size:15px;cursor:pointer;padding:13px 0;outline:none;margin:0}.dialog-buttons-wrapper>button:first-child{border-right:1px solid #e6e9ec;color:#6d7882}.dialog-buttons-wrapper>button.dialog-ok{color:#b01b1b}.dialog-buttons-wrapper>button.dialog-take_over{color:#39b54a}.dialog-buttons-wrapper>button:focus{background-color:#e6e9ec}.dialog-buttons-wrapper>button:active{background-color:rgba(230,233,236,.5)}.dialog-popup-message{height:155px;width:155px;background-color:#fff;border-radius:10px}.elementor-dialog-message{padding:15px}.elementor-dialog-message .fa{font-size:85px;padding:10px}.elementor-dialog-message-text{text-transform:uppercase}@font-face{font-family:eicon;src:url(../fonts/eicon/eicon.eot?0.11);src:url(../fonts/eicon/eicon.eot?0.11#iefix) format("embedded-opentype"),url(../fonts/eicon/eicon.woff2?0.11) format("woff2"),url(../fonts/eicon/eicon.woff?0.11) format("woff"),url(../fonts/eicon/eicon.ttf?0.11) format("truetype"),url(../fonts/eicon/eicon.svg?0.11#eicon) format("svg");font-weight:400;font-style:normal}[class*=" eicon-"],[class^=eicon-]{display:inline-block;font-family:eicon;font-size:inherit;font-weight:400;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.eicon-c1-1:before{content:'\e800'}.eicon-c2-1:before{content:'\e801'}.eicon-c2-2:before{content:'\e802'}.eicon-c2-3:before{content:'\e803'}.eicon-c2-4:before{content:'\e804'}.eicon-c2-5:before{content:'\e805'}.eicon-c2-6:before{content:'\e806'}.eicon-c2-7:before{content:'\e807'}.eicon-c2-8:before{content:'\e808'}.eicon-c2-9:before{content:'\e809'}.eicon-c3-1:before{content:'\e80a'}.eicon-c3-2:before{content:'\e80b'}.eicon-c3-3:before{content:'\e80c'}.eicon-c3-4:before{content:'\e80d'}.eicon-c3-5:before{content:'\e80e'}.eicon-c3-6:before{content:'\e80f'}.eicon-c3-7:before,.eicon-c3-8:before{content:'\e811'}.eicon-c3-9:before{content:'\e812'}.eicon-c4-1:before{content:'\e813'}.eicon-c4-2:before{content:'\e814'}.eicon-c4-3:before{content:'\e815'}.eicon-c4-4:before{content:'\e816'}.eicon-c4-5:before{content:'\e817'}.eicon-c4-6:before{content:'\e818'}.eicon-c4-7:before{content:'\e819'}.eicon-c4-8:before{content:'\e81a'}.eicon-c4-9:before{content:'\e81b'}.eicon-c4-11:before{content:'\e81c';content:'\e81d'}.eicon-c5-1:before{content:'\e81e'}.eicon-c5-2:before{content:'\e81f'}.eicon-c5-3:before{content:'\e820'}.eicon-c5-4:before{content:'\e821'}.eicon-c5-5:before{content:'\e822'}.eicon-c5-6:before{content:'\e823'}.eicon-c5-7:before{content:'\e824'}.eicon-c5-8:before{content:'\e825'}.eicon-c5-9:before{content:'\e826'}.eicon-c5-11:before{content:'\e827'}.eicon-c6-1:before{content:'\e828'}.eicon-c6-2:before{content:'\e829'}.eicon-c6-3:before{content:'\e82a'}.eicon-c6-4:before{content:'\e82b'}.eicon-c6-5:before{content:'\e82c'}.eicon-c6-6:before{content:'\e82d'}.eicon-c6-7:before{content:'\e82e'}.eicon-c6-8:before{content:'\e82f'}.eicon-c6-9:before{content:'\e830'}.eicon-c6-11:before{content:'\e831';content:'\e832'}.eicon-c7-1:before{content:'\e833'}.eicon-c8-1:before{content:'\e834'}.eicon-c9-1:before{content:'\e835'}.eicon-c11-1:before{content:'\e836'}.eicon-anchor:before{content:'\e837'}.eicon-wordpress:before{content:'\e838'}.eicon-insert-image:before{content:'\e839'}.eicon-align-left:before{content:'\e83a'}.eicon-digital-alarm-clock:before{content:'\e83b'}.eicon-favorite:before{content:'\e83c'}.eicon-firewall-on:before{content:'\e83d'}.eicon-google-maps:before{content:'\e83e'}.eicon-text-size:before{content:'\e83f'}.eicon-youtube:before{content:'\e840'}.eicon-success-chart:before{content:'\e841'}.eicon-type-tool:before{content:'\e842'}.eicon-bullet-list:before{content:'\e843'}.eicon-click:before{content:'\e844'}.eicon-coding:before{content:'\e845'}.eicon-accordion:before{content:'\e846'}.eicon-divider:before{content:'\e847'}.eicon-toggle:before{content:'\e848'}.eicon-settings:before{content:'\e849'}.eicon-section:before{content:'\e84a'}.eicon-photo-library:before{content:'\e84b'}.eicon-elementor:before{content:'\e84c'}.eicon-menu:before{content:'\e84d'}.eicon-plus:before{content:'\e84e'}.eicon-apps:before{content:'\e84f'}.eicon-tabs:before{content:'\e850'}.eicon-elementor-square:before{content:'\e851'}
|
assets/css/editor.css
ADDED
@@ -0,0 +1,1717 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@charset "UTF-8";
|
2 |
+
.elementor-clearfix:before, .elementor-clearfix:after {
|
3 |
+
content: " ";
|
4 |
+
display: table; }
|
5 |
+
.elementor-clearfix:after {
|
6 |
+
clear: both; }
|
7 |
+
|
8 |
+
.elementor-screen-only,
|
9 |
+
.screen-reader-text,
|
10 |
+
.screen-reader-text span,
|
11 |
+
.ui-helper-hidden-accessible {
|
12 |
+
position: absolute;
|
13 |
+
width: 1px;
|
14 |
+
height: 1px;
|
15 |
+
margin: -1px;
|
16 |
+
padding: 0;
|
17 |
+
overflow: hidden;
|
18 |
+
clip: rect(0, 0, 0, 0);
|
19 |
+
border: 0; }
|
20 |
+
|
21 |
+
body,
|
22 |
+
html {
|
23 |
+
height: 100%;
|
24 |
+
margin: 0;
|
25 |
+
padding: 0; }
|
26 |
+
|
27 |
+
html {
|
28 |
+
background-color: #F1F1F1; }
|
29 |
+
|
30 |
+
body {
|
31 |
+
color: #373a3c;
|
32 |
+
font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
|
33 |
+
font-size: 13px;
|
34 |
+
font-weight: normal;
|
35 |
+
line-height: 1.4;
|
36 |
+
text-decoration: none;
|
37 |
+
text-transform: none;
|
38 |
+
overflow: hidden; }
|
39 |
+
body.elementor-editor-active #elementor-preview {
|
40 |
+
left: 280px;
|
41 |
+
right: 0; }
|
42 |
+
body.elementor-editor-active #elementor-panel {
|
43 |
+
left: 0; }
|
44 |
+
body.elementor-editor-active #elementor-mode-switcher-preview .fa:before {
|
45 |
+
content: ""; }
|
46 |
+
body:not(.elementor-editor-active) #elementor-preview {
|
47 |
+
left: 0; }
|
48 |
+
body:not(.elementor-editor-active) #elementor-panel {
|
49 |
+
left: -280px; }
|
50 |
+
body:not(.elementor-editor-active) #elementor-mode-switcher-preview .fa:before {
|
51 |
+
content: ""; }
|
52 |
+
|
53 |
+
iframe,
|
54 |
+
img {
|
55 |
+
border: 0 none; }
|
56 |
+
|
57 |
+
#elementor-preview {
|
58 |
+
background-color: #333;
|
59 |
+
position: absolute;
|
60 |
+
overflow: auto;
|
61 |
+
height: 100%;
|
62 |
+
top: 0;
|
63 |
+
right: 0;
|
64 |
+
border: 0; }
|
65 |
+
|
66 |
+
#elementor-preview, #elementor-panel {
|
67 |
+
transition: left 0.5s; }
|
68 |
+
|
69 |
+
#elementor-loading {
|
70 |
+
position: fixed;
|
71 |
+
top: 0;
|
72 |
+
left: 0;
|
73 |
+
bottom: 0;
|
74 |
+
right: 0;
|
75 |
+
background: #6d7882;
|
76 |
+
z-index: 9999; }
|
77 |
+
|
78 |
+
#elementor-loader-wrapper {
|
79 |
+
position: absolute;
|
80 |
+
top: 50%;
|
81 |
+
left: 50%;
|
82 |
+
transform: translateX(-50%) translateY(-50%);
|
83 |
+
width: 100px; }
|
84 |
+
#elementor-loader-wrapper #elementor-loader {
|
85 |
+
height: 100px;
|
86 |
+
position: relative; }
|
87 |
+
#elementor-loader-wrapper .elementor-loader-box {
|
88 |
+
position: absolute;
|
89 |
+
background-color: #e6e9ec;
|
90 |
+
opacity: 0;
|
91 |
+
animation: load 1.8s linear infinite; }
|
92 |
+
#elementor-loader-wrapper .elementor-loader-box:nth-of-type(1) {
|
93 |
+
width: 20%;
|
94 |
+
height: 100%;
|
95 |
+
left: 0;
|
96 |
+
top: 0; }
|
97 |
+
#elementor-loader-wrapper .elementor-loader-box:not(:nth-of-type(1)) {
|
98 |
+
right: 0;
|
99 |
+
height: 20%;
|
100 |
+
width: 60%; }
|
101 |
+
#elementor-loader-wrapper .elementor-loader-box:nth-of-type(2) {
|
102 |
+
top: 0;
|
103 |
+
animation-delay: -0.45s; }
|
104 |
+
#elementor-loader-wrapper .elementor-loader-box:nth-of-type(3) {
|
105 |
+
top: 40%;
|
106 |
+
animation-delay: -0.9s; }
|
107 |
+
#elementor-loader-wrapper .elementor-loader-box:nth-of-type(4) {
|
108 |
+
bottom: 0;
|
109 |
+
animation-delay: -1.35s; }
|
110 |
+
@keyframes load {
|
111 |
+
0% {
|
112 |
+
opacity: .3; }
|
113 |
+
50% {
|
114 |
+
opacity: 1; }
|
115 |
+
100% {
|
116 |
+
opacity: .3; } }
|
117 |
+
@keyframes load-title {
|
118 |
+
0% {
|
119 |
+
opacity: 1; }
|
120 |
+
50% {
|
121 |
+
opacity: .6; }
|
122 |
+
100% {
|
123 |
+
opacity: 1; } }
|
124 |
+
#elementor-loading-title {
|
125 |
+
color: #fff;
|
126 |
+
text-align: center;
|
127 |
+
text-transform: uppercase;
|
128 |
+
margin-top: 30px;
|
129 |
+
letter-spacing: 7px;
|
130 |
+
font-size: 10px;
|
131 |
+
animation: load-title 1.5s linear infinite; }
|
132 |
+
|
133 |
+
.select2-dropdown {
|
134 |
+
border-color: #a4afb7; }
|
135 |
+
.select2-dropdown .select2-search__field {
|
136 |
+
outline: none; }
|
137 |
+
|
138 |
+
.elementor-button {
|
139 |
+
border: none;
|
140 |
+
cursor: pointer;
|
141 |
+
border-radius: 3px;
|
142 |
+
transition: all 0.5s; }
|
143 |
+
.elementor-button:not(.elementor-button-state) .elementor-state-icon {
|
144 |
+
display: none; }
|
145 |
+
.elementor-button .elementor-state-icon {
|
146 |
+
float: left;
|
147 |
+
padding-left: 5px; }
|
148 |
+
|
149 |
+
.elementor-button-success, #elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button {
|
150 |
+
color: #fff; }
|
151 |
+
.elementor-button-success[disabled], #elementor-panel #elementor-panel-footer-save.elementor-save-active [disabled].elementor-button {
|
152 |
+
background-color: #c2cbd2; }
|
153 |
+
.elementor-button-success:not([disabled]), #elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]) {
|
154 |
+
background-color: #38B54A; }
|
155 |
+
.elementor-button-success:not([disabled]):hover, #elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):hover {
|
156 |
+
opacity: 0.85;
|
157 |
+
box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); }
|
158 |
+
.elementor-button-success:not([disabled]):active, #elementor-panel #elementor-panel-footer-save.elementor-save-active .elementor-button:not([disabled]):active {
|
159 |
+
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.19), 0 3px 3px rgba(0, 0, 0, 0.1); }
|
160 |
+
|
161 |
+
input, select, textarea {
|
162 |
+
border-radius: 3px;
|
163 |
+
font-size: 12px;
|
164 |
+
width: 100%;
|
165 |
+
background: none;
|
166 |
+
box-shadow: none;
|
167 |
+
color: #495157;
|
168 |
+
border: 1px solid;
|
169 |
+
margin: 0; }
|
170 |
+
input:not(:focus), select:not(:focus), textarea:not(:focus) {
|
171 |
+
border-color: #d5dadf; }
|
172 |
+
input:focus, select:focus, textarea:focus {
|
173 |
+
border-color: #a4afb7; }
|
174 |
+
|
175 |
+
.elementor-error input, .elementor-error select, .elementor-error textarea {
|
176 |
+
border-color: #b01b1b; }
|
177 |
+
|
178 |
+
input, textarea {
|
179 |
+
padding: 5px 8px; }
|
180 |
+
|
181 |
+
textarea {
|
182 |
+
resize: vertical; }
|
183 |
+
|
184 |
+
input[type="checkbox"],
|
185 |
+
input[type="radio"] {
|
186 |
+
border: 1px solid #d5dadf;
|
187 |
+
background: #fff;
|
188 |
+
color: #555;
|
189 |
+
clear: none;
|
190 |
+
cursor: pointer;
|
191 |
+
display: inline-block;
|
192 |
+
line-height: 0;
|
193 |
+
height: 16px;
|
194 |
+
margin: -4px 4px 0 0;
|
195 |
+
outline: 0;
|
196 |
+
padding: 0;
|
197 |
+
text-align: center;
|
198 |
+
vertical-align: middle;
|
199 |
+
width: 16px;
|
200 |
+
min-width: 16px;
|
201 |
+
transition: .05s border-color ease-in-out; }
|
202 |
+
input[type="checkbox"]:focus,
|
203 |
+
input[type="radio"]:focus {
|
204 |
+
border-color: #a4afb7; }
|
205 |
+
|
206 |
+
input[disabled] {
|
207 |
+
background-color: #e6e9ec;
|
208 |
+
cursor: not-allowed;
|
209 |
+
opacity: 1; }
|
210 |
+
|
211 |
+
select {
|
212 |
+
height: 27px; }
|
213 |
+
|
214 |
+
.ps-container {
|
215 |
+
-ms-touch-action: none;
|
216 |
+
overflow: hidden !important; }
|
217 |
+
|
218 |
+
.ps-container.ps-active-x > .ps-scrollbar-x-rail,
|
219 |
+
.ps-container.ps-active-y > .ps-scrollbar-y-rail {
|
220 |
+
display: block; }
|
221 |
+
|
222 |
+
.ps-container.ps-in-scrolling {
|
223 |
+
pointer-events: none; }
|
224 |
+
|
225 |
+
.ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail {
|
226 |
+
background-color: #eee;
|
227 |
+
opacity: 0.9; }
|
228 |
+
|
229 |
+
.ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x {
|
230 |
+
background-color: #999; }
|
231 |
+
|
232 |
+
.ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail {
|
233 |
+
background-color: #eee;
|
234 |
+
opacity: 0.9; }
|
235 |
+
|
236 |
+
.ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y {
|
237 |
+
background-color: #999; }
|
238 |
+
|
239 |
+
.ps-container > .ps-scrollbar-x-rail {
|
240 |
+
display: none;
|
241 |
+
position: absolute;
|
242 |
+
/* please don't change 'position' */
|
243 |
+
border-radius: 4px;
|
244 |
+
opacity: 0;
|
245 |
+
transition: background-color 0.2s linear, opacity 0.2s linear;
|
246 |
+
bottom: 3px;
|
247 |
+
/* there must be 'bottom' for ps-scrollbar-x-rail */
|
248 |
+
height: 8px; }
|
249 |
+
|
250 |
+
.ps-container > .ps-scrollbar-x-rail > .ps-scrollbar-x {
|
251 |
+
position: absolute;
|
252 |
+
/* please don't change 'position' */
|
253 |
+
background-color: #aaa;
|
254 |
+
border-radius: 4px;
|
255 |
+
transition: background-color 0.2s linear;
|
256 |
+
bottom: 0;
|
257 |
+
/* there must be 'bottom' for ps-scrollbar-x */
|
258 |
+
height: 8px; }
|
259 |
+
|
260 |
+
.ps-container > .ps-scrollbar-y-rail {
|
261 |
+
display: none;
|
262 |
+
position: absolute;
|
263 |
+
/* please don't change 'position' */
|
264 |
+
border-radius: 4px;
|
265 |
+
opacity: 0;
|
266 |
+
transition: background-color 0.2s linear, opacity 0.2s linear;
|
267 |
+
right: 3px;
|
268 |
+
/* there must be 'right' for ps-scrollbar-y-rail */
|
269 |
+
width: 8px; }
|
270 |
+
|
271 |
+
.ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y {
|
272 |
+
position: absolute;
|
273 |
+
/* please don't change 'position' */
|
274 |
+
background-color: #aaa;
|
275 |
+
border-radius: 4px;
|
276 |
+
transition: background-color 0.2s linear;
|
277 |
+
right: 0;
|
278 |
+
/* there must be 'right' for ps-scrollbar-y */
|
279 |
+
width: 8px; }
|
280 |
+
|
281 |
+
.ps-container:hover.ps-in-scrolling {
|
282 |
+
pointer-events: none; }
|
283 |
+
|
284 |
+
.ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail {
|
285 |
+
background-color: #eee;
|
286 |
+
opacity: 0.9; }
|
287 |
+
|
288 |
+
.ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x {
|
289 |
+
background-color: #999; }
|
290 |
+
|
291 |
+
.ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail {
|
292 |
+
background-color: #eee;
|
293 |
+
opacity: 0.9; }
|
294 |
+
|
295 |
+
.ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y {
|
296 |
+
background-color: #999; }
|
297 |
+
|
298 |
+
.ps-container:hover > .ps-scrollbar-x-rail,
|
299 |
+
.ps-container:hover > .ps-scrollbar-y-rail {
|
300 |
+
opacity: 0.6; }
|
301 |
+
|
302 |
+
.ps-container:hover > .ps-scrollbar-x-rail:hover {
|
303 |
+
background-color: #eee;
|
304 |
+
opacity: 0.9; }
|
305 |
+
|
306 |
+
.ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x {
|
307 |
+
background-color: #999; }
|
308 |
+
|
309 |
+
.ps-container:hover > .ps-scrollbar-y-rail:hover {
|
310 |
+
background-color: #eee;
|
311 |
+
opacity: 0.9; }
|
312 |
+
|
313 |
+
.ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y {
|
314 |
+
background-color: #999; }
|
315 |
+
|
316 |
+
/* Make clicks pass-through */
|
317 |
+
#nprogress {
|
318 |
+
pointer-events: none; }
|
319 |
+
|
320 |
+
#nprogress .bar {
|
321 |
+
background: #39b54a;
|
322 |
+
position: fixed;
|
323 |
+
z-index: 1031;
|
324 |
+
top: 0;
|
325 |
+
left: 0;
|
326 |
+
width: 100%;
|
327 |
+
height: 2px; }
|
328 |
+
|
329 |
+
/* Fancy blur effect */
|
330 |
+
#nprogress .peg {
|
331 |
+
display: block;
|
332 |
+
position: absolute;
|
333 |
+
right: 0;
|
334 |
+
width: 100px;
|
335 |
+
height: 100%;
|
336 |
+
box-shadow: 0 0 10px #39b54a, 0 0 5px #39b54a;
|
337 |
+
opacity: 1.0;
|
338 |
+
transform: rotate(3deg) translate(0px, -4px); }
|
339 |
+
|
340 |
+
/* Remove these to get rid of the spinner */
|
341 |
+
#nprogress .spinner {
|
342 |
+
display: none;
|
343 |
+
position: fixed;
|
344 |
+
z-index: 1031;
|
345 |
+
top: 15px;
|
346 |
+
right: 15px; }
|
347 |
+
|
348 |
+
#nprogress .spinner-icon {
|
349 |
+
width: 18px;
|
350 |
+
height: 18px;
|
351 |
+
box-sizing: border-box;
|
352 |
+
border: solid 2px transparent;
|
353 |
+
border-top-color: #39b54a;
|
354 |
+
border-left-color: #39b54a;
|
355 |
+
border-radius: 50%;
|
356 |
+
animation: nprogress-spinner 400ms linear infinite; }
|
357 |
+
|
358 |
+
.nprogress-custom-parent {
|
359 |
+
overflow: hidden;
|
360 |
+
position: relative; }
|
361 |
+
|
362 |
+
.nprogress-custom-parent #nprogress .spinner,
|
363 |
+
.nprogress-custom-parent #nprogress .bar {
|
364 |
+
position: absolute; }
|
365 |
+
|
366 |
+
@keyframes nprogress-spinner {
|
367 |
+
0% {
|
368 |
+
transform: rotate(0deg); }
|
369 |
+
100% {
|
370 |
+
transform: rotate(360deg); } }
|
371 |
+
#nprogress .bar,
|
372 |
+
#nprogress .spinner {
|
373 |
+
z-index: 100000; }
|
374 |
+
|
375 |
+
#elementor-panel {
|
376 |
+
color: #373a3c;
|
377 |
+
font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
|
378 |
+
font-size: 13px;
|
379 |
+
font-weight: normal;
|
380 |
+
line-height: 1.4;
|
381 |
+
background-color: #e6e9ec;
|
382 |
+
position: fixed;
|
383 |
+
width: 280px;
|
384 |
+
height: 100%;
|
385 |
+
top: 0;
|
386 |
+
bottom: 0;
|
387 |
+
overflow: visible; }
|
388 |
+
#elementor-panel * {
|
389 |
+
box-sizing: border-box; }
|
390 |
+
#elementor-panel *:before,
|
391 |
+
#elementor-panel *:after {
|
392 |
+
box-sizing: border-box; }
|
393 |
+
#elementor-panel ::-moz-selection {
|
394 |
+
background: #5bc0de;
|
395 |
+
color: #ffffff; }
|
396 |
+
#elementor-panel ::selection {
|
397 |
+
background: #5bc0de;
|
398 |
+
color: #ffffff; }
|
399 |
+
#elementor-panel a {
|
400 |
+
text-decoration: none;
|
401 |
+
transition: none; }
|
402 |
+
#elementor-panel a:visited {
|
403 |
+
color: inherit; }
|
404 |
+
#elementor-panel ol,
|
405 |
+
#elementor-panel ul {
|
406 |
+
list-style: none;
|
407 |
+
padding: 0;
|
408 |
+
margin: 0; }
|
409 |
+
#elementor-panel h1,
|
410 |
+
#elementor-panel h2,
|
411 |
+
#elementor-panel h3,
|
412 |
+
#elementor-panel h4,
|
413 |
+
#elementor-panel h5,
|
414 |
+
#elementor-panel h6 {
|
415 |
+
font-size: 100%;
|
416 |
+
font-weight: normal; }
|
417 |
+
#elementor-panel abbr,
|
418 |
+
#elementor-panel acronym {
|
419 |
+
border: 0;
|
420 |
+
font-variant: normal; }
|
421 |
+
#elementor-panel sup {
|
422 |
+
vertical-align: text-top; }
|
423 |
+
#elementor-panel sub {
|
424 |
+
vertical-align: text-bottom; }
|
425 |
+
#elementor-panel img {
|
426 |
+
max-width: 100%;
|
427 |
+
height: auto;
|
428 |
+
border: 0; }
|
429 |
+
#elementor-panel ::-moz-focus-inner {
|
430 |
+
padding: 0;
|
431 |
+
border: 0; }
|
432 |
+
#elementor-panel :focus {
|
433 |
+
outline: 0; }
|
434 |
+
#elementor-panel .elementor-panel-inner {
|
435 |
+
position: relative;
|
436 |
+
height: 100%;
|
437 |
+
box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); }
|
438 |
+
#elementor-panel .elementor-panel-container {
|
439 |
+
clear: both;
|
440 |
+
padding-left: 15px;
|
441 |
+
padding-right: 15px; }
|
442 |
+
#elementor-panel .elementor-panel-heading {
|
443 |
+
display: table;
|
444 |
+
table-layout: fixed;
|
445 |
+
height: 40px;
|
446 |
+
padding: 0 20px;
|
447 |
+
width: 100%;
|
448 |
+
border-bottom: 1px solid #e6e9ec;
|
449 |
+
cursor: pointer; }
|
450 |
+
#elementor-panel .elementor-panel-heading:not(.elementor-open) .elementor-panel-heading-toggle .fa:before {
|
451 |
+
content: ""; }
|
452 |
+
#elementor-panel .elementor-panel-heading.elementor-open .elementor-panel-heading-toggle .fa:before {
|
453 |
+
content: '\f0d7'; }
|
454 |
+
#elementor-panel .elementor-panel-heading > * {
|
455 |
+
display: table-cell;
|
456 |
+
vertical-align: middle; }
|
457 |
+
#elementor-panel .elementor-panel-heading-toggle {
|
458 |
+
width: 20px;
|
459 |
+
color: #495157; }
|
460 |
+
#elementor-panel .elementor-panel-heading-title {
|
461 |
+
color: #495157;
|
462 |
+
font-weight: bold; }
|
463 |
+
#elementor-panel .elementor-panel-box {
|
464 |
+
margin-top: 10px;
|
465 |
+
background-color: #fff; }
|
466 |
+
#elementor-panel .elementor-panel-box-content {
|
467 |
+
padding: 20px 20px 10px; }
|
468 |
+
#elementor-panel .elementor-control-title {
|
469 |
+
color: #6d7882;
|
470 |
+
font-size: 12px; }
|
471 |
+
#elementor-panel .select2-container {
|
472 |
+
width: 100% !important; }
|
473 |
+
#elementor-panel .select2-container:not(.select2-container--open):not(.select2-container--focus) .select2-selection--single {
|
474 |
+
border-color: #d5dadf; }
|
475 |
+
#elementor-panel .select2-container.select2-container--open .select2-selection--single, #elementor-panel .select2-container.select2-container--focus .select2-selection--single {
|
476 |
+
border-color: #a4afb7; }
|
477 |
+
#elementor-panel .select2-selection--single {
|
478 |
+
height: 27px; }
|
479 |
+
#elementor-panel .select2-selection__rendered {
|
480 |
+
line-height: 27px; }
|
481 |
+
#elementor-panel .select2-selection__arrow {
|
482 |
+
height: 27px;
|
483 |
+
top: 0; }
|
484 |
+
#elementor-panel #elementor-panel-header {
|
485 |
+
display: table;
|
486 |
+
height: 40px;
|
487 |
+
width: 100%;
|
488 |
+
background-color: #9b0a46;
|
489 |
+
color: #fff; }
|
490 |
+
#elementor-panel #elementor-panel-header > * {
|
491 |
+
display: table-cell;
|
492 |
+
vertical-align: middle;
|
493 |
+
text-align: center; }
|
494 |
+
#elementor-panel .elementor-header-button {
|
495 |
+
width: 40px; }
|
496 |
+
#elementor-panel .elementor-header-button .elementor-icon {
|
497 |
+
cursor: pointer;
|
498 |
+
display: block;
|
499 |
+
font-size: 19px;
|
500 |
+
height: 40px;
|
501 |
+
line-height: 40px;
|
502 |
+
transition: all 0.5s; }
|
503 |
+
#elementor-panel .elementor-header-button .elementor-icon:hover {
|
504 |
+
color: #d5dadf; }
|
505 |
+
#elementor-panel #elementor-panel-header-title {
|
506 |
+
font-size: 15px; }
|
507 |
+
#elementor-panel #elementor-panel-elements-search-area {
|
508 |
+
box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); }
|
509 |
+
#elementor-panel #elementor-panel-elements {
|
510 |
+
overflow: hidden;
|
511 |
+
padding: 5px; }
|
512 |
+
#elementor-panel .elementor-element-wrapper {
|
513 |
+
float: left;
|
514 |
+
width: 50%;
|
515 |
+
padding: 5px;
|
516 |
+
text-align: center;
|
517 |
+
box-sizing: border-box; }
|
518 |
+
#elementor-panel .elementor-element {
|
519 |
+
border-radius: 3px;
|
520 |
+
padding-bottom: 10px;
|
521 |
+
background-color: #fff;
|
522 |
+
cursor: move; }
|
523 |
+
#elementor-panel .elementor-element:hover {
|
524 |
+
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); }
|
525 |
+
#elementor-panel .elementor-element:hover .icon, #elementor-panel .elementor-element:hover .title {
|
526 |
+
color: #9b0a46; }
|
527 |
+
#elementor-panel .elementor-element .icon {
|
528 |
+
font-size: 28px;
|
529 |
+
padding: 15px 0;
|
530 |
+
line-height: 1;
|
531 |
+
color: #556068; }
|
532 |
+
#elementor-panel .elementor-element .title {
|
533 |
+
font-size: 11px;
|
534 |
+
color: #556068; }
|
535 |
+
#elementor-panel #elementor-panel-elements-search-wrapper {
|
536 |
+
position: relative; }
|
537 |
+
#elementor-panel #elementor-panel-elements-search-wrapper .fa {
|
538 |
+
position: absolute;
|
539 |
+
right: 15px;
|
540 |
+
top: 50%;
|
541 |
+
color: #a4afb7;
|
542 |
+
transform: translateY(-50%); }
|
543 |
+
#elementor-panel #elementor-panel-elements-search-input {
|
544 |
+
width: 100%;
|
545 |
+
background-color: #fff;
|
546 |
+
line-height: 1;
|
547 |
+
font-size: 11px;
|
548 |
+
padding: 8px 42px 8px 15px;
|
549 |
+
font-style: italic;
|
550 |
+
color: #a4afb7;
|
551 |
+
border: none;
|
552 |
+
border-radius: 0;
|
553 |
+
margin: 0; }
|
554 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-title {
|
555 |
+
padding: 10px 20px;
|
556 |
+
margin-top: 10px; }
|
557 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-buttons {
|
558 |
+
padding-left: 20px;
|
559 |
+
display: table;
|
560 |
+
table-layout: fixed;
|
561 |
+
width: 100%;
|
562 |
+
height: 40px;
|
563 |
+
background-color: #fff; }
|
564 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-button-wrapper {
|
565 |
+
display: table-cell;
|
566 |
+
vertical-align: middle; }
|
567 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-save {
|
568 |
+
text-align: center; }
|
569 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-save .elementor-button {
|
570 |
+
padding: 6px 18px;
|
571 |
+
text-transform: uppercase; }
|
572 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-reset .elementor-button, #elementor-panel .elementor-panel-scheme .elementor-panel-scheme-discard .elementor-button {
|
573 |
+
color: #a4afb7;
|
574 |
+
background: none; }
|
575 |
+
#elementor-panel .elementor-panel-scheme .elementor-panel-scheme-reset .fa, #elementor-panel .elementor-panel-scheme .elementor-panel-scheme-discard .fa {
|
576 |
+
margin-right: 3px; }
|
577 |
+
#elementor-panel #elementor-panel-scheme-color .elementor-panel-scheme-items {
|
578 |
+
position: relative; }
|
579 |
+
#elementor-panel #elementor-panel-scheme-color .elementor-panel-scheme-item {
|
580 |
+
display: inline-block;
|
581 |
+
margin-bottom: 10px; }
|
582 |
+
#elementor-panel #elementor-panel-scheme-color .elementor-panel-scheme-item:not(:nth-child(4n)) {
|
583 |
+
margin-right: 13px; }
|
584 |
+
#elementor-panel #elementor-panel-scheme-color .wp-picker-container.wp-picker-active {
|
585 |
+
transform: translateY(-20px); }
|
586 |
+
#elementor-panel #elementor-panel-scheme-color .wp-picker-container.wp-picker-active .wp-color-result {
|
587 |
+
margin-right: 8px; }
|
588 |
+
#elementor-panel .eleme
|